@hypequery/clickhouse 1.6.0 → 1.6.2

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 (128) hide show
  1. package/README.md +19 -14
  2. package/dist/cli/generate-types.js +3 -88
  3. package/dist/cli/type-parsing.js +124 -0
  4. package/dist/core/adapters/clickhouse-adapter.d.ts +14 -0
  5. package/dist/core/adapters/clickhouse-adapter.d.ts.map +1 -0
  6. package/dist/core/adapters/clickhouse-adapter.js +58 -0
  7. package/dist/core/adapters/database-adapter.d.ts +13 -0
  8. package/dist/core/adapters/database-adapter.d.ts.map +1 -0
  9. package/dist/core/adapters/database-adapter.js +1 -0
  10. package/dist/core/cache/cache-manager.d.ts.map +1 -1
  11. package/dist/core/cache/cache-manager.js +6 -5
  12. package/dist/core/dialects/clickhouse-dialect.d.ts +10 -0
  13. package/dist/core/dialects/clickhouse-dialect.d.ts.map +1 -0
  14. package/dist/core/dialects/clickhouse-dialect.js +47 -0
  15. package/dist/core/dialects/sql-dialect.d.ts +11 -0
  16. package/dist/core/dialects/sql-dialect.d.ts.map +1 -0
  17. package/dist/core/dialects/sql-dialect.js +1 -0
  18. package/dist/core/features/aggregations.d.ts +5 -5
  19. package/dist/core/features/analytics.d.ts +804 -5
  20. package/dist/core/features/analytics.d.ts.map +1 -1
  21. package/dist/core/features/analytics.js +6 -9
  22. package/dist/core/features/executor.d.ts.map +1 -1
  23. package/dist/core/features/executor.js +26 -53
  24. package/dist/core/features/filtering.d.ts +5 -5
  25. package/dist/core/features/joins.d.ts +1 -1
  26. package/dist/core/features/query-modifiers.d.ts +6 -6
  27. package/dist/core/query-builder.d.ts +17 -6
  28. package/dist/core/query-builder.d.ts.map +1 -1
  29. package/dist/core/query-builder.js +25 -32
  30. package/dist/core/tests/integration/setup.d.ts +3 -1
  31. package/dist/core/tests/integration/setup.d.ts.map +1 -1
  32. package/dist/core/tests/test-utils.d.ts.map +1 -1
  33. package/dist/core/tests/test-utils.js +12 -2
  34. package/dist/core/types/select-types.d.ts +1 -1
  35. package/dist/core/types/select-types.d.ts.map +1 -1
  36. package/dist/core/utils/streaming-helpers.d.ts.map +1 -1
  37. package/dist/core/utils/streaming-helpers.js +8 -0
  38. package/dist/core/utils.d.ts.map +1 -1
  39. package/dist/core/utils.js +3 -0
  40. package/dist/dataset/definition.d.ts +135 -0
  41. package/dist/dataset/definition.d.ts.map +1 -0
  42. package/dist/dataset/definition.js +265 -0
  43. package/dist/dataset/helpers.d.ts +136 -0
  44. package/dist/dataset/helpers.d.ts.map +1 -0
  45. package/dist/dataset/helpers.js +189 -0
  46. package/dist/dataset/index.d.ts +51 -0
  47. package/dist/dataset/index.d.ts.map +1 -0
  48. package/dist/dataset/index.js +59 -0
  49. package/dist/dataset/introspection.d.ts +133 -0
  50. package/dist/dataset/introspection.d.ts.map +1 -0
  51. package/dist/dataset/introspection.js +239 -0
  52. package/dist/dataset/sql-tag.d.ts +51 -0
  53. package/dist/dataset/sql-tag.d.ts.map +1 -0
  54. package/dist/dataset/sql-tag.js +86 -0
  55. package/dist/dataset/types.d.ts +300 -0
  56. package/dist/dataset/types.d.ts.map +1 -0
  57. package/dist/dataset/types.js +11 -0
  58. package/dist/index.d.ts +23 -0
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +26 -15
  61. package/dist/migrations/config/index.d.ts +3 -0
  62. package/dist/migrations/config/index.d.ts.map +1 -0
  63. package/dist/migrations/config/index.js +1 -0
  64. package/dist/migrations/config/types.d.ts +45 -0
  65. package/dist/migrations/config/types.d.ts.map +1 -0
  66. package/dist/migrations/config/types.js +28 -0
  67. package/dist/migrations/diff/diff.d.ts +11 -0
  68. package/dist/migrations/diff/diff.d.ts.map +1 -0
  69. package/dist/migrations/diff/diff.js +240 -0
  70. package/dist/migrations/diff/index.d.ts +3 -0
  71. package/dist/migrations/diff/index.d.ts.map +1 -0
  72. package/dist/migrations/diff/index.js +1 -0
  73. package/dist/migrations/diff/types.d.ts +74 -0
  74. package/dist/migrations/diff/types.d.ts.map +1 -0
  75. package/dist/migrations/diff/types.js +1 -0
  76. package/dist/migrations/plan/index.d.ts +3 -0
  77. package/dist/migrations/plan/index.d.ts.map +1 -0
  78. package/dist/migrations/plan/index.js +1 -0
  79. package/dist/migrations/plan/plan.d.ts +12 -0
  80. package/dist/migrations/plan/plan.d.ts.map +1 -0
  81. package/dist/migrations/plan/plan.js +416 -0
  82. package/dist/migrations/plan/types.d.ts +93 -0
  83. package/dist/migrations/plan/types.d.ts.map +1 -0
  84. package/dist/migrations/plan/types.js +1 -0
  85. package/dist/migrations/schema/column.d.ts +71 -0
  86. package/dist/migrations/schema/column.d.ts.map +1 -0
  87. package/dist/migrations/schema/column.js +123 -0
  88. package/dist/migrations/schema/define.d.ts +24 -0
  89. package/dist/migrations/schema/define.d.ts.map +1 -0
  90. package/dist/migrations/schema/define.js +47 -0
  91. package/dist/migrations/schema/index.d.ts +4 -0
  92. package/dist/migrations/schema/index.d.ts.map +1 -0
  93. package/dist/migrations/schema/index.js +2 -0
  94. package/dist/migrations/schema/types.d.ts +74 -0
  95. package/dist/migrations/schema/types.d.ts.map +1 -0
  96. package/dist/migrations/schema/types.js +1 -0
  97. package/dist/migrations/snapshot/index.d.ts +3 -0
  98. package/dist/migrations/snapshot/index.d.ts.map +1 -0
  99. package/dist/migrations/snapshot/index.js +1 -0
  100. package/dist/migrations/snapshot/serialize.d.ts +21 -0
  101. package/dist/migrations/snapshot/serialize.d.ts.map +1 -0
  102. package/dist/migrations/snapshot/serialize.js +127 -0
  103. package/dist/migrations/snapshot/types.d.ts +47 -0
  104. package/dist/migrations/snapshot/types.d.ts.map +1 -0
  105. package/dist/migrations/snapshot/types.js +1 -0
  106. package/dist/migrations/sql/index.d.ts +4 -0
  107. package/dist/migrations/sql/index.d.ts.map +1 -0
  108. package/dist/migrations/sql/index.js +2 -0
  109. package/dist/migrations/sql/render.d.ts +10 -0
  110. package/dist/migrations/sql/render.d.ts.map +1 -0
  111. package/dist/migrations/sql/render.js +347 -0
  112. package/dist/migrations/sql/types.d.ts +53 -0
  113. package/dist/migrations/sql/types.d.ts.map +1 -0
  114. package/dist/migrations/sql/types.js +1 -0
  115. package/dist/migrations/sql/write.d.ts +10 -0
  116. package/dist/migrations/sql/write.d.ts.map +1 -0
  117. package/dist/migrations/sql/write.js +35 -0
  118. package/dist/types/base.d.ts +2 -1
  119. package/dist/types/base.d.ts.map +1 -1
  120. package/dist/types/clickhouse-types.d.ts +7 -2
  121. package/dist/types/clickhouse-types.d.ts.map +1 -1
  122. package/dist/types/index.d.ts +1 -0
  123. package/dist/types/index.d.ts.map +1 -1
  124. package/dist/types/index.js +1 -0
  125. package/dist/types/type-helpers.d.ts +7 -0
  126. package/dist/types/type-helpers.d.ts.map +1 -0
  127. package/dist/types/type-helpers.js +1 -0
  128. package/package.json +3 -3
