@vibeorm/migrate 2.0.2 → 2.1.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.
Files changed (54) hide show
  1. package/dist/adoption.d.ts +16 -0
  2. package/dist/adoption.d.ts.map +1 -0
  3. package/dist/compile-desired-state.d.ts +12 -0
  4. package/dist/compile-desired-state.d.ts.map +1 -0
  5. package/dist/ddl/postgres.d.ts.map +1 -1
  6. package/dist/ddl/render.d.ts +7 -0
  7. package/dist/ddl/render.d.ts.map +1 -1
  8. package/dist/ddl/sqlite.d.ts +5 -0
  9. package/dist/ddl/sqlite.d.ts.map +1 -1
  10. package/dist/desired-state.d.ts +69 -0
  11. package/dist/desired-state.d.ts.map +1 -0
  12. package/dist/differ.d.ts.map +1 -1
  13. package/dist/down.d.ts +2 -0
  14. package/dist/down.d.ts.map +1 -1
  15. package/dist/exclusions.d.ts +26 -0
  16. package/dist/exclusions.d.ts.map +1 -0
  17. package/dist/execution.d.ts +1 -1
  18. package/dist/execution.d.ts.map +1 -1
  19. package/dist/fs.d.ts +7 -0
  20. package/dist/fs.d.ts.map +1 -0
  21. package/dist/fs.js +6758 -0
  22. package/dist/fs.js.map +41 -0
  23. package/dist/history.d.ts +14 -0
  24. package/dist/history.d.ts.map +1 -0
  25. package/dist/index.d.ts +14 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1672 -203
  28. package/dist/index.js.map +29 -19
  29. package/dist/inspect-objects.d.ts +116 -0
  30. package/dist/inspect-objects.d.ts.map +1 -0
  31. package/dist/introspect/mysql.d.ts.map +1 -1
  32. package/dist/introspect/postgres.d.ts +4 -0
  33. package/dist/introspect/postgres.d.ts.map +1 -1
  34. package/dist/introspect/shared.d.ts.map +1 -1
  35. package/dist/inventory.d.ts +15 -0
  36. package/dist/inventory.d.ts.map +1 -0
  37. package/dist/normalize.d.ts +2 -5
  38. package/dist/normalize.d.ts.map +1 -1
  39. package/dist/object-ownership.d.ts +58 -0
  40. package/dist/object-ownership.d.ts.map +1 -0
  41. package/dist/planner.d.ts +29 -0
  42. package/dist/planner.d.ts.map +1 -0
  43. package/dist/push.d.ts +9 -36
  44. package/dist/push.d.ts.map +1 -1
  45. package/dist/reference-state.d.ts +14 -0
  46. package/dist/reference-state.d.ts.map +1 -0
  47. package/dist/runner.d.ts +14 -1
  48. package/dist/runner.d.ts.map +1 -1
  49. package/dist/sql-statements.d.ts +9 -0
  50. package/dist/sql-statements.d.ts.map +1 -0
  51. package/dist/sqlite-types.d.ts.map +1 -1
  52. package/dist/types.d.ts +23 -1
  53. package/dist/types.d.ts.map +1 -1
  54. package/package.json +7 -3
