@trivago/prettier-plugin-sort-imports
Advanced tools
Comparing version 4.0.0 to 4.1.0
@@ -5,2 +5,12 @@ ## Changelog | ||
--- | ||
### v4.1.0 | ||
### New features | ||
- Move @babel/core to devDependencies [#200](https://github.com/trivago/prettier-plugin-sort-imports/pull/200) by [yykamei](https://github.com/yykamei) | ||
- Only preserve directives already at the start of the program [#198](https://github.com/trivago/prettier-plugin-sort-imports/pull/198) by [c-dante](https://github.com/c-dante) | ||
- Bump babel to support satisfies keyword [#196](https://github.com/trivago/prettier-plugin-sort-imports/pull/196) by [Leomotors](https://github.com/Leomotors) | ||
- Update prettier for TS 4.9 [#194](https://github.com/trivago/prettier-plugin-sort-imports/pull/194) by [taiwabisabi](https://github.com/taiwabisabi) | ||
- Fixed empty/no script tag in vue component error [#192](https://github.com/trivago/prettier-plugin-sort-imports/pull/192) by [adamDilger](https://github.com/adamDilger) | ||
- Change @vue/compiler-sfc to an optional dependency[#189](https://github.com/trivago/prettier-plugin-sort-imports/pull/189) by [transitive-bullshit](https://github.com/transitive-bullshit) | ||
- Keep script directives at top of file [#186](https://github.com/trivago/prettier-plugin-sort-imports/pull/186) by [broofa](https://github.com/broofa) | ||
### v4.0.0 | ||
@@ -7,0 +17,0 @@ #### New features |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.newLineNode = exports.THIRD_PARTY_MODULES_SPECIAL_WORD = exports.newLineCharacters = exports.jsx = exports.typescript = exports.flow = void 0; | ||
exports.newLineNode = exports.TYPES_SPECIAL_WORD = exports.THIRD_PARTY_TYPES_SPECIAL_WORD = exports.THIRD_PARTY_MODULES_SPECIAL_WORD = exports.newLineCharacters = exports.jsx = exports.typescript = exports.flow = void 0; | ||
var types_1 = require("@babel/types"); | ||
@@ -14,3 +14,5 @@ exports.flow = 'flow'; | ||
exports.THIRD_PARTY_MODULES_SPECIAL_WORD = '<THIRD_PARTY_MODULES>'; | ||
exports.THIRD_PARTY_TYPES_SPECIAL_WORD = '<THIRD_PARTY_TS_TYPES>'; | ||
exports.TYPES_SPECIAL_WORD = '<TS_TYPES>'; | ||
var PRETTIER_PLUGIN_SORT_IMPORTS_NEW_LINE = 'PRETTIER_PLUGIN_SORT_IMPORTS_NEW_LINE'; | ||
exports.newLineNode = types_1.expressionStatement(types_1.stringLiteral(PRETTIER_PLUGIN_SORT_IMPORTS_NEW_LINE)); | ||
exports.newLineNode = (0, types_1.expressionStatement)((0, types_1.stringLiteral)(PRETTIER_PLUGIN_SORT_IMPORTS_NEW_LINE)); |
@@ -9,4 +9,4 @@ "use strict"; | ||
return code; | ||
return preprocessor_1.preprocessor(code, options); | ||
return (0, preprocessor_1.preprocessor)(code, options); | ||
} | ||
exports.defaultPreprocessor = defaultPreprocessor; |
@@ -13,11 +13,11 @@ "use strict"; | ||
sourceType: 'module', | ||
plugins: get_experimental_parser_plugins_1.getExperimentalParserPlugins(importOrderParserPlugins), | ||
plugins: (0, get_experimental_parser_plugins_1.getExperimentalParserPlugins)(importOrderParserPlugins), | ||
}; | ||
var ast = parser_1.parse(code, parserOptions); | ||
var ast = (0, parser_1.parse)(code, parserOptions); | ||
var interpreter = ast.program.interpreter; | ||
var _a = extract_ast_nodes_1.extractASTNodes(ast), importNodes = _a.importNodes, directives = _a.directives; | ||
var _a = (0, extract_ast_nodes_1.extractASTNodes)(ast), importNodes = _a.importNodes, directives = _a.directives; | ||
// short-circuit if there are no import declaration | ||
if (importNodes.length === 0) | ||
return code; | ||
var allImports = get_sorted_nodes_1.getSortedNodes(importNodes, { | ||
var allImports = (0, get_sorted_nodes_1.getSortedNodes)(importNodes, { | ||
importOrder: importOrder, | ||
@@ -29,4 +29,4 @@ importOrderCaseInsensitive: importOrderCaseInsensitive, | ||
}); | ||
return get_code_from_ast_1.getCodeFromAst(allImports, directives, code, interpreter); | ||
return (0, get_code_from_ast_1.getCodeFromAst)(allImports, directives, code, interpreter); | ||
} | ||
exports.preprocessor = preprocessor; |
@@ -6,8 +6,11 @@ "use strict"; | ||
function vuePreprocessor(code, options) { | ||
var _a, _b, _c; | ||
var _a, _b; | ||
var parse = require('@vue/compiler-sfc').parse; | ||
var descriptor = parse(code).descriptor; | ||
var content = (_c = (_b = ((_a = descriptor.script) !== null && _a !== void 0 ? _a : descriptor.scriptSetup)) === null || _b === void 0 ? void 0 : _b.content) !== null && _c !== void 0 ? _c : code; | ||
return code.replace(content, "\n" + preprocessor_1.preprocessor(content, options) + "\n"); | ||
var content = (_b = ((_a = descriptor.script) !== null && _a !== void 0 ? _a : descriptor.scriptSetup)) === null || _b === void 0 ? void 0 : _b.content; | ||
if (!content) { | ||
return code; | ||
} | ||
return code.replace(content, "\n".concat((0, preprocessor_1.preprocessor)(content, options), "\n")); | ||
} | ||
exports.vuePreprocessor = vuePreprocessor; |
@@ -7,4 +7,4 @@ "use strict"; | ||
var getSortedImportNodes = function (code, options) { | ||
var importNodes = get_import_nodes_1.getImportNodes(code, options); | ||
return get_sorted_nodes_1.getSortedNodes(importNodes, { | ||
var importNodes = (0, get_import_nodes_1.getImportNodes)(code, options); | ||
return (0, get_sorted_nodes_1.getSortedNodes)(importNodes, { | ||
importOrder: [], | ||
@@ -22,3 +22,3 @@ importOrderCaseInsensitive: false, | ||
var result = getSortedImportNodes("import z from 'z';\n "); | ||
var commentNodes = get_all_comments_from_nodes_1.getAllCommentsFromNodes(result); | ||
var commentNodes = (0, get_all_comments_from_nodes_1.getAllCommentsFromNodes)(result); | ||
var comments = getComments(commentNodes); | ||
@@ -29,3 +29,3 @@ expect(comments).toEqual([]); | ||
var result = getSortedImportNodes("// first comment\nimport z from 'z';\n"); | ||
var commentNodes = get_all_comments_from_nodes_1.getAllCommentsFromNodes(result); | ||
var commentNodes = (0, get_all_comments_from_nodes_1.getAllCommentsFromNodes)(result); | ||
var comments = getComments(commentNodes); | ||
@@ -36,3 +36,3 @@ expect(comments).toEqual([' first comment']); | ||
var result = getSortedImportNodes("// first comment\n// second comment\nimport z from 'z';\n"); | ||
var commentNodes = get_all_comments_from_nodes_1.getAllCommentsFromNodes(result); | ||
var commentNodes = (0, get_all_comments_from_nodes_1.getAllCommentsFromNodes)(result); | ||
var comments = getComments(commentNodes); | ||
@@ -43,5 +43,5 @@ expect(comments).toEqual([' first comment', ' second comment']); | ||
var result = getSortedImportNodes("\n/**\n * some block\n */\nimport z from 'z';\n"); | ||
var commentNodes = get_all_comments_from_nodes_1.getAllCommentsFromNodes(result); | ||
var commentNodes = (0, get_all_comments_from_nodes_1.getAllCommentsFromNodes)(result); | ||
var comments = getComments(commentNodes); | ||
expect(comments).toEqual(['*\n * some block\n ']); | ||
}); |
@@ -12,4 +12,4 @@ "use strict"; | ||
var code = "// first comment\n// second comment\nimport z from 'z';\nimport c from 'c';\nimport g from 'g';\nimport t from 't';\nimport k from 'k';\nimport a from 'a';\n"; | ||
var importNodes = get_import_nodes_1.getImportNodes(code); | ||
var sortedNodes = get_sorted_nodes_1.getSortedNodes(importNodes, { | ||
var importNodes = (0, get_import_nodes_1.getImportNodes)(code); | ||
var sortedNodes = (0, get_sorted_nodes_1.getSortedNodes)(importNodes, { | ||
importOrder: [], | ||
@@ -21,4 +21,4 @@ importOrderCaseInsensitive: false, | ||
}); | ||
var formatted = get_code_from_ast_1.getCodeFromAst(sortedNodes, [], code, null); | ||
expect(prettier_1.format(formatted, { parser: 'babel' })).toEqual("// first comment\n// second comment\nimport a from \"a\";\nimport c from \"c\";\nimport g from \"g\";\nimport k from \"k\";\nimport t from \"t\";\nimport z from \"z\";\n"); | ||
var formatted = (0, get_code_from_ast_1.getCodeFromAst)(sortedNodes, [], code, null); | ||
expect((0, prettier_1.format)(formatted, { parser: 'babel' })).toEqual("// first comment\n// second comment\nimport a from \"a\";\nimport c from \"c\";\nimport g from \"g\";\nimport k from \"k\";\nimport t from \"t\";\nimport z from \"z\";\n"); | ||
}); | ||
@@ -29,10 +29,10 @@ test('it renders directives correctly', function () { | ||
sourceType: 'module', | ||
plugins: get_experimental_parser_plugins_1.getExperimentalParserPlugins([]), | ||
plugins: (0, get_experimental_parser_plugins_1.getExperimentalParserPlugins)([]), | ||
}; | ||
var ast = core_1.parse(code, parserOptions); | ||
var ast = (0, core_1.parse)(code, parserOptions); | ||
if (!ast) | ||
throw new Error('ast is null'); | ||
var _a = extract_ast_nodes_1.extractASTNodes(ast), directives = _a.directives, importNodes = _a.importNodes; | ||
var formatted = get_code_from_ast_1.getCodeFromAst(importNodes, directives, code, null); | ||
expect(prettier_1.format(formatted, { parser: 'babel' })).toEqual("\"use client\";\n\n// first comment\nimport b from \"b\";\nimport a from \"a\";\n"); | ||
var _a = (0, extract_ast_nodes_1.extractASTNodes)(ast), directives = _a.directives, importNodes = _a.importNodes; | ||
var formatted = (0, get_code_from_ast_1.getCodeFromAst)(importNodes, directives, code, null); | ||
expect((0, prettier_1.format)(formatted, { parser: 'babel' })).toEqual("\"use client\";\n\n// first comment\nimport b from \"b\";\nimport a from \"a\";\n"); | ||
}); |
@@ -5,6 +5,6 @@ "use strict"; | ||
test('it should return empty list', function () { | ||
expect(get_experimental_parser_plugins_1.getExperimentalParserPlugins([])).toEqual([]); | ||
expect((0, get_experimental_parser_plugins_1.getExperimentalParserPlugins)([])).toEqual([]); | ||
}); | ||
test('it should return flow and decorators', function () { | ||
expect(get_experimental_parser_plugins_1.getExperimentalParserPlugins(['flow', 'decorators'])).toEqual([ | ||
expect((0, get_experimental_parser_plugins_1.getExperimentalParserPlugins)(['flow', 'decorators'])).toEqual([ | ||
'flow', | ||
@@ -15,3 +15,3 @@ 'decorators', | ||
test('it should return decorators with parsed options', function () { | ||
expect(get_experimental_parser_plugins_1.getExperimentalParserPlugins([ | ||
expect((0, get_experimental_parser_plugins_1.getExperimentalParserPlugins)([ | ||
'["decorators", { "decoratorsBeforeExport": true }]', | ||
@@ -21,3 +21,3 @@ ])).toEqual([['decorators', { decoratorsBeforeExport: true }]]); | ||
test('it should return decorators with parsed options', function () { | ||
expect(get_experimental_parser_plugins_1.getExperimentalParserPlugins([ | ||
expect((0, get_experimental_parser_plugins_1.getExperimentalParserPlugins)([ | ||
'flow', | ||
@@ -29,3 +29,3 @@ '["decorators", { "decoratorsBeforeExport": true }]', | ||
expect(function () { | ||
return get_experimental_parser_plugins_1.getExperimentalParserPlugins([ | ||
return (0, get_experimental_parser_plugins_1.getExperimentalParserPlugins)([ | ||
'flow', | ||
@@ -32,0 +32,0 @@ '["decorators", { decoratorsBeforeExport: true }]', |
@@ -7,3 +7,3 @@ "use strict"; | ||
test('should return correct matched groups', function () { | ||
var importNodes = get_import_nodes_1.getImportNodes(code); | ||
var importNodes = (0, get_import_nodes_1.getImportNodes)(code); | ||
var importOrder = [ | ||
@@ -18,3 +18,3 @@ '^@server/(.*)$', | ||
var importNode = importNodes_1[_i]; | ||
var matchedGroup = get_import_nodes_matched_group_1.getImportNodesMatchedGroup(importNode, importOrder); | ||
var matchedGroup = (0, get_import_nodes_matched_group_1.getImportNodesMatchedGroup)(importNode, importOrder); | ||
matchedGroups.push(matchedGroup); | ||
@@ -34,9 +34,9 @@ } | ||
test('should return THIRD_PARTY_MODULES as matched group with empty order list', function () { | ||
var importNodes = get_import_nodes_1.getImportNodes(code); | ||
var importNodes = (0, get_import_nodes_1.getImportNodes)(code); | ||
var importOrder = []; | ||
for (var _i = 0, importNodes_2 = importNodes; _i < importNodes_2.length; _i++) { | ||
var importNode = importNodes_2[_i]; | ||
var matchedGroup = get_import_nodes_matched_group_1.getImportNodesMatchedGroup(importNode, importOrder); | ||
var matchedGroup = (0, get_import_nodes_matched_group_1.getImportNodesMatchedGroup)(importNode, importOrder); | ||
expect(matchedGroup).toEqual('<THIRD_PARTY_MODULES>'); | ||
} | ||
}); |
@@ -8,5 +8,5 @@ "use strict"; | ||
var code = "import { filter, reduce, eventHandler } from '@server/z';"; | ||
var importNode = get_import_nodes_1.getImportNodes(code)[0]; | ||
var sortedImportSpecifiers = get_sorted_import_specifiers_1.getSortedImportSpecifiers(importNode); | ||
var specifiersList = get_sorted_nodes_modules_names_1.getSortedNodesModulesNames(sortedImportSpecifiers.specifiers); | ||
var importNode = (0, get_import_nodes_1.getImportNodes)(code)[0]; | ||
var sortedImportSpecifiers = (0, get_sorted_import_specifiers_1.getSortedImportSpecifiers)(importNode); | ||
var specifiersList = (0, get_sorted_nodes_modules_names_1.getSortedNodesModulesNames)(sortedImportSpecifiers.specifiers); | ||
expect(specifiersList).toEqual(['eventHandler', 'filter', 'reduce']); | ||
@@ -16,5 +16,5 @@ }); | ||
var code = "import Component, { filter, reduce, eventHandler } from '@server/z';"; | ||
var importNode = get_import_nodes_1.getImportNodes(code)[0]; | ||
var sortedImportSpecifiers = get_sorted_import_specifiers_1.getSortedImportSpecifiers(importNode); | ||
var specifiersList = get_sorted_nodes_modules_names_1.getSortedNodesModulesNames(sortedImportSpecifiers.specifiers); | ||
var importNode = (0, get_import_nodes_1.getImportNodes)(code)[0]; | ||
var sortedImportSpecifiers = (0, get_sorted_import_specifiers_1.getSortedImportSpecifiers)(importNode); | ||
var specifiersList = (0, get_sorted_nodes_modules_names_1.getSortedNodesModulesNames)(sortedImportSpecifiers.specifiers); | ||
expect(specifiersList).toEqual([ | ||
@@ -21,0 +21,0 @@ 'Component', |
@@ -8,5 +8,6 @@ "use strict"; | ||
var code = "// first comment\n// second comment\nimport z from 'z';\nimport c, { cD } from 'c';\nimport g from 'g';\nimport { tC, tA, tB } from 't';\nimport k, { kE, kB } from 'k';\nimport * as a from 'a';\nimport * as x from 'x';\nimport BY from 'BY';\nimport Ba from 'Ba';\nimport XY from 'XY';\nimport Xa from 'Xa';\n"; | ||
var typeCode = "// first comment\n// second comment\nimport type sm from 'sm';\nimport type xl from './xl';\nimport l from './l';\nimport z from 'z';\nimport c, { cD } from 'c';\nimport g from 'g';\nimport { tC, tA, tB } from 't';\nimport k, { kE, kB } from 'k';\nimport * as a from 'a';\nimport * as x from 'x';\nimport BY from 'BY';\nimport Ba from 'Ba';\nimport XY from 'XY';\nimport Xa from 'Xa';\n"; | ||
test('it returns all sorted nodes', function () { | ||
var result = get_import_nodes_1.getImportNodes(code); | ||
var sorted = get_sorted_nodes_1.getSortedNodes(result, { | ||
var result = (0, get_import_nodes_1.getImportNodes)(code); | ||
var sorted = (0, get_sorted_nodes_1.getSortedNodes)(result, { | ||
importOrder: [], | ||
@@ -18,3 +19,3 @@ importOrderCaseInsensitive: false, | ||
}); | ||
expect(get_sorted_nodes_names_1.getSortedNodesNames(sorted)).toEqual([ | ||
expect((0, get_sorted_nodes_names_1.getSortedNodesNames)(sorted)).toEqual([ | ||
'BY', | ||
@@ -35,3 +36,3 @@ 'Ba', | ||
.map(function (importDeclaration) { | ||
return get_sorted_nodes_modules_names_1.getSortedNodesModulesNames(importDeclaration.specifiers); | ||
return (0, get_sorted_nodes_modules_names_1.getSortedNodesModulesNames)(importDeclaration.specifiers); | ||
})).toEqual([ | ||
@@ -52,4 +53,4 @@ ['BY'], | ||
test('it returns all sorted nodes case-insensitive', function () { | ||
var result = get_import_nodes_1.getImportNodes(code); | ||
var sorted = get_sorted_nodes_1.getSortedNodes(result, { | ||
var result = (0, get_import_nodes_1.getImportNodes)(code); | ||
var sorted = (0, get_sorted_nodes_1.getSortedNodes)(result, { | ||
importOrder: [], | ||
@@ -61,3 +62,3 @@ importOrderCaseInsensitive: true, | ||
}); | ||
expect(get_sorted_nodes_names_1.getSortedNodesNames(sorted)).toEqual([ | ||
expect((0, get_sorted_nodes_names_1.getSortedNodesNames)(sorted)).toEqual([ | ||
'a', | ||
@@ -78,3 +79,3 @@ 'Ba', | ||
.map(function (importDeclaration) { | ||
return get_sorted_nodes_modules_names_1.getSortedNodesModulesNames(importDeclaration.specifiers); | ||
return (0, get_sorted_nodes_modules_names_1.getSortedNodesModulesNames)(importDeclaration.specifiers); | ||
})).toEqual([ | ||
@@ -95,4 +96,4 @@ ['a'], | ||
test('it returns all sorted nodes with sort order', function () { | ||
var result = get_import_nodes_1.getImportNodes(code); | ||
var sorted = get_sorted_nodes_1.getSortedNodes(result, { | ||
var result = (0, get_import_nodes_1.getImportNodes)(code); | ||
var sorted = (0, get_sorted_nodes_1.getSortedNodes)(result, { | ||
importOrder: ['^a$', '^t$', '^k$', '^B'], | ||
@@ -104,3 +105,3 @@ importOrderCaseInsensitive: false, | ||
}); | ||
expect(get_sorted_nodes_names_1.getSortedNodesNames(sorted)).toEqual([ | ||
expect((0, get_sorted_nodes_names_1.getSortedNodesNames)(sorted)).toEqual([ | ||
'XY', | ||
@@ -121,3 +122,3 @@ 'Xa', | ||
.map(function (importDeclaration) { | ||
return get_sorted_nodes_modules_names_1.getSortedNodesModulesNames(importDeclaration.specifiers); | ||
return (0, get_sorted_nodes_modules_names_1.getSortedNodesModulesNames)(importDeclaration.specifiers); | ||
})).toEqual([ | ||
@@ -138,4 +139,4 @@ ['XY'], | ||
test('it returns all sorted nodes with sort order case-insensitive', function () { | ||
var result = get_import_nodes_1.getImportNodes(code); | ||
var sorted = get_sorted_nodes_1.getSortedNodes(result, { | ||
var result = (0, get_import_nodes_1.getImportNodes)(code); | ||
var sorted = (0, get_sorted_nodes_1.getSortedNodes)(result, { | ||
importOrder: ['^a$', '^t$', '^k$', '^B'], | ||
@@ -147,3 +148,3 @@ importOrderCaseInsensitive: true, | ||
}); | ||
expect(get_sorted_nodes_names_1.getSortedNodesNames(sorted)).toEqual([ | ||
expect((0, get_sorted_nodes_names_1.getSortedNodesNames)(sorted)).toEqual([ | ||
'c', | ||
@@ -164,3 +165,3 @@ 'g', | ||
.map(function (importDeclaration) { | ||
return get_sorted_nodes_modules_names_1.getSortedNodesModulesNames(importDeclaration.specifiers); | ||
return (0, get_sorted_nodes_modules_names_1.getSortedNodesModulesNames)(importDeclaration.specifiers); | ||
})).toEqual([ | ||
@@ -181,4 +182,4 @@ ['c', 'cD'], | ||
test('it returns all sorted import nodes with sorted import specifiers', function () { | ||
var result = get_import_nodes_1.getImportNodes(code); | ||
var sorted = get_sorted_nodes_1.getSortedNodes(result, { | ||
var result = (0, get_import_nodes_1.getImportNodes)(code); | ||
var sorted = (0, get_sorted_nodes_1.getSortedNodes)(result, { | ||
importOrder: ['^a$', '^t$', '^k$', '^B'], | ||
@@ -190,3 +191,3 @@ importOrderCaseInsensitive: false, | ||
}); | ||
expect(get_sorted_nodes_names_1.getSortedNodesNames(sorted)).toEqual([ | ||
expect((0, get_sorted_nodes_names_1.getSortedNodesNames)(sorted)).toEqual([ | ||
'XY', | ||
@@ -207,3 +208,3 @@ 'Xa', | ||
.map(function (importDeclaration) { | ||
return get_sorted_nodes_modules_names_1.getSortedNodesModulesNames(importDeclaration.specifiers); | ||
return (0, get_sorted_nodes_modules_names_1.getSortedNodesModulesNames)(importDeclaration.specifiers); | ||
})).toEqual([ | ||
@@ -224,4 +225,4 @@ ['XY'], | ||
test('it returns all sorted import nodes with sorted import specifiers with case-insensitive ', function () { | ||
var result = get_import_nodes_1.getImportNodes(code); | ||
var sorted = get_sorted_nodes_1.getSortedNodes(result, { | ||
var result = (0, get_import_nodes_1.getImportNodes)(code); | ||
var sorted = (0, get_sorted_nodes_1.getSortedNodes)(result, { | ||
importOrder: ['^a$', '^t$', '^k$', '^B'], | ||
@@ -233,3 +234,3 @@ importOrderCaseInsensitive: true, | ||
}); | ||
expect(get_sorted_nodes_names_1.getSortedNodesNames(sorted)).toEqual([ | ||
expect((0, get_sorted_nodes_names_1.getSortedNodesNames)(sorted)).toEqual([ | ||
'c', | ||
@@ -250,3 +251,3 @@ 'g', | ||
.map(function (importDeclaration) { | ||
return get_sorted_nodes_modules_names_1.getSortedNodesModulesNames(importDeclaration.specifiers); | ||
return (0, get_sorted_nodes_modules_names_1.getSortedNodesModulesNames)(importDeclaration.specifiers); | ||
})).toEqual([ | ||
@@ -267,4 +268,4 @@ ['c', 'cD'], | ||
test('it returns all sorted nodes with custom third party modules', function () { | ||
var result = get_import_nodes_1.getImportNodes(code); | ||
var sorted = get_sorted_nodes_1.getSortedNodes(result, { | ||
var result = (0, get_import_nodes_1.getImportNodes)(code); | ||
var sorted = (0, get_sorted_nodes_1.getSortedNodes)(result, { | ||
importOrder: ['^a$', '<THIRD_PARTY_MODULES>', '^t$', '^k$'], | ||
@@ -276,3 +277,3 @@ importOrderSeparation: false, | ||
}); | ||
expect(get_sorted_nodes_names_1.getSortedNodesNames(sorted)).toEqual([ | ||
expect((0, get_sorted_nodes_names_1.getSortedNodesNames)(sorted)).toEqual([ | ||
'a', | ||
@@ -292,4 +293,4 @@ 'Ba', | ||
test('it returns all sorted nodes with namespace specifiers at the top', function () { | ||
var result = get_import_nodes_1.getImportNodes(code); | ||
var sorted = get_sorted_nodes_1.getSortedNodes(result, { | ||
var result = (0, get_import_nodes_1.getImportNodes)(code); | ||
var sorted = (0, get_sorted_nodes_1.getSortedNodes)(result, { | ||
importOrder: [], | ||
@@ -301,3 +302,3 @@ importOrderCaseInsensitive: false, | ||
}); | ||
expect(get_sorted_nodes_names_1.getSortedNodesNames(sorted)).toEqual([ | ||
expect((0, get_sorted_nodes_names_1.getSortedNodesNames)(sorted)).toEqual([ | ||
'a', | ||
@@ -316,1 +317,49 @@ 'x', | ||
}); | ||
test('it returns all sorted nodes with types', function () { | ||
var result = (0, get_import_nodes_1.getImportNodes)(typeCode, { | ||
plugins: ['typescript'], | ||
}); | ||
var sorted = (0, get_sorted_nodes_1.getSortedNodes)(result, { | ||
importOrder: ["<THIRD_PARTY_TS_TYPES>", "^[./]", "<TS_TYPES>^[./]"], | ||
importOrderCaseInsensitive: false, | ||
importOrderSeparation: false, | ||
importOrderGroupNamespaceSpecifiers: false, | ||
importOrderSortSpecifiers: false, | ||
}); | ||
expect((0, get_sorted_nodes_names_1.getSortedNodesNames)(sorted)).toEqual([ | ||
'BY', | ||
'Ba', | ||
'XY', | ||
'Xa', | ||
'a', | ||
'c', | ||
'g', | ||
'k', | ||
't', | ||
'x', | ||
'z', | ||
'sm', | ||
'./l', | ||
'./xl', | ||
]); | ||
expect(sorted | ||
.filter(function (node) { return node.type === 'ImportDeclaration'; }) | ||
.map(function (importDeclaration) { | ||
return (0, get_sorted_nodes_modules_names_1.getSortedNodesModulesNames)(importDeclaration.specifiers); | ||
})).toEqual([ | ||
['BY'], | ||
['Ba'], | ||
['XY'], | ||
['Xa'], | ||
['a'], | ||
['c', 'cD'], | ||
['g'], | ||
['k', 'kE', 'kB'], | ||
['tC', 'tA', 'tB'], | ||
['x'], | ||
['z'], | ||
['sm'], | ||
['l'], | ||
['xl'], | ||
]); | ||
}); |
"use strict"; | ||
var __spreadArray = (this && this.__spreadArray) || function (to, from) { | ||
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) | ||
to[j] = from[i]; | ||
return to; | ||
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { | ||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { | ||
if (ar || !(i in from)) { | ||
if (!ar) ar = Array.prototype.slice.call(from, 0, i); | ||
ar[i] = from[i]; | ||
} | ||
} | ||
return to.concat(ar || Array.prototype.slice.call(from)); | ||
}; | ||
@@ -15,4 +19,4 @@ Object.defineProperty(exports, "__esModule", { value: true }); | ||
test('it should remove nodes from the original code', function () { | ||
var importNodes = get_import_nodes_1.getImportNodes(code); | ||
var sortedNodes = get_sorted_nodes_1.getSortedNodes(importNodes, { | ||
var importNodes = (0, get_import_nodes_1.getImportNodes)(code); | ||
var sortedNodes = (0, get_sorted_nodes_1.getSortedNodes)(importNodes, { | ||
importOrder: [], | ||
@@ -24,7 +28,7 @@ importOrderCaseInsensitive: false, | ||
}); | ||
var allCommentsFromImports = get_all_comments_from_nodes_1.getAllCommentsFromNodes(sortedNodes); | ||
var commentAndImportsToRemoveFromCode = __spreadArray(__spreadArray([], sortedNodes), allCommentsFromImports); | ||
var codeWithoutImportDeclarations = remove_nodes_from_original_code_1.removeNodesFromOriginalCode(code, commentAndImportsToRemoveFromCode); | ||
var result = prettier_1.format(codeWithoutImportDeclarations, { parser: 'babel' }); | ||
var allCommentsFromImports = (0, get_all_comments_from_nodes_1.getAllCommentsFromNodes)(sortedNodes); | ||
var commentAndImportsToRemoveFromCode = __spreadArray(__spreadArray([], sortedNodes, true), allCommentsFromImports, true); | ||
var codeWithoutImportDeclarations = (0, remove_nodes_from_original_code_1.removeNodesFromOriginalCode)(code, commentAndImportsToRemoveFromCode); | ||
var result = (0, prettier_1.format)(codeWithoutImportDeclarations, { parser: 'babel' }); | ||
expect(result).toEqual(''); | ||
}); |
@@ -12,12 +12,18 @@ "use strict"; | ||
var directives = []; | ||
traverse_1.default(ast, { | ||
Directive: function (_a) { | ||
var node = _a.node; | ||
directives.push(node); | ||
// Trailing comments probably shouldn't be attached to the directive | ||
node.trailingComments = null; | ||
(0, traverse_1.default)(ast, { | ||
Directive: function (path) { | ||
// Only capture directives if they are at the top scope of the source | ||
// and their previous siblings are all directives | ||
if (path.parent.type === 'Program' && | ||
path.getAllPrevSiblings().every(function (s) { | ||
return s.type === 'Directive'; | ||
})) { | ||
directives.push(path.node); | ||
// Trailing comments probably shouldn't be attached to the directive | ||
path.node.trailingComments = null; | ||
} | ||
}, | ||
ImportDeclaration: function (path) { | ||
var tsModuleParent = path.findParent(function (p) { | ||
return types_1.isTSModuleDeclaration(p); | ||
return (0, types_1.isTSModuleDeclaration)(p); | ||
}); | ||
@@ -24,0 +30,0 @@ if (!tsModuleParent) { |
"use strict"; | ||
var __spreadArray = (this && this.__spreadArray) || function (to, from) { | ||
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) | ||
to[j] = from[i]; | ||
return to; | ||
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { | ||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { | ||
if (ar || !(i in from)) { | ||
if (!ar) ar = Array.prototype.slice.call(from, 0, i); | ||
ar[i] = from[i]; | ||
} | ||
} | ||
return to.concat(ar || Array.prototype.slice.call(from)); | ||
}; | ||
@@ -13,3 +17,3 @@ Object.defineProperty(exports, "__esModule", { value: true }); | ||
node.leadingComments.length > 0) { | ||
acc = __spreadArray(__spreadArray([], acc), node.leadingComments); | ||
acc = __spreadArray(__spreadArray([], acc, true), node.leadingComments, true); | ||
} | ||
@@ -16,0 +20,0 @@ return acc; |
"use strict"; | ||
var __spreadArray = (this && this.__spreadArray) || function (to, from) { | ||
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) | ||
to[j] = from[i]; | ||
return to; | ||
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { | ||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { | ||
if (ar || !(i in from)) { | ||
if (!ar) ar = Array.prototype.slice.call(from, 0, i); | ||
ar[i] = from[i]; | ||
} | ||
} | ||
return to.concat(ar || Array.prototype.slice.call(from)); | ||
}; | ||
@@ -23,6 +27,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { | ||
var getCodeFromAst = function (nodes, directives, originalCode, interpreter) { | ||
var allCommentsFromImports = get_all_comments_from_nodes_1.getAllCommentsFromNodes(nodes); | ||
var nodesToRemoveFromCode = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], directives), nodes), allCommentsFromImports), (interpreter ? [interpreter] : [])); | ||
var codeWithoutImportsAndInterpreter = remove_nodes_from_original_code_1.removeNodesFromOriginalCode(originalCode, nodesToRemoveFromCode); | ||
var newAST = types_1.file({ | ||
var allCommentsFromImports = (0, get_all_comments_from_nodes_1.getAllCommentsFromNodes)(nodes); | ||
var nodesToRemoveFromCode = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], directives, true), nodes, true), allCommentsFromImports, true), (interpreter ? [interpreter] : []), true); | ||
var codeWithoutImportsAndInterpreter = (0, remove_nodes_from_original_code_1.removeNodesFromOriginalCode)(originalCode, nodesToRemoveFromCode); | ||
var newAST = (0, types_1.file)({ | ||
type: 'Program', | ||
@@ -44,5 +48,5 @@ body: nodes, | ||
}); | ||
var code = generator_1.default(newAST).code; | ||
var code = (0, generator_1.default)(newAST).code; | ||
return (code.replace(/"PRETTIER_PLUGIN_SORT_IMPORTS_NEW_LINE";/gi, constants_1.newLineCharacters) + codeWithoutImportsAndInterpreter.trim()); | ||
}; | ||
exports.getCodeFromAst = getCodeFromAst; |
@@ -13,6 +13,13 @@ "use strict"; | ||
group: group, | ||
regExp: new RegExp(group), | ||
regExp: group.startsWith(constants_1.TYPES_SPECIAL_WORD) | ||
? new RegExp(group.replace(constants_1.TYPES_SPECIAL_WORD, '')) | ||
: new RegExp(group), | ||
}); }); | ||
for (var _i = 0, groupWithRegExp_1 = groupWithRegExp; _i < groupWithRegExp_1.length; _i++) { | ||
var _a = groupWithRegExp_1[_i], group = _a.group, regExp = _a.regExp; | ||
if ((group.startsWith(constants_1.TYPES_SPECIAL_WORD) && | ||
node.importKind !== 'type') || | ||
(!group.startsWith(constants_1.TYPES_SPECIAL_WORD) && | ||
node.importKind === 'type')) | ||
continue; | ||
var matched = node.source.value.match(regExp) !== null; | ||
@@ -22,4 +29,7 @@ if (matched) | ||
} | ||
return constants_1.THIRD_PARTY_MODULES_SPECIAL_WORD; | ||
return node.importKind === 'type' && | ||
importOrder.find(function (group) { return group === constants_1.THIRD_PARTY_TYPES_SPECIAL_WORD; }) | ||
? constants_1.THIRD_PARTY_TYPES_SPECIAL_WORD | ||
: constants_1.THIRD_PARTY_MODULES_SPECIAL_WORD; | ||
}; | ||
exports.getImportNodesMatchedGroup = getImportNodesMatchedGroup; |
@@ -23,7 +23,7 @@ "use strict"; | ||
var importNodes = []; | ||
var ast = parser_1.parse(code, __assign(__assign({}, options), { sourceType: 'module' })); | ||
traverse_1.default(ast, { | ||
var ast = (0, parser_1.parse)(code, __assign(__assign({}, options), { sourceType: 'module' })); | ||
(0, traverse_1.default)(ast, { | ||
ImportDeclaration: function (path) { | ||
var tsModuleParent = path.findParent(function (p) { | ||
return types_1.isTSModuleDeclaration(p); | ||
return (0, types_1.isTSModuleDeclaration)(p); | ||
}); | ||
@@ -30,0 +30,0 @@ if (!tsModuleParent) { |
@@ -15,3 +15,3 @@ "use strict"; | ||
} | ||
return natural_sort_1.naturalSort(a.local.name, b.local.name); | ||
return (0, natural_sort_1.naturalSort)(a.local.name, b.local.name); | ||
}); | ||
@@ -18,0 +18,0 @@ return node; |
@@ -12,3 +12,3 @@ "use strict"; | ||
} | ||
return natural_sort_1.naturalSort(a.source.value, b.source.value); | ||
return (0, natural_sort_1.naturalSort)(a.source.value, b.source.value); | ||
}); | ||
@@ -15,0 +15,0 @@ }; |
@@ -13,6 +13,10 @@ "use strict"; | ||
}; | ||
var __spreadArray = (this && this.__spreadArray) || function (to, from) { | ||
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) | ||
to[j] = from[i]; | ||
return to; | ||
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { | ||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { | ||
if (ar || !(i in from)) { | ||
if (!ar) ar = Array.prototype.slice.call(from, 0, i); | ||
ar[i] = from[i]; | ||
} | ||
} | ||
return to.concat(ar || Array.prototype.slice.call(from)); | ||
}; | ||
@@ -41,3 +45,3 @@ Object.defineProperty(exports, "__esModule", { value: true }); | ||
if (!importOrder.includes(constants_1.THIRD_PARTY_MODULES_SPECIAL_WORD)) { | ||
importOrder = __spreadArray([constants_1.THIRD_PARTY_MODULES_SPECIAL_WORD], importOrder); | ||
importOrder = __spreadArray([constants_1.THIRD_PARTY_MODULES_SPECIAL_WORD], importOrder, true); | ||
} | ||
@@ -51,3 +55,3 @@ var importOrderGroups = importOrder.reduce(function (groups, regexp) { | ||
var node = originalNodes_1[_i]; | ||
var matchedGroup = get_import_nodes_matched_group_1.getImportNodesMatchedGroup(node, importOrderWithOutThirdPartyPlaceholder); | ||
var matchedGroup = (0, get_import_nodes_matched_group_1.getImportNodesMatchedGroup)(node, importOrderWithOutThirdPartyPlaceholder); | ||
importOrderGroups[matchedGroup].push(node); | ||
@@ -60,3 +64,3 @@ } | ||
continue; | ||
var sortedInsideGroup = get_sorted_nodes_group_1.getSortedNodesGroup(groupNodes, { | ||
var sortedInsideGroup = (0, get_sorted_nodes_group_1.getSortedNodesGroup)(groupNodes, { | ||
importOrderGroupNamespaceSpecifiers: importOrderGroupNamespaceSpecifiers, | ||
@@ -67,3 +71,3 @@ }); | ||
sortedInsideGroup.forEach(function (node) { | ||
return get_sorted_import_specifiers_1.getSortedImportSpecifiers(node); | ||
return (0, get_sorted_import_specifiers_1.getSortedImportSpecifiers)(node); | ||
}); | ||
@@ -87,8 +91,8 @@ } | ||
finalNodes.forEach(function (node, index) { | ||
if (lodash_1.isEqual(nodes[0].loc, node.loc)) | ||
if ((0, lodash_1.isEqual)(nodes[0].loc, node.loc)) | ||
return; | ||
types_1.addComments(node, 'leading', finalNodesClone[index].leadingComments || []); | ||
(0, types_1.addComments)(node, 'leading', finalNodesClone[index].leadingComments || []); | ||
}); | ||
if (firstNodesComments) { | ||
types_1.addComments(finalNodes[0], 'leading', firstNodesComments); | ||
(0, types_1.addComments)(finalNodes[0], 'leading', firstNodesComments); | ||
} | ||
@@ -95,0 +99,0 @@ return finalNodes; |
{ | ||
"name": "@trivago/prettier-plugin-sort-imports", | ||
"version": "4.0.0", | ||
"version": "4.1.0", | ||
"description": "A prettier plugins to sort imports in provided RegEx order", | ||
@@ -36,11 +36,11 @@ "main": "lib/src/index.js", | ||
"dependencies": { | ||
"@babel/core": "7.17.8", | ||
"@babel/generator": "7.17.7", | ||
"@babel/parser": "7.18.9", | ||
"@babel/parser": "^7.20.5", | ||
"@babel/traverse": "7.17.3", | ||
"@babel/types": "7.17.0", | ||
"javascript-natural-sort": "0.7.1", | ||
"lodash": "4.17.21" | ||
"lodash": "^4.17.21" | ||
}, | ||
"devDependencies": { | ||
"@babel/core": "^7.20.7", | ||
"@types/chai": "4.2.15", | ||
@@ -52,5 +52,5 @@ "@types/jest": "26.0.20", | ||
"jest": "26.6.3", | ||
"prettier": "2.7.1", | ||
"prettier": "2.8", | ||
"ts-jest": "26.5.3", | ||
"typescript": "4.2.3" | ||
"typescript": "4.9.4" | ||
}, | ||
@@ -60,3 +60,8 @@ "peerDependencies": { | ||
"prettier": "2.x" | ||
}, | ||
"peerDependenciesMeta": { | ||
"@vue/compiler-sfc": { | ||
"optional": true | ||
} | ||
} | ||
} |
@@ -215,4 +215,4 @@ # Prettier plugin sort imports | ||
| Angular | ✅ Everything | Supported through `importOrderParserPlugins` API | | ||
| Vue | ✅ Everything | Peer dependency `@vue/compiler-sfc` is required | | ||
| Svelte | ⚠️ Soon to be supported. | Any contribution is welcome. | | ||
| Vue | ✅ Everything | `@vue/compiler-sfc` is required | | ||
| Svelte | ⚠️ Soon to be supported. | Any contribution is welcome. | | ||
@@ -219,0 +219,0 @@ ### Used by |
No License Found
License(Experimental) License information could not be found
Found 1 instance in 1 package
76013
8
1232
10
1
- Removed@babel/core@7.17.8
- Removed@ampproject/remapping@2.3.0(transitive)
- Removed@babel/compat-data@7.24.4(transitive)
- Removed@babel/core@7.17.8(transitive)
- Removed@babel/generator@7.24.5(transitive)
- Removed@babel/helper-compilation-targets@7.23.6(transitive)
- Removed@babel/helper-module-imports@7.24.3(transitive)
- Removed@babel/helper-module-transforms@7.24.5(transitive)
- Removed@babel/helper-simple-access@7.24.5(transitive)
- Removed@babel/helper-validator-option@7.23.5(transitive)
- Removed@babel/helpers@7.24.5(transitive)
- Removed@babel/parser@7.18.9(transitive)
- Removed@babel/traverse@7.24.5(transitive)
- Removed@jridgewell/gen-mapping@0.3.5(transitive)
- Removed@jridgewell/resolve-uri@3.1.2(transitive)
- Removed@jridgewell/set-array@1.2.1(transitive)
- Removed@jridgewell/trace-mapping@0.3.25(transitive)
- Removedbrowserslist@4.23.0(transitive)
- Removedcaniuse-lite@1.0.30001620(transitive)
- Removedconvert-source-map@1.9.0(transitive)
- Removedescalade@3.1.2(transitive)
- Removedgensync@1.0.0-beta.2(transitive)
- Removedjson5@2.2.3(transitive)
- Removedlru-cache@5.1.1(transitive)
- Removednode-releases@2.0.14(transitive)
- Removedsemver@6.3.1(transitive)
- Removedupdate-browserslist-db@1.0.16(transitive)
- Removedyallist@3.1.1(transitive)
Updated@babel/parser@^7.20.5
Updatedlodash@^4.17.21