@prisma-next/target-postgres 0.5.0-dev.66 → 0.5.0-dev.68

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 (152) hide show
  1. package/dist/{codec-ids-ckQX9Kcg.mjs → codec-ids-C5qzBqus.mjs} +2 -3
  2. package/dist/{codec-ids-ckQX9Kcg.mjs.map → codec-ids-C5qzBqus.mjs.map} +1 -1
  3. package/dist/{codec-ids-B-wNPs-9.d.mts → codec-ids-CplrEfmx.d.mts} +1 -1
  4. package/dist/codec-ids-CplrEfmx.d.mts.map +1 -0
  5. package/dist/codec-ids.d.mts +1 -1
  6. package/dist/codec-ids.mjs +2 -3
  7. package/dist/{codec-types-Br-rrBBQ.d.mts → codec-types-lrsb3N07.d.mts} +21 -22
  8. package/dist/codec-types-lrsb3N07.d.mts.map +1 -0
  9. package/dist/codec-types.d.mts +1 -3
  10. package/dist/codec-types.mjs +1 -1
  11. package/dist/{codecs-DZUnQrrl.d.mts → codecs-Cue97Xqf.d.mts} +35 -36
  12. package/dist/codecs-Cue97Xqf.d.mts.map +1 -0
  13. package/dist/codecs.d.mts +1 -3
  14. package/dist/codecs.d.mts.map +1 -1
  15. package/dist/codecs.mjs +11 -15
  16. package/dist/codecs.mjs.map +1 -1
  17. package/dist/control.d.mts +1 -1
  18. package/dist/control.d.mts.map +1 -1
  19. package/dist/control.mjs +107 -49
  20. package/dist/control.mjs.map +1 -1
  21. package/dist/{data-transform-CR_9PvW9.mjs → data-transform-DKWXdHuZ.mjs} +2 -3
  22. package/dist/data-transform-DKWXdHuZ.mjs.map +1 -0
  23. package/dist/{data-transform-T71mQkVW.d.mts → data-transform-bIeAcZIJ.d.mts} +2 -3
  24. package/dist/data-transform-bIeAcZIJ.d.mts.map +1 -0
  25. package/dist/data-transform.d.mts +1 -1
  26. package/dist/data-transform.mjs +2 -3
  27. package/dist/{default-normalizer-D4RoM0i6.mjs → default-normalizer-C8XyZj85.mjs} +2 -2
  28. package/dist/{default-normalizer-D4RoM0i6.mjs.map → default-normalizer-C8XyZj85.mjs.map} +1 -1
  29. package/dist/default-normalizer.d.mts +0 -1
  30. package/dist/default-normalizer.d.mts.map +1 -1
  31. package/dist/default-normalizer.mjs +2 -3
  32. package/dist/descriptor-meta-Dde_BS3K.mjs +99 -0
  33. package/dist/descriptor-meta-Dde_BS3K.mjs.map +1 -0
  34. package/dist/{errors-BT_Duyj-.mjs → errors-Chm2bKcS.mjs} +2 -3
  35. package/dist/{errors-BT_Duyj-.mjs.map → errors-Chm2bKcS.mjs.map} +1 -1
  36. package/dist/errors.d.mts +0 -1
  37. package/dist/errors.d.mts.map +1 -1
  38. package/dist/errors.mjs +2 -3
  39. package/dist/{issue-planner-DooWabc2.mjs → issue-planner-B10B70JF.mjs} +8 -12
  40. package/dist/issue-planner-B10B70JF.mjs.map +1 -0
  41. package/dist/issue-planner.d.mts +1 -3
  42. package/dist/issue-planner.d.mts.map +1 -1
  43. package/dist/issue-planner.mjs +2 -3
  44. package/dist/migration.d.mts +3 -3
  45. package/dist/migration.d.mts.map +1 -1
  46. package/dist/migration.mjs +4 -5
  47. package/dist/migration.mjs.map +1 -1
  48. package/dist/{native-type-normalizer-i4IFPL5F.mjs → native-type-normalizer-Cry4QoLf.mjs} +2 -2
  49. package/dist/native-type-normalizer-Cry4QoLf.mjs.map +1 -0
  50. package/dist/native-type-normalizer.d.mts.map +1 -1
  51. package/dist/native-type-normalizer.mjs +2 -3
  52. package/dist/{op-factory-call-SFMIf-Cz.d.mts → op-factory-call-CW8pzxmB.d.mts} +3 -4
  53. package/dist/op-factory-call-CW8pzxmB.d.mts.map +1 -0
  54. package/dist/{op-factory-call-Bvw39XKU.mjs → op-factory-call-Cq8s4Fz1.mjs} +3 -4
  55. package/dist/{op-factory-call-Bvw39XKU.mjs.map → op-factory-call-Cq8s4Fz1.mjs.map} +1 -1
  56. package/dist/op-factory-call.d.mts +1 -2
  57. package/dist/op-factory-call.mjs +2 -3
  58. package/dist/pack.d.mts +1 -3
  59. package/dist/pack.d.mts.map +1 -1
  60. package/dist/pack.mjs +2 -3
  61. package/dist/{planner-Cgr3Ttsi.mjs → planner-JmqeNfGa.mjs} +16 -9
  62. package/dist/planner-JmqeNfGa.mjs.map +1 -0
  63. package/dist/{planner-ddl-builders-B6VK92UF.mjs → planner-ddl-builders-CLB7Umhh.mjs} +4 -5
  64. package/dist/planner-ddl-builders-CLB7Umhh.mjs.map +1 -0
  65. package/dist/planner-ddl-builders.d.mts +1 -1
  66. package/dist/planner-ddl-builders.d.mts.map +1 -1
  67. package/dist/planner-ddl-builders.mjs +2 -3
  68. package/dist/{planner-identity-values-CC5fa5D9.mjs → planner-identity-values-DTx0gePL.mjs} +2 -3
  69. package/dist/{planner-identity-values-CC5fa5D9.mjs.map → planner-identity-values-DTx0gePL.mjs.map} +1 -1
  70. package/dist/planner-identity-values.d.mts +0 -1
  71. package/dist/planner-identity-values.d.mts.map +1 -1
  72. package/dist/planner-identity-values.mjs +2 -3
  73. package/dist/{planner-produced-postgres-migration-YjS7RsWc.mjs → planner-produced-postgres-migration-Br3NgwpH.mjs} +5 -6
  74. package/dist/{planner-produced-postgres-migration-YjS7RsWc.mjs.map → planner-produced-postgres-migration-Br3NgwpH.mjs.map} +1 -1
  75. package/dist/{planner-produced-postgres-migration-CEI1d_Rq.d.mts → planner-produced-postgres-migration-D7Pe160c.d.mts} +4 -5
  76. package/dist/planner-produced-postgres-migration-D7Pe160c.d.mts.map +1 -0
  77. package/dist/planner-produced-postgres-migration.d.mts +1 -5
  78. package/dist/planner-produced-postgres-migration.mjs +2 -3
  79. package/dist/{planner-schema-lookup-B3talum5.mjs → planner-schema-lookup-B1ags8ys.mjs} +2 -2
  80. package/dist/{planner-schema-lookup-B3talum5.mjs.map → planner-schema-lookup-B1ags8ys.mjs.map} +1 -1
  81. package/dist/planner-schema-lookup.d.mts +0 -1
  82. package/dist/planner-schema-lookup.d.mts.map +1 -1
  83. package/dist/planner-schema-lookup.mjs +2 -3
  84. package/dist/{planner-sql-checks-uDnwA68k.mjs → planner-sql-checks-DwZvGlV4.mjs} +3 -5
  85. package/dist/planner-sql-checks-DwZvGlV4.mjs.map +1 -0
  86. package/dist/planner-sql-checks.d.mts.map +1 -1
  87. package/dist/planner-sql-checks.mjs +2 -3
  88. package/dist/{planner-target-details-COAiKZjW.d.mts → planner-target-details-bVVcanWh.d.mts} +1 -1
  89. package/dist/planner-target-details-bVVcanWh.d.mts.map +1 -0
  90. package/dist/planner-target-details.d.mts +1 -1
  91. package/dist/planner-target-details.mjs +1 -1
  92. package/dist/planner.d.mts +1 -5
  93. package/dist/planner.d.mts.map +1 -1
  94. package/dist/planner.mjs +2 -4
  95. package/dist/{postgres-migration-BAgHXrjO.mjs → postgres-migration-Bkv140RW.mjs} +4 -5
  96. package/dist/{postgres-migration-BAgHXrjO.mjs.map → postgres-migration-Bkv140RW.mjs.map} +1 -1
  97. package/dist/{postgres-migration-RXzk7OX7.d.mts → postgres-migration-UkcHfZAA.d.mts} +3 -4
  98. package/dist/postgres-migration-UkcHfZAA.d.mts.map +1 -0
  99. package/dist/{render-ops-DddkYOIB.mjs → render-ops-DXxV-PbF.mjs} +2 -2
  100. package/dist/{render-ops-DddkYOIB.mjs.map → render-ops-DXxV-PbF.mjs.map} +1 -1
  101. package/dist/render-ops.d.mts +2 -3
  102. package/dist/render-ops.d.mts.map +1 -1
  103. package/dist/render-ops.mjs +2 -3
  104. package/dist/{render-typescript-0EtwW-Ip.mjs → render-typescript-pyz96rAY.mjs} +2 -3
  105. package/dist/render-typescript-pyz96rAY.mjs.map +1 -0
  106. package/dist/render-typescript.d.mts +1 -3
  107. package/dist/render-typescript.d.mts.map +1 -1
  108. package/dist/render-typescript.mjs +2 -3
  109. package/dist/runtime.d.mts.map +1 -1
  110. package/dist/runtime.mjs +3 -5
  111. package/dist/runtime.mjs.map +1 -1
  112. package/dist/{shared-DSVRy4AX.d.mts → shared-MpwjwAjM.d.mts} +2 -2
  113. package/dist/shared-MpwjwAjM.d.mts.map +1 -0
  114. package/dist/{sql-utils-C9dyHV0x.mjs → sql-utils-CggjWNij.mjs} +4 -2
  115. package/dist/sql-utils-CggjWNij.mjs.map +1 -0
  116. package/dist/sql-utils.d.mts.map +1 -1
  117. package/dist/sql-utils.mjs +2 -3
  118. package/dist/{statement-builders-sOpc5QM-.mjs → statement-builders-BT889jV0.mjs} +5 -6
  119. package/dist/statement-builders-BT889jV0.mjs.map +1 -0
  120. package/dist/statement-builders.d.mts.map +1 -1
  121. package/dist/statement-builders.mjs +2 -3
  122. package/dist/{tables-CnvPb0Iz.mjs → tables-Ej122-iI.mjs} +4 -11
  123. package/dist/tables-Ej122-iI.mjs.map +1 -0
  124. package/dist/{types-DWZq_XTl.d.mts → types-CTqpysRY.d.mts} +1 -1
  125. package/dist/types-CTqpysRY.d.mts.map +1 -0
  126. package/dist/types.d.mts +1 -1
  127. package/dist/types.mjs +1 -1
  128. package/package.json +19 -19
  129. package/src/core/migrations/planner.ts +30 -2
  130. package/src/core/migrations/runner.ts +126 -82
  131. package/dist/codec-ids-B-wNPs-9.d.mts.map +0 -1
  132. package/dist/codec-types-Br-rrBBQ.d.mts.map +0 -1
  133. package/dist/codecs-DZUnQrrl.d.mts.map +0 -1
  134. package/dist/data-transform-CR_9PvW9.mjs.map +0 -1
  135. package/dist/data-transform-T71mQkVW.d.mts.map +0 -1
  136. package/dist/descriptor-meta-B9JFfKCb.mjs +0 -115
  137. package/dist/descriptor-meta-B9JFfKCb.mjs.map +0 -1
  138. package/dist/issue-planner-DooWabc2.mjs.map +0 -1
  139. package/dist/native-type-normalizer-i4IFPL5F.mjs.map +0 -1
  140. package/dist/op-factory-call-SFMIf-Cz.d.mts.map +0 -1
  141. package/dist/planner-Cgr3Ttsi.mjs.map +0 -1
  142. package/dist/planner-ddl-builders-B6VK92UF.mjs.map +0 -1
  143. package/dist/planner-produced-postgres-migration-CEI1d_Rq.d.mts.map +0 -1
  144. package/dist/planner-sql-checks-uDnwA68k.mjs.map +0 -1
  145. package/dist/planner-target-details-COAiKZjW.d.mts.map +0 -1
  146. package/dist/postgres-migration-RXzk7OX7.d.mts.map +0 -1
  147. package/dist/render-typescript-0EtwW-Ip.mjs.map +0 -1
  148. package/dist/shared-DSVRy4AX.d.mts.map +0 -1
  149. package/dist/sql-utils-C9dyHV0x.mjs.map +0 -1
  150. package/dist/statement-builders-sOpc5QM-.mjs.map +0 -1
  151. package/dist/tables-CnvPb0Iz.mjs.map +0 -1
  152. package/dist/types-DWZq_XTl.d.mts.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import type { ContractMarkerRecord } from '@prisma-next/contract/types';