@@ -0,0 +1,16 @@
1
+ import type { Dialect } from "@vibeorm/schema";
2
+ import type { MigrationFile, RecordedMigration, SqlExecutor } from "./types.ts";
3
+ import type { DesiredState } from "./desired-state.ts";
4
+ /** Verify an independently supplied reference and return a new metadata-only migration. */
5
+ export declare function adoptMigration(params: {
6
+ executor: SqlExecutor;
7
+ reference: DesiredState;
8
+ name: string;
9
+ dialect: Dialect;
10
+ }): Promise<MigrationFile>;
11
+ /** Only complete checksum-verified history can establish deployed desired state. */
12
+ export declare function deployedDesiredState(params: {
13
+ migrations: readonly MigrationFile[];
14
+ recorded: readonly RecordedMigration[];
15
+ }): DesiredState | undefined;
16
+ //# sourceMappingURL=adoption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adoption.d.ts","sourceRoot":"","sources":["../src/adoption.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,2FAA2F;AAC3F,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAKvJ;AAED,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE,GAAG,YAAY,GAAG,SAAS,CASvJ"}
@@ -0,0 +1,12 @@
1
+ import type { Dialect, SchemaIR } from "@vibeorm/schema";
2
+ import type { DesiredState } from "./desired-state.ts";
3
+ import type { MigrationStep, SqlExecutor } from "./types.ts";
4
+ /** Compile authored PostgreSQL CHECKs including newly created tables under an explicit rollback probe. */
5
+ export declare function compileDesiredState(params: {
6
+ executor: SqlExecutor;
7
+ schema: SchemaIR;
8
+ dialect: Dialect;
9
+ steps: readonly MigrationStep[];
10
+ probe: "rollback";
11
+ }): Promise<DesiredState>;
12
+ //# sourceMappingURL=compile-desired-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-desired-state.d.ts","sourceRoot":"","sources":["../src/compile-desired-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAuB,MAAM,iBAAiB,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,0GAA0G;AAC1G,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAChD,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,KAAK,EAAE,UAAU,CAAC;CACnB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/ddl/postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAYH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAGzF"}
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/ddl/postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAaH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAGzF"}
@@ -21,5 +21,12 @@ export declare function renderSteps(params: {
21
21
  dialect: Dialect;
22
22
  from?: SchemaIR;
23
23
  to?: SchemaIR;
24
+ /** Captured trigger/index SQL restored inside each SQLite rebuild transaction. */
25
+ sqliteRestore?: ReadonlyMap<string, readonly string[]>;
26
+ /** Verified generated/extra column clauses copied into rebuilt SQLite tables. */
27
+ sqliteColumns?: ReadonlyMap<string, ReadonlyMap<string, {
28
+ readonly sql: string;
29
+ readonly generated: boolean;
30
+ }>>;
24
31
  }): string[];
25
32
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/ddl/render.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf,GAAG,MAAM,EAAE,CAsBX"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/ddl/render.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA6CjD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,kFAAkF;IAClF,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACvD,iFAAiF;IACjF,aAAa,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;CACjH,GAAG,MAAM,EAAE,CA0BX"}
@@ -61,6 +61,11 @@ export declare function renderSqliteSteps(params: {
61
61
  steps: readonly MigrationStep[];
62
62
  from?: SchemaIR;
63
63
  to?: SchemaIR;
64
+ restore?: ReadonlyMap<string, readonly string[]>;
65
+ preservedColumns?: ReadonlyMap<string, ReadonlyMap<string, {
66
+ readonly sql: string;
67
+ readonly generated: boolean;
68
+ }>>;
64
69
  }): string[];
