@metaobjectsdev/migrate-ts 0.5.0 → 0.6.0-rc.1

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 (73) hide show
  1. package/README.md +34 -0
  2. package/dist/emit/d1-safety-pass.d.ts +15 -0
  3. package/dist/emit/d1-safety-pass.d.ts.map +1 -0
  4. package/dist/emit/d1-safety-pass.js +80 -0
  5. package/dist/emit/d1-safety-pass.js.map +1 -0
  6. package/dist/emit/d1.d.ts +3 -0
  7. package/dist/emit/d1.d.ts.map +1 -0
  8. package/dist/emit/d1.js +11 -0
  9. package/dist/emit/d1.js.map +1 -0
  10. package/dist/emit/index.d.ts.map +1 -1
  11. package/dist/emit/index.js +2 -0
  12. package/dist/emit/index.js.map +1 -1
  13. package/dist/emit/postgres.js +28 -3
  14. package/dist/emit/postgres.js.map +1 -1
  15. package/dist/emit/sqlite.d.ts +1 -1
  16. package/dist/emit/sqlite.d.ts.map +1 -1
  17. package/dist/emit/sqlite.js.map +1 -1
  18. package/dist/errors.d.ts +17 -0
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +28 -0
  21. package/dist/errors.js.map +1 -1
  22. package/dist/expected-schema.d.ts +7 -7
  23. package/dist/expected-schema.d.ts.map +1 -1
  24. package/dist/expected-schema.js +78 -35
  25. package/dist/expected-schema.js.map +1 -1
  26. package/dist/index.d.ts +7 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +12 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/introspect/d1.d.ts +21 -0
  31. package/dist/introspect/d1.d.ts.map +1 -0
  32. package/dist/introspect/d1.js +149 -0
  33. package/dist/introspect/d1.js.map +1 -0
  34. package/dist/introspect/index.d.ts.map +1 -1
  35. package/dist/introspect/index.js +1 -0
  36. package/dist/introspect/index.js.map +1 -1
  37. package/dist/introspect/sqlite-shared.d.ts +14 -0
  38. package/dist/introspect/sqlite-shared.d.ts.map +1 -0
  39. package/dist/introspect/sqlite-shared.js +74 -0
  40. package/dist/introspect/sqlite-shared.js.map +1 -0
  41. package/dist/introspect/sqlite.js +1 -73
  42. package/dist/introspect/sqlite.js.map +1 -1
  43. package/dist/referential-actions.d.ts +49 -0
  44. package/dist/referential-actions.d.ts.map +1 -0
  45. package/dist/referential-actions.js +110 -0
  46. package/dist/referential-actions.js.map +1 -0
  47. package/dist/types.d.ts +15 -1
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/wrangler-config.d.ts +25 -0
  50. package/dist/wrangler-config.d.ts.map +1 -0
  51. package/dist/wrangler-config.js +91 -0
  52. package/dist/wrangler-config.js.map +1 -0
  53. package/dist/write-migration-d1.d.ts +17 -0
  54. package/dist/write-migration-d1.d.ts.map +1 -0
  55. package/dist/write-migration-d1.js +50 -0
  56. package/dist/write-migration-d1.js.map +1 -0
  57. package/package.json +28 -27
  58. package/src/emit/d1-safety-pass.ts +94 -0
  59. package/src/emit/d1.ts +16 -0
  60. package/src/emit/index.ts +2 -0
  61. package/src/emit/postgres.ts +35 -3
  62. package/src/emit/sqlite.ts +1 -1
  63. package/src/errors.ts +33 -0
  64. package/src/expected-schema.ts +100 -52
  65. package/src/index.ts +22 -1
  66. package/src/introspect/d1.ts +185 -0
  67. package/src/introspect/index.ts +1 -0
  68. package/src/introspect/sqlite-shared.ts +77 -0
  69. package/src/introspect/sqlite.ts +2 -69
  70. package/src/referential-actions.ts +134 -0
  71. package/src/types.ts +15 -1
  72. package/src/wrangler-config.ts +103 -0
  73. package/src/write-migration-d1.ts +74 -0
