@metaobjectsdev/migrate-ts 0.5.0 → 0.6.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/README.md +34 -0
- package/dist/emit/d1-safety-pass.d.ts +15 -0
- package/dist/emit/d1-safety-pass.d.ts.map +1 -0
- package/dist/emit/d1-safety-pass.js +80 -0
- package/dist/emit/d1-safety-pass.js.map +1 -0
- package/dist/emit/d1.d.ts +3 -0
- package/dist/emit/d1.d.ts.map +1 -0
- package/dist/emit/d1.js +11 -0
- package/dist/emit/d1.js.map +1 -0
- package/dist/emit/index.d.ts.map +1 -1
- package/dist/emit/index.js +2 -0
- package/dist/emit/index.js.map +1 -1
- package/dist/emit/postgres.js +28 -3
- package/dist/emit/postgres.js.map +1 -1
- package/dist/emit/sqlite.d.ts +1 -1
- package/dist/emit/sqlite.d.ts.map +1 -1
- package/dist/emit/sqlite.js.map +1 -1
- package/dist/errors.d.ts +17 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +28 -0
- package/dist/errors.js.map +1 -1
- package/dist/expected-schema.d.ts +7 -7
- package/dist/expected-schema.d.ts.map +1 -1
- package/dist/expected-schema.js +78 -35
- package/dist/expected-schema.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/introspect/d1.d.ts +21 -0
- package/dist/introspect/d1.d.ts.map +1 -0
- package/dist/introspect/d1.js +149 -0
- package/dist/introspect/d1.js.map +1 -0
- package/dist/introspect/index.d.ts.map +1 -1
- package/dist/introspect/index.js +1 -0
- package/dist/introspect/index.js.map +1 -1
- package/dist/introspect/sqlite-shared.d.ts +14 -0
- package/dist/introspect/sqlite-shared.d.ts.map +1 -0
- package/dist/introspect/sqlite-shared.js +74 -0
- package/dist/introspect/sqlite-shared.js.map +1 -0
- package/dist/introspect/sqlite.js +1 -73
- package/dist/introspect/sqlite.js.map +1 -1
- package/dist/referential-actions.d.ts +49 -0
- package/dist/referential-actions.d.ts.map +1 -0
- package/dist/referential-actions.js +110 -0
- package/dist/referential-actions.js.map +1 -0
- package/dist/types.d.ts +15 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/wrangler-config.d.ts +25 -0
- package/dist/wrangler-config.d.ts.map +1 -0
- package/dist/wrangler-config.js +91 -0
- package/dist/wrangler-config.js.map +1 -0
- package/dist/write-migration-d1.d.ts +17 -0
- package/dist/write-migration-d1.d.ts.map +1 -0
- package/dist/write-migration-d1.js +50 -0
- package/dist/write-migration-d1.js.map +1 -0
- package/package.json +28 -27
- package/src/emit/d1-safety-pass.ts +94 -0
- package/src/emit/d1.ts +16 -0
- package/src/emit/index.ts +2 -0
- package/src/emit/postgres.ts +35 -3
- package/src/emit/sqlite.ts +1 -1
- package/src/errors.ts +33 -0
- package/src/expected-schema.ts +100 -52
- package/src/index.ts +22 -1
- package/src/introspect/d1.ts +185 -0
- package/src/introspect/index.ts +1 -0
- package/src/introspect/sqlite-shared.ts +77 -0
- package/src/introspect/sqlite.ts +2 -69
- package/src/referential-actions.ts +134 -0
- package/src/types.ts +15 -1
- package/src/wrangler-config.ts +103 -0
- package/src/write-migration-d1.ts +74 -0
package/dist/expected-schema.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { TYPE_OBJECT,
|
|
1
|
+
import { TYPE_OBJECT, MetaSource, IDENTITY_ATTR_GENERATION, IDENTITY_ATTR_UNIQUE, FIELD_ATTR_DEFAULT, FIELD_ATTR_UNIQUE, FIELD_SUBTYPE_STRING, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_SHORT, FIELD_SUBTYPE_BYTE, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_CURRENCY, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_CLASS, FIELD_ATTR_OBJECT_REF, FIELD_ATTR_STORAGE, STORAGE_FLATTENED, DOC_ATTR_DESCRIPTION, resolveTableName, resolveColumnName, resolveTableSchema, } from "@metaobjectsdev/metadata";
|
|
2
|
+
import { resolveReferentialActions, validateSetNullNullability, readIdentityFields, findField, isRequired, } from "./referential-actions.js";
|
|
2
3
|
export function buildExpectedSchema(root, opts) {
|
|
4
|
+
// D1 is SQLite at the SQL level; normalize it so downstream dialect checks
|
|
5
|
+
// don't need to handle "d1" separately.
|
|
6
|
+
const dialect = opts?.dialect === "d1" ? "sqlite" : opts?.dialect;
|
|
3
7
|
// Pass 1: collect entities + their resolved table names.
|
|
4
8
|
// Skip:
|
|
5
9
|
// - abstract objects (e.g., BaseEntity)
|
|
6
10
|
// - value objects (no table backing)
|
|
7
|
-
// - projections (
|
|
11
|
+
// - projections (read-only @kind source with no writable peer — handled by
|
|
12
|
+
// the view-diff pipeline, not the table diff)
|
|
8
13
|
const entities = [];
|
|
9
14
|
for (const child of root.ownChildren()) {
|
|
10
15
|
if (child.type !== TYPE_OBJECT)
|
|
@@ -13,8 +18,10 @@ export function buildExpectedSchema(root, opts) {
|
|
|
13
18
|
continue;
|
|
14
19
|
if (child.subType === "value")
|
|
15
20
|
continue;
|
|
16
|
-
const
|
|
17
|
-
|
|
21
|
+
const hasReadOnlySource = child.ownChildren().some((c) => c instanceof MetaSource && c.isReadOnly());
|
|
22
|
+
const hasWritableSource = child.ownChildren().some((c) => c instanceof MetaSource && c.isWritable());
|
|
23
|
+
// Projection: read-only and not write-through.
|
|
24
|
+
if (hasReadOnlySource && !hasWritableSource)
|
|
18
25
|
continue;
|
|
19
26
|
entities.push({ entity: child, tableName: resolveTableName(child) });
|
|
20
27
|
}
|
|
@@ -31,7 +38,7 @@ export function buildExpectedSchema(root, opts) {
|
|
|
31
38
|
return t;
|
|
32
39
|
});
|
|
33
40
|
// Pass 3: dialect-specific SqlType normalization.
|
|
34
|
-
if (
|
|
41
|
+
if (dialect === "sqlite") {
|
|
35
42
|
for (const table of tables) {
|
|
36
43
|
for (const col of table.columns) {
|
|
37
44
|
col.sqlType = normalizeForSqlite(col.sqlType);
|
|
@@ -39,7 +46,7 @@ export function buildExpectedSchema(root, opts) {
|
|
|
39
46
|
}
|
|
40
47
|
}
|
|
41
48
|
// Dialect validation: SQLite has no schema concept; reject any non-default @schema.
|
|
42
|
-
if (
|
|
49
|
+
if (dialect === "sqlite") {
|
|
43
50
|
for (const table of tables) {
|
|
44
51
|
if (table.schema !== undefined) {
|
|
45
52
|
throw new Error(`sqlite does not support DB schemas; entity-table "${table.name}" declares @schema "${table.schema}"`);
|
|
@@ -84,15 +91,37 @@ function buildTable(entity, tableName, resolveTargetTable, root) {
|
|
|
84
91
|
const columns = [];
|
|
85
92
|
for (const field of entity.fields()) {
|
|
86
93
|
const isPk = pkJsNames.includes(field.name);
|
|
87
|
-
|
|
94
|
+
if (field.subType === FIELD_SUBTYPE_OBJECT &&
|
|
95
|
+
field.ownAttr(FIELD_ATTR_STORAGE) === STORAGE_FLATTENED) {
|
|
96
|
+
// Flattened storage: expand nested value-object fields as prefixed columns.
|
|
97
|
+
// The parent field.object itself does NOT produce its own column.
|
|
98
|
+
columns.push(...flattenObjectField(field, root));
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
columns.push(buildColumn(field, isPk, isPk ? pkGeneration : undefined));
|
|
102
|
+
}
|
|
88
103
|
}
|
|
89
|
-
|
|
104
|
+
const descriptor = {
|
|
90
105
|
name: tableName,
|
|
91
106
|
columns,
|
|
92
107
|
indexes: buildSecondaryIndexes(entity, tableName),
|
|
93
108
|
foreignKeys: buildForeignKeys(entity, tableName, resolveTargetTable, root),
|
|
94
109
|
primaryKey,
|
|
95
110
|
};
|
|
111
|
+
const entityDesc = readDescription(entity);
|
|
112
|
+
if (entityDesc !== undefined)
|
|
113
|
+
descriptor.description = entityDesc;
|
|
114
|
+
return descriptor;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Read effective `description` attr from a node. Returns the string if present
|
|
118
|
+
* and non-empty, undefined otherwise. Uses `.attr` (effective, not own) so a
|
|
119
|
+
* node that extends an abstract base picks up the base's description — required
|
|
120
|
+
* for both entity- and field-level COMMENT ON parity with the entity-attr contract.
|
|
121
|
+
*/
|
|
122
|
+
function readDescription(node) {
|
|
123
|
+
const v = node.attr(DOC_ATTR_DESCRIPTION);
|
|
124
|
+
return typeof v === "string" && v.length > 0 ? v : undefined;
|
|
96
125
|
}
|
|
97
126
|
function buildSecondaryIndexes(entity, tableName) {
|
|
98
127
|
const indexes = [];
|
|
@@ -156,15 +185,47 @@ function buildForeignKeys(entity, tableName, resolveTargetTable, root) {
|
|
|
156
185
|
const refColumns = explicitTargetFields.length > 1
|
|
157
186
|
? explicitTargetFields.map(toSnake)
|
|
158
187
|
: [toSnake(refChild.resolvedTargetPkField(root) ?? "id")];
|
|
159
|
-
|
|
160
|
-
|
|
188
|
+
const { onDelete, onUpdate } = resolveReferentialActions(entity, refChild);
|
|
189
|
+
const constraintName = `${tableName}_${fkCols[0]}_fk`;
|
|
190
|
+
// Guard: ON DELETE SET NULL requires nullable FK columns.
|
|
191
|
+
validateSetNullNullability(entity, refChild, onDelete, constraintName);
|
|
192
|
+
const fk = {
|
|
193
|
+
name: constraintName,
|
|
161
194
|
columns: fkCols,
|
|
162
195
|
refTable,
|
|
163
196
|
refColumns,
|
|
164
|
-
}
|
|
197
|
+
};
|
|
198
|
+
if (onDelete !== undefined)
|
|
199
|
+
fk.onDelete = onDelete;
|
|
200
|
+
if (onUpdate !== undefined)
|
|
201
|
+
fk.onUpdate = onUpdate;
|
|
202
|
+
fks.push(fk);
|
|
165
203
|
}
|
|
166
204
|
return fks;
|
|
167
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Expand a `field.object @storage "flattened"` into one ColumnDescriptor per
|
|
208
|
+
* nested field of the referenced value-object, prefixed by the parent field's
|
|
209
|
+
* resolved column name + underscore.
|
|
210
|
+
*
|
|
211
|
+
* EF OwnsOne pattern: no JSON column for the parent itself; each nested field
|
|
212
|
+
* becomes `<parent_col>_<nested_col>` in the owning entity's table.
|
|
213
|
+
*/
|
|
214
|
+
function flattenObjectField(field, root) {
|
|
215
|
+
const ref = field.ownAttr(FIELD_ATTR_OBJECT_REF);
|
|
216
|
+
if (typeof ref !== "string" || ref.length === 0)
|
|
217
|
+
return [];
|
|
218
|
+
const targetObject = root.findObject(ref);
|
|
219
|
+
if (targetObject === undefined)
|
|
220
|
+
return [];
|
|
221
|
+
const prefix = resolveColumnName(field) + "_";
|
|
222
|
+
const cols = [];
|
|
223
|
+
for (const nested of targetObject.fields()) {
|
|
224
|
+
const inner = buildColumn(nested, /* isPk */ false, /* pkGeneration */ undefined);
|
|
225
|
+
cols.push({ ...inner, name: prefix + inner.name });
|
|
226
|
+
}
|
|
227
|
+
return cols;
|
|
228
|
+
}
|
|
168
229
|
const EXPR_DEFAULT_PATTERNS = [
|
|
169
230
|
/^current_timestamp$/i,
|
|
170
231
|
/^now\(\)$/i,
|
|
@@ -173,16 +234,13 @@ const EXPR_DEFAULT_PATTERNS = [
|
|
|
173
234
|
/\(\)/, // anything function-like
|
|
174
235
|
];
|
|
175
236
|
function buildColumn(field, isPk, pkGeneration) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
// direct attr form is the alternative. Either signals NOT NULL.
|
|
179
|
-
const hasRequiredValidator = field.ownChildren().some((c) => c.type === TYPE_VALIDATOR && c.subType === VALIDATOR_SUBTYPE_REQUIRED);
|
|
180
|
-
const isRequired = requiredAttr === true || requiredAttr === "true" || hasRequiredValidator;
|
|
237
|
+
// Both the @required attr and the validator.required child signal NOT NULL.
|
|
238
|
+
const fieldIsRequired = isRequired(field);
|
|
181
239
|
const defaultRaw = field.ownAttr(FIELD_ATTR_DEFAULT);
|
|
182
240
|
const col = {
|
|
183
241
|
name: resolveColumnName(field),
|
|
184
242
|
sqlType: subtypeToSqlType(field.subType),
|
|
185
|
-
nullable: !isPk && !
|
|
243
|
+
nullable: !isPk && !fieldIsRequired,
|
|
186
244
|
};
|
|
187
245
|
if (typeof defaultRaw === "string" && defaultRaw.length > 0) {
|
|
188
246
|
const isExpr = EXPR_DEFAULT_PATTERNS.some((re) => re.test(defaultRaw));
|
|
@@ -194,6 +252,9 @@ function buildColumn(field, isPk, pkGeneration) {
|
|
|
194
252
|
if (isPk && (pkGeneration === "increment" || pkGeneration === "uuid")) {
|
|
195
253
|
col.identity = pkGeneration;
|
|
196
254
|
}
|
|
255
|
+
const fieldDesc = readDescription(field);
|
|
256
|
+
if (fieldDesc !== undefined)
|
|
257
|
+
col.description = fieldDesc;
|
|
197
258
|
return col;
|
|
198
259
|
}
|
|
199
260
|
function subtypeToSqlType(subType) {
|
|
@@ -216,24 +277,6 @@ function subtypeToSqlType(subType) {
|
|
|
216
277
|
default: return { kind: "text" }; // unknown → text fallback
|
|
217
278
|
}
|
|
218
279
|
}
|
|
219
|
-
function readIdentityFields(identity) {
|
|
220
|
-
const raw = identity.ownAttr(IDENTITY_ATTR_FIELDS);
|
|
221
|
-
if (Array.isArray(raw)) {
|
|
222
|
-
return raw.map(String).filter((s) => s.length > 0);
|
|
223
|
-
}
|
|
224
|
-
if (typeof raw === "string") {
|
|
225
|
-
// Fallback: comma-separated string form (defensive; canonical form is array)
|
|
226
|
-
return raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
227
|
-
}
|
|
228
|
-
return [];
|
|
229
|
-
}
|
|
230
|
-
function findField(entity, name) {
|
|
231
|
-
for (const field of entity.fields()) {
|
|
232
|
-
if (field.name === name)
|
|
233
|
-
return field;
|
|
234
|
-
}
|
|
235
|
-
return undefined;
|
|
236
|
-
}
|
|
237
280
|
function toSnake(s) {
|
|
238
281
|
return s
|
|
239
282
|
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expected-schema.js","sourceRoot":"","sources":["../src/expected-schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"expected-schema.js","sourceRoot":"","sources":["../src/expected-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,16 +3,22 @@ export { introspect, introspectPostgres, introspectSqlite } from "./introspect/i
|
|
|
3
3
|
export { diff } from "./diff/index.js";
|
|
4
4
|
export { emit } from "./emit/index.js";
|
|
5
5
|
export { writeMigration } from "./write-migration.js";
|
|
6
|
-
export {
|
|
6
|
+
export { writeMigrationD1 } from "./write-migration-d1.js";
|
|
7
|
+
export { BlockedChangesError, SetNullNotNullableError } from "./errors.js";
|
|
7
8
|
export { isWidening, sqlTypeEquals } from "./sql-type.js";
|
|
8
9
|
export type { SqlType } from "./sql-type.js";
|
|
9
10
|
export type { SchemaSnapshot, SnapshotMeta, TableDescriptor, ColumnDescriptor, IndexDescriptor, FkDescriptor, ColumnDefault, ViewDescriptor, FkAction, Change, ChangeKind, ChangeStatus, AllowOptions, AmbiguousChange, AmbiguousResolution, AmbiguousCallback, DiffResult, EmitResult, Dialect, } from "./types.js";
|
|
10
11
|
export type { DiffArgs } from "./diff/index.js";
|
|
11
12
|
export type { EmitOptions } from "./emit/index.js";
|
|
12
13
|
export type { WriteMigrationOptions, WriteMigrationResult } from "./write-migration.js";
|
|
14
|
+
export type { WriteMigrationD1Options, WriteMigrationD1Result } from "./write-migration-d1.js";
|
|
13
15
|
export { classifyViewDiff } from "./view-diff.js";
|
|
14
16
|
export type { ViewShape, ViewDiffClass, ViewMigrationOpts } from "./view-diff.js";
|
|
15
17
|
export { emitPostgresViewMigration } from "./view-ddl-postgres.js";
|
|
16
18
|
export { emitSqliteViewMigration } from "./view-ddl-sqlite.js";
|
|
19
|
+
export { renderD1 } from "./emit/d1.js";
|
|
20
|
+
export { applyD1SafetyPass, D1UnsupportedStatementError } from "./emit/d1-safety-pass.js";
|
|
17
21
|
export { computeViewMigrations, type ViewMigrationInput, type ViewMigrationsOpts, type ViewMigrationsResult, } from "./source-aware-diff.js";
|
|
22
|
+
export { introspectD1, type D1Runner, type IntrospectD1Options } from "./introspect/d1.js";
|
|
23
|
+
export { findWranglerConfig, parseWranglerConfig, resolveD1Binding, type D1Binding, type WranglerConfig, } from "./wrangler-config.js";
|
|
18
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG1D,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EACV,cAAc,EAAE,YAAY,EAC5B,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAC/E,cAAc,EAAE,QAAQ,EACxB,MAAM,EAAE,UAAU,EAAE,YAAY,EAChC,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EACrE,UAAU,EAAE,UAAU,EAAE,OAAO,GAChC,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACxF,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAG/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAM/D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAG1F,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,14 +12,25 @@ export { introspect, introspectPostgres, introspectSqlite } from "./introspect/i
|
|
|
12
12
|
export { diff } from "./diff/index.js";
|
|
13
13
|
export { emit } from "./emit/index.js";
|
|
14
14
|
export { writeMigration } from "./write-migration.js";
|
|
15
|
+
export { writeMigrationD1 } from "./write-migration-d1.js";
|
|
15
16
|
// Errors
|
|
16
|
-
export { BlockedChangesError } from "./errors.js";
|
|
17
|
+
export { BlockedChangesError, SetNullNotNullableError } from "./errors.js";
|
|
17
18
|
// SqlType helpers (rarely needed but useful for advanced consumers)
|
|
18
19
|
export { isWidening, sqlTypeEquals } from "./sql-type.js";
|
|
19
20
|
// View diff + dialect emitters
|
|
20
21
|
export { classifyViewDiff } from "./view-diff.js";
|
|
21
22
|
export { emitPostgresViewMigration } from "./view-ddl-postgres.js";
|
|
22
23
|
export { emitSqliteViewMigration } from "./view-ddl-sqlite.js";
|
|
24
|
+
// D1 dialect emitter + safety pass.
|
|
25
|
+
// renderD1 is exported directly (unlike renderSqlite/renderPostgres) so
|
|
26
|
+
// consumers writing raw wrangler batch scripts can apply the safety pass
|
|
27
|
+
// independently without going through emit().
|
|
28
|
+
export { renderD1 } from "./emit/d1.js";
|
|
29
|
+
export { applyD1SafetyPass, D1UnsupportedStatementError } from "./emit/d1-safety-pass.js";
|
|
23
30
|
// View migrations orchestrator
|
|
24
31
|
export { computeViewMigrations, } from "./source-aware-diff.js";
|
|
32
|
+
// D1 introspection
|
|
33
|
+
export { introspectD1 } from "./introspect/d1.js";
|
|
34
|
+
// Wrangler config helpers
|
|
35
|
+
export { findWranglerConfig, parseWranglerConfig, resolveD1Binding, } from "./wrangler-config.js";
|
|
25
36
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,gEAAgE;AAChE,yEAAyE;AACzE,sEAAsE;AACtE,2BAA2B;AAC3B,EAAE;AACF,2DAA2D;AAE3D,qBAAqB;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,gEAAgE;AAChE,yEAAyE;AACzE,sEAAsE;AACtE,2BAA2B;AAC3B,EAAE;AACF,2DAA2D;AAE3D,qBAAqB;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3E,oEAAoE;AACpE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAiB1D,+BAA+B;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,oCAAoC;AACpC,wEAAwE;AACxE,yEAAyE;AACzE,8CAA8C;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAE1F,+BAA+B;AAC/B,OAAO,EACL,qBAAqB,GAItB,MAAM,wBAAwB,CAAC;AAEhC,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAA2C,MAAM,oBAAoB,CAAC;AAE3F,0BAA0B;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GAGjB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SchemaSnapshot } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Runner contract: takes a SQL command string and returns wrangler's raw
|
|
4
|
+
* JSON envelope stdout. The CLI wires this to a real exec; tests pass a mock.
|
|
5
|
+
* The runner is responsible for ALL transport concerns (local vs remote,
|
|
6
|
+
* config path, error mapping). introspectD1 only knows about SQL queries.
|
|
7
|
+
*/
|
|
8
|
+
export type D1Runner = (sql: string) => Promise<string>;
|
|
9
|
+
export interface IntrospectD1Options {
|
|
10
|
+
runner: D1Runner;
|
|
11
|
+
/**
|
|
12
|
+
* Documented passthrough — the CLI wiring uses binding/remote/configPath to
|
|
13
|
+
* construct the runner; introspectD1 itself only dispatches SQL via opts.runner.
|
|
14
|
+
* They live on the options so the wiring contract is self-documenting at the call site.
|
|
15
|
+
*/
|
|
16
|
+
binding: string;
|
|
17
|
+
remote: boolean;
|
|
18
|
+
configPath: string | undefined;
|
|
19
|
+
}
|
|
20
|
+
export declare function introspectD1(opts: IntrospectD1Options): Promise<SchemaSnapshot>;
|
|
21
|
+
//# sourceMappingURL=d1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"d1.d.ts","sourceRoot":"","sources":["../../src/introspect/d1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,aAAa,CAAC;AAGrB;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAKxD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,CAAC;IACjB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAwCrF"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { parseSqliteDefault, sqliteTypeToSqlType, sqliteRuleToAction } from "./sqlite-shared.js";
|
|
2
|
+
export async function introspectD1(opts) {
|
|
3
|
+
const exec = async (sql) => {
|
|
4
|
+
const stdout = await opts.runner(sql);
|
|
5
|
+
return parseEnvelope(stdout);
|
|
6
|
+
};
|
|
7
|
+
const versionRows = await exec("SELECT sqlite_version() AS v");
|
|
8
|
+
const meta = {
|
|
9
|
+
sqliteVersion: String(versionRows[0]?.v ?? "0.0.0"),
|
|
10
|
+
};
|
|
11
|
+
const tableRows = await exec("SELECT name, sql FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' AND name NOT LIKE '__new_%' ORDER BY name");
|
|
12
|
+
const tables = [];
|
|
13
|
+
for (const t of tableRows) {
|
|
14
|
+
const name = String(t.name);
|
|
15
|
+
const createSql = String(t.sql ?? "");
|
|
16
|
+
// Issue pragma_table_info ONCE per table; extractColumns + extractPrimaryKey
|
|
17
|
+
// consume the same rows without re-querying (each query is a wrangler round-trip).
|
|
18
|
+
const tableInfoRows = await readTableInfo(exec, name);
|
|
19
|
+
const cols = extractColumns(tableInfoRows);
|
|
20
|
+
const pk = extractPrimaryKey(tableInfoRows);
|
|
21
|
+
const hasAutoincrement = createSql.toUpperCase().includes("AUTOINCREMENT");
|
|
22
|
+
if (hasAutoincrement && pk.length === 1) {
|
|
23
|
+
const pkCol = cols.find((c) => c.name === pk[0]);
|
|
24
|
+
if (pkCol)
|
|
25
|
+
pkCol.identity = "increment";
|
|
26
|
+
}
|
|
27
|
+
tables.push({
|
|
28
|
+
name,
|
|
29
|
+
columns: cols,
|
|
30
|
+
indexes: await readIndexes(exec, name),
|
|
31
|
+
foreignKeys: await readForeignKeys(exec, name),
|
|
32
|
+
primaryKey: pk,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const views = await readViews(exec);
|
|
36
|
+
return { tables, views, meta };
|
|
37
|
+
}
|
|
38
|
+
function parseEnvelope(stdout) {
|
|
39
|
+
let parsed;
|
|
40
|
+
try {
|
|
41
|
+
parsed = JSON.parse(stdout);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
throw new Error(`failed to parse wrangler JSON output: ${err.message}`);
|
|
45
|
+
}
|
|
46
|
+
if (!Array.isArray(parsed) || parsed.length === 0) {
|
|
47
|
+
throw new Error(`unexpected wrangler output shape (expected non-empty array envelope): ${stdout.slice(0, 200)}`);
|
|
48
|
+
}
|
|
49
|
+
const envelope = parsed[0];
|
|
50
|
+
if (envelope === null || typeof envelope !== "object") {
|
|
51
|
+
throw new Error(`unexpected wrangler output shape (envelope is not an object): ${stdout.slice(0, 200)}`);
|
|
52
|
+
}
|
|
53
|
+
const env = envelope;
|
|
54
|
+
if (env.success === false) {
|
|
55
|
+
throw new Error(`wrangler d1 execute failed: ${env.error ?? "(no error message)"}`);
|
|
56
|
+
}
|
|
57
|
+
const results = env.results;
|
|
58
|
+
if (!Array.isArray(results))
|
|
59
|
+
return [];
|
|
60
|
+
return results;
|
|
61
|
+
}
|
|
62
|
+
async function readTableInfo(exec, table) {
|
|
63
|
+
return exec(`SELECT * FROM pragma_table_info(${sqliteIdent(table)}) ORDER BY cid`);
|
|
64
|
+
}
|
|
65
|
+
function extractColumns(rows) {
|
|
66
|
+
return rows.map((r) => {
|
|
67
|
+
const col = {
|
|
68
|
+
name: String(r.name),
|
|
69
|
+
sqlType: sqliteTypeToSqlType(String(r.type)),
|
|
70
|
+
nullable: Number(r.notnull) === 0 && Number(r.pk) === 0,
|
|
71
|
+
};
|
|
72
|
+
const def = parseSqliteDefault(r.dflt_value === null ? null : String(r.dflt_value));
|
|
73
|
+
if (def)
|
|
74
|
+
col.default = def;
|
|
75
|
+
return col;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function extractPrimaryKey(rows) {
|
|
79
|
+
return rows
|
|
80
|
+
.filter((r) => Number(r.pk) > 0)
|
|
81
|
+
.sort((a, b) => Number(a.pk) - Number(b.pk))
|
|
82
|
+
.map((r) => String(r.name));
|
|
83
|
+
}
|
|
84
|
+
async function readIndexes(exec, table) {
|
|
85
|
+
const list = await exec(`SELECT * FROM pragma_index_list(${sqliteIdent(table)})`);
|
|
86
|
+
const indexes = [];
|
|
87
|
+
for (const ix of list) {
|
|
88
|
+
if (String(ix.origin) === "pk")
|
|
89
|
+
continue;
|
|
90
|
+
if (Number(ix.partial) === 1)
|
|
91
|
+
continue;
|
|
92
|
+
const ixName = String(ix.name);
|
|
93
|
+
const cols = await exec(`SELECT seqno, cid, name FROM pragma_index_info(${sqliteIdent(ixName)}) ORDER BY seqno`);
|
|
94
|
+
indexes.push({
|
|
95
|
+
name: ixName,
|
|
96
|
+
columns: cols.map((c) => String(c.name)),
|
|
97
|
+
unique: Number(ix.unique) === 1,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return indexes;
|
|
101
|
+
}
|
|
102
|
+
async function readForeignKeys(exec, table) {
|
|
103
|
+
const rows = await exec(`SELECT * FROM pragma_foreign_key_list(${sqliteIdent(table)}) ORDER BY id, seq`);
|
|
104
|
+
const byId = new Map();
|
|
105
|
+
for (const r of rows) {
|
|
106
|
+
const id = Number(r.id);
|
|
107
|
+
let entry = byId.get(id);
|
|
108
|
+
if (!entry) {
|
|
109
|
+
entry = {
|
|
110
|
+
refTable: String(r.table),
|
|
111
|
+
cols: [],
|
|
112
|
+
refCols: [],
|
|
113
|
+
onDelete: sqliteRuleToAction(String(r.on_delete)),
|
|
114
|
+
onUpdate: sqliteRuleToAction(String(r.on_update)),
|
|
115
|
+
};
|
|
116
|
+
byId.set(id, entry);
|
|
117
|
+
}
|
|
118
|
+
entry.cols.push(String(r.from));
|
|
119
|
+
entry.refCols.push(String(r.to));
|
|
120
|
+
}
|
|
121
|
+
return Array.from(byId.entries()).map(([_id, v]) => {
|
|
122
|
+
const fk = {
|
|
123
|
+
name: `${table}_${v.cols.join("_")}_fk`,
|
|
124
|
+
columns: v.cols,
|
|
125
|
+
refTable: v.refTable,
|
|
126
|
+
refColumns: v.refCols,
|
|
127
|
+
};
|
|
128
|
+
if (v.onDelete !== "no-action")
|
|
129
|
+
fk.onDelete = v.onDelete;
|
|
130
|
+
if (v.onUpdate !== "no-action")
|
|
131
|
+
fk.onUpdate = v.onUpdate;
|
|
132
|
+
return fk;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
async function readViews(exec) {
|
|
136
|
+
const rows = await exec("SELECT name FROM sqlite_master WHERE type='view' AND name NOT LIKE 'sqlite_%' ORDER BY name");
|
|
137
|
+
return rows.map((r) => ({ name: String(r.name) }));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Quote a SQLite identifier with double-quotes, escaping any embedded
|
|
141
|
+
* double-quotes (SQLite identifier escape: "" → literal ").
|
|
142
|
+
* Used for pragma_* calls where bind params aren't available (wrangler
|
|
143
|
+
* --command takes a complete SQL string). The introspectSqlite path uses
|
|
144
|
+
* Kysely tagged templates and doesn't need this.
|
|
145
|
+
*/
|
|
146
|
+
function sqliteIdent(name) {
|
|
147
|
+
return `"${name.replace(/"/g, '""')}"`;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=d1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"d1.js","sourceRoot":"","sources":["../../src/introspect/d1.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/introspect/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/introspect/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAM/G"}
|
package/dist/introspect/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export async function introspect(db, dialect) {
|
|
|
6
6
|
switch (dialect) {
|
|
7
7
|
case "postgres": return introspectPostgres(db);
|
|
8
8
|
case "sqlite": return introspectSqlite(db);
|
|
9
|
+
case "d1": throw new Error("d1 introspect goes through introspectD1, not introspect() — wrangler does not use a Kysely driver");
|
|
9
10
|
}
|
|
10
11
|
}
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/introspect/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAmC,EAAE,OAAgB;IACpF,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC,CAAC,OAAO,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,QAAQ,CAAC,CAAG,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/introspect/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAmC,EAAE,OAAgB;IACpF,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC,CAAC,OAAO,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,QAAQ,CAAC,CAAG,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,CAAO,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACxI,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared SQLite catalog helpers used by both the Kysely-based introspector
|
|
3
|
+
* (sqlite.ts) and the wrangler-based D1 introspector (d1.ts).
|
|
4
|
+
*
|
|
5
|
+
* All three routines are pure mappings of SQLite's declared type / pragma
|
|
6
|
+
* values to canonical migrate-ts types and carry no I/O dependencies.
|
|
7
|
+
*/
|
|
8
|
+
import type { ColumnDefault, FkAction } from "../types.js";
|
|
9
|
+
import type { SqlType } from "../sql-type.js";
|
|
10
|
+
export declare const SQLITE_EXPR_DEFAULT_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp];
|
|
11
|
+
export declare function parseSqliteDefault(raw: string | null): ColumnDefault | undefined;
|
|
12
|
+
export declare function sqliteTypeToSqlType(declaredType: string): SqlType;
|
|
13
|
+
export declare function sqliteRuleToAction(rule: string): FkAction;
|
|
14
|
+
//# sourceMappingURL=sqlite-shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-shared.d.ts","sourceRoot":"","sources":["../../src/introspect/sqlite-shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,4BAA4B,2CAK/B,CAAC;AAEX,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG,SAAS,CAOhF;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CA0CjE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAMzD"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export const SQLITE_EXPR_DEFAULT_PATTERNS = [
|
|
2
|
+
/^current_timestamp$/i,
|
|
3
|
+
/^current_date$/i,
|
|
4
|
+
/^current_time$/i,
|
|
5
|
+
/\(.*\)/,
|
|
6
|
+
];
|
|
7
|
+
export function parseSqliteDefault(raw) {
|
|
8
|
+
if (raw === null || raw === undefined || raw === "")
|
|
9
|
+
return undefined;
|
|
10
|
+
const isExpr = SQLITE_EXPR_DEFAULT_PATTERNS.some((re) => re.test(raw));
|
|
11
|
+
if (isExpr)
|
|
12
|
+
return { kind: "expr", value: raw };
|
|
13
|
+
// SQLite stores literal string defaults with surrounding quotes.
|
|
14
|
+
const cleaned = raw.replace(/^'(.*)'$/, "$1");
|
|
15
|
+
return { kind: "literal", value: cleaned };
|
|
16
|
+
}
|
|
17
|
+
export function sqliteTypeToSqlType(declaredType) {
|
|
18
|
+
const t = declaredType.trim().toUpperCase();
|
|
19
|
+
// SQLite's type affinity is loose; we honor the declared type literally for round-trip stability.
|
|
20
|
+
// Affinity rules per sqlite.org/datatype3.html — adapted to canonical SqlType.
|
|
21
|
+
// text affinity
|
|
22
|
+
const varcharMatch = /^(?:VARCHAR|CHAR|CHARACTER|TEXT)\((\d+)\)$/.exec(t);
|
|
23
|
+
if (varcharMatch)
|
|
24
|
+
return { kind: "text", maxLength: parseInt(varcharMatch[1] ?? "0", 10) };
|
|
25
|
+
if (/TEXT|CLOB|VARCHAR|CHAR/.test(t))
|
|
26
|
+
return { kind: "text" };
|
|
27
|
+
// numeric affinity
|
|
28
|
+
const numMatch = /^(?:NUMERIC|DECIMAL)\((\d+)(?:,\s*(\d+))?\)$/.exec(t);
|
|
29
|
+
if (numMatch) {
|
|
30
|
+
const out = { kind: "numeric" };
|
|
31
|
+
if (numMatch[1])
|
|
32
|
+
out.precision = parseInt(numMatch[1], 10);
|
|
33
|
+
if (numMatch[2])
|
|
34
|
+
out.scale = parseInt(numMatch[2], 10);
|
|
35
|
+
return out;
|
|
36
|
+
}
|
|
37
|
+
if (t === "BOOLEAN" || t === "BOOL")
|
|
38
|
+
return { kind: "boolean" };
|
|
39
|
+
if (t === "DATE")
|
|
40
|
+
return { kind: "date" };
|
|
41
|
+
if (t === "DATETIME" || t === "TIMESTAMP")
|
|
42
|
+
return { kind: "timestamp", withTimezone: false };
|
|
43
|
+
// integer affinity (SQLite stores all INTEGER as 64-bit internally).
|
|
44
|
+
// Distinguish INT (32-bit) from INTEGER/BIGINT (64-bit) for round-trip fidelity:
|
|
45
|
+
// the emitter uses "INT" for integer{32} and "INTEGER" for integer{64}.
|
|
46
|
+
if (t === "INT" || t === "SMALLINT" || t === "TINYINT")
|
|
47
|
+
return { kind: "integer", bits: 32 };
|
|
48
|
+
if (/INT/.test(t))
|
|
49
|
+
return { kind: "integer", bits: 64 };
|
|
50
|
+
// real affinity
|
|
51
|
+
if (/REAL|FLOA|DOUB/.test(t))
|
|
52
|
+
return { kind: "real" };
|
|
53
|
+
// blob affinity
|
|
54
|
+
if (t === "BLOB" || t === "")
|
|
55
|
+
return { kind: "blob" };
|
|
56
|
+
// numeric affinity fallback
|
|
57
|
+
if (/NUMERIC|DECIMAL/.test(t))
|
|
58
|
+
return { kind: "numeric" };
|
|
59
|
+
// json (libsql/sqlite have JSON1)
|
|
60
|
+
if (t === "JSON")
|
|
61
|
+
return { kind: "json" };
|
|
62
|
+
return { kind: "text" };
|
|
63
|
+
}
|
|
64
|
+
export function sqliteRuleToAction(rule) {
|
|
65
|
+
const r = rule.toUpperCase();
|
|
66
|
+
if (r === "CASCADE")
|
|
67
|
+
return "cascade";
|
|
68
|
+
if (r === "SET NULL")
|
|
69
|
+
return "set-null";
|
|
70
|
+
if (r === "RESTRICT")
|
|
71
|
+
return "restrict";
|
|
72
|
+
return "no-action";
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=sqlite-shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-shared.js","sourceRoot":"","sources":["../../src/introspect/sqlite-shared.ts"],"names":[],"mappings":"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"}
|