@@ -0,0 +1,347 @@
1
+ import { createMigrationPlan, isMigrationPlan } from '../plan/index.js';
2
+ /**
3
+ * Renders a snapshot diff into reviewable migration artifacts.
4
+ *
5
+ * The renderer produces forward SQL, best-effort reverse SQL, and metadata. It
6
+ * also sequences dependent materialized views around table mutations so stored
7
+ * view SELECT definitions are dropped and recreated with the target snapshot.
8
+ */
9
+ export function renderMigrationArtifacts(input, options) {
10
+ const plan = isMigrationPlan(input) ? input : createMigrationPlan(input);
11
+ assertNoPlanBlockers(plan);
12
+ const upStatements = [];
13
+ const downStatements = [];
14
+ const consumedViewNames = new Set();
15
+ const renderedOperations = [];
16
+ let containsManualSteps = false;
17
+ for (const plannedOperation of normalizeOperationsForRendering(plan.operations)) {
18
+ const { operation } = plannedOperation;
19
+ if (isMaterializedViewOperation(operation) && consumedViewNames.has(getOperationViewName(operation))) {
20
+ continue;
21
+ }
22
+ renderedOperations.push({
23
+ kind: operation.kind,
24
+ classification: plannedOperation.classification,
25
+ });
26
+ upStatements.push(...renderOperationUp(operation, { plan, cluster: options.cluster }, consumedViewNames));
27
+ const renderedDown = renderOperationDown(operation, {
28
+ previousSnapshot: plan.previousSnapshot,
29
+ nextSnapshot: plan.nextSnapshot,
30
+ cluster: options.cluster,
31
+ }, consumedViewNames);
32
+ downStatements.unshift(...renderedDown.statements);
33
+ containsManualSteps = containsManualSteps || renderedDown.manual;
34
+ }
35
+ return {
36
+ upSql: joinStatements(upStatements),
37
+ downSql: joinStatements(downStatements),
38
+ meta: {
39
+ name: options.name,
40
+ timestamp: options.timestamp,
41
+ operations: renderedOperations,
42
+ sourceSnapshotHash: plan.sourceSnapshotHash,
43
+ targetSnapshotHash: plan.targetSnapshotHash,
44
+ custom: false,
45
+ unsafe: plan.diagnostics.some(diagnostic => diagnostic.level === 'warning') ||
46
+ plan.blockers.length > 0 ||
47
+ containsManualSteps,
48
+ containsManualSteps,
49
+ },
50
+ plan,
51
+ };
52
+ }
53
+ function renderOperationUp(operation, context, consumedViewNames) {
54
+ switch (operation.kind) {
55
+ case 'CreateTable':
56
+ return [renderCreateTable(operation.table, context.cluster)];
57
+ case 'DropTable':
58
+ return [renderDropTable(operation.tableName, context.cluster)];
59
+ case 'AddColumn':
60
+ return [renderAlterTableAddColumn(operation.tableName, operation.column, context.cluster)];
61
+ case 'DropColumn':
62
+ return [renderAlterTableDropColumn(operation.tableName, operation.columnName, context.cluster)];
63
+ case 'ModifyColumnDefault':
64
+ case 'ModifyColumnType': {
65
+ const nextColumn = requireColumn(context.plan.nextSnapshot, operation.tableName, operation.columnName);
66
+ return [renderAlterTableModifyColumn(operation.tableName, nextColumn, context.cluster)];
67
+ }
68
+ case 'CreateMaterializedView':
69
+ return [renderCreateMaterializedView({ view: operation.view, cluster: context.cluster })];
70
+ case 'DropMaterializedView':
71
+ return [renderDropMaterializedView(operation.viewName, context.cluster)];
72
+ case 'RecreateMaterializedView':
73
+ return [
74
+ renderDropMaterializedView(operation.previousView.name, context.cluster),
75
+ renderCreateMaterializedView({ view: operation.nextView, cluster: context.cluster }),
76
+ ];
77
+ case 'AlterTableWithDependentViews':
78
+ return renderAlterTableWithDependentViewsUp(operation, context, consumedViewNames);
79
+ default: {
80
+ const exhaustiveCheck = operation;
81
+ return exhaustiveCheck;
82
+ }
83
+ }
84
+ }
85
+ function renderOperationDown(operation, lookup, consumedViewNames) {
86
+ switch (operation.kind) {
87
+ case 'CreateTable':
88
+ return { statements: [renderDropTable(operation.table.name, lookup.cluster)], manual: false };
89
+ case 'DropTable':
90
+ return { statements: [manualDownComment(`recreate dropped table "${operation.tableName}" manually`)], manual: true };
91
+ case 'AddColumn':
92
+ return {
93
+ statements: [renderAlterTableDropColumn(operation.tableName, operation.column.name, lookup.cluster)],
94
+ manual: false,
95
+ };
96
+ case 'DropColumn':
97
+ return {
98
+ statements: [manualDownComment(`recreate dropped column "${operation.tableName}.${operation.columnName}" manually`)],
99
+ manual: true,
100
+ };
101
+ case 'ModifyColumnDefault': {
102
+ const previousColumn = requireColumn(lookup.previousSnapshot, operation.tableName, operation.columnName);
103
+ return {
104
+ statements: [renderAlterTableModifyColumn(operation.tableName, previousColumn, lookup.cluster)],
105
+ manual: false,
106
+ };
107
+ }
108
+ case 'ModifyColumnType':
109
+ return {
110
+ statements: [manualDownComment(`revert type change for "${operation.tableName}.${operation.columnName}" manually`)],
111
+ manual: true,
112
+ };
113
+ case 'CreateMaterializedView':
114
+ return { statements: [renderDropMaterializedView(operation.view.name, lookup.cluster)], manual: false };
115
+ case 'DropMaterializedView': {
116
+ const previousView = requireMaterializedView(lookup.previousSnapshot, operation.viewName);
117
+ return {
118
+ statements: [renderCreateMaterializedView({ view: previousView, cluster: lookup.cluster })],
119
+ manual: false,
120
+ };
121
+ }
122
+ case 'RecreateMaterializedView':
123
+ return {
124
+ statements: [
125
+ renderDropMaterializedView(operation.nextView.name, lookup.cluster),
126
+ renderCreateMaterializedView({ view: operation.previousView, cluster: lookup.cluster }),
127
+ ],
128
+ manual: false,
129
+ };
130
+ case 'AlterTableWithDependentViews':
131
+ return renderAlterTableWithDependentViewsDown(operation, lookup, consumedViewNames);
132
+ default: {
133
+ const exhaustiveCheck = operation;
134
+ return exhaustiveCheck;
135
+ }
136
+ }
137
+ }
138
+ function renderAlterTableWithDependentViewsUp(operation, context, consumedViewNames) {
139
+ const statements = [];
140
+ for (const viewName of operation.dependentViewNames) {
141
+ statements.push(renderDropMaterializedView(viewName, context.cluster));
142
+ consumedViewNames.add(viewName);
143
+ }
144
+ for (const nestedOperation of normalizeTableMutationOperations(operation.operations)) {
145
+ statements.push(...renderOperationUp(nestedOperation, context, consumedViewNames));
146
+ }
147
+ for (const viewName of operation.dependentViewNames) {
148
+ statements.push(renderCreateMaterializedView({
149
+ view: requireMaterializedView(context.plan.nextSnapshot, viewName),
150
+ cluster: context.cluster,
151
+ }));
152
+ }
153
+ return statements;
154
+ }
155
+ function renderAlterTableWithDependentViewsDown(operation, lookup, consumedViewNames) {
156
+ const statements = [];
157
+ let manual = false;
158
+ for (const viewName of operation.dependentViewNames) {
159
+ statements.push(renderDropMaterializedView(viewName, lookup.cluster));
160
+ consumedViewNames.add(viewName);
161
+ }
162
+ for (const nestedOperation of [...normalizeTableMutationOperations(operation.operations)].reverse()) {
163
+ const rendered = renderOperationDown(nestedOperation, lookup, consumedViewNames);
164
+ statements.push(...rendered.statements);
165
+ manual = manual || rendered.manual;
166
+ }
167
+ for (const viewName of operation.dependentViewNames) {
168
+ statements.push(renderCreateMaterializedView({
169
+ view: requireMaterializedView(lookup.previousSnapshot, viewName),
170
+ cluster: lookup.cluster,
171
+ }));
172
+ }
173
+ return { statements, manual };
174
+ }
175
+ function renderCreateTable(table, cluster) {
176
+ const columns = table.columns
177
+ .map(column => ` ${quoteIdentifier(column.name)} ${column.type}${renderColumnDefault(column)}`)
178
+ .join(',\n');
179
+ const settings = Object.keys(table.settings).length > 0
180
+ ? `\nSETTINGS ${Object.entries(table.settings).map(([key, value]) => `${key} = ${value}`).join(', ')}`
181
+ : '';
182
+ return [
183
+ `CREATE TABLE ${quoteIdentifier(table.name)}${renderClusterClause(cluster)} (`,
184
+ columns,
185
+ `) ENGINE = ${renderTableEngine(table)}${settings};`,
186
+ ].join('\n');
187
+ }
188
+ function renderDropTable(tableName, cluster) {
189
+ return `DROP TABLE ${quoteIdentifier(tableName)}${renderClusterClause(cluster)};`;
190
+ }
191
+ function renderAlterTableAddColumn(tableName, column, cluster) {
192
+ return `ALTER TABLE ${quoteIdentifier(tableName)}${renderClusterClause(cluster)} ADD COLUMN ` +
193
+ `${quoteIdentifier(column.name)} ${column.type}${renderColumnDefault(column)};`;
194
+ }
195
+ function renderAlterTableDropColumn(tableName, columnName, cluster) {
196
+ return `ALTER TABLE ${quoteIdentifier(tableName)}${renderClusterClause(cluster)} DROP COLUMN ${quoteIdentifier(columnName)};`;
197
+ }
198
+ function renderAlterTableModifyColumn(tableName, column, cluster) {
199
+ return `ALTER TABLE ${quoteIdentifier(tableName)}${renderClusterClause(cluster)} MODIFY COLUMN ` +
200
+ `${quoteIdentifier(column.name)} ${column.type}${renderColumnDefault(column)};`;
201
+ }
202
+ function renderCreateMaterializedView(context) {
203
+ const toClause = context.view.to ? `\nTO ${quoteIdentifier(context.view.to)}` : '';
204
+ return [
205
+ `CREATE MATERIALIZED VIEW ${quoteIdentifier(context.view.name)}${renderClusterClause(context.cluster)}${toClause} AS`,
206
+ context.view.select,
207
+ ';',
208
+ ].join('\n');
209
+ }
210
+ function renderDropMaterializedView(viewName, cluster) {
211
+ return `DROP TABLE ${quoteIdentifier(viewName)}${renderClusterClause(cluster)};`;
212
+ }
213
+ function renderTableEngine(table) {
214
+ const parts = [table.engine.type, `ORDER BY (${table.engine.orderBy.join(', ')})`];
215
+ if (table.engine.partitionBy) {
216
+ parts.push(`PARTITION BY ${table.engine.partitionBy}`);
217
+ }
218
+ if (table.engine.primaryKey.length > 0) {
219
+ parts.push(`PRIMARY KEY (${table.engine.primaryKey.join(', ')})`);
220
+ }
221
+ if (table.engine.sampleBy) {
222
+ parts.push(`SAMPLE BY ${table.engine.sampleBy}`);
223
+ }
224
+ return parts.join('\n');
225
+ }
226
+ function renderColumnDefault(column) {
227
+ return column.default !== undefined ? ` DEFAULT ${renderDefaultValue(column.default)}` : '';
228
+ }
229
+ function renderClusterClause(cluster) {
230
+ return cluster ? ` ON CLUSTER ${quoteIdentifier(cluster)}` : '';
231
+ }
232
+ function quoteIdentifier(identifier) {
233
+ if (identifier.trim() === '') {
234
+ throw new Error('Invalid ClickHouse identifier: identifiers must not be empty.');
235
+ }
236
+ return `\`${identifier.replace(/`/g, '``')}\``;
237
+ }
238
+ function requireColumn(snapshot, tableName, columnName) {
239
+ const table = snapshot.tables.find(candidate => candidate.name === tableName);
240
+ if (!table) {
241
+ throw new Error(`Table "${tableName}" not found in snapshot.`);
242
+ }
243
+ const column = table.columns.find(candidate => candidate.name === columnName);
244
+ if (!column) {
245
+ throw new Error(`Column "${tableName}.${columnName}" not found in snapshot.`);
246
+ }
247
+ return column;
248
+ }
249
+ function requireMaterializedView(snapshot, viewName) {
250
+ const view = snapshot.materializedViews.find(candidate => candidate.name === viewName);
251
+ if (!view) {
252
+ throw new Error(`Materialized view "${viewName}" not found in snapshot.`);
253
+ }
254
+ return view;
255
+ }
256
+ function isMaterializedViewOperation(operation) {
257
+ return operation.kind === 'DropMaterializedView' ||
258
+ operation.kind === 'CreateMaterializedView' ||
259
+ operation.kind === 'RecreateMaterializedView';
260
+ }
261
+ function getOperationViewName(operation) {
262
+ switch (operation.kind) {
263
+ case 'DropMaterializedView':
264
+ return operation.viewName;
265
+ case 'CreateMaterializedView':
266
+ return operation.view.name;
267
+ case 'RecreateMaterializedView':
268
+ return operation.nextView.name;
269
+ default: {
270
+ const exhaustiveCheck = operation;
271
+ return exhaustiveCheck;
272
+ }
273
+ }
274
+ }
275
+ function manualDownComment(message) {
276
+ return `-- MANUAL STEP REQUIRED: ${message}`;
277
+ }
278
+ function joinStatements(statements) {
279
+ return statements.join('\n\n').trim();
280
+ }
281
+ function renderDefaultValue(defaultValue) {
282
+ if (defaultValue.kind === 'sql') {
283
+ return defaultValue.value;
284
+ }
285
+ if (defaultValue.value === null) {
286
+ return 'NULL';
287
+ }
288
+ if (typeof defaultValue.value === 'number') {
289
+ return String(defaultValue.value);
290
+ }
291
+ if (typeof defaultValue.value === 'boolean') {
292
+ return defaultValue.value ? 'true' : 'false';
293
+ }
294
+ return `'${escapeStringLiteral(defaultValue.value)}'`;
295
+ }
296
+ function escapeStringLiteral(value) {
297
+ return value
298
+ .replace(/\\/g, '\\\\')
299
+ .replace(/\0/g, '\\0')
300
+ .replace(/\x08/g, '\\b')
301
+ .replace(/\f/g, '\\f')
302
+ .replace(/\n/g, '\\n')
303
+ .replace(/\r/g, '\\r')
304
+ .replace(/\t/g, '\\t')
305
+ .replace(/\v/g, '\\v')
306
+ .replace(/'/g, "\\'");
307
+ }
308
+ function normalizeOperationsForRendering(operations) {
309
+ return operations.map(plannedOperation => {
310
+ if (plannedOperation.operation.kind !== 'AlterTableWithDependentViews') {
311
+ return plannedOperation;
312
+ }
313
+ return {
314
+ ...plannedOperation,
315
+ operation: {
316
+ ...plannedOperation.operation,
317
+ operations: normalizeTableMutationOperations(plannedOperation.operation.operations),
318
+ },
319
+ };
320
+ }).filter(plannedOperation => {
321
+ if (plannedOperation.operation.kind !== 'ModifyColumnDefault') {
322
+ return true;
323
+ }
324
+ const operation = plannedOperation.operation;
325
+ return !operations.some(candidate => candidate.operation.kind === 'ModifyColumnType' &&
326
+ candidate.operation.tableName === operation.tableName &&
327
+ candidate.operation.columnName === operation.columnName);
328
+ });
329
+ }
330
+ function normalizeTableMutationOperations(operations) {
331
+ return operations.filter(operation => {
332
+ if (operation.kind !== 'ModifyColumnDefault') {
333
+ return true;
334
+ }
335
+ return !operations.some(candidate => candidate.kind === 'ModifyColumnType' &&
336
+ candidate.tableName === operation.tableName &&
337
+ candidate.columnName === operation.columnName);
338
+ });
339
+ }
340
+ function assertNoPlanBlockers(plan) {
341
+ if (plan.blockers.length === 0) {
342
+ return;
343
+ }
344
+ throw new Error('Cannot render migration with unsupported changes:\n' +
345
+ plan.blockers.map(blocker => `- ${blocker.message}`).join('\n') +
346
+ '\n\nUse a custom SQL migration for this change, or split the schema evolution into supported steps.');
347
+ }
@@ -0,0 +1,53 @@
1
+ import type { MigrationOperation, SnapshotDiffResult } from '../diff/types.js';
2
+ import type { MigrationOperationClassification, MigrationPlan, MigrationPlanInput } from '../plan/types.js';
3
+ import type { Snapshot, SnapshotMaterializedView } from '../snapshot/types.js';
4
+ export interface MigrationMeta {
5
+ name: string;
6
+ timestamp: string;
7
+ operations: Array<{
8
+ kind: MigrationOperation['kind'];
9
+ classification: MigrationOperationClassification;
10
+ }>;
11
+ sourceSnapshotHash: string;
12
+ targetSnapshotHash: string;
13
+ custom: boolean;
14
+ unsafe: boolean;
15
+ containsManualSteps: boolean;
16
+ }
17
+ export interface RenderMigrationArtifactsOptions {
18
+ name: string;
19
+ timestamp: string;
20
+ cluster?: string;
21
+ }
22
+ export interface RenderMigrationArtifactsResult {
23
+ upSql: string;
24
+ downSql: string;
25
+ meta: MigrationMeta;
26
+ plan: MigrationPlan;
27
+ }
28
+ export interface RenderSqlContext {
29
+ plan: MigrationPlan;
30
+ cluster?: string;
31
+ }
32
+ export interface MaterializedViewRenderContext {
33
+ view: SnapshotMaterializedView;
34
+ cluster?: string;
35
+ }
36
+ export interface WriteMigrationArtifactsOptions {
37
+ outDir: string;
38
+ migrationName: string;
39
+ artifacts: RenderMigrationArtifactsResult;
40
+ }
41
+ export interface WriteMigrationArtifactsResult {
42
+ migrationDir: string;
43
+ upPath: string;
44
+ downPath: string;
45
+ metaPath: string;
46
+ planPath: string;
47
+ }
48
+ export interface SnapshotLookup {
49
+ previousSnapshot: Snapshot;
50
+ nextSnapshot: Snapshot;
51
+ }
52
+ export type RenderMigrationArtifactsInput = MigrationPlanInput | SnapshotDiffResult;
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/migrations/sql/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,KAAK,EACV,gCAAgC,EAChC,aAAa,EACb,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACjC,cAAc,EAAE,gCAAgC,CAAC;KAClD,CAAC,CAAC;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,8BAA8B,CAAC;CAC3C;AAED,MAAM,WAAW,6BAA6B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,YAAY,EAAE,QAAQ,CAAC;CACxB;AAED,MAAM,MAAM,6BAA6B,GAAG,kBAAkB,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { WriteMigrationArtifactsOptions, WriteMigrationArtifactsResult } from './types.js';
2
+ /**
3
+ * Writes rendered migration artifacts to a migration directory.
4
+ *
5
+ * The migration name must be a single safe path segment. The writer creates
6
+ * `up.sql`, `down.sql`, `meta.json`, and `plan.json` files under
7
+ * `outDir/migrationName`.
8
+ */
9
+ export declare function writeMigrationArtifacts(options: WriteMigrationArtifactsOptions): Promise<WriteMigrationArtifactsResult>;
10
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/migrations/sql/write.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,6BAA6B,CAAC,CAuBxC"}
@@ -0,0 +1,35 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ /**
4
+ * Writes rendered migration artifacts to a migration directory.
5
+ *
6
+ * The migration name must be a single safe path segment. The writer creates
7
+ * `up.sql`, `down.sql`, `meta.json`, and `plan.json` files under
8
+ * `outDir/migrationName`.
9
+ */
10
+ export async function writeMigrationArtifacts(options) {
11
+ assertValidMigrationName(options.migrationName);
12
+ const migrationDir = path.join(options.outDir, options.migrationName);
13
+ await mkdir(migrationDir, { recursive: true });
14
+ const upPath = path.join(migrationDir, 'up.sql');
15
+ const downPath = path.join(migrationDir, 'down.sql');
16
+ const metaPath = path.join(migrationDir, 'meta.json');
17
+ const planPath = path.join(migrationDir, 'plan.json');
18
+ await writeFile(upPath, `${options.artifacts.upSql}\n`, 'utf8');
19
+ await writeFile(downPath, `${options.artifacts.downSql}\n`, 'utf8');
20
+ await writeFile(metaPath, `${JSON.stringify(options.artifacts.meta, null, 2)}\n`, 'utf8');
21
+ await writeFile(planPath, `${JSON.stringify(options.artifacts.plan, null, 2)}\n`, 'utf8');
22
+ return {
23
+ migrationDir,
24
+ upPath,
25
+ downPath,
26
+ metaPath,
27
+ planPath,
28
+ };
29
+ }
30
+ function assertValidMigrationName(migrationName) {
31
+ if (!/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(migrationName)) {
32
+ throw new Error(`Invalid migration name "${migrationName}". ` +
33
+ 'Migration names must be a single path segment containing only letters, numbers, underscores, and hyphens.');
34
+ }
35
+ }
@@ -1,3 +1,4 @@
1
+ import type { ClickHouseSettings } from '@clickhouse/client-common';
1
2
  import { FilterOperator } from "./filters.js";
2
3
  import type { TableColumn } from './schema.js';
3
4
  export interface QueryConfig<T, Schema> {
@@ -16,7 +17,7 @@ export interface QueryConfig<T, Schema> {
16
17
  parameters?: any[];
17
18
  ctes?: string[];
18
19
  unionQueries?: string[];
19
- settings?: string;
20
+ settings?: ClickHouseSettings;
20
21
  }
21
22
  export type { ColumnType, TableSchema, DatabaseSchema, TableRecord, InferColumnType, TableColumn } from './schema.js';
22
23
  export type WhereExpression = string;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
+ import type { ParseTopLevelArgs } from './type-helpers.js';
1
2
  export type ClickHouseInteger = 'Int8' | 'Int16' | 'Int32' | 'Int64' | 'Int128' | 'Int256' | 'UInt8' | 'UInt16' | 'UInt32' | 'UInt64' | 'UInt128' | 'UInt256';
3
+ export type ClickHouseJsSafeInteger = 'Int8' | 'Int16' | 'Int32' | 'UInt8' | 'UInt16' | 'UInt32';
4
+ export type ClickHouseJsUnsafeInteger = Exclude<ClickHouseInteger, ClickHouseJsSafeInteger>;
2
5
  export type ClickHouseFloat = 'Float32' | 'Float64';
3
6
  export type ClickHouseDecimal = 'Decimal32' | 'Decimal64' | 'Decimal128' | 'Decimal256' | `Decimal(${number}, ${number})`;
4
7
  export type ClickHouseDateTime = 'Date' | 'Date32' | 'DateTime' | `DateTime('${string}')` | `DateTime64(${number})` | `DateTime64(${number}, '${string}')`;
@@ -6,8 +9,10 @@ export type ClickHouseString = 'String' | `FixedString(${number})` | 'UUID';
6
9
  export type ClickHouseBoolean = 'Bool' | 'Boolean';
7
10
  export type ClickHouseEnum = `Enum8(${string})` | `Enum16(${string})`;
8
11
  export type ClickHouseBaseType = ClickHouseInteger | ClickHouseFloat | ClickHouseDecimal | ClickHouseDateTime | ClickHouseString | ClickHouseBoolean | ClickHouseEnum;
9
- export type ClickHouseType = ClickHouseBaseType | `Array(${ClickHouseBaseType})` | `Array(Nullable(${ClickHouseBaseType}))` | `Array(LowCardinality(String))` | `Array(LowCardinality(${ClickHouseEnum}))` | `Nullable(${ClickHouseBaseType})` | `Nullable(Array(${ClickHouseBaseType}))` | `LowCardinality(${ClickHouseString})` | `LowCardinality(${ClickHouseEnum})` | `LowCardinality(Nullable(${ClickHouseString}))` | `LowCardinality(Nullable(${ClickHouseEnum}))` | `Map(String, ${ClickHouseBaseType})` | `Map(String, Array(${ClickHouseBaseType}))` | `Map(String, Nullable(${ClickHouseBaseType}))` | `Map(LowCardinality(String), ${ClickHouseBaseType})` | `Map(LowCardinality(String), Array(${ClickHouseBaseType}))` | `Map(LowCardinality(String), Nullable(${ClickHouseBaseType}))` | `Map(${ClickHouseInteger}, ${ClickHouseBaseType})` | `Map(${ClickHouseInteger}, Array(${ClickHouseBaseType}))` | `Map(${ClickHouseInteger}, Nullable(${ClickHouseBaseType}))` | `Array(Map(String, ${ClickHouseBaseType}))` | `Array(Map(LowCardinality(String), ${ClickHouseBaseType}))` | `Array(Map(${ClickHouseInteger}, ${ClickHouseBaseType}))` | `Nullable(Map(String, ${ClickHouseBaseType}))` | `Nullable(Map(LowCardinality(String), ${ClickHouseBaseType}))`;
10
- export type InferClickHouseType<T extends ClickHouseType, Depth extends number = 0> = Depth extends 5 ? unknown : T extends ClickHouseInteger ? number : T extends ClickHouseFloat ? number : T extends ClickHouseDecimal ? number : T extends ClickHouseDateTime ? string : T extends ClickHouseString ? string : T extends ClickHouseEnum ? string : T extends ClickHouseBoolean ? boolean : T extends `Array(${infer U})` ? U extends ClickHouseType ? Array<InferClickHouseType<U, Add1<Depth>>> : unknown[] : T extends `Nullable(${infer U})` ? U extends ClickHouseType ? InferClickHouseType<U, Add1<Depth>> | null : unknown | null : T extends `LowCardinality(${infer U})` ? U extends `Nullable(${infer V})` ? V extends ClickHouseString | ClickHouseEnum ? InferClickHouseType<V, Add1<Depth>> | null : unknown | null : U extends ClickHouseString | ClickHouseEnum ? InferClickHouseType<U, Add1<Depth>> : unknown : T extends `Map(${string}, ${infer V})` ? V extends ClickHouseType ? Record<string, InferClickHouseType<V, Add1<Depth>>> : Record<string, unknown> : unknown;
12
+ export type ClickHouseType = ClickHouseBaseType | `Array(${ClickHouseBaseType})` | `Array(Nullable(${ClickHouseBaseType}))` | `Array(LowCardinality(String))` | `Array(LowCardinality(${ClickHouseEnum}))` | `Array(Tuple(${string}))` | `Nullable(${ClickHouseBaseType})` | `Nullable(Array(${ClickHouseBaseType}))` | `Nullable(Array(Tuple(${string})))` | `Nullable(Tuple(${string}))` | `LowCardinality(${ClickHouseString})` | `LowCardinality(${ClickHouseEnum})` | `LowCardinality(Nullable(${ClickHouseString}))` | `LowCardinality(Nullable(${ClickHouseEnum}))` | `Map(String, ${ClickHouseBaseType})` | `Map(String, Array(${ClickHouseBaseType}))` | `Map(String, Nullable(${ClickHouseBaseType}))` | `Map(String, Tuple(${string}))` | `Map(String, Array(Tuple(${string})))` | `Map(LowCardinality(String), ${ClickHouseBaseType})` | `Map(LowCardinality(String), Array(${ClickHouseBaseType}))` | `Map(LowCardinality(String), Nullable(${ClickHouseBaseType}))` | `Map(LowCardinality(String), Tuple(${string}))` | `Map(LowCardinality(String), Array(Tuple(${string})))` | `Map(${ClickHouseInteger}, ${ClickHouseBaseType})` | `Map(${ClickHouseInteger}, Array(${ClickHouseBaseType}))` | `Map(${ClickHouseInteger}, Nullable(${ClickHouseBaseType}))` | `Map(${ClickHouseInteger}, Tuple(${string}))` | `Map(${ClickHouseInteger}, Array(Tuple(${string})))` | `Array(Map(String, ${ClickHouseBaseType}))` | `Array(Map(String, Tuple(${string})))` | `Array(Map(LowCardinality(String), ${ClickHouseBaseType}))` | `Array(Map(LowCardinality(String), Tuple(${string})))` | `Array(Map(${ClickHouseInteger}, ${ClickHouseBaseType}))` | `Array(Map(${ClickHouseInteger}, Tuple(${string})))` | `Nullable(Map(String, ${ClickHouseBaseType}))` | `Nullable(Map(String, Tuple(${string})))` | `Nullable(Map(LowCardinality(String), ${ClickHouseBaseType}))` | `Nullable(Map(LowCardinality(String), Tuple(${string})))` | `Tuple(${string})`;
13
+ export type InferClickHouseType<T extends string, Depth extends number = 0> = Depth extends 5 ? unknown : T extends ClickHouseJsSafeInteger ? number : T extends ClickHouseJsUnsafeInteger ? string : T extends ClickHouseFloat ? number : T extends ClickHouseDecimal ? number : T extends ClickHouseDateTime ? string : T extends ClickHouseString ? string : T extends ClickHouseEnum ? string : T extends ClickHouseBoolean ? boolean : T extends `Array(${infer U})` ? U extends ClickHouseType ? Array<InferClickHouseType<U, Add1<Depth>>> : unknown[] : T extends `Tuple(${infer U})` ? ParseTopLevelArgs<U> extends infer Parts extends string[] ? {
14
+ [K in keyof Parts]: InferClickHouseType<Parts[K] & ClickHouseType, Add1<Depth>>;
15
+ } : unknown[] : T extends `Nullable(${infer U})` ? U extends ClickHouseType ? InferClickHouseType<U, Add1<Depth>> | null : unknown | null : T extends `LowCardinality(${infer U})` ? U extends `Nullable(${infer V})` ? V extends ClickHouseString | ClickHouseEnum ? InferClickHouseType<V, Add1<Depth>> | null : unknown | null : U extends ClickHouseString | ClickHouseEnum ? InferClickHouseType<U, Add1<Depth>> : unknown : T extends `Map(${string}, ${infer V})` ? V extends ClickHouseType ? Record<string, InferClickHouseType<V, Add1<Depth>>> : Record<string, unknown> : unknown;
11
16
  type Add1<T extends number> = T extends 0 ? 1 : T extends 1 ? 2 : T extends 2 ? 3 : T extends 3 ? 4 : 5;
12
17
  export type ClickHouseSchema = Record<string, ClickHouseType>;
13
18
  export type InferSchemaType<T extends ClickHouseSchema> = {
@@ -1 +1 @@
1
- {"version":3,"file":"clickhouse-types.d.ts","sourceRoot":"","sources":["../../src/types/clickhouse-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clickhouse-types.d.ts","sourceRoot":"","sources":["../../src/types/clickhouse-types.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@ export * from './base.js';
2
2
  export * from './filters.js';
3
3
  export * from './clickhouse-types.js';
4
4
  export * from './schema.js';
5
+ export * from './type-helpers.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC"}
@@ -2,3 +2,4 @@ export * from './base.js';
2
2
  export * from './filters.js';
3
3
  export * from './clickhouse-types.js';
4
4
  export * from './schema.js';
5
+ export * from './type-helpers.js';
@@ -0,0 +1,7 @@
1
+ type TrimLeft<S extends string> = S extends ` ${infer R}` ? TrimLeft<R> : S;
2
+ type TrimRight<S extends string> = S extends `${infer R} ` ? TrimRight<R> : S;
3
+ type Trim<S extends string> = TrimLeft<TrimRight<S>>;
4
+ type Push<T extends string[], V extends string> = [...T, V];
5
+ export type ParseTopLevelArgs<S extends string, Current extends string = '', Depth extends string[] = [], Result extends string[] = []> = S extends `${infer First}${infer Rest}` ? First extends '(' ? ParseTopLevelArgs<Rest, `${Current}${First}`, Push<Depth, First>, Result> : First extends ')' ? Depth extends [...infer Remaining extends string[], string] ? ParseTopLevelArgs<Rest, `${Current}${First}`, Remaining, Result> : ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result> : First extends ',' ? Depth['length'] extends 0 ? ParseTopLevelArgs<Rest, '', Depth, Push<Result, Trim<Current>>> : ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result> : ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result> : Current extends '' ? Result : Push<Result, Trim<Current>>;
6
+ export {};
7
+ //# sourceMappingURL=type-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-helpers.d.ts","sourceRoot":"","sources":["../../src/types/type-helpers.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5E,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9E,KAAK,IAAI,CAAC,CAAC,SAAS,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAG5D,MAAM,MAAM,iBAAiB,CAC3B,CAAC,SAAS,MAAM,EAChB,OAAO,SAAS,MAAM,GAAG,EAAE,EAC3B,KAAK,SAAS,MAAM,EAAE,GAAG,EAAE,EAC3B,MAAM,SAAS,MAAM,EAAE,GAAG,EAAE,IAC1B,CAAC,SAAS,GAAG,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,GACvC,KAAK,SAAS,GAAG,GACf,iBAAiB,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,GACzE,KAAK,SAAS,GAAG,GACf,KAAK,SAAS,CAAC,GAAG,MAAM,SAAS,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,GACzD,iBAAiB,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,GAChE,iBAAiB,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAC9D,KAAK,SAAS,GAAG,GACf,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GACvB,iBAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAC/D,iBAAiB,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAC9D,iBAAiB,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAClE,OAAO,SAAS,EAAE,GAChB,MAAM,GACN,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypequery/clickhouse",
3
- "version": "1.6.0",
3
+ "version": "1.6.2",
4
4
  "description": "ClickHouse typescript query builder",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -71,8 +71,8 @@
71
71
  "scripts": {
72
72
  "build": "npm run build:main && npm run build:cli && npm run verify-build || npm run diagnose-ci",
73
73
  "build:main": "tsc --project tsconfig.json",
74
- "build:cli": "node scripts/ensure-core-files.js && node scripts/handle-cli-files.js",
75
- "build:ci": "npm run build:main && node scripts/ensure-core-files.js && node scripts/handle-cli-files.js && npm run verify-build || npm run diagnose-ci",
74
+ "build:cli": "node scripts/handle-cli-files.js",
75
+ "build:ci": "npm run build:main && node scripts/handle-cli-files.js && npm run verify-build || npm run diagnose-ci",
76
76
  "verify-build": "node scripts/verify-build.js",
77
77
  "diagnose-ci": "node scripts/diagnose-ci.js",
78
78
  "dev": "tsc --watch",