eslint-plugin-beautiful-sort
Version:
eslint plugin for imports sort by their type
57 lines • 2.42 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");
const defaultOptions = {
special: ['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],
};
exports.sortImportsRule = {
meta: {
type: 'layout',
fixable: 'code',
messages: {
sort: 'Replace imports to: {{imports}}',
},
schema: [
{
type: 'object',
description: 'Sort imports options',
properties: {
special: {
type: 'array',
description: 'List of special import patterns (supports regex strings)',
items: {
type: 'string',
},
},
order: {
type: 'array',
description: 'Order of import types',
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,
},
],
defaultOptions: [defaultOptions],
},
create: (context) => {
const { special: stringSpecial = defaultOptions.special, order = defaultOptions.order } = 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, imports, sortedImports);
},
};
},
};
//# sourceMappingURL=sort-imports.rule.js.map