65
70
  /**
66
71
  * Tables whose sqlite DDL will DROP and re-create them (the rebuild recipe) or
@@ -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,MAAM,aAAa,CAAC;AAK9D;;;;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;CACf,GAAG,MAAM,EAAE,CA0NX;AAgED;;;;;;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"}
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,MAAM,aAAa,CAAC;AAK9D;;;;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,CA6NX;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"}
@@ -0,0 +1,69 @@
1
+ import type { Dialect, SchemaIR, SqlObjectDefinition, SqlObjectIdentity } from "@vibeorm/schema";
2
+ /** Authored desired state; live catalog observations never become this state implicitly. */
3
+ export type DesiredState = {
4
+ readonly schema: SchemaIR;
5
+ readonly definitions: readonly SqlObjectDefinition[];
6
+ /** Server context for independently normalized definitions; absent for authored-only records. */
7
+ readonly normalization?: {
8
+ readonly format: "catalog-v1";
9
+ readonly dialect: Dialect;
10
+ readonly serverVersion: string;
11
+ };
12
+ };
13
+ /** Immutable metadata shipped beside each new forward migration. */
14
+ export type MigrationDesiredState = {
15
+ readonly version: 1;
16
+ readonly dialect: Dialect;
17
+ readonly from: DesiredState;
18
+ readonly to: DesiredState;
19
+ /** Actual rollback target when irreversible steps cannot restore from exactly. */
20
+ readonly down?: DesiredState;
21
+ /** Exact unmanaged objects the forward SQL intentionally removes, including collateral. */
22
+ readonly unmanagedRemovals?: readonly SqlObjectIdentity[];
23
+ };
24
+ /** Offline shells declare uncertainty until reviewed before/after metadata is supplied. */
25
+ export declare const UNFINALIZED_DESIRED_STATE: Readonly<{
26
+ version: 1;
27
+ status: "unfinalized";
28
+ }>;
29
+ /** Recognize only the exact offline placeholder, never malformed finalized metadata. */
30
+ export declare function isUnfinalizedDesiredState(params: {
31
+ text: string;
32
+ }): boolean;
33
+ /** On-disk desired-state format. */
34
+ export declare const DESIRED_STATE_METADATA: Readonly<{
35
+ filename: string;
36
+ version: 1;
37
+ }>;
38
+ /** Construct metadata from declarations, never from the database being verified. */
39
+ export declare function createDesiredState(params: {
40
+ schema: SchemaIR;
41
+ dialect: Dialect;
42
+ definitions?: readonly SqlObjectDefinition[];
43
+ }): DesiredState;
44
+ /** Validate untrusted sidecars, including their Schema IR, before planning or checksumming. */
45
+ export declare function assertDesiredState(params: {
46
+ value: unknown;
47
+ migration: string;
48
+ }): asserts params is {
49
+ value: MigrationDesiredState;
50
+ migration: string;
51
+ };
52
+ /** Canonical metadata bytes. Array order is retained because declarations may be ordered. */
53
+ export declare function canonicalMigrationJson(params: {
54
+ value: unknown;
55
+ }): string;
56
+ /** Absent metadata contributes no checksum bytes, preserving old applied migrations. */
57
+ export declare function desiredStateChecksumSuffix(params: {
58
+ desiredState?: MigrationDesiredState;
59
+ }): string;
60
+ /** Serialize metadata for a NEW migration; never retrofit an applied directory. */
61
+ export declare function serializeDesiredStateSidecar(params: {
62
+ desiredState: MigrationDesiredState;
63
+ }): string;
64
+ /** Parse and validate a reviewed desired-state file. */
65
+ export declare function parseDesiredStateSidecar(params: {
66
+ text: string;
67
+ migration: string;
68
+ }): MigrationDesiredState;
69
+ //# sourceMappingURL=desired-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desired-state.d.ts","sourceRoot":"","sources":["../src/desired-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEjG,4FAA4F;AAC5F,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACrD,iGAAiG;IACjG,QAAQ,CAAC,aAAa,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CACvH,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,2FAA2F;IAC3F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC3D,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAwD,CAAC;AAE/I,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAG3E;AAED,oCAAoC;AACpC,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAiE,CAAC;AAEhJ,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAA;CAAE,GAAG,YAAY,CAa7I;AA8BD,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,IAAI;IAAE,KAAK,EAAE,qBAAqB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAavJ;AAED,6FAA6F;AAC7F,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAKzE;AAED,wFAAwF;AACxF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IAAE,YAAY,CAAC,EAAE,qBAAqB,CAAA;CAAE,GAAG,MAAM,CAInG;AAED,mFAAmF;AACnF,wBAAgB,4BAA4B,CAAC,MAAM,EAAE;IAAE,YAAY,EAAE,qBAAqB,CAAA;CAAE,GAAG,MAAM,CAGpG;AAED,wDAAwD;AACxD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,qBAAqB,CAU3G"}
@@ -1 +1 @@
1
- {"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../src/differ.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAOjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAqB,aAAa,EAAE,MAAM,YAAY,CAAC;AAoCnE;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;CACnC,GAAG,aAAa,EAAE,CAmElB"}
1
+ {"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../src/differ.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAOjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAqB,aAAa,EAAE,MAAM,YAAY,CAAC;AAsCnE;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;CACnC,GAAG,aAAa,EAAE,CAoFlB"}
package/dist/down.d.ts CHANGED
@@ -24,6 +24,8 @@
24
24
  import type { Dialect, SchemaIR, VibeExtension } from "@vibeorm/schema";
