@prisma-next/family-sql 0.12.0-dev.31 → 0.12.0-dev.32

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.
@@ -1,4 +1,4 @@
1
- import { T as SqlPlanTargetDetails, p as SqlMigrationPlanOperation } from "./types-B084B5kI.mjs";
1
+ import { T as SqlPlanTargetDetails, p as SqlMigrationPlanOperation } from "./types-DxNgxFkF.mjs";
2
2
  import { Migration } from "@prisma-next/migration-tools/migration";
3
3
 
4
4
  //#region src/core/sql-migration.d.ts
@@ -1,7 +1,7 @@
1
- import { RuntimeMutationDefaultGenerator } from "@prisma-next/sql-runtime";
2
1
  import { ResolvedDomainModel, UNBOUND_DOMAIN_NAMESPACE_ID, resolveDomainModel } from "@prisma-next/contract/types";
3
2
  import { ResolvedStorageTable, resolveStorageTable } from "@prisma-next/sql-contract/resolve-storage-table";
4
3
  import { RuntimeFamilyDescriptor, RuntimeFamilyInstance } from "@prisma-next/framework-components/execution";
4
+ import { RuntimeMutationDefaultGenerator } from "@prisma-next/sql-runtime";
5
5
 
6
6
  //#region src/core/runtime-instance.d.ts
7
7
  /**
@@ -1,4 +1,4 @@
1
- import { t as SqlControlAdapter } from "./control-adapter-CKCfVhTd.mjs";
1
+ import { t as SqlControlAdapter } from "./control-adapter-uYnmu04p.mjs";
2
2
  import { ContractSerializer, ContractSpace, ControlAdapterDescriptor, ControlDriverInstance, ControlExtensionDescriptor, ControlFamilyInstance, ControlStack, MigratableTargetDescriptor, MigrationOperationPolicy, MigrationPlan, MigrationPlanOperation, MigrationPlannerConflict, MigrationPlannerFailureResult, MigrationPlannerSuccessResult, MigrationRunnerExecutionChecks, MigrationRunnerFailure, MigrationRunnerPerSpaceSuccessValue, MigrationRunnerResult, OpFactoryCall, OperationContext, OperationPreview, OperationPreviewCapable, PslContractInferCapable, SchemaIssue, SchemaVerifier, SchemaViewCapable, SignDatabaseResult, VerifyDatabaseResult, VerifyDatabaseSchemaResult } from "@prisma-next/framework-components/control";
3
3
  import { SqlStorage, StorageColumn, StorageTable, StorageTypeInstance } from "@prisma-next/sql-contract/types";
4
4
  import { PslDocumentAst } from "@prisma-next/framework-components/psl-ast";
@@ -69,6 +69,50 @@ interface SqlControlFamilyInstance extends ControlFamilyInstance<'sql', SqlSchem
69
69
  }): Promise<SqlSchemaIR>;
70
70
  inferPslContract(schemaIR: SqlSchemaIR): PslDocumentAst;
71
71
  lowerAst(ast: AnyQueryAst | DdlNode, context: LowererContext<unknown>): LoweredStatement;
72
+ /**
73
+ * Inserts the initial marker row for `space` (upsert on `space`).
74
+ * Delegates to the target control adapter's write SPI; see
75
+ * `SqlControlAdapter.initMarker`.
76
+ */
77
+ initMarker(options: {
78
+ readonly driver: ControlDriverInstance<'sql', string>;
79
+ readonly space: string;
80
+ readonly destination: {
81
+ readonly storageHash: string;
82
+ readonly profileHash: string;
83
+ readonly invariants?: readonly string[];
84
+ };
85
+ }): Promise<void>;
86
+ /**
87
+ * Compare-and-swap advance of the marker row for `space`. Returns `true`
88
+ * when the swap matched a row; see `SqlControlAdapter.updateMarker`.
89
+ */
90
+ updateMarker(options: {
91
+ readonly driver: ControlDriverInstance<'sql', string>;
92
+ readonly space: string;
93
+ readonly expectedFrom: string;
94
+ readonly destination: {
95
+ readonly storageHash: string;
96
+ readonly profileHash: string;
97
+ readonly invariants?: readonly string[];
98
+ };
99
+ }): Promise<boolean>;
100
+ /**
101
+ * Appends a ledger entry for `space`; see
102
+ * `SqlControlAdapter.writeLedgerEntry`.
103
+ */
104
+ writeLedgerEntry(options: {
105
+ readonly driver: ControlDriverInstance<'sql', string>;
106
+ readonly space: string;
107
+ readonly entry: {
108
+ readonly edgeId: string;
109
+ readonly from: string;
110
+ readonly to: string;
111
+ readonly migrationName: string;
112
+ readonly migrationHash: string;
113
+ readonly operations: readonly unknown[];
114
+ };
115
+ }): Promise<void>;
72
116
  bootstrapControlTableQueries(): readonly DdlNode[];
