UNPKG

@leanix/import-sort-style

Version:

Custom LeanIX style for JS/TS import-sort package

56 lines (55 loc) 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function isAbsoluteLocalPath(importItem, options) { if (options === null || options === void 0 ? void 0 : options.prefixes) { return options.prefixes.some(prefix => importItem.moduleName.startsWith(prefix)); } return false; } function absoluteLocalPathSorting(module1, module2, options) { if (options === null || options === void 0 ? void 0 : options.prefixes) { const index1 = options.prefixes.findIndex(prefix => module1.startsWith(prefix)); const index2 = options.prefixes.findIndex(prefix => module2.startsWith(prefix)); return index1 === index2 ? caseInsensitiveNaturalOrder(module1, module2) : index1 - index2; } return caseInsensitiveNaturalOrder(module1, module2); } function caseInsensitiveNaturalOrder(first, second) { return first.toLocaleLowerCase().localeCompare(second.toLocaleLowerCase(), 'en'); } function default_1(styleApi, _file, options) { const { alias, and, not, dotSegmentCount, hasNoMember, isAbsoluteModule, isNodeModule, isRelativeModule, moduleName } = styleApi; return [ // Third-party modules with side effects { match: and(hasNoMember, isAbsoluteModule, (importItem) => !isAbsoluteLocalPath(importItem, options)) }, // Local, absolute modules with side-effects { match: and(hasNoMember, isAbsoluteModule) }, // Local, relative modules with side effects { match: and(hasNoMember, isRelativeModule) }, // Third-party modules { match: and(isAbsoluteModule, not(isNodeModule), (importItem) => !isAbsoluteLocalPath(importItem, options)), sort: moduleName(caseInsensitiveNaturalOrder), sortNamedMembers: alias(caseInsensitiveNaturalOrder) }, // Built-in Node.js modules) { match: and(isAbsoluteModule, isNodeModule, (importItem) => !isAbsoluteLocalPath(importItem, options)), sort: moduleName(caseInsensitiveNaturalOrder), sortNamedMembers: alias(caseInsensitiveNaturalOrder) }, // Local, absolute modules { match: (importItem) => isAbsoluteLocalPath(importItem, options), sort: moduleName((m1, m2) => absoluteLocalPathSorting(m1, m2, options)), sortNamedMembers: alias(caseInsensitiveNaturalOrder) }, // Local, relative modules { match: isRelativeModule, sort: [dotSegmentCount, moduleName(caseInsensitiveNaturalOrder)], sortNamedMembers: alias(caseInsensitiveNaturalOrder) } ]; } exports.default = default_1;