chkit 0.1.0-beta.21 → 0.1.0-beta.22

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 (219) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/chkit.js +123 -95
  3. package/dist/bin/chkit.js.map +1 -1
  4. package/dist/bin/command-dispatch.d.ts +0 -5
  5. package/dist/bin/command-dispatch.d.ts.map +1 -1
  6. package/dist/bin/command-dispatch.js +1 -1
  7. package/dist/bin/command-dispatch.js.map +1 -1
  8. package/dist/bin/commands/drift.d.ts +2 -1
  9. package/dist/bin/commands/drift.d.ts.map +1 -1
  10. package/dist/bin/internal-plugins/skill-hint.d.ts +1 -6
  11. package/dist/bin/internal-plugins/skill-hint.d.ts.map +1 -1
  12. package/dist/bin/internal-plugins/skill-hint.js +1 -1
  13. package/dist/bin/internal-plugins/skill-hint.js.map +1 -1
  14. package/dist/bin/journal-store.d.ts +2 -6
  15. package/dist/bin/journal-store.d.ts.map +1 -1
  16. package/dist/bin/journal-store.js +1 -5
  17. package/dist/bin/journal-store.js.map +1 -1
  18. package/dist/bin/json-output.d.ts +2 -5
  19. package/dist/bin/json-output.d.ts.map +1 -1
  20. package/dist/bin/json-output.js +1 -1
  21. package/dist/bin/json-output.js.map +1 -1
  22. package/dist/bin/lib.d.ts +2 -5
  23. package/dist/bin/lib.d.ts.map +1 -1
  24. package/dist/bin/lib.js +2 -5
  25. package/dist/bin/lib.js.map +1 -1
  26. package/dist/bin/migration-store.d.ts +2 -2
  27. package/dist/bin/migration-store.d.ts.map +1 -1
  28. package/dist/bin/migration-store.js +1 -1
  29. package/dist/bin/migration-store.js.map +1 -1
  30. package/dist/bin/safety-markers.d.ts +1 -3
  31. package/dist/bin/safety-markers.d.ts.map +1 -1
  32. package/dist/bin/safety-markers.js +2 -2
  33. package/dist/bin/safety-markers.js.map +1 -1
  34. package/dist/bin/table-scope.d.ts +1 -2
  35. package/dist/bin/table-scope.d.ts.map +1 -1
  36. package/dist/bin/table-scope.js +1 -1
  37. package/dist/bin/table-scope.js.map +1 -1
  38. package/dist/commands/check/command.d.ts +3 -0
  39. package/dist/commands/check/command.d.ts.map +1 -0
  40. package/dist/commands/check/command.js +105 -0
  41. package/dist/commands/check/command.js.map +1 -0
  42. package/dist/commands/check/output.d.ts +35 -0
  43. package/dist/commands/check/output.d.ts.map +1 -0
  44. package/dist/commands/check/output.js +105 -0
  45. package/dist/commands/check/output.js.map +1 -0
  46. package/dist/commands/drift/command.d.ts +3 -0
  47. package/dist/commands/drift/command.d.ts.map +1 -0
  48. package/dist/commands/drift/command.js +127 -0
  49. package/dist/commands/drift/command.js.map +1 -0
  50. package/dist/commands/drift/compare.d.ts +66 -0
  51. package/dist/commands/drift/compare.d.ts.map +1 -0
  52. package/dist/commands/drift/compare.js +220 -0
  53. package/dist/commands/drift/compare.js.map +1 -0
  54. package/dist/commands/drift/diff.d.ts +8 -0
  55. package/dist/commands/drift/diff.d.ts.map +1 -0
  56. package/dist/commands/drift/diff.js +46 -0
  57. package/dist/commands/drift/diff.js.map +1 -0
  58. package/dist/commands/drift/payload.d.ts +24 -0
  59. package/dist/commands/drift/payload.d.ts.map +1 -0
  60. package/dist/commands/drift/payload.js +96 -0
  61. package/dist/commands/drift/payload.js.map +1 -0
  62. package/dist/commands/generate/command.d.ts +3 -0
  63. package/dist/commands/generate/command.d.ts.map +1 -0
  64. package/dist/commands/generate/command.js +161 -0
  65. package/dist/commands/generate/command.js.map +1 -0
  66. package/dist/commands/generate/output.d.ts +8 -0
  67. package/dist/commands/generate/output.d.ts.map +1 -0
  68. package/dist/commands/generate/output.js +59 -0
  69. package/dist/commands/generate/output.js.map +1 -0
  70. package/dist/commands/generate/plan-pipeline.d.ts +7 -0
  71. package/dist/commands/generate/plan-pipeline.d.ts.map +1 -0
  72. package/dist/commands/generate/plan-pipeline.js +143 -0
  73. package/dist/commands/generate/plan-pipeline.js.map +1 -0
  74. package/dist/commands/generate/rename-mappings.d.ts +29 -0
  75. package/dist/commands/generate/rename-mappings.d.ts.map +1 -0
  76. package/dist/commands/generate/rename-mappings.js +195 -0
  77. package/dist/commands/generate/rename-mappings.js.map +1 -0
  78. package/dist/commands/init.d.ts +2 -0
  79. package/dist/commands/init.d.ts.map +1 -0
  80. package/dist/commands/init.js +24 -0
  81. package/dist/commands/init.js.map +1 -0
  82. package/dist/commands/migrate/apply.d.ts +18 -0
  83. package/dist/commands/migrate/apply.d.ts.map +1 -0
  84. package/dist/commands/migrate/apply.js +48 -0
  85. package/dist/commands/migrate/apply.js.map +1 -0
  86. package/dist/commands/migrate/command.d.ts +3 -0
  87. package/dist/commands/migrate/command.d.ts.map +1 -0
  88. package/dist/commands/migrate/command.js +175 -0
  89. package/dist/commands/migrate/command.js.map +1 -0
  90. package/dist/commands/migrate/destructive.d.ts +7 -0
  91. package/dist/commands/migrate/destructive.d.ts.map +1 -0
  92. package/dist/commands/migrate/destructive.js +16 -0
  93. package/dist/commands/migrate/destructive.js.map +1 -0
  94. package/dist/commands/migrate/prompts.d.ts +6 -0
  95. package/dist/commands/migrate/prompts.d.ts.map +1 -0
  96. package/dist/commands/migrate/prompts.js +40 -0
  97. package/dist/commands/migrate/prompts.js.map +1 -0
  98. package/dist/commands/migrate/scope.d.ts +2 -0
  99. package/dist/commands/migrate/scope.d.ts.map +1 -0
  100. package/dist/commands/migrate/scope.js +25 -0
  101. package/dist/commands/migrate/scope.js.map +1 -0
  102. package/dist/commands/plugin.d.ts +3 -0
  103. package/dist/commands/plugin.d.ts.map +1 -0
  104. package/dist/commands/plugin.js +132 -0
  105. package/dist/commands/plugin.js.map +1 -0
  106. package/dist/commands/query.d.ts +8 -0
  107. package/dist/commands/query.d.ts.map +1 -0
  108. package/dist/commands/query.js +114 -0
  109. package/dist/commands/query.js.map +1 -0
  110. package/dist/commands/status.d.ts +3 -0
  111. package/dist/commands/status.d.ts.map +1 -0
  112. package/dist/commands/status.js +63 -0
  113. package/dist/commands/status.js.map +1 -0
  114. package/dist/drift.d.ts +7 -6
  115. package/dist/drift.d.ts.map +1 -1
  116. package/dist/internal-plugins/index.d.ts +3 -0
  117. package/dist/internal-plugins/index.d.ts.map +1 -0
  118. package/dist/internal-plugins/index.js +5 -0
  119. package/dist/internal-plugins/index.js.map +1 -0
  120. package/dist/internal-plugins/skill-hint/agent-detect.d.ts +20 -0
  121. package/dist/internal-plugins/skill-hint/agent-detect.d.ts.map +1 -0
  122. package/dist/internal-plugins/skill-hint/agent-detect.js +68 -0
  123. package/dist/internal-plugins/skill-hint/agent-detect.js.map +1 -0
  124. package/dist/internal-plugins/skill-hint/plugin.d.ts +16 -0
  125. package/dist/internal-plugins/skill-hint/plugin.d.ts.map +1 -0
  126. package/dist/internal-plugins/skill-hint/plugin.js +60 -0
  127. package/dist/internal-plugins/skill-hint/plugin.js.map +1 -0
  128. package/dist/internal-plugins/skill-hint/prompt.d.ts +5 -0
  129. package/dist/internal-plugins/skill-hint/prompt.d.ts.map +1 -0
  130. package/dist/internal-plugins/skill-hint/prompt.js +37 -0
  131. package/dist/internal-plugins/skill-hint/prompt.js.map +1 -0
  132. package/dist/internal-plugins/skill-hint/state.d.ts +7 -0
  133. package/dist/internal-plugins/skill-hint/state.d.ts.map +1 -0
  134. package/dist/internal-plugins/skill-hint/state.js +23 -0
  135. package/dist/internal-plugins/skill-hint/state.js.map +1 -0
  136. package/dist/plugins.d.ts +42 -2
  137. package/dist/plugins.d.ts.map +1 -1
  138. package/dist/plugins.js.map +1 -1
  139. package/dist/runtime/command-dispatch.d.ts +18 -0
  140. package/dist/runtime/command-dispatch.d.ts.map +1 -0
  141. package/dist/runtime/command-dispatch.js +237 -0
  142. package/dist/runtime/command-dispatch.js.map +1 -0
  143. package/dist/runtime/command-registry.d.ts +34 -0
  144. package/dist/runtime/command-registry.d.ts.map +1 -0
  145. package/dist/runtime/command-registry.js +87 -0
  146. package/dist/runtime/command-registry.js.map +1 -0
  147. package/dist/runtime/config.d.ts +13 -0
  148. package/dist/runtime/config.d.ts.map +1 -0
  149. package/dist/runtime/config.js +49 -0
  150. package/dist/runtime/config.js.map +1 -0
  151. package/dist/runtime/debug.d.ts +3 -0
  152. package/dist/runtime/debug.d.ts.map +1 -0
  153. package/dist/runtime/debug.js +14 -0
  154. package/dist/runtime/debug.js.map +1 -0
  155. package/dist/runtime/global-flags.d.ts +16 -0
  156. package/dist/runtime/global-flags.d.ts.map +1 -0
  157. package/dist/runtime/global-flags.js +7 -0
  158. package/dist/runtime/global-flags.js.map +1 -0
  159. package/dist/runtime/help.d.ts +5 -0
  160. package/dist/runtime/help.d.ts.map +1 -0
  161. package/dist/runtime/help.js +84 -0
  162. package/dist/runtime/help.js.map +1 -0
  163. package/dist/runtime/journal-store.d.ts +10 -0
  164. package/dist/runtime/journal-store.d.ts.map +1 -0
  165. package/dist/runtime/journal-store.js +137 -0
  166. package/dist/runtime/journal-store.js.map +1 -0
  167. package/dist/runtime/json-output.d.ts +5 -0
  168. package/dist/runtime/json-output.d.ts.map +1 -0
  169. package/dist/runtime/json-output.js +21 -0
  170. package/dist/runtime/json-output.js.map +1 -0
  171. package/dist/runtime/logging.d.ts +3 -0
  172. package/dist/runtime/logging.d.ts.map +1 -0
  173. package/dist/runtime/logging.js +31 -0
  174. package/dist/runtime/logging.js.map +1 -0
  175. package/dist/runtime/migration-store.d.ts +22 -0
  176. package/dist/runtime/migration-store.d.ts.map +1 -0
  177. package/dist/runtime/migration-store.js +60 -0
  178. package/dist/runtime/migration-store.js.map +1 -0
  179. package/dist/runtime/plugin-runtime/errors.d.ts +3 -0
  180. package/dist/runtime/plugin-runtime/errors.d.ts.map +1 -0
  181. package/dist/runtime/plugin-runtime/errors.js +13 -0
  182. package/dist/runtime/plugin-runtime/errors.js.map +1 -0
  183. package/dist/runtime/plugin-runtime/executor-debug.d.ts +3 -0
  184. package/dist/runtime/plugin-runtime/executor-debug.d.ts.map +1 -0
  185. package/dist/runtime/plugin-runtime/executor-debug.js +65 -0
  186. package/dist/runtime/plugin-runtime/executor-debug.js.map +1 -0
  187. package/dist/runtime/plugin-runtime/hooks.d.ts +23 -0
  188. package/dist/runtime/plugin-runtime/hooks.d.ts.map +1 -0
  189. package/dist/runtime/plugin-runtime/hooks.js +148 -0
  190. package/dist/runtime/plugin-runtime/hooks.js.map +1 -0
  191. package/dist/runtime/plugin-runtime/index.d.ts +9 -0
  192. package/dist/runtime/plugin-runtime/index.d.ts.map +1 -0
  193. package/dist/runtime/plugin-runtime/index.js +144 -0
  194. package/dist/runtime/plugin-runtime/index.js.map +1 -0
  195. package/dist/runtime/plugin-runtime/loader.d.ts +14 -0
  196. package/dist/runtime/plugin-runtime/loader.d.ts.map +1 -0
  197. package/dist/runtime/plugin-runtime/loader.js +70 -0
  198. package/dist/runtime/plugin-runtime/loader.js.map +1 -0
  199. package/dist/runtime/plugin-runtime/null-executor.d.ts +3 -0
  200. package/dist/runtime/plugin-runtime/null-executor.d.ts.map +1 -0
  201. package/dist/runtime/plugin-runtime/null-executor.js +17 -0
  202. package/dist/runtime/plugin-runtime/null-executor.js.map +1 -0
  203. package/dist/runtime/safety-markers.d.ts +23 -0
  204. package/dist/runtime/safety-markers.d.ts.map +1 -0
  205. package/dist/runtime/safety-markers.js +85 -0
  206. package/dist/runtime/safety-markers.js.map +1 -0
  207. package/dist/runtime/schema-loader.d.ts +3 -0
  208. package/dist/runtime/schema-loader.d.ts.map +1 -0
  209. package/dist/runtime/schema-loader.js +11 -0
  210. package/dist/runtime/schema-loader.js.map +1 -0
  211. package/dist/runtime/table-scope.d.ts +33 -0
  212. package/dist/runtime/table-scope.d.ts.map +1 -0
  213. package/dist/runtime/table-scope.js +167 -0
  214. package/dist/runtime/table-scope.js.map +1 -0
  215. package/dist/runtime/version.d.ts +2 -0
  216. package/dist/runtime/version.d.ts.map +1 -0
  217. package/dist/runtime/version.js +5 -0
  218. package/dist/runtime/version.js.map +1 -0
  219. package/package.json +6 -7
