chkit 0.1.0-beta.10

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 (138) hide show
  1. package/README.md +76 -0
  2. package/dist/bin/chkit.d.ts +3 -0
  3. package/dist/bin/chkit.d.ts.map +1 -0
  4. package/dist/bin/chkit.js +304 -0
  5. package/dist/bin/chkit.js.map +1 -0
  6. package/dist/bin/command-registry.d.ts +34 -0
  7. package/dist/bin/command-registry.d.ts.map +1 -0
  8. package/dist/bin/command-registry.js +87 -0
  9. package/dist/bin/command-registry.js.map +1 -0
  10. package/dist/bin/commands/check.d.ts +3 -0
  11. package/dist/bin/commands/check.d.ts.map +1 -0
  12. package/dist/bin/commands/check.js +131 -0
  13. package/dist/bin/commands/check.js.map +1 -0
  14. package/dist/bin/commands/codegen.d.ts +2 -0
  15. package/dist/bin/commands/codegen.d.ts.map +1 -0
  16. package/dist/bin/commands/codegen.js +25 -0
  17. package/dist/bin/commands/codegen.js.map +1 -0
  18. package/dist/bin/commands/drift.d.ts +23 -0
  19. package/dist/bin/commands/drift.d.ts.map +1 -0
  20. package/dist/bin/commands/drift.js +179 -0
  21. package/dist/bin/commands/drift.js.map +1 -0
  22. package/dist/bin/commands/generate/output.d.ts +8 -0
  23. package/dist/bin/commands/generate/output.d.ts.map +1 -0
  24. package/dist/bin/commands/generate/output.js +58 -0
  25. package/dist/bin/commands/generate/output.js.map +1 -0
  26. package/dist/bin/commands/generate/plan-pipeline.d.ts +7 -0
  27. package/dist/bin/commands/generate/plan-pipeline.d.ts.map +1 -0
  28. package/dist/bin/commands/generate/plan-pipeline.js +143 -0
  29. package/dist/bin/commands/generate/plan-pipeline.js.map +1 -0
  30. package/dist/bin/commands/generate/rename-mappings.d.ts +29 -0
  31. package/dist/bin/commands/generate/rename-mappings.d.ts.map +1 -0
  32. package/dist/bin/commands/generate/rename-mappings.js +195 -0
  33. package/dist/bin/commands/generate/rename-mappings.js.map +1 -0
  34. package/dist/bin/commands/generate.d.ts +3 -0
  35. package/dist/bin/commands/generate.d.ts.map +1 -0
  36. package/dist/bin/commands/generate.js +154 -0
  37. package/dist/bin/commands/generate.js.map +1 -0
  38. package/dist/bin/commands/init.d.ts +2 -0
  39. package/dist/bin/commands/init.d.ts.map +1 -0
  40. package/dist/bin/commands/init.js +12 -0
  41. package/dist/bin/commands/init.js.map +1 -0
  42. package/dist/bin/commands/migrate.d.ts +3 -0
  43. package/dist/bin/commands/migrate.d.ts.map +1 -0
  44. package/dist/bin/commands/migrate.js +270 -0
  45. package/dist/bin/commands/migrate.js.map +1 -0
  46. package/dist/bin/commands/plugin-like.d.ts +38 -0
  47. package/dist/bin/commands/plugin-like.d.ts.map +1 -0
  48. package/dist/bin/commands/plugin-like.js +101 -0
  49. package/dist/bin/commands/plugin-like.js.map +1 -0
  50. package/dist/bin/commands/plugin.d.ts +3 -0
  51. package/dist/bin/commands/plugin.d.ts.map +1 -0
  52. package/dist/bin/commands/plugin.js +148 -0
  53. package/dist/bin/commands/plugin.js.map +1 -0
  54. package/dist/bin/commands/pull.d.ts +2 -0
  55. package/dist/bin/commands/pull.d.ts.map +1 -0
  56. package/dist/bin/commands/pull.js +25 -0
  57. package/dist/bin/commands/pull.js.map +1 -0
  58. package/dist/bin/commands/status.d.ts +3 -0
  59. package/dist/bin/commands/status.d.ts.map +1 -0
  60. package/dist/bin/commands/status.js +53 -0
  61. package/dist/bin/commands/status.js.map +1 -0
  62. package/dist/bin/commands/typegen.d.ts +2 -0
  63. package/dist/bin/commands/typegen.d.ts.map +1 -0
  64. package/dist/bin/commands/typegen.js +25 -0
  65. package/dist/bin/commands/typegen.js.map +1 -0
  66. package/dist/bin/config.d.ts +13 -0
  67. package/dist/bin/config.d.ts.map +1 -0
  68. package/dist/bin/config.js +39 -0
  69. package/dist/bin/config.js.map +1 -0
  70. package/dist/bin/global-flags.d.ts +16 -0
  71. package/dist/bin/global-flags.d.ts.map +1 -0
  72. package/dist/bin/global-flags.js +7 -0
  73. package/dist/bin/global-flags.js.map +1 -0
  74. package/dist/bin/help.d.ts +5 -0
  75. package/dist/bin/help.d.ts.map +1 -0
  76. package/dist/bin/help.js +84 -0
  77. package/dist/bin/help.js.map +1 -0
  78. package/dist/bin/internal-plugins/index.d.ts +3 -0
  79. package/dist/bin/internal-plugins/index.d.ts.map +1 -0
  80. package/dist/bin/internal-plugins/index.js +5 -0
  81. package/dist/bin/internal-plugins/index.js.map +1 -0
  82. package/dist/bin/internal-plugins/skill-hint.d.ts +16 -0
  83. package/dist/bin/internal-plugins/skill-hint.d.ts.map +1 -0
  84. package/dist/bin/internal-plugins/skill-hint.js +101 -0
  85. package/dist/bin/internal-plugins/skill-hint.js.map +1 -0
  86. package/dist/bin/journal-store.d.ts +13 -0
  87. package/dist/bin/journal-store.d.ts.map +1 -0
  88. package/dist/bin/journal-store.js +79 -0
  89. package/dist/bin/journal-store.js.map +1 -0
  90. package/dist/bin/json-output.d.ts +8 -0
  91. package/dist/bin/json-output.d.ts.map +1 -0
  92. package/dist/bin/json-output.js +21 -0
  93. package/dist/bin/json-output.js.map +1 -0
  94. package/dist/bin/lib.d.ts +8 -0
  95. package/dist/bin/lib.d.ts.map +1 -0
  96. package/dist/bin/lib.js +8 -0
  97. package/dist/bin/lib.js.map +1 -0
  98. package/dist/bin/migration-store.d.ts +22 -0
  99. package/dist/bin/migration-store.d.ts.map +1 -0
  100. package/dist/bin/migration-store.js +60 -0
  101. package/dist/bin/migration-store.js.map +1 -0
  102. package/dist/bin/plugin-runtime.d.ts +42 -0
  103. package/dist/bin/plugin-runtime.d.ts.map +1 -0
  104. package/dist/bin/plugin-runtime.js +298 -0
  105. package/dist/bin/plugin-runtime.js.map +1 -0
  106. package/dist/bin/safety-markers.d.ts +24 -0
  107. package/dist/bin/safety-markers.d.ts.map +1 -0
  108. package/dist/bin/safety-markers.js +94 -0
  109. package/dist/bin/safety-markers.js.map +1 -0
  110. package/dist/bin/schema-loader.d.ts +3 -0
  111. package/dist/bin/schema-loader.d.ts.map +1 -0
  112. package/dist/bin/schema-loader.js +6 -0
  113. package/dist/bin/schema-loader.js.map +1 -0
  114. package/dist/bin/table-scope.d.ts +39 -0
  115. package/dist/bin/table-scope.d.ts.map +1 -0
  116. package/dist/bin/table-scope.js +167 -0
  117. package/dist/bin/table-scope.js.map +1 -0
  118. package/dist/bin/version.d.ts +2 -0
  119. package/dist/bin/version.d.ts.map +1 -0
  120. package/dist/bin/version.js +5 -0
  121. package/dist/bin/version.js.map +1 -0
  122. package/dist/drift-diff.d.ts +8 -0
  123. package/dist/drift-diff.d.ts.map +1 -0
  124. package/dist/drift-diff.js +46 -0
  125. package/dist/drift-diff.js.map +1 -0
  126. package/dist/drift.d.ts +65 -0
  127. package/dist/drift.d.ts.map +1 -0
  128. package/dist/drift.js +204 -0
  129. package/dist/drift.js.map +1 -0
  130. package/dist/index.d.ts +2 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +2 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/plugins.d.ts +142 -0
  135. package/dist/plugins.d.ts.map +1 -0
  136. package/dist/plugins.js +11 -0
  137. package/dist/plugins.js.map +1 -0
  138. package/package.json +33 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/bin/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,cAAc,GACf,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,kBAAkB,EAClB,4BAA4B,GAE7B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,GAId,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAA;AACnF,OAAO,EACL,kCAAkC,EAClC,kCAAkC,EAClC,oCAAoC,EACpC,2BAA2B,EAC3B,gCAAgC,EAChC,kBAAkB,GAGnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { type MigrationOperation, type Snapshot } from '@chkit/core';
