@vibeorm/migrate 2.3.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/artifact-probe.d.ts +41 -0
- package/dist/artifact-probe.d.ts.map +1 -0
- package/dist/ddl/sqlite.d.ts.map +1 -1
- package/dist/down.d.ts +21 -3
- package/dist/down.d.ts.map +1 -1
- package/dist/extensions.d.ts +52 -0
- package/dist/extensions.d.ts.map +1 -1
- package/dist/fs.js +152 -70
- package/dist/fs.js.map +12 -12
- package/dist/index-predicates.d.ts +35 -0
- package/dist/index-predicates.d.ts.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +352 -149
- package/dist/index.js.map +19 -17
- package/dist/introspect/postgres.d.ts.map +1 -1
- package/dist/normalize.d.ts.map +1 -1
- package/dist/object-ownership.d.ts.map +1 -1
- package/dist/planner.d.ts +28 -0
- package/dist/planner.d.ts.map +1 -1
- package/dist/postgres-types.d.ts +16 -0
- package/dist/postgres-types.d.ts.map +1 -1
- package/dist/push.d.ts +11 -0
- package/dist/push.d.ts.map +1 -1
- package/dist/replay-plan.d.ts.map +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-normalized definition check for PRESENT extension artifacts on
|
|
3
|
+
* PostgreSQL. The chain's SQL-first history carries no authored snapshot to
|
|
4
|
+
* compare declarations against, and predicting the catalog's spelling of an
|
|
5
|
+
* artifact (`pg_get_indexdef` renders `("street"::pdb.edge_ngram(1, 12))` as
|
|
6
|
+
* `(("street")::pdb.edge_ngram('1', '12'))`) would be a textual guess. So the
|
|
7
|
+
* server spells both sides: the object's catalog facts as they are, then again
|
|
8
|
+
* after the artifact's own drop + create ran inside a savepoint that is rolled
|
|
9
|
+
* back. A differing definition is a real change — a bm25 tokenizer, a
|
|
10
|
+
* tsvector expression, an hnsw option — never a formatting artifact.
|
|
11
|
+
*
|
|
12
|
+
* Meant for the replay shadow inside the caller's rollback probe transaction:
|
|
13
|
+
* its tables are empty, so the probe create is instant. It must NEVER be
|
|
14
|
+
* followed by a real create in the same session: ParadeDB caches tokenizer
|
|
15
|
+
* typmods per backend, a typmod first minted inside the rolled-back savepoint
|
|
16
|
+
* stays in that cache while its `paradedb._typmod_cache` row is gone, and an
|
|
17
|
+
* index built afterwards from the cached id is unreadable from every other
|
|
18
|
+
* connection ("should not fail to load typmod: Spi(InvalidPosition)"). The
|
|
19
|
+
* shadow session ends after planning; the live push planner rebuilds for real
|
|
20
|
+
* (`rebuildArtifacts`) instead of probing.
|
|
21
|
+
*/
|
|
22
|
+
import type { ExtensionArtifact } from "@vibeorm/schema";
|
|
23
|
+
import type { SqlExecutor } from "./types.ts";
|
|
24
|
+
/** An artifact the plan drops and creates again, with the statements that put its previous definition back when the catalog can spell them. */
|
|
25
|
+
export type RebuiltArtifact = {
|
|
26
|
+
readonly artifact: ExtensionArtifact;
|
|
27
|
+
/** Absent when the previous definition cannot be restored automatically (a generated column, a trigger). */
|
|
28
|
+
readonly restore?: readonly string[];
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Probe every given artifact (all present, all on PostgreSQL) and return the
|
|
32
|
+
* ones whose catalog definition differs from what their create statements
|
|
33
|
+
* produce. Index rebuilds carry the catalog's own `CREATE INDEX` spelling as
|
|
34
|
+
* their restore statement — valid DDL, the way pg_dump emits it.
|
|
35
|
+
*/
|
|
36
|
+
export declare function probeChangedArtifacts(params: {
|
|
37
|
+
executor: SqlExecutor;
|
|
38
|
+
namespace: string;
|
|
39
|
+
artifacts: readonly ExtensionArtifact[];
|
|
40
|
+
}): Promise<RebuiltArtifact[]>;
|
|
41
|
+
//# sourceMappingURL=artifact-probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-probe.d.ts","sourceRoot":"","sources":["../src/artifact-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,+IAA+I;AAC/I,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,4GAA4G;IAC5G,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,CAAC;AAIF;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACzC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAuB7B"}
|
package/dist/ddl/sqlite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/ddl/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,KAAK,EAAmB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAajE,OAAO,KAAK,EAAe,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK3E;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACjD,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;CACpH,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/ddl/sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,KAAK,EAAmB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAajE,OAAO,KAAK,EAAe,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK3E;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACjD,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;CACpH,GAAG,MAAM,EAAE,CA8NX;AAiED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,GAAG;IAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAUjD;AAED,iFAAiF;AACjF,wBAAsB,+BAA+B,CAAC,MAAM,EAAE;IAC5D,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,CAShB"}
|
package/dist/down.d.ts
CHANGED
|
@@ -17,11 +17,17 @@
|
|
|
17
17
|
*
|
|
18
18
|
* Extension artifacts: object artifacts the up migration created (columns,
|
|
19
19
|
* indexes, shadow tables, triggers) are dropped by the down migration via
|
|
20
|
-
* their own `drop` SQL
|
|
21
|
-
*
|
|
22
|
-
* `
|
|
20
|
+
* their own `drop` SQL; artifacts the up migration REBUILT (a changed
|
|
21
|
+
* definition) are dropped and created again from the previous declarations.
|
|
22
|
+
* `CREATE EXTENSION`-class artifacts are never dropped — other database
|
|
23
|
+
* objects may depend on the extension — and are reported in `skipped`
|
|
24
|
+
* instead. "Created by the up migration" is decided against the unstripped
|
|
25
|
+
* physical state when the caller has one, otherwise against the previous
|
|
26
|
+
* authored declarations: an artifact both schemas declare existed before.
|
|
23
27
|
*/
|
|
24
28
|
import type { Dialect, SchemaIR, VibeExtension } from "@vibeorm/schema";
|
|
29
|
+
import type { InstalledExtensionState } from "./extensions.ts";
|
|
30
|
+
import type { RebuiltArtifact } from "./artifact-probe.ts";
|
|
25
31
|
/** A generated down migration: reverse SQL plus what could NOT be reversed. */
|
|
26
32
|
export type DownMigrationFile = {
|
|
27
33
|
/** Actual rollback declaration, including retained enum values and nullable re-added columns. */
|
|
@@ -55,5 +61,17 @@ export declare function generateDownMigration(params: {
|
|
|
55
61
|
dialect?: Dialect;
|
|
56
62
|
/** Configured extension instances — their up-created artifacts are dropped. */
|
|
57
63
|
extensions?: readonly VibeExtension[];
|
|
64
|
+
/**
|
|
65
|
+
* Unstripped physical state before the up migration (live generation). It
|
|
66
|
+
* decides which artifacts the up migration created; a stripped `from` would
|
|
67
|
+
* claim every one of them. Defaults to the previous declarations' artifacts.
|
|
68
|
+
*/
|
|
69
|
+
physical?: SchemaIR;
|
|
70
|
+
/** Owners `physical` cannot show (installed postgres extensions, triggers), probed live beside it. */
|
|
71
|
+
installed?: InstalledExtensionState;
|
|
72
|
+
/** The last authored schema the artifacts were generated from; defaults to `from`. */
|
|
73
|
+
previousDeclarations?: SchemaIR;
|
|
74
|
+
/** The up plan's own rebuild list (live generation, `SchemaMigrationPlan.rebuiltArtifacts`); computed from the declarations when absent. */
|
|
75
|
+
rebuilt?: readonly RebuiltArtifact[];
|
|
58
76
|
}): DownMigrationFile;
|
|
59
77
|
//# sourceMappingURL=down.d.ts.map
|
package/dist/down.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../src/down.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../src/down.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAU,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAWhF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAM3D,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iGAAiG;IACjG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAqEF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sGAAsG;IACtG,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,QAAQ,CAAC;IAChC,4IAA4I;IAC5I,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CACtC,GAAG,iBAAiB,CA4FpB"}
|
package/dist/extensions.d.ts
CHANGED
|
@@ -14,24 +14,46 @@
|
|
|
14
14
|
* checking the introspected IR for their owners (columns, indexes,
|
|
15
15
|
* tables by name); non-introspectable owners (postgres extensions,
|
|
16
16
|
* triggers) rely on their idempotent IF NOT EXISTS forms and always run.
|
|
17
|
+
* 4. `planChangedArtifacts` decides which PRESENT artifacts must be dropped
|
|
18
|
+
* and created again because their definition changed since the last
|
|
19
|
+
* authored schema — `IF NOT EXISTS` would keep the old object silently.
|
|
17
20
|
*
|
|
18
21
|
* Removing a declaration does NOT auto-drop its artifacts (mirrors the v1
|
|
19
22
|
* phantom-join-table precedent) — `drop` SQL is carried for tooling, not
|
|
20
23
|
* scheduled by push.
|
|
21
24
|
*/
|
|
22
25
|
import type { Dialect, ExtensionArtifact, SchemaIR, VibeExtension } from "@vibeorm/schema";
|
|
26
|
+
import type { MigrationFile } from "./types.ts";
|
|
27
|
+
/** The object artifacts one extension contributed, in its own order. */
|
|
28
|
+
export type ArtifactGroup = {
|
|
29
|
+
readonly extension: string;
|
|
30
|
+
readonly objects: readonly ExtensionArtifact[];
|
|
31
|
+
};
|
|
23
32
|
/** Artifacts of every configured extension for this schema, in order. */
|
|
24
33
|
export type CollectedArtifacts = {
|
|
25
34
|
/** CREATE EXTENSION-class artifacts — run BEFORE the core diff SQL. */
|
|
26
35
|
readonly setup: readonly ExtensionArtifact[];
|
|
27
36
|
/** Object artifacts (columns, indexes, shadow tables, triggers) — run AFTER. */
|
|
28
37
|
readonly objects: readonly ExtensionArtifact[];
|
|
38
|
+
/** `objects`, grouped by the extension that contributed them (rebuild scope). */
|
|
39
|
+
readonly groups: readonly ArtifactGroup[];
|
|
29
40
|
};
|
|
30
41
|
export declare function collectExtensionArtifacts(params: {
|
|
31
42
|
schema: SchemaIR;
|
|
32
43
|
dialect: Dialect;
|
|
33
44
|
extensions: readonly VibeExtension[];
|
|
34
45
|
}): CollectedArtifacts;
|
|
46
|
+
/**
|
|
47
|
+
* The last authored schema in a migration chain — the declarations its newest
|
|
48
|
+
* snapshot-bearing migration was generated from. Only extension declarations
|
|
49
|
+
* are read from it (`planChangedArtifacts`), never physical expectations, so
|
|
50
|
+
* an ordinary SQL successor does not disqualify it the way it disqualifies a
|
|
51
|
+
* deployed desired state: a hand-written index change after the snapshot is
|
|
52
|
+
* at worst rebuilt once more, visibly, in reviewed SQL.
|
|
53
|
+
*/
|
|
54
|
+
export declare function lastDeclaredSchema(params: {
|
|
55
|
+
migrations: readonly MigrationFile[];
|
|
56
|
+
}): SchemaIR | undefined;
|
|
35
57
|
/**
|
|
36
58
|
* Remove extension-owned objects from an INTROSPECTED SchemaIR so the core
|
|
37
59
|
* differ never sees them (they are neither dropped nor re-created by it).
|
|
@@ -71,4 +93,34 @@ export declare function probeInstalledExtensionState(params: {
|
|
|
71
93
|
export declare function artifactCreateSql(params: {
|
|
72
94
|
artifacts: readonly ExtensionArtifact[];
|
|
73
95
|
}): string[];
|
|
96
|
+
/**
|
|
97
|
+
* Present object artifacts whose definition changed since the previously
|
|
98
|
+
* authored schema. The same extension code renders both sides, so only a real
|
|
99
|
+
* declaration, column or option change differs — and for such a change an
|
|
100
|
+
* idempotent `CREATE … IF NOT EXISTS` keeps the OLD object silently (a bm25
|
|
101
|
+
* index its old tokenizer, a tsvector column its old weights, an hnsw index
|
|
102
|
+
* its old `m`). Those artifacts are dropped and created again.
|
|
103
|
+
*
|
|
104
|
+
* Two sources say "changed": the previous authored declarations, when the
|
|
105
|
+
* caller has them, and `probed` — artifacts a server-side probe found to
|
|
106
|
+
* differ from their own create statements (`probeChangedArtifacts`).
|
|
107
|
+
*
|
|
108
|
+
* A rebuilt COLUMN takes the same extension's indexes and triggers on that
|
|
109
|
+
* table with it: dropping a generated column drops the index on it, whose own
|
|
110
|
+
* text is unchanged. The rebuild never touches CREATE EXTENSION-class
|
|
111
|
+
* artifacts (dropping an extension drops everything depending on it),
|
|
112
|
+
* artifacts in `missing` (their create runs anyway and their drop may not be
|
|
113
|
+
* idempotent) or artifacts whose owner moved (a renamed index is left to
|
|
114
|
+
* presence planning and the core differ's unmanaged-removal review).
|
|
115
|
+
*/
|
|
116
|
+
export declare function planChangedArtifacts(params: {
|
|
117
|
+
previous?: CollectedArtifacts;
|
|
118
|
+
current: CollectedArtifacts;
|
|
119
|
+
missing: readonly ExtensionArtifact[];
|
|
120
|
+
probed?: readonly ExtensionArtifact[];
|
|
121
|
+
}): ExtensionArtifact[];
|
|
122
|
+
/** Drops of a rebuild, newest artifact first, so a dependent index goes before its column. */
|
|
123
|
+
export declare function artifactDropSql(params: {
|
|
124
|
+
artifacts: readonly ExtensionArtifact[];
|
|
125
|
+
}): string[];
|
|
74
126
|
//# sourceMappingURL=extensions.d.ts.map
|
package/dist/extensions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
|