chkit 0.1.0-beta.28 → 0.1.0-beta.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -1
- package/dist/bin/chkit.js +60 -10
- package/dist/bin/chkit.js.map +1 -1
- package/dist/commands/drift/payload.d.ts +14 -0
- package/dist/commands/drift/payload.d.ts.map +1 -1
- package/dist/commands/drift/payload.js +20 -5
- package/dist/commands/drift/payload.js.map +1 -1
- package/dist/commands/generate/plan-pipeline.js +2 -2
- package/dist/commands/generate/plan-pipeline.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +60 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate/apply.d.ts +15 -0
- package/dist/commands/migrate/apply.d.ts.map +1 -1
- package/dist/commands/migrate/apply.js +91 -14
- package/dist/commands/migrate/apply.js.map +1 -1
- package/dist/commands/migrate/async-apply.d.ts +4 -1
- package/dist/commands/migrate/async-apply.d.ts.map +1 -1
- package/dist/commands/migrate/async-apply.js +3 -3
- package/dist/commands/migrate/async-apply.js.map +1 -1
- package/dist/commands/migrate/command.js +27 -7
- package/dist/commands/migrate/command.js.map +1 -1
- package/dist/commands/migrate/destructive.d.ts.map +1 -1
- package/dist/commands/migrate/destructive.js +9 -1
- package/dist/commands/migrate/destructive.js.map +1 -1
- package/dist/commands/migrate/scope.d.ts +11 -1
- package/dist/commands/migrate/scope.d.ts.map +1 -1
- package/dist/commands/migrate/scope.js +11 -1
- package/dist/commands/migrate/scope.js.map +1 -1
- package/dist/commands/query.d.ts +9 -0
- package/dist/commands/query.d.ts.map +1 -1
- package/dist/commands/query.js +48 -7
- package/dist/commands/query.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +8 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/plugins.d.ts +8 -0
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js.map +1 -1
- package/dist/runtime/config.d.ts +8 -0
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +50 -3
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/journal-store.d.ts +1 -0
- package/dist/runtime/journal-store.d.ts.map +1 -1
- package/dist/runtime/journal-store.js +29 -4
- package/dist/runtime/journal-store.js.map +1 -1
- package/dist/runtime/json-output.d.ts +20 -0
- package/dist/runtime/json-output.d.ts.map +1 -1
- package/dist/runtime/json-output.js +23 -0
- package/dist/runtime/json-output.js.map +1 -1
- package/dist/runtime/plugin-runtime/index.d.ts.map +1 -1
- package/dist/runtime/plugin-runtime/index.js +7 -1
- package/dist/runtime/plugin-runtime/index.js.map +1 -1
- package/dist/runtime/safety-markers.d.ts +23 -0
- package/dist/runtime/safety-markers.d.ts.map +1 -1
- package/dist/runtime/safety-markers.js +96 -2
- package/dist/runtime/safety-markers.js.map +1 -1
- package/package.json +5 -5
package/dist/runtime/config.js
CHANGED
|
@@ -2,8 +2,7 @@ import { existsSync } from 'node:fs';
|
|
|
2
2
|
import { mkdir, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { dirname, resolve } from 'node:path';
|
|
4
4
|
import process from 'node:process';
|
|
5
|
-
import {
|
|
6
|
-
import { resolveConfig, SYNTHESIZED_CONFIG_PATH, } from '@chkit/core';
|
|
5
|
+
import { importModuleFile, resolveConfig, SYNTHESIZED_CONFIG_PATH, } from '@chkit/core';
|
|
7
6
|
import { mergeUserConfig } from './config-merge.js';
|
|
8
7
|
import { debug } from './debug.js';
|
|
9
8
|
import { getUserConfigDir, USER_CREDENTIALS_FILE, USER_PROFILE_CONFIG_FILE, } from './user-config.js';
|
|
@@ -49,7 +48,13 @@ export async function loadConfig(configPathArg, env = {}, options = {}) {
|
|
|
49
48
|
`Either run 'chkit init' in your project, or run 'chkit obsessiondb login' to use chkit from any directory.`);
|
|
50
49
|
}
|
|
51
50
|
async function readRawConfig(configPath, env) {
|
|
52
|
-
|
|
51
|
+
let mod;
|
|
52
|
+
try {
|
|
53
|
+
mod = await importModuleFile(configPath);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
throw enrichConfigLoadError(error, configPath);
|
|
57
|
+
}
|
|
53
58
|
const candidate = (mod.default ?? mod.config);
|
|
54
59
|
if (!candidate) {
|
|
55
60
|
throw new Error(`Config file ${configPath} must export a default/config object or a function via defineConfig.`);
|
|
@@ -59,6 +64,48 @@ async function readRawConfig(configPath, env) {
|
|
|
59
64
|
const raw = isFn ? await candidate(env) : candidate;
|
|
60
65
|
return { raw, path: configPath };
|
|
61
66
|
}
|
|
67
|
+
export function parseMissingModule(message) {
|
|
68
|
+
const match = message.match(/cannot find (?:module|package) ['"]([^'"]+)['"]/i) ??
|
|
69
|
+
message.match(/cannot resolve ['"]([^'"]+)['"]/i);
|
|
70
|
+
return match?.[1];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Transpile/build failures (e.g. a syntax error in clickhouse.config.ts) throw
|
|
74
|
+
* an AggregateError whose top-level message is only a summary like
|
|
75
|
+
* "2 errors building config.ts"; the actual diagnostics live in `.errors`.
|
|
76
|
+
* Surface them so the user can see what to fix (#21).
|
|
77
|
+
*/
|
|
78
|
+
export function collectAggregateErrorMessages(error) {
|
|
79
|
+
if (!error || typeof error !== 'object')
|
|
80
|
+
return [];
|
|
81
|
+
const sub = error.errors;
|
|
82
|
+
if (!Array.isArray(sub))
|
|
83
|
+
return [];
|
|
84
|
+
return sub
|
|
85
|
+
.map((entry) => {
|
|
86
|
+
if (entry instanceof Error)
|
|
87
|
+
return entry.message;
|
|
88
|
+
if (entry && typeof entry === 'object' && 'message' in entry) {
|
|
89
|
+
return String(entry.message);
|
|
90
|
+
}
|
|
91
|
+
return String(entry);
|
|
92
|
+
})
|
|
93
|
+
.filter((message) => message.trim().length > 0);
|
|
94
|
+
}
|
|
95
|
+
function enrichConfigLoadError(error, configPath) {
|
|
96
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
97
|
+
const missing = parseMissingModule(message);
|
|
98
|
+
if (missing) {
|
|
99
|
+
return new Error(`Config at ${configPath} could not load its dependencies: cannot find "${missing}".\n` +
|
|
100
|
+
`Install dependencies in this project first: bun install (or npm install / pnpm install).`, { cause: error });
|
|
101
|
+
}
|
|
102
|
+
const subErrors = collectAggregateErrorMessages(error);
|
|
103
|
+
if (subErrors.length > 0) {
|
|
104
|
+
return new Error(`Failed to build config ${configPath} (${subErrors.length} error${subErrors.length === 1 ? '' : 's'}):\n` +
|
|
105
|
+
subErrors.map((m) => ` - ${m}`).join('\n'), { cause: error });
|
|
106
|
+
}
|
|
107
|
+
return error instanceof Error ? error : new Error(message);
|
|
108
|
+
}
|
|
62
109
|
async function readProfileLayer(userDir, env, allowSynthesized) {
|
|
63
110
|
const profilePath = resolve(userDir, USER_PROFILE_CONFIG_FILE);
|
|
64
111
|
if (existsSync(profilePath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,OAAO,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,5 +26,6 @@ export interface JournalStore {
|
|
|
26
26
|
appendEntry(entry: MigrationJournalEntry): Promise<void>;
|
|
27
27
|
readonly databaseMissing: boolean;
|
|
28
28
|
}
|
|
29
|
+
export declare function resolveJournalTableName(): string;
|
|
29
30
|
export declare function createJournalStore(db: ClickHouseExecutor): JournalStore;
|
|
30
31
|
//# sourceMappingURL=journal-store.d.ts.map
|
|
@@ -1 +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,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEhE,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,UAAU,EAAE,cAAc,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACxC,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IAC5E,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAClC;
|
|
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,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEhE,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,UAAU,EAAE,cAAc,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACxC,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IAC5E,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAClC;AAID,wBAAgB,uBAAuB,IAAI,MAAM,CAShD;AAgGD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,kBAAkB,GAAG,YAAY,CAoKvE"}
|
|
@@ -2,7 +2,7 @@ import { isUnknownDatabaseError } from '@chkit/clickhouse';
|
|
|
2
2
|
import { CLI_VERSION } from './version.js';
|
|
3
3
|
import { debug } from './debug.js';
|
|
4
4
|
const DEFAULT_JOURNAL_TABLE = '_chkit_migrations';
|
|
5
|
-
function resolveJournalTableName() {
|
|
5
|
+
export function resolveJournalTableName() {
|
|
6
6
|
const candidate = process.env.CHKIT_JOURNAL_TABLE?.trim();
|
|
7
7
|
if (!candidate)
|
|
8
8
|
return DEFAULT_JOURNAL_TABLE;
|
|
@@ -51,6 +51,31 @@ function operationFromTuple(row) {
|
|
|
51
51
|
lastError: row.last_error,
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
+
// The native ClickHouse client returns a JS boolean; the ObsessionDB workbench
|
|
55
|
+
// API returns every cell as a string ("true"/"false"). Compare explicitly —
|
|
56
|
+
// `Boolean("false")` is `true`, which would silently corrupt the read.
|
|
57
|
+
function parseBool(value) {
|
|
58
|
+
return value === true || value === 1 || value === '1' || value === 'true';
|
|
59
|
+
}
|
|
60
|
+
// `operations` is selected via `toJSONString(...)`, so it arrives as a JSON
|
|
61
|
+
// string from every executor. Tolerate an already-decoded array too (mocks /
|
|
62
|
+
// any future typed executor) and degrade to [] on anything unparseable.
|
|
63
|
+
function parseOperations(value) {
|
|
64
|
+
if (value == null || value === '')
|
|
65
|
+
return [];
|
|
66
|
+
let decoded = value;
|
|
67
|
+
if (typeof value === 'string') {
|
|
68
|
+
try {
|
|
69
|
+
decoded = JSON.parse(value);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (!Array.isArray(decoded))
|
|
76
|
+
return [];
|
|
77
|
+
return decoded.map((row) => operationFromTuple(row));
|
|
78
|
+
}
|
|
54
79
|
export function createJournalStore(db) {
|
|
55
80
|
const journalTable = resolveJournalTableName();
|
|
56
81
|
debug('journal', `journal table: ${journalTable}${process.env.CHKIT_JOURNAL_TABLE ? ' (from CHKIT_JOURNAL_TABLE)' : ''}`);
|
|
@@ -154,7 +179,7 @@ SETTINGS index_granularity = 1`;
|
|
|
154
179
|
if (_databaseMissing)
|
|
155
180
|
return null;
|
|
156
181
|
await trySyncReplica();
|
|
157
|
-
const rows = await db.query(`SELECT name, applied_at, checksum, chkit_version, migration_completed, operations FROM ${journalTable} FINAL WHERE name = '${escapeSqlString(migrationName)}' LIMIT 1 SETTINGS select_sequential_consistency = 1`);
|
|
182
|
+
const rows = await db.query(`SELECT name, applied_at, checksum, chkit_version, migration_completed, toJSONString(operations) AS operations FROM ${journalTable} FINAL WHERE name = '${escapeSqlString(migrationName)}' LIMIT 1 SETTINGS select_sequential_consistency = 1`);
|
|
158
183
|
const row = rows[0];
|
|
159
184
|
if (!row)
|
|
160
185
|
return null;
|
|
@@ -163,8 +188,8 @@ SETTINGS index_granularity = 1`;
|
|
|
163
188
|
appliedAt: row.applied_at,
|
|
164
189
|
checksum: row.checksum,
|
|
165
190
|
chkitVersion: row.chkit_version,
|
|
166
|
-
migrationCompleted:
|
|
167
|
-
operations: (row.operations
|
|
191
|
+
migrationCompleted: parseBool(row.migration_completed),
|
|
192
|
+
operations: parseOperations(row.operations),
|
|
168
193
|
};
|
|
169
194
|
},
|
|
170
195
|
async writeMigrationState(state) {
|
|
@@ -1 +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;AAgClC,MAAM,qBAAqB,GAAG,mBAAmB,CAAA;AAEjD,
|
|
1
|
+
{"version":3,"file":"journal-store.js","sourceRoot":"","sources":["../../src/runtime/journal-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
type Command = 'generate' | 'migrate' | 'status' | 'drift' | 'check' | 'plugin' | 'query';
|
|
2
|
+
/** Whether any JSON payload (success or error) has already been written to stdout. */
|
|
3
|
+
export declare function hasEmittedJson(): boolean;
|
|
2
4
|
export declare function printOutput(value: unknown, jsonMode: boolean): void;
|
|
3
5
|
export declare function emitJson<T extends object>(command: Command, payload: T): void;
|
|
6
|
+
export interface JsonError {
|
|
7
|
+
code: string;
|
|
8
|
+
message: string;
|
|
9
|
+
hint?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface JsonErrorEnvelope {
|
|
12
|
+
command: string;
|
|
13
|
+
schemaVersion: number;
|
|
14
|
+
ok: false;
|
|
15
|
+
error: JsonError;
|
|
16
|
+
}
|
|
17
|
+
export declare function buildJsonErrorEnvelope(command: string, error: JsonError): JsonErrorEnvelope;
|
|
18
|
+
/**
|
|
19
|
+
* Emit a stable machine-readable error envelope to stdout for `--json` consumers.
|
|
20
|
+
* Without this, a thrown error left stdout empty and printed plain text to
|
|
21
|
+
* stderr, breaking any pipe to `jq` on the first failure.
|
|
22
|
+
*/
|
|
23
|
+
export declare function emitJsonError(command: string, error: JsonError): void;
|
|
4
24
|
export {};
|
|
5
25
|
//# sourceMappingURL=json-output.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAMX,sFAAsF;AACtF,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CASnE;AAaD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAE7E;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,SAAS,CAAA;CACjB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAO3F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAGrE"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
const JSON_CONTRACT_VERSION = 1;
|
|
2
|
+
let jsonEmitted = false;
|
|
3
|
+
/** Whether any JSON payload (success or error) has already been written to stdout. */
|
|
4
|
+
export function hasEmittedJson() {
|
|
5
|
+
return jsonEmitted;
|
|
6
|
+
}
|
|
2
7
|
export function printOutput(value, jsonMode) {
|
|
3
8
|
if (jsonMode) {
|
|
9
|
+
jsonEmitted = true;
|
|
4
10
|
console.log(JSON.stringify(value, null, 2));
|
|
5
11
|
return;
|
|
6
12
|
}
|
|
@@ -18,4 +24,21 @@ function jsonPayload(command, payload) {
|
|
|
18
24
|
export function emitJson(command, payload) {
|
|
19
25
|
printOutput(jsonPayload(command, payload), true);
|
|
20
26
|
}
|
|
27
|
+
export function buildJsonErrorEnvelope(command, error) {
|
|
28
|
+
return {
|
|
29
|
+
command,
|
|
30
|
+
schemaVersion: JSON_CONTRACT_VERSION,
|
|
31
|
+
ok: false,
|
|
32
|
+
error,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Emit a stable machine-readable error envelope to stdout for `--json` consumers.
|
|
37
|
+
* Without this, a thrown error left stdout empty and printed plain text to
|
|
38
|
+
* stderr, breaking any pipe to `jq` on the first failure.
|
|
39
|
+
*/
|
|
40
|
+
export function emitJsonError(command, error) {
|
|
41
|
+
jsonEmitted = true;
|
|
42
|
+
console.log(JSON.stringify(buildJsonErrorEnvelope(command, error), null, 2));
|
|
43
|
+
}
|
|
21
44
|
//# sourceMappingURL=json-output.js.map
|
|
@@ -1 +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"}
|
|
1
|
+
{"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/runtime/json-output.ts"],"names":[],"mappings":"AASA,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAE/B,IAAI,WAAW,GAAG,KAAK,CAAA;AAEvB,sFAAsF;AACtF,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,QAAiB;IAC3D,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,GAAG,IAAI,CAAA;QAClB,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;AAeD,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,KAAgB;IACtE,OAAO;QACL,OAAO;QACP,aAAa,EAAE,qBAAqB;QACpC,EAAE,EAAE,KAAK;QACT,KAAK;KACN,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,KAAgB;IAC7D,WAAW,GAAG,IAAI,CAAA;IAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC9E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/plugin-runtime/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpE,OAAO,KAAK,EACV,SAAS,EAGT,aAAa,EACd,MAAM,kBAAkB,CAAA;AAmCzB,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/plugin-runtime/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpE,OAAO,KAAK,EACV,SAAS,EAGT,aAAa,EACd,MAAM,kBAAkB,CAAA;AAmCzB,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,CAmMzB"}
|
|
@@ -46,7 +46,7 @@ export async function loadPluginRuntime(input) {
|
|
|
46
46
|
if (byName.has(plugin.manifest.name))
|
|
47
47
|
continue;
|
|
48
48
|
const resolved = resolvePluginOptions(plugin, {});
|
|
49
|
-
const item = { plugin, options: resolved, rawOptions: {} };
|
|
49
|
+
const item = { plugin, options: resolved, rawOptions: {}, internal: true };
|
|
50
50
|
loaded.push(item);
|
|
51
51
|
byName.set(plugin.manifest.name, item);
|
|
52
52
|
}
|
|
@@ -166,6 +166,12 @@ export async function loadPluginRuntime(input) {
|
|
|
166
166
|
return typeof code === 'number' ? code : 0;
|
|
167
167
|
}
|
|
168
168
|
catch (error) {
|
|
169
|
+
// Built-in plugins (core) own the user-facing commands; their errors
|
|
170
|
+
// should read as the command's own clean message, not as a leaked
|
|
171
|
+
// internal-plugin failure. Only wrap third-party plugin errors.
|
|
172
|
+
if (item.internal) {
|
|
173
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
174
|
+
}
|
|
169
175
|
throw formatPluginError(item.plugin.manifest.name, `command:${commandName}`, error);
|
|
170
176
|
}
|
|
171
177
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/plugin-runtime/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/plugin-runtime/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,4 +30,27 @@ export interface MigrationOperationSummary {
|
|
|
30
30
|
export declare function migrationContainsDangerOperation(sql: string): boolean;
|
|
31
31
|
export declare function extractMigrationOperationSummaries(sql: string): MigrationOperationSummary[];
|
|
32
32
|
export declare function collectDestructiveOperationMarkers(migration: string, sql: string): DestructiveOperationMarker[];
|
|
33
|
+
export interface ScannedDestructiveStatement {
|
|
34
|
+
type: string;
|
|
35
|
+
statement: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Scan the executable SQL (comments stripped) for destructive statements that
|
|
39
|
+
* are NOT covered by a planner `-- operation:` marker.
|
|
40
|
+
*
|
|
41
|
+
* Generated migrations emit exactly one marker per statement, in order (the same
|
|
42
|
+
* 1:1 invariant apply.ts relies on), so a marker-covered statement is governed
|
|
43
|
+
* by the planner's risk classification and is trusted — e.g. a non-danger
|
|
44
|
+
* `DROP MATERIALIZED VIEW` recreate. Only marker-less positions are flagged: a
|
|
45
|
+
* fully hand-written migration (no markers) or a destructive statement
|
|
46
|
+
* hand-appended to a generated one.
|
|
47
|
+
*/
|
|
48
|
+
export declare function scanDestructiveSqlStatements(sql: string): ScannedDestructiveStatement[];
|
|
49
|
+
export declare function migrationContainsDestructiveSql(sql: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Synthesize destructive-operation markers for migrations that contain
|
|
52
|
+
* destructive SQL but carry no `-- operation: risk=danger` marker (hand-written
|
|
53
|
+
* migrations). Used as a fallback so these still require --allow-destructive.
|
|
54
|
+
*/
|
|
55
|
+
export declare function collectUnmarkedDestructiveStatements(migration: string, sql: string): DestructiveOperationMarker[];
|
|
33
56
|
//# sourceMappingURL=safety-markers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safety-markers.d.ts","sourceRoot":"","sources":["../../src/runtime/safety-markers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,EAAE,2BAA2B,EAAE,CAAA;AAEtC,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,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,CAAA;AAErD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,sBAAsB,CAAA;IAC5B;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErE;AAoCD,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,EAAE,CA0B3F;
|
|
1
|
+
{"version":3,"file":"safety-markers.d.ts","sourceRoot":"","sources":["../../src/runtime/safety-markers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,EAAE,2BAA2B,EAAE,CAAA;AAEtC,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,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,CAAA;AAErD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,sBAAsB,CAAA;IAC5B;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErE;AAoCD,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,EAAE,CA0B3F;AAuDD,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,0BAA0B,EAAE,CA6B9B;AAkCD,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,2BAA2B,EAAE,CAWvF;AAED,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,0BAA0B,EAAE,CAgB9B"}
|
|
@@ -62,7 +62,15 @@ export function extractMigrationOperationSummaries(sql) {
|
|
|
62
62
|
}
|
|
63
63
|
return summaries;
|
|
64
64
|
}
|
|
65
|
-
function describeDestructiveOperation(type) {
|
|
65
|
+
function describeDestructiveOperation(type, opts = {}) {
|
|
66
|
+
if (type === 'drop_table' && opts.recreate) {
|
|
67
|
+
return {
|
|
68
|
+
warningCode: 'table_recreate_data_loss',
|
|
69
|
+
reason: 'A change to engine, ORDER BY, PRIMARY KEY, PARTITION BY, or UNIQUE KEY can only be applied by dropping and recreating this table.',
|
|
70
|
+
impact: 'ALL ROWS are permanently deleted — the table is recreated empty and existing data is NOT copied over.',
|
|
71
|
+
recommendation: 'Back up the data first, or migrate via a temporary table (rename, INSERT ... SELECT, then drop) before approving.',
|
|
72
|
+
};
|
|
73
|
+
}
|
|
66
74
|
if (type === 'drop_table') {
|
|
67
75
|
return {
|
|
68
76
|
warningCode: 'drop_table_data_loss',
|
|
@@ -95,12 +103,20 @@ function describeDestructiveOperation(type) {
|
|
|
95
103
|
};
|
|
96
104
|
}
|
|
97
105
|
export function collectDestructiveOperationMarkers(migration, sql) {
|
|
106
|
+
// A table recreate emits a drop_table + create_table for the SAME key in the
|
|
107
|
+
// same migration (an engine/ORDER BY/PRIMARY KEY/PARTITION BY/UNIQUE KEY
|
|
108
|
+
// change). Flag those drops with a louder, distinct warning than a plain drop
|
|
109
|
+
// so the user knows all rows are lost and the table is recreated empty (#23).
|
|
110
|
+
const createdTableKeys = new Set(extractMigrationOperationSummaries(sql)
|
|
111
|
+
.filter((op) => op.type === 'create_table')
|
|
112
|
+
.map((op) => op.key));
|
|
98
113
|
return extractDestructiveOperationSummaries(sql).map((summary) => {
|
|
99
114
|
const parsed = parseOperationLine(summary, null);
|
|
100
115
|
const type = parsed?.type ?? 'unknown';
|
|
101
116
|
const key = parsed?.key ?? 'unknown';
|
|
102
117
|
const risk = parsed?.risk ?? 'danger';
|
|
103
|
-
const
|
|
118
|
+
const recreate = type === 'drop_table' && createdTableKeys.has(key);
|
|
119
|
+
const detail = describeDestructiveOperation(type, { recreate });
|
|
104
120
|
return {
|
|
105
121
|
migration,
|
|
106
122
|
type,
|
|
@@ -114,4 +130,82 @@ export function collectDestructiveOperationMarkers(migration, sql) {
|
|
|
114
130
|
};
|
|
115
131
|
});
|
|
116
132
|
}
|
|
133
|
+
// Defense-in-depth (#2): planner-emitted `-- operation: risk=danger` markers only
|
|
134
|
+
// exist on generated migrations. A hand-written or hand-edited migration can
|
|
135
|
+
// contain destructive SQL with no marker — so we also scan the executable SQL
|
|
136
|
+
// itself. Comments are stripped first, so a commented-out `-- DROP TABLE` is not
|
|
137
|
+
// flagged, while a real statement is.
|
|
138
|
+
// Each rule requires the statement keyword that follows the verb, so a SQL
|
|
139
|
+
// function such as `truncate(x)` (a ClickHouse math function) is NOT mistaken
|
|
140
|
+
// for a `TRUNCATE TABLE` statement.
|
|
141
|
+
const DESTRUCTIVE_SQL_RULES = [
|
|
142
|
+
{ type: 'drop_database', re: /\bDROP\s+DATABASE\b/i },
|
|
143
|
+
{ type: 'drop_materialized_view', re: /\bDROP\s+MATERIALIZED\s+VIEW\b/i },
|
|
144
|
+
{ type: 'drop_view', re: /\bDROP\s+VIEW\b/i },
|
|
145
|
+
{ type: 'drop_table', re: /\bDROP\s+(?:TEMPORARY\s+)?TABLE\b/i },
|
|
146
|
+
{ type: 'alter_table_drop_column', re: /\bDROP\s+COLUMN\b/i },
|
|
147
|
+
{ type: 'truncate_table', re: /\bTRUNCATE\s+(?:TABLE|DATABASE|ALL\s+TABLES)\b/i },
|
|
148
|
+
{ type: 'detach', re: /\bDETACH\s+(?:TABLE|VIEW|DICTIONARY|DATABASE|PARTITION|PART)\b/i },
|
|
149
|
+
];
|
|
150
|
+
function classifyDestructiveStatement(statement) {
|
|
151
|
+
for (const rule of DESTRUCTIVE_SQL_RULES) {
|
|
152
|
+
if (rule.re.test(statement))
|
|
153
|
+
return rule.type;
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
function extractObjectKey(statement) {
|
|
158
|
+
const match = statement.match(/\b(?:TABLE|VIEW|DATABASE)\s+(?:IF\s+EXISTS\s+)?`?([\w.]+)`?/i);
|
|
159
|
+
return match?.[1] ?? 'unknown';
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Scan the executable SQL (comments stripped) for destructive statements that
|
|
163
|
+
* are NOT covered by a planner `-- operation:` marker.
|
|
164
|
+
*
|
|
165
|
+
* Generated migrations emit exactly one marker per statement, in order (the same
|
|
166
|
+
* 1:1 invariant apply.ts relies on), so a marker-covered statement is governed
|
|
167
|
+
* by the planner's risk classification and is trusted — e.g. a non-danger
|
|
168
|
+
* `DROP MATERIALIZED VIEW` recreate. Only marker-less positions are flagged: a
|
|
169
|
+
* fully hand-written migration (no markers) or a destructive statement
|
|
170
|
+
* hand-appended to a generated one.
|
|
171
|
+
*/
|
|
172
|
+
export function scanDestructiveSqlStatements(sql) {
|
|
173
|
+
const statements = extractExecutableStatements(sql);
|
|
174
|
+
const operations = extractMigrationOperationSummaries(sql);
|
|
175
|
+
const found = [];
|
|
176
|
+
for (let i = 0; i < statements.length; i++) {
|
|
177
|
+
if (operations[i] !== undefined)
|
|
178
|
+
continue;
|
|
179
|
+
const statement = statements[i] ?? '';
|
|
180
|
+
const type = classifyDestructiveStatement(statement);
|
|
181
|
+
if (type)
|
|
182
|
+
found.push({ type, statement: statement.trim() });
|
|
183
|
+
}
|
|
184
|
+
return found;
|
|
185
|
+
}
|
|
186
|
+
export function migrationContainsDestructiveSql(sql) {
|
|
187
|
+
return scanDestructiveSqlStatements(sql).length > 0;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Synthesize destructive-operation markers for migrations that contain
|
|
191
|
+
* destructive SQL but carry no `-- operation: risk=danger` marker (hand-written
|
|
192
|
+
* migrations). Used as a fallback so these still require --allow-destructive.
|
|
193
|
+
*/
|
|
194
|
+
export function collectUnmarkedDestructiveStatements(migration, sql) {
|
|
195
|
+
return scanDestructiveSqlStatements(sql).map(({ type, statement }) => {
|
|
196
|
+
const detail = describeDestructiveOperation(type);
|
|
197
|
+
const preview = statement.length > 120 ? `${statement.slice(0, 117)}...` : statement;
|
|
198
|
+
return {
|
|
199
|
+
migration,
|
|
200
|
+
type,
|
|
201
|
+
key: extractObjectKey(statement),
|
|
202
|
+
risk: 'danger',
|
|
203
|
+
warningCode: detail.warningCode,
|
|
204
|
+
reason: detail.reason,
|
|
205
|
+
impact: detail.impact,
|
|
206
|
+
recommendation: detail.recommendation,
|
|
207
|
+
summary: `unmarked destructive SQL: ${preview}`,
|
|
208
|
+
};
|
|
209
|
+
});
|
|
210
|
+
}
|
|
117
211
|
//# sourceMappingURL=safety-markers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safety-markers.js","sourceRoot":"","sources":["../../src/runtime/safety-markers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"safety-markers.js","sourceRoot":"","sources":["../../src/runtime/safety-markers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chkit",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.29",
|
|
4
4
|
"description": "ClickHouse schema and migration CLI for TypeScript projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "ObsessionDB",
|
|
@@ -40,12 +40,12 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"fast-glob": "^3.3.2",
|
|
43
|
-
"@chkit/clickhouse": "0.1.0-beta.
|
|
44
|
-
"@chkit/codegen": "0.1.0-beta.
|
|
45
|
-
"@chkit/core": "0.1.0-beta.
|
|
43
|
+
"@chkit/clickhouse": "0.1.0-beta.29",
|
|
44
|
+
"@chkit/codegen": "0.1.0-beta.29",
|
|
45
|
+
"@chkit/core": "0.1.0-beta.29",
|
|
46
46
|
"@logtape/logtape": "^2.0.5"
|
|
47
47
|
},
|
|
48
48
|
"optionalDependencies": {
|
|
49
|
-
"@chkit/plugin-obsessiondb": "0.1.0-beta.
|
|
49
|
+
"@chkit/plugin-obsessiondb": "0.1.0-beta.29"
|
|
50
50
|
}
|
|
51
51
|
}
|