2
+ export interface MigrationJournalEntry {
3
+ name: string;
4
+ appliedAt: string;
5
+ checksum: string;
6
+ }
7
+ export interface MigrationJournal {
8
+ version: 1;
9
+ applied: MigrationJournalEntry[];
10
+ }
11
+ export interface ChecksumMismatch {
12
+ name: string;
13
+ expected: string;
14
+ actual: string;
15
+ }
16
+ export declare function parseJSONOrThrow<T>(raw: string, filePath: string, kind: string): T;
17
+ export declare function readSnapshot(metaDir: string): Promise<Snapshot | null>;
18
+ export declare function summarizePlan(operations: MigrationOperation[]): string[];
19
+ export declare function listMigrations(migrationsDir: string): Promise<string[]>;
20
+ export declare function findChecksumMismatches(migrationsDir: string, journal: MigrationJournal): Promise<ChecksumMismatch[]>;
21
+ export declare function checksumSQL(value: string): string;
22
+ //# sourceMappingURL=migration-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-store.d.ts","sourceRoot":"","sources":["../../src/bin/migration-store.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2B,KAAK,kBAAkB,EAAyB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEpH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAA;IACV,OAAO,EAAE,qBAAqB,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAMlF;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAc5E;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,MAAM,EAAE,CAExE;AAED,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG7E;AAMD,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiB7B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -0,0 +1,60 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync } from 'node:fs';
3
+ import { readFile } from 'node:fs/promises';
4
+ import { join } from 'node:path';
5
+ import fg from 'fast-glob';
6
+ import { canonicalizeDefinitions } from '@chkit/core';
7
+ export function parseJSONOrThrow(raw, filePath, kind) {
8
+ try {
9
+ return JSON.parse(raw);
10
+ }
11
+ catch {
12
+ throw new Error(`Invalid ${kind} JSON at ${filePath}. Fix or remove the file and retry.`);
13
+ }
14
+ }
15
+ export async function readSnapshot(metaDir) {
16
+ const file = join(metaDir, 'snapshot.json');
17
+ if (!existsSync(file))
18
+ return null;
19
+ const raw = await readFile(file, 'utf8');
20
+ const parsed = parseJSONOrThrow(raw, file, 'snapshot');
21
+ return {
22
+ version: 1,
23
+ generatedAt: parsed.generatedAt ?? '',
24
+ definitions: canonicalizeDefinitions(parsed.definitions ?? []),
25
+ };
26
+ }
27
+ export function summarizePlan(operations) {
28
+ return operations.map((op) => `${op.type} [${op.risk}] ${op.key}`);
29
+ }
30
+ export async function listMigrations(migrationsDir) {
31
+ const files = await fg('*.sql', { cwd: migrationsDir, onlyFiles: true });
32
+ return files.sort();
33
+ }
34
+ function checksum(value) {
35
+ return createHash('sha256').update(value, 'utf8').digest('hex');
36
+ }
37
+ export async function findChecksumMismatches(migrationsDir, journal) {
38
+ const mismatches = [];
39
+ for (const entry of journal.applied) {
40
+ if (!entry.checksum)
41
+ continue;
42
+ const fullPath = join(migrationsDir, entry.name);
43
+ if (!existsSync(fullPath))
44
+ continue;
45
+ const sql = await readFile(fullPath, 'utf8');
46
+ const actual = checksum(sql);
47
+ if (actual !== entry.checksum) {
48
+ mismatches.push({
49
+ name: entry.name,
50
+ expected: entry.checksum,
51
+ actual,
52
+ });
53
+ }
54
+ }
55
+ return mismatches;
56
+ }
57
+ export function checksumSQL(value) {
58
+ return checksum(value);
59
+ }
60
+ //# sourceMappingURL=migration-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-store.js","sourceRoot":"","sources":["../../src/bin/migration-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,MAAM,WAAW,CAAA;AAE1B,OAAO,EAAE,uBAAuB,EAAiE,MAAM,aAAa,CAAA;AAmBpH,MAAM,UAAU,gBAAgB,CAAI,GAAW,EAAE,QAAgB,EAAE,IAAY;IAC7E,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,YAAY,QAAQ,qCAAqC,CAAC,CAAA;IAC3F,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAClC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,gBAAgB,CAC7B,GAAG,EACH,IAAI,EACJ,UAAU,CACX,CAAA;IACD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;QACrC,WAAW,EAAE,uBAAuB,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;KAC/D,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAgC;IAC5D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,aAAqB;IACxD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;AACrB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,aAAqB,EACrB,OAAyB;IAEzB,MAAM,UAAU,GAAuB,EAAE,CAAA;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,SAAQ;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAChD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAQ;QACnC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9B,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM;aACP,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAA;AACxB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { type MigrationPlan, type ResolvedChxConfig, type SchemaDefinition } from '@chkit/core';
2
+ import type { ChxOnCheckContext, ChxOnCheckResult, ChxOnAfterApplyContext, ChxOnBeforeApplyContext, ChxOnCompleteContext, ChxOnConfigLoadedContext, ChxOnInitContext, ChxOnPlanCreatedContext, ChxOnSchemaLoadedContext, ChxPlugin, ChxPluginCommand, ChxPluginCommandContext } from '../plugins.js';
3
+ import type { TableScope } from './table-scope.js';
4
+ interface LoadedPlugin {
5
+ options: Record<string, unknown>;
6
+ plugin: ChxPlugin;
7
+ }
8
+ export interface PluginRuntime {
9
+ plugins: ReadonlyArray<LoadedPlugin>;
10
+ getCommand(pluginName: string, commandName: string): {
11
+ command: ChxPluginCommand;
12
+ plugin: LoadedPlugin;
13
+ } | null;
14
+ runOnInit(context: Omit<ChxOnInitContext, 'options'>): Promise<void>;
15
+ runOnComplete(context: Omit<ChxOnCompleteContext, 'options' | 'exitCode'> & {
16
+ exitCode?: number;
17
+ }): Promise<void>;
18
+ runOnConfigLoaded(context: Omit<ChxOnConfigLoadedContext, 'options' | 'tableScope'> & {
19
+ tableScope?: TableScope;
20
+ }): Promise<void>;
21
+ runOnSchemaLoaded(context: ChxOnSchemaLoadedContext): Promise<SchemaDefinition[]>;
22
+ runOnPlanCreated(context: Omit<ChxOnPlanCreatedContext, 'plan' | 'tableScope'> & {
23
+ tableScope?: TableScope;
24
+ }, plan: MigrationPlan): Promise<MigrationPlan>;
25
+ runOnBeforeApply(context: ChxOnBeforeApplyContext): Promise<string[]>;
26
+ runOnAfterApply(context: ChxOnAfterApplyContext): Promise<void>;
27
+ runOnCheck(context: Omit<ChxOnCheckContext, 'options' | 'tableScope'> & {
28
+ tableScope?: TableScope;
29
+ }): Promise<ChxOnCheckResult[]>;
30
+ runOnCheckReport(results: ChxOnCheckResult[], print: (line: string) => void): Promise<void>;
31
+ runPluginCommand(pluginName: string, commandName: string, context: Omit<ChxPluginCommandContext, 'pluginName' | 'options' | 'tableScope'> & {
32
+ tableScope?: TableScope;
33
+ }): Promise<number>;
34
+ }
35
+ export declare function loadPluginRuntime(input: {
36
+ config: ResolvedChxConfig;
37
+ configPath: string;
38
+ cliVersion: string;
39
+ internalPlugins?: ChxPlugin[];
40
+ }): Promise<PluginRuntime>;
41
+ export {};
42
+ //# sourceMappingURL=plugin-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-runtime.d.ts","sourceRoot":"","sources":["../../src/bin/plugin-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,SAAS,EACT,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,MAAM,EAAE,SAAS,CAAA;CAClB;AAQD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IACpC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI,CAAA;IAC/G,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpE,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,GAAG,UAAU,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjH,iBAAiB,CACf,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,SAAS,GAAG,YAAY,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAA;KAAE,GAC9F,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACjF,gBAAgB,CACd,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAA;KAAE,EAC3F,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,aAAa,CAAC,CAAA;IACzB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACrE,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,UAAU,CACR,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,YAAY,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAA;KAAE,GACvF,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC9B,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3F,gBAAgB,CACd,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC,GAAG;QAChF,UAAU,CAAC,EAAE,UAAU,CAAA;KACxB,GACA,OAAO,CAAC,MAAM,CAAC,CAAA;CACnB;AA+FD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,MAAM,EAAE,iBAAiB,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,SAAS,EAAE,CAAA;CAC9B,GAAG,OAAO,CAAC,aAAa,CAAC,CAuMzB"}
@@ -0,0 +1,298 @@
1
+ import { resolve } from 'node:path';
2
+ import { pathToFileURL } from 'node:url';
3
+ import { canonicalizeDefinitions, } from '@chkit/core';
4
+ import { isInlinePluginRegistration } from '../plugins.js';
5
+ const UNFILTERED_TABLE_SCOPE = {
6
+ enabled: false,
7
+ matchedTables: [],
8
+ matchCount: 0,
9
+ };
10
+ function parseCliMajor(version) {
11
+ const major = Number(version.split('.')[0] ?? Number.NaN);
12
+ if (!Number.isInteger(major) || major < 0) {
13
+ throw new Error(`Invalid CLI version "${version}" while loading plugins.`);
14
+ }
15
+ return major;
16
+ }
17
+ function normalizePluginRegistration(entry) {
18
+ if (typeof entry === 'string') {
19
+ return {
20
+ kind: 'legacy',
21
+ resolvePath: entry,
22
+ enabled: true,
23
+ options: {},
24
+ };
25
+ }
26
+ if (isInlinePluginRegistration(entry)) {
27
+ return {
28
+ kind: 'inline',
29
+ resolvePath: '',
30
+ inlinePlugin: entry.plugin,
31
+ nameHint: entry.name,
32
+ enabled: entry.enabled !== false,
33
+ options: entry.options ?? {},
34
+ };
35
+ }
36
+ const legacy = entry;
37
+ return {
38
+ kind: 'legacy',
39
+ resolvePath: legacy.resolve,
40
+ nameHint: legacy.name,
41
+ enabled: legacy.enabled !== false,
42
+ options: legacy.options ?? {},
43
+ };
44
+ }
45
+ function formatPluginError(pluginName, hook, error) {
46
+ const message = error instanceof Error ? error.message : String(error);
47
+ return new Error(`Plugin "${pluginName}" failed in ${hook}: ${message}`);
48
+ }
49
+ function validatePlugin(cliVersion, plugin, sourcePath) {
50
+ const name = plugin.manifest.name;
51
+ if (!name || name.trim().length === 0) {
52
+ throw new Error(`Plugin at ${sourcePath} has an empty manifest.name.`);
53
+ }
54
+ if (plugin.manifest.apiVersion !== 1) {
55
+ throw new Error(`Plugin "${name}" requires apiVersion=${String(plugin.manifest.apiVersion)} but CLI supports apiVersion=1.`);
56
+ }
57
+ const compatibility = plugin.manifest.compatibility?.cli;
58
+ if (!compatibility)
59
+ return;
60
+ const cliMajor = parseCliMajor(cliVersion);
61
+ if (compatibility.minMajor !== undefined && cliMajor < compatibility.minMajor) {
62
+ throw new Error(`Plugin "${name}" is incompatible with CLI ${cliVersion}. Requires cli major >= ${compatibility.minMajor}.`);
63
+ }
64
+ if (compatibility.maxMajor !== undefined && cliMajor > compatibility.maxMajor) {
65
+ throw new Error(`Plugin "${name}" is incompatible with CLI ${cliVersion}. Requires cli major <= ${compatibility.maxMajor}.`);
66
+ }
67
+ }
68
+ async function importPluginModule(absolutePath) {
69
+ const mod = (await import(pathToFileURL(absolutePath).href));
70
+ const candidate = (mod.default ?? mod.plugin);
71
+ if (!candidate || typeof candidate !== 'object') {
72
+ throw new Error(`Plugin module ${absolutePath} must export default definePlugin(...)`);
73
+ }
74
+ if (!candidate.manifest || typeof candidate.manifest !== 'object') {
75
+ throw new Error(`Plugin module ${absolutePath} is missing manifest.`);
76
+ }
77
+ return candidate;
78
+ }
79
+ export async function loadPluginRuntime(input) {
80
+ const registrations = input.config.plugins ?? [];
81
+ const loaded = [];
82
+ const byName = new Map();
83
+ const configDir = resolve(input.configPath, '..');
84
+ for (const registration of registrations) {
85
+ const normalized = normalizePluginRegistration(registration);
86
+ if (!normalized.enabled)
87
+ continue;
88
+ const plugin = normalized.kind === 'inline'
89
+ ? normalized.inlinePlugin
90
+ : await importPluginModule(resolve(configDir, normalized.resolvePath));
91
+ if (!plugin)
92
+ continue;
93
+ const sourceLabel = normalized.kind === 'inline'
94
+ ? `inline registration${normalized.nameHint ? ` (${normalized.nameHint})` : ''}`
95
+ : resolve(configDir, normalized.resolvePath);
96
+ validatePlugin(input.cliVersion, plugin, sourceLabel);
97
+ if (normalized.nameHint && normalized.nameHint !== plugin.manifest.name) {
98
+ throw new Error(`Plugin name mismatch for ${sourceLabel}: configured "${normalized.nameHint}" but manifest is "${plugin.manifest.name}".`);
99
+ }
100
+ if (byName.has(plugin.manifest.name)) {
101
+ throw new Error(`Duplicate plugin name "${plugin.manifest.name}" in config.plugins.`);
102
+ }
103
+ const item = {
104
+ plugin,
105
+ options: normalized.options,
106
+ };
107
+ loaded.push(item);
108
+ byName.set(plugin.manifest.name, item);
109
+ }
110
+ for (const plugin of input.internalPlugins ?? []) {
111
+ if (byName.has(plugin.manifest.name))
112
+ continue;
113
+ const item = { plugin, options: {} };
114
+ loaded.push(item);
115
+ byName.set(plugin.manifest.name, item);
116
+ }
117
+ return {
118
+ plugins: loaded,
119
+ getCommand(pluginName, commandName) {
120
+ const item = byName.get(pluginName);
121
+ if (!item)
122
+ return null;
123
+ const command = (item.plugin.commands ?? []).find((entry) => entry.name === commandName);
124
+ if (!command)
125
+ return null;
126
+ return { plugin: item, command };
127
+ },
128
+ async runOnInit(context) {
129
+ for (const item of loaded) {
130
+ const hook = item.plugin.hooks?.onInit;
131
+ if (!hook)
132
+ continue;
133
+ try {
134
+ await hook({ ...context, options: item.options });
135
+ }
136
+ catch (error) {
137
+ throw formatPluginError(item.plugin.manifest.name, 'onInit', error);
138
+ }
139
+ }
140
+ },
141
+ async runOnComplete(context) {
142
+ const exitCode = context.exitCode ?? 0;
143
+ for (const item of loaded) {
144
+ const hook = item.plugin.hooks?.onComplete;
145
+ if (!hook)
146
+ continue;
147
+ try {
148
+ await hook({ ...context, exitCode, options: item.options });
149
+ }
150
+ catch (error) {
151
+ throw formatPluginError(item.plugin.manifest.name, 'onComplete', error);
152
+ }
153
+ }
154
+ },
155
+ async runOnConfigLoaded(context) {
156
+ const tableScope = context.tableScope ?? UNFILTERED_TABLE_SCOPE;
157
+ for (const item of loaded) {
158
+ const hook = item.plugin.hooks?.onConfigLoaded;
159
+ if (!hook)
160
+ continue;
161
+ try {
162
+ await hook({ ...context, options: item.options, tableScope });
163
+ }
164
+ catch (error) {
165
+ throw formatPluginError(item.plugin.manifest.name, 'onConfigLoaded', error);
166
+ }
167
+ }
168
+ },
169
+ async runOnSchemaLoaded(context) {
170
+ let definitions = context.definitions;
171
+ for (const item of loaded) {
172
+ const hook = item.plugin.hooks?.onSchemaLoaded;
173
+ if (!hook)
174
+ continue;
175
+ try {
176
+ const next = await hook({ ...context, definitions });
177
+ if (Array.isArray(next)) {
178
+ definitions = canonicalizeDefinitions(next);
179
+ }
180
+ }
181
+ catch (error) {
182
+ throw formatPluginError(item.plugin.manifest.name, 'onSchemaLoaded', error);
183
+ }
184
+ }
185
+ return definitions;
186
+ },
187
+ async runOnPlanCreated(context, initialPlan) {
188
+ const tableScope = context.tableScope ?? UNFILTERED_TABLE_SCOPE;
189
+ let plan = initialPlan;
190
+ for (const item of loaded) {
191
+ const hook = item.plugin.hooks?.onPlanCreated;
192
+ if (!hook)
193
+ continue;
194
+ try {
195
+ const next = await hook({ ...context, tableScope, plan });
196
+ if (next)
197
+ plan = next;
198
+ }
199
+ catch (error) {
200
+ throw formatPluginError(item.plugin.manifest.name, 'onPlanCreated', error);
201
+ }
202
+ }
203
+ return plan;
204
+ },
205
+ async runOnBeforeApply(context) {
206
+ let statements = context.statements;
207
+ for (const item of loaded) {
208
+ const hook = item.plugin.hooks?.onBeforeApply;
209
+ if (!hook)
210
+ continue;
211
+ try {
212
+ const result = await hook({ ...context, statements });
213
+ if (result?.statements)
214
+ statements = result.statements;
215
+ }
216
+ catch (error) {
217
+ throw formatPluginError(item.plugin.manifest.name, 'onBeforeApply', error);
218
+ }
219
+ }
220
+ return statements;
221
+ },
222
+ async runOnAfterApply(context) {
223
+ for (const item of loaded) {
224
+ const hook = item.plugin.hooks?.onAfterApply;
225
+ if (!hook)
226
+ continue;
227
+ try {
228
+ await hook(context);
229
+ }
230
+ catch (error) {
231
+ throw formatPluginError(item.plugin.manifest.name, 'onAfterApply', error);
232
+ }
233
+ }
234
+ },
235
+ async runOnCheck(context) {
236
+ const tableScope = context.tableScope ?? UNFILTERED_TABLE_SCOPE;
237
+ const results = [];
238
+ for (const item of loaded) {
239
+ const hook = item.plugin.hooks?.onCheck;
240
+ if (!hook)
241
+ continue;
242
+ try {
243
+ const result = await hook({ ...context, options: item.options, tableScope });
244
+ if (!result)
245
+ continue;
246
+ results.push({
247
+ plugin: result.plugin || item.plugin.manifest.name,
248
+ evaluated: result.evaluated,
249
+ ok: result.ok,
250
+ findings: result.findings,
251
+ metadata: result.metadata,
252
+ });
253
+ }
254
+ catch (error) {
255
+ throw formatPluginError(item.plugin.manifest.name, 'onCheck', error);
256
+ }
257
+ }
258
+ return results;
259
+ },
260
+ async runOnCheckReport(results, print) {
261
+ for (const result of results) {
262
+ const item = byName.get(result.plugin);
263
+ if (!item)
264
+ continue;
265
+ const hook = item.plugin.hooks?.onCheckReport;
266
+ if (!hook)
267
+ continue;
268
+ try {
269
+ await hook({ result, print });
270
+ }
271
+ catch (error) {
272
+ throw formatPluginError(item.plugin.manifest.name, 'onCheckReport', error);
273
+ }
274
+ }
275
+ },
276
+ async runPluginCommand(pluginName, commandName, context) {
277
+ const item = byName.get(pluginName);
278
+ if (!item)
279
+ return 1;
280
+ const command = (item.plugin.commands ?? []).find((entry) => entry.name === commandName);
281
+ if (!command)
282
+ return 1;
283
+ try {
284
+ const code = await command.run({
285
+ ...context,
286
+ pluginName,
287
+ options: item.options,
288
+ tableScope: context.tableScope ?? UNFILTERED_TABLE_SCOPE,
289
+ });
290
+ return typeof code === 'number' ? code : 0;
291
+ }
292
+ catch (error) {
293
+ throw formatPluginError(item.plugin.manifest.name, `command:${commandName}`, error);
294
+ }
295
+ },
296
+ };
297
+ }
298
+ //# sourceMappingURL=plugin-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-runtime.js","sourceRoot":"","sources":["../../src/bin/plugin-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface DestructiveOperationMarker {
2
+ migration: string;
3
+ type: string;
4
+ key: string;
5
+ risk: string;
6
+ warningCode: string;
7
+ reason: string;
8
+ impact: string;
9
+ recommendation: string;
10
+ summary: string;
11
+ }
12
+ export interface MigrationOperationSummary {
13
+ type: string;
14
+ key: string;
15
+ risk: string;
16
+ summary: string;
17
+ }
18
+ export declare function extractExecutableStatements(sql: string): string[];
19
+ export declare function migrationContainsDangerOperation(sql: string): boolean;
20
+ export declare function extractDestructiveOperationSummaries(sql: string): string[];
21
+ export declare function parseOperationLine(summary: string): MigrationOperationSummary | null;
22
+ export declare function extractMigrationOperationSummaries(sql: string): MigrationOperationSummary[];
23
+ export declare function collectDestructiveOperationMarkers(migration: string, sql: string): DestructiveOperationMarker[];
24
+ //# sourceMappingURL=safety-markers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-markers.d.ts","sourceRoot":"","sources":["../../src/bin/safety-markers.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAWjE;AAED,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,wBAAgB,oCAAoC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAM1E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI,CASpF;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,EAAE,CAQ3F;AAyCD,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,0BAA0B,EAAE,CAmB9B"}
@@ -0,0 +1,94 @@
1
+ export function extractExecutableStatements(sql) {
2
+ const nonCommentLines = sql
3
+ .split('\n')
4
+ .filter((line) => !line.trim().startsWith('--'))
5
+ .join('\n');
6
+ return nonCommentLines
7
+ .split(';')
8
+ .map((part) => part.trim())
9
+ .filter((part) => part.length > 0)
10
+ .map((part) => `${part};`);
11
+ }
12
+ export function migrationContainsDangerOperation(sql) {
13
+ return extractDestructiveOperationSummaries(sql).length > 0;
14
+ }
15
+ export function extractDestructiveOperationSummaries(sql) {
16
+ return sql
17
+ .split('\n')
18
+ .map((line) => line.trim())
19
+ .filter((line) => line.startsWith('-- operation:') && line.includes('risk=danger'))
20
+ .map((line) => line.replace(/^-- operation:\s*/, ''));
21
+ }
22
+ export function parseOperationLine(summary) {
23
+ const match = summary.match(/^([a-z_]+)\s+key=([^\s]+)\s+risk=([a-z_]+)$/);
24
+ if (!match)
25
+ return null;
26
+ return {
27
+ type: match[1] ?? 'unknown',
28
+ key: match[2] ?? 'unknown',
29
+ risk: match[3] ?? 'unknown',
30
+ summary,
31
+ };
32
+ }
33
+ export function extractMigrationOperationSummaries(sql) {
34
+ return sql
35
+ .split('\n')
36
+ .map((line) => line.trim())
37
+ .filter((line) => line.startsWith('-- operation:'))
38
+ .map((line) => line.replace(/^-- operation:\s*/, ''))
39
+ .map((summary) => parseOperationLine(summary))
40
+ .filter((item) => item !== null);
41
+ }
42
+ function describeDestructiveOperation(type) {
43
+ if (type === 'drop_table') {
44
+ return {
45
+ warningCode: 'drop_table_data_loss',
46
+ reason: 'Dropping a table removes table data and metadata from the target database.',
47
+ impact: 'Queries that depend on this table will fail until it is recreated and repopulated.',
48
+ recommendation: 'Verify backups and downstream dependencies before approving.',
49
+ };
50
+ }
51
+ if (type === 'alter_table_drop_column') {
52
+ return {
53
+ warningCode: 'drop_column_irreversible',
54
+ reason: 'Dropping a column permanently removes stored values for that column.',
55
+ impact: 'Applications or analytics depending on the column will break or return incomplete data.',
56
+ recommendation: 'Confirm the column is deprecated and no readers still require it.',
57
+ };
58
+ }
59
+ if (type === 'drop_view' || type === 'drop_materialized_view') {
60
+ return {
61
+ warningCode: 'drop_view_dependency_break',
62
+ reason: 'Dropping a view removes a query interface used by clients and pipelines.',
63
+ impact: 'Dependent workloads may fail until compatible replacements are in place.',
64
+ recommendation: 'Confirm replacement view rollout and dependency readiness.',
65
+ };
66
+ }
67
+ return {
68
+ warningCode: 'destructive_operation_review_required',
69
+ reason: 'This operation is marked destructive by planner risk classification.',
70
+ impact: 'Execution may cause irreversible schema or data changes.',
71
+ recommendation: 'Review SQL and dependency impact before approving.',
72
+ };
73
+ }
74
+ export function collectDestructiveOperationMarkers(migration, sql) {
75
+ return extractDestructiveOperationSummaries(sql).map((summary) => {
76
+ const parsed = parseOperationLine(summary);
77
+ const type = parsed?.type ?? 'unknown';
78
+ const key = parsed?.key ?? 'unknown';
79
+ const risk = parsed?.risk ?? 'danger';
80
+ const detail = describeDestructiveOperation(type);
81
+ return {
82
+ migration,
83
+ type,
84
+ key,
85
+ risk,
86
+ warningCode: detail.warningCode,
87
+ reason: detail.reason,
88
+ impact: detail.impact,
89
+ recommendation: detail.recommendation,
90
+ summary,
91
+ };
92
+ });
93
+ }
94
+ //# sourceMappingURL=safety-markers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-markers.js","sourceRoot":"","sources":["../../src/bin/safety-markers.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,MAAM,eAAe,GAAG,GAAG;SACxB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC/C,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO,eAAe;SACnB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,GAAW;IAC1D,OAAO,oCAAoC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AAC7D,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,GAAW;IAC9D,OAAO,GAAG;SACP,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;SAClF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAC1E,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS;QAC3B,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS;QAC3B,OAAO;KACR,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,GAAW;IAC5D,OAAO,GAAG;SACP,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;SAClD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;SACpD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,IAAI,EAAqC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AACvE,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAY;IAMhD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO;YACL,WAAW,EAAE,sBAAsB;YACnC,MAAM,EAAE,4EAA4E;YACpF,MAAM,EAAE,oFAAoF;YAC5F,cAAc,EAAE,8DAA8D;SAC/E,CAAA;IACH,CAAC;IACD,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;QACvC,OAAO;YACL,WAAW,EAAE,0BAA0B;YACvC,MAAM,EAAE,sEAAsE;YAC9E,MAAM,EAAE,yFAAyF;YACjG,cAAc,EAAE,mEAAmE;SACpF,CAAA;IACH,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAC9D,OAAO;YACL,WAAW,EAAE,4BAA4B;YACzC,MAAM,EAAE,0EAA0E;YAClF,MAAM,EAAE,0EAA0E;YAClF,cAAc,EAAE,4DAA4D;SAC7E,CAAA;IACH,CAAC;IAED,OAAO;QACL,WAAW,EAAE,uCAAuC;QACpD,MAAM,EAAE,sEAAsE;QAC9E,MAAM,EAAE,0DAA0D;QAClE,cAAc,EAAE,oDAAoD;KACrE,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,SAAiB,EACjB,GAAW;IAEX,OAAO,oCAAoC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAC1C,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,SAAS,CAAA;QACtC,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,SAAS,CAAA;QACpC,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAA;QACrC,MAAM,MAAM,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAA;QACjD,OAAO;YACL,SAAS;YACT,IAAI;YACJ,GAAG;YACH,IAAI;YACJ,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,OAAO;SACR,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type SchemaDefinition } from '@chkit/core';
2
+ export declare function loadSchemaDefinitions(schemaGlobs: string | string[]): Promise<SchemaDefinition[]>;
3
+ //# sourceMappingURL=schema-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../../src/bin/schema-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0D,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE3G,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAEvG"}
@@ -0,0 +1,6 @@
1
+ import process from 'node:process';
2
+ import { loadSchemaDefinitions as loadSchemaDefinitionsFromCore } from '@chkit/core';
3
+ export async function loadSchemaDefinitions(schemaGlobs) {
4
+ return loadSchemaDefinitionsFromCore(schemaGlobs, { cwd: process.cwd() });
5
+ }
6
+ //# sourceMappingURL=schema-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-loader.js","sourceRoot":"","sources":["../../src/bin/schema-loader.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,OAAO,EAAE,qBAAqB,IAAI,6BAA6B,EAAyB,MAAM,aAAa,CAAA;AAE3G,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,WAA8B;IACxE,OAAO,6BAA6B,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAC3E,CAAC"}