@trebired/code-discipline 0.1.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 +20 -0
- package/LICENSE +661 -0
- package/README.md +241 -0
- package/dist/checks/index.d.ts +4 -0
- package/dist/checks/index.d.ts.map +1 -0
- package/dist/checks/index.js +22 -0
- package/dist/checks/index.js.map +1 -0
- package/dist/checks/rules/folderize-compound-files.d.ts +5 -0
- package/dist/checks/rules/folderize-compound-files.d.ts.map +1 -0
- package/dist/checks/rules/folderize-compound-files.js +37 -0
- package/dist/checks/rules/folderize-compound-files.js.map +1 -0
- package/dist/checks/rules/max-file-lines.d.ts +5 -0
- package/dist/checks/rules/max-file-lines.d.ts.map +1 -0
- package/dist/checks/rules/max-file-lines.js +30 -0
- package/dist/checks/rules/max-file-lines.js.map +1 -0
- package/dist/checks/types.d.ts +64 -0
- package/dist/checks/types.d.ts.map +1 -0
- package/dist/checks/types.js +2 -0
- package/dist/checks/types.js.map +1 -0
- package/dist/cli/run-cli.d.ts +13 -0
- package/dist/cli/run-cli.d.ts.map +1 -0
- package/dist/cli/run-cli.js +104 -0
- package/dist/cli/run-cli.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +49 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/normalize-check-options.d.ts +4 -0
- package/dist/config/normalize-check-options.d.ts.map +1 -0
- package/dist/config/normalize-check-options.js +14 -0
- package/dist/config/normalize-check-options.js.map +1 -0
- package/dist/config/normalize-rule-options.d.ts +14 -0
- package/dist/config/normalize-rule-options.d.ts.map +1 -0
- package/dist/config/normalize-rule-options.js +51 -0
- package/dist/config/normalize-rule-options.js.map +1 -0
- package/dist/config/normalize-source-options.d.ts +16 -0
- package/dist/config/normalize-source-options.d.ts.map +1 -0
- package/dist/config/normalize-source-options.js +24 -0
- package/dist/config/normalize-source-options.js.map +1 -0
- package/dist/config/normalize-sync-imports-options.d.ts +4 -0
- package/dist/config/normalize-sync-imports-options.d.ts.map +1 -0
- package/dist/config/normalize-sync-imports-options.js +34 -0
- package/dist/config/normalize-sync-imports-options.js.map +1 -0
- package/dist/imports/aliases.d.ts +9 -0
- package/dist/imports/aliases.d.ts.map +1 -0
- package/dist/imports/aliases.js +150 -0
- package/dist/imports/aliases.js.map +1 -0
- package/dist/imports/resolve.d.ts +7 -0
- package/dist/imports/resolve.d.ts.map +1 -0
- package/dist/imports/resolve.js +49 -0
- package/dist/imports/resolve.js.map +1 -0
- package/dist/imports/rewrite.d.ts +5 -0
- package/dist/imports/rewrite.d.ts.map +1 -0
- package/dist/imports/rewrite.js +139 -0
- package/dist/imports/rewrite.js.map +1 -0
- package/dist/imports/scan.d.ts +4 -0
- package/dist/imports/scan.d.ts.map +1 -0
- package/dist/imports/scan.js +44 -0
- package/dist/imports/scan.js.map +1 -0
- package/dist/imports/strategies.d.ts +7 -0
- package/dist/imports/strategies.d.ts.map +1 -0
- package/dist/imports/strategies.js +55 -0
- package/dist/imports/strategies.js.map +1 -0
- package/dist/imports/sync-imports.d.ts +4 -0
- package/dist/imports/sync-imports.d.ts.map +1 -0
- package/dist/imports/sync-imports.js +41 -0
- package/dist/imports/sync-imports.js.map +1 -0
- package/dist/imports/types.d.ts +104 -0
- package/dist/imports/types.d.ts.map +1 -0
- package/dist/imports/types.js +2 -0
- package/dist/imports/types.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/constants.d.ts +18 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +18 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/errors.d.ts +34 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +64 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/logging-types.d.ts +18 -0
- package/dist/shared/logging-types.d.ts.map +1 -0
- package/dist/shared/logging-types.js +2 -0
- package/dist/shared/logging-types.js.map +1 -0
- package/dist/shared/logging.d.ts +5 -0
- package/dist/shared/logging.d.ts.map +1 -0
- package/dist/shared/logging.js +99 -0
- package/dist/shared/logging.js.map +1 -0
- package/dist/shared/utils.d.ts +24 -0
- package/dist/shared/utils.d.ts.map +1 -0
- package/dist/shared/utils.js +127 -0
- package/dist/shared/utils.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import ts from "typescript";
|
|
4
|
+
import { ParseFailureError, RewriteFailureError } from "../shared/errors.js";
|
|
5
|
+
import { resolveRelativeImport } from "./resolve.js";
|
|
6
|
+
import { formatDiagnostics } from "../shared/utils.js";
|
|
7
|
+
function resolveScriptKind(filePath) {
|
|
8
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
9
|
+
if (extension === ".tsx")
|
|
10
|
+
return ts.ScriptKind.TSX;
|
|
11
|
+
if (extension === ".jsx")
|
|
12
|
+
return ts.ScriptKind.JSX;
|
|
13
|
+
if (extension === ".js")
|
|
14
|
+
return ts.ScriptKind.JS;
|
|
15
|
+
return ts.ScriptKind.TS;
|
|
16
|
+
}
|
|
17
|
+
function parseSource(text, filePath) {
|
|
18
|
+
const sourceFile = ts.createSourceFile(filePath, text, ts.ScriptTarget.Latest, true, resolveScriptKind(filePath));
|
|
19
|
+
const diagnostics = (sourceFile.parseDiagnostics ?? []);
|
|
20
|
+
const errors = diagnostics.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error);
|
|
21
|
+
if (errors.length > 0) {
|
|
22
|
+
throw new ParseFailureError(filePath, formatDiagnostics(errors));
|
|
23
|
+
}
|
|
24
|
+
return sourceFile;
|
|
25
|
+
}
|
|
26
|
+
function shouldKeepRelative(specifier, sourceFile, resolvedFile, options) {
|
|
27
|
+
const policy = options.imports.keepRelative;
|
|
28
|
+
if (Array.isArray(policy)) {
|
|
29
|
+
return policy.some((entry) => specifier === entry || specifier.startsWith(entry));
|
|
30
|
+
}
|
|
31
|
+
return policy(specifier, {
|
|
32
|
+
sourceFile,
|
|
33
|
+
resolvedFile,
|
|
34
|
+
projectRoot: options.projectRoot,
|
|
35
|
+
sourceRoot: options.sourceRoot,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function collectReplacements(sourceFile, sourcePath, options, aliasIdsByFilePath, logger) {
|
|
39
|
+
const replacements = [];
|
|
40
|
+
function queueLiteralRewrite(node) {
|
|
41
|
+
const specifier = node.text;
|
|
42
|
+
replacements.push((async () => {
|
|
43
|
+
if (!specifier.startsWith("."))
|
|
44
|
+
return null;
|
|
45
|
+
const resolvedFile = await resolveRelativeImport(specifier, sourcePath, options);
|
|
46
|
+
if (!resolvedFile) {
|
|
47
|
+
logger.debug("rewrite-skipped-unresolved", `skipped unresolved import ${specifier}`, {
|
|
48
|
+
sourceFile: sourcePath,
|
|
49
|
+
specifier,
|
|
50
|
+
});
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
if (shouldKeepRelative(specifier, sourcePath, resolvedFile, options)) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const aliasId = aliasIdsByFilePath.get(resolvedFile);
|
|
57
|
+
if (!aliasId)
|
|
58
|
+
return null;
|
|
59
|
+
return {
|
|
60
|
+
start: node.getStart(sourceFile) + 1,
|
|
61
|
+
end: node.getEnd() - 1,
|
|
62
|
+
value: aliasId,
|
|
63
|
+
};
|
|
64
|
+
})());
|
|
65
|
+
}
|
|
66
|
+
function visit(node) {
|
|
67
|
+
if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {
|
|
68
|
+
if (node.moduleSpecifier && ts.isStringLiteralLike(node.moduleSpecifier)) {
|
|
69
|
+
queueLiteralRewrite(node.moduleSpecifier);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {
|
|
73
|
+
const [firstArg] = node.arguments;
|
|
74
|
+
if (firstArg && ts.isStringLiteralLike(firstArg)) {
|
|
75
|
+
queueLiteralRewrite(firstArg);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (ts.isImportTypeNode(node) && ts.isLiteralTypeNode(node.argument) && ts.isStringLiteralLike(node.argument.literal)) {
|
|
79
|
+
queueLiteralRewrite(node.argument.literal);
|
|
80
|
+
}
|
|
81
|
+
ts.forEachChild(node, visit);
|
|
82
|
+
}
|
|
83
|
+
visit(sourceFile);
|
|
84
|
+
return Promise.all(replacements).then((rows) => rows.filter(Boolean));
|
|
85
|
+
}
|
|
86
|
+
function applyReplacements(text, replacements) {
|
|
87
|
+
if (replacements.length === 0)
|
|
88
|
+
return { text, rewrittenImports: 0 };
|
|
89
|
+
const sorted = [...replacements].sort((left, right) => right.start - left.start);
|
|
90
|
+
let nextText = text;
|
|
91
|
+
for (const replacement of sorted) {
|
|
92
|
+
nextText = `${nextText.slice(0, replacement.start)}${replacement.value}${nextText.slice(replacement.end)}`;
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
text: nextText,
|
|
96
|
+
rewrittenImports: replacements.length,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
async function rewriteSourceFile(file, options, aliasIdsByFilePath, logger) {
|
|
100
|
+
try {
|
|
101
|
+
const text = await fs.readFile(file.absolutePath, "utf8");
|
|
102
|
+
const sourceFile = parseSource(text, file.absolutePath);
|
|
103
|
+
const replacements = await collectReplacements(sourceFile, file.absolutePath, options, aliasIdsByFilePath, logger);
|
|
104
|
+
const applied = applyReplacements(text, replacements);
|
|
105
|
+
if (applied.rewrittenImports === 0) {
|
|
106
|
+
return {
|
|
107
|
+
rewritten: false,
|
|
108
|
+
rewrittenImports: 0,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
await fs.writeFile(file.absolutePath, applied.text);
|
|
112
|
+
return {
|
|
113
|
+
rewritten: true,
|
|
114
|
+
rewrittenImports: applied.rewrittenImports,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
if (error instanceof ParseFailureError)
|
|
119
|
+
throw error;
|
|
120
|
+
throw new RewriteFailureError(file.absolutePath, error);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function rewriteSourceImports(sourceFiles, aliasRecords, options, logger) {
|
|
124
|
+
const aliasIdsByFilePath = new Map(aliasRecords.map((record) => [record.absolutePath, record.id]));
|
|
125
|
+
let rewrittenFiles = 0;
|
|
126
|
+
let rewrittenImports = 0;
|
|
127
|
+
for (const file of sourceFiles) {
|
|
128
|
+
const result = await rewriteSourceFile(file, options, aliasIdsByFilePath, logger);
|
|
129
|
+
if (result.rewritten)
|
|
130
|
+
rewrittenFiles += 1;
|
|
131
|
+
rewrittenImports += result.rewrittenImports;
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
rewrittenFiles,
|
|
135
|
+
rewrittenImports,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export { rewriteSourceImports };
|
|
139
|
+
//# sourceMappingURL=rewrite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewrite.js","sourceRoot":"","sources":["../../src/imports/rewrite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/imports/scan.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA8CvE,iBAAe,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAIvF;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { normalizeRelativePath, toPosixPath } from "../shared/utils.js";
|
|
4
|
+
function shouldExcludeDirectory(relativeDir, directoryName, excludeDirs) {
|
|
5
|
+
const normalizedRelativeDir = normalizeRelativePath(relativeDir);
|
|
6
|
+
return excludeDirs.some((entry) => {
|
|
7
|
+
const normalizedEntry = normalizeRelativePath(entry);
|
|
8
|
+
return directoryName === normalizedEntry
|
|
9
|
+
|| normalizedRelativeDir === normalizedEntry
|
|
10
|
+
|| normalizedRelativeDir.startsWith(`${normalizedEntry}/`);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
async function walkDirectory(directoryPath, relativeDir, options, rows) {
|
|
14
|
+
const entries = await fs.readdir(directoryPath, { withFileTypes: true });
|
|
15
|
+
const sortedEntries = [...entries].sort((left, right) => left.name.localeCompare(right.name));
|
|
16
|
+
for (const entry of sortedEntries) {
|
|
17
|
+
const absolutePath = path.join(directoryPath, entry.name);
|
|
18
|
+
const relativePath = normalizeRelativePath(path.join(relativeDir, entry.name));
|
|
19
|
+
if (entry.isDirectory()) {
|
|
20
|
+
if (shouldExcludeDirectory(relativePath, entry.name, options.excludeDirs))
|
|
21
|
+
continue;
|
|
22
|
+
await walkDirectory(absolutePath, relativePath, options, rows);
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (!entry.isFile())
|
|
26
|
+
continue;
|
|
27
|
+
const extension = path.extname(entry.name).toLowerCase();
|
|
28
|
+
if (!options.sourceExtensions.includes(extension))
|
|
29
|
+
continue;
|
|
30
|
+
rows.push({
|
|
31
|
+
absolutePath,
|
|
32
|
+
relativeFromProjectRoot: toPosixPath(path.relative(options.projectRoot, absolutePath)),
|
|
33
|
+
relativeFromSourceRoot: toPosixPath(relativePath),
|
|
34
|
+
extension,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async function scanSourceFiles(options) {
|
|
39
|
+
const rows = [];
|
|
40
|
+
await walkDirectory(options.sourceRoot, "", options, rows);
|
|
41
|
+
return rows.sort((left, right) => left.relativeFromProjectRoot.localeCompare(right.relativeFromProjectRoot));
|
|
42
|
+
}
|
|
43
|
+
export { scanSourceFiles };
|
|
44
|
+
//# sourceMappingURL=scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/imports/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExE,SAAS,sBAAsB,CAAC,WAAmB,EAAE,aAAqB,EAAE,WAAqB;IAC/F,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAChC,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACrD,OAAO,aAAa,KAAK,eAAe;eACnC,qBAAqB,KAAK,eAAe;eACzC,qBAAqB,CAAC,UAAU,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,aAAqB,EACrB,WAAmB,EACnB,OAA0B,EAC1B,IAAyB;IAEzB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9F,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/E,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC;gBAAE,SAAS;YACpF,MAAM,aAAa,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAS;QAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,SAAS;QAE5D,IAAI,CAAC,IAAI,CAAC;YACR,YAAY;YACZ,uBAAuB,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACtF,sBAAsB,EAAE,WAAW,CAAC,YAAY,CAAC;YACjD,SAAS;SACV,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAA0B;IACvD,MAAM,IAAI,GAAwB,EAAE,CAAC;IACrC,MAAM,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAC/G,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AliasStrategyInput, NormalizedSyncImportsOptions, ScannedSourceFile } from "./types.js";
|
|
2
|
+
declare function createRandomAlias(input: AliasStrategyInput, length?: number): string;
|
|
3
|
+
declare function createRelativePathHashAlias(input: AliasStrategyInput): string;
|
|
4
|
+
declare function createRelativePathSlugAlias(input: AliasStrategyInput): string;
|
|
5
|
+
declare function generateAliasId(file: ScannedSourceFile, options: NormalizedSyncImportsOptions, existingIds: string[]): string;
|
|
6
|
+
export { createRandomAlias, createRelativePathHashAlias, createRelativePathSlugAlias, generateAliasId, };
|
|
7
|
+
//# sourceMappingURL=strategies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategies.d.ts","sourceRoot":"","sources":["../../src/imports/strategies.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAmB,kBAAkB,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAavH,iBAAS,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAA8B,GAAG,MAAM,CAElG;AAED,iBAAS,2BAA2B,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAEtE;AAED,iBAAS,2BAA2B,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAEtE;AAQD,iBAAS,eAAe,CACtB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,4BAA4B,EACrC,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CA+BR;AAED,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,EAC3B,eAAe,GAChB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { DEFAULT_ALIAS_RANDOM_LENGTH, HASH_ALIAS_LENGTH, } from "../shared/constants.js";
|
|
2
|
+
import { AliasCollisionError, InvalidAliasError } from "../shared/errors.js";
|
|
3
|
+
import { createHashToken, createRandomToken, createSlugToken, isAliasIdValid, stripKnownExtension } from "../shared/utils.js";
|
|
4
|
+
function buildStrategyInput(file, existingIds, prefix, sourceExtensions) {
|
|
5
|
+
return {
|
|
6
|
+
absolutePath: file.absolutePath,
|
|
7
|
+
relativeFromProjectRoot: file.relativeFromProjectRoot,
|
|
8
|
+
relativeFromSourceRoot: stripKnownExtension(file.relativeFromSourceRoot, sourceExtensions),
|
|
9
|
+
existingIds: [...existingIds],
|
|
10
|
+
prefix,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function createRandomAlias(input, length = DEFAULT_ALIAS_RANDOM_LENGTH) {
|
|
14
|
+
return `${input.prefix}${createRandomToken(length)}`;
|
|
15
|
+
}
|
|
16
|
+
function createRelativePathHashAlias(input) {
|
|
17
|
+
return `${input.prefix}${createHashToken(input.relativeFromSourceRoot, HASH_ALIAS_LENGTH)}`;
|
|
18
|
+
}
|
|
19
|
+
function createRelativePathSlugAlias(input) {
|
|
20
|
+
return `${input.prefix}${createSlugToken(input.relativeFromSourceRoot)}`;
|
|
21
|
+
}
|
|
22
|
+
function validateAliasId(aliasId, file) {
|
|
23
|
+
if (!isAliasIdValid(aliasId)) {
|
|
24
|
+
throw new InvalidAliasError(aliasId, { filePath: file.absolutePath });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function generateAliasId(file, options, existingIds) {
|
|
28
|
+
const input = buildStrategyInput(file, existingIds, options.alias.prefix, options.sourceExtensions);
|
|
29
|
+
const strategy = options.alias.strategy;
|
|
30
|
+
const isCustomStrategy = typeof strategy === "function";
|
|
31
|
+
if (strategy === "random") {
|
|
32
|
+
for (let attempt = 0; attempt < 64; attempt += 1) {
|
|
33
|
+
const aliasId = createRandomAlias(input, options.alias.randomLength);
|
|
34
|
+
validateAliasId(aliasId, file);
|
|
35
|
+
if (!existingIds.includes(aliasId))
|
|
36
|
+
return aliasId;
|
|
37
|
+
}
|
|
38
|
+
throw new AliasCollisionError(`${options.alias.prefix}<random>`, { filePath: file.absolutePath });
|
|
39
|
+
}
|
|
40
|
+
const aliasId = strategy === "relative-path-hash"
|
|
41
|
+
? createRelativePathHashAlias(input)
|
|
42
|
+
: strategy === "relative-path-slug"
|
|
43
|
+
? createRelativePathSlugAlias(input)
|
|
44
|
+
: strategy(input);
|
|
45
|
+
validateAliasId(aliasId, file);
|
|
46
|
+
if (existingIds.includes(aliasId)) {
|
|
47
|
+
throw new AliasCollisionError(aliasId, {
|
|
48
|
+
filePath: file.absolutePath,
|
|
49
|
+
strategy: isCustomStrategy ? "custom" : strategy,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return aliasId;
|
|
53
|
+
}
|
|
54
|
+
export { createRandomAlias, createRelativePathHashAlias, createRelativePathSlugAlias, generateAliasId, };
|
|
55
|
+
//# sourceMappingURL=strategies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategies.js","sourceRoot":"","sources":["../../src/imports/strategies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-imports.d.ts","sourceRoot":"","sources":["../../src/imports/sync-imports.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAExE,iBAAe,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwClF;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { normalizeSyncImportsOptions } from "../config/normalize-sync-imports-options.js";
|
|
2
|
+
import { resolveLogger } from "../shared/logging.js";
|
|
3
|
+
import { rewriteSourceImports } from "./rewrite.js";
|
|
4
|
+
import { scanSourceFiles } from "./scan.js";
|
|
5
|
+
import { syncTsconfigAliases } from "./aliases.js";
|
|
6
|
+
async function syncImports(options) {
|
|
7
|
+
const normalized = await normalizeSyncImportsOptions(options);
|
|
8
|
+
const logger = resolveLogger(normalized.logging);
|
|
9
|
+
logger.info("sync-started", "sync started", {
|
|
10
|
+
projectRoot: normalized.projectRoot,
|
|
11
|
+
sourceRoot: normalized.sourceRoot,
|
|
12
|
+
tsconfigPath: normalized.tsconfigPath,
|
|
13
|
+
});
|
|
14
|
+
try {
|
|
15
|
+
const sourceFiles = await scanSourceFiles(normalized);
|
|
16
|
+
const aliasState = await syncTsconfigAliases(normalized, sourceFiles, logger);
|
|
17
|
+
const rewriteState = normalized.imports.rewrite
|
|
18
|
+
? await rewriteSourceImports(sourceFiles, aliasState.aliasRecords, normalized, logger)
|
|
19
|
+
: { rewrittenFiles: 0, rewrittenImports: 0 };
|
|
20
|
+
logger.success("sync-finished", `rewritten files=${rewriteState.rewrittenFiles} imports=${rewriteState.rewrittenImports}`, {
|
|
21
|
+
aliasesChanged: aliasState.aliasesChanged,
|
|
22
|
+
aliasesCount: aliasState.aliasesCount,
|
|
23
|
+
rewrittenFiles: rewriteState.rewrittenFiles,
|
|
24
|
+
rewrittenImports: rewriteState.rewrittenImports,
|
|
25
|
+
});
|
|
26
|
+
return {
|
|
27
|
+
aliases_changed: aliasState.aliasesChanged,
|
|
28
|
+
aliases_count: aliasState.aliasesCount,
|
|
29
|
+
rewritten_files: rewriteState.rewrittenFiles,
|
|
30
|
+
rewritten_imports: rewriteState.rewrittenImports,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
logger.error("sync-failed", error instanceof Error ? error.message : "sync failed", {
|
|
35
|
+
cause: error instanceof Error ? error.name : typeof error,
|
|
36
|
+
});
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export { syncImports };
|
|
41
|
+
//# sourceMappingURL=sync-imports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-imports.js","sourceRoot":"","sources":["../../src/imports/sync-imports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,KAAK,UAAU,WAAW,CAAC,OAA2B;IACpD,MAAM,UAAU,GAAG,MAAM,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE;QAC1C,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,YAAY,EAAE,UAAU,CAAC,YAAY;KACtC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO;YAC7C,CAAC,CAAC,MAAM,oBAAoB,CAAC,WAAW,EAAE,UAAU,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC;YACtF,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;QAE/C,MAAM,CAAC,OAAO,CACZ,eAAe,EACf,mBAAmB,YAAY,CAAC,cAAc,YAAY,YAAY,CAAC,gBAAgB,EAAE,EACzF;YACE,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,cAAc,EAAE,YAAY,CAAC,cAAc;YAC3C,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;SAChD,CACF,CAAC;QAEF,OAAO;YACL,eAAe,EAAE,UAAU,CAAC,cAAc;YAC1C,aAAa,EAAE,UAAU,CAAC,YAAY;YACtC,eAAe,EAAE,YAAY,CAAC,cAAc;YAC5C,iBAAiB,EAAE,YAAY,CAAC,gBAAgB;SACjD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE;YAClF,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK;SAC1D,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { LogAdapterFn } from "../shared/logging-types.js";
|
|
2
|
+
type AliasStrategyInput = {
|
|
3
|
+
absolutePath: string;
|
|
4
|
+
relativeFromProjectRoot: string;
|
|
5
|
+
relativeFromSourceRoot: string;
|
|
6
|
+
existingIds: string[];
|
|
7
|
+
prefix: string;
|
|
8
|
+
};
|
|
9
|
+
type AliasStrategyFn = (input: AliasStrategyInput) => string;
|
|
10
|
+
type KeepRelativeContext = {
|
|
11
|
+
sourceFile: string;
|
|
12
|
+
resolvedFile: string;
|
|
13
|
+
projectRoot: string;
|
|
14
|
+
sourceRoot: string;
|
|
15
|
+
};
|
|
16
|
+
type KeepRelativeFn = (specifier: string, context: KeepRelativeContext) => boolean;
|
|
17
|
+
type SyncImportsOptions = {
|
|
18
|
+
projectRoot: string;
|
|
19
|
+
sourceRoot?: string;
|
|
20
|
+
tsconfigPath?: string;
|
|
21
|
+
sourceExtensions?: string[];
|
|
22
|
+
excludeDirs?: string[];
|
|
23
|
+
alias?: {
|
|
24
|
+
prefix?: string;
|
|
25
|
+
strategy?: "random" | "relative-path-hash" | "relative-path-slug" | AliasStrategyFn;
|
|
26
|
+
randomLength?: number;
|
|
27
|
+
};
|
|
28
|
+
imports?: {
|
|
29
|
+
rewrite?: boolean;
|
|
30
|
+
keepRelative?: string[] | KeepRelativeFn;
|
|
31
|
+
};
|
|
32
|
+
logging?: {
|
|
33
|
+
enabled?: boolean;
|
|
34
|
+
logger?: unknown;
|
|
35
|
+
adapter?: "trebired" | "generic" | "console" | LogAdapterFn;
|
|
36
|
+
quiet?: boolean;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
type SyncImportsResult = {
|
|
40
|
+
aliases_changed: boolean;
|
|
41
|
+
aliases_count: number;
|
|
42
|
+
rewritten_files: number;
|
|
43
|
+
rewritten_imports: number;
|
|
44
|
+
};
|
|
45
|
+
type SourceScanOptions = {
|
|
46
|
+
projectRoot: string;
|
|
47
|
+
sourceRoot: string;
|
|
48
|
+
sourceExtensions: string[];
|
|
49
|
+
excludeDirs: string[];
|
|
50
|
+
};
|
|
51
|
+
type NormalizedSyncImportsOptions = SourceScanOptions & {
|
|
52
|
+
sourceRootRelative: string;
|
|
53
|
+
tsconfigPath: string;
|
|
54
|
+
alias: {
|
|
55
|
+
prefix: string;
|
|
56
|
+
strategy: "random" | "relative-path-hash" | "relative-path-slug" | AliasStrategyFn;
|
|
57
|
+
randomLength: number;
|
|
58
|
+
};
|
|
59
|
+
imports: {
|
|
60
|
+
rewrite: boolean;
|
|
61
|
+
keepRelative: string[] | KeepRelativeFn;
|
|
62
|
+
};
|
|
63
|
+
logging: {
|
|
64
|
+
enabled: boolean;
|
|
65
|
+
logger?: unknown;
|
|
66
|
+
adapter?: "trebired" | "generic" | "console" | LogAdapterFn;
|
|
67
|
+
quiet: boolean;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
type ScannedSourceFile = {
|
|
71
|
+
absolutePath: string;
|
|
72
|
+
relativeFromProjectRoot: string;
|
|
73
|
+
relativeFromSourceRoot: string;
|
|
74
|
+
extension: string;
|
|
75
|
+
};
|
|
76
|
+
type TsconfigJson = {
|
|
77
|
+
compilerOptions?: {
|
|
78
|
+
paths?: Record<string, string[]>;
|
|
79
|
+
baseUrl?: string;
|
|
80
|
+
[key: string]: unknown;
|
|
81
|
+
};
|
|
82
|
+
[key: string]: unknown;
|
|
83
|
+
};
|
|
84
|
+
type AliasRecord = {
|
|
85
|
+
id: string;
|
|
86
|
+
absolutePath: string;
|
|
87
|
+
relativeFromProjectRoot: string;
|
|
88
|
+
};
|
|
89
|
+
type SyncAliasesResult = {
|
|
90
|
+
aliasesChanged: boolean;
|
|
91
|
+
aliasesCount: number;
|
|
92
|
+
aliasRecords: AliasRecord[];
|
|
93
|
+
tsconfig: TsconfigJson;
|
|
94
|
+
};
|
|
95
|
+
type RewriteFileResult = {
|
|
96
|
+
rewritten: boolean;
|
|
97
|
+
rewrittenImports: number;
|
|
98
|
+
};
|
|
99
|
+
type RewriteResult = {
|
|
100
|
+
rewrittenFiles: number;
|
|
101
|
+
rewrittenImports: number;
|
|
102
|
+
};
|
|
103
|
+
export type { AliasRecord, AliasStrategyFn, AliasStrategyInput, KeepRelativeContext, KeepRelativeFn, NormalizedSyncImportsOptions, RewriteFileResult, RewriteResult, ScannedSourceFile, SourceScanOptions, SyncAliasesResult, SyncImportsOptions, SyncImportsResult, TsconfigJson, };
|
|
104
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/imports/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/imports/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { DEFAULT_ALIAS_PREFIX, DEFAULT_ALIAS_RANDOM_LENGTH, DEFAULT_ALIAS_STRATEGY, DEFAULT_FOLDERIZE_COMPOUND_FILES_SEVERITY, DEFAULT_FOLDERIZE_COMPOUND_FILE_SEPARATORS, DEFAULT_FOLDERIZE_COMPOUND_FILE_SUFFIXES, DEFAULT_EXCLUDE_DIRS, DEFAULT_IMPORTS_REWRITE, DEFAULT_KEEP_RELATIVE, DEFAULT_MAX_FILE_LINES_SEVERITY, DEFAULT_SOURCE_EXTENSIONS, DEFAULT_SOURCE_ROOT, } from "./shared/constants.js";
|
|
2
|
+
export { checkCodeDiscipline } from "./checks/index.js";
|
|
3
|
+
export { defineCodeDisciplineConfig, loadCodeDisciplineConfig } from "./config/index.js";
|
|
4
|
+
export { normalizeSyncImportsOptions } from "./config/normalize-sync-imports-options.js";
|
|
5
|
+
export { syncTsconfigAliases } from "./imports/aliases.js";
|
|
6
|
+
export { resolveRelativeImport } from "./imports/resolve.js";
|
|
7
|
+
export { rewriteSourceImports } from "./imports/rewrite.js";
|
|
8
|
+
export { scanSourceFiles } from "./imports/scan.js";
|
|
9
|
+
export { createRandomAlias, createRelativePathHashAlias, createRelativePathSlugAlias } from "./imports/strategies.js";
|
|
10
|
+
export { syncImports } from "./imports/sync-imports.js";
|
|
11
|
+
export { resolveLogger } from "./shared/logging.js";
|
|
12
|
+
export { AliasCollisionError, InvalidCodeDisciplineConfigError, InvalidAliasError, InvalidProjectRootError, InvalidSourceRootError, InvalidTsconfigPathError, ParseFailureError, RewriteFailureError, SyncImportsError, isSyncImportsError, } from "./shared/errors.js";
|
|
13
|
+
export type { LogAdapterFn, NormalizedSyncImportsLogger, SyncImportsLogEvent, SyncImportsLogLevel, } from "./shared/logging-types.js";
|
|
14
|
+
export type { AliasRecord, AliasStrategyFn, AliasStrategyInput, KeepRelativeContext, KeepRelativeFn, NormalizedSyncImportsOptions, RewriteFileResult, RewriteResult, ScannedSourceFile, SourceScanOptions, SyncAliasesResult, SyncImportsOptions, SyncImportsResult, TsconfigJson, } from "./imports/types.js";
|
|
15
|
+
export type { CheckCodeDisciplineOptions, CheckCodeDisciplineResult, CodeDisciplineConfig, CodeDisciplineRuleName, CodeDisciplineRuleSeverity, CodeDisciplineRules, CodeDisciplineViolation, FolderizeCompoundFilesRuleOptions, MaxFileLinesRuleOptions, NormalizedCheckCodeDisciplineOptions, NormalizedFolderizeCompoundFilesRule, NormalizedMaxFileLinesRule, SyncImportsRuleOptions, } from "./checks/types.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,yCAAyC,EACzC,0CAA0C,EAC1C,wCAAwC,EACxC,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EACL,mBAAmB,EACnB,gCAAgC,EAChC,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,YAAY,EACZ,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,4BAA4B,EAC5B,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,iCAAiC,EACjC,uBAAuB,EACvB,oCAAoC,EACpC,oCAAoC,EACpC,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { DEFAULT_ALIAS_PREFIX, DEFAULT_ALIAS_RANDOM_LENGTH, DEFAULT_ALIAS_STRATEGY, DEFAULT_FOLDERIZE_COMPOUND_FILES_SEVERITY, DEFAULT_FOLDERIZE_COMPOUND_FILE_SEPARATORS, DEFAULT_FOLDERIZE_COMPOUND_FILE_SUFFIXES, DEFAULT_EXCLUDE_DIRS, DEFAULT_IMPORTS_REWRITE, DEFAULT_KEEP_RELATIVE, DEFAULT_MAX_FILE_LINES_SEVERITY, DEFAULT_SOURCE_EXTENSIONS, DEFAULT_SOURCE_ROOT, } from "./shared/constants.js";
|
|
2
|
+
export { checkCodeDiscipline } from "./checks/index.js";
|
|
3
|
+
export { defineCodeDisciplineConfig, loadCodeDisciplineConfig } from "./config/index.js";
|
|
4
|
+
export { normalizeSyncImportsOptions } from "./config/normalize-sync-imports-options.js";
|
|
5
|
+
export { syncTsconfigAliases } from "./imports/aliases.js";
|
|
6
|
+
export { resolveRelativeImport } from "./imports/resolve.js";
|
|
7
|
+
export { rewriteSourceImports } from "./imports/rewrite.js";
|
|
8
|
+
export { scanSourceFiles } from "./imports/scan.js";
|
|
9
|
+
export { createRandomAlias, createRelativePathHashAlias, createRelativePathSlugAlias } from "./imports/strategies.js";
|
|
10
|
+
export { syncImports } from "./imports/sync-imports.js";
|
|
11
|
+
export { resolveLogger } from "./shared/logging.js";
|
|
12
|
+
export { AliasCollisionError, InvalidCodeDisciplineConfigError, InvalidAliasError, InvalidProjectRootError, InvalidSourceRootError, InvalidTsconfigPathError, ParseFailureError, RewriteFailureError, SyncImportsError, isSyncImportsError, } from "./shared/errors.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,yCAAyC,EACzC,0CAA0C,EAC1C,wCAAwC,EACxC,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EACL,mBAAmB,EACnB,gCAAgC,EAChC,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare const DEFAULT_SOURCE_ROOT = "src";
|
|
2
|
+
declare const DEFAULT_SOURCE_EXTENSIONS: string[];
|
|
3
|
+
declare const DEFAULT_EXCLUDE_DIRS: string[];
|
|
4
|
+
declare const DEFAULT_ALIAS_PREFIX = "#";
|
|
5
|
+
declare const DEFAULT_ALIAS_STRATEGY = "random";
|
|
6
|
+
declare const DEFAULT_ALIAS_RANDOM_LENGTH = 12;
|
|
7
|
+
declare const DEFAULT_IMPORTS_REWRITE = true;
|
|
8
|
+
declare const DEFAULT_KEEP_RELATIVE: string[];
|
|
9
|
+
declare const DEFAULT_MAX_FILE_LINES_SEVERITY = "error";
|
|
10
|
+
declare const DEFAULT_FOLDERIZE_COMPOUND_FILES_SEVERITY = "error";
|
|
11
|
+
declare const DEFAULT_FOLDERIZE_COMPOUND_FILE_SEPARATORS: string[];
|
|
12
|
+
declare const DEFAULT_FOLDERIZE_COMPOUND_FILE_SUFFIXES: string[];
|
|
13
|
+
declare const CODE_DISCIPLINE_CONFIG_FILE = "code-discipline.config.json";
|
|
14
|
+
declare const SYNC_IMPORTS_LOG_GROUP = "code-discipline";
|
|
15
|
+
declare const RANDOM_ALIAS_ALPHABET = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
16
|
+
declare const HASH_ALIAS_LENGTH = 12;
|
|
17
|
+
export { CODE_DISCIPLINE_CONFIG_FILE, DEFAULT_ALIAS_PREFIX, DEFAULT_ALIAS_RANDOM_LENGTH, DEFAULT_ALIAS_STRATEGY, DEFAULT_EXCLUDE_DIRS, DEFAULT_FOLDERIZE_COMPOUND_FILES_SEVERITY, DEFAULT_FOLDERIZE_COMPOUND_FILE_SEPARATORS, DEFAULT_FOLDERIZE_COMPOUND_FILE_SUFFIXES, DEFAULT_IMPORTS_REWRITE, DEFAULT_KEEP_RELATIVE, DEFAULT_MAX_FILE_LINES_SEVERITY, DEFAULT_SOURCE_EXTENSIONS, DEFAULT_SOURCE_ROOT, HASH_ALIAS_LENGTH, RANDOM_ALIAS_ALPHABET, SYNC_IMPORTS_LOG_GROUP, };
|
|
18
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,mBAAmB,QAAQ,CAAC;AAClC,QAAA,MAAM,yBAAyB,UAAiC,CAAC;AACjE,QAAA,MAAM,oBAAoB,UAAoC,CAAC;AAC/D,QAAA,MAAM,oBAAoB,MAAM,CAAC;AACjC,QAAA,MAAM,sBAAsB,WAAW,CAAC;AACxC,QAAA,MAAM,2BAA2B,KAAK,CAAC;AACvC,QAAA,MAAM,uBAAuB,OAAO,CAAC;AACrC,QAAA,MAAM,qBAAqB,UAAS,CAAC;AACrC,QAAA,MAAM,+BAA+B,UAAU,CAAC;AAChD,QAAA,MAAM,yCAAyC,UAAU,CAAC;AAC1D,QAAA,MAAM,0CAA0C,UAAa,CAAC;AAC9D,QAAA,MAAM,wCAAwC,UAAY,CAAC;AAC3D,QAAA,MAAM,2BAA2B,gCAAgC,CAAC;AAClE,QAAA,MAAM,sBAAsB,oBAAoB,CAAC;AACjD,QAAA,MAAM,qBAAqB,yCAAyC,CAAC;AACrE,QAAA,MAAM,iBAAiB,KAAK,CAAC;AAE7B,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,yCAAyC,EACzC,0CAA0C,EAC1C,wCAAwC,EACxC,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,GACvB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const DEFAULT_SOURCE_ROOT = "src";
|
|
2
|
+
const DEFAULT_SOURCE_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx"];
|
|
3
|
+
const DEFAULT_EXCLUDE_DIRS = ["node_modules", "dist", ".vite"];
|
|
4
|
+
const DEFAULT_ALIAS_PREFIX = "#";
|
|
5
|
+
const DEFAULT_ALIAS_STRATEGY = "random";
|
|
6
|
+
const DEFAULT_ALIAS_RANDOM_LENGTH = 12;
|
|
7
|
+
const DEFAULT_IMPORTS_REWRITE = true;
|
|
8
|
+
const DEFAULT_KEEP_RELATIVE = ["./"];
|
|
9
|
+
const DEFAULT_MAX_FILE_LINES_SEVERITY = "error";
|
|
10
|
+
const DEFAULT_FOLDERIZE_COMPOUND_FILES_SEVERITY = "error";
|
|
11
|
+
const DEFAULT_FOLDERIZE_COMPOUND_FILE_SEPARATORS = ["_", "-"];
|
|
12
|
+
const DEFAULT_FOLDERIZE_COMPOUND_FILE_SUFFIXES = ["start"];
|
|
13
|
+
const CODE_DISCIPLINE_CONFIG_FILE = "code-discipline.config.json";
|
|
14
|
+
const SYNC_IMPORTS_LOG_GROUP = "code-discipline";
|
|
15
|
+
const RANDOM_ALIAS_ALPHABET = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
16
|
+
const HASH_ALIAS_LENGTH = 12;
|
|
17
|
+
export { CODE_DISCIPLINE_CONFIG_FILE, DEFAULT_ALIAS_PREFIX, DEFAULT_ALIAS_RANDOM_LENGTH, DEFAULT_ALIAS_STRATEGY, DEFAULT_EXCLUDE_DIRS, DEFAULT_FOLDERIZE_COMPOUND_FILES_SEVERITY, DEFAULT_FOLDERIZE_COMPOUND_FILE_SEPARATORS, DEFAULT_FOLDERIZE_COMPOUND_FILE_SUFFIXES, DEFAULT_IMPORTS_REWRITE, DEFAULT_KEEP_RELATIVE, DEFAULT_MAX_FILE_LINES_SEVERITY, DEFAULT_SOURCE_EXTENSIONS, DEFAULT_SOURCE_ROOT, HASH_ALIAS_LENGTH, RANDOM_ALIAS_ALPHABET, SYNC_IMPORTS_LOG_GROUP, };
|
|
18
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACjE,MAAM,oBAAoB,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/D,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,sBAAsB,GAAG,QAAQ,CAAC;AACxC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,MAAM,+BAA+B,GAAG,OAAO,CAAC;AAChD,MAAM,yCAAyC,GAAG,OAAO,CAAC;AAC1D,MAAM,0CAA0C,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9D,MAAM,wCAAwC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AAClE,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AACjD,MAAM,qBAAqB,GAAG,sCAAsC,CAAC;AACrE,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,yCAAyC,EACzC,0CAA0C,EAC1C,wCAAwC,EACxC,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,GACvB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
type SyncImportsErrorCode = "invalid_project_root" | "invalid_source_root" | "invalid_tsconfig_path" | "invalid_config" | "alias_collision" | "invalid_alias" | "rewrite_failure" | "parse_failure";
|
|
2
|
+
declare class SyncImportsError extends Error {
|
|
3
|
+
code: SyncImportsErrorCode | string;
|
|
4
|
+
details: Record<string, unknown>;
|
|
5
|
+
constructor(code: SyncImportsErrorCode | string, message: string, details?: Record<string, unknown>);
|
|
6
|
+
}
|
|
7
|
+
declare class InvalidProjectRootError extends SyncImportsError {
|
|
8
|
+
constructor(projectRoot: string);
|
|
9
|
+
}
|
|
10
|
+
declare class InvalidSourceRootError extends SyncImportsError {
|
|
11
|
+
constructor(sourceRoot: string);
|
|
12
|
+
}
|
|
13
|
+
declare class InvalidTsconfigPathError extends SyncImportsError {
|
|
14
|
+
constructor(tsconfigPath: string);
|
|
15
|
+
}
|
|
16
|
+
declare class InvalidCodeDisciplineConfigError extends SyncImportsError {
|
|
17
|
+
constructor(message: string, details?: Record<string, unknown>);
|
|
18
|
+
}
|
|
19
|
+
declare class AliasCollisionError extends SyncImportsError {
|
|
20
|
+
constructor(aliasId: string, details?: Record<string, unknown>);
|
|
21
|
+
}
|
|
22
|
+
declare class InvalidAliasError extends SyncImportsError {
|
|
23
|
+
constructor(aliasId: unknown, details?: Record<string, unknown>);
|
|
24
|
+
}
|
|
25
|
+
declare class RewriteFailureError extends SyncImportsError {
|
|
26
|
+
constructor(filePath: string, cause?: unknown);
|
|
27
|
+
}
|
|
28
|
+
declare class ParseFailureError extends SyncImportsError {
|
|
29
|
+
constructor(filePath: string, diagnostics: unknown);
|
|
30
|
+
}
|
|
31
|
+
declare function isSyncImportsError(value: unknown): value is SyncImportsError;
|
|
32
|
+
export { AliasCollisionError, InvalidCodeDisciplineConfigError, InvalidAliasError, InvalidProjectRootError, InvalidSourceRootError, InvalidTsconfigPathError, ParseFailureError, RewriteFailureError, SyncImportsError, isSyncImportsError, };
|
|
33
|
+
export type { SyncImportsErrorCode };
|
|
34
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/shared/errors.ts"],"names":[],"mappings":"AAAA,KAAK,oBAAoB,GACrB,sBAAsB,GACtB,qBAAqB,GACrB,uBAAuB,GACvB,gBAAgB,GAChB,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,eAAe,CAAC;AAEpB,cAAM,gBAAiB,SAAQ,KAAK;IAClC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAErB,IAAI,EAAE,oBAAoB,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAMxG;AAED,cAAM,uBAAwB,SAAQ,gBAAgB;gBACxC,WAAW,EAAE,MAAM;CAIhC;AAED,cAAM,sBAAuB,SAAQ,gBAAgB;gBACvC,UAAU,EAAE,MAAM;CAI/B;AAED,cAAM,wBAAyB,SAAQ,gBAAgB;gBACzC,YAAY,EAAE,MAAM;CAIjC;AAED,cAAM,gCAAiC,SAAQ,gBAAgB;gBACjD,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAInE;AAED,cAAM,mBAAoB,SAAQ,gBAAgB;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAInE;AAED,cAAM,iBAAkB,SAAQ,gBAAgB;gBAClC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAIpE;AAED,cAAM,mBAAoB,SAAQ,gBAAgB;gBACpC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAO9C;AAED,cAAM,iBAAkB,SAAQ,gBAAgB;gBAClC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO;CAInD;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAErE;AAED,OAAO,EACL,mBAAmB,EACnB,gCAAgC,EAChC,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,GACnB,CAAC;AACF,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
|