eslint-plugin-beautiful-sort
Version:
eslint plugin for imports sort by their type
46 lines • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sortImportsRule = void 0;
const sort_imports_utils_1 = require("./sort-imports.utils");
const type_enum_1 = require("./type.enum");
exports.sortImportsRule = {
meta: {
type: 'layout',
fixable: 'code',
schema: [
{
type: 'object',
properties: {
special: {
type: 'array',
items: {
type: 'string',
},
},
order: {
type: 'array',
items: {
enum: [type_enum_1.Type.special, type_enum_1.Type.namespace, type_enum_1.Type.default, type_enum_1.Type.defaultObj, type_enum_1.Type.obj, type_enum_1.Type.none],
},
},
},
additionalProperties: false,
},
],
},
create: (context) => {
const { special: stringSpecial = ['react'], order = [type_enum_1.Type.special, type_enum_1.Type.namespace, type_enum_1.Type.default, type_enum_1.Type.defaultObj, type_enum_1.Type.obj, type_enum_1.Type.none], } = context.options[0] ?? {};
const special = (0, sort_imports_utils_1.parseStringSpecial)(stringSpecial);
return {
Program: (program) => {
const imports = (0, sort_imports_utils_1.getImports)(program);
if ((0, sort_imports_utils_1.isEmpty)(imports))
return;
const sortTable = (0, sort_imports_utils_1.createSortTable)(order);
const sortedImports = (0, sort_imports_utils_1.getSortedImports)(imports, { special, sortTable });
(0, sort_imports_utils_1.reportErrors)(context, program, imports, sortedImports);
},
};
},
};
//# sourceMappingURL=sort-imports.rule.js.map