@@ -1,10 +1,15 @@
1
- import { TYPE_OBJECT, TYPE_SOURCE, TYPE_VALIDATOR, SOURCE_SUBTYPE_DB_VIEW, VALIDATOR_SUBTYPE_REQUIRED, IDENTITY_ATTR_FIELDS, IDENTITY_ATTR_GENERATION, IDENTITY_ATTR_UNIQUE, FIELD_ATTR_REQUIRED, 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, resolveTableName, resolveColumnName, resolveTableSchema, } from "@metaobjectsdev/metadata";
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 (source.dbView handled by the view-diff pipeline, not table diff)
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 hasViewSource = child.ownChildren().some((c) => c.type === TYPE_SOURCE && c.subType === SOURCE_SUBTYPE_DB_VIEW);
17
- if (hasViewSource)
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 (opts?.dialect === "sqlite") {
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 (opts?.dialect === "sqlite") {
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
- columns.push(buildColumn(field, isPk, isPk ? pkGeneration : undefined));
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
- return {
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
- fks.push({
160
- name: `${tableName}_${fkCols[0]}_fk`,
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
- const requiredAttr = field.ownAttr(FIELD_ATTR_REQUIRED);
177
- // BaseEntity-style metadata expresses required via a validator.required child;
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 && !isRequired,
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 { BlockedChangesError } from "./errors.js";
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
@@ -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;AAGtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,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;AAGxF,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;AAG/D,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,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;AAEtD,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,oEAAoE;AACpE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgB1D,+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,+BAA+B;AAC/B,OAAO,EACL,qBAAqB,GAItB,MAAM,wBAAwB,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":"AAIA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAyBjG,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAyB;IAC1D,MAAM,IAAI,GAAS,KAAK,EAAE,GAAW,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAiB;QACzB,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC;KACpD,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,IAAI,CAC1B,+HAA+H,CAChI,CAAC;IAEF,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QACtC,6EAA6E;QAC7E,mFAAmF;QACnF,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,EAAE,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,gBAAgB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC3E,IAAI,gBAAgB,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,KAAK;gBAAE,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC1C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;YACtC,WAAW,EAAE,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;YAC9C,UAAU,EAAE,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yCAA0C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,yEAAyE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACnH,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,iEAAiE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,MAAM,GAAG,GAAG,QAAoE,CAAC;IACjF,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,CAAC,KAAK,IAAI,oBAAoB,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAoC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,KAAa;IACpD,OAAO,IAAI,CAAC,mCAAmC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,cAAc,CAAC,IAA+B;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACpB,MAAM,GAAG,GAAqB;YAC5B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACpB,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;SACxD,CAAC;QACF,MAAM,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACpF,IAAI,GAAG;YAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA+B;IACxD,OAAO,IAAI;SACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAU,EAAE,KAAa;IAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mCAAmC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClF,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI;YAAE,SAAS;QACzC,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kDAAkD,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjH,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,KAAa;IACtD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yCAAyC,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACzG,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4G,CAAC;IACjI,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG;gBACN,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzB,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACjD,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAClD,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;QACjD,MAAM,EAAE,GAAiB;YACvB,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;YACvC,OAAO,EAAE,CAAC,CAAC,IAAI;YACf,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,UAAU,EAAE,CAAC,CAAC,OAAO;SACtB,CAAC;QACF,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW;YAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QACzD,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW;YAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QACzD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAU;IACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CACrB,6FAA6F,CAC9F,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AACzC,CAAC"}
@@ -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,CAK/G"}
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"}
@@ -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;IAC/C,CAAC;AACH,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":"AAUA,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,sBAAsB;IACtB,iBAAiB;IACjB,iBAAiB;IACjB,QAAQ;CACA,CAAC;AAEX,MAAM,UAAU,kBAAkB,CAAC,GAAkB;IACnD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,MAAM,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAChD,iEAAiE;IACjE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE5C,kGAAkG;IAClG,+EAA+E;IAE/E,gBAAgB;IAChB,MAAM,YAAY,GAAG,4CAA4C,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;IAC3F,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAE9D,mBAAmB;IACnB,MAAM,QAAQ,GAAG,8CAA8C,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,GAAG,GAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAChE,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1C,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAE7F,qEAAqE;IACrE,iFAAiF;IACjF,wEAAwE;IACxE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC7F,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAExD,gBAAgB;IAChB,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAEtD,gBAAgB;IAChB,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAEtD,4BAA4B;IAC5B,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAE1D,kCAAkC;IAClC,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAE1C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,CAAC,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IACxC,IAAI,CAAC,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IACxC,OAAO,WAAW,CAAC;AACrB,CAAC"}