@chkit/core 0.1.0-beta.9 → 0.1.0
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/dist/canonical.d.ts.map +1 -1
- package/dist/canonical.js +67 -5
- package/dist/canonical.js.map +1 -1
- package/dist/codec.d.ts +23 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +193 -0
- package/dist/codec.js.map +1 -0
- package/dist/config-path.d.ts +3 -0
- package/dist/config-path.d.ts.map +1 -0
- package/dist/config-path.js +5 -0
- package/dist/config-path.js.map +1 -0
- package/dist/diff-primitives.d.ts +5 -4
- package/dist/diff-primitives.d.ts.map +1 -1
- package/dist/flags.d.ts +26 -0
- package/dist/flags.d.ts.map +1 -1
- package/dist/flags.js +63 -17
- package/dist/flags.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/key-clause.d.ts +1 -1
- package/dist/key-clause.d.ts.map +1 -1
- package/dist/key-clause.js +1 -1
- package/dist/key-clause.js.map +1 -1
- package/dist/model-types.d.ts +99 -11
- package/dist/model-types.d.ts.map +1 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +1 -0
- package/dist/model.js.map +1 -1
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +116 -13
- package/dist/planner.js.map +1 -1
- package/dist/schema-loader.d.ts.map +1 -1
- package/dist/schema-loader.js +2 -2
- package/dist/schema-loader.js.map +1 -1
- package/dist/sql-normalizer.d.ts +1 -0
- package/dist/sql-normalizer.d.ts.map +1 -1
- package/dist/sql-normalizer.js +7 -0
- package/dist/sql-normalizer.js.map +1 -1
- package/dist/sql-splitter.d.ts +3 -0
- package/dist/sql-splitter.d.ts.map +1 -0
- package/dist/sql-splitter.js +168 -0
- package/dist/sql-splitter.js.map +1 -0
- package/dist/sql.d.ts +8 -1
- package/dist/sql.d.ts.map +1 -1
- package/dist/sql.js +74 -3
- package/dist/sql.js.map +1 -1
- package/dist/ts-import.d.ts +12 -0
- package/dist/ts-import.d.ts.map +1 -0
- package/dist/ts-import.js +29 -0
- package/dist/ts-import.js.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +2 -0
- package/dist/utils.js.map +1 -0
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +68 -0
- package/dist/validate.js.map +1 -1
- package/package.json +24 -2
package/dist/canonical.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../src/canonical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../src/canonical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,gBAAgB,EAIjB,MAAM,YAAY,CAAA;AAiKnB,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAI9E;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAE3D;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAc3F;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,EAAE,CAiB7F"}
|
package/dist/canonical.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { normalizeKeyColumns } from './key-clause.js';
|
|
2
2
|
import { isSchemaDefinition } from './model.js';
|
|
3
|
-
import {
|
|
3
|
+
import { canonicalizeCodec } from './codec.js';
|
|
4
|
+
import { normalizeEngine, normalizeSQLFragment } from './sql-normalizer.js';
|
|
4
5
|
function sortByName(items) {
|
|
5
6
|
return [...items].sort((a, b) => a.name.localeCompare(b.name));
|
|
6
7
|
}
|
|
@@ -18,6 +19,7 @@ function canonicalizeColumn(column) {
|
|
|
18
19
|
renamedFrom: column.renamedFrom?.trim(),
|
|
19
20
|
type: typeof column.type === 'string' ? column.type.trim() : column.type,
|
|
20
21
|
comment: column.comment?.trim(),
|
|
22
|
+
codec: column.codec ? canonicalizeCodec(column.codec) : undefined,
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
25
|
function canonicalizeIndex(index) {
|
|
@@ -40,6 +42,11 @@ function canonicalizeTable(def) {
|
|
|
40
42
|
const projections = def.projections
|
|
41
43
|
? sortByName(def.projections).map(canonicalizeProjection)
|
|
42
44
|
: undefined;
|
|
45
|
+
const orderBy = normalizeKeyColumns(def.orderBy);
|
|
46
|
+
// ClickHouse derives the primary key from ORDER BY when PRIMARY KEY is
|
|
47
|
+
// omitted. Mirror that so a table with `orderBy` but no `primaryKey` is
|
|
48
|
+
// valid instead of crashing on `undefined.flatMap`.
|
|
49
|
+
const primaryKey = normalizeKeyColumns(def.primaryKey);
|
|
43
50
|
return {
|
|
44
51
|
...def,
|
|
45
52
|
database: def.database.trim(),
|
|
@@ -50,10 +57,10 @@ function canonicalizeTable(def) {
|
|
|
50
57
|
name: def.renamedFrom.name.trim(),
|
|
51
58
|
}
|
|
52
59
|
: undefined,
|
|
53
|
-
engine: def.engine
|
|
60
|
+
engine: normalizeEngine(def.engine),
|
|
54
61
|
columns: def.columns.map(canonicalizeColumn),
|
|
55
|
-
primaryKey:
|
|
56
|
-
orderBy
|
|
62
|
+
primaryKey: primaryKey.length > 0 ? primaryKey : orderBy,
|
|
63
|
+
orderBy,
|
|
57
64
|
uniqueKey: def.uniqueKey ? normalizeKeyColumns(def.uniqueKey) : undefined,
|
|
58
65
|
partitionBy: def.partitionBy ? normalizeSQLFragment(def.partitionBy) : undefined,
|
|
59
66
|
ttl: def.ttl ? normalizeSQLFragment(def.ttl) : undefined,
|
|
@@ -72,8 +79,55 @@ function canonicalizeView(def) {
|
|
|
72
79
|
comment: def.comment?.trim(),
|
|
73
80
|
};
|
|
74
81
|
}
|
|
82
|
+
const INTERVAL_UNIT_PATTERN = /\b(second|minute|hour|day|week|month|year)s?\b/gi;
|
|
83
|
+
function canonicalizeInterval(value) {
|
|
84
|
+
if (value === undefined)
|
|
85
|
+
return undefined;
|
|
86
|
+
return value
|
|
87
|
+
.trim()
|
|
88
|
+
.replace(/\s+/g, ' ')
|
|
89
|
+
.replace(INTERVAL_UNIT_PATTERN, (unit) => unit.toUpperCase().replace(/S$/, ''));
|
|
90
|
+
}
|
|
91
|
+
function canonicalizeRefresh(refresh) {
|
|
92
|
+
if (!refresh)
|
|
93
|
+
return undefined;
|
|
94
|
+
const dependsOn = refresh.dependsOn
|
|
95
|
+
? [...refresh.dependsOn]
|
|
96
|
+
.map((dep) => ({ database: dep.database.trim(), name: dep.name.trim() }))
|
|
97
|
+
.sort((a, b) => {
|
|
98
|
+
const aKey = `${a.database}.${a.name}`;
|
|
99
|
+
const bKey = `${b.database}.${b.name}`;
|
|
100
|
+
return aKey.localeCompare(bKey);
|
|
101
|
+
})
|
|
102
|
+
: undefined;
|
|
103
|
+
const settings = refresh.settings
|
|
104
|
+
? Object.fromEntries(Object.entries(refresh.settings).sort(([a], [b]) => a.localeCompare(b)))
|
|
105
|
+
: undefined;
|
|
106
|
+
const canonical = {};
|
|
107
|
+
const every = canonicalizeInterval(refresh.every);
|
|
108
|
+
const after = canonicalizeInterval(refresh.after);
|
|
109
|
+
const offset = canonicalizeInterval(refresh.offset);
|
|
110
|
+
const randomize = canonicalizeInterval(refresh.randomize);
|
|
111
|
+
if (every !== undefined)
|
|
112
|
+
canonical.every = every;
|
|
113
|
+
if (after !== undefined)
|
|
114
|
+
canonical.after = after;
|
|
115
|
+
if (offset !== undefined)
|
|
116
|
+
canonical.offset = offset;
|
|
117
|
+
if (randomize !== undefined)
|
|
118
|
+
canonical.randomize = randomize;
|
|
119
|
+
if (dependsOn && dependsOn.length > 0)
|
|
120
|
+
canonical.dependsOn = dependsOn;
|
|
121
|
+
if (settings && Object.keys(settings).length > 0)
|
|
122
|
+
canonical.settings = settings;
|
|
123
|
+
if (refresh.append)
|
|
124
|
+
canonical.append = true;
|
|
125
|
+
if (refresh.empty)
|
|
126
|
+
canonical.empty = true;
|
|
127
|
+
return canonical;
|
|
128
|
+
}
|
|
75
129
|
function canonicalizeMaterializedView(def) {
|
|
76
|
-
|
|
130
|
+
const canonical = {
|
|
77
131
|
...def,
|
|
78
132
|
database: def.database.trim(),
|
|
79
133
|
name: def.name.trim(),
|
|
@@ -84,6 +138,14 @@ function canonicalizeMaterializedView(def) {
|
|
|
84
138
|
as: normalizeSQLFragment(def.as),
|
|
85
139
|
comment: def.comment?.trim(),
|
|
86
140
|
};
|
|
141
|
+
const refresh = canonicalizeRefresh(def.refresh);
|
|
142
|
+
if (refresh) {
|
|
143
|
+
canonical.refresh = refresh;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
delete canonical.refresh;
|
|
147
|
+
}
|
|
148
|
+
return canonical;
|
|
87
149
|
}
|
|
88
150
|
export function canonicalizeDefinition(def) {
|
|
89
151
|
if (def.kind === 'table')
|
package/dist/canonical.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../src/canonical.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../src/canonical.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE3E,SAAS,UAAU,CAA6B,KAAU;IACxD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,SAAS,QAAQ,CAAC,IAA8B;IAC9C,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAA;IAC9B,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAwB;IAClD,OAAO;QACL,GAAG,MAAM;QACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;QACxB,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE;QACvC,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;QACxE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;KAClE,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA0B;IACnD,OAAO;QACL,GAAG,KAAK;QACR,UAAU,EAAE,oBAAoB,CAAC,KAAK,CAAC,UAAU,CAAC;KACnD,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAgC;IAC9D,OAAO;QACL,GAAG,UAAU;QACb,KAAK,EAAE,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC;KAC9C,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAoB;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ;QAC3B,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACpE;QACH,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACxF,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW;QACjC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC;QACzD,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAChD,uEAAuE;IACvE,wEAAwE;IACxE,oDAAoD;IACpD,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAEtD,OAAO;QACL,GAAG,GAAG;QACN,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;QACrB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC1B,CAAC,CAAC;gBACE,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE;gBAC1C,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;aAClC;YACH,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;QACnC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC5C,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;QACxD,OAAO;QACP,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACzE,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;QAChF,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QACxD,QAAQ;QACR,OAAO;QACP,WAAW;QACX,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE;KAC7B,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAmB;IAC3C,OAAO;QACL,GAAG,GAAG;QACN,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;QACrB,EAAE,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE;KAC7B,CAAA;AACH,CAAC;AAED,MAAM,qBAAqB,GAAG,kDAAkD,CAAA;AAEhF,SAAS,oBAAoB,CAAC,KAAyB;IACrD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,OAAO,KAAK;SACT,IAAI,EAAE;SACN,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;AACnF,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAA4C;IAE5C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;QACjC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;aACnB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;aACxE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;YACtC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;YACtC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC,CAAC;QACN,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;QAC/B,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACxE;QACH,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,SAAS,GAA4B,EAAE,CAAA;IAC7C,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACzD,IAAI,KAAK,KAAK,SAAS;QAAE,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;IAChD,IAAI,MAAM,KAAK,SAAS;QAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;IACnD,IAAI,SAAS,KAAK,SAAS;QAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5D,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAA;IACtE,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC/E,IAAI,OAAO,CAAC,MAAM;QAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;IAC3C,IAAI,OAAO,CAAC,KAAK;QAAE,SAAS,CAAC,KAAK,GAAG,IAAI,CAAA;IACzC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,4BAA4B,CAAC,GAA+B;IACnE,MAAM,SAAS,GAA+B;QAC5C,GAAG,GAAG;QACN,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;QACrB,EAAE,EAAE;YACF,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;YAChC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;SACzB;QACD,EAAE,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE;KAC7B,CAAA;IACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,CAAC,OAAO,GAAG,OAAO,CAAA;IAC7B,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC,OAAO,CAAA;IAC1B,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAqB;IAC1D,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAA;IACvD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACrD,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAqB;IACjD,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,WAA+B;IACrE,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAA;IACjD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;QAC9C,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACrD,IAAI,SAAS,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QACrC,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QACpD,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,OAAO,CAAA;QACjC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,GAA4B;IACvE,MAAM,GAAG,GAAuB,EAAE,CAAA;IAElC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE;QAC9B,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,KAAK,IAAI,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YACtC,OAAM;QACR,CAAC;QACD,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACf,OAAM;QACR,CAAC;IACH,CAAC,CAAA;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IACnD,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAA;AACrC,CAAC"}
|
package/dist/codec.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ColumnCodec, ColumnCodecSpec, GeneralColumnCodec, PreprocessingColumnCodec, RawColumnCodec } from './model-types.js';
|
|
2
|
+
export declare function isGeneralCodec(codec: ColumnCodec): codec is GeneralColumnCodec;
|
|
3
|
+
export declare function isPreprocessorCodec(codec: ColumnCodec): codec is PreprocessingColumnCodec;
|
|
4
|
+
export declare function isRawCodec(codec: ColumnCodec): codec is RawColumnCodec;
|
|
5
|
+
export declare function renderCodec(spec: ColumnCodecSpec): string;
|
|
6
|
+
/**
|
|
7
|
+
* Parses a ClickHouse-returned codec expression (e.g. `CODEC(Delta(4), ZSTD(1))`).
|
|
8
|
+
* Returns undefined for empty/missing input. Unknown or unparsable tokens fall
|
|
9
|
+
* back to a single `raw` atom holding the whole chain, so ClickHouse-returned
|
|
10
|
+
* codecs we haven't typed still round-trip cleanly.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseCodec(raw: string | undefined | null): ColumnCodec[] | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Normalizes a codec spec to array form with ClickHouse defaults filled in,
|
|
15
|
+
* so that `{kind:'ZSTD'}` and `{kind:'ZSTD', level:1}` compare equal.
|
|
16
|
+
* Does not reorder chain steps — `[Delta, ZSTD]` ≠ `[ZSTD, Delta]` semantically.
|
|
17
|
+
*/
|
|
18
|
+
export declare function canonicalizeCodec(spec: ColumnCodecSpec): ColumnCodec[];
|
|
19
|
+
export declare function codecsEqual(a?: ColumnCodecSpec, b?: ColumnCodecSpec): boolean;
|
|
20
|
+
export declare const codec: {
|
|
21
|
+
raw: (expression: string) => RawColumnCodec;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,EACf,MAAM,kBAAkB,CAAA;AASzB,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,IAAI,kBAAkB,CAE9E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,IAAI,wBAAwB,CAEzF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,IAAI,cAAc,CAEtE;AAyBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAGzD;AA4ED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,EAAE,GAAG,SAAS,CAkBpF;AAqBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,EAAE,CAEtE;AAED,wBAAgB,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAI7E;AAED,eAAO,MAAM,KAAK;sBACE,MAAM,KAAG,cAAc;CAC1C,CAAA"}
|
package/dist/codec.js
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
const GENERAL_KINDS = new Set(['NONE', 'LZ4', 'LZ4HC', 'ZSTD', 'T64', 'GCD', 'ALP']);
|
|
2
|
+
const PREPROCESSOR_KINDS = new Set(['Delta', 'DoubleDelta', 'Gorilla', 'FPC']);
|
|
3
|
+
function toArray(spec) {
|
|
4
|
+
return Array.isArray(spec) ? spec : [spec];
|
|
5
|
+
}
|
|
6
|
+
export function isGeneralCodec(codec) {
|
|
7
|
+
return GENERAL_KINDS.has(codec.kind);
|
|
8
|
+
}
|
|
9
|
+
export function isPreprocessorCodec(codec) {
|
|
10
|
+
return PREPROCESSOR_KINDS.has(codec.kind);
|
|
11
|
+
}
|
|
12
|
+
export function isRawCodec(codec) {
|
|
13
|
+
return codec.kind === 'raw';
|
|
14
|
+
}
|
|
15
|
+
function renderStep(step) {
|
|
16
|
+
switch (step.kind) {
|
|
17
|
+
case 'NONE':
|
|
18
|
+
case 'LZ4':
|
|
19
|
+
case 'T64':
|
|
20
|
+
case 'GCD':
|
|
21
|
+
case 'ALP':
|
|
22
|
+
return step.kind;
|
|
23
|
+
case 'LZ4HC':
|
|
24
|
+
return step.level !== undefined ? `LZ4HC(${step.level})` : 'LZ4HC';
|
|
25
|
+
case 'ZSTD':
|
|
26
|
+
return step.level !== undefined ? `ZSTD(${step.level})` : 'ZSTD';
|
|
27
|
+
case 'Delta':
|
|
28
|
+
case 'DoubleDelta':
|
|
29
|
+
case 'Gorilla':
|
|
30
|
+
return step.size !== undefined ? `${step.kind}(${step.size})` : step.kind;
|
|
31
|
+
case 'FPC':
|
|
32
|
+
return `FPC(${step.level}, ${step.floatSize})`;
|
|
33
|
+
case 'raw':
|
|
34
|
+
return step.expression;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function renderCodec(spec) {
|
|
38
|
+
const steps = toArray(spec);
|
|
39
|
+
return `CODEC(${steps.map(renderStep).join(', ')})`;
|
|
40
|
+
}
|
|
41
|
+
const ATOM_PATTERN = /^(\w+)(?:\(([^)]*)\))?$/;
|
|
42
|
+
function parseAtom(raw) {
|
|
43
|
+
const trimmed = raw.trim();
|
|
44
|
+
if (trimmed.length === 0)
|
|
45
|
+
return undefined;
|
|
46
|
+
const match = trimmed.match(ATOM_PATTERN);
|
|
47
|
+
if (!match)
|
|
48
|
+
return undefined;
|
|
49
|
+
const [, name, argsRaw] = match;
|
|
50
|
+
if (!name)
|
|
51
|
+
return undefined;
|
|
52
|
+
const rawArgs = argsRaw?.split(',').map((value) => value.trim());
|
|
53
|
+
const args = rawArgs && !(rawArgs.length === 1 && rawArgs[0] === '') ? rawArgs : undefined;
|
|
54
|
+
switch (name) {
|
|
55
|
+
case 'NONE':
|
|
56
|
+
case 'LZ4':
|
|
57
|
+
case 'T64':
|
|
58
|
+
case 'GCD':
|
|
59
|
+
case 'ALP':
|
|
60
|
+
if (args !== undefined)
|
|
61
|
+
return undefined;
|
|
62
|
+
return { kind: name };
|
|
63
|
+
case 'LZ4HC': {
|
|
64
|
+
if (args === undefined)
|
|
65
|
+
return { kind: 'LZ4HC' };
|
|
66
|
+
if (args.length !== 1)
|
|
67
|
+
return undefined;
|
|
68
|
+
const level = Number(args[0]);
|
|
69
|
+
if (!Number.isFinite(level))
|
|
70
|
+
return undefined;
|
|
71
|
+
return { kind: 'LZ4HC', level };
|
|
72
|
+
}
|
|
73
|
+
case 'ZSTD': {
|
|
74
|
+
if (args === undefined)
|
|
75
|
+
return { kind: 'ZSTD' };
|
|
76
|
+
if (args.length !== 1)
|
|
77
|
+
return undefined;
|
|
78
|
+
const level = Number(args[0]);
|
|
79
|
+
if (!Number.isFinite(level))
|
|
80
|
+
return undefined;
|
|
81
|
+
return { kind: 'ZSTD', level };
|
|
82
|
+
}
|
|
83
|
+
case 'Delta':
|
|
84
|
+
case 'DoubleDelta':
|
|
85
|
+
case 'Gorilla': {
|
|
86
|
+
if (args === undefined)
|
|
87
|
+
return { kind: name };
|
|
88
|
+
if (args.length !== 1)
|
|
89
|
+
return undefined;
|
|
90
|
+
const size = Number(args[0]);
|
|
91
|
+
if (size !== 1 && size !== 2 && size !== 4 && size !== 8)
|
|
92
|
+
return undefined;
|
|
93
|
+
return { kind: name, size };
|
|
94
|
+
}
|
|
95
|
+
case 'FPC': {
|
|
96
|
+
if (!args || args.length !== 2)
|
|
97
|
+
return undefined;
|
|
98
|
+
const level = Number(args[0]);
|
|
99
|
+
const floatSize = Number(args[1]);
|
|
100
|
+
if (!Number.isFinite(level))
|
|
101
|
+
return undefined;
|
|
102
|
+
if (floatSize !== 4 && floatSize !== 8)
|
|
103
|
+
return undefined;
|
|
104
|
+
return { kind: 'FPC', level, floatSize };
|
|
105
|
+
}
|
|
106
|
+
default:
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function splitTopLevelCommas(input) {
|
|
111
|
+
const out = [];
|
|
112
|
+
let depth = 0;
|
|
113
|
+
let current = '';
|
|
114
|
+
for (const ch of input) {
|
|
115
|
+
if (ch === '(')
|
|
116
|
+
depth += 1;
|
|
117
|
+
else if (ch === ')')
|
|
118
|
+
depth = Math.max(0, depth - 1);
|
|
119
|
+
if (ch === ',' && depth === 0) {
|
|
120
|
+
out.push(current);
|
|
121
|
+
current = '';
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
current += ch;
|
|
125
|
+
}
|
|
126
|
+
if (current.length > 0)
|
|
127
|
+
out.push(current);
|
|
128
|
+
return out;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Parses a ClickHouse-returned codec expression (e.g. `CODEC(Delta(4), ZSTD(1))`).
|
|
132
|
+
* Returns undefined for empty/missing input. Unknown or unparsable tokens fall
|
|
133
|
+
* back to a single `raw` atom holding the whole chain, so ClickHouse-returned
|
|
134
|
+
* codecs we haven't typed still round-trip cleanly.
|
|
135
|
+
*/
|
|
136
|
+
export function parseCodec(raw) {
|
|
137
|
+
if (!raw)
|
|
138
|
+
return undefined;
|
|
139
|
+
const trimmed = raw.trim();
|
|
140
|
+
if (trimmed.length === 0)
|
|
141
|
+
return undefined;
|
|
142
|
+
const stripped = trimmed.replace(/^CODEC\s*\(([\s\S]*)\)\s*$/i, '$1').trim();
|
|
143
|
+
if (stripped.length === 0)
|
|
144
|
+
return undefined;
|
|
145
|
+
const atoms = splitTopLevelCommas(stripped)
|
|
146
|
+
.map((value) => value.trim())
|
|
147
|
+
.filter((value) => value.length > 0);
|
|
148
|
+
const parsed = [];
|
|
149
|
+
for (const atom of atoms) {
|
|
150
|
+
const step = parseAtom(atom);
|
|
151
|
+
if (!step)
|
|
152
|
+
return [{ kind: 'raw', expression: stripped }];
|
|
153
|
+
parsed.push(step);
|
|
154
|
+
}
|
|
155
|
+
return parsed;
|
|
156
|
+
}
|
|
157
|
+
function canonicalizeStep(step) {
|
|
158
|
+
switch (step.kind) {
|
|
159
|
+
case 'ZSTD':
|
|
160
|
+
return { kind: 'ZSTD', level: step.level ?? 1 };
|
|
161
|
+
case 'LZ4HC':
|
|
162
|
+
return { kind: 'LZ4HC', level: step.level ?? 9 };
|
|
163
|
+
case 'Delta':
|
|
164
|
+
case 'DoubleDelta':
|
|
165
|
+
case 'Gorilla':
|
|
166
|
+
return { kind: step.kind, size: step.size ?? 1 };
|
|
167
|
+
case 'FPC':
|
|
168
|
+
return { kind: 'FPC', level: step.level, floatSize: step.floatSize };
|
|
169
|
+
case 'raw':
|
|
170
|
+
return { kind: 'raw', expression: step.expression.trim() };
|
|
171
|
+
default:
|
|
172
|
+
return { kind: step.kind };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Normalizes a codec spec to array form with ClickHouse defaults filled in,
|
|
177
|
+
* so that `{kind:'ZSTD'}` and `{kind:'ZSTD', level:1}` compare equal.
|
|
178
|
+
* Does not reorder chain steps — `[Delta, ZSTD]` ≠ `[ZSTD, Delta]` semantically.
|
|
179
|
+
*/
|
|
180
|
+
export function canonicalizeCodec(spec) {
|
|
181
|
+
return toArray(spec).map(canonicalizeStep);
|
|
182
|
+
}
|
|
183
|
+
export function codecsEqual(a, b) {
|
|
184
|
+
if (a === undefined && b === undefined)
|
|
185
|
+
return true;
|
|
186
|
+
if (a === undefined || b === undefined)
|
|
187
|
+
return false;
|
|
188
|
+
return JSON.stringify(canonicalizeCodec(a)) === JSON.stringify(canonicalizeCodec(b));
|
|
189
|
+
}
|
|
190
|
+
export const codec = {
|
|
191
|
+
raw: (expression) => ({ kind: 'raw', expression: expression.trim() }),
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-path.d.ts","sourceRoot":"","sources":["../src/config-path.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,0BAA0B,CAAA;AAE9D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-path.js","sourceRoot":"","sources":["../src/config-path.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAA;AAE9D,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI,KAAK,uBAAuB,CAAA;AACzC,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
interface NamedDiffChange<T> {
|
|
2
2
|
name: string;
|
|
3
3
|
oldItem: T;
|
|
4
4
|
newItem: T;
|
|
5
5
|
}
|
|
6
|
-
|
|
6
|
+
interface NamedDiffResult<T> {
|
|
7
7
|
added: T[];
|
|
8
8
|
removed: T[];
|
|
9
9
|
changed: NamedDiffChange<T>[];
|
|
10
10
|
}
|
|
11
11
|
export declare function diffByName<T>(oldItems: readonly T[], newItems: readonly T[], getName: (item: T) => string, equals: (left: T, right: T) => boolean): NamedDiffResult<T>;
|
|
12
|
-
|
|
12
|
+
interface SettingDiffResult {
|
|
13
13
|
changes: Array<{
|
|
14
14
|
kind: 'modify';
|
|
15
15
|
key: string;
|
|
@@ -20,9 +20,10 @@ export interface SettingDiffResult {
|
|
|
20
20
|
}>;
|
|
21
21
|
}
|
|
22
22
|
export declare function diffSettings(oldSettings: Record<string, string | number | boolean>, newSettings: Record<string, string | number | boolean>): SettingDiffResult;
|
|
23
|
-
|
|
23
|
+
interface ClauseComparison {
|
|
24
24
|
oldValue: string;
|
|
25
25
|
newValue: string;
|
|
26
26
|
}
|
|
27
27
|
export declare function diffClauses(comparisons: readonly ClauseComparison[]): boolean;
|
|
28
|
+
export {};
|
|
28
29
|
//# sourceMappingURL=diff-primitives.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-primitives.d.ts","sourceRoot":"","sources":["../src/diff-primitives.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"diff-primitives.d.ts","sourceRoot":"","sources":["../src/diff-primitives.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe,CAAC,CAAC;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,CAAC,CAAA;IACV,OAAO,EAAE,CAAC,CAAA;CACX;AAED,UAAU,eAAe,CAAC,CAAC;IACzB,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAA;CAC9B;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,QAAQ,EAAE,SAAS,CAAC,EAAE,EACtB,QAAQ,EAAE,SAAS,CAAC,EAAE,EACtB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,GACrC,eAAe,CAAC,CAAC,CAAC,CA+BpB;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,KAAK,CACV;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAE,GACjE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CACjC,CAAA;CACF;AAED,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EACtD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,iBAAiB,CAmBnB;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO,CAE7E"}
|
package/dist/flags.d.ts
CHANGED
|
@@ -24,6 +24,32 @@ export declare class MissingFlagValueError extends Error {
|
|
|
24
24
|
readonly flag: string;
|
|
25
25
|
constructor(flag: string);
|
|
26
26
|
}
|
|
27
|
+
export interface FlagMappingEntry {
|
|
28
|
+
key: string;
|
|
29
|
+
coerce?: (value: string) => unknown;
|
|
30
|
+
}
|
|
31
|
+
export type FlagMapping = Record<string, FlagMappingEntry>;
|
|
32
|
+
export declare function mapFlags(flags: ParsedFlags, mapping: FlagMapping): Record<string, unknown>;
|
|
33
|
+
/** Minimal interface compatible with Zod's safeParse — avoids a zod dependency in core. */
|
|
34
|
+
export interface SafeParseable<T> {
|
|
35
|
+
safeParse(data: unknown): {
|
|
36
|
+
success: true;
|
|
37
|
+
data: T;
|
|
38
|
+
} | {
|
|
39
|
+
success: false;
|
|
40
|
+
error: {
|
|
41
|
+
issues: Array<{
|
|
42
|
+
path: PropertyKey[];
|
|
43
|
+
message: string;
|
|
44
|
+
}>;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Two-layer option resolution: registration options → CLI flags.
|
|
50
|
+
* Merges sources, validates through a schema, and throws ErrorClass on failure.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveOptions<T>(schema: SafeParseable<T>, options: Record<string, unknown>, flags: ParsedFlags, flagMapping: FlagMapping, ErrorClass?: new (message: string) => Error): T;
|
|
27
53
|
export declare function parseFlags<const T extends readonly FlagDef[]>(argv: string[], flagDefs: T): InferFlags<T>;
|
|
28
54
|
export {};
|
|
29
55
|
//# sourceMappingURL=flags.d.ts.map
|
package/dist/flags.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;IACvC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;AAEjF,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI;KACpD,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CACtD,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAE1E;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EAC3D,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,CAAC,GACP,UAAU,CAAC,CAAC,CAAC,CAEf;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,IAAI,EAAE,MAAM;CAKzB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,IAAI,EAAE,MAAM;CAKzB;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;IACvC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;AAEjF,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI;KACpD,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CACtD,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAE1E;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EAC3D,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,CAAC,GACP,UAAU,CAAC,CAAC,CAAC,CAEf;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,IAAI,EAAE,MAAM;CAKzB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,IAAI,EAAE,MAAM;CAKzB;AAID,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;CACpC;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAE1D,wBAAgB,QAAQ,CACtB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB;AAED,2FAA2F;AAC3F,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,SAAS,CAAC,IAAI,EAAE,OAAO,GACnB;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAC1B;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE;YAAE,MAAM,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAA;KAAE,CAAA;CAC3F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,WAAW,EACxB,UAAU,GAAE,KAAK,OAAO,EAAE,MAAM,KAAK,KAAa,GACjD,CAAC,CAWH;AAID,wBAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CA2EzG"}
|
package/dist/flags.js
CHANGED
|
@@ -20,6 +20,36 @@ export class MissingFlagValueError extends Error {
|
|
|
20
20
|
this.flag = flag;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
+
export function mapFlags(flags, mapping) {
|
|
24
|
+
const result = {};
|
|
25
|
+
for (const [flagName, entry] of Object.entries(mapping)) {
|
|
26
|
+
const raw = flags[flagName];
|
|
27
|
+
if (raw === undefined)
|
|
28
|
+
continue;
|
|
29
|
+
if (entry.coerce && typeof raw === 'string') {
|
|
30
|
+
result[entry.key] = entry.coerce(raw);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
result[entry.key] = raw;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Two-layer option resolution: registration options → CLI flags.
|
|
40
|
+
* Merges sources, validates through a schema, and throws ErrorClass on failure.
|
|
41
|
+
*/
|
|
42
|
+
export function resolveOptions(schema, options, flags, flagMapping, ErrorClass = Error) {
|
|
43
|
+
const cliOverrides = mapFlags(flags, flagMapping);
|
|
44
|
+
const merged = { ...options, ...cliOverrides };
|
|
45
|
+
const result = schema.safeParse(merged);
|
|
46
|
+
if (!result.success) {
|
|
47
|
+
const issue = result.error.issues[0];
|
|
48
|
+
throw new ErrorClass(issue ? `${issue.path.join('.')}: ${issue.message}` : 'Invalid options');
|
|
49
|
+
}
|
|
50
|
+
return result.data;
|
|
51
|
+
}
|
|
52
|
+
// ───── Flag parsing ─────
|
|
23
53
|
export function parseFlags(argv, flagDefs) {
|
|
24
54
|
const lookup = new Map();
|
|
25
55
|
const negationMap = new Map();
|
|
@@ -32,41 +62,57 @@ export function parseFlags(argv, flagDefs) {
|
|
|
32
62
|
}
|
|
33
63
|
}
|
|
34
64
|
const flags = {};
|
|
65
|
+
const addArrayValue = (key, raw) => {
|
|
66
|
+
const values = raw.split(',').map((v) => v.trim()).filter((v) => v.length > 0);
|
|
67
|
+
const existing = flags[key];
|
|
68
|
+
if (Array.isArray(existing)) {
|
|
69
|
+
existing.push(...values);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
flags[key] = values;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
35
75
|
for (let i = 0; i < argv.length; i += 1) {
|
|
36
76
|
const token = argv[i];
|
|
37
77
|
if (!token || !token.startsWith('--'))
|
|
38
78
|
continue;
|
|
39
|
-
|
|
40
|
-
|
|
79
|
+
const eqIdx = token.indexOf('=');
|
|
80
|
+
const name = eqIdx === -1 ? token : token.slice(0, eqIdx);
|
|
81
|
+
const inlineValue = eqIdx === -1 ? undefined : token.slice(eqIdx + 1);
|
|
82
|
+
if (eqIdx === -1 && negationMap.has(name)) {
|
|
83
|
+
const originalName = negationMap.get(name);
|
|
41
84
|
flags[originalName] = false;
|
|
42
85
|
continue;
|
|
43
86
|
}
|
|
44
|
-
const def = lookup.get(
|
|
87
|
+
const def = lookup.get(name);
|
|
45
88
|
if (!def) {
|
|
46
|
-
throw new UnknownFlagError(
|
|
89
|
+
throw new UnknownFlagError(name);
|
|
47
90
|
}
|
|
48
91
|
if (def.type === 'boolean') {
|
|
92
|
+
if (inlineValue !== undefined) {
|
|
93
|
+
throw new UnknownFlagError(token);
|
|
94
|
+
}
|
|
49
95
|
flags[def.name] = true;
|
|
50
96
|
continue;
|
|
51
97
|
}
|
|
52
|
-
|
|
53
|
-
if (
|
|
54
|
-
|
|
98
|
+
let value;
|
|
99
|
+
if (inlineValue !== undefined) {
|
|
100
|
+
value = inlineValue;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
const nextToken = argv[i + 1];
|
|
104
|
+
if (nextToken === undefined || nextToken.startsWith('--')) {
|
|
105
|
+
throw new MissingFlagValueError(def.name);
|
|
106
|
+
}
|
|
107
|
+
value = nextToken;
|
|
108
|
+
i += 1;
|
|
55
109
|
}
|
|
56
|
-
i += 1;
|
|
57
110
|
if (def.type === 'string') {
|
|
58
|
-
flags[def.name] =
|
|
111
|
+
flags[def.name] = value;
|
|
59
112
|
continue;
|
|
60
113
|
}
|
|
61
114
|
if (def.type === 'string[]') {
|
|
62
|
-
|
|
63
|
-
const existing = flags[def.name];
|
|
64
|
-
if (Array.isArray(existing)) {
|
|
65
|
-
existing.push(...values);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
flags[def.name] = values;
|
|
69
|
-
}
|
|
115
|
+
addArrayValue(def.name, value);
|
|
70
116
|
}
|
|
71
117
|
}
|
|
72
118
|
return flags;
|
package/dist/flags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,WAAW,CAAqC,IAAO;IACrE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAkB,EAClB,KAAQ;IAER,OAAO,KAAsB,CAAA;AAC/B,CAAC;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,IAAI,CAAQ;IACrB,YAAY,IAAY;QACtB,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAA;QAC9B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,IAAI,CAAQ;IACrB,YAAY,IAAY;QACtB,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CAAqC,IAAc,EAAE,QAAW;IACxF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAA;IACzC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE7C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,QAAQ,QAAQ,EAAE,CAAA;YAClC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAgB,EAAE,CAAA;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAQ;QAE/C,
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
export * from './flags.js';
|
|
2
2
|
export * from './model.js';
|
|
3
|
+
export { SYNTHESIZED_CONFIG_PATH, isSynthesizedConfigPath } from './config-path.js';
|
|
3
4
|
export { canonicalizeDefinition, canonicalizeDefinitions, collectDefinitionsFromModule, } from './canonical.js';
|
|
4
5
|
export { planDiff } from './planner.js';
|
|
5
6
|
export { createSnapshot } from './snapshot.js';
|
|
6
|
-
export { loadSchemaDefinitions, type SchemaLoaderOptions } from './schema-loader.js';
|
|
7
7
|
export { splitTopLevelComma } from './key-clause.js';
|
|
8
|
-
export { normalizeSQLFragment } from './sql-normalizer.js';
|
|
8
|
+
export { normalizeEngine, normalizeSQLFragment } from './sql-normalizer.js';
|
|
9
9
|
export { toCreateSQL } from './sql.js';
|
|
10
|
+
export { canonicalizeCodec, codec, codecsEqual, isGeneralCodec, isPreprocessorCodec, isRawCodec, parseCodec, renderCodec, } from './codec.js';
|
|
10
11
|
export { assertValidDefinitions, validateDefinitions } from './validate.js';
|
|
11
12
|
export { wrapPluginRun } from './plugin-error.js';
|
|
13
|
+
export { splitSqlStatements, extractExecutableStatements } from './sql-splitter.js';
|
|
14
|
+
export { importModuleFile } from './ts-import.js';
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|