UNPKG

eslint-plugin-beautiful-sort

Version:
84 lines 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseStringSpecial = exports.reportErrors = exports.getSortedImports = exports.createSortTable = exports.isEmpty = exports.getImports = void 0; const import_node_1 = require("./import-node"); const IMPORT_AST_TYPE = 'ImportDeclaration'; const getImports = (program) => { return program.body.filter((node) => { return node.type === IMPORT_AST_TYPE; }); }; exports.getImports = getImports; const isEmpty = (array) => { return array.length === 0; }; exports.isEmpty = isEmpty; const createSortTable = (order) => { return order.reduce((state, key, idx) => { state[key] = idx; return state; }, { rest: order.length - 1 }); }; exports.createSortTable = createSortTable; const getSortedImports = (imports, params) => { return imports .map((node) => new import_node_1.ImportNode(node, params)) .sort((a, b) => a.compare(b)) .map((importNode) => importNode.getNode()); }; exports.getSortedImports = getSortedImports; const reportErrors = (context, program, imports, sortedImports) => { const sourceCode = context.getSourceCode(); const shouldFix = sortedImports.some((node, i) => { return imports[i] !== node; }); if (!shouldFix) return; const message = `Replace imports to: ${sortedImports .map((node) => `\`${sourceCode.getText(node).replace(';', '')}\``) .join(', ')}`; const end = sortedImports.at(-1)?.loc?.end; const start = program.loc?.start; context.report({ loc: { start, end, }, message, fix: function* (fixer) { for (let i = 0; i < sortedImports.length; i++) { const node = sortedImports[i]; const found = imports[i]; if (found !== node) { yield fixer.replaceText(found, sourceCode.getText(node)); } } }, }); }; exports.reportErrors = reportErrors; const SLASH = '/'; const START_SLASH_REGEXP = /^\//; const END_SLASH_REGEXP = /\/$/; const isRegexp = (target) => { const isStartsWithSlash = target[0] === SLASH; const isEndsWithSlash = target[target.length - 1] === SLASH; return isStartsWithSlash && isEndsWithSlash; }; const specialStringRegexpToRegexp = (specialRegexp) => { const regexpString = specialRegexp.replace(START_SLASH_REGEXP, '').replace(END_SLASH_REGEXP, ''); return new RegExp(regexpString); }; const specialStringToRegexp = (special) => { return new RegExp(`^${special}$`); }; const parseStringSpecial = (stringSpecial) => { return stringSpecial.map((string) => { if (isRegexp(string)) { return specialStringRegexpToRegexp(string); } return specialStringToRegexp(string); }); }; exports.parseStringSpecial = parseStringSpecial; //# sourceMappingURL=sort-imports.utils.js.map