Socket
Socket
Sign inDemoInstall

@trivago/prettier-plugin-sort-imports

Package Overview
Dependencies
47
Maintainers
4
Versions
36
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 4.0.0 to 4.1.0

10

CHANGELOG.md

@@ -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

6

lib/src/constants.js
"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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc