chkit 0.1.2-beta.7 → 0.2.0-beta.8

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 (157) hide show
  1. package/README.md +35 -16
  2. package/dist/commands/drift/compare.d.ts.map +1 -1
  3. package/dist/commands/drift/compare.js +31 -3
  4. package/dist/commands/drift/compare.js.map +1 -1
  5. package/dist/commands/migrate/async-apply.d.ts.map +1 -1
  6. package/dist/commands/migrate/async-apply.js +1 -3
  7. package/dist/commands/migrate/async-apply.js.map +1 -1
  8. package/dist/runtime/config-merge.d.ts.map +1 -1
  9. package/dist/runtime/config-merge.js +2 -1
  10. package/dist/runtime/config-merge.js.map +1 -1
  11. package/dist/runtime/journal-store.d.ts.map +1 -1
  12. package/dist/runtime/journal-store.js +17 -24
  13. package/dist/runtime/journal-store.js.map +1 -1
  14. package/dist/runtime/plugin-runtime/executor-debug.d.ts.map +1 -1
  15. package/dist/runtime/plugin-runtime/executor-debug.js +2 -0
  16. package/dist/runtime/plugin-runtime/executor-debug.js.map +1 -1
  17. package/package.json +7 -6
  18. package/dist/bin/clickhouse-resource.d.ts +0 -4
  19. package/dist/bin/clickhouse-resource.d.ts.map +0 -1
  20. package/dist/bin/clickhouse-resource.js +0 -11
  21. package/dist/bin/clickhouse-resource.js.map +0 -1
  22. package/dist/bin/command-dispatch.d.ts +0 -13
  23. package/dist/bin/command-dispatch.d.ts.map +0 -1
  24. package/dist/bin/command-dispatch.js +0 -186
  25. package/dist/bin/command-dispatch.js.map +0 -1
  26. package/dist/bin/command-registry.d.ts +0 -34
  27. package/dist/bin/command-registry.d.ts.map +0 -1
  28. package/dist/bin/command-registry.js +0 -87
  29. package/dist/bin/command-registry.js.map +0 -1
  30. package/dist/bin/commands/check.d.ts +0 -3
  31. package/dist/bin/commands/check.d.ts.map +0 -1
  32. package/dist/bin/commands/check.js +0 -181
  33. package/dist/bin/commands/check.js.map +0 -1
  34. package/dist/bin/commands/codegen.d.ts +0 -2
  35. package/dist/bin/commands/codegen.d.ts.map +0 -1
  36. package/dist/bin/commands/codegen.js +0 -25
  37. package/dist/bin/commands/codegen.js.map +0 -1
  38. package/dist/bin/commands/drift.d.ts +0 -27
  39. package/dist/bin/commands/drift.d.ts.map +0 -1
  40. package/dist/bin/commands/drift.js +0 -220
  41. package/dist/bin/commands/drift.js.map +0 -1
  42. package/dist/bin/commands/generate/output.d.ts +0 -8
  43. package/dist/bin/commands/generate/output.d.ts.map +0 -1
  44. package/dist/bin/commands/generate/output.js +0 -58
  45. package/dist/bin/commands/generate/output.js.map +0 -1
  46. package/dist/bin/commands/generate/plan-pipeline.d.ts +0 -7
  47. package/dist/bin/commands/generate/plan-pipeline.d.ts.map +0 -1
  48. package/dist/bin/commands/generate/plan-pipeline.js +0 -143
  49. package/dist/bin/commands/generate/plan-pipeline.js.map +0 -1
  50. package/dist/bin/commands/generate/rename-mappings.d.ts +0 -29
  51. package/dist/bin/commands/generate/rename-mappings.d.ts.map +0 -1
  52. package/dist/bin/commands/generate/rename-mappings.js +0 -195
  53. package/dist/bin/commands/generate/rename-mappings.js.map +0 -1
  54. package/dist/bin/commands/generate.d.ts +0 -3
  55. package/dist/bin/commands/generate.d.ts.map +0 -1
  56. package/dist/bin/commands/generate.js +0 -158
  57. package/dist/bin/commands/generate.js.map +0 -1
  58. package/dist/bin/commands/init.d.ts +0 -2
  59. package/dist/bin/commands/init.d.ts.map +0 -1
  60. package/dist/bin/commands/init.js +0 -12
  61. package/dist/bin/commands/init.js.map +0 -1
  62. package/dist/bin/commands/migrate.d.ts +0 -3
  63. package/dist/bin/commands/migrate.d.ts.map +0 -1
  64. package/dist/bin/commands/migrate.js +0 -288
  65. package/dist/bin/commands/migrate.js.map +0 -1
  66. package/dist/bin/commands/plugin-like.d.ts +0 -38
  67. package/dist/bin/commands/plugin-like.d.ts.map +0 -1
  68. package/dist/bin/commands/plugin-like.js +0 -101
  69. package/dist/bin/commands/plugin-like.js.map +0 -1
  70. package/dist/bin/commands/plugin.d.ts +0 -3
  71. package/dist/bin/commands/plugin.d.ts.map +0 -1
  72. package/dist/bin/commands/plugin.js +0 -148
  73. package/dist/bin/commands/plugin.js.map +0 -1
  74. package/dist/bin/commands/pull.d.ts +0 -2
  75. package/dist/bin/commands/pull.d.ts.map +0 -1
  76. package/dist/bin/commands/pull.js +0 -25
  77. package/dist/bin/commands/pull.js.map +0 -1
  78. package/dist/bin/commands/status.d.ts +0 -3
  79. package/dist/bin/commands/status.d.ts.map +0 -1
  80. package/dist/bin/commands/status.js +0 -63
  81. package/dist/bin/commands/status.js.map +0 -1
  82. package/dist/bin/commands/typegen.d.ts +0 -2
  83. package/dist/bin/commands/typegen.d.ts.map +0 -1
  84. package/dist/bin/commands/typegen.js +0 -25
  85. package/dist/bin/commands/typegen.js.map +0 -1
  86. package/dist/bin/config.d.ts +0 -13
  87. package/dist/bin/config.d.ts.map +0 -1
  88. package/dist/bin/config.js +0 -48
  89. package/dist/bin/config.js.map +0 -1
  90. package/dist/bin/debug.d.ts +0 -3
  91. package/dist/bin/debug.d.ts.map +0 -1
  92. package/dist/bin/debug.js +0 -14
  93. package/dist/bin/debug.js.map +0 -1
  94. package/dist/bin/global-flags.d.ts +0 -16
  95. package/dist/bin/global-flags.d.ts.map +0 -1
  96. package/dist/bin/global-flags.js +0 -7
  97. package/dist/bin/global-flags.js.map +0 -1
  98. package/dist/bin/help.d.ts +0 -5
  99. package/dist/bin/help.d.ts.map +0 -1
  100. package/dist/bin/help.js +0 -84
  101. package/dist/bin/help.js.map +0 -1
  102. package/dist/bin/internal-plugins/index.d.ts +0 -3
  103. package/dist/bin/internal-plugins/index.d.ts.map +0 -1
  104. package/dist/bin/internal-plugins/index.js +0 -5
  105. package/dist/bin/internal-plugins/index.js.map +0 -1
  106. package/dist/bin/internal-plugins/skill-hint.d.ts +0 -31
  107. package/dist/bin/internal-plugins/skill-hint.d.ts.map +0 -1
  108. package/dist/bin/internal-plugins/skill-hint.js +0 -172
  109. package/dist/bin/internal-plugins/skill-hint.js.map +0 -1
  110. package/dist/bin/journal-store.d.ts +0 -10
  111. package/dist/bin/journal-store.d.ts.map +0 -1
  112. package/dist/bin/journal-store.js +0 -137
  113. package/dist/bin/journal-store.js.map +0 -1
  114. package/dist/bin/json-output.d.ts +0 -5
  115. package/dist/bin/json-output.d.ts.map +0 -1
  116. package/dist/bin/json-output.js +0 -21
  117. package/dist/bin/json-output.js.map +0 -1
  118. package/dist/bin/lib.d.ts +0 -5
  119. package/dist/bin/lib.d.ts.map +0 -1
  120. package/dist/bin/lib.js +0 -5
  121. package/dist/bin/lib.js.map +0 -1
  122. package/dist/bin/logging.d.ts +0 -3
  123. package/dist/bin/logging.d.ts.map +0 -1
  124. package/dist/bin/logging.js +0 -31
  125. package/dist/bin/logging.js.map +0 -1
  126. package/dist/bin/migration-store.d.ts +0 -22
  127. package/dist/bin/migration-store.d.ts.map +0 -1
  128. package/dist/bin/migration-store.js +0 -60
  129. package/dist/bin/migration-store.js.map +0 -1
  130. package/dist/bin/plugin-runtime.d.ts +0 -45
  131. package/dist/bin/plugin-runtime.d.ts.map +0 -1
  132. package/dist/bin/plugin-runtime.js +0 -513
  133. package/dist/bin/plugin-runtime.js.map +0 -1
  134. package/dist/bin/safety-markers.d.ts +0 -23
  135. package/dist/bin/safety-markers.d.ts.map +0 -1
  136. package/dist/bin/safety-markers.js +0 -85
  137. package/dist/bin/safety-markers.js.map +0 -1
  138. package/dist/bin/schema-loader.d.ts +0 -3
  139. package/dist/bin/schema-loader.d.ts.map +0 -1
  140. package/dist/bin/schema-loader.js +0 -11
  141. package/dist/bin/schema-loader.js.map +0 -1
  142. package/dist/bin/table-scope.d.ts +0 -38
  143. package/dist/bin/table-scope.d.ts.map +0 -1
  144. package/dist/bin/table-scope.js +0 -167
  145. package/dist/bin/table-scope.js.map +0 -1
  146. package/dist/bin/version.d.ts +0 -2
  147. package/dist/bin/version.d.ts.map +0 -1
  148. package/dist/bin/version.js +0 -5
  149. package/dist/bin/version.js.map +0 -1
  150. package/dist/drift-diff.d.ts +0 -8
  151. package/dist/drift-diff.d.ts.map +0 -1
  152. package/dist/drift-diff.js +0 -46
  153. package/dist/drift-diff.js.map +0 -1
  154. package/dist/drift.d.ts +0 -66
  155. package/dist/drift.d.ts.map +0 -1
  156. package/dist/drift.js +0 -220
  157. package/dist/drift.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"safety-markers.js","sourceRoot":"","sources":["../../src/bin/safety-markers.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { SchemaDefinition } from '@chkit/core';
2
- export declare function loadSchemaDefinitions(schemaGlobs: string | string[]): Promise<SchemaDefinition[]>;
3
- //# sourceMappingURL=schema-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../../src/bin/schema-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAGnD,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAMvG"}
@@ -1,11 +0,0 @@
1
- import process from 'node:process';
2
- import { loadSchemaDefinitions as loadSchemaDefinitionsFromCore } from '@chkit/core/schema-loader';
3
- import { debug } from './debug.js';
4
- export async function loadSchemaDefinitions(schemaGlobs) {
5
- const globs = Array.isArray(schemaGlobs) ? schemaGlobs : [schemaGlobs];
6
- debug('schema', `loading definitions from globs: [${globs.join(', ')}] (cwd: ${process.cwd()})`);
7
- const definitions = await loadSchemaDefinitionsFromCore(schemaGlobs, { cwd: process.cwd() });
8
- debug('schema', `loaded ${definitions.length} schema definitions`);
9
- return definitions;
10
- }
11
- //# sourceMappingURL=schema-loader.js.map
@@ -1 +0,0 @@
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,EAAE,MAAM,2BAA2B,CAAA;AAElG,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,WAA8B;IACxE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IACtE,KAAK,CAAC,QAAQ,EAAE,oCAAoC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAChG,MAAM,WAAW,GAAG,MAAM,6BAA6B,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC5F,KAAK,CAAC,QAAQ,EAAE,UAAU,WAAW,CAAC,MAAM,qBAAqB,CAAC,CAAA;IAClE,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -1,38 +0,0 @@
1
- import type { MigrationPlan, SchemaDefinition } from '@chkit/core';
2
- interface ParsedTableSelector {
3
- database?: string;
4
- mode: 'exact' | 'prefix';
5
- value: string;
6
- }
7
- export interface TableScope {
8
- enabled: boolean;
9
- selector?: string;
10
- matchedTables: string[];
11
- matchCount: number;
12
- }
13
- interface TableScopeFilterResult {
14
- plan: MigrationPlan;
15
- omittedOperationCount: number;
16
- }
17
- interface TableRenameMapping {
18
- oldDatabase: string;
19
- oldName: string;
20
- newDatabase: string;
21
- newName: string;
22
- }
23
- export declare function tableKeysFromDefinitions(definitions: SchemaDefinition[]): string[];
24
- export declare function parseTableSelector(input: string): ParsedTableSelector;
25
- export declare function resolveTableScope(selector: string | undefined, availableTables: string[]): TableScope;
26
- export declare function tableKeyFromOperationKey(operationKey: string): string | null;
27
- export declare function databaseKeyFromOperationKey(operationKey: string): string | null;
28
- export declare function filterPlanByTableScope(plan: MigrationPlan, matchedTables: ReadonlySet<string>, options?: {
29
- renameMappings?: TableRenameMapping[];
30
- }): TableScopeFilterResult;
31
- export declare function buildScopedSnapshotDefinitions(input: {
32
- previousDefinitions: SchemaDefinition[];
33
- nextDefinitions: SchemaDefinition[];
34
- matchedTables: ReadonlySet<string>;
35
- renameMappings?: TableRenameMapping[];
36
- }): SchemaDefinition[];
37
- export {};
38
- //# sourceMappingURL=table-scope.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-scope.d.ts","sourceRoot":"","sources":["../../src/bin/table-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,gBAAgB,EAEjB,MAAM,aAAa,CAAA;AAEpB,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,aAAa,CAAA;IACnB,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAMD,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,MAAM,EAAE,CAElF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAyDrE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,UAAU,CA4BrG;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5E;AAED,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/E;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,EAClC,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAAO,GACtD,sBAAsB,CAqDxB;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;IACvC,eAAe,EAAE,gBAAgB,EAAE,CAAA;IACnC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAClC,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAA;CACtC,GAAG,gBAAgB,EAAE,CAqCrB"}
@@ -1,167 +0,0 @@
1
- function tableKey(database, name) {
2
- return `${database}.${name}`;
3
- }
4
- export function tableKeysFromDefinitions(definitions) {
5
- return [...new Set(definitions.filter((def) => def.kind === 'table').map((def) => tableKey(def.database, def.name)))].sort((a, b) => a.localeCompare(b));
6
- }
7
- export function parseTableSelector(input) {
8
- const selector = input.trim();
9
- if (!selector) {
10
- throw new Error('Invalid --table selector "". Expected <table>, <table_prefix*>, <database.table>, or <database.table_prefix*>.');
11
- }
12
- const dot = selector.indexOf('.');
13
- const [database, tableToken] = dot === -1
14
- ? [undefined, selector]
15
- : [selector.slice(0, dot).trim(), selector.slice(dot + 1).trim()];
16
- if (database !== undefined && (database.length === 0 || database.includes('*'))) {
17
- throw new Error(`Invalid --table selector "${selector}". Database qualifier must be non-empty and cannot contain "*".`);
18
- }
19
- if (!tableToken || tableToken === '*') {
20
- throw new Error(`Invalid --table selector "${selector}". A bare "*" is not supported; use an exact table or trailing wildcard prefix.`);
21
- }
22
- const wildcardCount = [...tableToken].filter((char) => char === '*').length;
23
- if (wildcardCount > 1 || (wildcardCount === 1 && !tableToken.endsWith('*'))) {
24
- throw new Error(`Invalid --table selector "${selector}". "*" is only allowed as a trailing suffix (for example, events_*).`);
25
- }
26
- if (tableToken.slice(0, -1).includes('*')) {
27
- throw new Error(`Invalid --table selector "${selector}". "*" is only allowed as a trailing suffix (for example, events_*).`);
28
- }
29
- if (tableToken.endsWith('*')) {
30
- const value = tableToken.slice(0, -1);
31
- if (!value) {
32
- throw new Error(`Invalid --table selector "${selector}". A bare "*" is not supported; use an exact table or trailing wildcard prefix.`);
33
- }
34
- return {
35
- database,
36
- mode: 'prefix',
37
- value,
38
- };
39
- }
40
- return {
41
- database,
42
- mode: 'exact',
43
- value: tableToken,
44
- };
45
- }
46
- export function resolveTableScope(selector, availableTables) {
47
- if (!selector) {
48
- return {
49
- enabled: false,
50
- matchedTables: [],
51
- matchCount: 0,
52
- };
53
- }
54
- const parsed = parseTableSelector(selector);
55
- const normalized = [...new Set(availableTables)].sort((a, b) => a.localeCompare(b));
56
- const matchedTables = normalized.filter((candidate) => {
57
- const dot = candidate.indexOf('.');
58
- if (dot <= 0 || dot === candidate.length - 1)
59
- return false;
60
- const database = candidate.slice(0, dot);
61
- const table = candidate.slice(dot + 1);
62
- if (parsed.database && parsed.database !== database)
63
- return false;
64
- if (parsed.mode === 'exact')
65
- return table === parsed.value;
66
- return table.startsWith(parsed.value);
67
- });
68
- return {
69
- enabled: true,
70
- selector,
71
- matchedTables,
72
- matchCount: matchedTables.length,
73
- };
74
- }
75
- export function tableKeyFromOperationKey(operationKey) {
76
- if (!operationKey.startsWith('table:'))
77
- return null;
78
- const target = operationKey.slice('table:'.length);
79
- const nextSegment = target.indexOf(':');
80
- return nextSegment === -1 ? target : target.slice(0, nextSegment);
81
- }
82
- export function databaseKeyFromOperationKey(operationKey) {
83
- if (!operationKey.startsWith('database:'))
84
- return null;
85
- return operationKey.slice('database:'.length);
86
- }
87
- export function filterPlanByTableScope(plan, matchedTables, options = {}) {
88
- if (matchedTables.size === 0) {
89
- return {
90
- plan: {
91
- operations: [],
92
- renameSuggestions: [],
93
- riskSummary: { safe: 0, caution: 0, danger: 0 },
94
- },
95
- omittedOperationCount: plan.operations.length,
96
- };
97
- }
98
- const selectedTables = new Set(matchedTables);
99
- for (const mapping of options.renameMappings ?? []) {
100
- const oldKey = tableKey(mapping.oldDatabase, mapping.oldName);
101
- const newKey = tableKey(mapping.newDatabase, mapping.newName);
102
- if (selectedTables.has(oldKey) || selectedTables.has(newKey)) {
103
- selectedTables.add(oldKey);
104
- selectedTables.add(newKey);
105
- }
106
- }
107
- const selectedDatabases = new Set([...selectedTables].map((value) => value.split('.')[0] ?? ''));
108
- const operations = plan.operations.filter((operation) => {
109
- const targetTable = tableKeyFromOperationKey(operation.key);
110
- if (targetTable)
111
- return selectedTables.has(targetTable);
112
- const targetDatabase = databaseKeyFromOperationKey(operation.key);
113
- if (targetDatabase)
114
- return selectedDatabases.has(targetDatabase);
115
- return false;
116
- });
117
- const renameSuggestions = plan.renameSuggestions.filter((suggestion) => selectedTables.has(tableKey(suggestion.database, suggestion.table)));
118
- const riskSummary = operations.reduce((summary, operation) => {
119
- summary[operation.risk] += 1;
120
- return summary;
121
- }, { safe: 0, caution: 0, danger: 0 });
122
- return {
123
- plan: {
124
- operations,
125
- renameSuggestions,
126
- riskSummary,
127
- },
128
- omittedOperationCount: plan.operations.length - operations.length,
129
- };
130
- }
131
- export function buildScopedSnapshotDefinitions(input) {
132
- if (input.matchedTables.size === 0)
133
- return input.previousDefinitions;
134
- const selectedTables = new Set(input.matchedTables);
135
- for (const mapping of input.renameMappings ?? []) {
136
- const oldKey = tableKey(mapping.oldDatabase, mapping.oldName);
137
- const newKey = tableKey(mapping.newDatabase, mapping.newName);
138
- if (selectedTables.has(oldKey) || selectedTables.has(newKey)) {
139
- selectedTables.add(oldKey);
140
- selectedTables.add(newKey);
141
- }
142
- }
143
- const result = new Map();
144
- for (const definition of input.previousDefinitions) {
145
- result.set(`${definition.kind}:${definition.database}.${definition.name}`, definition);
146
- }
147
- for (const [key, definition] of [...result.entries()]) {
148
- if (definition.kind !== 'table')
149
- continue;
150
- const currentTableKey = tableKey(definition.database, definition.name);
151
- if (!selectedTables.has(currentTableKey))
152
- continue;
153
- const stillExists = input.nextDefinitions.some((item) => item.kind === 'table' && tableKey(item.database, item.name) === currentTableKey);
154
- if (!stillExists)
155
- result.delete(key);
156
- }
157
- for (const definition of input.nextDefinitions) {
158
- if (definition.kind !== 'table')
159
- continue;
160
- const currentTableKey = tableKey(definition.database, definition.name);
161
- if (!selectedTables.has(currentTableKey))
162
- continue;
163
- result.set(`${definition.kind}:${definition.database}.${definition.name}`, definition);
164
- }
165
- return [...result.values()];
166
- }
167
- //# sourceMappingURL=table-scope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-scope.js","sourceRoot":"","sources":["../../src/bin/table-scope.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare const CLI_VERSION: string;
2
- //# sourceMappingURL=version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/bin/version.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,QAAc,CAAA"}
@@ -1,5 +0,0 @@
1
- import { createRequire } from 'node:module';
2
- const require = createRequire(import.meta.url);
3
- const pkg = require('../../package.json');
4
- export const CLI_VERSION = pkg.version;
5
- //# sourceMappingURL=version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/bin/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAA;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAA"}
@@ -1,8 +0,0 @@
1
- export declare function diffByName<T>(expectedItems: readonly T[], actualItems: readonly T[], getName: (item: T) => string, getShape: (item: T) => string): {
2
- missing: string[];
3
- extra: string[];
4
- changed: string[];
5
- };
6
- export declare function diffSettings(expectedSettings: Record<string, string | number | boolean>, actualSettings: Record<string, string>): string[];
7
- export declare function diffNamedShapeMaps(expected: ReadonlyMap<string, string>, actual: ReadonlyMap<string, string>): string[];
8
- //# sourceMappingURL=drift-diff.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drift-diff.d.ts","sourceRoot":"","sources":["../src/drift-diff.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,CAAC,EAC1B,aAAa,EAAE,SAAS,CAAC,EAAE,EAC3B,WAAW,EAAE,SAAS,CAAC,EAAE,EACzB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAC5B;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAyB3D;AAED,wBAAgB,YAAY,CAC1B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAC3D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,MAAM,EAAE,CAWV;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,EAAE,CASV"}
@@ -1,46 +0,0 @@
1
- export function diffByName(expectedItems, actualItems, getName, getShape) {
2
- const expected = new Map(expectedItems.map((item) => [getName(item), getShape(item)]));
3
- const actual = new Map(actualItems.map((item) => [getName(item), getShape(item)]));
4
- const missing = [];
5
- const extra = [];
6
- const changed = [];
7
- for (const [name, expectedShape] of expected.entries()) {
8
- const actualShape = actual.get(name);
9
- if (!actualShape) {
10
- missing.push(name);
11
- continue;
12
- }
13
- if (actualShape !== expectedShape) {
14
- changed.push(name);
15
- }
16
- }
17
- for (const name of actual.keys()) {
18
- if (!expected.has(name)) {
19
- extra.push(name);
20
- }
21
- }
22
- return { missing, extra, changed };
23
- }
24
- export function diffSettings(expectedSettings, actualSettings) {
25
- const settingKeys = Object.keys(expectedSettings).sort();
26
- const diffs = [];
27
- for (const key of settingKeys) {
28
- const left = key in expectedSettings ? String(expectedSettings[key]) : '';
29
- const right = key in actualSettings ? String(actualSettings[key]) : '';
30
- if (left !== right) {
31
- diffs.push(key);
32
- }
33
- }
34
- return diffs;
35
- }
36
- export function diffNamedShapeMaps(expected, actual) {
37
- const keys = [...new Set([...expected.keys(), ...actual.keys()])].sort();
38
- const diffs = [];
39
- for (const key of keys) {
40
- if ((expected.get(key) ?? '') !== (actual.get(key) ?? '')) {
41
- diffs.push(key);
42
- }
43
- }
44
- return diffs;
45
- }
46
- //# sourceMappingURL=drift-diff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drift-diff.js","sourceRoot":"","sources":["../src/drift-diff.ts"],"names":[],"mappings":"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"}
package/dist/drift.d.ts DELETED
@@ -1,66 +0,0 @@
1
- import { type ColumnDefinition, type ProjectionDefinition, type SkipIndexDefinition, type TableDefinition } from '@chkit/core';
2
- type TableDriftReasonCode = 'missing_column' | 'extra_column' | 'changed_column' | 'setting_mismatch' | 'index_mismatch' | 'ttl_mismatch' | 'engine_mismatch' | 'primary_key_mismatch' | 'order_by_mismatch' | 'partition_by_mismatch' | 'unique_key_mismatch' | 'projection_mismatch';
3
- type ObjectDriftReasonCode = 'missing_object' | 'extra_object' | 'kind_mismatch';
4
- type DriftReasonCode = ObjectDriftReasonCode | TableDriftReasonCode;
5
- interface SchemaObjectShape {
6
- kind: 'table' | 'view' | 'materialized_view';
7
- database: string;
8
- name: string;
9
- }
10
- export interface ObjectDriftDetail {
11
- code: ObjectDriftReasonCode;
12
- object: string;
13
- expectedKind?: SchemaObjectShape['kind'];
14
- actualKind?: SchemaObjectShape['kind'];
15
- }
16
- interface ActualTableShape {
17
- columns: ColumnDefinition[];
18
- settings: Record<string, string>;
19
- indexes: SkipIndexDefinition[];
20
- ttl?: string;
21
- engine?: string;
22
- primaryKey?: string;
23
- orderBy?: string;
24
- uniqueKey?: string;
25
- partitionBy?: string;
26
- projections: ProjectionDefinition[];
27
- }
28
- export interface TableDriftDetail {
29
- table: string;
30
- reasonCodes: TableDriftReasonCode[];
31
- missingColumns: string[];
32
- extraColumns: string[];
33
- changedColumns: string[];
34
- settingDiffs: string[];
35
- indexDiffs: string[];
36
- ttlMismatch: boolean;
37
- engineMismatch: boolean;
38
- primaryKeyMismatch: boolean;
39
- orderByMismatch: boolean;
40
- uniqueKeyMismatch: boolean;
41
- partitionByMismatch: boolean;
42
- projectionDiffs: string[];
43
- }
44
- interface DriftReasonSummary {
45
- counts: Partial<Record<DriftReasonCode, number>>;
46
- total: number;
47
- object: number;
48
- table: number;
49
- }
50
- export declare function compareSchemaObjects(expectedObjects: SchemaObjectShape[], actualObjects: SchemaObjectShape[]): {
51
- missing: string[];
52
- extra: string[];
53
- kindMismatches: Array<{
54
- expected: string;
55
- actual: string;
56
- object: string;
57
- }>;
58
- objectDrift: ObjectDriftDetail[];
59
- };
60
- export declare function summarizeDriftReasons(input: {
61
- objectDrift: ObjectDriftDetail[];
62
- tableDrift: TableDriftDetail[];
63
- }): DriftReasonSummary;
64
- export declare function compareTableShape(expected: TableDefinition, actual: ActualTableShape): TableDriftDetail | null;
65
- export {};
66
- //# sourceMappingURL=drift.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../src/drift.ts"],"names":[],"mappings":"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"}
package/dist/drift.js DELETED
@@ -1,220 +0,0 @@
1
- import { normalizeEngine as coreNormalizeEngine, normalizeSQLFragment, } from '@chkit/core';
2
- import { diffByName, diffNamedShapeMaps, diffSettings } from './drift-diff.js';
3
- function schemaObjectKey(item) {
4
- return `${item.kind}:${item.database}.${item.name}`;
5
- }
6
- export function compareSchemaObjects(expectedObjects, actualObjects) {
7
- const expectedMap = new Map(expectedObjects.map((item) => [schemaObjectKey(item), item.kind]));
8
- const actualMap = new Map(actualObjects.map((item) => [schemaObjectKey(item), item.kind]));
9
- const missing = [];
10
- const extra = [];
11
- const kindMismatches = [];
12
- const objectDrift = [];
13
- for (const [key, kind] of expectedMap.entries()) {
14
- const rest = key.slice(key.indexOf(':') + 1);
15
- const actualKind = actualMap.get(key);
16
- if (actualKind)
17
- continue;
18
- const sameObjectDifferentKind = [...actualMap.entries()].find(([actualKey]) => actualKey.endsWith(`:${rest}`));
19
- if (sameObjectDifferentKind) {
20
- const mismatch = {
21
- object: rest,
22
- expected: kind,
23
- actual: sameObjectDifferentKind[1],
24
- };
25
- kindMismatches.push(mismatch);
26
- objectDrift.push({
27
- code: 'kind_mismatch',
28
- object: rest,
29
- expectedKind: mismatch.expected,
30
- actualKind: mismatch.actual,
31
- });
32
- continue;
33
- }
34
- missing.push(key);
35
- objectDrift.push({
36
- code: 'missing_object',
37
- object: key,
38
- expectedKind: kind,
39
- });
40
- }
41
- for (const [key, kind] of actualMap.entries()) {
42
- if (expectedMap.has(key))
43
- continue;
44
- const rest = key.slice(key.indexOf(':') + 1);
45
- const hasExpectedWithDifferentKind = [...expectedMap.keys()].some((expectedKey) => expectedKey.endsWith(`:${rest}`));
46
- if (hasExpectedWithDifferentKind)
47
- continue;
48
- extra.push(key);
49
- objectDrift.push({
50
- code: 'extra_object',
51
- object: key,
52
- actualKind: kind,
53
- });
54
- }
55
- return {
56
- missing,
57
- extra,
58
- kindMismatches,
59
- objectDrift,
60
- };
61
- }
62
- export function summarizeDriftReasons(input) {
63
- const counts = {};
64
- let object = 0;
65
- let table = 0;
66
- for (const item of input.objectDrift) {
67
- counts[item.code] = (counts[item.code] ?? 0) + 1;
68
- object += 1;
69
- }
70
- for (const tableDrift of input.tableDrift) {
71
- for (const code of tableDrift.reasonCodes) {
72
- counts[code] = (counts[code] ?? 0) + 1;
73
- table += 1;
74
- }
75
- }
76
- return {
77
- counts,
78
- total: object + table,
79
- object,
80
- table,
81
- };
82
- }
83
- function normalizeColumnShape(column) {
84
- const normalizeDefaultValue = (value) => {
85
- const normalized = normalizeSQLFragment(value);
86
- const quoted = normalized.match(/^'(.*)'$/);
87
- if (!quoted)
88
- return normalized;
89
- return (quoted[1] ?? '').replace(/''/g, "'");
90
- };
91
- const normalizedDefault = (() => {
92
- if (column.default === undefined)
93
- return '';
94
- const asString = String(column.default);
95
- if (asString.startsWith('fn:'))
96
- return normalizeDefaultValue(asString.slice(3));
97
- return normalizeDefaultValue(asString);
98
- })();
99
- const parts = [
100
- `type=${String(column.type).trim()}`,
101
- `nullable=${column.nullable ? '1' : '0'}`,
102
- `default=${normalizedDefault}`,
103
- `comment=${column.comment?.trim() ?? ''}`,
104
- ];
105
- return parts.join('|');
106
- }
107
- function renderIndexTypeFingerprint(index) {
108
- switch (index.type) {
109
- case 'minmax':
110
- return 'minmax';
111
- case 'set':
112
- return `set(${index.maxRows})`;
113
- case 'bloom_filter':
114
- return index.falsePositiveRate !== undefined
115
- ? `bloom_filter(${index.falsePositiveRate})`
116
- : 'bloom_filter';
117
- case 'tokenbf_v1':
118
- return `tokenbf_v1(${index.sizeBytes}, ${index.hashFunctions}, ${index.randomSeed})`;
119
- case 'ngrambf_v1':
120
- return `ngrambf_v1(${index.ngramSize}, ${index.sizeBytes}, ${index.hashFunctions}, ${index.randomSeed})`;
121
- }
122
- }
123
- function normalizeIndexShape(index) {
124
- return [
125
- `expr=${normalizeSQLFragment(index.expression)}`,
126
- `type=${renderIndexTypeFingerprint(index)}`,
127
- `granularity=${index.granularity}`,
128
- ].join('|');
129
- }
130
- function normalizeProjectionShape(projection) {
131
- return `query=${normalizeSQLFragment(projection.query)}`;
132
- }
133
- function normalizeClause(value) {
134
- if (!value)
135
- return '';
136
- const normalized = normalizeSQLFragment(value).replace(/`/g, '');
137
- const wrapped = normalized.match(/^\((.*)\)$/);
138
- return wrapped?.[1] ? normalizeSQLFragment(wrapped[1]) : normalized;
139
- }
140
- function normalizeEngine(value) {
141
- if (!value)
142
- return '';
143
- return coreNormalizeEngine(normalizeSQLFragment(value)).toLowerCase();
144
- }
145
- export function compareTableShape(expected, actual) {
146
- const columnDiff = diffByName(expected.columns, actual.columns, (column) => column.name, normalizeColumnShape);
147
- const missingColumns = columnDiff.missing;
148
- const extraColumns = columnDiff.extra;
149
- const changedColumns = columnDiff.changed;
150
- const settingDiffs = diffSettings(expected.settings ?? {}, actual.settings);
151
- const expectedIndexes = new Map((expected.indexes ?? []).map((idx) => [idx.name, normalizeIndexShape(idx)]));
152
- const actualIndexes = new Map(actual.indexes.map((idx) => [idx.name, normalizeIndexShape(idx)]));
153
- const indexDiffs = diffNamedShapeMaps(expectedIndexes, actualIndexes);
154
- const expectedTTL = expected.ttl ? normalizeSQLFragment(expected.ttl) : '';
155
- const actualTTL = actual.ttl ? normalizeSQLFragment(actual.ttl) : '';
156
- const ttlMismatch = expectedTTL !== actualTTL;
157
- const engineMismatch = normalizeEngine(expected.engine) !== normalizeEngine(actual.engine);
158
- const expectedPrimaryKey = normalizeClause(expected.primaryKey.join(', '));
159
- const actualPrimaryKey = normalizeClause(actual.primaryKey);
160
- const primaryKeyMismatch = expectedPrimaryKey !== actualPrimaryKey;
161
- const expectedOrderBy = normalizeClause(expected.orderBy.join(', '));
162
- const actualOrderBy = normalizeClause(actual.orderBy);
163
- const orderByMismatch = expectedOrderBy !== actualOrderBy;
164
- const expectedUniqueKey = normalizeClause((expected.uniqueKey ?? []).join(', '));
165
- const actualUniqueKey = normalizeClause(actual.uniqueKey);
166
- const uniqueKeyMismatch = expectedUniqueKey !== actualUniqueKey;
167
- const expectedPartitionBy = normalizeClause(expected.partitionBy);
168
- const actualPartitionBy = normalizeClause(actual.partitionBy);
169
- const partitionByMismatch = expectedPartitionBy !== actualPartitionBy;
170
- const expectedProjections = new Map((expected.projections ?? []).map((projection) => [
171
- projection.name,
172
- normalizeProjectionShape(projection),
173
- ]));
174
- const actualProjections = new Map(actual.projections.map((projection) => [projection.name, normalizeProjectionShape(projection)]));
175
- const projectionDiffs = diffNamedShapeMaps(expectedProjections, actualProjections);
176
- const reasonCodes = [];
177
- if (missingColumns.length > 0)
178
- reasonCodes.push('missing_column');
179
- if (extraColumns.length > 0)
180
- reasonCodes.push('extra_column');
181
- if (changedColumns.length > 0)
182
- reasonCodes.push('changed_column');
183
- if (settingDiffs.length > 0)
184
- reasonCodes.push('setting_mismatch');
185
- if (indexDiffs.length > 0)
186
- reasonCodes.push('index_mismatch');
187
- if (ttlMismatch)
188
- reasonCodes.push('ttl_mismatch');
189
- if (engineMismatch)
190
- reasonCodes.push('engine_mismatch');
191
- if (primaryKeyMismatch)
192
- reasonCodes.push('primary_key_mismatch');
193
- if (orderByMismatch)
194
- reasonCodes.push('order_by_mismatch');
195
- if (uniqueKeyMismatch)
196
- reasonCodes.push('unique_key_mismatch');
197
- if (partitionByMismatch)
198
- reasonCodes.push('partition_by_mismatch');
199
- if (projectionDiffs.length > 0)
200
- reasonCodes.push('projection_mismatch');
201
- if (reasonCodes.length === 0)
202
- return null;
203
- return {
204
- table: `${expected.database}.${expected.name}`,
205
- reasonCodes,
206
- missingColumns: missingColumns.sort((a, b) => a.localeCompare(b)),
207
- extraColumns: extraColumns.sort((a, b) => a.localeCompare(b)),
208
- changedColumns: changedColumns.sort((a, b) => a.localeCompare(b)),
209
- settingDiffs,
210
- indexDiffs,
211
- ttlMismatch,
212
- engineMismatch,
213
- primaryKeyMismatch,
214
- orderByMismatch,
215
- uniqueKeyMismatch,
216
- partitionByMismatch,
217
- projectionDiffs,
218
- };
219
- }
220
- //# sourceMappingURL=drift.js.map