2
2
  import type {
3
3
  MigrationOperationPolicy,
4
+ MultiSpaceRunnerResult,
4
5
  SqlControlFamilyInstance,
5
6
  SqlMigrationPlanContractInfo,
6
7
  SqlMigrationPlanOperation,
@@ -9,13 +10,16 @@ import type {
9
10
  SqlMigrationRunnerExecuteOptions,
10
11
  SqlMigrationRunnerFailure,
11
12
  SqlMigrationRunnerResult,
13
+ SqlMigrationRunnerSuccessValue,
12
14
  } from '@prisma-next/family-sql/control';
13
15
  import { runnerFailure, runnerSuccess } from '@prisma-next/family-sql/control';
14
16
  import { verifySqlSchema } from '@prisma-next/family-sql/schema-verify';
17
+ import type { ControlDriverInstance } from '@prisma-next/framework-components/control';
18
+ import { APP_SPACE_ID } from '@prisma-next/framework-components/control';
15
19
  import { SqlQueryError } from '@prisma-next/sql-errors';
16
20
  import { ifDefined } from '@prisma-next/utils/defined';
17
21
  import type { Result } from '@prisma-next/utils/result';
18
- import { ok, okVoid } from '@prisma-next/utils/result';
22
+ import { notOk, ok, okVoid } from '@prisma-next/utils/result';
19
23
  import { parsePostgresDefault } from '../default-normalizer';
20
24
  import { normalizeSchemaNativeType } from '../native-type-normalizer';
21
25
  import type { PostgresPlanTargetDetails } from './planner-target-details';
@@ -82,72 +86,98 @@ class PostgresMigrationRunner implements SqlMigrationRunner<PostgresPlanTargetDe
82
86
  async execute(
83
87
  options: SqlMigrationRunnerExecuteOptions<PostgresPlanTargetDetails>,
84
88
  ): Promise<SqlMigrationRunnerResult> {
85
- const schema = options.schemaName ?? this.config.defaultSchema;
86
89
  const driver = options.driver;
87
- const lockKey = `${LOCK_DOMAIN}:${schema}`;
88
90
 
89
- // Static checks - fail fast before transaction
91
+ // Static checks fail fast before any transaction work — no point
92
+ // burning a BEGIN/ROLLBACK round-trip on a destination-contract
93
+ // mismatch the caller can fix locally.
90
94
  const destinationCheck = this.ensurePlanMatchesDestinationContract(
91
95
  options.plan.destination,
92
96
  options.destinationContract,
93
97
  );
94
- if (!destinationCheck.ok) {
95
- return destinationCheck;
96
- }
98
+ if (!destinationCheck.ok) return destinationCheck;
97
99
 
98
100
  const policyCheck = this.enforcePolicyCompatibility(options.policy, options.plan.operations);
99
- if (!policyCheck.ok) {
100
- return policyCheck;
101
- }
101
+ if (!policyCheck.ok) return policyCheck;
102
102
 
103
- // Begin transaction for DB operations
104
103
  await this.beginTransaction(driver);
105
104
  let committed = false;
106
105
  try {
107
- await this.acquireLock(driver, lockKey);
108
- const ensureResult = await this.ensureControlTables(driver);
109
- if (!ensureResult.ok) {
110
- return ensureResult;
106
+ const result = await this.executeOnConnection(options);
107
+ if (!result.ok) {
108
+ return result;
111
109
  }
112
- const existingMarker = await this.family.readMarker({
113
- driver,
114
- space: options.plan.spaceId,
115
- });
116
-
117
- // Validate plan origin matches existing marker (needs marker from DB)
118
- const markerCheck = this.ensureMarkerCompatibility(existingMarker, options.plan);
119
- if (!markerCheck.ok) {
120
- return markerCheck;
110
+ await this.commitTransaction(driver);
111
+ committed = true;
112
+ return result;
113
+ } finally {
114
+ if (!committed) {
115
+ await this.rollbackTransaction(driver);
121
116
  }
117
+ }
118
+ }
122
119
 
123
- // db update (origin: null) always applies; migration-apply (origin set,
124
- // origin !== destination) skips if marker already matches destination.
125
- // Self-edges (origin === destination) intentionally bypass the skip:
126
- // the migration is data-only, and the data transform's own check
127
- // decides whether `run` fires.
128
- const markerAtDestination = this.markerMatchesDestination(existingMarker, options.plan);
129
- const isSelfEdge = options.plan.origin?.storageHash === options.plan.destination.storageHash;
130
- const skipOperations = markerAtDestination && options.plan.origin != null && !isSelfEdge;
131
- let applyValue: ApplyPlanSuccessValue;
132
-
133
- if (skipOperations) {
134
- applyValue = { operationsExecuted: 0, executedOperations: [] };
135
- } else {
136
- const applyResult = await this.applyPlan(driver, options);
137
- if (!applyResult.ok) {
138
- return applyResult;
139
- }
140
- applyValue = applyResult.value;
141
- }
120
+ /**
121
+ * Body of the migration runner without transaction management. The
122
+ * caller (single-space `execute(...)` above, or the multi-space
123
+ * outer-tx orchestrator at the SQL family level) owns the
124
+ * `BEGIN`/`COMMIT`/`ROLLBACK` lifecycle.
125
+ */
126
+ async executeOnConnection(
127
+ options: SqlMigrationRunnerExecuteOptions<PostgresPlanTargetDetails>,
128
+ ): Promise<SqlMigrationRunnerResult> {
129
+ const schema = options.schemaName ?? this.config.defaultSchema;
130
+ const driver = options.driver;
131
+ if (options.space !== undefined && options.space !== options.plan.spaceId) {
132
+ throw new Error(
133
+ `SqlMigrationRunner: options.space (${options.space}) does not match plan.spaceId (${options.plan.spaceId})`,
134
+ );
135
+ }
136
+ const space = options.plan.spaceId;
137
+ const lockKey = `${LOCK_DOMAIN}:${schema}:${space}`;
138
+
139
+ // Static checks (idempotent — safe to run again when the caller is
140
+ // `execute(...)` because the cost is a single object comparison).
141
+ const destinationCheck = this.ensurePlanMatchesDestinationContract(
142
+ options.plan.destination,
143
+ options.destinationContract,
144
+ );
145
+ if (!destinationCheck.ok) return destinationCheck;
146
+
147
+ const policyCheck = this.enforcePolicyCompatibility(options.policy, options.plan.operations);
148
+ if (!policyCheck.ok) return policyCheck;
142
149
 
143
- // Verify resulting schema matches contract
144
- // Step 1: Introspect live schema (DB I/O, family-owned)
150
+ await this.acquireLock(driver, lockKey);
151
+ const ensureResult = await this.ensureControlTables(driver);
152
+ if (!ensureResult.ok) return ensureResult;
153
+ const existingMarker = await this.family.readMarker({ driver, space });
154
+
155
+ const markerCheck = this.ensureMarkerCompatibility(existingMarker, options.plan);
156
+ if (!markerCheck.ok) return markerCheck;
157
+
158
+ const markerAtDestination = this.markerMatchesDestination(existingMarker, options.plan);
159
+ const isSelfEdge = options.plan.origin?.storageHash === options.plan.destination.storageHash;
160
+ const skipOperations = markerAtDestination && options.plan.origin != null && !isSelfEdge;
161
+ let applyValue: ApplyPlanSuccessValue;
162
+
163
+ if (skipOperations) {
164
+ applyValue = { operationsExecuted: 0, executedOperations: [] };
165
+ } else {
166
+ const applyResult = await this.applyPlan(driver, options);
167
+ if (!applyResult.ok) return applyResult;
168
+ applyValue = applyResult.value;
169
+ }
170
+
171
+ // Schema verification on app-space only — extension spaces don't
172
+ // own user-facing tables in the live schema, and `verifySqlSchema`
173
+ // matches the destination contract against the database, which
174
+ // would flag every app-space table as "extra" when called against
175
+ // an extension contract.
176
+ if (space === APP_SPACE_ID) {
145
177
  const schemaIR = await this.family.introspect({
146
178
  driver,
147
179
  contract: options.destinationContract,
148
180
  });
149
-
150
- // Step 2: Pure verification (no DB I/O)
151
181
  const schemaVerifyResult = verifySqlSchema({
152
182
  contract: options.destinationContract,
153
183
  schema: schemaIR,
@@ -161,47 +191,60 @@ class PostgresMigrationRunner implements SqlMigrationRunner<PostgresPlanTargetDe
161
191
  if (!schemaVerifyResult.ok) {
162
192
  return runnerFailure('SCHEMA_VERIFY_FAILED', schemaVerifyResult.summary, {
163
193
  why: 'The resulting database schema does not satisfy the destination contract.',
164
- meta: {
165
- issues: schemaVerifyResult.schema.issues,
166
- },
194
+ meta: { issues: schemaVerifyResult.schema.issues },
167
195
  });
168
196
  }
197
+ }
169
198
 
170
- // Self-edge no-op detection: a self-edge migration whose ops all
171
- // self-skipped (every op pre-satisfied) and that brings no new
172
- // invariants produced no observable change. Skip the marker +
173
- // ledger writes so an idempotent re-apply of a self-edge data
174
- // transform doesn't churn updatedAt or pile up empty ledger
175
- // entries. With data transforms now flowing through the unified
176
- // op loop, a pre-satisfied DT lands in the
177
- // `postcheckAlreadySatisfied` skip path which does not increment
178
- // `operationsExecuted`, so the check below correctly distinguishes
179
- // "every op self-skipped" from "the plan had ops that ran". `db
180
- // update` no-ops still write a ledger entry as audit trail.
181
- const incomingInvariants = options.plan.providedInvariants ?? [];
182
- const existingInvariants = new Set(existingMarker?.invariants ?? []);
183
- const incomingIsSubsetOfExisting = incomingInvariants.every((id) =>
184
- existingInvariants.has(id),
185
- );
186
- const isSelfEdgeNoOp =
187
- isSelfEdge && applyValue.operationsExecuted === 0 && incomingIsSubsetOfExisting;
188
-
189
- if (!isSelfEdgeNoOp) {
190
- await this.upsertMarker(driver, options, existingMarker);
191
- await this.recordLedgerEntry(
192
- driver,
193
- options,
194
- existingMarker,
195
- applyValue.executedOperations,
196
- );
199
+ const incomingInvariants = options.plan.providedInvariants ?? [];
200
+ const existingInvariants = new Set(existingMarker?.invariants ?? []);
201
+ const incomingIsSubsetOfExisting = incomingInvariants.every((id) => existingInvariants.has(id));
202
+ const isSelfEdgeNoOp =
203
+ isSelfEdge && applyValue.operationsExecuted === 0 && incomingIsSubsetOfExisting;
204
+
205
+ if (!isSelfEdgeNoOp) {
206
+ await this.upsertMarker(driver, options, existingMarker, space);
207
+ await this.recordLedgerEntry(driver, options, existingMarker, applyValue.executedOperations);
208
+ }
209
+
210
+ return runnerSuccess({
211
+ operationsPlanned: options.plan.operations.length,
212
+ operationsExecuted: applyValue.operationsExecuted,
213
+ });
214
+ }
215
+
216
+ async executeAcrossSpaces(options: {
217
+ readonly driver: ControlDriverInstance<'sql', string>;
218
+ readonly perSpaceOptions: ReadonlyArray<
219
+ SqlMigrationRunnerExecuteOptions<PostgresPlanTargetDetails>
220
+ >;
221
+ }): Promise<MultiSpaceRunnerResult> {
222
+ const driver = options.driver;
223
+ const perSpaceOptions = options.perSpaceOptions;
224
+
225
+ if (perSpaceOptions.length === 0) {
226
+ return ok({ perSpaceResults: [] });
227
+ }
228
+
229
+ await this.beginTransaction(driver);
230
+ let committed = false;
231
+ try {
232
+ const perSpaceResults: Array<{
233
+ space: string;
234
+ value: SqlMigrationRunnerSuccessValue;
235
+ }> = [];
236
+ for (const spaceOptions of perSpaceOptions) {
237
+ const space = spaceOptions.space ?? spaceOptions.plan.spaceId;
238
+ const result = await this.executeOnConnection({ ...spaceOptions, driver, space });
239
+ if (!result.ok) {
240
+ return notOk({ ...result.failure, failingSpace: space });
241
+ }
242
+ perSpaceResults.push({ space, value: result.value });
197
243
  }
198
244
 
199
245
  await this.commitTransaction(driver);
200
246
  committed = true;
201
- return runnerSuccess({
202
- operationsPlanned: options.plan.operations.length,
203
- operationsExecuted: applyValue.operationsExecuted,
204
- });
247
+ return ok({ perSpaceResults });
205
248
  } finally {
206
249
  if (!committed) {
207
250
  await this.rollbackTransaction(driver);
@@ -590,10 +633,11 @@ class PostgresMigrationRunner implements SqlMigrationRunner<PostgresPlanTargetDe
590
633
  driver: SqlMigrationRunnerExecuteOptions<PostgresPlanTargetDetails>['driver'],
591
634
  options: SqlMigrationRunnerExecuteOptions<PostgresPlanTargetDetails>,
592
635
  existingMarker: ContractMarkerRecord | null,
636
+ space: string,
593
637
  ): Promise<void> {
594
638
  const incomingInvariants = options.plan.providedInvariants ?? [];
595
639
  const writeStatements = buildMergeMarkerStatements({
596
- space: options.plan.spaceId,
640
+ space,
597
641
  storageHash: options.plan.destination.storageHash,
598
642
  profileHash:
599
643
  options.plan.destination.profileHash ??
@@ -1 +0,0 @@
1
- {"version":3,"file":"codec-ids-B-wNPs-9.d.mts","names":[],"sources":["../src/core/codec-ids.ts"],"sourcesContent":[],"mappings":";;;cAQa;cACA;AADA,cAEA,gBAFuC,EAAA,WAAA;AACvC,cAEA,mBAFuC,EAAA,cAAA;AACvC,cAEA,eAFuC,EAAA,UAAA;AACvC,cAEA,gBAF6C,EAAA,WAAA;AAC7C,cAEA,gBAFqC,EAAA,WAAA;AACrC,cAEA,gBAFuC,EAAA,WAAA;AACvC,cAEA,iBAFuC,EAAA,YAAA;AACvC,cAEA,kBAFuC,EAAA,aAAA;AACvC,cAEA,kBAFyC,EAAA,aAAA;AACzC,cAEA,mBAF2C,EAAA,cAAA;AAC3C,cAEA,gBAF2C,EAAA,WAAA;AAC3C,cAEA,eAF6C,EAAA,UAAA;AAC7C,cAEA,kBAFuC,EAAA,aAAA;AACvC,cAEA,qBAFqC,EAAA,gBAAA;AACrC,cAEA,uBAF2C,EAAA,kBAAA;AAC3C,cAEA,gBAFiD,EAAA,WAAA;AACjD,cAEA,kBAFqD,EAAA,aAAA;AACrD,cAEA,oBAFuC,EAAA,eAAA;AACvC,cAEA,gBAF2C,EAAA,WAAA;AAC3C,cAEA,iBAF+C,EAAA,YAAA;AAC/C,cAEA,iBAFuC,EAAA,YAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"codec-types-Br-rrBBQ.d.mts","names":[],"sources":["../src/core/codec-type-map.ts","../src/exports/codec-types.ts"],"sourcesContent":[],"mappings":";;;;;;;cA4Ca;iBA8BH,qCAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,SAAA,IAAO,kBAAA;EAA6B,SAAA,KAAA,mBAAA;CAA2B;AAAE,KAAjE,OAAiE,CAAA,CAAA,CAAA,GAAA,iBAAK,MAAlC,CAAkC,GAAA,iBAAE,MAAT,CAAS,CAAP,CAAO,CAAA,GAAF,CAAE,CAAA,CAAA,CAAA,CAAG,CAAH,CAAA,EAAG,EAAC;AAE5E,KAAA,kBAAA,GAAkB,OAAU,kBAAkB;AAE9C,KAAA,mBAAA,GAAsB,iBAAkB,CAAA,kBAAlB,CAAA;;;KCrEtB,UAAA,GAAa,QAAQ;KAI5B,yBAAyB,2BAA2B,2BAClC,QAAQ,MAAM;KAGhC,4BAA4B,2BAA2B,gBAAgB;KAEhE,yBAAyB;gBAA8B;;KACvD,4BAA4B;mBAAiC;;KAC7D,wEAAsE;sBAC5D;kBACJ;;KAEN,wBAAwB;eAA6B;;KACrD,2BAA2B;kBAAgC;;KAC3D,wDAAsD;wBAC1C;;KAEZ,0DAAwD;0BAC1C;;AD2Cd,KCzCA,IDyCO,CAAA,YAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GCzC0C,aDyC1C,CAAA;EAA6B,eAAA,ECzC8C,GDyC9C;CAA2B,CAAA;AAAE,KCxCjE,MDwCiE,CAAA,YAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GCxCd,aDwCc,CAAA;EAAK,iBAAA,ECvC7D,GDuC6D;CAAE,CAAA;AAAG,KCrC3E,QDqC2E,CAAA,YAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GCrCtB,aDqCsB,CAAA;EAAC,mBAAA,ECpCjE,GDoCiE;AAExF,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"codecs-DZUnQrrl.d.mts","names":[],"sources":["../src/core/codecs.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;KAkFK,YAAA,GAkDiD;EAGzB,SAAA,MAAA,CAAA,EAAA,MAAA;CAGV;KAvDd,eAAA,GAwC4B;EAAS,SAAA,SAAA,CAAA,EAAA,MAAA;AAoB1C,CAAA;KA3DK,aAAA,GAgE6B;EACN,SAAA,SAAA,EAAA,MAAA;EAAyB,SAAA,KAAA,CAAA,EAAA,MAAA;CANf;KA1DjC,UAAA,GA0DoD;EAa5C,SAAA,MACoE,CAAA,EAAA,SAAA,MADxD,EAAA;AAMzB,CAAA;AACS,cAxCI,WAAA,SAAoB,SAwCxB,CAAA,OAvCA,gBAuCA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAK2B,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAvCA,gBAuCA,CAAA,EAvCmB,OAuCnB,CAAA,MAAA,CAAA;EAAmB,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EApCpB,gBAoCoB,CAAA,EApCD,OAoCC,CAAA,MAAA,CAAA;EAGpB,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EApCN,SAoCM;EAAmB,UAAA,CAAA,IAAA,EAjCnC,SAiCmC,CAAA,EAAA,MAAA;;AAMnC,cAlCN,gBAAA,SAAyB,mBAkCnB,CAAA,IAAA,CAAA,CAAA;EAfc,SAAA,OAAA,EAAA,WAAA;EAAS,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA;EAoB7B,SAAA,WAAiB,EAAA,SAAA,CAAA,MAAA,CAAA;EAKI,SAAA,IAAA,EAAA;IACN,SAAA,EAAA,EAAA;MAAyB,SAAA,GAAA,EAAA;QANf,SAAA,QAAA,EAAA;UAAmB,SAAA,UAAA,EAAA,MAAA;QAa5C,CAAA;MAMA,CAAA;IACJ,CAAA;EAK2B,CAAA;EAAmB,SAAA,YAAA,EA3DrB,gBA2DqB,CAAA,IAAA,CAAA;EAGpB,OAAA,CAAA,CAAA,EAAA,CAAA,GAAA,EA7DP,oBA6DO,EAAA,GA7DkB,WA6DlB;;AAMhB,cA5DN,YA4DM,EAAA,GAAA,GA5DM,wCAAA,CAAA,UA4DN,CA5DM,WA4DN,EAAA,SAAA,CAAA;AAfc,cAvCpB,WAAA,SAAoB,SAuCA,CAAA,OAtCxB,gBAsCwB,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAAS,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAjCN,gBAiCM,CAAA,EAjCa,OAiCb,CAAA,MAAA,CAAA;EAoB7B,MAAA,CAAA,IAAA,EAAA,MAAiB,EAAA,IAAA,EAlDK,gBAkDL,CAAA,EAlDwB,OAkDxB,CAAA,MAAA,CAAA;EAKI,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EApDL,SAoDK;EACN,UAAA,CAAA,IAAA,EAlDT,SAkDS,CAAA,EAAA,MAAA;;AANU,cAvCzB,gBAAA,SAAyB,mBAuCA,CAAA,IAAA,CAAA,CAAA;EAAmB,SAAA,OAAA,EAAA,WAAA;EAa5C,SAAA,MACoE,EAAA,SAAA,CAAA,UADxD,EAAA,OAAA,EAAA,SAAA,CAAA;EAMZ,SAAA,WAAY,EAAA,SAAA,CAAA,MAAA,CAAA;EAChB,SAAA,IAAA,EAAA;IAK2B,SAAA,EAAA,EAAA;MAAmB,SAAA,GAAA,EAAA;QAGpB,SAAA,QAAA,EAAA;UAAmB,SAAA,UAAA,EAAA,SAAA;QAGzB,CAAA;MAGV,CAAA;IAfc,CAAA;EAAS,CAAA;EAoB7B,SAAA,YAAiB,EAzEI,gBAyEJ,CAAA,IAAA,CAAA;EAKI,OAAA,CAAA,CAAA,EAAA,CAAA,GAAA,EA7EN,oBA6EM,EAAA,GA7EmB,WA6EnB;;AALI,cAjEzB,YAiEyB,EAAA,GAAA,GAjEb,wCAAA,CAAA,UAiEa,CAjEb,WAiEa,EAAA,SAAA,CAAA;AAAmB,cA3D5C,WAAA,SAAoB,SA2DwB,CAAA,OA1DhD,gBA0DgD,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAa5C,MAAA,CAAA,KAAA,EAAA,MACoE,EAAA,IAAA,EAnE7C,gBAkEX,CAAA,EAlE8B,OAkE9B,CAAA,MAAA,CAAA;EAMZ,MAAA,CAAA,IAAA,EAAA,MAAc,EAAA,IAAA,EArEQ,gBAqER,CAAA,EArE2B,OAqE3B,CAAA,MAAA,CAAA;EAClB,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAnEoB,SAmEpB;EAK2B,UAAA,CAAA,IAAA,EArEjB,SAqEiB,CAAA,EAAA,MAAA;;AAGD,cAnEtB,gBAAA,SAAyB,mBAmEH,CAAA,IAAA,CAAA,CAAA;EAAmB,SAAA,OAAA,EAAA,WAAA;EAGzB,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA;EAGV,SAAA,WAAA,EAAA,SAAA,CAAA,MAAA,CAAA;EAfgB,SAAA,IAAA,EAAA;IAAS,SAAA,EAAA,EAAA;MAoB/B,SAAA,GAAA,EAAmB;QAKE,SAAA,QAAA,EAAA;UACN,SAAA,UAAA,EAAA,UAAA;QAAyB,CAAA;MANb,CAAA;IAAmB,CAAA;EAa9C,CAAA;EAMA,SAAA,YAAc,EA5FO,gBA4FP,CAAA,IAAA,CAAA;EAClB,OAAA,CAAA,CAAA,EAAA,CAAA,GAAA,EA5FmB,oBA4FnB,EAAA,GA5F4C,WA4F5C;;AAQ0B,cA7FtB,YA6FsB,EAAA,GAAA,GA7FV,wCAAA,CAAA,UA6FU,CA7FV,WA6FU,EAAA,SAAA,CAAA;AAAmB,cAvFzC,WAAA,SAAoB,SAuFqB,CAAA,OAtF7C,gBAsF6C,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAGzB,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EApFO,gBAoFP,CAAA,EApF0B,OAoF1B,CAAA,MAAA,CAAA;EAGV,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EApFgB,gBAoFhB,CAAA,EApFmC,OAoFnC,CAAA,MAAA,CAAA;EAfgB,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAlEN,SAkEM;EAAS,UAAA,CAAA,IAAA,EA/DzB,SA+DyB,CAAA,EAAA,MAAA;AAoB5C;AAKkC,cAnFrB,gBAAA,SAAyB,mBAmFJ,CAAA,IAAA,CAAA,CAAA;EACN,SAAA,OAAA,EAAA,WAAA;EAAyB,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA;EANb,SAAA,WAAA,EAAA,SAAA,CAAA,MAAA,CAAA;EAAmB,SAAA,IAAA,EAAA;IAa9C,SAAA,EAAA,EAC0E;MAK1E,SAAY,GAAA,EAAA;QAChB,SAAA,QAAA,EAAA;UAK4B,SAAA,UAAA,EAAA,QAAA;QAAmB,CAAA;MAGpB,CAAA;IAAmB,CAAA;EAGzB,CAAA;EAGX,SAAA,YAAA,EA3Ge,gBA2Gf,CAAA,IAAA,CAAA;EAfc,OAAA,CAAA,CAAA,EAAA,CAAA,GAAA,EA3FL,oBA2FK,EAAA,GA3FoB,WA2FpB;;AAyBC,cA7GrB,YA6GqB,EAAA,GAAA,GA7GT,wCAAA,CAAA,UA6GS,CA7GT,WA6GS,EAAA,SAAA,CAAA;AACN,cAxGf,aAAA,SAAsB,SAwGP,CAAA,OAvGnB,kBAuGmB,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAAyB,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAlGjB,gBAkGiB,CAAA,EAlGE,OAkGF,CAAA,MAAA,CAAA;EANf,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAzFH,gBAyFG,CAAA,EAzFgB,OAyFhB,CAAA,MAAA,CAAA;EAAmB,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAtF5B,SAsF4B;EAa5C,UAAA,CAAA,IACoE,EAjG9D,SAiG8D,CAAA,EADxD,MAAA;AAMzB;AACS,cAlGI,kBAAA,SAA2B,mBAkG/B,CAAA,IAAA,CAAA,CAAA;EAK2B,SAAA,OAAA,EAAA,aAAA;EAAmB,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA;EAGX,SAAA,WAAA,EAAA,SAAA,CAAA,QAAA,CAAA;EAAmB,SAAA,IAAA,EAAA;IAGlC,SAAA,EAAA,EAAA;MAGV,SAAA,GAAA,EAAA;QAfiB,SAAA,QAAA,EAAA;UAAS,SAAA,UAAA,EAAA,MAAA;QAoBhC,CAAA;MAAgD,CAAA;IAAa,CAAA;EAMtC,CAAA;EAGR,SAAA,YAAA,EAzHM,gBAyHN,CAAA,IAAA,CAAA;EAAsB,OAAA,CAAA,CAAA,EAAA,CAAA,GAAA,EAxHtB,oBAwHsB,EAAA,GAxHG,aAwHH;;AATU,cAxG/C,cAwG+C,EAAA,GAAA,GAxGjC,wCAAA,CAAA,UAwGiC,CAxGjC,aAwGiC,EAAA,SAAA,CAAA;AAgB/C,cAlHA,aAAA,SAAsB,SAmH0D,CAAA,OAlHpF,kBAkHoF,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EADrD,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EA5GJ,gBA4GI,CAAA,EA5Ge,OA4Gf,CAAA,MAAA,CAAA;EAAa,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAzGlB,gBAyGkB,CAAA,EAzGC,OAyGD,CAAA,MAAA,CAAA;EAAA,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAtGxB,SAsGwB;EAAA,UAAA,CAAA,IAAA,EAnGlC,SAmGkC,CAAA,EAAA,MAAA;;AAMxC,cApGA,kBAAA,SAA2B,mBAoGV,CAAA,IAAA,CAAA,CAAA;EACrB,SAAA,OAAA,EAAA,aAAA;EAEP,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA;EACA,SAAA,WAAA,EAAA,SAAA,CAAA,QAAA,CAAA;EAEoB,SAAA,IAAA,EAAA;IAAY,SAAA,EAAA,EAAA;MAA2B,SAAA,GAAA,EAAA;QAAR,SAAA,QAAA,EAAA;UAGhC,SAAA,UAAA,EAAA,kBAAA;QAAY,CAAA;MAA2B,CAAA;IAAR,CAAA;EAGhC,CAAA;EAAO,SAAA,YAAA,EA3GO,gBA2GP,CAAA,IAAA,CAAA;EAGR,OAAA,CAAA,CAAA,EAAA,CAAA,GAAA,EA7GS,oBA6GT,EAAA,GA7GkC,aA6GlC;;AAf4B,cAvFlC,cAuFkC,EAAA,GAAA,GAvFpB,wCAAA,CAAA,UAuFoB,CAvFpB,aAuFoB,EAAA,SAAA,CAAA;AAoBlC,cArGA,WAAA,SAAoB,SAqGE,CAAA,OApG1B,gBAoG0B,EAAA,SAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,CAAA;EAA4B,MAAA,CAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EA/F1B,gBA+F0B,CAAA,EA/FP,OA+FO,CAAA,OAAA,CAAA;EAAe,MAAA,CAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EA5F1C,gBAiGJ,CAAA,EAjGuB,OAiGvB,CAAA,OAAA,CAAA;EAEI,UAAA,CAAA,KAAA,EAAA,OAAA,CAAA,EAhGN,SAgGM;EAGR,UAAA,CAAA,IAAA,EAhGT,SAgGS,CAAA,EAAA,OAAA;;AAAiD,cA3FhE,gBAAA,SAAyB,mBA2FuC,CAAA,IAAA,CAAA,CAAA;EAVlC,SAAA,OAAA,EAAA,WAAA;EAAmB,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,SAAA,CAAA;EAiBjD,SAAA,WACsF,EAAA,SAAA,CAAA,MAAA,CAAA;EADzD,SAAA,IAAA,EAAA;IAAoB,SAAA,EAAA,EAAA;MAAA,SAAA,GAAA,EAAA;QAAA,SAAA,QAAA,EAAA;UAAA,SAAA,UAAA,EAAA,SAAA;QAMjD,CAAA;MACJ,CAAA;IAEP,CAAA;EACA,CAAA;EAEoB,SAAA,YAAA,EAzGY,gBAyGZ,CAAA,IAAA,CAAA;EAAY,OAAA,CAAA,CAAA,EAAA,CAAA,GAAA,EAxGN,oBAwGM,EAAA,GAxGmB,WAwGnB;;AAGb,cApGR,YAoGQ,EAAA,GAAA,GApGI,wCAAA,CAAA,UAoGJ,CApGI,WAoGJ,EAAA,SAAA,CAAA;AAAY,cA9FpB,cAAA,SAAuB,SA8FH,CAAA,OA7FxB,mBA6FwB,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,MAAA,GAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAA2B,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAxFxB,gBAwFwB,CAAA,EAxFL,OAwFK,CAAA,MAAA,CAAA;EAAR,MAAA,CAAA,IAAA,EAAA,MAAA,GAAA,MAAA,EAAA,IAAA,EArFR,gBAqFQ,CAAA,EArFW,OAqFX,CAAA,MAAA,CAAA;EAGhC,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EArFS,SAqFT;EAAO,UAAA,CAAA,IAAA,EAlFR,SAkFQ,CAAA,EAAA,MAAA;;AAGI,cAhFlB,mBAAA,SAA4B,mBAgFV,CAhF8B,aAgF9B,CAAA,CAAA;EAfS,SAAA,OAAA,EAAA,cAAA;EAAS,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA;EAoBpC,SAAA,WAAA,EAAA,SAAwB,CAAA,SAAA,EAAA,SAAA,CAAA;EAA4B,SAAA,IAAA,EAAA;IAAe,SAAA,EAAA,EAAA;MAO5C,SAAA,GAAA,EAAA;QAGR,SAAA,QAAA,EAAA;UAAwB,SAAA,UAAA,EAAA,SAAA;QAAyB,CAAA;MAVhC,CAAA;IAAmB,CAAA;EAiBnD,CAAA;EAA+B,SAAA,YAAA,EAtG8B,oCAAA,CAK1C,UAiGY,CAAA;IAAoB,SAAA,EAAA,MAAA;IAAA,KAAA,CAAA,EAAA,MAAA;EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;EAAA,gBAAA,CAAA,MAAA,EAhG5B,aAgG4B,CAAA,EAAA,MAAA,GAAA,SAAA;EAWnD,OAAA,CAAA,OAAY,EAxGG,aAwGH,CAAA,EAAA,CAAA,GAAA,EAxGyB,oBAwGzB,EAAA,GAxGkD,cAwGlD;;AAM8B,cAvG1C,eAuG0C,EAAA,CAAA,MAAA,EAvGf,aAuGe,EAAA,GAvGF,wCAAA,CAAA,UAuGE,CAvGF,cAuGE,EAvGF,aAuGE,CAAA;AAGpB,cApGtB,gBAAA,SAAyB,SAoGH,CAAA,OAnG1B,qBAmG0B,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAjGjC,IAiGiC,EAhGjC,IAgGiC,CAAA,CAAA;EAAmB,MAAA,CAAA,KAAA,EA9FhC,IA8FgC,EAAA,IAAA,EA9FpB,gBA8FoB,CAAA,EA9FD,OA8FC,CA9FO,IA8FP,CAAA;EAGzB,MAAA,CAAA,IAAA,EA9FR,IA8FQ,EAAA,IAAA,EA9FI,gBA8FJ,CAAA,EA9FuB,OA8FvB,CA9F+B,IA8F/B,CAAA;EAGV,UAAA,CAAA,KAAA,EA9FC,IA8FD,CAAA,EA9FQ,SA8FR;EAfc,UAAA,CAAA,IAAA,EA5Ed,SA4Ec,CAAA,EA5EF,IA4EE;;AAoBpB,cA3FA,qBAAA,SAA8B,mBA2Fb,CA3FiC,eA2FjC,CAAA,CAAA;EAA4B,SAAA,OAAA,EAAA,gBAAA;EAAe,SAAA,MAAA,EAAA,SAAA,CAAA,UAKzC,EAAA,OAAA,CAAA;EAEI,SAAA,WAAA,EAAA,SAAA,CAAA,WAAA,CAAA;EAGR,SAAA,IAAA,EAAA;IAAwB,SAAA,EAAA,EAAA;MAAyB,SAAA,GAAA,EAAA;QAVvC,SAAA,QAAA,EAAA;UAAmB,SAAA,UAAA,EAAA,6BAAA;QAiB5C,CAAA;MAAwB,CAAA;IAAoB,CAAA;EAAA,CAAA;EAAA,SAAA,YAAA,EA5GqB,oCAAA,CAK9C,UAuGyB,CAAA;IAAA,SAAA,CAAA,EAAA,MAAA;EAM5C,CAAA,EAAA,CAAA,CAAA,CAAA;EACJ,gBAAA,CAAA,MAAA,EA5G2B,eA4G3B,CAAA,EAAA,MAAA,GAAA,SAAA;EAK2B,OAAA,CAAA,OAAA,EA9GR,eA8GQ,CAAA,EAAA,CAAA,GAAA,EA9GgB,oBA8GhB,EAAA,GA9GyC,gBA8GzC;;AAGkB,cA1GzC,iBA0GyC,EAAA,CAAA,MAAA,CAAA,EA1GZ,eA0GY,EAAA,GA1GQ,wCAAA,CAAA,UA0GR,CA1GQ,gBA0GR,EA1GQ,eA0GR,CAAA;AAGzB,cAvGhB,kBAAA,SAA2B,SAuGX,CAAA,OAtGpB,uBAsGoB,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EApG3B,IAoG2B,EAnG3B,IAmG2B,CAAA,CAAA;EAGV,MAAA,CAAA,KAAA,EApGG,IAoGH,EAAA,IAAA,EApGe,gBAoGf,CAAA,EApGkC,OAoGlC,CApG0C,IAoG1C,CAAA;EAfgB,MAAA,CAAA,IAAA,EAlFd,IAkFc,EAAA,IAAA,EAlFF,gBAkFE,CAAA,EAlFiB,OAkFjB,CAlFyB,IAkFzB,CAAA;EAAS,UAAA,CAAA,KAAA,EA/ExB,IA+EwB,CAAA,EA/EjB,SA+EiB;EAoB/B,UAAA,CAAA,IAAA,EAhGM,SAgGa,CAAA,EAhGD,IAgGC;;AAA2C,cA3F9D,uBAAA,SAAgC,mBAgGb,CAhGiC,eAgGjC,CAAA,CAAA;EAEI,SAAA,OAAA,EAAA,kBAAA;EAGR,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA;EAAwB,SAAA,WAAA,EAAA,SAAA,CAAA,aAAA,CAAA;EAAyB,SAAA,IAAA,EAAA;IAVrC,SAAA,EAAA,EAAA;MAAmB,SAAA,GAAA,EAAA;QAiB9C,SAC6E,QAAA,EAAA;UADnD,SAAA,UAAA,EAAA,0BAAA;QAAoB,CAAA;MAAA,CAAA;IAAA,CAAA;EAAA,CAAA;EAM9C,SAAA,YAAW,EAlHwD,oCAAA,CAKhD,UA6GR,CAAA;IACf,SAAA,CAAA,EAAA,MAAA;EAK2B,CAAA,EAAA,CAAA,CAAA,CAAA;EAAmB,gBAAA,CAAA,MAAA,EAjHnB,eAiHmB,CAAA,EAAA,MAAA,GAAA,SAAA;EAGpB,OAAA,CAAA,OAAA,EAjHP,eAiHO,CAAA,EAAA,CAAA,GAAA,EAjHiB,oBAiHjB,EAAA,GAjH0C,kBAiH1C;;AAMhB,cAhHN,mBAgHM,EAAA,CAAA,MAAA,CAAA,EAhHyB,eAgHzB,EAAA,GAhH6C,wCAAA,CAAA,UAgH7C,CAhH6C,kBAgH7C,EAhH6C,eAgH7C,CAAA;AAfa,cAtFnB,WAAA,SAAoB,SAsFD,CAAA,OArFvB,gBAqFuB,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAAS,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAhFL,gBAgFK,CAAA,EAhFc,OAgFd,CAAA,MAAA,CAAA;EAoB5B,MAAA,CAAA,IAAA,EAAA,MAAgB,EAAA,IAAA,EAjGM,gBAiGN,CAAA,EAjGyB,OAiGzB,CAAA,MAAA,CAAA;EAA4B,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EA9F5B,SA8F4B;EAAY,UAAA,CAAA,IAAA,EA3FlD,SA2FkD,CAAA,EAAA,MAKrC;;AAIJ,cA/Ff,gBAAA,SAAyB,mBA+FV,CA/F8B,eA+F9B,CAAA,CAAA;EAAqB,SAAA,OAAA,EAAA,WAAA;EAAyB,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA;EATrC,SAAA,WAAA,EAAA,SAAA,CAAA,MAAA,CAAA;EAAmB,SAAA,IAAA,EAAA;IAgB3C,SAAA,EACoE,EAAA;MAD7C,SAAA,GAAA,EAAA;QAAiB,SAAA,QAAA,EAAA;UAAA,SAAA,UAAA,EAAA,MAAA;QAAA,CAAA;MAAA,CAAA;IAMxC,CAAA;EACJ,CAAA;EAK2B,SAAA,YAAA,EAlHqC,oCAAA,CAKzC,UA6GI,CAAA;IAAmB,SAAA,CAAA,EAAA,MAAA;EAGpB,CAAA,EAAA,CAAA,CAAA,CAAA;EAAmB,gBAAA,CAAA,MAAA,EA9GlB,eA8GkB,CAAA,EAAA,MAAA,GAAA,SAAA;EAGzB,OAAA,CAAA,OAAA,EA9GD,eA8GC,CAAA,EAAA,CAAA,GAAA,EA9GuB,oBA8GvB,EAAA,GA9GgD,WA8GhD;;AAZe,cA3F/B,YA2F+B,EAAA,CAAA,MAAA,CAAA,EA3FP,eA2FO,EAAA,GA3Fa,wCAAA,CAAA,UA2Fb,CA3Fa,WA2Fb,EA3Fa,eA2Fb,CAAA;AAoB/B,cAzGA,aAAA,SAAsB,SAyGH,CAAA,OAxGvB,kBAwGuB,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAA4B,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAnGxB,gBAmGwB,CAAA,EAnGL,OAmGK,CAAA,MAAA,CAAA;EAAY,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAhGrC,gBAqGH,CAAA,EArGsB,OAqGtB,CAAA,MAAA,CAAA;EACI,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAnGP,SAmGO;EAGR,UAAA,CAAA,IAAA,EAnGT,SAmGS,CAAA,EAAA,MAAA;;AAA8C,cA9F7D,kBAAA,SAA2B,mBA8FkC,CA9Fd,eA8Fc,CAAA,CAAA;EATlC,SAAA,OAAA,EAAA,aAAA;EAAmB,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA;EAgB9C,SAAA,WACkF,EAAA,SAAA,CAAA,QAAA,CAAA;EADxD,SAAA,IAAA,EAAA;IAAiB,SAAA,EAAA,EAAA;MAAA,SAAA,GAAA,EAAA;QAAA,SAAA,QAAA,EAAA;UAAA,SAAA,UAAA,EAAA,QAAA;QAM3C,CAAA;MACJ,CAAA;IAEP,CAAA;EACA,CAAA;EAEoB,SAAA,YAAA,EAjHqD,oCAAA,CAK3C,UA4GV,CAAA;IAAkB,SAAA,CAAA,EAAA,MAAA;EAA2B,CAAA,EAAA,CAAA,CAAA,CAAA;EAAR,gBAAA,CAAA,MAAA,EA1GvB,eA0GuB,CAAA,EAAA,MAAA,GAAA,SAAA;EAGtC,OAAA,CAAA,OAAA,EA1GO,eA0GP,CAAA,EAAA,CAAA,GAAA,EA1G+B,oBA0G/B,EAAA,GA1GwD,aA0GxD;;AAAqC,cAnG7C,cAmG6C,EAAA,CAAA,MAAA,CAAA,EAnGnB,eAmGmB,EAAA,GAnGC,wCAAA,CAAA,UAmGD,CAnGC,aAmGD,EAnGC,eAmGD,CAAA;AAMtC,cAnGP,UAAA,SAAmB,SAmGZ,CAAA,OAlGX,eAkGW,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAAa,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EA7FG,gBA6FH,CAAA,EA7FsB,OA6FtB,CAAA,MAAA,CAAA;EAGd,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EA7FgB,gBA6FhB,CAAA,EA7FmC,OA6FnC,CAAA,MAAA,CAAA;EAAY,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EA1FF,SA0FE;EAlBG,UAAA,CAAA,IAAA,EArEf,SAqEe,CAAA,EAAA,MAAA;;AA8BrB,cA9FA,eAAA,SAAwB,mBA8FN,CA9F0B,YA8F1B,CAAA,CAAA;EAKG,SAAA,OAAA,EAAA,UAAA;EACN,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA;EAAyB,SAAA,WAAA,EAAA,SAAA,CAAA,KAAA,CAAA;EANd,SAAA,IAAA,EAAA;IAAmB,SAAA,EAAA,EAAA;MAmB7C,SAAA,GAAgB,EAAA;QACpB,SAAA,QAAA,EAAA;UAEE,SAAA,UAAA,EAAA,KAAA;QAGyB,CAAA;MAAmB,CAAA;IAGzB,CAAA;EAA+B,CAAA;EAAmB,SAAA,YAAA,EA1HX,oCAAA,CAKrC,UAqHgD,CAAA;IAGnD,MAAA,CAAA,EAAA,MAAA;EAGV,CAAA,EAAA,CAAA,CAAA,CAAA;EAfkB,gBAAA,CAAA,MAAA,EA3GD,YA2GC,CAAA,EAAA,MAAA,GAAA,SAAA;EAAS,OAAA,CAAA,OAAA,EAxGlB,YAwGkB,CAAA,EAAA,CAAA,GAAA,EAxGG,oBAwGH,EAAA,GAxG4B,UAwG5B;AAoB9C;AAA6E,cArHhE,WAqHgE,EAAA,CAAA,MAK7C,CAAA,EA1HI,YA0HJ,EAAA,GA1HqB,wCAAA,CAAA,UA0HrB,CA1HqB,UA0HrB,EA1HqB,YA0HrB,CAAA;AAEI,cAtHvB,aAAA,SAAsB,SAsHC,CAAA,OArH3B,kBAqH2B,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAGR,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAnHQ,gBAmHR,CAAA,EAnH2B,OAmH3B,CAAA,MAAA,CAAA;EAAwB,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAhHjB,gBAgHiB,CAAA,EAhHE,OAgHF,CAAA,MAAA,CAAA;EAAyB,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EA7GhD,SA6GgD;EAVnC,UAAA,CAAA,IAAA,EAhGvB,SAgGuB,CAAA,EAAA,MAAA;;AAiB7B,cA5GA,kBAAA,SAA2B,mBA6GwD,CA7GpC,YA6GoC,CAAA,CAAA;EADvD,SAAA,OAAA,EAAA,aAAA;EAAoB,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA;EAAA,SAAA,WAAA,EAAA,SAAA,CAAA,aAAA,CAAA;EAAA,SAAA,IAAA,EAAA;IAAA,SAAA,EAAA,EAAA;MAUhD,SAAY,GAAA,EAAA;QAChB,SAAA,QAAA,EAAA;UAK2B,SAAA,UAAA,EAAA,aAAA;QAAmB,CAAA;MAGpB,CAAA;IAAmB,CAAA;EAGzB,CAAA;EAGV,SAAA,YAAA,EArIqD,oCAAA,CAKxC,UAgIb,CAAA;IAfc,MAAA,CAAA,EAAA,MAAA;EAAS,CAAA,EAAA,CAAA,CAAA,CAAA;EAoB7B,gBAAA,CAAA,MAAiB,EApIM,YAoIN,CAAA,EAAA,MAAA,GAAA,SAAA;EAA4B,OAAA,CAAA,OAAA,EAjI9B,YAiI8B,CAAA,EAAA,CAAA,GAAA,EAjIT,oBAiIS,EAAA,GAjIgB,aAiIhB;;AAQ9B,cAlIf,cAkIe,EAAA,CAAA,MAAA,CAAA,EAlIW,YAkIX,EAAA,GAlI4B,wCAAA,CAAA,UAkI5B,CAlI4B,aAkI5B,EAlI4B,YAkI5B,CAAA;AAAmB,cA5HlC,YAAA,SAAqB,SA4Ha,CAAA,OA3HtC,iBA2HsC,EAAA,SAAA,CAAA,UAAA,CAAA,EAzH7C,UAyH6C,EAxH7C,UAwH6C,CAAA,CAAA;EAAyB,MAAA,CAAA,KAAA,EAtHlD,UAsHkD,EAAA,IAAA,EAtHhC,gBAsHgC,CAAA,EAtHb,OAsHa,CAtHL,UAsHK,CAAA;EARlC,MAAA,CAAA,IAAA,EA3GjB,UA2GiB,EAAA,IAAA,EA3GC,gBA2GD,CAAA,EA3GoB,OA2GpB,CA3G4B,UA2G5B,CAAA;EAAmB,UAAA,CAAA,KAAA,EArGrC,UAqGqC,CAAA,EArGxB,SAqGwB;EAe5C,UAAA,CAAA,IACuE,EAlHjE,SAkHiE,CAAA,EAlHrD,UAkHqD;;AADhC,cArGvC,iBAAA,SAA0B,mBAqGa,CAAA,IAAA,CAAA,CAAA;EAAA,SAAA,OAAA,EAAA,YAAA;EAAA,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,CAAA;EAAA,SAAA,WAAA,EAAA,SAAA,CAAA,OAAA,CAAA;EAMvC,SAAA,IAAA,EAAY;IAChB,SAAA,EAAA,EAAA;MAEE,SAAA,GAAA,EAAA;QACT,SAAA,QAAA,EAAA;UAEoB,SAAA,UAAA,EAAA,OAAA;QAAiB,CAAA;MAAmB,CAAA;IAG5B,CAAA;EAAiB,CAAA;EAA2B,SAAA,YAAA,EA/GxC,gBA+GwC,CAAA,IAAA,CAAA;EAAR,OAAA,CAAA,CAAA,EAAA,CAAA,GAAA,EA9GtC,oBA8GsC,EAAA,GA9Gb,YA8Ga;;AAMnC,cAvGlB,eAAA,SAAwB,SAuGN,CAAA,OAtGtB,oBAsGsB,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,MAAA,GApGpB,MAoGoB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,CAAA;EAfE,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAlFG,gBAkFH,CAAA,EAlFsB,OAkFtB,CAAA,MAAA,CAAA;EAAS,MAAA,CAAA,IAAA,EAAA,MAAA,GA/EZ,MA+EY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,IAAA,EA/EmB,gBA+EnB,CAAA,EA/EsC,OA+EtC,CAAA,MAAA,CAAA;EAoB7B,UAAA,CAAA,KAAA,EAAA,MAAiB,CAAA,EAhGD,SAgGC;EAKI,UAAA,CAAA,IAAA,EAlGf,SAkGe,CAAA,EAAA,MAAA;;AACmB,cA9FxC,oBAAA,SAA6B,mBA8FW,CA9FS,eA8FT,CAAA,CAAA;EANf,SAAA,OAAA,EAAA,eAAA;EAAmB,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA;EAa5C,SAAA,WACoE,EAAA,SADxD,CAAA,UAAA,CAAA;EAMZ,SAAA,IAAA,EAAa;IACjB,SAAA,EAAA,EAAA;MAEE,SAAA,GAAA,EAAA;QACT,SAAA,QAAA,EAAA;UAEoB,SAAA,UAAA,EAAA,UAAA;QAAiB,CAAA;MAAmB,CAAA;IAG5B,CAAA;EAAiB,CAAA;EAA2B,SAAA,YAAA,EApHG,oCAAA,CAK7C,UA+G0C,CAAA;IAAR,SAAA,CAAA,EAAA,MAAA;EAG9C,CAAA,EAAA,CAAA,CAAA,CAAA;EAAY,gBAAA,CAAA,MAAA,EAhHI,eAgHJ,CAAA,EAAA,MAAA,GAAA,SAAA;EAGb,OAAA,CAAA,OAAA,EAhHS,eAgHT,CAAA,EAAA,CAAA,GAAA,EAhHiC,oBAgHjC,EAAA,GAhH0D,eAgH1D;;AAfwB,cA1F9B,gBA0F8B,EAAA,CAAA,MAAA,CAAA,EA1FF,eA0FE,EAAA,GA1FkB,wCAAA,CAAA,UA0FlB,CA1FkB,eA0FlB,EA1FkB,eA0FlB,CAAA;AAoB9B,cApGA,WAAA,SAAoB,SAoGF,CAAA,OAnGtB,gBAmGsB,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;EAKG,MAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAnGE,gBAmGF,CAAA,EAnGqB,OAmGrB,CAAA,MAAA,CAAA;EACN,MAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAjGO,gBAiGP,CAAA,EAjG0B,OAiG1B,CAAA,MAAA,CAAA;EAAyB,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EA9FxB,SA8FwB;EANd,UAAA,CAAA,IAAA,EArFpB,SAqFoB,CAAA,EAAA,MAAA;;AAa1B,cA7FA,gBAAA,SAAyB,mBA6FZ,CA7FgC,UA6FhC,CAAA,CAAA;EAeb,SAAA,OAAA,EAAA,WAAiB;EAA4B,SAAA,MAAA,EAAA,SAAA,CAAA,UAAA,EAAA,OAAA,CAAA;EAK1B,SAAA,WAAA,EAAA,SAAA,CAAA,MAAA,CAAA;EACI,SAAA,YAAA,EAlHgC,oCAAA,CAIpC,UA8GI,CAAA;IAGR,MAAA,CAAA,EAAA,MAAA,EAAA;EAAqB,CAAA,EAAA,CAAA,CAAA,CAAA;EAAyB,gBAAA,CAAA,MAAA,EAhHtC,UAgHsC,CAAA,EAAA,MAAA,GAAA,SAAA;EATpC,OAAA,CAAA,OAAA,EApGV,UAoGU,CAAA,EAAA,CAAA,GAAA,EApGS,oBAoGT,EAAA,GApGkC,WAoGlC;;AAgBD,cA7GxB,YA6GwB,EAAA,CAAA,MAAA,CAAA,EA7GA,UA6GA,EAAA,GA7Ge,wCAAA,CAAA,UA6Gf,CA7Ge,WA6Gf,EA7Ge,UA6Gf,CAAA;AAAiB,cAvGzC,WAAA,SAAoB,SAuGqB,CAAA,OAtG7C,gBAsG6C,EAAA,SAAA,EAAA,EAAA,MAAA,GApG3C,SAoG2C,EAnGpD,SAmGoD,CAAA,CAAA;EAAA,MAAA,CAAA,KAAA,EAjGhC,SAiGgC,EAAA,IAAA,EAjGf,gBAiGe,CAAA,EAjGI,OAiGJ,CAAA,MAAA,CAAA;EAAA,MAAA,CAAA,IAAA,EAAA,MAAA,GA9FxB,SA8FwB,EAAA,IAAA,EA9FP,gBA8FO,CAAA,EA9FY,OA8FZ,CA9FoB,SA8FpB,CAAA;EAAA,UAAA,CAAA,KAAA,EA3FlC,SA2FkC,CAAA,EA3FtB,SA2FsB;EAKzC,UAAA,CAAA,IAAA,EA7FM,SA6Fc,CAAA,EA7FF,SA6FE;;AAKD,cA7FnB,gBAAA,SAAyB,mBA6FN,CAAA,IAAA,CAAA,CAAA;EACI,SAAA,OAAA,EAAA,WAAA;EAGR,SAAA,MAAA,EAAA,SAAA,EAAA;EAAqB,SAAA,WAAA,EAAA,SAAA,CAAA,MAAA,CAAA;EAAyB,SAAA,IAAA,EAAA;IATjC,SAAA,EAAA,EAAA;MAAmB,SAAA,GAAA,EAAA;QAgB/C,SAMV,QAAA,EAAA;UANqC,SAAA,UAAA,EAAA,MAAA;QAAiB,CAAA;MAAA,CAAA;IAAA,CAAA;EAAA,CAAA;EAU5C,SAAA,YAAgB,EA7GK,gBA6GL,CAAA,IAAA,CAAA;EAKG,OAAA,CAAA,CAAA,EAAA,CAAA,GAAA,EAjHJ,oBAiHI,EAAA,GAjHqB,WAiHrB;;AALK,cArGxB,YAqGwB,EAAA,GAAA,GArGZ,wCAAA,CAAA,UAqGY,CArGZ,WAqGY,EAAA,SAAA,CAAA;AAAmB,cA/F3C,YAAA,SAAqB,SA+FsB,CAAA,OA9F/C,iBA8F+C,EAAA,SAAA,CAAA,UAAA,CAAA,EAAA,MAAA,GA5F7C,SA4F6C,EA3FtD,SA2FsD,CAAA,CAAA;EAa3C,MAAA,CAAA,KAAA,EAtGS,SAuGyD,EAAA,IADvD,EAtGe,gBAsGf,CAAA,EAtGkC,OAsGlC,CAAA,MAAA,CAAA;EAKX,MAAA,CAAA,IAAA,EAAA,MAAA,GAxGiB,SAwGC,EAAA,IAAA,EAxGgB,gBAwGhB,CAAA,EAxGmC,OAwGnC,CAxG2C,SAwG3C,CAAA;EAKC,UAAA,CAAA,KAAA,EA1GZ,SA0GY,CAAA,EA1GA,SA0GA;EACJ,UAAA,CAAA,IAAA,EAxGT,SAwGS,CAAA,EAxGG,SAwGH;;AANW,cA7F1B,iBAAA,SAA0B,mBA6FA,CAAA,IAAA,CAAA,CAAA;EAAmB,SAAA,OAAA,EAAA,YAAA;EAa7C,SAAA,MAAA,EACwE,SAAA,CAAA,UAD3D,CAAA;;;;;;;;;;;yBArGQ;mBACN,yBAAyB;;cAOxC,qBAAa,wCAAA,CAAA,WAAA;cAeb,gBAAA,SAAyB,oBAAoB;;;;;;;;;;;;;yBAK1B;;;;;2BACI;mBAGR,qBAAqB,yBAAyB;;cAO7D,wBAAwB,iBAAiB,wCAAA,CAAA,WAAA,cAAA;cAKzC,mBAAA,SAA4B,oBAAoB;;;;;;;;;;;;;yBAK7B;;;;;2BACI;mBAGR,qBAAqB,yBAAyB;;cAO7D,2BAA2B,iBAAiB,wCAAA,CAAA,WAAA,iBAAA;cAU5C,eAAA,SAAwB;;;;;;;;;;;;;yBAKL;mBACJ,yBAAyB;;cAOxC,mBAAW,wCAAA,CAAA,WAAA;cAKX,iBAAA,SAA0B;;;;;;;;;;;;;yBAKP;mBACJ,yBAAyB;;cAOxC,qBAAa,wCAAA,CAAA,WAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-transform-CR_9PvW9.mjs","names":["runClosures: readonly DataTransformClosure[]","precheck: readonly SqlMigrationPlanOperationStep[]","execute: readonly SqlMigrationPlanOperationStep[]","postcheck: readonly SqlMigrationPlanOperationStep[]"],"sources":["../src/core/migrations/operations/data-transform.ts"],"sourcesContent":["/**\n * User-facing `dataTransform` factory for the Postgres migration authoring\n * surface. Invoked directly inside a `migration.ts` file via the\n * `PostgresMigration` instance method (`this.dataTransform(...)`), which\n * supplies the control adapter from the migration's injected stack:\n *\n * ```ts\n * import endContract from './end-contract.json' with { type: 'json' };\n *\n * class M extends Migration {\n * override get operations() {\n * return [\n * this.dataTransform(endContract, 'backfill emails', {\n * check: () => db.users.select('id').where(({ email }) => email.isNull()).limit(1),\n * run: () => db.users.update({ email: '' }).where(({ email }) => email.isNull()),\n * }),\n * ];\n * }\n * }\n * ```\n *\n * The factory accepts lazy closures (`() => SqlQueryPlan | Buildable`),\n * invokes each one, asserts that its `meta.storageHash` matches the\n * `contract` it was handed (→ `PN-MIG-2005` on mismatch), and lowers the\n * plan via the supplied control adapter to a serialized `{sql, params}`\n * payload.\n *\n * The factory then lowers the data transform to the unified migration-op\n * shape `{ precheck, execute, postcheck }`. The user's `check` plan is\n * wrapped twice with opposite truth values:\n *\n * - precheck `SELECT EXISTS (<check>) AS ok` asserts there is work to do\n * (precheck is short-circuited by the runner's pre-satisfied-skip path\n * when nothing remains to backfill).\n * - postcheck `SELECT NOT EXISTS (<check>) AS ok` asserts the work is\n * complete after the run steps execute.\n *\n * The `check` plan is therefore expected to be a **rowset query whose\n * presence of any row signals \"work remains\"** — typically `select('id')\n * .where(<violation predicate>).limit(1)`. Scalar/aggregate shapes\n * (`count(*)`, `bool_and(...)`) do not work under this contract: they\n * always return exactly one row, so `EXISTS` is always true and\n * `NOT EXISTS` is always false. (This is the same row-presence contract\n * the pre-unification runner relied on; the wrapping is just lifting it\n * into SQL.)\n *\n * Each `run` plan becomes an execute step. Because the `Step.params`\n * field threads through `driver.query(sql, params)`, the user's bound\n * values flow through the driver's parameter binder rather than being\n * inlined into the SQL text.\n *\n * The free factory remains usable standalone (tests, ad-hoc tooling,\n * non-class contexts) by passing the adapter explicitly as the fourth\n * argument.\n */\n\nimport type { Contract } from '@prisma-next/contract/types';\nimport { errorDataTransformContractMismatch } from '@prisma-next/errors/migration';\nimport type {\n SqlMigrationPlanOperation,\n SqlMigrationPlanOperationStep,\n} from '@prisma-next/family-sql/control';\nimport type { SqlControlAdapter } from '@prisma-next/family-sql/control-adapter';\nimport type { SerializedQueryPlan } from '@prisma-next/framework-components/control';\nimport type { SqlStorage } from '@prisma-next/sql-contract/types';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport type { PostgresPlanTargetDetails } from '../planner-target-details';\n\ninterface Buildable<R = unknown> {\n build(): SqlQueryPlan<R>;\n}\n\n/**\n * A single-closure producer of a SQL query plan. Shared between\n * `check` and each `run` entry.\n */\nexport type DataTransformClosure = () => SqlQueryPlan | Buildable;\n\nexport interface DataTransformOptions {\n /**\n * Optional opt-in routing identity. Presence opts the transform into\n * invariant-aware routing; absence means it is path-dependent and\n * not referenceable from refs.\n */\n readonly invariantId?: string;\n /**\n * Optional pre-flight query. `undefined` means \"no check\". When\n * supplied, the closure must return a **rowset query** whose\n * presence of any row signals \"violations remain\". Conventional\n * shape: `db.<table>.select('id').where(<violation>).limit(1)`.\n * Scalar/aggregate shapes do not satisfy this contract.\n */\n readonly check?: DataTransformClosure;\n /** One or more mutation queries to execute. */\n readonly run: DataTransformClosure | readonly DataTransformClosure[];\n}\n\nexport function dataTransform<TContract extends Contract<SqlStorage>>(\n contract: TContract,\n name: string,\n options: DataTransformOptions,\n adapter: SqlControlAdapter<'postgres'>,\n): SqlMigrationPlanOperation<PostgresPlanTargetDetails> {\n const runClosures: readonly DataTransformClosure[] = Array.isArray(options.run)\n ? options.run\n : [options.run as DataTransformClosure];\n\n const checkPlan = options.check ? invokeAndLower(options.check, contract, adapter, name) : null;\n const runPlans = runClosures.map((closure) => invokeAndLower(closure, contract, adapter, name));\n\n const precheck: readonly SqlMigrationPlanOperationStep[] = checkPlan\n ? [\n {\n description: `Check ${name} has work to do`,\n sql: `SELECT EXISTS (${checkPlan.sql}) AS ok`,\n params: checkPlan.params,\n },\n ]\n : [];\n\n const execute: readonly SqlMigrationPlanOperationStep[] = runPlans.map((plan) => ({\n description: `Run ${name}`,\n sql: plan.sql,\n params: plan.params,\n }));\n\n const postcheck: readonly SqlMigrationPlanOperationStep[] = checkPlan\n ? [\n {\n description: `Verify ${name} resolved all violations`,\n sql: `SELECT NOT EXISTS (${checkPlan.sql}) AS ok`,\n params: checkPlan.params,\n },\n ]\n : [];\n\n return {\n id: `data_migration.${name}`,\n label: `Data transform: ${name}`,\n operationClass: 'data',\n ...ifDefined('invariantId', options.invariantId),\n target: { id: 'postgres' },\n precheck,\n execute,\n postcheck,\n };\n}\n\nfunction invokeAndLower(\n closure: DataTransformClosure,\n contract: Contract<SqlStorage>,\n adapter: SqlControlAdapter<'postgres'>,\n name: string,\n): SerializedQueryPlan {\n const result = closure();\n const plan = isBuildable(result) ? result.build() : result;\n assertContractMatches(plan, contract, name);\n const lowered = adapter.lower(plan.ast, { contract });\n return { sql: lowered.sql, params: lowered.params };\n}\n\nfunction isBuildable(value: unknown): value is Buildable {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'build' in value &&\n typeof (value as { build: unknown }).build === 'function'\n );\n}\n\nfunction assertContractMatches(\n plan: SqlQueryPlan,\n contract: Contract<SqlStorage>,\n name: string,\n): void {\n if (plan.meta.storageHash !== contract.storage.storageHash) {\n throw errorDataTransformContractMismatch({\n dataTransformName: name,\n expected: contract.storage.storageHash,\n actual: plan.meta.storageHash,\n });\n }\n}\n"],"mappings":";;;;AAkGA,SAAgB,cACd,UACA,MACA,SACA,SACsD;CACtD,MAAMA,cAA+C,MAAM,QAAQ,QAAQ,IAAI,GAC3E,QAAQ,MACR,CAAC,QAAQ,IAA4B;CAEzC,MAAM,YAAY,QAAQ,QAAQ,eAAe,QAAQ,OAAO,UAAU,SAAS,KAAK,GAAG;CAC3F,MAAM,WAAW,YAAY,KAAK,YAAY,eAAe,SAAS,UAAU,SAAS,KAAK,CAAC;CAE/F,MAAMC,WAAqD,YACvD,CACE;EACE,aAAa,SAAS,KAAK;EAC3B,KAAK,kBAAkB,UAAU,IAAI;EACrC,QAAQ,UAAU;EACnB,CACF,GACD,EAAE;CAEN,MAAMC,UAAoD,SAAS,KAAK,UAAU;EAChF,aAAa,OAAO;EACpB,KAAK,KAAK;EACV,QAAQ,KAAK;EACd,EAAE;CAEH,MAAMC,YAAsD,YACxD,CACE;EACE,aAAa,UAAU,KAAK;EAC5B,KAAK,sBAAsB,UAAU,IAAI;EACzC,QAAQ,UAAU;EACnB,CACF,GACD,EAAE;AAEN,QAAO;EACL,IAAI,kBAAkB;EACtB,OAAO,mBAAmB;EAC1B,gBAAgB;EAChB,GAAG,UAAU,eAAe,QAAQ,YAAY;EAChD,QAAQ,EAAE,IAAI,YAAY;EAC1B;EACA;EACA;EACD;;AAGH,SAAS,eACP,SACA,UACA,SACA,MACqB;CACrB,MAAM,SAAS,SAAS;CACxB,MAAM,OAAO,YAAY,OAAO,GAAG,OAAO,OAAO,GAAG;AACpD,uBAAsB,MAAM,UAAU,KAAK;CAC3C,MAAM,UAAU,QAAQ,MAAM,KAAK,KAAK,EAAE,UAAU,CAAC;AACrD,QAAO;EAAE,KAAK,QAAQ;EAAK,QAAQ,QAAQ;EAAQ;;AAGrD,SAAS,YAAY,OAAoC;AACvD,QACE,OAAO,UAAU,YACjB,UAAU,QACV,WAAW,SACX,OAAQ,MAA6B,UAAU;;AAInD,SAAS,sBACP,MACA,UACA,MACM;AACN,KAAI,KAAK,KAAK,gBAAgB,SAAS,QAAQ,YAC7C,OAAM,mCAAmC;EACvC,mBAAmB;EACnB,UAAU,SAAS,QAAQ;EAC3B,QAAQ,KAAK,KAAK;EACnB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-transform-T71mQkVW.d.mts","names":[],"sources":["../src/core/migrations/operations/data-transform.ts"],"sourcesContent":[],"mappings":";;;;;;;;;UAqEU;WACC,aAAa;;;;;;KAOZ,oBAAA,SAA6B,eAAe;UAEvC,oBAAA;;;;;;;;;;;;;;mBAcE;;gBAEH,gCAAgC;;iBAGhC,gCAAgC,SAAS,uBAC7C,kCAED,+BACA,gCACR,0BAA0B"}
@@ -1,115 +0,0 @@
1
- import { temporalAuthoringPresets } from "@prisma-next/family-sql/control";
2
-
3
- //#region src/core/authoring.ts
4
- const postgresAuthoringTypes = { enum: {
5
- kind: "typeConstructor",
6
- args: [{ kind: "string" }, { kind: "stringArray" }],
7
- output: {
8
- codecId: "pg/enum@1",
9
- nativeType: {
10
- kind: "arg",
11
- index: 0
12
- },
13
- typeParams: { values: {
14
- kind: "arg",
15
- index: 1
16
- } }
17
- }
18
- } };
19
- /**
20
- * Field presets contributed by the Postgres target pack.
21
- *
22
- * These mirror the PSL scalar-to-codec mapping used by the Postgres adapter
23
- * (see `createPostgresPslScalarTypeDescriptors`), so that authoring a field
24
- * via the TS callback surface (e.g. `field.int()`) and via the PSL scalar
25
- * surface (e.g. `Int`) lowers to byte-identical contracts.
26
- */
27
- const postgresAuthoringFieldPresets = {
28
- text: {
29
- kind: "fieldPreset",
30
- output: {
31
- codecId: "pg/text@1",
32
- nativeType: "text"
33
- }
34
- },
35
- int: {
36
- kind: "fieldPreset",
37
- output: {
38
- codecId: "pg/int4@1",
39
- nativeType: "int4"
40
- }
41
- },
42
- bigint: {
43
- kind: "fieldPreset",
44
- output: {
45
- codecId: "pg/int8@1",
46
- nativeType: "int8"
47
- }
48
- },
49
- float: {
50
- kind: "fieldPreset",
51
- output: {
52
- codecId: "pg/float8@1",
53
- nativeType: "float8"
54
- }
55
- },
56
- decimal: {
57
- kind: "fieldPreset",
58
- output: {
59
- codecId: "pg/numeric@1",
60
- nativeType: "numeric"
61
- }
62
- },
63
- boolean: {
64
- kind: "fieldPreset",
65
- output: {
66
- codecId: "pg/bool@1",
67
- nativeType: "bool"
68
- }
69
- },
70
- json: {
71
- kind: "fieldPreset",
72
- output: {
73
- codecId: "pg/jsonb@1",
74
- nativeType: "jsonb"
75
- }
76
- },
77
- bytes: {
78
- kind: "fieldPreset",
79
- output: {
80
- codecId: "pg/bytea@1",
81
- nativeType: "bytea"
82
- }
83
- },
84
- dateTime: {
85
- kind: "fieldPreset",
86
- output: {
87
- codecId: "pg/timestamptz@1",
88
- nativeType: "timestamptz"
89
- }
90
- },
91
- temporal: temporalAuthoringPresets({
92
- codecId: "pg/timestamptz@1",
93
- nativeType: "timestamptz"
94
- })
95
- };
96
-
97
- //#endregion
98
- //#region src/core/descriptor-meta.ts
99
- const postgresTargetDescriptorMetaBase = {
100
- kind: "target",
101
- familyId: "sql",
102
- targetId: "postgres",
103
- id: "postgres",
104
- version: "0.0.1",
105
- capabilities: {},
106
- authoring: {
107
- type: postgresAuthoringTypes,
108
- field: postgresAuthoringFieldPresets
109
- }
110
- };
111
- const postgresTargetDescriptorMeta = postgresTargetDescriptorMetaBase;
112
-
113
- //#endregion
114
- export { postgresTargetDescriptorMeta as t };
115
- //# sourceMappingURL=descriptor-meta-B9JFfKCb.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"descriptor-meta-B9JFfKCb.mjs","names":["postgresTargetDescriptorMeta: typeof postgresTargetDescriptorMetaBase & {\n readonly __codecTypes?: CodecTypes;\n}"],"sources":["../src/core/authoring.ts","../src/core/descriptor-meta.ts"],"sourcesContent":["import { temporalAuthoringPresets } from '@prisma-next/family-sql/control';\nimport type {\n AuthoringFieldNamespace,\n AuthoringTypeNamespace,\n} from '@prisma-next/framework-components/authoring';\n\nexport const postgresAuthoringTypes = {\n enum: {\n kind: 'typeConstructor',\n args: [{ kind: 'string' }, { kind: 'stringArray' }],\n output: {\n codecId: 'pg/enum@1',\n nativeType: { kind: 'arg', index: 0 },\n typeParams: {\n values: { kind: 'arg', index: 1 },\n },\n },\n },\n} as const satisfies AuthoringTypeNamespace;\n\n/**\n * Field presets contributed by the Postgres target pack.\n *\n * These mirror the PSL scalar-to-codec mapping used by the Postgres adapter\n * (see `createPostgresPslScalarTypeDescriptors`), so that authoring a field\n * via the TS callback surface (e.g. `field.int()`) and via the PSL scalar\n * surface (e.g. `Int`) lowers to byte-identical contracts.\n */\nexport const postgresAuthoringFieldPresets = {\n text: {\n kind: 'fieldPreset',\n output: {\n codecId: 'pg/text@1',\n nativeType: 'text',\n },\n },\n int: {\n kind: 'fieldPreset',\n output: {\n codecId: 'pg/int4@1',\n nativeType: 'int4',\n },\n },\n bigint: {\n kind: 'fieldPreset',\n output: {\n codecId: 'pg/int8@1',\n nativeType: 'int8',\n },\n },\n float: {\n kind: 'fieldPreset',\n output: {\n codecId: 'pg/float8@1',\n nativeType: 'float8',\n },\n },\n decimal: {\n kind: 'fieldPreset',\n output: {\n codecId: 'pg/numeric@1',\n nativeType: 'numeric',\n },\n },\n boolean: {\n kind: 'fieldPreset',\n output: {\n codecId: 'pg/bool@1',\n nativeType: 'bool',\n },\n },\n json: {\n kind: 'fieldPreset',\n output: {\n codecId: 'pg/jsonb@1',\n nativeType: 'jsonb',\n },\n },\n bytes: {\n kind: 'fieldPreset',\n output: {\n codecId: 'pg/bytea@1',\n nativeType: 'bytea',\n },\n },\n dateTime: {\n kind: 'fieldPreset',\n output: {\n codecId: 'pg/timestamptz@1',\n nativeType: 'timestamptz',\n },\n },\n temporal: temporalAuthoringPresets({\n codecId: 'pg/timestamptz@1',\n nativeType: 'timestamptz',\n }),\n} as const satisfies AuthoringFieldNamespace;\n","import type { CodecTypes } from '../exports/codec-types';\nimport { postgresAuthoringFieldPresets, postgresAuthoringTypes } from './authoring';\n\nconst postgresTargetDescriptorMetaBase = {\n kind: 'target',\n familyId: 'sql',\n targetId: 'postgres',\n id: 'postgres',\n version: '0.0.1',\n capabilities: {},\n authoring: {\n type: postgresAuthoringTypes,\n field: postgresAuthoringFieldPresets,\n },\n} as const;\n\nexport const postgresTargetDescriptorMeta: typeof postgresTargetDescriptorMetaBase & {\n readonly __codecTypes?: CodecTypes;\n} = postgresTargetDescriptorMetaBase;\n"],"mappings":";;;AAMA,MAAa,yBAAyB,EACpC,MAAM;CACJ,MAAM;CACN,MAAM,CAAC,EAAE,MAAM,UAAU,EAAE,EAAE,MAAM,eAAe,CAAC;CACnD,QAAQ;EACN,SAAS;EACT,YAAY;GAAE,MAAM;GAAO,OAAO;GAAG;EACrC,YAAY,EACV,QAAQ;GAAE,MAAM;GAAO,OAAO;GAAG,EAClC;EACF;CACF,EACF;;;;;;;;;AAUD,MAAa,gCAAgC;CAC3C,MAAM;EACJ,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACb;EACF;CACD,KAAK;EACH,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACb;EACF;CACD,QAAQ;EACN,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACb;EACF;CACD,OAAO;EACL,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACb;EACF;CACD,SAAS;EACP,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACb;EACF;CACD,SAAS;EACP,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACb;EACF;CACD,MAAM;EACJ,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACb;EACF;CACD,OAAO;EACL,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACb;EACF;CACD,UAAU;EACR,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACb;EACF;CACD,UAAU,yBAAyB;EACjC,SAAS;EACT,YAAY;EACb,CAAC;CACH;;;;AC7FD,MAAM,mCAAmC;CACvC,MAAM;CACN,UAAU;CACV,UAAU;CACV,IAAI;CACJ,SAAS;CACT,cAAc,EAAE;CAChB,WAAW;EACT,MAAM;EACN,OAAO;EACR;CACF;AAED,MAAaA,+BAET"}