@metaobjectsdev/migrate-ts 0.19.0-rc.1 → 0.19.1-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.
- package/dist/drift/drift.d.ts +16 -3
- package/dist/drift/drift.d.ts.map +1 -1
- package/dist/drift/drift.js +24 -4
- package/dist/drift/drift.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/drift/drift.ts +32 -6
- package/src/index.ts +1 -1
package/dist/drift/drift.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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":"
|
|
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"}
|
package/dist/drift/drift.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
package/dist/drift/drift.js.map
CHANGED
|
@@ -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;
|
|
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";
|
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,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,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,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,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,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;AACvE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG7E,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;AAM/F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMxE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAG1F,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG/E,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC"}
|
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;
|
|
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.
|
|
3
|
+
"version": "0.19.1-rc.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.
|
|
48
|
+
"@metaobjectsdev/metadata": "0.19.1-rc.1"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"kysely": ">=0.27.0"
|
package/src/drift/drift.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
54
|
-
|
|
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";
|