@prisma-next/target-sqlite 0.12.0-dev.4 → 0.12.0-dev.41

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 (93) hide show
  1. package/dist/{codec-ids-C4UfWqAE.d.mts → codec-ids-yG2RRHnw.d.mts} +1 -1
  2. package/dist/{codec-ids-C4UfWqAE.d.mts.map → codec-ids-yG2RRHnw.d.mts.map} +1 -1
  3. package/dist/codec-ids.d.mts +1 -1
  4. package/dist/{codec-types-B2ci-b_W.d.mts → codec-types-CM7OkQLM.d.mts} +2 -2
  5. package/dist/{codec-types-B2ci-b_W.d.mts.map → codec-types-CM7OkQLM.d.mts.map} +1 -1
  6. package/dist/codec-types.d.mts +2 -2
  7. package/dist/{codecs-DqDWNIKq.d.mts → codecs-t6YnHZkK.d.mts} +2 -2
  8. package/dist/{codecs-DqDWNIKq.d.mts.map → codecs-t6YnHZkK.d.mts.map} +1 -1
  9. package/dist/codecs.d.mts +1 -1
  10. package/dist/contract-free.d.mts +50 -0
  11. package/dist/contract-free.d.mts.map +1 -0
  12. package/dist/contract-free.mjs +107 -0
  13. package/dist/contract-free.mjs.map +1 -0
  14. package/dist/control-tables-C0Nkzhv9.mjs +12 -0
  15. package/dist/control-tables-C0Nkzhv9.mjs.map +1 -0
  16. package/dist/control-tables.d.mts +11 -0
  17. package/dist/control-tables.d.mts.map +1 -0
  18. package/dist/control-tables.mjs +2 -0
  19. package/dist/control.d.mts +31 -15
  20. package/dist/control.d.mts.map +1 -1
  21. package/dist/control.mjs +62 -120
  22. package/dist/control.mjs.map +1 -1
  23. package/dist/ddl.d.mts +2 -0
  24. package/dist/ddl.mjs +2 -0
  25. package/dist/{descriptor-meta-DIbCXU65.mjs → descriptor-meta-rKforwQA.mjs} +3 -1
  26. package/dist/descriptor-meta-rKforwQA.mjs.map +1 -0
  27. package/dist/migration.d.mts +2 -2
  28. package/dist/migration.mjs +2 -2
  29. package/dist/nodes-09ul6DNV.mjs +28 -0
  30. package/dist/nodes-09ul6DNV.mjs.map +1 -0
  31. package/dist/nodes-D8LGV4Yk.d.mts +27 -0
  32. package/dist/nodes-D8LGV4Yk.d.mts.map +1 -0
  33. package/dist/{op-factory-call-VBm-wu5R.mjs → op-factory-call-DulOHPZX.mjs} +2 -2
  34. package/dist/{op-factory-call-VBm-wu5R.mjs.map → op-factory-call-DulOHPZX.mjs.map} +1 -1
  35. package/dist/op-factory-call.d.mts +2 -2
  36. package/dist/op-factory-call.mjs +1 -1
  37. package/dist/pack.d.mts +2 -1
  38. package/dist/pack.d.mts.map +1 -1
  39. package/dist/pack.mjs +1 -1
  40. package/dist/{planner-BBvwGy0f.mjs → planner-D7RauQHI.mjs} +6 -6
  41. package/dist/planner-D7RauQHI.mjs.map +1 -0
  42. package/dist/{planner-produced-sqlite-migration-D4FSvPE4.d.mts → planner-produced-sqlite-migration-BwFkd0br.d.mts} +3 -3
  43. package/dist/{planner-produced-sqlite-migration-D4FSvPE4.d.mts.map → planner-produced-sqlite-migration-BwFkd0br.d.mts.map} +1 -1
  44. package/dist/planner-produced-sqlite-migration.d.mts +1 -1
  45. package/dist/{planner-target-details-BRS591Zt.mjs → planner-target-details-B-H_bvo0.mjs} +1 -1
  46. package/dist/{planner-target-details-BRS591Zt.mjs.map → planner-target-details-B-H_bvo0.mjs.map} +1 -1
  47. package/dist/{planner-target-details-B-VJkUsu.d.mts → planner-target-details-RVPqF2ug.d.mts} +1 -1
  48. package/dist/{planner-target-details-B-VJkUsu.d.mts.map → planner-target-details-RVPqF2ug.d.mts.map} +1 -1
  49. package/dist/planner-target-details.d.mts +1 -1
  50. package/dist/planner-target-details.mjs +1 -1
  51. package/dist/planner.d.mts +2 -2
  52. package/dist/planner.mjs +1 -1
  53. package/dist/render-ops.d.mts +1 -1
  54. package/dist/runtime.d.mts +17 -1
  55. package/dist/runtime.d.mts.map +1 -1
  56. package/dist/runtime.mjs +2 -1
  57. package/dist/runtime.mjs.map +1 -1
  58. package/dist/{shared-DDOJntxk.d.mts → shared-Bw5G0I-c.d.mts} +2 -2
  59. package/dist/{shared-DDOJntxk.d.mts.map → shared-Bw5G0I-c.d.mts.map} +1 -1
  60. package/dist/{sql-utils-D0gQAMLB.mjs → sql-utils-DcrE1Hm4.mjs} +1 -1
  61. package/dist/{sql-utils-D0gQAMLB.mjs.map → sql-utils-DcrE1Hm4.mjs.map} +1 -1
  62. package/dist/sql-utils.mjs +1 -1
  63. package/dist/sqlite-contract-serializer-WdLA-K49.mjs +101 -0
  64. package/dist/sqlite-contract-serializer-WdLA-K49.mjs.map +1 -0
  65. package/dist/{sqlite-migration-Feio34n3.d.mts → sqlite-migration-D-O3Glz1.d.mts} +2 -2
  66. package/dist/{sqlite-migration-Feio34n3.d.mts.map → sqlite-migration-D-O3Glz1.d.mts.map} +1 -1
  67. package/dist/{tables-gB0XiFu8.mjs → tables-zrEJsCi9.mjs} +3 -3
  68. package/dist/{tables-gB0XiFu8.mjs.map → tables-zrEJsCi9.mjs.map} +1 -1
  69. package/package.json +21 -19
  70. package/src/contract-free/columns.ts +44 -0
  71. package/src/contract-free/control-bootstrap.ts +54 -0
  72. package/src/contract-free/ddl.ts +21 -0
  73. package/src/core/control-tables.ts +11 -0
  74. package/src/core/ddl/nodes.ts +41 -0
  75. package/src/core/descriptor-meta.ts +2 -0
  76. package/src/core/migrations/issue-planner.ts +1 -1
  77. package/src/core/migrations/planner-strategies.ts +1 -1
  78. package/src/core/migrations/runner.ts +76 -78
  79. package/src/core/sqlite-contract-serializer.ts +21 -9
  80. package/src/core/sqlite-unbound-database.ts +113 -26
  81. package/src/exports/contract-free.ts +6 -0
  82. package/src/exports/control-tables.ts +5 -0
  83. package/src/exports/ddl.ts +6 -0
  84. package/src/exports/runtime.ts +1 -0
  85. package/dist/descriptor-meta-DIbCXU65.mjs.map +0 -1
  86. package/dist/planner-BBvwGy0f.mjs.map +0 -1
  87. package/dist/statement-builders-BiRmeyJM.mjs +0 -158
  88. package/dist/statement-builders-BiRmeyJM.mjs.map +0 -1
  89. package/dist/statement-builders.d.mts +0 -68
  90. package/dist/statement-builders.d.mts.map +0 -1
  91. package/dist/statement-builders.mjs +0 -2
  92. package/src/core/migrations/statement-builders.ts +0 -212
  93. package/src/exports/statement-builders.ts +0 -12
