@thethracian/oxlint-config 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +125 -19
- package/dist/codemod-fix/cli.d.ts +3 -0
- package/dist/codemod-fix/cli.d.ts.map +1 -0
- package/dist/codemod-fix/cli.js +22 -0
- package/dist/codemod-fix/cli.js.map +1 -0
- package/dist/codemod-fix/index.d.ts +44 -0
- package/dist/codemod-fix/index.d.ts.map +1 -0
- package/dist/codemod-fix/index.js +110 -0
- package/dist/codemod-fix/index.js.map +1 -0
- package/dist/codemods/arrow-body-style.d.ts +7 -0
- package/dist/codemods/arrow-body-style.d.ts.map +1 -0
- package/dist/codemods/arrow-body-style.js +106 -0
- package/dist/codemods/arrow-body-style.js.map +1 -0
- package/dist/codemods/comment-format.d.ts +24 -0
- package/dist/codemods/comment-format.d.ts.map +1 -0
- package/dist/codemods/comment-format.js +100 -0
- package/dist/codemods/comment-format.js.map +1 -0
- package/dist/codemods/explicit-return-types.d.ts +7 -0
- package/dist/codemods/explicit-return-types.d.ts.map +1 -0
- package/dist/codemods/explicit-return-types.js +350 -0
- package/dist/codemods/explicit-return-types.js.map +1 -0
- package/dist/codemods/format-file-header.d.ts +7 -0
- package/dist/codemods/format-file-header.d.ts.map +1 -0
- package/dist/codemods/format-file-header.js +163 -0
- package/dist/codemods/format-file-header.js.map +1 -0
- package/dist/codemods/format-jsdoc-comments.d.ts +7 -0
- package/dist/codemods/format-jsdoc-comments.d.ts.map +1 -0
- package/dist/codemods/format-jsdoc-comments.js +129 -0
- package/dist/codemods/format-jsdoc-comments.js.map +1 -0
- package/dist/codemods/function-declarations.d.ts +7 -0
- package/dist/codemods/function-declarations.d.ts.map +1 -0
- package/dist/codemods/function-declarations.js +202 -0
- package/dist/codemods/function-declarations.js.map +1 -0
- package/dist/codemods/inline-export-lists.d.ts +7 -0
- package/dist/codemods/inline-export-lists.d.ts.map +1 -0
- package/dist/codemods/inline-export-lists.js +168 -0
- package/dist/codemods/inline-export-lists.js.map +1 -0
- package/dist/codemods/internal-export-docs.d.ts +7 -0
- package/dist/codemods/internal-export-docs.d.ts.map +1 -0
- package/dist/codemods/internal-export-docs.js +93 -0
- package/dist/codemods/internal-export-docs.js.map +1 -0
- package/dist/codemods/no-ternary-branch-initializers.d.ts +14 -0
- package/dist/codemods/no-ternary-branch-initializers.d.ts.map +1 -0
- package/dist/codemods/no-ternary-branch-initializers.js +240 -0
- package/dist/codemods/no-ternary-branch-initializers.js.map +1 -0
- package/dist/codemods/no-ternary-variable-initializers.d.ts +14 -0
- package/dist/codemods/no-ternary-variable-initializers.d.ts.map +1 -0
- package/dist/codemods/no-ternary-variable-initializers.js +235 -0
- package/dist/codemods/no-ternary-variable-initializers.js.map +1 -0
- package/dist/codemods/no-ternary.d.ts +7 -0
- package/dist/codemods/no-ternary.d.ts.map +1 -0
- package/dist/codemods/no-ternary.js +215 -0
- package/dist/codemods/no-ternary.js.map +1 -0
- package/dist/codemods/rename-acronyms.d.ts +8 -0
- package/dist/codemods/rename-acronyms.d.ts.map +1 -0
- package/dist/codemods/rename-acronyms.js +193 -0
- package/dist/codemods/rename-acronyms.js.map +1 -0
- package/dist/codemods/run.d.ts +2 -0
- package/dist/codemods/run.d.ts.map +1 -0
- package/dist/codemods/run.js +14 -0
- package/dist/codemods/run.js.map +1 -0
- package/dist/codemods/sort-imports.d.ts +7 -0
- package/dist/codemods/sort-imports.d.ts.map +1 -0
- package/dist/codemods/sort-imports.js +235 -0
- package/dist/codemods/sort-imports.js.map +1 -0
- package/dist/index.d.ts +30 -96
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +157 -95
- package/dist/index.js.map +1 -1
- package/dist/rules/acronym-case.d.ts +7 -3
- package/dist/rules/acronym-case.d.ts.map +1 -1
- package/dist/rules/acronym-case.js +129 -120
- package/dist/rules/acronym-case.js.map +1 -1
- package/dist/rules/acronyms-1.d.ts +3 -0
- package/dist/rules/acronyms-1.d.ts.map +1 -0
- package/dist/rules/acronyms-1.js +407 -0
- package/dist/rules/acronyms-1.js.map +1 -0
- package/dist/rules/acronyms-2.d.ts +3 -0
- package/dist/rules/acronyms-2.d.ts.map +1 -0
- package/dist/rules/acronyms-2.js +407 -0
- package/dist/rules/acronyms-2.js.map +1 -0
- package/dist/rules/acronyms-3.d.ts +3 -0
- package/dist/rules/acronyms-3.d.ts.map +1 -0
- package/dist/rules/acronyms-3.js +407 -0
- package/dist/rules/acronyms-3.js.map +1 -0
- package/dist/rules/acronyms-4.d.ts +3 -0
- package/dist/rules/acronyms-4.d.ts.map +1 -0
- package/dist/rules/acronyms-4.js +377 -0
- package/dist/rules/acronyms-4.js.map +1 -0
- package/dist/rules/acronyms.d.ts +1 -8
- package/dist/rules/acronyms.d.ts.map +1 -1
- package/dist/rules/acronyms.js +14 -1578
- package/dist/rules/acronyms.js.map +1 -1
- package/dist/rules/boolean-prefix.d.ts +11 -2
- package/dist/rules/boolean-prefix.d.ts.map +1 -1
- package/dist/rules/boolean-prefix.js +95 -59
- package/dist/rules/boolean-prefix.js.map +1 -1
- package/dist/rules/camel-case-identifiers.d.ts +3 -4
- package/dist/rules/camel-case-identifiers.d.ts.map +1 -1
- package/dist/rules/camel-case-identifiers.js +59 -40
- package/dist/rules/camel-case-identifiers.js.map +1 -1
- package/dist/rules/char-class.d.ts +26 -13
- package/dist/rules/char-class.d.ts.map +1 -1
- package/dist/rules/char-class.js +56 -24
- package/dist/rules/char-class.js.map +1 -1
- package/dist/rules/diagnostic-guidance.d.ts +91 -0
- package/dist/rules/diagnostic-guidance.d.ts.map +1 -0
- package/dist/rules/diagnostic-guidance.js +243 -0
- package/dist/rules/diagnostic-guidance.js.map +1 -0
- package/dist/rules/effect-default-ast.d.ts +89 -0
- package/dist/rules/effect-default-ast.d.ts.map +1 -0
- package/dist/rules/effect-default-ast.js +208 -0
- package/dist/rules/effect-default-ast.js.map +1 -0
- package/dist/rules/effect-default-compat-rules.d.ts +76 -0
- package/dist/rules/effect-default-compat-rules.d.ts.map +1 -0
- package/dist/rules/effect-default-compat-rules.js +270 -0
- package/dist/rules/effect-default-compat-rules.js.map +1 -0
- package/dist/rules/effect-default-env-rules.d.ts +60 -0
- package/dist/rules/effect-default-env-rules.d.ts.map +1 -0
- package/dist/rules/effect-default-env-rules.js +259 -0
- package/dist/rules/effect-default-env-rules.js.map +1 -0
- package/dist/rules/effect-default-fiber-helpers.d.ts +13 -0
- package/dist/rules/effect-default-fiber-helpers.d.ts.map +1 -0
- package/dist/rules/effect-default-fiber-helpers.js +76 -0
- package/dist/rules/effect-default-fiber-helpers.js.map +1 -0
- package/dist/rules/effect-default-floating-helpers.d.ts +7 -0
- package/dist/rules/effect-default-floating-helpers.d.ts.map +1 -0
- package/dist/rules/effect-default-floating-helpers.js +113 -0
- package/dist/rules/effect-default-floating-helpers.js.map +1 -0
- package/dist/rules/effect-default-helpers.d.ts +8 -32
- package/dist/rules/effect-default-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-helpers.js +11 -458
- package/dist/rules/effect-default-helpers.js.map +1 -1
- package/dist/rules/effect-default-resource-helpers.d.ts +18 -4
- package/dist/rules/effect-default-resource-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-resource-helpers.js +30 -13
- package/dist/rules/effect-default-resource-helpers.js.map +1 -1
- package/dist/rules/effect-default-safety-helpers.d.ts +43 -0
- package/dist/rules/effect-default-safety-helpers.d.ts.map +1 -0
- package/dist/rules/effect-default-safety-helpers.js +126 -0
- package/dist/rules/effect-default-safety-helpers.js.map +1 -0
- package/dist/rules/effect-default-scan-helpers.d.ts +43 -0
- package/dist/rules/effect-default-scan-helpers.d.ts.map +1 -0
- package/dist/rules/effect-default-scan-helpers.js +141 -0
- package/dist/rules/effect-default-scan-helpers.js.map +1 -0
- package/dist/rules/effect-default-schema-helpers.d.ts +37 -0
- package/dist/rules/effect-default-schema-helpers.d.ts.map +1 -0
- package/dist/rules/effect-default-schema-helpers.js +104 -0
- package/dist/rules/effect-default-schema-helpers.js.map +1 -0
- package/dist/rules/effect-default-test-helpers.d.ts +18 -4
- package/dist/rules/effect-default-test-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-test-helpers.js +41 -20
- package/dist/rules/effect-default-test-helpers.js.map +1 -1
- package/dist/rules/effect-default-workflow-helpers.d.ts +91 -0
- package/dist/rules/effect-default-workflow-helpers.d.ts.map +1 -0
- package/dist/rules/effect-default-workflow-helpers.js +247 -0
- package/dist/rules/effect-default-workflow-helpers.js.map +1 -0
- package/dist/rules/effect-default.d.ts +1 -1
- package/dist/rules/effect-default.d.ts.map +1 -1
- package/dist/rules/effect-default.js +198 -637
- package/dist/rules/effect-default.js.map +1 -1
- package/dist/rules/effect-exported-declarations.d.ts +19 -0
- package/dist/rules/effect-exported-declarations.d.ts.map +1 -0
- package/dist/rules/effect-exported-declarations.js +237 -0
- package/dist/rules/effect-exported-declarations.js.map +1 -0
- package/dist/rules/effect-path-options.d.ts +49 -11
- package/dist/rules/effect-path-options.d.ts.map +1 -1
- package/dist/rules/effect-path-options.js +85 -52
- package/dist/rules/effect-path-options.js.map +1 -1
- package/dist/rules/effect-rule-aliases.d.ts +55 -0
- package/dist/rules/effect-rule-aliases.d.ts.map +1 -0
- package/dist/rules/effect-rule-aliases.js +278 -0
- package/dist/rules/effect-rule-aliases.js.map +1 -0
- package/dist/rules/effect-rule-core.d.ts +46 -24
- package/dist/rules/effect-rule-core.d.ts.map +1 -1
- package/dist/rules/effect-rule-core.js +263 -303
- package/dist/rules/effect-rule-core.js.map +1 -1
- package/dist/rules/effect-rule-names.d.ts +12 -3
- package/dist/rules/effect-rule-names.d.ts.map +1 -1
- package/dist/rules/effect-rule-names.js +15 -3
- package/dist/rules/effect-rule-names.js.map +1 -1
- package/dist/rules/effect-source-comments.d.ts +7 -0
- package/dist/rules/effect-source-comments.d.ts.map +1 -0
- package/dist/rules/effect-source-comments.js +227 -0
- package/dist/rules/effect-source-comments.js.map +1 -0
- package/dist/rules/effect-source-helpers.d.ts +4 -9
- package/dist/rules/effect-source-helpers.d.ts.map +1 -1
- package/dist/rules/effect-source-helpers.js +7 -333
- package/dist/rules/effect-source-helpers.js.map +1 -1
- package/dist/rules/effect-source-navigation.d.ts +25 -0
- package/dist/rules/effect-source-navigation.d.ts.map +1 -0
- package/dist/rules/effect-source-navigation.js +244 -0
- package/dist/rules/effect-source-navigation.js.map +1 -0
- package/dist/rules/effect-source-scan.d.ts +30 -7
- package/dist/rules/effect-source-scan.d.ts.map +1 -1
- package/dist/rules/effect-source-scan.js +377 -297
- package/dist/rules/effect-source-scan.js.map +1 -1
- package/dist/rules/effect-strict-ast-specs.d.ts +8 -0
- package/dist/rules/effect-strict-ast-specs.d.ts.map +1 -0
- package/dist/rules/effect-strict-ast-specs.js +166 -0
- package/dist/rules/effect-strict-ast-specs.js.map +1 -0
- package/dist/rules/effect-strict-boundary-helpers.d.ts +25 -0
- package/dist/rules/effect-strict-boundary-helpers.d.ts.map +1 -0
- package/dist/rules/effect-strict-boundary-helpers.js +127 -0
- package/dist/rules/effect-strict-boundary-helpers.js.map +1 -0
- package/dist/rules/effect-strict-core-specs.d.ts +8 -0
- package/dist/rules/effect-strict-core-specs.d.ts.map +1 -0
- package/dist/rules/effect-strict-core-specs.js +334 -0
- package/dist/rules/effect-strict-core-specs.js.map +1 -0
- package/dist/rules/effect-strict-external-helpers.d.ts +25 -0
- package/dist/rules/effect-strict-external-helpers.d.ts.map +1 -0
- package/dist/rules/effect-strict-external-helpers.js +87 -0
- package/dist/rules/effect-strict-external-helpers.js.map +1 -0
- package/dist/rules/effect-strict-helpers.d.ts +75 -33
- package/dist/rules/effect-strict-helpers.d.ts.map +1 -1
- package/dist/rules/effect-strict-helpers.js +124 -246
- package/dist/rules/effect-strict-helpers.js.map +1 -1
- package/dist/rules/effect-strict-internals.d.ts +198 -0
- package/dist/rules/effect-strict-internals.d.ts.map +1 -0
- package/dist/rules/effect-strict-internals.js +477 -0
- package/dist/rules/effect-strict-internals.js.map +1 -0
- package/dist/rules/effect-strict-segment-helpers.d.ts +79 -0
- package/dist/rules/effect-strict-segment-helpers.d.ts.map +1 -0
- package/dist/rules/effect-strict-segment-helpers.js +308 -0
- package/dist/rules/effect-strict-segment-helpers.js.map +1 -0
- package/dist/rules/effect-strict.d.ts +1 -1
- package/dist/rules/effect-strict.d.ts.map +1 -1
- package/dist/rules/effect-strict.js +10 -661
- package/dist/rules/effect-strict.js.map +1 -1
- package/dist/rules/max-import-depth.d.ts +2 -2
- package/dist/rules/max-import-depth.d.ts.map +1 -1
- package/dist/rules/max-import-depth.js +52 -17
- package/dist/rules/max-import-depth.js.map +1 -1
- package/dist/rules/max-line-length.d.ts +9 -2
- package/dist/rules/max-line-length.d.ts.map +1 -1
- package/dist/rules/max-line-length.js +62 -7
- package/dist/rules/max-line-length.js.map +1 -1
- package/dist/rules/no-commented-out-code.d.ts +3 -7
- package/dist/rules/no-commented-out-code.d.ts.map +1 -1
- package/dist/rules/no-commented-out-code.js +157 -102
- package/dist/rules/no-commented-out-code.js.map +1 -1
- package/dist/rules/pascal-case-types.d.ts +1 -1
- package/dist/rules/pascal-case-types.d.ts.map +1 -1
- package/dist/rules/pascal-case-types.js +65 -46
- package/dist/rules/pascal-case-types.js.map +1 -1
- package/dist/rules/plugin-commented-out-code-rule.d.ts +32 -0
- package/dist/rules/plugin-commented-out-code-rule.d.ts.map +1 -0
- package/dist/rules/plugin-commented-out-code-rule.js +135 -0
- package/dist/rules/plugin-commented-out-code-rule.js.map +1 -0
- package/dist/rules/plugin.d.ts +3 -121
- package/dist/rules/plugin.d.ts.map +1 -1
- package/dist/rules/plugin.js +195 -201
- package/dist/rules/plugin.js.map +1 -1
- package/dist/rules/private-underscore.d.ts +1 -1
- package/dist/rules/private-underscore.d.ts.map +1 -1
- package/dist/rules/private-underscore.js +11 -4
- package/dist/rules/private-underscore.js.map +1 -1
- package/dist/rules/require-file-doc.d.ts +5 -6
- package/dist/rules/require-file-doc.d.ts.map +1 -1
- package/dist/rules/require-file-doc.js +127 -78
- package/dist/rules/require-file-doc.js.map +1 -1
- package/dist/rules/require-function-doc-ignored-text.d.ts +7 -0
- package/dist/rules/require-function-doc-ignored-text.d.ts.map +1 -0
- package/dist/rules/require-function-doc-ignored-text.js +67 -0
- package/dist/rules/require-function-doc-ignored-text.js.map +1 -0
- package/dist/rules/require-function-doc-local-exports.d.ts +7 -0
- package/dist/rules/require-function-doc-local-exports.d.ts.map +1 -0
- package/dist/rules/require-function-doc-local-exports.js +114 -0
- package/dist/rules/require-function-doc-local-exports.js.map +1 -0
- package/dist/rules/require-function-doc.d.ts +3 -18
- package/dist/rules/require-function-doc.d.ts.map +1 -1
- package/dist/rules/require-function-doc.js +404 -218
- package/dist/rules/require-function-doc.js.map +1 -1
- package/dist/rules/source-cache.d.ts +19 -0
- package/dist/rules/source-cache.d.ts.map +1 -0
- package/dist/rules/source-cache.js +63 -0
- package/dist/rules/source-cache.js.map +1 -0
- package/package.json +15 -10
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import jscodeshift from 'jscodeshift';
|
|
2
|
+
const syntaxOrder = {
|
|
3
|
+
all: 1,
|
|
4
|
+
multiple: 2,
|
|
5
|
+
none: 0,
|
|
6
|
+
single: 3,
|
|
7
|
+
};
|
|
8
|
+
const codemodAPI = jscodeshift.withParser('ts');
|
|
9
|
+
const isObjectRecord = (value) => typeof value === 'object' && value !== null;
|
|
10
|
+
const isImportDeclaration = (statement) => statement.type === 'ImportDeclaration';
|
|
11
|
+
const nodeStart = (node) => {
|
|
12
|
+
if (isObjectRecord(node)) {
|
|
13
|
+
const { start } = node;
|
|
14
|
+
if (typeof start === 'number') {
|
|
15
|
+
return start;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
throw new Error('jscodeshift node is missing a start offset');
|
|
19
|
+
};
|
|
20
|
+
const nodeEnd = (node) => {
|
|
21
|
+
if (isObjectRecord(node)) {
|
|
22
|
+
const { end } = node;
|
|
23
|
+
if (typeof end === 'number') {
|
|
24
|
+
return end;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
throw new Error('jscodeshift node is missing an end offset');
|
|
28
|
+
};
|
|
29
|
+
const sourceForNode = (source, node) => source.slice(nodeStart(node), nodeEnd(node));
|
|
30
|
+
const compareText = (left, right) => {
|
|
31
|
+
if (left < right) {
|
|
32
|
+
return -1;
|
|
33
|
+
}
|
|
34
|
+
if (left > right) {
|
|
35
|
+
return 1;
|
|
36
|
+
}
|
|
37
|
+
return 0;
|
|
38
|
+
};
|
|
39
|
+
const applyReplacement = (source, replacement) => {
|
|
40
|
+
if (!replacement) {
|
|
41
|
+
return source;
|
|
42
|
+
}
|
|
43
|
+
return source.slice(0, replacement.start) + replacement.text + source.slice(replacement.end);
|
|
44
|
+
};
|
|
45
|
+
const importNode = (statement) => ({
|
|
46
|
+
importKind: statement.importKind,
|
|
47
|
+
source: statement.source,
|
|
48
|
+
specifiers: statement.specifiers ?? [],
|
|
49
|
+
});
|
|
50
|
+
const isImportSpecifier = (specifier) => specifier?.type === 'ImportSpecifier';
|
|
51
|
+
const isDefaultSpecifier = (specifier) => specifier?.type === 'ImportDefaultSpecifier';
|
|
52
|
+
const isNamespaceSpecifier = (specifier) => specifier?.type === 'ImportNamespaceSpecifier';
|
|
53
|
+
const localName = (identifier) => {
|
|
54
|
+
if (isObjectRecord(identifier) &&
|
|
55
|
+
identifier.type === 'Identifier' &&
|
|
56
|
+
typeof identifier.name === 'string') {
|
|
57
|
+
return identifier.name;
|
|
58
|
+
}
|
|
59
|
+
return '';
|
|
60
|
+
};
|
|
61
|
+
const importedName = (node) => {
|
|
62
|
+
if (isObjectRecord(node) && node.type === 'Identifier' && typeof node.name === 'string') {
|
|
63
|
+
return node.name;
|
|
64
|
+
}
|
|
65
|
+
if (isObjectRecord(node)) {
|
|
66
|
+
const { value } = node;
|
|
67
|
+
return String(value);
|
|
68
|
+
}
|
|
69
|
+
return '';
|
|
70
|
+
};
|
|
71
|
+
const importSpecifiers = (statement) => importNode(statement).specifiers.filter(isImportSpecifier);
|
|
72
|
+
const defaultSpecifier = (statement) => importNode(statement).specifiers.find(isDefaultSpecifier);
|
|
73
|
+
const namespaceSpecifier = (statement) => importNode(statement).specifiers.find(isNamespaceSpecifier);
|
|
74
|
+
const importSyntaxKind = (statement) => {
|
|
75
|
+
const { specifiers } = importNode(statement);
|
|
76
|
+
if (specifiers.length === 0) {
|
|
77
|
+
return 'none';
|
|
78
|
+
}
|
|
79
|
+
if (namespaceSpecifier(statement)) {
|
|
80
|
+
return 'all';
|
|
81
|
+
}
|
|
82
|
+
if (defaultSpecifier(statement) && importSpecifiers(statement).length > 0) {
|
|
83
|
+
return 'multiple';
|
|
84
|
+
}
|
|
85
|
+
if (importSpecifiers(statement).length > 1) {
|
|
86
|
+
return 'multiple';
|
|
87
|
+
}
|
|
88
|
+
return 'single';
|
|
89
|
+
};
|
|
90
|
+
const importSpecifierKey = (specifier) => importedName(specifier.imported);
|
|
91
|
+
const namedImportSortKey = (statement) => {
|
|
92
|
+
const namespaceImport = namespaceSpecifier(statement);
|
|
93
|
+
if (namespaceImport) {
|
|
94
|
+
return localName(namespaceImport.local);
|
|
95
|
+
}
|
|
96
|
+
const [firstSpecifier] = importSpecifiers(statement);
|
|
97
|
+
if (firstSpecifier) {
|
|
98
|
+
return importSpecifierKey(firstSpecifier);
|
|
99
|
+
}
|
|
100
|
+
return '';
|
|
101
|
+
};
|
|
102
|
+
const importSortKey = (statement) => {
|
|
103
|
+
const defaultImport = defaultSpecifier(statement);
|
|
104
|
+
if (defaultImport) {
|
|
105
|
+
return localName(defaultImport.local);
|
|
106
|
+
}
|
|
107
|
+
return namedImportSortKey(statement);
|
|
108
|
+
};
|
|
109
|
+
const importSpecifierText = (specifier) => {
|
|
110
|
+
const typePrefix = (() => {
|
|
111
|
+
if (specifier.importKind === 'type') {
|
|
112
|
+
return 'type ';
|
|
113
|
+
}
|
|
114
|
+
return '';
|
|
115
|
+
})();
|
|
116
|
+
const imported = importedName(specifier.imported);
|
|
117
|
+
const local = localName(specifier.local);
|
|
118
|
+
if (imported !== local) {
|
|
119
|
+
return `${typePrefix}${imported} as ${local}`;
|
|
120
|
+
}
|
|
121
|
+
return `${typePrefix}${local}`;
|
|
122
|
+
};
|
|
123
|
+
const sortedNamedImportText = (specifiers, isMultiline) => {
|
|
124
|
+
const sorted = [...specifiers].sort((left, right) => compareText(importSpecifierKey(left), importSpecifierKey(right)));
|
|
125
|
+
const texts = sorted.map(importSpecifierText);
|
|
126
|
+
if (isMultiline) {
|
|
127
|
+
return `{\n ${texts.join(',\n ')},\n}`;
|
|
128
|
+
}
|
|
129
|
+
return `{ ${texts.join(', ')} }`;
|
|
130
|
+
};
|
|
131
|
+
const typePrefixForImport = (statement) => {
|
|
132
|
+
if (statement.importKind === 'type') {
|
|
133
|
+
return 'type ';
|
|
134
|
+
}
|
|
135
|
+
return '';
|
|
136
|
+
};
|
|
137
|
+
const defaultPrefixForImport = (statement) => {
|
|
138
|
+
const specifier = defaultSpecifier(statement);
|
|
139
|
+
if (specifier) {
|
|
140
|
+
return `${localName(specifier.local)}, `;
|
|
141
|
+
}
|
|
142
|
+
return '';
|
|
143
|
+
};
|
|
144
|
+
const importWithNamespaceText = (statement, namespaceImport, moduleText) => `import ${typePrefixForImport(statement)}${defaultPrefixForImport(statement)}* as ${localName(namespaceImport.local)} from ${moduleText};`;
|
|
145
|
+
const importWithNamedText = (source, statement, specifiers, moduleText) => {
|
|
146
|
+
const originalText = sourceForNode(source, statement);
|
|
147
|
+
const isMultiline = originalText.includes('\n');
|
|
148
|
+
return [
|
|
149
|
+
`import ${typePrefixForImport(statement)}${defaultPrefixForImport(statement)}`,
|
|
150
|
+
`${sortedNamedImportText(specifiers, isMultiline)} from ${moduleText};`,
|
|
151
|
+
].join('');
|
|
152
|
+
};
|
|
153
|
+
const importText = (source, statement) => {
|
|
154
|
+
if (importNode(statement).specifiers.length === 0) {
|
|
155
|
+
return sourceForNode(source, statement);
|
|
156
|
+
}
|
|
157
|
+
const moduleText = sourceForNode(source, importNode(statement).source);
|
|
158
|
+
const namespaceImport = namespaceSpecifier(statement);
|
|
159
|
+
if (namespaceImport) {
|
|
160
|
+
return importWithNamespaceText(statement, namespaceImport, moduleText);
|
|
161
|
+
}
|
|
162
|
+
const specifiers = importSpecifiers(statement);
|
|
163
|
+
if (specifiers.length === 0) {
|
|
164
|
+
return `import ${typePrefixForImport(statement)}${localName(defaultSpecifier(statement)?.local)} from ${moduleText};`;
|
|
165
|
+
}
|
|
166
|
+
return importWithNamedText(source, statement, specifiers, moduleText);
|
|
167
|
+
};
|
|
168
|
+
const sortableImport = (source, statement) => ({
|
|
169
|
+
order: syntaxOrder[importSyntaxKind(statement)],
|
|
170
|
+
sortKey: importSortKey(statement),
|
|
171
|
+
text: importText(source, statement),
|
|
172
|
+
});
|
|
173
|
+
const compareSortableImports = (left, right) => {
|
|
174
|
+
if (left.order !== right.order) {
|
|
175
|
+
return left.order - right.order;
|
|
176
|
+
}
|
|
177
|
+
const keyOrder = compareText(left.sortKey, right.sortKey);
|
|
178
|
+
if (keyOrder !== 0) {
|
|
179
|
+
return keyOrder;
|
|
180
|
+
}
|
|
181
|
+
return compareText(left.text, right.text);
|
|
182
|
+
};
|
|
183
|
+
const sortedImportBlock = (source, imports) => imports
|
|
184
|
+
.map((statement) => sortableImport(source, statement))
|
|
185
|
+
.sort(compareSortableImports)
|
|
186
|
+
.map((entry) => entry.text)
|
|
187
|
+
.join('\n');
|
|
188
|
+
const collectLeadingImports = (statements) => {
|
|
189
|
+
const imports = [];
|
|
190
|
+
for (const statement of statements) {
|
|
191
|
+
if (!isImportDeclaration(statement)) {
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
if (importNode(statement).specifiers.length === 0) {
|
|
195
|
+
return [];
|
|
196
|
+
}
|
|
197
|
+
imports.push(statement);
|
|
198
|
+
}
|
|
199
|
+
return imports;
|
|
200
|
+
};
|
|
201
|
+
const leadingImportSpan = (imports) => {
|
|
202
|
+
const [firstImport] = imports;
|
|
203
|
+
const lastImport = imports.at(-1);
|
|
204
|
+
if (!firstImport || !lastImport) {
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
return { end: nodeEnd(lastImport), start: nodeStart(firstImport) };
|
|
208
|
+
};
|
|
209
|
+
const replacementForSortedImports = (source, imports, span) => {
|
|
210
|
+
const before = source.slice(span.start, span.end);
|
|
211
|
+
const after = sortedImportBlock(source, imports);
|
|
212
|
+
if (before === after) {
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
return { ...span, text: after };
|
|
216
|
+
};
|
|
217
|
+
const importSortReplacement = (source) => {
|
|
218
|
+
const program = codemodAPI(source).find(codemodAPI.Program).paths()[0]?.value;
|
|
219
|
+
if (!program) {
|
|
220
|
+
return undefined;
|
|
221
|
+
}
|
|
222
|
+
const imports = collectLeadingImports(program.body);
|
|
223
|
+
const span = leadingImportSpan(imports);
|
|
224
|
+
if (!span) {
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
return replacementForSortedImports(source, imports, { ...span, text: '' });
|
|
228
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* Internal helper exported for package-local composition.
|
|
231
|
+
*
|
|
232
|
+
* @internal
|
|
233
|
+
*/
|
|
234
|
+
export const sortImportDeclarations = (source) => applyReplacement(source, importSortReplacement(source));
|
|
235
|
+
//# sourceMappingURL=sort-imports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-imports.js","sourceRoot":"","sources":["../../src/codemods/sort-imports.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineConfig } from 'oxlint';
|
|
2
|
+
/**
|
|
3
|
+
* Options for composing The Thracian Oxlint config.
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export interface TheThracianOxlintOptions {
|
|
2
8
|
typeAware?: boolean;
|
|
3
9
|
effect?: boolean | TheThracianEffectOptions;
|
|
4
|
-
}
|
|
5
|
-
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Options for enabling and configuring Effect-specific lint rules.
|
|
13
|
+
*
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export interface TheThracianEffectOptions {
|
|
6
17
|
enabled?: boolean;
|
|
7
18
|
strict?: boolean | TheThracianEffectStrictOptions;
|
|
8
|
-
}
|
|
9
|
-
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Opt-in strict Effect path groups used by project-aware rules.
|
|
22
|
+
*
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
export interface TheThracianEffectStrictOptions {
|
|
10
26
|
adapterLayers?: readonly string[];
|
|
11
27
|
compositionRoots?: readonly string[];
|
|
12
28
|
configLayers?: readonly string[];
|
|
@@ -15,95 +31,13 @@ type TheThracianEffectStrictOptions = {
|
|
|
15
31
|
entrypoints?: readonly string[];
|
|
16
32
|
integrationTests?: readonly string[];
|
|
17
33
|
unitTests?: readonly string[];
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
jsPlugins: string[];
|
|
28
|
-
rules: {
|
|
29
|
-
'complexity/complexity': ["error", {
|
|
30
|
-
cyclomatic: number;
|
|
31
|
-
}];
|
|
32
|
-
'thethracian/no-commented-out-code': "error";
|
|
33
|
-
'thethracian/pascal-case-types': "error";
|
|
34
|
-
'thethracian/camel-case-identifiers': "error";
|
|
35
|
-
'thethracian/boolean-prefix': "error";
|
|
36
|
-
'thethracian/private-underscore': "error";
|
|
37
|
-
'thethracian/acronym-case': "error";
|
|
38
|
-
'thethracian/max-import-depth': "error";
|
|
39
|
-
'thethracian/max-line-length': "error";
|
|
40
|
-
'thethracian/require-file-doc': "error";
|
|
41
|
-
'thethracian/require-function-doc': "error";
|
|
42
|
-
'sort-imports': ["error", {
|
|
43
|
-
allowSeparatedGroups: boolean;
|
|
44
|
-
ignoreDeclarationSort: boolean;
|
|
45
|
-
ignoreMemberSort: boolean;
|
|
46
|
-
memberSyntaxSortOrder: string[];
|
|
47
|
-
}];
|
|
48
|
-
'import/max-dependencies': ["error", {
|
|
49
|
-
max: number;
|
|
50
|
-
}];
|
|
51
|
-
'no-console': "error";
|
|
52
|
-
'no-debugger': "error";
|
|
53
|
-
'no-empty': ["error", {
|
|
54
|
-
allowEmptyCatch: boolean;
|
|
55
|
-
}];
|
|
56
|
-
'no-eval': "error";
|
|
57
|
-
'no-new-func': "error";
|
|
58
|
-
'no-script-url': "error";
|
|
59
|
-
'preserve-caught-error': "error";
|
|
60
|
-
'typescript/only-throw-error': "error";
|
|
61
|
-
'typescript/no-non-null-assertion': "error";
|
|
62
|
-
'no-inline-comments': "error";
|
|
63
|
-
'no-param-reassign': ["error", {
|
|
64
|
-
props: boolean;
|
|
65
|
-
}];
|
|
66
|
-
'no-warning-comments': "error";
|
|
67
|
-
'prefer-const': ["error", {
|
|
68
|
-
destructuring: string;
|
|
69
|
-
}];
|
|
70
|
-
eqeqeq: "error";
|
|
71
|
-
'max-depth': ["error", {
|
|
72
|
-
max: number;
|
|
73
|
-
}];
|
|
74
|
-
'max-nested-callbacks': ["error", {
|
|
75
|
-
max: number;
|
|
76
|
-
}];
|
|
77
|
-
'max-params': ["error", {
|
|
78
|
-
max: number;
|
|
79
|
-
}];
|
|
80
|
-
'max-lines': ["error", {
|
|
81
|
-
max: number;
|
|
82
|
-
skipBlankLines: boolean;
|
|
83
|
-
skipComments: boolean;
|
|
84
|
-
}];
|
|
85
|
-
'max-lines-per-function': ["error", {
|
|
86
|
-
max: number;
|
|
87
|
-
skipBlankLines: boolean;
|
|
88
|
-
skipComments: boolean;
|
|
89
|
-
}];
|
|
90
|
-
'typescript/no-explicit-any': "error";
|
|
91
|
-
'typescript/explicit-function-return-type': "error";
|
|
92
|
-
'typescript/no-unsafe-call': "error";
|
|
93
|
-
'typescript/no-unsafe-member-access': "error";
|
|
94
|
-
'typescript/no-unsafe-assignment': "error" | "off";
|
|
95
|
-
'typescript/no-unsafe-return': "error" | "off";
|
|
96
|
-
'typescript/no-unsafe-argument': "error" | "off";
|
|
97
|
-
'typescript/no-floating-promises': "error" | "off";
|
|
98
|
-
'typescript/no-implied-eval': "error" | "off";
|
|
99
|
-
'typescript/no-misused-promises': "error" | "off";
|
|
100
|
-
'typescript/prefer-promise-reject-errors': "error" | "off";
|
|
101
|
-
'typescript/switch-exhaustiveness-check': "error" | "off";
|
|
102
|
-
};
|
|
103
|
-
options?: {
|
|
104
|
-
typeAware: boolean;
|
|
105
|
-
typeCheck: boolean;
|
|
106
|
-
} | undefined;
|
|
107
|
-
};
|
|
108
|
-
export type { TheThracianEffectOptions, TheThracianEffectStrictOptions, TheThracianOxlintOptions };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Builds The Thracian Oxlint config for TypeScript consumers.
|
|
37
|
+
*
|
|
38
|
+
* @param options - Feature flags for type-aware checks and Effect rule buckets.
|
|
39
|
+
* @returns Oxlint configuration with native rules and package-local custom rules.
|
|
40
|
+
* @public
|
|
41
|
+
*/
|
|
42
|
+
export default function theThracianOxlint(options?: TheThracianOxlintOptions): ReturnType<typeof defineConfig>;
|
|
109
43
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,8BAA8B,CAAC;CACnD;AAED;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AA8ND;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,OAAO,GAAE,wBAA6B,GACrC,UAAU,CAAC,OAAO,YAAY,CAAC,CAejC"}
|