@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.
Files changed (100) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +661 -0
  3. package/README.md +241 -0
  4. package/dist/checks/index.d.ts +4 -0
  5. package/dist/checks/index.d.ts.map +1 -0
  6. package/dist/checks/index.js +22 -0
  7. package/dist/checks/index.js.map +1 -0
  8. package/dist/checks/rules/folderize-compound-files.d.ts +5 -0
  9. package/dist/checks/rules/folderize-compound-files.d.ts.map +1 -0
  10. package/dist/checks/rules/folderize-compound-files.js +37 -0
  11. package/dist/checks/rules/folderize-compound-files.js.map +1 -0
  12. package/dist/checks/rules/max-file-lines.d.ts +5 -0
  13. package/dist/checks/rules/max-file-lines.d.ts.map +1 -0
  14. package/dist/checks/rules/max-file-lines.js +30 -0
  15. package/dist/checks/rules/max-file-lines.js.map +1 -0
  16. package/dist/checks/types.d.ts +64 -0
  17. package/dist/checks/types.d.ts.map +1 -0
  18. package/dist/checks/types.js +2 -0
  19. package/dist/checks/types.js.map +1 -0
  20. package/dist/cli/run-cli.d.ts +13 -0
  21. package/dist/cli/run-cli.d.ts.map +1 -0
  22. package/dist/cli/run-cli.js +104 -0
  23. package/dist/cli/run-cli.js.map +1 -0
  24. package/dist/cli.d.ts +5 -0
  25. package/dist/cli.d.ts.map +1 -0
  26. package/dist/cli.js +10 -0
  27. package/dist/cli.js.map +1 -0
  28. package/dist/config/index.d.ts +9 -0
  29. package/dist/config/index.d.ts.map +1 -0
  30. package/dist/config/index.js +49 -0
  31. package/dist/config/index.js.map +1 -0
  32. package/dist/config/normalize-check-options.d.ts +4 -0
  33. package/dist/config/normalize-check-options.d.ts.map +1 -0
  34. package/dist/config/normalize-check-options.js +14 -0
  35. package/dist/config/normalize-check-options.js.map +1 -0
  36. package/dist/config/normalize-rule-options.d.ts +14 -0
  37. package/dist/config/normalize-rule-options.d.ts.map +1 -0
  38. package/dist/config/normalize-rule-options.js +51 -0
  39. package/dist/config/normalize-rule-options.js.map +1 -0
  40. package/dist/config/normalize-source-options.d.ts +16 -0
  41. package/dist/config/normalize-source-options.d.ts.map +1 -0
  42. package/dist/config/normalize-source-options.js +24 -0
  43. package/dist/config/normalize-source-options.js.map +1 -0
  44. package/dist/config/normalize-sync-imports-options.d.ts +4 -0
  45. package/dist/config/normalize-sync-imports-options.d.ts.map +1 -0
  46. package/dist/config/normalize-sync-imports-options.js +34 -0
  47. package/dist/config/normalize-sync-imports-options.js.map +1 -0
  48. package/dist/imports/aliases.d.ts +9 -0
  49. package/dist/imports/aliases.d.ts.map +1 -0
  50. package/dist/imports/aliases.js +150 -0
  51. package/dist/imports/aliases.js.map +1 -0
  52. package/dist/imports/resolve.d.ts +7 -0
  53. package/dist/imports/resolve.d.ts.map +1 -0
  54. package/dist/imports/resolve.js +49 -0
  55. package/dist/imports/resolve.js.map +1 -0
  56. package/dist/imports/rewrite.d.ts +5 -0
  57. package/dist/imports/rewrite.d.ts.map +1 -0
  58. package/dist/imports/rewrite.js +139 -0
  59. package/dist/imports/rewrite.js.map +1 -0
  60. package/dist/imports/scan.d.ts +4 -0
  61. package/dist/imports/scan.d.ts.map +1 -0
  62. package/dist/imports/scan.js +44 -0
  63. package/dist/imports/scan.js.map +1 -0
  64. package/dist/imports/strategies.d.ts +7 -0
  65. package/dist/imports/strategies.d.ts.map +1 -0
  66. package/dist/imports/strategies.js +55 -0
  67. package/dist/imports/strategies.js.map +1 -0
  68. package/dist/imports/sync-imports.d.ts +4 -0
  69. package/dist/imports/sync-imports.d.ts.map +1 -0
  70. package/dist/imports/sync-imports.js +41 -0
  71. package/dist/imports/sync-imports.js.map +1 -0
  72. package/dist/imports/types.d.ts +104 -0
  73. package/dist/imports/types.d.ts.map +1 -0
  74. package/dist/imports/types.js +2 -0
  75. package/dist/imports/types.js.map +1 -0
  76. package/dist/index.d.ts +16 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +13 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/shared/constants.d.ts +18 -0
  81. package/dist/shared/constants.d.ts.map +1 -0
  82. package/dist/shared/constants.js +18 -0
  83. package/dist/shared/constants.js.map +1 -0
  84. package/dist/shared/errors.d.ts +34 -0
  85. package/dist/shared/errors.d.ts.map +1 -0
  86. package/dist/shared/errors.js +64 -0
  87. package/dist/shared/errors.js.map +1 -0
  88. package/dist/shared/logging-types.d.ts +18 -0
  89. package/dist/shared/logging-types.d.ts.map +1 -0
  90. package/dist/shared/logging-types.js +2 -0
  91. package/dist/shared/logging-types.js.map +1 -0
  92. package/dist/shared/logging.d.ts +5 -0
  93. package/dist/shared/logging.d.ts.map +1 -0
  94. package/dist/shared/logging.js +99 -0
  95. package/dist/shared/logging.js.map +1 -0
  96. package/dist/shared/utils.d.ts +24 -0
  97. package/dist/shared/utils.d.ts.map +1 -0
  98. package/dist/shared/utils.js +127 -0
  99. package/dist/shared/utils.js.map +1 -0
  100. package/package.json +54 -0