@@ -1,158 +0,0 @@
1
- import { APP_SPACE_ID as APP_SPACE_ID$1 } from "@prisma-next/framework-components/control";
2
- //#region src/core/migrations/statement-builders.ts
3
- const MARKER_TABLE_NAME = "_prisma_marker";
4
- const LEDGER_TABLE_NAME = "_prisma_ledger";
5
- /**
6
- * Control tables the runner creates/manages. The planner must not drop these
7
- * when reconciling "extra" tables against the contract.
8
- */
9
- const CONTROL_TABLE_NAMES = new Set([MARKER_TABLE_NAME, LEDGER_TABLE_NAME]);
10
- /**
11
- * Schema for `_prisma_marker`. The `space TEXT PRIMARY KEY` shape
12
- * supports one row per loaded contract space (`'app'`,
13
- * `'<extension-id>'`, …); brand-new databases create this shape
14
- * directly. The migration runner detects pre-1.0 single-row markers
15
- * (no `space` column) at boot and fails with a structured
16
- * `LEGACY_MARKER_SHAPE` error rather than auto-rebuilding the table —
17
- * see `specs/framework-mechanism.spec.md § 2`.
18
- */
19
- const ensureMarkerTableStatement = {
20
- sql: `CREATE TABLE IF NOT EXISTS _prisma_marker (
21
- space TEXT NOT NULL PRIMARY KEY DEFAULT '${APP_SPACE_ID$1}',
22
- core_hash TEXT NOT NULL,
23
- profile_hash TEXT NOT NULL,
24
- contract_json TEXT,
25
- canonical_version INTEGER,
26
- updated_at TEXT NOT NULL DEFAULT (datetime('now')),
27
- app_tag TEXT,
28
- meta TEXT NOT NULL DEFAULT '{}',
29
- invariants TEXT NOT NULL DEFAULT '[]'
30
- )`,
31
- params: []
32
- };
33
- const ensureLedgerTableStatement = {
34
- sql: `CREATE TABLE IF NOT EXISTS _prisma_ledger (
35
- id INTEGER PRIMARY KEY AUTOINCREMENT,
36
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
37
- origin_core_hash TEXT,
38
- origin_profile_hash TEXT,
39
- destination_core_hash TEXT NOT NULL,
40
- destination_profile_hash TEXT,
41
- contract_json_before TEXT,
42
- contract_json_after TEXT,
43
- operations TEXT NOT NULL
44
- )`,
45
- params: []
46
- };
47
- function readMarkerStatement(space) {
48
- return {
49
- sql: `SELECT
50
- core_hash,
51
- profile_hash,
52
- contract_json,
53
- canonical_version,
54
- updated_at,
55
- app_tag,
56
- meta,
57
- invariants
58
- FROM _prisma_marker
59
- WHERE space = ?`,
60
- params: [space]
61
- };
62
- }
63
- function buildWriteMarkerStatements(input) {
64
- return {
65
- insert: {
66
- sql: `INSERT INTO _prisma_marker (
67
- space,
68
- core_hash,
69
- profile_hash,
70
- contract_json,
71
- canonical_version,
72
- updated_at,
73
- app_tag,
74
- meta,
75
- invariants
76
- ) VALUES (
77
- ?,
78
- ?,
79
- ?,
80
- ?,
81
- ?,
82
- datetime('now'),
83
- ?,
84
- ?,
85
- ?
86
- )`,
87
- params: [
88
- input.space,
89
- input.storageHash,
90
- input.profileHash,
91
- jsonParam(input.contractJson),
92
- input.canonicalVersion ?? null,
93
- input.appTag ?? null,
94
- jsonParam(input.meta ?? {}),
95
- jsonParam(input.invariants)
96
- ]
97
- },
98
- update: {
99
- sql: `UPDATE _prisma_marker SET
100
- core_hash = ?,
101
- profile_hash = ?,
102
- contract_json = ?,
103
- canonical_version = ?,
104
- updated_at = datetime('now'),
105
- app_tag = ?,
106
- meta = ?,
107
- invariants = ?
108
- WHERE space = ?`,
109
- params: [
110
- input.storageHash,
111
- input.profileHash,
112
- jsonParam(input.contractJson),
113
- input.canonicalVersion ?? null,
114
- input.appTag ?? null,
115
- jsonParam(input.meta ?? {}),
116
- jsonParam(input.invariants),
117
- input.space
118
- ]
119
- }
120
- };
121
- }
122
- function buildLedgerInsertStatement(input) {
123
- return {
124
- sql: `INSERT INTO _prisma_ledger (
125
- origin_core_hash,
126
- origin_profile_hash,
127
- destination_core_hash,
128
- destination_profile_hash,
129
- contract_json_before,
130
- contract_json_after,
131
- operations
132
- ) VALUES (
133
- ?,
134
- ?,
135
- ?,
136
- ?,
137
- ?,
138
- ?,
139
- ?
140
- )`,
141
- params: [
142
- input.originStorageHash ?? null,
143
- input.originProfileHash ?? null,
144
- input.destinationStorageHash,
145
- input.destinationProfileHash ?? null,
146
- jsonParam(input.contractJsonBefore),
147
- jsonParam(input.contractJsonAfter),
148
- jsonParam(input.operations)
149
- ]
150
- };
151
- }
152
- function jsonParam(value) {
153
- return JSON.stringify(value ?? null);
154
- }
155
- //#endregion
156
- export { buildLedgerInsertStatement as a, ensureMarkerTableStatement as c, MARKER_TABLE_NAME as i, readMarkerStatement as l, CONTROL_TABLE_NAMES as n, buildWriteMarkerStatements as o, LEDGER_TABLE_NAME as r, ensureLedgerTableStatement as s, APP_SPACE_ID$1 as t };
157
-
158
- //# sourceMappingURL=statement-builders-BiRmeyJM.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"statement-builders-BiRmeyJM.mjs","names":["APP_SPACE_ID"],"sources":["../src/core/migrations/statement-builders.ts"],"sourcesContent":["import { APP_SPACE_ID } from '@prisma-next/framework-components/control';\n\nexport { APP_SPACE_ID };\n\nexport interface SqlStatement {\n readonly sql: string;\n readonly params: readonly unknown[];\n}\n\nexport const MARKER_TABLE_NAME = '_prisma_marker';\nexport const LEDGER_TABLE_NAME = '_prisma_ledger';\n\n/**\n * Control tables the runner creates/manages. The planner must not drop these\n * when reconciling \"extra\" tables against the contract.\n */\nexport const CONTROL_TABLE_NAMES: ReadonlySet<string> = new Set([\n MARKER_TABLE_NAME,\n LEDGER_TABLE_NAME,\n]);\n\n/**\n * Schema for `_prisma_marker`. The `space TEXT PRIMARY KEY` shape\n * supports one row per loaded contract space (`'app'`,\n * `'<extension-id>'`, …); brand-new databases create this shape\n * directly. The migration runner detects pre-1.0 single-row markers\n * (no `space` column) at boot and fails with a structured\n * `LEGACY_MARKER_SHAPE` error rather than auto-rebuilding the table —\n * see `specs/framework-mechanism.spec.md § 2`.\n */\nexport const ensureMarkerTableStatement: SqlStatement = {\n sql: `CREATE TABLE IF NOT EXISTS _prisma_marker (\n space TEXT NOT NULL PRIMARY KEY DEFAULT '${APP_SPACE_ID}',\n core_hash TEXT NOT NULL,\n profile_hash TEXT NOT NULL,\n contract_json TEXT,\n canonical_version INTEGER,\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n app_tag TEXT,\n meta TEXT NOT NULL DEFAULT '{}',\n invariants TEXT NOT NULL DEFAULT '[]'\n )`,\n params: [],\n};\n\nexport const ensureLedgerTableStatement: SqlStatement = {\n sql: `CREATE TABLE IF NOT EXISTS _prisma_ledger (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n origin_core_hash TEXT,\n origin_profile_hash TEXT,\n destination_core_hash TEXT NOT NULL,\n destination_profile_hash TEXT,\n contract_json_before TEXT,\n contract_json_after TEXT,\n operations TEXT NOT NULL\n )`,\n params: [],\n};\n\nexport function readMarkerStatement(space: string): SqlStatement {\n return {\n sql: `SELECT\n core_hash,\n profile_hash,\n contract_json,\n canonical_version,\n updated_at,\n app_tag,\n meta,\n invariants\n FROM _prisma_marker\n WHERE space = ?`,\n params: [space],\n };\n}\n\nexport interface WriteMarkerInput {\n /**\n * Logical space identifier for this marker row. Required at every\n * call site so the type system surfaces every place that needs to\n * thread the value (rather than letting an `?? APP_SPACE_ID`\n * fall-through silently collapse per-space markers onto the\n * `'app'` row). App-plan callers pass {@link APP_SPACE_ID}\n * (`'app'`); per-extension callers pass the extension's space id.\n */\n readonly space: string;\n readonly storageHash: string;\n readonly profileHash: string;\n readonly contractJson?: unknown;\n readonly canonicalVersion?: number | null;\n readonly appTag?: string | null;\n readonly meta?: Record<string, unknown>;\n /**\n * Invariants to write into `marker.invariants`. Stored as a JSON-encoded\n * TEXT array — SQLite has no native array type. The runner is responsible\n * for merging with the existing column (no SQL-side merge here, unlike\n * Postgres) before passing them in: BEGIN EXCLUSIVE on the migration\n * transaction makes the read-then-merge-then-write sequence safe.\n */\n readonly invariants: readonly string[];\n}\n\nexport function buildWriteMarkerStatements(input: WriteMarkerInput): {\n readonly insert: SqlStatement;\n readonly update: SqlStatement;\n} {\n const params: readonly unknown[] = [\n input.space,\n input.storageHash,\n input.profileHash,\n jsonParam(input.contractJson),\n input.canonicalVersion ?? null,\n input.appTag ?? null,\n jsonParam(input.meta ?? {}),\n jsonParam(input.invariants),\n ];\n\n return {\n insert: {\n sql: `INSERT INTO _prisma_marker (\n space,\n core_hash,\n profile_hash,\n contract_json,\n canonical_version,\n updated_at,\n app_tag,\n meta,\n invariants\n ) VALUES (\n ?,\n ?,\n ?,\n ?,\n ?,\n datetime('now'),\n ?,\n ?,\n ?\n )`,\n params,\n },\n update: {\n sql: `UPDATE _prisma_marker SET\n core_hash = ?,\n profile_hash = ?,\n contract_json = ?,\n canonical_version = ?,\n updated_at = datetime('now'),\n app_tag = ?,\n meta = ?,\n invariants = ?\n WHERE space = ?`,\n params: [\n input.storageHash,\n input.profileHash,\n jsonParam(input.contractJson),\n input.canonicalVersion ?? null,\n input.appTag ?? null,\n jsonParam(input.meta ?? {}),\n jsonParam(input.invariants),\n input.space,\n ],\n },\n };\n}\n\nexport interface LedgerInsertInput {\n readonly originStorageHash?: string | null;\n readonly originProfileHash?: string | null;\n readonly destinationStorageHash: string;\n readonly destinationProfileHash?: string | null;\n readonly contractJsonBefore?: unknown;\n readonly contractJsonAfter?: unknown;\n readonly operations: unknown;\n}\n\nexport function buildLedgerInsertStatement(input: LedgerInsertInput): SqlStatement {\n return {\n sql: `INSERT INTO _prisma_ledger (\n origin_core_hash,\n origin_profile_hash,\n destination_core_hash,\n destination_profile_hash,\n contract_json_before,\n contract_json_after,\n operations\n ) VALUES (\n ?,\n ?,\n ?,\n ?,\n ?,\n ?,\n ?\n )`,\n params: [\n input.originStorageHash ?? null,\n input.originProfileHash ?? null,\n input.destinationStorageHash,\n input.destinationProfileHash ?? null,\n jsonParam(input.contractJsonBefore),\n jsonParam(input.contractJsonAfter),\n jsonParam(input.operations),\n ],\n };\n}\n\nfunction jsonParam(value: unknown): string {\n return JSON.stringify(value ?? null);\n}\n"],"mappings":";;AASA,MAAa,oBAAoB;AACjC,MAAa,oBAAoB;;;;;AAMjC,MAAa,sBAA2C,IAAI,IAAI,CAC9D,mBACA,iBACF,CAAC;;;;;;;;;;AAWD,MAAa,6BAA2C;CACtD,KAAK;+CACwCA,eAAa;;;;;;;;;;CAU1D,QAAQ,CAAC;AACX;AAEA,MAAa,6BAA2C;CACtD,KAAK;;;;;;;;;;;CAWL,QAAQ,CAAC;AACX;AAEA,SAAgB,oBAAoB,OAA6B;CAC/D,OAAO;EACL,KAAK;;;;;;;;;;;EAWL,QAAQ,CAAC,KAAK;CAChB;AACF;AA4BA,SAAgB,2BAA2B,OAGzC;CAYA,OAAO;EACL,QAAQ;GACN,KAAK;;;;;;;;;;;;;;;;;;;;;GAqBL,QAAA;IAjCF,MAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU,MAAM,YAAY;IAC5B,MAAM,oBAAoB;IAC1B,MAAM,UAAU;IAChB,UAAU,MAAM,QAAQ,CAAC,CAAC;IAC1B,UAAU,MAAM,UAAU;GA0BnB;EACP;EACA,QAAQ;GACN,KAAK;;;;;;;;;;GAUL,QAAQ;IACN,MAAM;IACN,MAAM;IACN,UAAU,MAAM,YAAY;IAC5B,MAAM,oBAAoB;IAC1B,MAAM,UAAU;IAChB,UAAU,MAAM,QAAQ,CAAC,CAAC;IAC1B,UAAU,MAAM,UAAU;IAC1B,MAAM;GACR;EACF;CACF;AACF;AAYA,SAAgB,2BAA2B,OAAwC;CACjF,OAAO;EACL,KAAK;;;;;;;;;;;;;;;;;EAiBL,QAAQ;GACN,MAAM,qBAAqB;GAC3B,MAAM,qBAAqB;GAC3B,MAAM;GACN,MAAM,0BAA0B;GAChC,UAAU,MAAM,kBAAkB;GAClC,UAAU,MAAM,iBAAiB;GACjC,UAAU,MAAM,UAAU;EAC5B;CACF;AACF;AAEA,SAAS,UAAU,OAAwB;CACzC,OAAO,KAAK,UAAU,SAAS,IAAI;AACrC"}
@@ -1,68 +0,0 @@
1
- import { APP_SPACE_ID } from "@prisma-next/framework-components/control";
2
-
3
- //#region src/core/migrations/statement-builders.d.ts
4
- interface SqlStatement {
5
- readonly sql: string;
6
- readonly params: readonly unknown[];
7
- }
8
- declare const MARKER_TABLE_NAME = "_prisma_marker";
9
- declare const LEDGER_TABLE_NAME = "_prisma_ledger";
10
- /**
11
- * Control tables the runner creates/manages. The planner must not drop these
12
- * when reconciling "extra" tables against the contract.
13
- */
14
- declare const CONTROL_TABLE_NAMES: ReadonlySet<string>;
15
- /**
16
- * Schema for `_prisma_marker`. The `space TEXT PRIMARY KEY` shape
17
- * supports one row per loaded contract space (`'app'`,
18
- * `'<extension-id>'`, …); brand-new databases create this shape
19
- * directly. The migration runner detects pre-1.0 single-row markers
20
- * (no `space` column) at boot and fails with a structured
21
- * `LEGACY_MARKER_SHAPE` error rather than auto-rebuilding the table —
22
- * see `specs/framework-mechanism.spec.md § 2`.
23
- */
24
- declare const ensureMarkerTableStatement: SqlStatement;
25
- declare const ensureLedgerTableStatement: SqlStatement;
26
- declare function readMarkerStatement(space: string): SqlStatement;
27
- interface WriteMarkerInput {
28
- /**
29
- * Logical space identifier for this marker row. Required at every
30
- * call site so the type system surfaces every place that needs to
31
- * thread the value (rather than letting an `?? APP_SPACE_ID`
32
- * fall-through silently collapse per-space markers onto the
33
- * `'app'` row). App-plan callers pass {@link APP_SPACE_ID}
34
- * (`'app'`); per-extension callers pass the extension's space id.
35
- */
36
- readonly space: string;
37
- readonly storageHash: string;
38
- readonly profileHash: string;
39
- readonly contractJson?: unknown;
40
- readonly canonicalVersion?: number | null;
41
- readonly appTag?: string | null;
42
- readonly meta?: Record<string, unknown>;
43
- /**
44
- * Invariants to write into `marker.invariants`. Stored as a JSON-encoded
45
- * TEXT array — SQLite has no native array type. The runner is responsible
46
- * for merging with the existing column (no SQL-side merge here, unlike
47
- * Postgres) before passing them in: BEGIN EXCLUSIVE on the migration
48
- * transaction makes the read-then-merge-then-write sequence safe.
49
- */
50
- readonly invariants: readonly string[];
51
- }
52
- declare function buildWriteMarkerStatements(input: WriteMarkerInput): {
53
- readonly insert: SqlStatement;
54
- readonly update: SqlStatement;
55
- };
56
- interface LedgerInsertInput {
57
- readonly originStorageHash?: string | null;
58
- readonly originProfileHash?: string | null;
59
- readonly destinationStorageHash: string;
60
- readonly destinationProfileHash?: string | null;
61
- readonly contractJsonBefore?: unknown;
62
- readonly contractJsonAfter?: unknown;
63
- readonly operations: unknown;
64
- }
65
- declare function buildLedgerInsertStatement(input: LedgerInsertInput): SqlStatement;
66
- //#endregion
67
- export { APP_SPACE_ID, CONTROL_TABLE_NAMES, LEDGER_TABLE_NAME, MARKER_TABLE_NAME, type SqlStatement, buildLedgerInsertStatement, buildWriteMarkerStatements, ensureLedgerTableStatement, ensureMarkerTableStatement, readMarkerStatement };
68
- //# sourceMappingURL=statement-builders.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"statement-builders.d.mts","names":[],"sources":["../src/core/migrations/statement-builders.ts"],"mappings":";;;UAIiB,YAAA;EAAA,SACN,GAAA;EAAA,SACA,MAAM;AAAA;AAAA,cAGJ,iBAAA;AAAA,cACA,iBAAA;AADb;;;;AAAA,cAOa,mBAAA,EAAqB,WAAW;AAN7C;;;;AAA8B;AAM9B;;;;AANA,cAoBa,0BAAA,EAA4B,YAaxC;AAAA,cAEY,0BAAA,EAA4B,YAaxC;AAAA,iBAEe,mBAAA,CAAoB,KAAA,WAAgB,YAAY;AAAA,UAiB/C,gBAAA;EAlChB;AAAA;AAED;;;;AAaC;AAED;EAjBC,SA2CU,KAAA;EAAA,SACA,WAAA;EAAA,SACA,WAAA;EAAA,SACA,YAAA;EAAA,SACA,gBAAA;EAAA,SACA,MAAA;EAAA,SACA,IAAA,GAAO,MAAM;EAAA;;;;;;;EAAA,SAQb,UAAA;AAAA;AAAA,iBAGK,0BAAA,CAA2B,KAAA,EAAO,gBAAA;EAAA,SACvC,MAAA,EAAQ,YAAA;EAAA,SACR,MAAA,EAAQ,YAAA;AAAA;AAAA,UA+DF,iBAAA;EAAA,SACN,iBAAA;EAAA,SACA,iBAAA;EAAA,SACA,sBAAA;EAAA,SACA,sBAAA;EAAA,SACA,kBAAA;EAAA,SACA,iBAAA;EAAA,SACA,UAAA;AAAA;AAAA,iBAGK,0BAAA,CAA2B,KAAA,EAAO,iBAAA,GAAoB,YAAY"}
@@ -1,2 +0,0 @@
1
- import { a as buildLedgerInsertStatement, c as ensureMarkerTableStatement, i as MARKER_TABLE_NAME, l as readMarkerStatement, n as CONTROL_TABLE_NAMES, o as buildWriteMarkerStatements, r as LEDGER_TABLE_NAME, s as ensureLedgerTableStatement, t as APP_SPACE_ID } from "./statement-builders-BiRmeyJM.mjs";
2
- export { APP_SPACE_ID, CONTROL_TABLE_NAMES, LEDGER_TABLE_NAME, MARKER_TABLE_NAME, buildLedgerInsertStatement, buildWriteMarkerStatements, ensureLedgerTableStatement, ensureMarkerTableStatement, readMarkerStatement };
@@ -1,212 +0,0 @@
1
- import { APP_SPACE_ID } from '@prisma-next/framework-components/control';
2
-
3
- export { APP_SPACE_ID };
4
-
5
- export interface SqlStatement {
6
- readonly sql: string;
7
- readonly params: readonly unknown[];
8
- }
9
-
10
- export const MARKER_TABLE_NAME = '_prisma_marker';
11
- export const LEDGER_TABLE_NAME = '_prisma_ledger';
12
-
13
- /**
14
- * Control tables the runner creates/manages. The planner must not drop these
15
- * when reconciling "extra" tables against the contract.
16
- */
17
- export const CONTROL_TABLE_NAMES: ReadonlySet<string> = new Set([
18
- MARKER_TABLE_NAME,
19
- LEDGER_TABLE_NAME,
20
- ]);
21
-
22
- /**
23
- * Schema for `_prisma_marker`. The `space TEXT PRIMARY KEY` shape
24
- * supports one row per loaded contract space (`'app'`,
25
- * `'<extension-id>'`, …); brand-new databases create this shape
26
- * directly. The migration runner detects pre-1.0 single-row markers
27
- * (no `space` column) at boot and fails with a structured
28
- * `LEGACY_MARKER_SHAPE` error rather than auto-rebuilding the table —
29
- * see `specs/framework-mechanism.spec.md § 2`.
30
- */
31
- export const ensureMarkerTableStatement: SqlStatement = {
32
- sql: `CREATE TABLE IF NOT EXISTS _prisma_marker (
33
- space TEXT NOT NULL PRIMARY KEY DEFAULT '${APP_SPACE_ID}',
34
- core_hash TEXT NOT NULL,
35
- profile_hash TEXT NOT NULL,
36
- contract_json TEXT,
37
- canonical_version INTEGER,
38
- updated_at TEXT NOT NULL DEFAULT (datetime('now')),
39
- app_tag TEXT,
40
- meta TEXT NOT NULL DEFAULT '{}',
41
- invariants TEXT NOT NULL DEFAULT '[]'
42
- )`,
43
- params: [],
44
- };
45
-
46
- export const ensureLedgerTableStatement: SqlStatement = {
47
- sql: `CREATE TABLE IF NOT EXISTS _prisma_ledger (
48
- id INTEGER PRIMARY KEY AUTOINCREMENT,
49
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
50
- origin_core_hash TEXT,
51
- origin_profile_hash TEXT,
52
- destination_core_hash TEXT NOT NULL,
53
- destination_profile_hash TEXT,
54
- contract_json_before TEXT,
55
- contract_json_after TEXT,
56
- operations TEXT NOT NULL
57
- )`,
58
- params: [],
59
- };
60
-
61
- export function readMarkerStatement(space: string): SqlStatement {
62
- return {
63
- sql: `SELECT
64
- core_hash,
65
- profile_hash,
66
- contract_json,
67
- canonical_version,
68
- updated_at,
69
- app_tag,
70
- meta,
71
- invariants
72
- FROM _prisma_marker
73
- WHERE space = ?`,
74
- params: [space],
75
- };
76
- }
77
-
78
- export interface WriteMarkerInput {
79
- /**
80
- * Logical space identifier for this marker row. Required at every
81
- * call site so the type system surfaces every place that needs to
82
- * thread the value (rather than letting an `?? APP_SPACE_ID`
83
- * fall-through silently collapse per-space markers onto the
84
- * `'app'` row). App-plan callers pass {@link APP_SPACE_ID}
85
- * (`'app'`); per-extension callers pass the extension's space id.
86
- */
87
- readonly space: string;
88
- readonly storageHash: string;
89
- readonly profileHash: string;
90
- readonly contractJson?: unknown;
91
- readonly canonicalVersion?: number | null;
92
- readonly appTag?: string | null;
93
- readonly meta?: Record<string, unknown>;
94
- /**
95
- * Invariants to write into `marker.invariants`. Stored as a JSON-encoded
96
- * TEXT array — SQLite has no native array type. The runner is responsible
97
- * for merging with the existing column (no SQL-side merge here, unlike
98
- * Postgres) before passing them in: BEGIN EXCLUSIVE on the migration
99
- * transaction makes the read-then-merge-then-write sequence safe.
100
- */
101
- readonly invariants: readonly string[];
102
- }
103
-
104
- export function buildWriteMarkerStatements(input: WriteMarkerInput): {
105
- readonly insert: SqlStatement;
106
- readonly update: SqlStatement;
107
- } {
108
- const params: readonly unknown[] = [
109
- input.space,
110
- input.storageHash,
111
- input.profileHash,
112
- jsonParam(input.contractJson),
113
- input.canonicalVersion ?? null,
114
- input.appTag ?? null,
115
- jsonParam(input.meta ?? {}),
116
- jsonParam(input.invariants),
117
- ];
118
-
119
- return {
120
- insert: {
121
- sql: `INSERT INTO _prisma_marker (
122
- space,
123
- core_hash,
124
- profile_hash,
125
- contract_json,
126
- canonical_version,
127
- updated_at,
128
- app_tag,
129
- meta,
130
- invariants
131
- ) VALUES (
132
- ?,
133
- ?,
134
- ?,
135
- ?,
136
- ?,
137
- datetime('now'),
138
- ?,
139
- ?,
140
- ?
141
- )`,
142
- params,
143
- },
144
- update: {
145
- sql: `UPDATE _prisma_marker SET
146
- core_hash = ?,
147
- profile_hash = ?,
148
- contract_json = ?,
149
- canonical_version = ?,
150
- updated_at = datetime('now'),
151
- app_tag = ?,
152
- meta = ?,
153
- invariants = ?
154
- WHERE space = ?`,
155
- params: [
156
- input.storageHash,
157
- input.profileHash,
158
- jsonParam(input.contractJson),
159
- input.canonicalVersion ?? null,
160
- input.appTag ?? null,
161
- jsonParam(input.meta ?? {}),
162
- jsonParam(input.invariants),
163
- input.space,
164
- ],
165
- },
166
- };
167
- }
168
-
169
- export interface LedgerInsertInput {
170
- readonly originStorageHash?: string | null;
171
- readonly originProfileHash?: string | null;
172
- readonly destinationStorageHash: string;
173
- readonly destinationProfileHash?: string | null;
174
- readonly contractJsonBefore?: unknown;
175
- readonly contractJsonAfter?: unknown;
176
- readonly operations: unknown;
177
- }
178
-
179
- export function buildLedgerInsertStatement(input: LedgerInsertInput): SqlStatement {
180
- return {
181
- sql: `INSERT INTO _prisma_ledger (
182
- origin_core_hash,
183
- origin_profile_hash,
184
- destination_core_hash,
185
- destination_profile_hash,
186
- contract_json_before,
187
- contract_json_after,
188
- operations
189
- ) VALUES (
190
- ?,
191
- ?,
192
- ?,
193
- ?,
194
- ?,
195
- ?,
196
- ?
197
- )`,
198
- params: [
199
- input.originStorageHash ?? null,
200
- input.originProfileHash ?? null,
201
- input.destinationStorageHash,
202
- input.destinationProfileHash ?? null,
203
- jsonParam(input.contractJsonBefore),
204
- jsonParam(input.contractJsonAfter),
205
- jsonParam(input.operations),
206
- ],
207
- };
208
- }
209
-
210
- function jsonParam(value: unknown): string {
211
- return JSON.stringify(value ?? null);
212
- }
@@ -1,12 +0,0 @@
1
- export {
2
- APP_SPACE_ID,
3
- buildLedgerInsertStatement,
4
- buildWriteMarkerStatements,
5
- CONTROL_TABLE_NAMES,
6
- ensureLedgerTableStatement,
7
- ensureMarkerTableStatement,
8
- LEDGER_TABLE_NAME,
9
- MARKER_TABLE_NAME,
10
- readMarkerStatement,
11
- type SqlStatement,
12
- } from '../core/migrations/statement-builders';