@@ -0,0 +1,87 @@
1
+ export function createCommandRegistry(input) {
2
+ const commands = [];
3
+ const byName = new Map();
4
+ for (const cmd of input.coreCommands) {
5
+ const registered = {
6
+ name: cmd.name,
7
+ description: cmd.description,
8
+ flags: cmd.flags,
9
+ pluginFlags: [],
10
+ isPlugin: false,
11
+ run: cmd.run,
12
+ };
13
+ commands.push(registered);
14
+ byName.set(cmd.name, registered);
15
+ }
16
+ for (const { pluginName, extensions } of input.pluginExtensions) {
17
+ for (const ext of extensions) {
18
+ const targets = Array.isArray(ext.command) ? ext.command : [ext.command];
19
+ for (const target of targets) {
20
+ const cmd = byName.get(target);
21
+ if (cmd) {
22
+ cmd.pluginFlags.push({ pluginName, flags: ext.flags });
23
+ }
24
+ }
25
+ }
26
+ }
27
+ for (const { pluginName, commands: pluginCmds, manifestName } of input.pluginCommands) {
28
+ if (pluginCmds.length === 1 && pluginCmds[0]?.name === manifestName) {
29
+ const cmd = pluginCmds[0];
30
+ const registered = {
31
+ name: manifestName,
32
+ description: cmd.description ?? '',
33
+ flags: cmd.flags ?? [],
34
+ pluginFlags: [],
35
+ isPlugin: true,
36
+ pluginName,
37
+ run: null,
38
+ };
39
+ commands.push(registered);
40
+ byName.set(manifestName, registered);
41
+ }
42
+ else if (pluginCmds.length > 0) {
43
+ const subcommands = pluginCmds.map((cmd) => ({
44
+ name: cmd.name,
45
+ description: cmd.description ?? '',
46
+ flags: cmd.flags ?? [],
47
+ pluginFlags: [],
48
+ isPlugin: true,
49
+ pluginName,
50
+ run: null,
51
+ }));
52
+ const registered = {
53
+ name: pluginName,
54
+ description: `Plugin: ${pluginName}`,
55
+ flags: [],
56
+ pluginFlags: [],
57
+ isPlugin: true,
58
+ pluginName,
59
+ subcommands,
60
+ run: null,
61
+ };
62
+ commands.push(registered);
63
+ byName.set(pluginName, registered);
64
+ }
65
+ }
66
+ return {
67
+ commands,
68
+ globalFlags: input.globalFlags,
69
+ get(name) {
70
+ return byName.get(name);
71
+ },
72
+ resolveFlags(name, subcommand) {
73
+ const cmd = byName.get(name);
74
+ if (!cmd)
75
+ return [...input.globalFlags];
76
+ let commandFlags = cmd.flags;
77
+ if (subcommand && cmd.subcommands) {
78
+ const sub = cmd.subcommands.find((s) => s.name === subcommand);
79
+ if (sub)
80
+ commandFlags = sub.flags;
81
+ }
82
+ const pluginFlagDefs = cmd.pluginFlags.flatMap((pf) => pf.flags);
83
+ return [...input.globalFlags, ...commandFlags, ...pluginFlagDefs];
84
+ },
85
+ };
86
+ }
87
+ //# sourceMappingURL=command-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/runtime/command-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type ChxConfigEnv, type ResolvedChxConfig } from '@chkit/core';
2
+ export declare const DEFAULT_CONFIG_FILE = "clickhouse.config.ts";
3
+ export declare function loadConfig(configPathArg?: string, env?: ChxConfigEnv): Promise<{
4
+ config: ResolvedChxConfig;
5
+ path: string;
6
+ }>;
7
+ export declare function writeIfMissing(filePath: string, content: string): Promise<boolean>;
8
+ export declare function resolveDirs(config: ResolvedChxConfig): {
9
+ outDir: string;
10
+ migrationsDir: string;
11
+ metaDir: string;
12
+ };
13
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,YAAY,EAGjB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAA;AAGpB,eAAO,MAAM,mBAAmB,yBAAyB,CAAA;AAMzD,wBAAsB,UAAU,CAC9B,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,GAAE,YAAiB,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA6BtD;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKxF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAKjH"}
@@ -0,0 +1,49 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { mkdir, writeFile } from 'node:fs/promises';
3
+ import { dirname, resolve } from 'node:path';
4
+ import process from 'node:process';
5
+ import { pathToFileURL } from 'node:url';
6
+ import { resolveConfig, } from '@chkit/core';
7
+ import { debug } from './debug.js';
8
+ export const DEFAULT_CONFIG_FILE = 'clickhouse.config.ts';
9
+ function isConfigFunction(candidate) {
10
+ return typeof candidate === 'function';
11
+ }
12
+ export async function loadConfig(configPathArg, env = {}) {
13
+ const configPath = resolve(process.cwd(), configPathArg ?? DEFAULT_CONFIG_FILE);
14
+ debug('config', `resolving config at ${configPath}`);
15
+ if (!existsSync(configPath)) {
16
+ throw new Error(`Config not found at ${configPath}. Run 'chkit init' first.`);
17
+ }
18
+ const mod = await import(pathToFileURL(configPath).href);
19
+ const candidate = (mod.default ?? mod.config);
20
+ if (!candidate) {
21
+ throw new Error(`Config file ${configPath} must export a default/config object or a function via defineConfig.`);
22
+ }
23
+ const isFn = isConfigFunction(candidate);
24
+ debug('config', `config export is ${isFn ? 'function' : 'object'}`);
25
+ const userConfig = isFn ? await candidate(env) : candidate;
26
+ const config = resolveConfig(userConfig);
27
+ debug('config', `loaded`, {
28
+ schema: config.schema,
29
+ outDir: config.outDir,
30
+ migrationsDir: config.migrationsDir,
31
+ clickhouse: config.clickhouse ? `${config.clickhouse.url} (db: ${config.clickhouse.database ?? 'default'})` : 'not configured',
32
+ plugins: (config.plugins ?? []).length,
33
+ });
34
+ return { config, path: configPath };
35
+ }
36
+ export async function writeIfMissing(filePath, content) {
37
+ if (existsSync(filePath))
38
+ return false;
39
+ await mkdir(dirname(filePath), { recursive: true });
40
+ await writeFile(filePath, content, 'utf8');
41
+ return true;
42
+ }
43
+ export function resolveDirs(config) {
44
+ const outDir = resolve(process.cwd(), config.outDir);
45
+ const migrationsDir = resolve(process.cwd(), config.migrationsDir);
46
+ const metaDir = resolve(process.cwd(), config.metaDir);
47
+ return { outDir, migrationsDir, metaDir };
48
+ }
49
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function debug(category: string, message: string, detail?: unknown): void;
2
+ export { isDebugEnabled } from './logging.js';
3
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/runtime/debug.ts"],"names":[],"mappings":"AAIA,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAQ/E;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { getLogger } from '@logtape/logtape';
2
+ import { isDebugEnabled } from './logging.js';
3
+ export function debug(category, message, detail) {
4
+ if (!isDebugEnabled())
5
+ return;
6
+ const logger = getLogger(['chkit', category]);
7
+ if (detail !== undefined) {
8
+ logger.debug(message, { detail });
9
+ return;
10
+ }
11
+ logger.debug(message);
12
+ }
13
+ export { isDebugEnabled } from './logging.js';
14
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/runtime/debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,UAAU,KAAK,CAAC,QAAgB,EAAE,OAAe,EAAE,MAAgB;IACvE,IAAI,CAAC,cAAc,EAAE;QAAE,OAAM;IAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QACjC,OAAM;IACR,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AACvB,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,16 @@
1
+ export declare const GLOBAL_FLAGS: readonly [{
2
+ readonly name: "--config";
3
+ readonly type: "string";
4
+ readonly description: "Path to config file";
5
+ readonly placeholder: "<path>";
6
+ }, {
7
+ readonly name: "--json";
8
+ readonly type: "boolean";
9
+ readonly description: "Emit machine-readable JSON output";
10
+ }, {
11
+ readonly name: "--table";
12
+ readonly type: "string";
13
+ readonly description: "Limit command scope to tables by exact name or trailing wildcard prefix";
14
+ readonly placeholder: "<selector>";
15
+ }];
16
+ //# sourceMappingURL=global-flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-flags.d.ts","sourceRoot":"","sources":["../../src/runtime/global-flags.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;EAId,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { defineFlags } from '@chkit/core';
2
+ export const GLOBAL_FLAGS = defineFlags([
3
+ { name: '--config', type: 'string', description: 'Path to config file', placeholder: '<path>' },
4
+ { name: '--json', type: 'boolean', description: 'Emit machine-readable JSON output' },
5
+ { name: '--table', type: 'string', description: 'Limit command scope to tables by exact name or trailing wildcard prefix', placeholder: '<selector>' },
6
+ ]);
7
+ //# sourceMappingURL=global-flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-flags.js","sourceRoot":"","sources":["../../src/runtime/global-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;IACtC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE,WAAW,EAAE,QAAQ,EAAE;IAC/F,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,mCAAmC,EAAE;IACrF,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yEAAyE,EAAE,WAAW,EAAE,YAAY,EAAE;CAC9I,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { FlagDef } from '../plugins.js';
2
+ import type { CommandRegistry, RegisteredCommand } from './command-registry.js';
3
+ export declare function formatGlobalHelp(registry: CommandRegistry, version: string): string;
4
+ export declare function formatCommandHelp(command: RegisteredCommand, globalFlags: readonly FlagDef[]): string;
5
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/runtime/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE/E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA0CnF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAuCrG"}
@@ -0,0 +1,84 @@
1
+ export function formatGlobalHelp(registry, version) {
2
+ const lines = [];
3
+ lines.push(`chkit v${version} - ClickHouse toolkit`);
4
+ lines.push('');
5
+ lines.push('Usage:');
6
+ lines.push(' chkit <command> [options]');
7
+ lines.push('');
8
+ lines.push('Commands:');
9
+ lines.push(` ${'init'.padEnd(14)} Scaffold a new project with config and example schema`);
10
+ const coreCommands = registry.commands.filter((c) => !c.isPlugin);
11
+ const pluginCommands = registry.commands.filter((c) => c.isPlugin);
12
+ for (const cmd of coreCommands) {
13
+ lines.push(` ${cmd.name.padEnd(14)} ${cmd.description}`);
14
+ }
15
+ if (pluginCommands.length > 0) {
16
+ lines.push('');
17
+ lines.push('Plugin commands:');
18
+ for (const cmd of pluginCommands) {
19
+ if (cmd.subcommands) {
20
+ lines.push(` ${cmd.name.padEnd(14)} ${cmd.description}`);
21
+ for (const sub of cmd.subcommands) {
22
+ lines.push(` ${sub.name.padEnd(12)} ${sub.description}`);
23
+ }
24
+ }
25
+ else {
26
+ lines.push(` ${cmd.name.padEnd(14)} ${cmd.description}`);
27
+ }
28
+ }
29
+ }
30
+ lines.push('');
31
+ lines.push('Global options:');
32
+ for (const flag of registry.globalFlags) {
33
+ lines.push(formatFlagLine(flag));
34
+ }
35
+ lines.push(formatFlagLine({ name: '-h, --help', type: 'boolean', description: 'Show help' }));
36
+ lines.push(formatFlagLine({ name: '-v, --version', type: 'boolean', description: 'Show version' }));
37
+ return lines.join('\n');
38
+ }
39
+ export function formatCommandHelp(command, globalFlags) {
40
+ const lines = [];
41
+ if (command.subcommands) {
42
+ lines.push(`chkit ${command.name} <command> [options]`);
43
+ lines.push(` ${command.description}`);
44
+ lines.push('');
45
+ lines.push('Commands:');
46
+ for (const sub of command.subcommands) {
47
+ lines.push(` ${sub.name.padEnd(14)} ${sub.description}`);
48
+ }
49
+ }
50
+ else {
51
+ lines.push(`chkit ${command.name} [options]`);
52
+ lines.push(` ${command.description}`);
53
+ }
54
+ if (command.flags.length > 0) {
55
+ lines.push('');
56
+ lines.push('Options:');
57
+ for (const flag of command.flags) {
58
+ lines.push(formatFlagLine(flag));
59
+ }
60
+ }
61
+ for (const pf of command.pluginFlags) {
62
+ lines.push('');
63
+ lines.push(`Plugin: ${pf.pluginName}`);
64
+ for (const flag of pf.flags) {
65
+ lines.push(formatFlagLine(flag));
66
+ }
67
+ }
68
+ lines.push('');
69
+ lines.push('Global options:');
70
+ for (const flag of globalFlags) {
71
+ lines.push(formatFlagLine(flag));
72
+ }
73
+ return lines.join('\n');
74
+ }
75
+ function formatFlagLine(flag) {
76
+ const nameStr = flag.name ?? '';
77
+ const placeholder = flag.placeholder ? ` ${flag.placeholder}` : '';
78
+ const label = `${nameStr}${placeholder}`;
79
+ if (label.length >= 22) {
80
+ return ` ${label}\n${''.padEnd(24)}${flag.description}`;
81
+ }
82
+ return ` ${label.padEnd(22)} ${flag.description}`;
83
+ }
84
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/runtime/help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type ClickHouseExecutor } from '@chkit/clickhouse';
2
+ import type { MigrationJournal, MigrationJournalEntry } from './migration-store.js';
3
+ interface JournalStore {
4
+ readJournal(): Promise<MigrationJournal>;
5
+ appendEntry(entry: MigrationJournalEntry): Promise<void>;
6
+ readonly databaseMissing: boolean;
7
+ }
8
+ export declare function createJournalStore(db: ClickHouseExecutor): JournalStore;
9
+ export {};
10
+ //# sourceMappingURL=journal-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-store.d.ts","sourceRoot":"","sources":["../../src/runtime/journal-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAInF,UAAU,YAAY;IACpB,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACxC,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAClC;AA4BD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,kBAAkB,GAAG,YAAY,CAkHvE"}
@@ -0,0 +1,137 @@
1
+ import { isUnknownDatabaseError } from '@chkit/clickhouse';
2
+ import { CLI_VERSION } from './version.js';
3
+ import { debug } from './debug.js';
4
+ const DEFAULT_JOURNAL_TABLE = '_chkit_migrations';
5
+ function resolveJournalTableName() {
6
+ const candidate = process.env.CHKIT_JOURNAL_TABLE?.trim();
7
+ if (!candidate)
8
+ return DEFAULT_JOURNAL_TABLE;
9
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(candidate)) {
10
+ throw new Error(`Invalid CHKIT_JOURNAL_TABLE "${candidate}". Expected unquoted identifier matching [A-Za-z_][A-Za-z0-9_]*`);
11
+ }
12
+ return candidate;
13
+ }
14
+ function isRetryableInsertRace(error) {
15
+ if (!(error instanceof Error))
16
+ return false;
17
+ const message = error.message;
18
+ return message.includes('INSERT race condition') || message.includes('Please retry the INSERT');
19
+ }
20
+ export function createJournalStore(db) {
21
+ const journalTable = resolveJournalTableName();
22
+ debug('journal', `journal table: ${journalTable}${process.env.CHKIT_JOURNAL_TABLE ? ' (from CHKIT_JOURNAL_TABLE)' : ''}`);
23
+ const createTableSql = `CREATE TABLE IF NOT EXISTS ${journalTable} (
24
+ name String,
25
+ applied_at DateTime64(3, 'UTC'),
26
+ checksum String,
27
+ chkit_version String
28
+ ) ENGINE = ReplacingMergeTree(applied_at)
29
+ ORDER BY (name)
30
+ SETTINGS index_granularity = 1`;
31
+ let bootstrapped = false;
32
+ let _databaseMissing = false;
33
+ async function ensureTable() {
34
+ if (bootstrapped)
35
+ return;
36
+ debug('journal', `probing journal table "${journalTable}"`);
37
+ try {
38
+ await db.query(`SELECT name FROM ${journalTable} LIMIT 0`);
39
+ debug('journal', 'journal table exists');
40
+ bootstrapped = true;
41
+ return;
42
+ }
43
+ catch (error) {
44
+ if (isUnknownDatabaseError(error)) {
45
+ debug('journal', 'database does not exist');
46
+ _databaseMissing = true;
47
+ bootstrapped = true;
48
+ return;
49
+ }
50
+ }
51
+ debug('journal', 'creating journal table');
52
+ try {
53
+ await db.command(createTableSql);
54
+ }
55
+ catch (error) {
56
+ if (isUnknownDatabaseError(error)) {
57
+ debug('journal', 'database missing on CREATE — deferring');
58
+ _databaseMissing = true;
59
+ bootstrapped = true;
60
+ return;
61
+ }
62
+ throw error;
63
+ }
64
+ for (let attempt = 0; attempt < 10; attempt++) {
65
+ try {
66
+ await db.query(`SELECT name FROM ${journalTable} LIMIT 0`);
67
+ debug('journal', `DDL propagation confirmed (attempt ${attempt + 1})`);
68
+ break;
69
+ }
70
+ catch {
71
+ await new Promise((r) => setTimeout(r, 250));
72
+ }
73
+ }
74
+ bootstrapped = true;
75
+ }
76
+ return {
77
+ get databaseMissing() {
78
+ return _databaseMissing;
79
+ },
80
+ async readJournal() {
81
+ debug('journal', 'reading journal');
82
+ await ensureTable();
83
+ if (_databaseMissing) {
84
+ debug('journal', 'database missing — returning empty journal');
85
+ return { version: 1, applied: [] };
86
+ }
87
+ try {
88
+ await db.command(`SYSTEM SYNC REPLICA ${journalTable}`);
89
+ }
90
+ catch {
91
+ // Non-replicated or single-node setups don't support SYSTEM SYNC REPLICA.
92
+ }
93
+ const rows = await db.query(`SELECT name, applied_at, checksum, chkit_version FROM ${journalTable} ORDER BY name SETTINGS select_sequential_consistency = 1`);
94
+ debug('journal', `journal has ${rows.length} applied entries`);
95
+ return {
96
+ version: 1,
97
+ applied: rows.map((row) => ({
98
+ name: row.name,
99
+ appliedAt: row.applied_at,
100
+ checksum: row.checksum,
101
+ })),
102
+ };
103
+ },
104
+ async appendEntry(entry) {
105
+ debug('journal', `appending entry: ${entry.name} (checksum: ${entry.checksum})`);
106
+ if (_databaseMissing) {
107
+ debug('journal', 'resetting databaseMissing flag — migration may have created the database');
108
+ _databaseMissing = false;
109
+ bootstrapped = false;
110
+ }
111
+ await ensureTable();
112
+ const esc = (s) => s.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
113
+ const insertSql = `INSERT INTO ${journalTable} (name, applied_at, checksum, chkit_version) VALUES ('${esc(entry.name)}', '${esc(entry.appliedAt)}', '${esc(entry.checksum)}', '${esc(CLI_VERSION)}')`;
114
+ const maxAttempts = 5;
115
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
116
+ try {
117
+ await db.command(insertSql);
118
+ break;
119
+ }
120
+ catch (error) {
121
+ if (!isRetryableInsertRace(error) || attempt === maxAttempts) {
122
+ throw error;
123
+ }
124
+ debug('journal', `insert race detected — retrying (attempt ${attempt}/${maxAttempts})`);
125
+ await new Promise((r) => setTimeout(r, attempt * 150));
126
+ }
127
+ }
128
+ try {
129
+ await db.command(`SYSTEM SYNC REPLICA ${journalTable}`);
130
+ }
131
+ catch {
132
+ // Non-replicated or single-node setups don't support SYSTEM SYNC REPLICA.
133
+ }
134
+ },
135
+ };
136
+ }
137
+ //# sourceMappingURL=journal-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal-store.js","sourceRoot":"","sources":["../../src/runtime/journal-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAA2B,MAAM,mBAAmB,CAAA;AAGnF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQlC,MAAM,qBAAqB,GAAG,mBAAmB,CAAA;AAEjD,SAAS,uBAAuB;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAA;IACzD,IAAI,CAAC,SAAS;QAAE,OAAO,qBAAqB,CAAA;IAC5C,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,gCAAgC,SAAS,iEAAiE,CAC3G,CAAA;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AASD,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC7B,OAAO,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAA;AACjG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAsB;IACvD,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAA;IAC9C,KAAK,CAAC,SAAS,EAAE,kBAAkB,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzH,MAAM,cAAc,GAAG,8BAA8B,YAAY;;;;;;;+BAOpC,CAAA;IAC7B,IAAI,YAAY,GAAG,KAAK,CAAA;IACxB,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAE5B,KAAK,UAAU,WAAW;QACxB,IAAI,YAAY;YAAE,OAAM;QACxB,KAAK,CAAC,SAAS,EAAE,0BAA0B,YAAY,GAAG,CAAC,CAAA;QAC3D,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,YAAY,UAAU,CAAC,CAAA;YAC1D,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAA;YACxC,YAAY,GAAG,IAAI,CAAA;YACnB,OAAM;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,KAAK,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAA;gBAC3C,gBAAgB,GAAG,IAAI,CAAA;gBACvB,YAAY,GAAG,IAAI,CAAA;gBACnB,OAAM;YACR,CAAC;QACH,CAAC;QACD,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAA;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,KAAK,CAAC,SAAS,EAAE,wCAAwC,CAAC,CAAA;gBAC1D,gBAAgB,GAAG,IAAI,CAAA;gBACvB,YAAY,GAAG,IAAI,CAAA;gBACnB,OAAM;YACR,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;QACD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,YAAY,UAAU,CAAC,CAAA;gBAC1D,KAAK,CAAC,SAAS,EAAE,sCAAsC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;gBACtE,MAAK;YACP,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;QACD,YAAY,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,OAAO;QACL,IAAI,eAAe;YACjB,OAAO,gBAAgB,CAAA;QACzB,CAAC;QACD,KAAK,CAAC,WAAW;YACf,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;YACnC,MAAM,WAAW,EAAE,CAAA;YACnB,IAAI,gBAAgB,EAAE,CAAC;gBACrB,KAAK,CAAC,SAAS,EAAE,4CAA4C,CAAC,CAAA;gBAC9D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;YACpC,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,OAAO,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAA;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,0EAA0E;YAC5E,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CACzB,yDAAyD,YAAY,2DAA2D,CACjI,CAAA;YACD,KAAK,CAAC,SAAS,EAAE,eAAe,IAAI,CAAC,MAAM,kBAAkB,CAAC,CAAA;YAC9D,OAAO;gBACL,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB,CAAC,CAAC;aACJ,CAAA;QACH,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,KAA4B;YAC5C,KAAK,CAAC,SAAS,EAAE,oBAAoB,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAA;YAChF,IAAI,gBAAgB,EAAE,CAAC;gBACrB,KAAK,CAAC,SAAS,EAAE,0EAA0E,CAAC,CAAA;gBAC5F,gBAAgB,GAAG,KAAK,CAAA;gBACxB,YAAY,GAAG,KAAK,CAAA;YACtB,CAAC;YACD,MAAM,WAAW,EAAE,CAAA;YACnB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACxE,MAAM,SAAS,GAAG,eAAe,YAAY,yDAAyD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,CAAA;YACrM,MAAM,WAAW,GAAG,CAAC,CAAA;YACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;oBAC3B,MAAK;gBACP,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;wBAC7D,MAAM,KAAK,CAAA;oBACb,CAAC;oBACD,KAAK,CAAC,SAAS,EAAE,4CAA4C,OAAO,IAAI,WAAW,GAAG,CAAC,CAAA;oBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC,CAAA;gBACxD,CAAC;YACH,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,OAAO,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAA;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,0EAA0E;YAC5E,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ type Command = 'generate' | 'migrate' | 'status' | 'drift' | 'check' | 'plugin' | 'query';
2
+ export declare function printOutput(value: unknown, jsonMode: boolean): void;
3
+ export declare function emitJson<T extends object>(command: Command, payload: T): void;
4
+ export {};
5
+ //# sourceMappingURL=json-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../src/runtime/json-output.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GACR,UAAU,GACV,SAAS,GACT,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,CAAA;AAIX,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAQnE;AAaD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAE7E"}
@@ -0,0 +1,21 @@
1
+ const JSON_CONTRACT_VERSION = 1;
2
+ export function printOutput(value, jsonMode) {
3
+ if (jsonMode) {
4
+ console.log(JSON.stringify(value, null, 2));
5
+ return;
6
+ }
7
+ if (typeof value === 'string') {
8
+ console.log(value);
9
+ }
10
+ }
11
+ function jsonPayload(command, payload) {
12
+ return {
13
+ command,
14
+ schemaVersion: JSON_CONTRACT_VERSION,
15
+ ...payload,
16
+ };
17
+ }
18
+ export function emitJson(command, payload) {
19
+ printOutput(jsonPayload(command, payload), true);
20
+ }
21
+ //# sourceMappingURL=json-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/runtime/json-output.ts"],"names":[],"mappings":"AASA,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAE/B,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,QAAiB;IAC3D,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC3C,OAAM;IACR,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAmB,OAAgB,EAAE,OAAU;IAIjE,OAAO;QACL,OAAO;QACP,aAAa,EAAE,qBAAqB;QACpC,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAmB,OAAgB,EAAE,OAAU;IACrE,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAA;AAClD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function configureCliLogging(): void;
2
+ export declare function isDebugEnabled(): boolean;
3
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/runtime/logging.ts"],"names":[],"mappings":"AAMA,wBAAgB,mBAAmB,IAAI,IAAI,CAuB1C;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC"}
@@ -0,0 +1,31 @@
1
+ import process from 'node:process';
2
+ import { configureSync, getConfig, getConsoleSink, getTextFormatter } from '@logtape/logtape';
3
+ const enabled = process.env.CHKIT_DEBUG === '1' || process.env.CHKIT_DEBUG === 'true';
4
+ export function configureCliLogging() {
5
+ if (!enabled || getConfig())
6
+ return;
7
+ configureSync({
8
+ sinks: {
9
+ console: getConsoleSink({
10
+ formatter: getTextFormatter({ timestamp: 'time' }),
11
+ }),
12
+ },
13
+ loggers: [
14
+ {
15
+ category: 'chkit',
16
+ sinks: ['console'],
17
+ lowestLevel: 'debug',
18
+ },
19
+ {
20
+ category: 'logtape',
21
+ sinks: ['console'],
22
+ lowestLevel: 'error',
23
+ },
24
+ ],
25
+ reset: true,
26
+ });
27
+ }
28
+ export function isDebugEnabled() {
29
+ return enabled;
30
+ }
31
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/runtime/logging.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE7F,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAA;AAErF,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;QAAE,OAAM;IAEnC,aAAa,CAAC;QACZ,KAAK,EAAE;YACL,OAAO,EAAE,cAAc,CAAC;gBACtB,SAAS,EAAE,gBAAgB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;aACnD,CAAC;SACH;QACD,OAAO,EAAE;YACP;gBACE,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC,SAAS,CAAC;gBAClB,WAAW,EAAE,OAAO;aACrB;YACD;gBACE,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,CAAC,SAAS,CAAC;gBAClB,WAAW,EAAE,OAAO;aACrB;SACF;QACD,KAAK,EAAE,IAAI;KACZ,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -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
+ interface ChecksumMismatch {
12
+ name: string;
13
+ expected: string;
14
+ actual: string;
15
+ }
16
+ export declare function readSnapshot(metaDir: string): Promise<Snapshot | null>;
17
+ export declare function summarizePlan(operations: MigrationOperation[]): string[];
18
+ export declare function listMigrations(migrationsDir: string): Promise<string[]>;
19
+ export declare function findChecksumMismatches(migrationsDir: string, journal: MigrationJournal): Promise<ChecksumMismatch[]>;
20
+ export declare function checksumSQL(value: string): string;
21
+ export {};
22
+ //# sourceMappingURL=migration-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-store.d.ts","sourceRoot":"","sources":["../../src/runtime/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,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAUD,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"}