25
25
  /** A generated down migration: reverse SQL plus what could NOT be reversed. */
26
26
  export type DownMigrationFile = {
27
+ /** Actual rollback declaration, including retained enum values and nullable re-added columns. */
28
+ readonly target: SchemaIR;
27
29
  readonly name: string;
28
30
  /** One SQL string per statement, in execution order. */
29
31
  readonly sql: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../src/down.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAU,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAahF,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,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;AAyDF;;;;;;;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;CACvC,GAAG,iBAAiB,CAwDpB"}
1
+ {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../src/down.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAU,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAahF,+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;CACvC,GAAG,iBAAiB,CAsEpB"}
@@ -0,0 +1,26 @@
1
+ import type { SchemaIR, SqlObjectIdentity } from "@vibeorm/schema";
2
+ import type { SqlExecutor } from "./types.ts";
3
+ import type { DesiredState } from "./desired-state.ts";
4
+ import type { MigrationObjectState } from "./inspect-objects.ts";
5
+ /** Normalize an independently authored definition on an empty clone, rolled back by the caller's session. */
6
+ export declare function deparseExclusion(params: {
7
+ executor: SqlExecutor;
8
+ table: string;
9
+ definition: string;
10
+ }): Promise<string>;
11
+ /** Establish definition equivalence before the pure differ sees catalog SQL. */
12
+ export declare function prepareExclusionDiff(params: {
13
+ executor: SqlExecutor;
14
+ from: SchemaIR;
15
+ to: SchemaIR;
16
+ previous?: DesiredState;
17
+ probe?: string;
18
+ replaceChecks?: readonly SqlObjectIdentity[];
19
+ }): Promise<SchemaIR>;
20
+ /** Verify definition and enforcement without treating a backing index as an ordinary index. */
21
+ export declare function verifyExclusions(params: {
22
+ executor: SqlExecutor;
23
+ expected: DesiredState;
24
+ probe?: string;
25
+ }): Promise<MigrationObjectState[]>;
26
+ //# sourceMappingURL=exclusions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exclusions.d.ts","sourceRoot":"","sources":["../src/exclusions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAA4B,MAAM,sBAAsB,CAAC;AAE3F,6GAA6G;AAC7G,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAY5H;AAED,gFAAgF;AAChF,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuBpN;AAED,+FAA+F;AAC/F,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAgBjJ"}
@@ -147,7 +147,7 @@ export declare function parseExecutionSidecar(params: {
147
147
  };
148
148
  /** A reviewable risk a planned migration carries, for dry-run output. */
149
149
  export type MigrationRisk = {
150
- readonly kind: "tableRewrite" | "exclusiveLock" | "concurrentIndex" | "validateScan" | "notOnline";
150
+ readonly kind: "tableRewrite" | "exclusiveLock" | "concurrentIndex" | "validateScan" | "notOnline" | "integrityLoss" | "unknownObjectRemoval";
151
151
  readonly detail: string;
152
152
  readonly table?: string;
153
153
  };
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
package/dist/fs.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import type { MigrationFile } from "./types.ts";
2
+ export { joinSqlStatements, splitSqlStatements } from "./sql-statements.ts";
3
+ /** Load SQL, reverse SQL and every supported sidecar in directory-name order. */
4
+ export declare function loadMigrationFiles(params: {
5
+ dir: string;
6
+ }): Promise<MigrationFile[]>;
7
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKhD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAoC5E,iFAAiF;AACjF,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA0B1F"}