@@ -0,0 +1,64 @@
1
+ class SyncImportsError extends Error {
2
+ constructor(code, message, details = {}) {
3
+ super(message);
4
+ this.name = "SyncImportsError";
5
+ this.code = code;
6
+ this.details = details;
7
+ }
8
+ }
9
+ class InvalidProjectRootError extends SyncImportsError {
10
+ constructor(projectRoot) {
11
+ super("invalid_project_root", `Invalid project root: ${projectRoot}`, { projectRoot });
12
+ this.name = "InvalidProjectRootError";
13
+ }
14
+ }
15
+ class InvalidSourceRootError extends SyncImportsError {
16
+ constructor(sourceRoot) {
17
+ super("invalid_source_root", `Invalid source root: ${sourceRoot}`, { sourceRoot });
18
+ this.name = "InvalidSourceRootError";
19
+ }
20
+ }
21
+ class InvalidTsconfigPathError extends SyncImportsError {
22
+ constructor(tsconfigPath) {
23
+ super("invalid_tsconfig_path", `Invalid tsconfig path: ${tsconfigPath}`, { tsconfigPath });
24
+ this.name = "InvalidTsconfigPathError";
25
+ }
26
+ }
27
+ class InvalidCodeDisciplineConfigError extends SyncImportsError {
28
+ constructor(message, details = {}) {
29
+ super("invalid_config", message, details);
30
+ this.name = "InvalidCodeDisciplineConfigError";
31
+ }
32
+ }
33
+ class AliasCollisionError extends SyncImportsError {
34
+ constructor(aliasId, details = {}) {
35
+ super("alias_collision", `Alias collision: ${aliasId}`, { aliasId, ...details });
36
+ this.name = "AliasCollisionError";
37
+ }
38
+ }
39
+ class InvalidAliasError extends SyncImportsError {
40
+ constructor(aliasId, details = {}) {
41
+ super("invalid_alias", `Invalid alias id: ${String(aliasId)}`, { aliasId, ...details });
42
+ this.name = "InvalidAliasError";
43
+ }
44
+ }
45
+ class RewriteFailureError extends SyncImportsError {
46
+ constructor(filePath, cause) {
47
+ super("rewrite_failure", `Failed to rewrite imports in ${filePath}`, {
48
+ filePath,
49
+ cause: cause instanceof Error ? cause.message : cause,
50
+ });
51
+ this.name = "RewriteFailureError";
52
+ }
53
+ }
54
+ class ParseFailureError extends SyncImportsError {
55
+ constructor(filePath, diagnostics) {
56
+ super("parse_failure", `Failed to parse ${filePath}`, { filePath, diagnostics });
57
+ this.name = "ParseFailureError";
58
+ }
59
+ }
60
+ function isSyncImportsError(value) {
61
+ return value instanceof SyncImportsError;
62
+ }
63
+ export { AliasCollisionError, InvalidCodeDisciplineConfigError, InvalidAliasError, InvalidProjectRootError, InvalidSourceRootError, InvalidTsconfigPathError, ParseFailureError, RewriteFailureError, SyncImportsError, isSyncImportsError, };
64
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/shared/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ type SyncImportsLogLevel = "debug" | "info" | "warn" | "error" | "success";
2
+ type SyncImportsLogEvent = {
3
+ level: SyncImportsLogLevel;
4
+ event: string;
5
+ message: string;
6
+ metadata?: Record<string, unknown>;
7
+ };
8
+ type LogAdapterFn = (event: SyncImportsLogEvent) => void;
9
+ type NormalizedSyncImportsLogger = {
10
+ enabled: boolean;
11
+ debug: (event: string, message: string, metadata?: Record<string, unknown>) => void;
12
+ info: (event: string, message: string, metadata?: Record<string, unknown>) => void;
13
+ warn: (event: string, message: string, metadata?: Record<string, unknown>) => void;
14
+ error: (event: string, message: string, metadata?: Record<string, unknown>) => void;
15
+ success: (event: string, message: string, metadata?: Record<string, unknown>) => void;
16
+ };
17
+ export type { LogAdapterFn, NormalizedSyncImportsLogger, SyncImportsLogEvent, SyncImportsLogLevel, };
18
+ //# sourceMappingURL=logging-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging-types.d.ts","sourceRoot":"","sources":["../../src/shared/logging-types.ts"],"names":[],"mappings":"AAAA,KAAK,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3E,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAEzD,KAAK,2BAA2B,GAAG;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACpF,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACnF,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACnF,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACpF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACvF,CAAC;AAEF,YAAY,EACV,YAAY,EACZ,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,GACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logging-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging-types.js","sourceRoot":"","sources":["../../src/shared/logging-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { NormalizedSyncImportsLogger } from "./logging-types.js";
2
+ import type { SyncImportsOptions } from "../imports/types.js";
3
+ declare function resolveLogger(options?: SyncImportsOptions["logging"]): NormalizedSyncImportsLogger;
4
+ export { resolveLogger };
5
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/shared/logging.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,2BAA2B,EAG5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAwG9D,iBAAS,aAAa,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,2BAA2B,CAmB3F;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { SYNC_IMPORTS_LOG_GROUP } from "./constants.js";
2
+ function getMethod(source, name) {
3
+ if (!source || typeof source !== "object")
4
+ return null;
5
+ const value = source[name];
6
+ return typeof value === "function" ? value : null;
7
+ }
8
+ function looksLikeTrebiredLogger(source) {
9
+ return Boolean(getMethod(source, "info")
10
+ && getMethod(source, "warn")
11
+ && (getMethod(source, "fail") || getMethod(source, "error"))
12
+ && getMethod(source, "success"));
13
+ }
14
+ function buildMetadata(eventName, metadata) {
15
+ return metadata ? { event: eventName, ...metadata } : { event: eventName };
16
+ }
17
+ function formatMessage(message) {
18
+ return `[${SYNC_IMPORTS_LOG_GROUP}] ${message}`;
19
+ }
20
+ function shouldSkipForQuiet(level, quiet) {
21
+ return quiet && (level === "debug" || level === "info" || level === "success");
22
+ }
23
+ function writeToConsole(level, eventName, message, metadata) {
24
+ const payload = buildMetadata(eventName, metadata);
25
+ const formatted = formatMessage(message);
26
+ if (level === "error") {
27
+ console.error(formatted, payload);
28
+ return;
29
+ }
30
+ if (level === "warn") {
31
+ console.warn(formatted, payload);
32
+ return;
33
+ }
34
+ console.log(formatted, payload);
35
+ }
36
+ function writeToGenericLogger(source, level, eventName, message, metadata) {
37
+ const methodName = level === "success" ? "info" : level;
38
+ const method = getMethod(source, methodName) || getMethod(source, "log") || getMethod(source, "write");
39
+ if (!method) {
40
+ writeToConsole(level, eventName, message, metadata);
41
+ return;
42
+ }
43
+ const payload = buildMetadata(eventName, metadata);
44
+ method.call(source, formatMessage(message), payload);
45
+ }
46
+ function writeToTrebiredLogger(source, level, eventName, message, metadata) {
47
+ const methodName = level === "error" ? "fail" : level;
48
+ const method = getMethod(source, methodName) || getMethod(source, level) || getMethod(source, "info");
49
+ if (!method) {
50
+ writeToConsole(level, eventName, message, metadata);
51
+ return;
52
+ }
53
+ method.call(source, SYNC_IMPORTS_LOG_GROUP, message, buildMetadata(eventName, metadata));
54
+ }
55
+ function resolveWriter(options) {
56
+ const adapter = options?.adapter;
57
+ const logger = options?.logger;
58
+ if (typeof adapter === "function") {
59
+ return adapter;
60
+ }
61
+ if (adapter === "console") {
62
+ return (event) => writeToConsole(event.level, event.event, event.message, event.metadata);
63
+ }
64
+ if (adapter === "trebired") {
65
+ return (event) => writeToTrebiredLogger(logger, event.level, event.event, event.message, event.metadata);
66
+ }
67
+ if (adapter === "generic") {
68
+ return (event) => writeToGenericLogger(logger, event.level, event.event, event.message, event.metadata);
69
+ }
70
+ if (looksLikeTrebiredLogger(logger)) {
71
+ return (event) => writeToTrebiredLogger(logger, event.level, event.event, event.message, event.metadata);
72
+ }
73
+ if (logger) {
74
+ return (event) => writeToGenericLogger(logger, event.level, event.event, event.message, event.metadata);
75
+ }
76
+ return (event) => writeToConsole(event.level, event.event, event.message, event.metadata);
77
+ }
78
+ function resolveLogger(options) {
79
+ const enabled = options?.enabled ?? Boolean(options?.logger || options?.adapter);
80
+ const quiet = options?.quiet ?? false;
81
+ const writer = resolveWriter(options);
82
+ function emit(level, event, message, metadata) {
83
+ if (!enabled)
84
+ return;
85
+ if (shouldSkipForQuiet(level, quiet))
86
+ return;
87
+ writer({ level, event, message, metadata });
88
+ }
89
+ return {
90
+ enabled,
91
+ debug: (event, message, metadata) => emit("debug", event, message, metadata),
92
+ info: (event, message, metadata) => emit("info", event, message, metadata),
93
+ warn: (event, message, metadata) => emit("warn", event, message, metadata),
94
+ error: (event, message, metadata) => emit("error", event, message, metadata),
95
+ success: (event, message, metadata) => emit("success", event, message, metadata),
96
+ };
97
+ }
98
+ export { resolveLogger };
99
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/shared/logging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import ts from "typescript";
2
+ import type { TsconfigJson } from "../imports/types.js";
3
+ declare function toPosixPath(value: string): string;
4
+ declare function normalizeRelativePath(value: string): string;
5
+ declare function ensureDotExtension(value: string): string;
6
+ declare function uniqueStrings(values: string[]): string[];
7
+ declare function sortStrings(values: string[]): string[];
8
+ declare function stripKnownExtension(filePath: string, extensions: string[]): string;
9
+ declare function isInsideDirectory(filePath: string, directoryPath: string): boolean;
10
+ declare function pathExists(filePath: string): Promise<boolean>;
11
+ declare function isDirectory(filePath: string): Promise<boolean>;
12
+ declare function isFile(filePath: string): Promise<boolean>;
13
+ declare function createRandomToken(length: number): string;
14
+ declare function createHashToken(value: string, length: number): string;
15
+ declare function createSlugToken(value: string): string;
16
+ declare function isAliasIdValid(value: unknown): value is string;
17
+ declare function stableSerialize(value: unknown): string;
18
+ declare function toStableJson(value: unknown): string;
19
+ declare function wait(milliseconds: number): Promise<void>;
20
+ declare function parseTsconfigJson(text: string, filePath: string): TsconfigJson;
21
+ declare function flattenDiagnosticMessage(messageText: string | ts.DiagnosticMessageChain): string;
22
+ declare function formatDiagnostics(diagnostics: readonly ts.Diagnostic[]): string[];
23
+ export { createHashToken, createRandomToken, createSlugToken, ensureDotExtension, flattenDiagnosticMessage, formatDiagnostics, isAliasIdValid, isDirectory, isFile, isInsideDirectory, normalizeRelativePath, parseTsconfigJson, pathExists, sortStrings, stableSerialize, stripKnownExtension, toPosixPath, toStableJson, uniqueStrings, wait, };
24
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/shared/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEjD;AAED,iBAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE/C;AAED,iBAAS,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAG3E;AAED,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAG3E;AAED,iBAAe,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO5D;AAED,iBAAe,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO7D;AAED,iBAAe,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED,iBAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAOvD;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/C;AAaD,iBAAS,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE5C;AAED,iBAAe,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvD;AAED,iBAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAQvE;AAED,iBAAS,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,sBAAsB,GAAG,MAAM,CAEzF;AAED,iBAAS,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,GAAG,MAAM,EAAE,CAE1E;AAED,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,MAAM,EACN,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,IAAI,GACL,CAAC"}
@@ -0,0 +1,127 @@
1
+ import { randomBytes, createHash } from "node:crypto";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ import ts from "typescript";
5
+ import { RANDOM_ALIAS_ALPHABET } from "./constants.js";
6
+ import { ParseFailureError } from "./errors.js";
7
+ function toPosixPath(value) {
8
+ return value.split(path.sep).join("/");
9
+ }
10
+ function normalizeRelativePath(value) {
11
+ const normalized = toPosixPath(value).replace(/^\.\/+/, "").replace(/\/+/g, "/");
12
+ return normalized === "." ? "" : normalized;
13
+ }
14
+ function ensureDotExtension(value) {
15
+ return value.startsWith(".") ? value.toLowerCase() : `.${value.toLowerCase()}`;
16
+ }
17
+ function uniqueStrings(values) {
18
+ return Array.from(new Set(values));
19
+ }
20
+ function sortStrings(values) {
21
+ return [...values].sort((left, right) => left.localeCompare(right));
22
+ }
23
+ function stripKnownExtension(filePath, extensions) {
24
+ const match = extensions.find((extension) => filePath.toLowerCase().endsWith(extension.toLowerCase()));
25
+ return match ? filePath.slice(0, filePath.length - match.length) : filePath;
26
+ }
27
+ function isInsideDirectory(filePath, directoryPath) {
28
+ const relative = path.relative(directoryPath, filePath);
29
+ return relative !== ".." && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative);
30
+ }
31
+ async function pathExists(filePath) {
32
+ try {
33
+ await fs.access(filePath);
34
+ return true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ async function isDirectory(filePath) {
41
+ try {
42
+ const stat = await fs.stat(filePath);
43
+ return stat.isDirectory();
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ }
49
+ async function isFile(filePath) {
50
+ try {
51
+ const stat = await fs.stat(filePath);
52
+ return stat.isFile();
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ }
58
+ function createRandomToken(length) {
59
+ const bytes = randomBytes(length * 2);
60
+ let token = "";
61
+ for (const value of bytes) {
62
+ token += RANDOM_ALIAS_ALPHABET[value % RANDOM_ALIAS_ALPHABET.length];
63
+ if (token.length >= length)
64
+ break;
65
+ }
66
+ return token;
67
+ }
68
+ function createHashToken(value, length) {
69
+ return createHash("sha1").update(value).digest("hex").slice(0, length);
70
+ }
71
+ function createSlugToken(value) {
72
+ const slug = value
73
+ .toLowerCase()
74
+ .replace(/[^a-z0-9]+/g, "-")
75
+ .replace(/-+/g, "-")
76
+ .replace(/^-|-$/g, "");
77
+ return slug || "module";
78
+ }
79
+ function isAliasIdValid(value) {
80
+ if (typeof value !== "string")
81
+ return false;
82
+ if (!value.trim())
83
+ return false;
84
+ if (/\s/.test(value))
85
+ return false;
86
+ if (value.startsWith(".") || value.startsWith("/"))
87
+ return false;
88
+ if (value.includes("\0") || value.includes("\"") || value.includes("'"))
89
+ return false;
90
+ return true;
91
+ }
92
+ function stableSerialize(value) {
93
+ return JSON.stringify(sortObject(value));
94
+ }
95
+ function sortObject(value) {
96
+ if (Array.isArray(value))
97
+ return value.map((entry) => sortObject(entry));
98
+ if (!value || typeof value !== "object")
99
+ return value;
100
+ const result = {};
101
+ for (const key of Object.keys(value).sort((left, right) => left.localeCompare(right))) {
102
+ result[key] = sortObject(value[key]);
103
+ }
104
+ return result;
105
+ }
106
+ function toStableJson(value) {
107
+ return `${JSON.stringify(sortObject(value), null, 2)}\n`;
108
+ }
109
+ async function wait(milliseconds) {
110
+ await new Promise((resolve) => setTimeout(resolve, milliseconds));
111
+ }
112
+ function parseTsconfigJson(text, filePath) {
113
+ const parsed = ts.parseConfigFileTextToJson(filePath, text);
114
+ if (parsed.error) {
115
+ throw new ParseFailureError(filePath, flattenDiagnosticMessage(parsed.error.messageText));
116
+ }
117
+ const config = parsed.config;
118
+ return config && typeof config === "object" ? config : {};
119
+ }
120
+ function flattenDiagnosticMessage(messageText) {
121
+ return typeof messageText === "string" ? messageText : ts.flattenDiagnosticMessageText(messageText, "\n");
122
+ }
123
+ function formatDiagnostics(diagnostics) {
124
+ return diagnostics.map((diagnostic) => flattenDiagnosticMessage(diagnostic.messageText));
125
+ }
126
+ export { createHashToken, createRandomToken, createSlugToken, ensureDotExtension, flattenDiagnosticMessage, formatDiagnostics, isAliasIdValid, isDirectory, isFile, isInsideDirectory, normalizeRelativePath, parseTsconfigJson, pathExists, sortStrings, stableSerialize, stripKnownExtension, toPosixPath, toStableJson, uniqueStrings, wait, };
127
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/shared/utils.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@trebired/code-discipline",
3
+ "version": "0.1.0",
4
+ "description": "Configurable codebase discipline checks and import syncing for Bun and Node.js projects.",
5
+ "license": "AGPL-3.0-only",
6
+ "keywords": [
7
+ "typescript",
8
+ "imports",
9
+ "path-aliases",
10
+ "node",
11
+ "bun"
12
+ ],
13
+ "type": "module",
14
+ "engines": {
15
+ "node": ">=18",
16
+ "bun": ">=1.0.0"
17
+ },
18
+ "private": false,
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "packageManager": "bun@1.3.12",
23
+ "main": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "bin": {
26
+ "code-discipline": "./dist/cli.js"
27
+ },
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js"
32
+ }
33
+ },
34
+ "files": [
35
+ "dist",
36
+ "CHANGELOG.md",
37
+ "LICENSE",
38
+ "README.md"
39
+ ],
40
+ "scripts": {
41
+ "build": "rm -rf dist && tsc -p tsconfig.build.json",
42
+ "demo": "bun run examples/dummy.ts",
43
+ "prepublishOnly": "bun run typecheck && bun test && bun run build",
44
+ "test": "bun test",
45
+ "typecheck": "tsc --noEmit"
46
+ },
47
+ "dependencies": {
48
+ "typescript": "^6.0.2"
49
+ },
50
+ "devDependencies": {
51
+ "@types/bun": "^1.3.4",
52
+ "@types/node": "^24.10.1"
53
+ }
54
+ }