@trebired/code-discipline 0.1.0 → 1.0.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 +14 -10
- package/README.md +141 -147
- package/dist/checks/fix-folderization.d.ts +17 -0
- package/dist/checks/fix-folderization.d.ts.map +1 -0
- package/dist/checks/fix-folderization.js +223 -0
- package/dist/checks/fix-folderization.js.map +1 -0
- package/dist/checks/index.d.ts +21 -2
- package/dist/checks/index.d.ts.map +1 -1
- package/dist/checks/index.js +104 -12
- package/dist/checks/index.js.map +1 -1
- package/dist/checks/rules/folderize-compound-files.d.ts.map +1 -1
- package/dist/checks/rules/folderize-compound-files.js +15 -33
- package/dist/checks/rules/folderize-compound-files.js.map +1 -1
- package/dist/checks/rules/folderize-plan.d.ts +16 -0
- package/dist/checks/rules/folderize-plan.d.ts.map +1 -0
- package/dist/checks/rules/folderize-plan.js +80 -0
- package/dist/checks/rules/folderize-plan.js.map +1 -0
- package/dist/checks/rules/max-file-lines.d.ts.map +1 -1
- package/dist/checks/rules/max-file-lines.js +2 -1
- package/dist/checks/rules/max-file-lines.js.map +1 -1
- package/dist/checks/types.d.ts +31 -20
- package/dist/checks/types.d.ts.map +1 -1
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +40 -16
- package/dist/cli/run-cli.js.map +1 -1
- package/dist/config/normalize-check-options.d.ts.map +1 -1
- package/dist/config/normalize-check-options.js +8 -1
- package/dist/config/normalize-check-options.js.map +1 -1
- package/dist/config/normalize-rule-options.d.ts +21 -7
- package/dist/config/normalize-rule-options.d.ts.map +1 -1
- package/dist/config/normalize-rule-options.js +43 -18
- package/dist/config/normalize-rule-options.js.map +1 -1
- package/dist/config/normalize-sync-imports-options.d.ts.map +1 -1
- package/dist/config/normalize-sync-imports-options.js +18 -6
- package/dist/config/normalize-sync-imports-options.js.map +1 -1
- package/dist/imports/aliases.d.ts +2 -1
- package/dist/imports/aliases.d.ts.map +1 -1
- package/dist/imports/aliases.js +18 -14
- package/dist/imports/aliases.js.map +1 -1
- package/dist/imports/check-sync-imports.d.ts +6 -0
- package/dist/imports/check-sync-imports.d.ts.map +1 -0
- package/dist/imports/check-sync-imports.js +55 -0
- package/dist/imports/check-sync-imports.js.map +1 -0
- package/dist/imports/module-specifiers.d.ts +20 -0
- package/dist/imports/module-specifiers.d.ts.map +1 -0
- package/dist/imports/module-specifiers.js +69 -0
- package/dist/imports/module-specifiers.js.map +1 -0
- package/dist/imports/rewrite.d.ts +3 -2
- package/dist/imports/rewrite.d.ts.map +1 -1
- package/dist/imports/rewrite.js +27 -90
- package/dist/imports/rewrite.js.map +1 -1
- package/dist/imports/sync-imports.d.ts.map +1 -1
- package/dist/imports/sync-imports.js +50 -5
- package/dist/imports/sync-imports.js.map +1 -1
- package/dist/imports/types.d.ts +18 -24
- package/dist/imports/types.d.ts.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/shared/constants.d.ts +4 -6
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +4 -6
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/errors.d.ts +8 -2
- package/dist/shared/errors.d.ts.map +1 -1
- package/dist/shared/errors.js +13 -1
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/logging-types.d.ts +7 -1
- package/dist/shared/logging-types.d.ts.map +1 -1
- package/dist/shared/logging.d.ts +2 -3
- package/dist/shared/logging.d.ts.map +1 -1
- package/dist/shared/logging.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
import { normalizeFolderizeCompoundFilesRule, normalizeMaxFileLinesRule } from "./normalize-rule-options.js";
|
|
1
|
+
import { normalizeFolderizeCompoundFilesRule, normalizeMaxFileLinesRule, normalizeSyncImportsRule } from "./normalize-rule-options.js";
|
|
2
2
|
import { normalizeSourceOptions } from "./normalize-source-options.js";
|
|
3
3
|
async function normalizeCheckCodeDisciplineOptions(options) {
|
|
4
4
|
const source = await normalizeSourceOptions(options);
|
|
5
5
|
return {
|
|
6
6
|
...source,
|
|
7
|
+
logging: {
|
|
8
|
+
enabled: options.logging?.enabled ?? Boolean(options.logging?.logger || options.logging?.adapter),
|
|
9
|
+
logger: options.logging?.logger,
|
|
10
|
+
adapter: options.logging?.adapter,
|
|
11
|
+
quiet: options.logging?.quiet ?? false,
|
|
12
|
+
},
|
|
7
13
|
rules: {
|
|
8
14
|
maxFileLines: normalizeMaxFileLinesRule(options.rules?.maxFileLines),
|
|
9
15
|
folderizeCompoundFiles: normalizeFolderizeCompoundFilesRule(options.rules?.folderizeCompoundFiles),
|
|
16
|
+
syncImports: normalizeSyncImportsRule(options.rules?.syncImports),
|
|
10
17
|
},
|
|
11
18
|
};
|
|
12
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-check-options.js","sourceRoot":"","sources":["../../src/config/normalize-check-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"normalize-check-options.js","sourceRoot":"","sources":["../../src/config/normalize-check-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvI,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,KAAK,UAAU,mCAAmC,CAChD,OAAmC;IAEnC,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAErD,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;YACjG,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO;YACjC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,KAAK;SACvC;QACD,KAAK,EAAE;YACL,YAAY,EAAE,yBAAyB,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC;YACpE,sBAAsB,EAAE,mCAAmC,CAAC,OAAO,CAAC,KAAK,EAAE,sBAAsB,CAAC;YAClG,WAAW,EAAE,wBAAwB,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;SAClE;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,mCAAmC,EAAE,CAAC"}
|
|
@@ -1,14 +1,28 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FolderizeCompoundFilesRuleOptions, MaxFileLinesRuleOptions } from "../checks/types.js";
|
|
2
|
+
import type { SyncImportsRuleOptions } from "../imports/types.js";
|
|
2
3
|
declare function normalizeMaxFileLinesRule(rule: MaxFileLinesRuleOptions | undefined): {
|
|
3
|
-
enabled: boolean;
|
|
4
4
|
max: number;
|
|
5
|
-
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
stop: boolean;
|
|
7
|
+
fix: boolean;
|
|
6
8
|
};
|
|
7
9
|
declare function normalizeFolderizeCompoundFilesRule(rule: FolderizeCompoundFilesRuleOptions | undefined): {
|
|
8
|
-
enabled: boolean;
|
|
9
10
|
separators: string[];
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
stop: boolean;
|
|
13
|
+
fix: boolean;
|
|
14
|
+
};
|
|
15
|
+
declare function normalizeSyncImportsRule(rule: SyncImportsRuleOptions | undefined): {
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
stop: boolean;
|
|
18
|
+
fix: boolean;
|
|
19
|
+
tsconfigPath: string;
|
|
20
|
+
alias: {
|
|
21
|
+
prefix?: string;
|
|
22
|
+
strategy?: "random" | "relative-path-hash" | "relative-path-slug" | import("../index.js").AliasStrategyFn;
|
|
23
|
+
randomLength?: number;
|
|
24
|
+
};
|
|
25
|
+
allowRelative: string[] | import("../index.js").AllowRelativeFn;
|
|
12
26
|
};
|
|
13
|
-
export { normalizeFolderizeCompoundFilesRule, normalizeMaxFileLinesRule };
|
|
27
|
+
export { normalizeFolderizeCompoundFilesRule, normalizeMaxFileLinesRule, normalizeSyncImportsRule };
|
|
14
28
|
//# sourceMappingURL=normalize-rule-options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-rule-options.d.ts","sourceRoot":"","sources":["../../src/config/normalize-rule-options.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"normalize-rule-options.d.ts","sourceRoot":"","sources":["../../src/config/normalize-rule-options.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,iCAAiC,EACjC,uBAAuB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAqBlE,iBAAS,yBAAyB,CAAC,IAAI,EAAE,uBAAuB,GAAG,SAAS;;;;;EAsB3E;AAED,iBAAS,mCAAmC,CAAC,IAAI,EAAE,iCAAiC,GAAG,SAAS;;;;;EAe/F;AAED,iBAAS,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS;;;;;;;;;;;EAmBzE;AAMD,OAAO,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1,15 +1,29 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DEFAULT_ALLOW_RELATIVE, DEFAULT_FOLDERIZE_COMPOUND_FILE_SEPARATORS, DEFAULT_RULE_FIX, DEFAULT_RULE_STOP, } from "../shared/constants.js";
|
|
2
2
|
import { InvalidCodeDisciplineConfigError } from "../shared/errors.js";
|
|
3
|
-
function
|
|
4
|
-
|
|
3
|
+
function assertRemovedKeys(ruleName, source, keys) {
|
|
4
|
+
for (const key of keys) {
|
|
5
|
+
if (key in source) {
|
|
6
|
+
throw new InvalidCodeDisciplineConfigError(`${ruleName}.${key} is no longer supported`, {
|
|
7
|
+
rule: ruleName,
|
|
8
|
+
key,
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function normalizeRuleControl(rule) {
|
|
14
|
+
return {
|
|
15
|
+
enabled: Boolean(rule?.enabled ?? false),
|
|
16
|
+
stop: Boolean(rule?.stop ?? DEFAULT_RULE_STOP),
|
|
17
|
+
fix: Boolean(rule?.fix ?? DEFAULT_RULE_FIX),
|
|
18
|
+
};
|
|
5
19
|
}
|
|
6
20
|
function normalizeMaxFileLinesRule(rule) {
|
|
7
|
-
const
|
|
8
|
-
|
|
21
|
+
const control = normalizeRuleControl(rule);
|
|
22
|
+
assertRemovedKeys("maxFileLines", (rule ?? {}), ["severity"]);
|
|
23
|
+
if (!control.enabled) {
|
|
9
24
|
return {
|
|
10
|
-
|
|
25
|
+
...control,
|
|
11
26
|
max: 0,
|
|
12
|
-
severity: normalizeSeverity(rule?.severity ?? DEFAULT_MAX_FILE_LINES_SEVERITY),
|
|
13
27
|
};
|
|
14
28
|
}
|
|
15
29
|
if (!Number.isFinite(rule?.max)) {
|
|
@@ -19,33 +33,44 @@ function normalizeMaxFileLinesRule(rule) {
|
|
|
19
33
|
});
|
|
20
34
|
}
|
|
21
35
|
return {
|
|
22
|
-
|
|
36
|
+
...control,
|
|
23
37
|
max: Math.max(1, Math.floor(rule.max)),
|
|
24
|
-
severity: normalizeSeverity(rule?.severity ?? DEFAULT_MAX_FILE_LINES_SEVERITY),
|
|
25
38
|
};
|
|
26
39
|
}
|
|
27
40
|
function normalizeFolderizeCompoundFilesRule(rule) {
|
|
41
|
+
const control = normalizeRuleControl(rule);
|
|
42
|
+
assertRemovedKeys("folderizeCompoundFiles", (rule ?? {}), ["severity", "suffixes"]);
|
|
28
43
|
const separators = uniqueStrings(rule?.separators ?? DEFAULT_FOLDERIZE_COMPOUND_FILE_SEPARATORS);
|
|
29
|
-
const suffixes = uniqueStrings(rule?.suffixes ?? DEFAULT_FOLDERIZE_COMPOUND_FILE_SUFFIXES);
|
|
30
44
|
if (separators.length === 0) {
|
|
31
45
|
throw new InvalidCodeDisciplineConfigError("folderizeCompoundFiles.separators must contain at least one separator", {
|
|
32
46
|
rule: "folderizeCompoundFiles",
|
|
33
47
|
});
|
|
34
48
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
49
|
+
return {
|
|
50
|
+
...control,
|
|
51
|
+
separators,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function normalizeSyncImportsRule(rule) {
|
|
55
|
+
const source = (rule ?? {});
|
|
56
|
+
assertRemovedKeys("syncImports", source, ["severity", "rewrite", "keepRelative"]);
|
|
57
|
+
if ("imports" in source) {
|
|
58
|
+
throw new InvalidCodeDisciplineConfigError("syncImports.imports is no longer supported; use allowRelative directly under syncImports", {
|
|
59
|
+
rule: "syncImports",
|
|
60
|
+
key: "imports",
|
|
38
61
|
});
|
|
39
62
|
}
|
|
40
63
|
return {
|
|
41
|
-
enabled: rule?.enabled ?? false,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
64
|
+
enabled: Boolean(rule?.enabled ?? false),
|
|
65
|
+
stop: Boolean(rule?.stop ?? DEFAULT_RULE_STOP),
|
|
66
|
+
fix: Boolean(rule?.fix ?? DEFAULT_RULE_FIX),
|
|
67
|
+
tsconfigPath: rule?.tsconfigPath,
|
|
68
|
+
alias: rule?.alias,
|
|
69
|
+
allowRelative: rule?.allowRelative ?? DEFAULT_ALLOW_RELATIVE,
|
|
45
70
|
};
|
|
46
71
|
}
|
|
47
72
|
function uniqueStrings(values) {
|
|
48
73
|
return Array.from(new Set(values));
|
|
49
74
|
}
|
|
50
|
-
export { normalizeFolderizeCompoundFilesRule, normalizeMaxFileLinesRule };
|
|
75
|
+
export { normalizeFolderizeCompoundFilesRule, normalizeMaxFileLinesRule, normalizeSyncImportsRule };
|
|
51
76
|
//# sourceMappingURL=normalize-rule-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-rule-options.js","sourceRoot":"","sources":["../../src/config/normalize-rule-options.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"normalize-rule-options.js","sourceRoot":"","sources":["../../src/config/normalize-rule-options.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,0CAA0C,EAC1C,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAQvE,SAAS,iBAAiB,CAAC,QAAgB,EAAE,MAA+B,EAAE,IAAc;IAC1F,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,gCAAgC,CAAC,GAAG,QAAQ,IAAI,GAAG,yBAAyB,EAAE;gBACtF,IAAI,EAAE,QAAQ;gBACd,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAyC;IACrE,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC;QACxC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,iBAAiB,CAAC;QAC9C,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,gBAAgB,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAyC;IAC1E,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAA2C,CAAC,CAAC;IAClF,iBAAiB,CAAC,cAAc,EAAE,CAAC,IAAI,IAAI,EAAE,CAA4B,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO;YACL,GAAG,OAAO;YACV,GAAG,EAAE,CAAC;SACP,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,gCAAgC,CAAC,mEAAmE,EAAE;YAC9G,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,IAAI,EAAE,GAAG;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,GAAG,OAAO;QACV,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAK,CAAC,GAAa,CAAC,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,SAAS,mCAAmC,CAAC,IAAmD;IAC9F,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAA2C,CAAC,CAAC;IAClF,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,IAAI,IAAI,EAAE,CAA4B,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/G,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,UAAU,IAAI,0CAA0C,CAAC,CAAC;IAEjG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,gCAAgC,CAAC,uEAAuE,EAAE;YAClH,IAAI,EAAE,wBAAwB;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,GAAG,OAAO;QACV,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAwC;IACxE,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;IACvD,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAElF,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,gCAAgC,CAAC,0FAA0F,EAAE;YACrI,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC;QACxC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,iBAAiB,CAAC;QAC9C,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,gBAAgB,CAAC;QAC3C,YAAY,EAAE,IAAI,EAAE,YAAY;QAChC,KAAK,EAAE,IAAI,EAAE,KAAK;QAClB,aAAa,EAAE,IAAI,EAAE,aAAa,IAAI,sBAAsB;KAC7D,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAgB;IACrC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-sync-imports-options.d.ts","sourceRoot":"","sources":["../../src/config/normalize-sync-imports-options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"normalize-sync-imports-options.d.ts","sourceRoot":"","sources":["../../src/config/normalize-sync-imports-options.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI5F,iBAAe,2BAA2B,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAyC7G;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import { DEFAULT_ALIAS_PREFIX, DEFAULT_ALIAS_RANDOM_LENGTH, DEFAULT_ALIAS_STRATEGY,
|
|
3
|
-
import { InvalidTsconfigPathError } from "../shared/errors.js";
|
|
2
|
+
import { DEFAULT_ALIAS_PREFIX, DEFAULT_ALIAS_RANDOM_LENGTH, DEFAULT_ALIAS_STRATEGY, DEFAULT_ALLOW_RELATIVE, DEFAULT_RULE_FIX, DEFAULT_RULE_STOP, } from "../shared/constants.js";
|
|
3
|
+
import { InvalidCodeDisciplineConfigError, InvalidTsconfigPathError } from "../shared/errors.js";
|
|
4
4
|
import { isDirectory } from "../shared/utils.js";
|
|
5
5
|
import { normalizeSourceOptions } from "./normalize-source-options.js";
|
|
6
6
|
async function normalizeSyncImportsOptions(options) {
|
|
7
|
+
if ("imports" in options) {
|
|
8
|
+
throw new InvalidCodeDisciplineConfigError("syncImports.imports is no longer supported; use allowRelative instead", {
|
|
9
|
+
key: "imports",
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
for (const key of ["rewrite", "keepRelative", "severity"]) {
|
|
13
|
+
if (key in options) {
|
|
14
|
+
throw new InvalidCodeDisciplineConfigError(`syncImports.${key} is no longer supported`, {
|
|
15
|
+
key,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
7
19
|
const source = await normalizeSourceOptions(options);
|
|
8
20
|
const tsconfigInput = options.tsconfigPath ?? path.join(source.projectRoot, "tsconfig.json");
|
|
9
21
|
const tsconfigPath = path.isAbsolute(tsconfigInput) ? path.resolve(tsconfigInput) : path.resolve(source.projectRoot, tsconfigInput);
|
|
@@ -13,15 +25,15 @@ async function normalizeSyncImportsOptions(options) {
|
|
|
13
25
|
return {
|
|
14
26
|
...source,
|
|
15
27
|
tsconfigPath,
|
|
28
|
+
enabled: options.enabled ?? true,
|
|
29
|
+
stop: options.stop ?? DEFAULT_RULE_STOP,
|
|
30
|
+
fix: options.fix ?? DEFAULT_RULE_FIX,
|
|
16
31
|
alias: {
|
|
17
32
|
prefix: options.alias?.prefix ?? DEFAULT_ALIAS_PREFIX,
|
|
18
33
|
strategy: options.alias?.strategy ?? DEFAULT_ALIAS_STRATEGY,
|
|
19
34
|
randomLength: Math.max(1, Math.floor(options.alias?.randomLength ?? DEFAULT_ALIAS_RANDOM_LENGTH)),
|
|
20
35
|
},
|
|
21
|
-
|
|
22
|
-
rewrite: options.imports?.rewrite ?? DEFAULT_IMPORTS_REWRITE,
|
|
23
|
-
keepRelative: options.imports?.keepRelative ?? DEFAULT_KEEP_RELATIVE,
|
|
24
|
-
},
|
|
36
|
+
allowRelative: options.allowRelative ?? DEFAULT_ALLOW_RELATIVE,
|
|
25
37
|
logging: {
|
|
26
38
|
enabled: options.logging?.enabled ?? Boolean(options.logging?.logger || options.logging?.adapter),
|
|
27
39
|
logger: options.logging?.logger,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-sync-imports-options.js","sourceRoot":"","sources":["../../src/config/normalize-sync-imports-options.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"normalize-sync-imports-options.js","sourceRoot":"","sources":["../../src/config/normalize-sync-imports-options.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gCAAgC,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,KAAK,UAAU,2BAA2B,CAAC,OAA2B;IACpE,IAAI,SAAS,IAAK,OAAmC,EAAE,CAAC;QACtD,MAAM,IAAI,gCAAgC,CAAC,uEAAuE,EAAE;YAClH,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,CAAU,EAAE,CAAC;QACnE,IAAI,GAAG,IAAK,OAAmC,EAAE,CAAC;YAChD,MAAM,IAAI,gCAAgC,CAAC,eAAe,GAAG,yBAAyB,EAAE;gBACtF,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC7F,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpI,IAAI,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,YAAY;QACZ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,iBAAiB;QACvC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,gBAAgB;QACpC,KAAK,EAAE;YACL,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,oBAAoB;YACrD,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,IAAI,sBAAsB;YAC3D,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,IAAI,2BAA2B,CAAC,CAAC;SAClG;QACD,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,sBAAsB;QAC9D,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;YACjG,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO;YACjC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,KAAK;SACvC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
|
|
@@ -5,5 +5,6 @@ declare function readTsconfig(options: NormalizedSyncImportsOptions, logger?: No
|
|
|
5
5
|
originalConfig: TsconfigJson;
|
|
6
6
|
}>;
|
|
7
7
|
declare function syncTsconfigAliases(options: NormalizedSyncImportsOptions, sourceFiles: ScannedSourceFile[], logger: NormalizedSyncImportsLogger): Promise<SyncAliasesResult>;
|
|
8
|
-
|
|
8
|
+
declare function planTsconfigAliases(options: NormalizedSyncImportsOptions, sourceFiles: ScannedSourceFile[], logger?: NormalizedSyncImportsLogger): Promise<SyncAliasesResult>;
|
|
9
|
+
export { planTsconfigAliases, readTsconfig, syncTsconfigAliases };
|
|
9
10
|
//# sourceMappingURL=aliases.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../../src/imports/aliases.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,4BAA4B,EAC5B,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAqE9E,iBAAe,YAAY,CACzB,OAAO,EAAE,4BAA4B,EACrC,MAAM,CAAC,EAAE,2BAA2B,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,cAAc,EAAE,YAAY,CAAA;CAAE,CAAC,CAuCjE;AAED,iBAAe,mBAAmB,CAChC,OAAO,EAAE,4BAA4B,EACrC,WAAW,EAAE,iBAAiB,EAAE,EAChC,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../../src/imports/aliases.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,4BAA4B,EAC5B,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAqE9E,iBAAe,YAAY,CACzB,OAAO,EAAE,4BAA4B,EACrC,MAAM,CAAC,EAAE,2BAA2B,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,cAAc,EAAE,YAAY,CAAA;CAAE,CAAC,CAuCjE;AAED,iBAAe,mBAAmB,CAChC,OAAO,EAAE,4BAA4B,EACrC,WAAW,EAAE,iBAAiB,EAAE,EAChC,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,iBAAiB,CAAC,CAiB5B;AAED,iBAAe,mBAAmB,CAChC,OAAO,EAAE,4BAA4B,EACrC,WAAW,EAAE,iBAAiB,EAAE,EAChC,MAAM,CAAC,EAAE,2BAA2B,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAqD5B;AAED,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
|
package/dist/imports/aliases.js
CHANGED
|
@@ -88,6 +88,23 @@ async function readTsconfig(options, logger) {
|
|
|
88
88
|
throw lastError;
|
|
89
89
|
}
|
|
90
90
|
async function syncTsconfigAliases(options, sourceFiles, logger) {
|
|
91
|
+
const result = await planTsconfigAliases(options, sourceFiles, logger);
|
|
92
|
+
if (result.aliasesChanged) {
|
|
93
|
+
await fs.writeFile(options.tsconfigPath, toStableJson(result.tsconfig));
|
|
94
|
+
logger.success("aliases-written", `aliases written count=${result.aliasesCount}`, {
|
|
95
|
+
tsconfigPath: options.tsconfigPath,
|
|
96
|
+
aliasesCount: result.aliasesCount,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
logger.info("aliases-unchanged", `aliases unchanged count=${result.aliasesCount}`, {
|
|
101
|
+
tsconfigPath: options.tsconfigPath,
|
|
102
|
+
aliasesCount: result.aliasesCount,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
async function planTsconfigAliases(options, sourceFiles, logger) {
|
|
91
108
|
const { config, originalConfig } = await readTsconfig(options, logger);
|
|
92
109
|
const sourceFilesByPath = new Map(sourceFiles.map((file) => [file.absolutePath, file]));
|
|
93
110
|
const compilerOptions = { ...(config.compilerOptions ?? {}) };
|
|
@@ -126,19 +143,6 @@ async function syncTsconfigAliases(options, sourceFiles, logger) {
|
|
|
126
143
|
compilerOptions: nextCompilerOptions,
|
|
127
144
|
};
|
|
128
145
|
const aliasesChanged = stableSerialize(originalConfig) !== stableSerialize(nextConfig);
|
|
129
|
-
if (aliasesChanged) {
|
|
130
|
-
await fs.writeFile(options.tsconfigPath, toStableJson(nextConfig));
|
|
131
|
-
logger.success("aliases-written", `aliases written count=${aliasRecords.length}`, {
|
|
132
|
-
tsconfigPath: options.tsconfigPath,
|
|
133
|
-
aliasesCount: aliasRecords.length,
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
logger.info("aliases-unchanged", `aliases unchanged count=${aliasRecords.length}`, {
|
|
138
|
-
tsconfigPath: options.tsconfigPath,
|
|
139
|
-
aliasesCount: aliasRecords.length,
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
146
|
return {
|
|
143
147
|
aliasesChanged,
|
|
144
148
|
aliasesCount: aliasRecords.length,
|
|
@@ -146,5 +150,5 @@ async function syncTsconfigAliases(options, sourceFiles, logger) {
|
|
|
146
150
|
tsconfig: nextConfig,
|
|
147
151
|
};
|
|
148
152
|
}
|
|
149
|
-
export { readTsconfig, syncTsconfigAliases };
|
|
153
|
+
export { planTsconfigAliases, readTsconfig, syncTsconfigAliases };
|
|
150
154
|
//# sourceMappingURL=aliases.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aliases.js","sourceRoot":"","sources":["../../src/imports/aliases.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"aliases.js","sourceRoot":"","sources":["../../src/imports/aliases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CodeDisciplineViolation } from "../checks/types.js";
|
|
2
|
+
import type { NormalizedSyncImportsLogger } from "../shared/logging-types.js";
|
|
3
|
+
import type { NormalizedSyncImportsOptions, ScannedSourceFile } from "./types.js";
|
|
4
|
+
declare function collectSyncImportViolations(sourceFiles: ScannedSourceFile[], options: NormalizedSyncImportsOptions, logger?: NormalizedSyncImportsLogger): Promise<CodeDisciplineViolation[]>;
|
|
5
|
+
export { collectSyncImportViolations };
|
|
6
|
+
//# sourceMappingURL=check-sync-imports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-sync-imports.d.ts","sourceRoot":"","sources":["../../src/imports/check-sync-imports.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAK9E,OAAO,KAAK,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElF,iBAAe,2BAA2B,CACxC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,4BAA4B,EACrC,MAAM,CAAC,EAAE,2BAA2B,GACnC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAkDpC;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { planTsconfigAliases } from "./aliases.js";
|
|
4
|
+
import { collectModuleSpecifiers } from "./module-specifiers.js";
|
|
5
|
+
import { resolveRelativeImport } from "./resolve.js";
|
|
6
|
+
import { isAllowedRelative } from "./rewrite.js";
|
|
7
|
+
async function collectSyncImportViolations(sourceFiles, options, logger) {
|
|
8
|
+
if (!options.enabled)
|
|
9
|
+
return [];
|
|
10
|
+
const aliasPlan = await planTsconfigAliases(options, sourceFiles, logger);
|
|
11
|
+
const aliasIdsByFilePath = new Map(aliasPlan.aliasRecords.map((record) => [record.absolutePath, record.id]));
|
|
12
|
+
const violations = [];
|
|
13
|
+
if (aliasPlan.aliasesChanged) {
|
|
14
|
+
violations.push({
|
|
15
|
+
rule: "sync-imports",
|
|
16
|
+
stop: options.stop,
|
|
17
|
+
fix: options.fix,
|
|
18
|
+
filePath: path.relative(options.projectRoot, options.tsconfigPath) || "tsconfig.json",
|
|
19
|
+
message: "tsconfig paths are out of sync with the current source tree",
|
|
20
|
+
details: {
|
|
21
|
+
aliasesCount: aliasPlan.aliasesCount,
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
for (const file of sourceFiles) {
|
|
26
|
+
const text = await fs.readFile(file.absolutePath, "utf8");
|
|
27
|
+
for (const occurrence of collectModuleSpecifiers(text, file.absolutePath)) {
|
|
28
|
+
if (!occurrence.specifier.startsWith("."))
|
|
29
|
+
continue;
|
|
30
|
+
const resolvedFile = await resolveRelativeImport(occurrence.specifier, file.absolutePath, options);
|
|
31
|
+
if (!resolvedFile)
|
|
32
|
+
continue;
|
|
33
|
+
if (isAllowedRelative(occurrence.specifier, file.absolutePath, resolvedFile, options))
|
|
34
|
+
continue;
|
|
35
|
+
const aliasId = aliasIdsByFilePath.get(resolvedFile);
|
|
36
|
+
if (!aliasId)
|
|
37
|
+
continue;
|
|
38
|
+
violations.push({
|
|
39
|
+
rule: "sync-imports",
|
|
40
|
+
stop: options.stop,
|
|
41
|
+
fix: options.fix,
|
|
42
|
+
filePath: file.relativeFromProjectRoot,
|
|
43
|
+
message: `relative import ${occurrence.specifier} should be rewritten to ${aliasId}`,
|
|
44
|
+
details: {
|
|
45
|
+
specifier: occurrence.specifier,
|
|
46
|
+
aliasId,
|
|
47
|
+
resolvedFile: path.relative(options.projectRoot, resolvedFile),
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return violations;
|
|
53
|
+
}
|
|
54
|
+
export { collectSyncImportViolations };
|
|
55
|
+
//# sourceMappingURL=check-sync-imports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-sync-imports.js","sourceRoot":"","sources":["../../src/imports/check-sync-imports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,KAAK,UAAU,2BAA2B,CACxC,WAAgC,EAChC,OAAqC,EACrC,MAAoC;IAEpC,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7G,MAAM,UAAU,GAA8B,EAAE,CAAC;IAEjD,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;QAC7B,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,eAAe;YACrF,OAAO,EAAE,6DAA6D;YACtE,OAAO,EAAE;gBACP,YAAY,EAAE,SAAS,CAAC,YAAY;aACrC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAE1D,KAAK,MAAM,UAAU,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1E,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEpD,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACnG,IAAI,CAAC,YAAY;gBAAE,SAAS;YAE5B,IAAI,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC;gBAAE,SAAS;YAEhG,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,QAAQ,EAAE,IAAI,CAAC,uBAAuB;gBACtC,OAAO,EAAE,mBAAmB,UAAU,CAAC,SAAS,2BAA2B,OAAO,EAAE;gBACpF,OAAO,EAAE;oBACP,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,OAAO;oBACP,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC;iBAC/D;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
type ModuleSpecifierOccurrence = {
|
|
3
|
+
specifier: string;
|
|
4
|
+
start: number;
|
|
5
|
+
end: number;
|
|
6
|
+
};
|
|
7
|
+
type TextReplacement = {
|
|
8
|
+
start: number;
|
|
9
|
+
end: number;
|
|
10
|
+
value: string;
|
|
11
|
+
};
|
|
12
|
+
declare function parseSource(text: string, filePath: string): ts.SourceFile;
|
|
13
|
+
declare function collectModuleSpecifiers(text: string, filePath: string): ModuleSpecifierOccurrence[];
|
|
14
|
+
declare function applyTextReplacements(text: string, replacements: TextReplacement[]): {
|
|
15
|
+
text: string;
|
|
16
|
+
count: number;
|
|
17
|
+
};
|
|
18
|
+
export { applyTextReplacements, collectModuleSpecifiers, parseSource };
|
|
19
|
+
export type { ModuleSpecifierOccurrence, TextReplacement };
|
|
20
|
+
//# sourceMappingURL=module-specifiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-specifiers.d.ts","sourceRoot":"","sources":["../../src/imports/module-specifiers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAC;AAK5B,KAAK,yBAAyB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAUF,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAYlE;AAED,iBAAS,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,yBAAyB,EAAE,CAoC5F;AAED,iBAAS,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgB7G;AAED,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,WAAW,EAAE,CAAC;AACvE,YAAY,EAAE,yBAAyB,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
import { ParseFailureError } from "../shared/errors.js";
|
|
4
|
+
import { formatDiagnostics } from "../shared/utils.js";
|
|
5
|
+
function resolveScriptKind(filePath) {
|
|
6
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
7
|
+
if (extension === ".tsx")
|
|
8
|
+
return ts.ScriptKind.TSX;
|
|
9
|
+
if (extension === ".jsx")
|
|
10
|
+
return ts.ScriptKind.JSX;
|
|
11
|
+
if (extension === ".js")
|
|
12
|
+
return ts.ScriptKind.JS;
|
|
13
|
+
return ts.ScriptKind.TS;
|
|
14
|
+
}
|
|
15
|
+
function parseSource(text, filePath) {
|
|
16
|
+
const sourceFile = ts.createSourceFile(filePath, text, ts.ScriptTarget.Latest, true, resolveScriptKind(filePath));
|
|
17
|
+
const diagnostics = (sourceFile.parseDiagnostics ?? []);
|
|
18
|
+
const errors = diagnostics.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error);
|
|
19
|
+
if (errors.length > 0) {
|
|
20
|
+
throw new ParseFailureError(filePath, formatDiagnostics(errors));
|
|
21
|
+
}
|
|
22
|
+
return sourceFile;
|
|
23
|
+
}
|
|
24
|
+
function collectModuleSpecifiers(text, filePath) {
|
|
25
|
+
const sourceFile = parseSource(text, filePath);
|
|
26
|
+
const occurrences = [];
|
|
27
|
+
function addLiteral(node) {
|
|
28
|
+
occurrences.push({
|
|
29
|
+
specifier: node.text,
|
|
30
|
+
start: node.getStart(sourceFile) + 1,
|
|
31
|
+
end: node.getEnd() - 1,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function visit(node) {
|
|
35
|
+
if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {
|
|
36
|
+
if (node.moduleSpecifier && ts.isStringLiteralLike(node.moduleSpecifier)) {
|
|
37
|
+
addLiteral(node.moduleSpecifier);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {
|
|
41
|
+
const [firstArg] = node.arguments;
|
|
42
|
+
if (firstArg && ts.isStringLiteralLike(firstArg)) {
|
|
43
|
+
addLiteral(firstArg);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (ts.isImportTypeNode(node) && ts.isLiteralTypeNode(node.argument) && ts.isStringLiteralLike(node.argument.literal)) {
|
|
47
|
+
addLiteral(node.argument.literal);
|
|
48
|
+
}
|
|
49
|
+
ts.forEachChild(node, visit);
|
|
50
|
+
}
|
|
51
|
+
visit(sourceFile);
|
|
52
|
+
return occurrences;
|
|
53
|
+
}
|
|
54
|
+
function applyTextReplacements(text, replacements) {
|
|
55
|
+
if (replacements.length === 0) {
|
|
56
|
+
return { text, count: 0 };
|
|
57
|
+
}
|
|
58
|
+
const sorted = [...replacements].sort((left, right) => right.start - left.start);
|
|
59
|
+
let nextText = text;
|
|
60
|
+
for (const replacement of sorted) {
|
|
61
|
+
nextText = `${nextText.slice(0, replacement.start)}${replacement.value}${nextText.slice(replacement.end)}`;
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
text: nextText,
|
|
65
|
+
count: replacements.length,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export { applyTextReplacements, collectModuleSpecifiers, parseSource };
|
|
69
|
+
//# sourceMappingURL=module-specifiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-specifiers.js","sourceRoot":"","sources":["../../src/imports/module-specifiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { AliasRecord, NormalizedSyncImportsOptions, RewriteResult, ScannedSourceFile } from "./types.js";
|
|
2
1
|
import type { NormalizedSyncImportsLogger } from "../shared/logging-types.js";
|
|
2
|
+
import type { AliasRecord, NormalizedSyncImportsOptions, RewriteResult, ScannedSourceFile } from "./types.js";
|
|
3
|
+
declare function isAllowedRelative(specifier: string, sourceFile: string, resolvedFile: string, options: NormalizedSyncImportsOptions): boolean;
|
|
3
4
|
declare function rewriteSourceImports(sourceFiles: ScannedSourceFile[], aliasRecords: AliasRecord[], options: NormalizedSyncImportsOptions, logger: NormalizedSyncImportsLogger): Promise<RewriteResult>;
|
|
4
|
-
export { rewriteSourceImports };
|
|
5
|
+
export { isAllowedRelative, rewriteSourceImports };
|
|
5
6
|
//# sourceMappingURL=rewrite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewrite.d.ts","sourceRoot":"","sources":["../../src/imports/rewrite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rewrite.d.ts","sourceRoot":"","sources":["../../src/imports/rewrite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,KAAK,EACV,WAAW,EAEX,4BAA4B,EAE5B,aAAa,EACb,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,iBAAS,iBAAiB,CACxB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAaT;AAuDD,iBAAe,oBAAoB,CACjC,WAAW,EAAE,iBAAiB,EAAE,EAChC,YAAY,EAAE,WAAW,EAAE,EAC3B,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,aAAa,CAAC,CAexB;AAED,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC"}
|