73
117
  bootstrapSignMarkerQueries(): readonly DdlNode[];
74
118
  toOperationPreview(operations: readonly MigrationPlanOperation[]): OperationPreview;
@@ -398,7 +442,7 @@ interface SqlMigrationRunnerExecuteOptions<TTargetDetails> {
398
442
  */
399
443
  readonly migrationEdges: readonly AggregateMigrationEdgeRef[];
400
444
  }
401
- type SqlMigrationRunnerErrorCode = 'DESTINATION_CONTRACT_MISMATCH' | 'LEGACY_MARKER_SHAPE' | 'MARKER_ORIGIN_MISMATCH' | 'POLICY_VIOLATION' | 'PRECHECK_FAILED' | 'POSTCHECK_FAILED' | 'SCHEMA_VERIFY_FAILED' | 'FOREIGN_KEY_VIOLATION' | 'EXECUTION_FAILED';
445
+ type SqlMigrationRunnerErrorCode = 'DESTINATION_CONTRACT_MISMATCH' | 'LEGACY_MARKER_SHAPE' | 'MARKER_ORIGIN_MISMATCH' | 'MARKER_CAS_FAILURE' | 'POLICY_VIOLATION' | 'PRECHECK_FAILED' | 'POSTCHECK_FAILED' | 'SCHEMA_VERIFY_FAILED' | 'FOREIGN_KEY_VIOLATION' | 'EXECUTION_FAILED';
402
446
  interface SqlMigrationRunnerFailure extends MigrationRunnerFailure {
403
447
  readonly code: SqlMigrationRunnerErrorCode;
404
448
  readonly meta?: AnyRecord;
@@ -473,4 +517,4 @@ interface CreateSqlMigrationPlanOptions<TTargetDetails> {
473
517
  }
474
518
  //#endregion
475
519
  export { SqlPlannerResult as A, SqlMigrationRunnerResult as C, SqlPlannerConflictKind as D, SqlPlannerConflict as E, StorageTypePlanResult as M, SqlControlFamilyInstance as N, SqlPlannerConflictLocation as O, SqlMigrationRunnerFailure as S, SqlPlanTargetDetails as T, SqlMigrationPlannerPlanOptions as _, FieldEvent as a, SqlMigrationRunnerExecuteCallbacks as b, SqlControlAdapterDescriptor as c, SqlMigrationPlan as d, SqlMigrationPlanContractInfo as f, SqlMigrationPlanner as g, SqlMigrationPlanOperationTarget as h, ExpandNativeTypeInput as i, SqlPlannerSuccessResult as j, SqlPlannerFailureResult as k, SqlControlExtensionDescriptor as l, SqlMigrationPlanOperationStep as m, CodecControlHooks as n, FieldEventContext as o, SqlMigrationPlanOperation as p, CreateSqlMigrationPlanOptions as r, ResolveIdentityValueInput as s, AnyRecord as t, SqlControlTargetDescriptor as u, SqlMigrationRunner as v, SqlMigrationRunnerSuccessValue as w, SqlMigrationRunnerExecuteOptions as x, SqlMigrationRunnerErrorCode as y };
476
- //# sourceMappingURL=types-B084B5kI.d.mts.map
520
+ //# sourceMappingURL=types-DxNgxFkF.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-DxNgxFkF.d.mts","names":[],"sources":["../src/core/control-instance.ts","../src/core/migrations/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,34 +1,34 @@
1
1
  {
2
2
  "name": "@prisma-next/family-sql",
3
- "version": "0.12.0-dev.31",
3
+ "version": "0.12.0-dev.32",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "description": "SQL family descriptor for Prisma Next",
8
8
  "dependencies": {
9
- "@prisma-next/contract": "0.12.0-dev.31",
10
- "@prisma-next/emitter": "0.12.0-dev.31",
11
- "@prisma-next/framework-components": "0.12.0-dev.31",
12
- "@prisma-next/migration-tools": "0.12.0-dev.31",
13
- "@prisma-next/operations": "0.12.0-dev.31",
14
- "@prisma-next/sql-contract": "0.12.0-dev.31",
15
- "@prisma-next/sql-contract-emitter": "0.12.0-dev.31",
16
- "@prisma-next/sql-contract-ts": "0.12.0-dev.31",
17
- "@prisma-next/sql-operations": "0.12.0-dev.31",
18
- "@prisma-next/sql-relational-core": "0.12.0-dev.31",
19
- "@prisma-next/sql-runtime": "0.12.0-dev.31",
20
- "@prisma-next/sql-schema-ir": "0.12.0-dev.31",
21
- "@prisma-next/utils": "0.12.0-dev.31",
9
+ "@prisma-next/contract": "0.12.0-dev.32",
10
+ "@prisma-next/emitter": "0.12.0-dev.32",
11
+ "@prisma-next/framework-components": "0.12.0-dev.32",
12
+ "@prisma-next/migration-tools": "0.12.0-dev.32",
13
+ "@prisma-next/operations": "0.12.0-dev.32",
14
+ "@prisma-next/sql-contract": "0.12.0-dev.32",
15
+ "@prisma-next/sql-contract-emitter": "0.12.0-dev.32",
16
+ "@prisma-next/sql-contract-ts": "0.12.0-dev.32",
17
+ "@prisma-next/sql-operations": "0.12.0-dev.32",
18
+ "@prisma-next/sql-relational-core": "0.12.0-dev.32",
19
+ "@prisma-next/sql-runtime": "0.12.0-dev.32",
20
+ "@prisma-next/sql-schema-ir": "0.12.0-dev.32",
21
+ "@prisma-next/utils": "0.12.0-dev.32",
22
22
  "arktype": "^2.2.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@prisma-next/driver-postgres": "0.12.0-dev.31",
26
- "@prisma-next/psl-parser": "0.12.0-dev.31",
27
- "@prisma-next/psl-printer": "0.12.0-dev.31",
28
- "@prisma-next/sql-contract-psl": "0.12.0-dev.31",
29
- "@prisma-next/test-utils": "0.12.0-dev.31",
30
- "@prisma-next/tsconfig": "0.12.0-dev.31",
31
- "@prisma-next/tsdown": "0.12.0-dev.31",
25
+ "@prisma-next/driver-postgres": "0.12.0-dev.32",
26
+ "@prisma-next/psl-parser": "0.12.0-dev.32",
27
+ "@prisma-next/psl-printer": "0.12.0-dev.32",
28
+ "@prisma-next/sql-contract-psl": "0.12.0-dev.32",
29
+ "@prisma-next/test-utils": "0.12.0-dev.32",
30
+ "@prisma-next/tsconfig": "0.12.0-dev.32",
31
+ "@prisma-next/tsdown": "0.12.0-dev.32",
32
32
  "tsdown": "0.22.0",
33
33
  "typescript": "5.9.3",
34
34
  "vitest": "4.1.6"
@@ -70,6 +70,75 @@ export interface SqlControlAdapter<TTarget extends string = string>
70
70
  space?: string,
71
71
  ): Promise<readonly LedgerEntryRecord[]>;
72
72
 
73
+ /**
74
+ * Inserts the initial marker row for `space` (`INSERT` only). Fails when a
75
+ * row for that space already exists. Used by `sign()` so concurrent first-time
76
+ * stamps cannot silently overwrite each other. `updated_at` is DB-side
77
+ * (`now()` / `datetime('now')`). Mirrors `MongoControlAdapter.initMarker`.
78
+ */
79
+ insertMarker(
80
+ driver: ControlDriverInstance<'sql', TTarget>,
81
+ space: string,
82
+ destination: {
83
+ readonly storageHash: string;
84
+ readonly profileHash: string;
85
+ readonly invariants?: readonly string[];
86
+ },
87
+ ): Promise<void>;
88
+
89
+ /**
90
+ * Writes the initial marker row for `space` as an upsert (`INSERT … ON
91
+ * CONFLICT (space) DO UPDATE SET …`), so re-stamping a space overwrites the
92
+ * existing row rather than failing. `updated_at` is stamped with a DB-side
93
+ * time expression (`now()` / `datetime('now')`), never an app-side clock.
94
+ */
95
+ initMarker(
96
+ driver: ControlDriverInstance<'sql', TTarget>,
97
+ space: string,
98
+ destination: {
99
+ readonly storageHash: string;
100
+ readonly profileHash: string;
101
+ readonly invariants?: readonly string[];
102
+ },
103
+ ): Promise<void>;
104
+
105
+ /**
106
+ * Atomically advances the marker row for `space` (compare-and-swap on
107
+ * `core_hash = expectedFrom`). Returns `true` when the swap matched a row,
108
+ * `false` when another process advanced the marker first. `destination.invariants`
109
+ * is written verbatim when supplied (the union/dedupe policy lives upstream)
110
+ * and left untouched when omitted. Mirrors `MongoControlAdapter.updateMarker`.
111
+ */
112
+ updateMarker(
113
+ driver: ControlDriverInstance<'sql', TTarget>,
114
+ space: string,
115
+ expectedFrom: string,
116
+ destination: {
117
+ readonly storageHash: string;
118
+ readonly profileHash: string;
119
+ readonly invariants?: readonly string[];
120
+ },
121
+ ): Promise<boolean>;
122
+
123
+ /**
124
+ * Appends a ledger entry for `space`. Mirrors `MongoControlAdapter.writeLedgerEntry`.
125
+ * The SQL ledger table keys rows by an autoincrement id and partitions reads
126
+ * by `space`, so `entry.edgeId` carries no dedicated column; `from` / `to`
127
+ * land in `origin_core_hash` / `destination_core_hash`.
128
+ */
129
+ writeLedgerEntry(
130
+ driver: ControlDriverInstance<'sql', TTarget>,
131
+ space: string,
132
+ entry: {
133
+ readonly edgeId: string;
134
+ readonly from: string;
135
+ readonly to: string;
136
+ readonly migrationName: string;
137
+ readonly migrationHash: string;
138
+ readonly operations: readonly unknown[];
139
+ },
140
+ ): Promise<void>;
141
+
73
142
  /**
74
143
  * Introspects a database schema and returns a raw SqlSchemaIR.
75
144
  *
@@ -39,7 +39,6 @@ import type {
39
39
  LoweredStatement,
40
40
  LowererContext,
41
41
  } from '@prisma-next/sql-relational-core/ast';
42
- import { writeContractMarker } from '@prisma-next/sql-runtime';
43
42
  import { defaultIndexName } from '@prisma-next/sql-schema-ir/naming';
44
43
  import type { SqlSchemaIR, SqlTableIR } from '@prisma-next/sql-schema-ir/types';
45
44
  import { ifDefined } from '@prisma-next/utils/defined';
@@ -244,6 +243,53 @@ export interface SqlControlFamilyInstance
244
243
 
245
244
  lowerAst(ast: AnyQueryAst | DdlNode, context: LowererContext<unknown>): LoweredStatement;
246
245
 
246
+ /**
247
+ * Inserts the initial marker row for `space` (upsert on `space`).
248
+ * Delegates to the target control adapter's write SPI; see
249
+ * `SqlControlAdapter.initMarker`.
250
+ */
251
+ initMarker(options: {
252
+ readonly driver: ControlDriverInstance<'sql', string>;
253
+ readonly space: string;
254
+ readonly destination: {
255
+ readonly storageHash: string;
256
+ readonly profileHash: string;
257
+ readonly invariants?: readonly string[];
258
+ };
259
+ }): Promise<void>;
260
+
261
+ /**
262
+ * Compare-and-swap advance of the marker row for `space`. Returns `true`
263
+ * when the swap matched a row; see `SqlControlAdapter.updateMarker`.
264
+ */
265
+ updateMarker(options: {
266
+ readonly driver: ControlDriverInstance<'sql', string>;
267
+ readonly space: string;
268
+ readonly expectedFrom: string;
269
+ readonly destination: {
270
+ readonly storageHash: string;
271
+ readonly profileHash: string;
272
+ readonly invariants?: readonly string[];
273
+ };
274
+ }): Promise<boolean>;
275
+
276
+ /**
277
+ * Appends a ledger entry for `space`; see
278
+ * `SqlControlAdapter.writeLedgerEntry`.
279
+ */
280
+ writeLedgerEntry(options: {
281
+ readonly driver: ControlDriverInstance<'sql', string>;
282
+ readonly space: string;
283
+ readonly entry: {
284
+ readonly edgeId: string;
285
+ readonly from: string;
286
+ readonly to: string;
287
+ readonly migrationName: string;
288
+ readonly migrationHash: string;
289
+ readonly operations: readonly unknown[];
290
+ };
291
+ }): Promise<void>;
292
+
247
293
  bootstrapControlTableQueries(): readonly DdlNode[];
248
294
 
249
295
  bootstrapSignMarkerQueries(): readonly DdlNode[];
@@ -556,14 +602,10 @@ export function createSqlFamilyInstance<TTargetId extends string>(
556
602
  let previousHashes: { storageHash?: string; profileHash?: string } | undefined;
557
603
 
558
604
  if (!existingMarker) {
559
- const write = writeContractMarker({
560
- space: APP_SPACE_ID,
605
+ await controlAdapter.insertMarker(driver, APP_SPACE_ID, {
561
606
  storageHash: contractStorageHash,
562
607
  profileHash: contractProfileHash,
563
- contractJson: contractInput,
564
- canonicalVersion: 1,
565
608
  });
566
- await driver.query(write.insert.sql, write.insert.params);
567
609
  markerCreated = true;
568
610
  } else {
569
611
  const existingStorageHash = existingMarker.storageHash;
@@ -577,14 +619,18 @@ export function createSqlFamilyInstance<TTargetId extends string>(
577
619
  storageHash: existingStorageHash,
578
620
  profileHash: existingProfileHash,
579
621
  };
580
- const write = writeContractMarker({
581
- space: APP_SPACE_ID,
582
- storageHash: contractStorageHash,
583
- profileHash: contractProfileHash,
584
- contractJson: contractInput,
585
- canonicalVersion: existingMarker.canonicalVersion ?? 1,
586
- });
587
- await driver.query(write.update.sql, write.update.params);
622
+ const updated = await controlAdapter.updateMarker(
623
+ driver,
624
+ APP_SPACE_ID,
625
+ existingStorageHash,
626
+ {
627
+ storageHash: contractStorageHash,
628
+ profileHash: contractProfileHash,
629
+ },
630
+ );
631
+ if (!updated) {
632
+ throw new Error('CAS conflict: marker was modified by another process during sign');
633
+ }
588
634
  markerUpdated = true;
589
635
  }
590
636
  }
@@ -642,6 +688,48 @@ export function createSqlFamilyInstance<TTargetId extends string>(
642
688
  }): Promise<readonly LedgerEntryRecord[]> {
643
689
  return getControlAdapter().readLedger(options.driver, options.space);
644
690
  },
691
+ async initMarker(options: {
692
+ readonly driver: ControlDriverInstance<'sql', string>;
693
+ readonly space: string;
694
+ readonly destination: {
695
+ readonly storageHash: string;
696
+ readonly profileHash: string;
697
+ readonly invariants?: readonly string[];
698
+ };
699
+ }): Promise<void> {
700
+ return getControlAdapter().initMarker(options.driver, options.space, options.destination);
701
+ },
702
+ async updateMarker(options: {
703
+ readonly driver: ControlDriverInstance<'sql', string>;
704
+ readonly space: string;
705
+ readonly expectedFrom: string;
706
+ readonly destination: {
707
+ readonly storageHash: string;
708
+ readonly profileHash: string;
709
+ readonly invariants?: readonly string[];
710
+ };
711
+ }): Promise<boolean> {
712
+ return getControlAdapter().updateMarker(
713
+ options.driver,
714
+ options.space,
715
+ options.expectedFrom,
716
+ options.destination,
717
+ );
718
+ },
719
+ async writeLedgerEntry(options: {
720
+ readonly driver: ControlDriverInstance<'sql', string>;
721
+ readonly space: string;
722
+ readonly entry: {
723
+ readonly edgeId: string;
724
+ readonly from: string;
725
+ readonly to: string;
726
+ readonly migrationName: string;
727
+ readonly migrationHash: string;
728
+ readonly operations: readonly unknown[];
729
+ };
730
+ }): Promise<void> {
731
+ return getControlAdapter().writeLedgerEntry(options.driver, options.space, options.entry);
732
+ },
645
733
  async introspect(options: {
646
734
  readonly driver: ControlDriverInstance<'sql', string>;
647
735
  readonly contract?: unknown;
@@ -399,6 +399,7 @@ export type SqlMigrationRunnerErrorCode =
399
399
  | 'DESTINATION_CONTRACT_MISMATCH'
400
400
  | 'LEGACY_MARKER_SHAPE'
401
401
  | 'MARKER_ORIGIN_MISMATCH'
402
+ | 'MARKER_CAS_FAILURE'
402
403
  | 'POLICY_VIOLATION'
403
404
  | 'PRECHECK_FAILED'
404
405
  | 'POSTCHECK_FAILED'
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-adapter-CKCfVhTd.d.mts","names":[],"sources":["../src/core/control-adapter.ts"],"mappings":";;;;;;;;;;AA8BA;;;;UAAiB,iBAAA,0CACP,sBAAA,QAA8B,OAAA;EAiB5B;;;;;;;;;;;;;;;EADV,UAAA,CACE,MAAA,EAAQ,qBAAA,QAA6B,OAAA,GACrC,KAAA,WACC,OAAA,CAAQ,oBAAA;EA6CiB;;;;;;;EApC5B,cAAA,CACE,MAAA,EAAQ,qBAAA,QAA6B,OAAA,IACpC,OAAA,CAAQ,WAAA,SAAoB,oBAAA;EA4EnB;;;;EAtEZ,UAAA,CACE,MAAA,EAAQ,qBAAA,QAA6B,OAAA,GACrC,KAAA,YACC,OAAA,UAAiB,iBAAA;EA4FuB;;;;;;;;;;;;EA9E3C,UAAA,CACE,MAAA,EAAQ,qBAAA,QAA6B,OAAA,GACrC,QAAA,YACA,MAAA,YACC,OAAA,CAAQ,WAAA;EAtCR;;;;;EAAA,SA6CM,gBAAA,GAAmB,iBAAA;EAlCzB;;;;;EAAA,SAyCM,mBAAA,GAAsB,oBAAA;EAlC7B;;;;;;;;EAAA,SA4CO,iBAAA,GAAoB,iBAAA;EAzB3B;;;;;;;;EAAA,SAmCO,yBAAA,IACP,MAAA,EAAQ,WAAA,EACR,QAAA,EAAU,wBAAA,EACV,WAAA;EAHO;;;;;;EAAA,SAWA,oCAAA,IACP,QAAA,EAAU,QAAA,CAAS,UAAA,OAEnB,MAAA,EAAQ,WAAA,EACR,QAAA,EAAU,wBAAA,EACV,WAAA;EAJU;;;;EAWZ,4BAAA,aAAyC,OAAA;EAR7B;;;;EAcZ,0BAAA,aAAuC,OAAA;EAAvC;;;;;;;;;EAWA,KAAA,CAAM,GAAA,EAAK,WAAA,GAAc,OAAA,EAAS,OAAA,EAAS,cAAA,YAA0B,gBAAA;AAAA;AASvE;;;;;;AAAA,UAAiB,2BAAA;EAO+C;;;;;;EAA9D,MAAA,CAAO,KAAA,EAAO,YAAA,QAAoB,OAAA,IAAW,iBAAA,CAAkB,OAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-B084B5kI.d.mts","names":[],"sources":["../src/core/control-instance.ts","../src/core/migrations/types.ts"],"mappings":"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"}