@metaobjectsdev/migrate-ts 0.19.0 → 0.19.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.
@@ -1,7 +1,7 @@
1
1
  import type { Kysely } from "kysely";
2
2
  import type { MetaRoot } from "@metaobjectsdev/metadata";
3
3
  import type { ColumnNamingStrategy } from "@metaobjectsdev/metadata";
4
- import type { AllowOptions, Dialect, DiffResult } from "../types.js";
4
+ import type { AllowOptions, Dialect, DiffResult, SchemaSnapshot } from "../types.js";
5
5
  export interface ComputeDriftOptions {
6
6
  /**
7
7
  * Destructive-change permissions. Mirrors `diff`'s `allow` — a drift that is
@@ -28,11 +28,24 @@ export interface ComputeDriftOptions {
28
28
  views?: readonly import("../expected-schema.js").ExpectedViewInput[];
29
29
  }
30
30
  /**
31
- * Compute the drift between a live DB and the metadata-declared schema.
31
+ * Compute the drift between an ALREADY-INTROSPECTED schema snapshot and the
32
+ * metadata-declared schema. The post-introspection half of `computeDrift`,
33
+ * factored out so a caller that can't use `introspect()`'s Kysely-driver path
34
+ * (there is none for Cloudflare D1 — it has no client wire protocol) can still
35
+ * run the same expected-schema + diff pipeline against a snapshot it obtained
36
+ * some other way (e.g. `introspectD1` over a wrangler-shelled-out runner).
32
37
  *
33
- * Returns a `DiffResult` whose `changes` is empty iff the DB matches the
38
+ * Returns a `DiffResult` whose `changes` is empty iff `actual` matches the
34
39
  * metadata. The caller decides exit behavior (the schema-drift gate fails when
35
40
  * `changes` is non-empty).
36
41
  */
42
+ export declare function computeDriftFromActual(actual: SchemaSnapshot, dialect: Dialect, metadata: MetaRoot, opts?: ComputeDriftOptions): Promise<DiffResult>;
43
+ /**
44
+ * Compute the drift between a live DB and the metadata-declared schema.
45
+ *
46
+ * Thin wrapper: introspects `db` via the Kysely-driver path, then delegates to
47
+ * `computeDriftFromActual`. Signature and behavior are unchanged by the #225
48
+ * refactor above — existing callers are unaffected.
49
+ */
37
50
  export declare function computeDrift(db: Kysely<Record<string, unknown>>, dialect: Dialect, metadata: MetaRoot, opts?: ComputeDriftOptions): Promise<DiffResult>;
38
51
  //# sourceMappingURL=drift.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/drift/drift.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAKrE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,OAAO,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;CACtE;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACnC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,UAAU,CAAC,CAmBrB"}
1
+ {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/drift/drift.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAKrE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErF,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,OAAO,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;CACtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,UAAU,CAAC,CAkBrB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACnC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,UAAU,CAAC,CAGrB"}
@@ -7,18 +7,28 @@
7
7
  // column, a changed view body, an extra table, etc.). Unlike `meta migrate`,
8
8
  // drift detection never emits SQL or asks about ambiguous renames — it just
9
9
  // reports the divergence so CI can fail loud.
10
+ //
11
+ // computeDriftFromActual (#225) is the post-introspection half, factored out so
12
+ // `meta verify --d1` can drive the same expected-schema + diff pipeline from a
13
+ // SchemaSnapshot obtained via `introspectD1` (wrangler-shelled-out) instead of a
14
+ // Kysely driver — D1 has no client wire protocol, so `introspect()` can't reach it.
10
15
  import { buildExpectedSchema } from "../expected-schema.js";
11
16
  import { introspect } from "../introspect/index.js";
12
17
  import { diff } from "../diff/index.js";
13
18
  import { collectUnmanagedNames } from "../unmanaged.js";
14
19
  /**
15
- * Compute the drift between a live DB and the metadata-declared schema.
20
+ * Compute the drift between an ALREADY-INTROSPECTED schema snapshot and the
21
+ * metadata-declared schema. The post-introspection half of `computeDrift`,
22
+ * factored out so a caller that can't use `introspect()`'s Kysely-driver path
23
+ * (there is none for Cloudflare D1 — it has no client wire protocol) can still
24
+ * run the same expected-schema + diff pipeline against a snapshot it obtained
25
+ * some other way (e.g. `introspectD1` over a wrangler-shelled-out runner).
16
26
  *
17
- * Returns a `DiffResult` whose `changes` is empty iff the DB matches the
27
+ * Returns a `DiffResult` whose `changes` is empty iff `actual` matches the
18
28
  * metadata. The caller decides exit behavior (the schema-drift gate fails when
19
29
  * `changes` is non-empty).
20
30
  */
21
- export async function computeDrift(db, dialect, metadata, opts) {
31
+ export async function computeDriftFromActual(actual, dialect, metadata, opts) {
22
32
  const expected = buildExpectedSchema(metadata, {
23
33
  dialect,
24
34
  ...(opts?.columnNamingStrategy !== undefined
@@ -26,7 +36,6 @@ export async function computeDrift(db, dialect, metadata, opts) {
26
36
  : {}),
27
37
  ...(opts?.views !== undefined ? { views: opts.views } : {}),
28
38
  });
29
- const actual = await introspect(db, dialect);
30
39
  return diff({
31
40
  expected,
32
41
  actual,
@@ -38,4 +47,15 @@ export async function computeDrift(db, dialect, metadata, opts) {
38
47
  ...(opts?.ignoreTables !== undefined ? { ignoreTables: opts.ignoreTables } : {}),
39
48
  });
40
49
  }
50
+ /**
51
+ * Compute the drift between a live DB and the metadata-declared schema.
52
+ *
53
+ * Thin wrapper: introspects `db` via the Kysely-driver path, then delegates to
54
+ * `computeDriftFromActual`. Signature and behavior are unchanged by the #225
55
+ * refactor above — existing callers are unaffected.
56
+ */
57
+ export async function computeDrift(db, dialect, metadata, opts) {
58
+ const actual = await introspect(db, dialect);
59
+ return computeDriftFromActual(actual, dialect, metadata, opts);
60
+ }
41
61
  //# sourceMappingURL=drift.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/drift/drift.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gEAAgE;AAChE,wEAAwE;AACxE,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,8CAA8C;AAK9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA6BxD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAmC,EACnC,OAAgB,EAChB,QAAkB,EAClB,IAA0B;IAE1B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;QAC7C,OAAO;QACP,GAAG,CAAC,IAAI,EAAE,oBAAoB,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC;QACV,QAAQ;QACR,MAAM;QACN,OAAO;QACP,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;QACxB,qFAAqF;QACrF,oFAAoF;QACpF,cAAc,EAAE,qBAAqB,CAAC,QAAQ,CAAC;QAC/C,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/drift/drift.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gEAAgE;AAChE,wEAAwE;AACxE,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,oFAAoF;AAKpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA6BxD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAsB,EACtB,OAAgB,EAChB,QAAkB,EAClB,IAA0B;IAE1B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;QAC7C,OAAO;QACP,GAAG,CAAC,IAAI,EAAE,oBAAoB,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;QACV,QAAQ;QACR,MAAM;QACN,OAAO;QACP,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;QACxB,qFAAqF;QACrF,oFAAoF;QACpF,cAAc,EAAE,qBAAqB,CAAC,QAAQ,CAAC;QAC/C,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAmC,EACnC,OAAgB,EAChB,QAAkB,EAClB,IAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { buildExpectedSchema } from "./expected-schema.js";
2
2
  export { introspect, introspectPostgres, introspectSqlite } from "./introspect/index.js";
3
3
  export { diff } from "./diff/index.js";
4
4
  export { collectUnmanagedNames } from "./unmanaged.js";
5
- export { computeDrift, type ComputeDriftOptions } from "./drift/drift.js";
5
+ export { computeDrift, computeDriftFromActual, type ComputeDriftOptions } from "./drift/drift.js";
6
6
  export { classifyDrift, driftAgainstSnapshot } from "./drift/classify.js";
7
7
  export type { DriftClassification } from "./drift/classify.js";
8
8
  export { emit } from "./emit/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ export { buildExpectedSchema } from "./expected-schema.js";
11
11
  export { introspect, introspectPostgres, introspectSqlite } from "./introspect/index.js";
12
12
  export { diff } from "./diff/index.js";
13
13
  export { collectUnmanagedNames } from "./unmanaged.js";
14
- export { computeDrift } from "./drift/drift.js";
14
+ export { computeDrift, computeDriftFromActual } from "./drift/drift.js";
15
15
  export { classifyDrift, driftAgainstSnapshot } from "./drift/classify.js";
16
16
  export { emit } from "./emit/index.js";
17
17
  export { writeMigration } from "./write-migration.js";
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,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAA4B,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,0DAA0D;AAC1D,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGvE,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3E,oEAAoE;AACpE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAiB1D,+EAA+E;AAC/E,gFAAgF;AAChF,mFAAmF;AACnF,4EAA4E;AAC5E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAExE,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,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAA2C,MAAM,oBAAoB,CAAC;AAE3F,2EAA2E;AAC3E,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GAItB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,UAAU,GAKX,MAAM,kBAAkB,CAAC;AAE1B,0EAA0E;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,0BAA0B;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GAGjB,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,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAA4B,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,0DAA0D;AAC1D,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGvE,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3E,oEAAoE;AACpE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAiB1D,+EAA+E;AAC/E,gFAAgF;AAChF,mFAAmF;AACnF,4EAA4E;AAC5E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAExE,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,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAA2C,MAAM,oBAAoB,CAAC;AAE3F,2EAA2E;AAC3E,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GAItB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,UAAU,GAKX,MAAM,kBAAkB,CAAC;AAE1B,0EAA0E;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,0BAA0B;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GAGjB,MAAM,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/migrate-ts",
3
- "version": "0.19.0",
3
+ "version": "0.19.1",
4
4
  "description": "Schema migration tooling for MetaObjects: diff metadata vs DB and emit SQL for Postgres and SQLite.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@iarna/toml": "^2.2.5",
48
- "@metaobjectsdev/metadata": "0.19.0"
48
+ "@metaobjectsdev/metadata": "0.19.1"
49
49
  },
50
50
  "peerDependencies": {
51
51
  "kysely": ">=0.27.0"
@@ -7,6 +7,11 @@
7
7
  // column, a changed view body, an extra table, etc.). Unlike `meta migrate`,
8
8
  // drift detection never emits SQL or asks about ambiguous renames — it just
9
9
  // reports the divergence so CI can fail loud.
10
+ //
11
+ // computeDriftFromActual (#225) is the post-introspection half, factored out so
12
+ // `meta verify --d1` can drive the same expected-schema + diff pipeline from a
13
+ // SchemaSnapshot obtained via `introspectD1` (wrangler-shelled-out) instead of a
14
+ // Kysely driver — D1 has no client wire protocol, so `introspect()` can't reach it.
10
15
 
11
16
  import type { Kysely } from "kysely";
12
17
  import type { MetaRoot } from "@metaobjectsdev/metadata";
@@ -15,7 +20,7 @@ import { buildExpectedSchema } from "../expected-schema.js";
15
20
  import { introspect } from "../introspect/index.js";
16
21
  import { diff } from "../diff/index.js";
17
22
  import { collectUnmanagedNames } from "../unmanaged.js";
18
- import type { AllowOptions, Dialect, DiffResult } from "../types.js";
23
+ import type { AllowOptions, Dialect, DiffResult, SchemaSnapshot } from "../types.js";
19
24
 
20
25
  export interface ComputeDriftOptions {
21
26
  /**
@@ -44,14 +49,19 @@ export interface ComputeDriftOptions {
44
49
  }
45
50
 
46
51
  /**
47
- * Compute the drift between a live DB and the metadata-declared schema.
52
+ * Compute the drift between an ALREADY-INTROSPECTED schema snapshot and the
53
+ * metadata-declared schema. The post-introspection half of `computeDrift`,
54
+ * factored out so a caller that can't use `introspect()`'s Kysely-driver path
55
+ * (there is none for Cloudflare D1 — it has no client wire protocol) can still
56
+ * run the same expected-schema + diff pipeline against a snapshot it obtained
57
+ * some other way (e.g. `introspectD1` over a wrangler-shelled-out runner).
48
58
  *
49
- * Returns a `DiffResult` whose `changes` is empty iff the DB matches the
59
+ * Returns a `DiffResult` whose `changes` is empty iff `actual` matches the
50
60
  * metadata. The caller decides exit behavior (the schema-drift gate fails when
51
61
  * `changes` is non-empty).
52
62
  */
53
- export async function computeDrift(
54
- db: Kysely<Record<string, unknown>>,
63
+ export async function computeDriftFromActual(
64
+ actual: SchemaSnapshot,
55
65
  dialect: Dialect,
56
66
  metadata: MetaRoot,
57
67
  opts?: ComputeDriftOptions,
@@ -63,7 +73,6 @@ export async function computeDrift(
63
73
  : {}),
64
74
  ...(opts?.views !== undefined ? { views: opts.views } : {}),
65
75
  });
66
- const actual = await introspect(db, dialect);
67
76
  return diff({
68
77
  expected,
69
78
  actual,
@@ -75,3 +84,20 @@ export async function computeDrift(
75
84
  ...(opts?.ignoreTables !== undefined ? { ignoreTables: opts.ignoreTables } : {}),
76
85
  });
77
86
  }
87
+
88
+ /**
89
+ * Compute the drift between a live DB and the metadata-declared schema.
90
+ *
91
+ * Thin wrapper: introspects `db` via the Kysely-driver path, then delegates to
92
+ * `computeDriftFromActual`. Signature and behavior are unchanged by the #225
93
+ * refactor above — existing callers are unaffected.
94
+ */
95
+ export async function computeDrift(
96
+ db: Kysely<Record<string, unknown>>,
97
+ dialect: Dialect,
98
+ metadata: MetaRoot,
99
+ opts?: ComputeDriftOptions,
100
+ ): Promise<DiffResult> {
101
+ const actual = await introspect(db, dialect);
102
+ return computeDriftFromActual(actual, dialect, metadata, opts);
103
+ }
package/src/index.ts CHANGED
@@ -12,7 +12,7 @@ export { buildExpectedSchema } from "./expected-schema.js";
12
12
  export { introspect, introspectPostgres, introspectSqlite } from "./introspect/index.js";
13
13
  export { diff } from "./diff/index.js";
14
14
  export { collectUnmanagedNames } from "./unmanaged.js";
15
- export { computeDrift, type ComputeDriftOptions } from "./drift/drift.js";
15
+ export { computeDrift, computeDriftFromActual, type ComputeDriftOptions } from "./drift/drift.js";
16
16
  export { classifyDrift, driftAgainstSnapshot } from "./drift/classify.js";
17
17
  export type { DriftClassification } from "./drift/classify.js";
18
18
  export { emit } from "./emit/index.js";