@prisma-next/family-sql 0.5.0-dev.9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/{authoring-type-constructors-BAR65pSK.mjs → authoring-type-constructors-F4JpCJl7.mjs} +14 -15
- package/dist/authoring-type-constructors-F4JpCJl7.mjs.map +1 -0
- package/dist/control-adapter.d.mts +26 -2
- package/dist/control-adapter.d.mts.map +1 -1
- package/dist/control-adapter.mjs +1 -1
- package/dist/control.d.mts +122 -40
- package/dist/control.d.mts.map +1 -1
- package/dist/control.mjs +1169 -24
- package/dist/control.mjs.map +1 -1
- package/dist/migration.d.mts +22 -24
- package/dist/migration.d.mts.map +1 -1
- package/dist/migration.mjs +25 -24
- package/dist/migration.mjs.map +1 -1
- package/dist/pack.d.mts +35 -23
- package/dist/pack.d.mts.map +1 -1
- package/dist/pack.mjs +3 -5
- package/dist/pack.mjs.map +1 -1
- package/dist/runtime.d.mts +19 -2
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +26 -4
- package/dist/runtime.mjs.map +1 -1
- package/dist/schema-verify.d.mts +2 -4
- package/dist/schema-verify.d.mts.map +1 -1
- package/dist/schema-verify.mjs +2 -3
- package/dist/test-utils.d.mts +2 -2
- package/dist/test-utils.mjs +2 -3
- package/dist/timestamp-now-generator-BWp8S2sa.mjs +86 -0
- package/dist/timestamp-now-generator-BWp8S2sa.mjs.map +1 -0
- package/dist/{types-C6K4mxDM.d.mts → types-BQBbcXg3.d.mts} +206 -28
- package/dist/types-BQBbcXg3.d.mts.map +1 -0
- package/dist/verify-pRYxnpiG.mjs +81 -0
- package/dist/verify-pRYxnpiG.mjs.map +1 -0
- package/dist/{verify-sql-schema-BBhkqEDo.d.mts → verify-sql-schema-CPHiuYHR.d.mts} +2 -3
- package/dist/verify-sql-schema-CPHiuYHR.d.mts.map +1 -0
- package/dist/{verify-sql-schema-Ovz7RXR5.mjs → verify-sql-schema-r1-2apHI.mjs} +18 -9
- package/dist/verify-sql-schema-r1-2apHI.mjs.map +1 -0
- package/dist/verify.d.mts +16 -21
- package/dist/verify.d.mts.map +1 -1
- package/dist/verify.mjs +2 -3
- package/package.json +23 -21
- package/src/core/authoring-field-presets.ts +35 -23
- package/src/core/control-adapter.ts +32 -0
- package/src/core/control-descriptor.ts +2 -1
- package/src/core/control-instance.ts +116 -18
- package/src/core/migrations/field-event-planner.ts +192 -0
- package/src/core/migrations/plan-helpers.ts +4 -0
- package/src/core/migrations/types.ts +200 -25
- package/src/core/operation-preview.ts +62 -0
- package/src/core/psl-contract-infer/default-mapping.ts +56 -0
- package/src/core/psl-contract-infer/name-transforms.ts +178 -0
- package/src/core/psl-contract-infer/postgres-default-mapping.ts +16 -0
- package/src/core/psl-contract-infer/postgres-type-map.ts +165 -0
- package/src/core/psl-contract-infer/printer-config.ts +55 -0
- package/src/core/psl-contract-infer/raw-default-parser.ts +91 -0
- package/src/core/psl-contract-infer/relation-inference.ts +196 -0
- package/src/core/psl-contract-infer/sql-schema-ir-to-psl-ast.ts +832 -0
- package/src/core/schema-verify/verify-helpers.ts +46 -6
- package/src/core/sql-migration.ts +25 -23
- package/src/core/timestamp-now-generator.ts +74 -0
- package/src/core/timestamp-now-runtime-generator.ts +24 -0
- package/src/core/verify.ts +46 -108
- package/src/exports/control.ts +11 -1
- package/src/exports/runtime.ts +2 -0
- package/src/exports/test-utils.ts +0 -1
- package/src/exports/verify.ts +1 -1
- package/dist/authoring-type-constructors-BAR65pSK.mjs.map +0 -1
- package/dist/types-C6K4mxDM.d.mts.map +0 -1
- package/dist/verify-4GshvY4p.mjs +0 -122
- package/dist/verify-4GshvY4p.mjs.map +0 -1
- package/dist/verify-sql-schema-BBhkqEDo.d.mts.map +0 -1
- package/dist/verify-sql-schema-Ovz7RXR5.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -111,7 +111,7 @@ The descriptor is "pure data + factory" - it only provides the hook and factory
|
|
|
111
111
|
- **`src/core/control-descriptor.ts`**: `SqlFamilyDescriptor` class implementing `ControlFamilyDescriptor` interface (pure data + factory)
|
|
112
112
|
- **`src/core/control-instance.ts`**: `createSqlFamilyInstance` function that creates `SqlFamilyInstance` with domain action methods (`validateContract`, `verify`, `schemaVerify`, `introspect`, `toSchemaView`, `emitContract`). Contains `convertOperationManifest` function used internally by instance creation and test utilities in the same package.
|
|
113
113
|
- **`src/core/assembly.ts`**: Assembly helpers for extracting type imports, collecting codec-owned storage type control hooks, and composing mutation-default registries with duplicate detection.
|
|
114
|
-
- **`src/core/verify.ts`**: Verification helpers (`
|
|
114
|
+
- **`src/core/verify.ts`**: Verification helpers (`parseContractMarkerRow`, `collectSupportedCodecTypeIds`)
|
|
115
115
|
- **`src/core/control-adapter.ts`**: SQL control adapter interface (`SqlControlAdapter`) for control-plane operations
|
|
116
116
|
- **`src/core/migrations/`**: Migration IR helpers plus planner and runner SPI types (`MigrationPlanner`, `MigrationRunner`, `SqlControlTargetDescriptor`). Runners return `MigrationRunnerResult` which is a union of success/failure.
|
|
117
117
|
- **`src/core/migrations/contract-to-schema-ir.ts`**: `contractToSchemaIR(contract, { annotationNamespace, ... })` converts a contract to `SqlSchemaIR` for offline migration planning (used by `migration plan` to synthesize the "from" schema without a database connection). Also exports `detectDestructiveChanges(from, to)` which compares two `SqlStorage` values and returns a list of destructive changes (dropped tables, dropped columns) for migration policy enforcement.
|
|
@@ -135,7 +135,7 @@ The runner returns structured errors with the following codes:
|
|
|
135
135
|
- **`./control`**: Control plane entry point for CLI/config usage (exports `SqlFamilyDescriptor`)
|
|
136
136
|
- **`./control-adapter`**: SQL control adapter interface (`SqlControlAdapter`, `SqlControlAdapterDescriptor`) for target-specific adapters
|
|
137
137
|
- **`./runtime`**: Runtime plane identity exports only (family ID, types, descriptor identity). Does **not** export runtime creation helpers—use `instantiateExecutionStack` from `@prisma-next/framework-components/execution` and `createExecutionContext`, `createRuntime`, `createSqlExecutionStack` from `@prisma-next/sql-runtime`. See [ADR 152](../../../docs/architecture%20docs/adrs/ADR%20152%20-%20Execution%20Plane%20Descriptors%20and%20Instances.md).
|
|
138
|
-
- **`./verify`**:
|
|
138
|
+
- **`./verify`**: Marker row parsing helper (`parseContractMarkerRow`). Marker reads are owned by each `SqlControlAdapter` (e.g. `PostgresControlAdapter.readMarker`) so dialect-specific SQL stays target-local.
|
|
139
139
|
|
|
140
140
|
## Dependencies
|
|
141
141
|
|
package/dist/{authoring-type-constructors-BAR65pSK.mjs → authoring-type-constructors-F4JpCJl7.mjs}
RENAMED
|
@@ -81,10 +81,10 @@ const sqlFamilyAuthoringFieldPresets = {
|
|
|
81
81
|
codecId: CHARACTER_CODEC_ID,
|
|
82
82
|
nativeType: CHARACTER_NATIVE_TYPE,
|
|
83
83
|
typeParams: { length: 36 },
|
|
84
|
-
|
|
84
|
+
executionDefaults: { onCreate: {
|
|
85
85
|
kind: "generator",
|
|
86
86
|
id: "uuidv4"
|
|
87
|
-
},
|
|
87
|
+
} },
|
|
88
88
|
id: true
|
|
89
89
|
}
|
|
90
90
|
},
|
|
@@ -94,10 +94,10 @@ const sqlFamilyAuthoringFieldPresets = {
|
|
|
94
94
|
codecId: CHARACTER_CODEC_ID,
|
|
95
95
|
nativeType: CHARACTER_NATIVE_TYPE,
|
|
96
96
|
typeParams: { length: 36 },
|
|
97
|
-
|
|
97
|
+
executionDefaults: { onCreate: {
|
|
98
98
|
kind: "generator",
|
|
99
99
|
id: "uuidv7"
|
|
100
|
-
},
|
|
100
|
+
} },
|
|
101
101
|
id: true
|
|
102
102
|
}
|
|
103
103
|
},
|
|
@@ -107,10 +107,10 @@ const sqlFamilyAuthoringFieldPresets = {
|
|
|
107
107
|
codecId: CHARACTER_CODEC_ID,
|
|
108
108
|
nativeType: CHARACTER_NATIVE_TYPE,
|
|
109
109
|
typeParams: { length: 26 },
|
|
110
|
-
|
|
110
|
+
executionDefaults: { onCreate: {
|
|
111
111
|
kind: "generator",
|
|
112
112
|
id: "ulid"
|
|
113
|
-
},
|
|
113
|
+
} },
|
|
114
114
|
id: true
|
|
115
115
|
}
|
|
116
116
|
},
|
|
@@ -126,7 +126,7 @@ const sqlFamilyAuthoringFieldPresets = {
|
|
|
126
126
|
path: ["size"],
|
|
127
127
|
default: 21
|
|
128
128
|
} },
|
|
129
|
-
|
|
129
|
+
executionDefaults: { onCreate: {
|
|
130
130
|
kind: "generator",
|
|
131
131
|
id: "nanoid",
|
|
132
132
|
params: { size: {
|
|
@@ -134,7 +134,7 @@ const sqlFamilyAuthoringFieldPresets = {
|
|
|
134
134
|
index: 0,
|
|
135
135
|
path: ["size"]
|
|
136
136
|
} }
|
|
137
|
-
},
|
|
137
|
+
} },
|
|
138
138
|
id: true
|
|
139
139
|
}
|
|
140
140
|
},
|
|
@@ -144,10 +144,10 @@ const sqlFamilyAuthoringFieldPresets = {
|
|
|
144
144
|
codecId: CHARACTER_CODEC_ID,
|
|
145
145
|
nativeType: CHARACTER_NATIVE_TYPE,
|
|
146
146
|
typeParams: { length: 24 },
|
|
147
|
-
|
|
147
|
+
executionDefaults: { onCreate: {
|
|
148
148
|
kind: "generator",
|
|
149
149
|
id: "cuid2"
|
|
150
|
-
},
|
|
150
|
+
} },
|
|
151
151
|
id: true
|
|
152
152
|
}
|
|
153
153
|
},
|
|
@@ -157,16 +157,15 @@ const sqlFamilyAuthoringFieldPresets = {
|
|
|
157
157
|
codecId: CHARACTER_CODEC_ID,
|
|
158
158
|
nativeType: CHARACTER_NATIVE_TYPE,
|
|
159
159
|
typeParams: { length: 27 },
|
|
160
|
-
|
|
160
|
+
executionDefaults: { onCreate: {
|
|
161
161
|
kind: "generator",
|
|
162
162
|
id: "ksuid"
|
|
163
|
-
},
|
|
163
|
+
} },
|
|
164
164
|
id: true
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
};
|
|
169
|
-
|
|
170
169
|
//#endregion
|
|
171
170
|
//#region src/core/authoring-type-constructors.ts
|
|
172
171
|
const sqlFamilyAuthoringTypes = { sql: { String: {
|
|
@@ -187,7 +186,7 @@ const sqlFamilyAuthoringTypes = { sql: { String: {
|
|
|
187
186
|
} }
|
|
188
187
|
}
|
|
189
188
|
} } };
|
|
190
|
-
|
|
191
189
|
//#endregion
|
|
192
190
|
export { sqlFamilyAuthoringFieldPresets as n, sqlFamilyAuthoringTypes as t };
|
|
193
|
-
|
|
191
|
+
|
|
192
|
+
//# sourceMappingURL=authoring-type-constructors-F4JpCJl7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoring-type-constructors-F4JpCJl7.mjs","names":[],"sources":["../src/core/authoring-field-presets.ts","../src/core/authoring-type-constructors.ts"],"sourcesContent":["import type { AuthoringFieldNamespace } from '@prisma-next/framework-components/authoring';\n\n/**\n * Family-level SQL authoring field presets.\n *\n * Only presets whose codec IDs align with the ID generator metadata live here\n * (see `@prisma-next/ids`). These presets are target-agnostic because the\n * generator metadata fixes their codec/native-type to `sql/char@1`\n * (`character`) regardless of target, and the PSL interpreter lets the\n * generator override the scalar descriptor.\n *\n * Scalar presets that map to target-specific codecs (e.g. `text`, `int`,\n * `boolean`, `dateTime`) are contributed by the target pack (see\n * `postgresAuthoringFieldPresets` in `@prisma-next/target-postgres`) so the\n * TS callback surface and the PSL scalar surface lower to byte-identical\n * contracts for the active target.\n */\n\nconst CHARACTER_CODEC_ID = 'sql/char@1';\nconst CHARACTER_NATIVE_TYPE = 'character';\n\nconst nanoidOptionsArgument = {\n kind: 'object',\n optional: true,\n properties: {\n size: {\n kind: 'number',\n optional: true,\n integer: true,\n minimum: 2,\n maximum: 255,\n },\n },\n} as const;\n\nexport const sqlFamilyAuthoringFieldPresets = {\n uuid: {\n kind: 'fieldPreset',\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: 36,\n },\n },\n },\n ulid: {\n kind: 'fieldPreset',\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: 26,\n },\n },\n },\n nanoid: {\n kind: 'fieldPreset',\n args: [nanoidOptionsArgument],\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: {\n kind: 'arg',\n index: 0,\n path: ['size'],\n default: 21,\n },\n },\n },\n },\n cuid2: {\n kind: 'fieldPreset',\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: 24,\n },\n },\n },\n ksuid: {\n kind: 'fieldPreset',\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: 27,\n },\n },\n },\n id: {\n uuidv4: {\n kind: 'fieldPreset',\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: 36,\n },\n executionDefaults: {\n onCreate: {\n kind: 'generator',\n id: 'uuidv4',\n },\n },\n id: true,\n },\n },\n uuidv7: {\n kind: 'fieldPreset',\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: 36,\n },\n executionDefaults: {\n onCreate: {\n kind: 'generator',\n id: 'uuidv7',\n },\n },\n id: true,\n },\n },\n ulid: {\n kind: 'fieldPreset',\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: 26,\n },\n executionDefaults: {\n onCreate: {\n kind: 'generator',\n id: 'ulid',\n },\n },\n id: true,\n },\n },\n nanoid: {\n kind: 'fieldPreset',\n args: [nanoidOptionsArgument],\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: {\n kind: 'arg',\n index: 0,\n path: ['size'],\n default: 21,\n },\n },\n executionDefaults: {\n onCreate: {\n kind: 'generator',\n id: 'nanoid',\n params: {\n size: {\n kind: 'arg',\n index: 0,\n path: ['size'],\n },\n },\n },\n },\n id: true,\n },\n },\n cuid2: {\n kind: 'fieldPreset',\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: 24,\n },\n executionDefaults: {\n onCreate: {\n kind: 'generator',\n id: 'cuid2',\n },\n },\n id: true,\n },\n },\n ksuid: {\n kind: 'fieldPreset',\n output: {\n codecId: CHARACTER_CODEC_ID,\n nativeType: CHARACTER_NATIVE_TYPE,\n typeParams: {\n length: 27,\n },\n executionDefaults: {\n onCreate: {\n kind: 'generator',\n id: 'ksuid',\n },\n },\n id: true,\n },\n },\n },\n} as const satisfies AuthoringFieldNamespace;\n","import type { AuthoringTypeNamespace } from '@prisma-next/framework-components/authoring';\n\nexport const sqlFamilyAuthoringTypes = {\n sql: {\n String: {\n kind: 'typeConstructor',\n args: [{ kind: 'number', name: 'length', integer: true, minimum: 1, maximum: 10485760 }],\n output: {\n codecId: 'sql/varchar@1',\n nativeType: 'character varying',\n typeParams: {\n length: { kind: 'arg', index: 0 },\n },\n },\n },\n },\n} as const satisfies AuthoringTypeNamespace;\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,MAAM,qBAAqB;AAC3B,MAAM,wBAAwB;AAE9B,MAAM,wBAAwB;CAC5B,MAAM;CACN,UAAU;CACV,YAAY,EACV,MAAM;EACJ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,SAAS;EACV,EACF;CACF;AAED,MAAa,iCAAiC;CAC5C,MAAM;EACJ,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACZ,YAAY,EACV,QAAQ,IACT;GACF;EACF;CACD,MAAM;EACJ,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACZ,YAAY,EACV,QAAQ,IACT;GACF;EACF;CACD,QAAQ;EACN,MAAM;EACN,MAAM,CAAC,sBAAsB;EAC7B,QAAQ;GACN,SAAS;GACT,YAAY;GACZ,YAAY,EACV,QAAQ;IACN,MAAM;IACN,OAAO;IACP,MAAM,CAAC,OAAO;IACd,SAAS;IACV,EACF;GACF;EACF;CACD,OAAO;EACL,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACZ,YAAY,EACV,QAAQ,IACT;GACF;EACF;CACD,OAAO;EACL,MAAM;EACN,QAAQ;GACN,SAAS;GACT,YAAY;GACZ,YAAY,EACV,QAAQ,IACT;GACF;EACF;CACD,IAAI;EACF,QAAQ;GACN,MAAM;GACN,QAAQ;IACN,SAAS;IACT,YAAY;IACZ,YAAY,EACV,QAAQ,IACT;IACD,mBAAmB,EACjB,UAAU;KACR,MAAM;KACN,IAAI;KACL,EACF;IACD,IAAI;IACL;GACF;EACD,QAAQ;GACN,MAAM;GACN,QAAQ;IACN,SAAS;IACT,YAAY;IACZ,YAAY,EACV,QAAQ,IACT;IACD,mBAAmB,EACjB,UAAU;KACR,MAAM;KACN,IAAI;KACL,EACF;IACD,IAAI;IACL;GACF;EACD,MAAM;GACJ,MAAM;GACN,QAAQ;IACN,SAAS;IACT,YAAY;IACZ,YAAY,EACV,QAAQ,IACT;IACD,mBAAmB,EACjB,UAAU;KACR,MAAM;KACN,IAAI;KACL,EACF;IACD,IAAI;IACL;GACF;EACD,QAAQ;GACN,MAAM;GACN,MAAM,CAAC,sBAAsB;GAC7B,QAAQ;IACN,SAAS;IACT,YAAY;IACZ,YAAY,EACV,QAAQ;KACN,MAAM;KACN,OAAO;KACP,MAAM,CAAC,OAAO;KACd,SAAS;KACV,EACF;IACD,mBAAmB,EACjB,UAAU;KACR,MAAM;KACN,IAAI;KACJ,QAAQ,EACN,MAAM;MACJ,MAAM;MACN,OAAO;MACP,MAAM,CAAC,OAAO;MACf,EACF;KACF,EACF;IACD,IAAI;IACL;GACF;EACD,OAAO;GACL,MAAM;GACN,QAAQ;IACN,SAAS;IACT,YAAY;IACZ,YAAY,EACV,QAAQ,IACT;IACD,mBAAmB,EACjB,UAAU;KACR,MAAM;KACN,IAAI;KACL,EACF;IACD,IAAI;IACL;GACF;EACD,OAAO;GACL,MAAM;GACN,QAAQ;IACN,SAAS;IACT,YAAY;IACZ,YAAY,EACV,QAAQ,IACT;IACD,mBAAmB,EACjB,UAAU;KACR,MAAM;KACN,IAAI;KACL,EACF;IACD,IAAI;IACL;GACF;EACF;CACF;;;AC/MD,MAAa,0BAA0B,EACrC,KAAK,EACH,QAAQ;CACN,MAAM;CACN,MAAM,CAAC;EAAE,MAAM;EAAU,MAAM;EAAU,SAAS;EAAM,SAAS;EAAG,SAAS;EAAU,CAAC;CACxF,QAAQ;EACN,SAAS;EACT,YAAY;EACZ,YAAY,EACV,QAAQ;GAAE,MAAM;GAAO,OAAO;GAAG,EAClC;EACF;CACF,EACF,EACF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { n as NativeTypeNormalizer, t as DefaultNormalizer } from "./verify-sql-schema-
|
|
1
|
+
import { n as NativeTypeNormalizer, t as DefaultNormalizer } from "./verify-sql-schema-CPHiuYHR.mjs";
|
|
2
2
|
import { ControlAdapterInstance, ControlDriverInstance, ControlStack } from "@prisma-next/framework-components/control";
|
|
3
|
+
import { ContractMarkerRecord } from "@prisma-next/contract/types";
|
|
3
4
|
import { AnyQueryAst, LoweredStatement, LowererContext } from "@prisma-next/sql-relational-core/ast";
|
|
4
5
|
import { SqlSchemaIR } from "@prisma-next/sql-schema-ir/types";
|
|
5
6
|
|
|
6
7
|
//#region src/core/control-adapter.d.ts
|
|
7
|
-
|
|
8
8
|
/**
|
|
9
9
|
* SQL control adapter interface for control-plane operations.
|
|
10
10
|
* Implemented by target-specific adapters (e.g., Postgres, MySQL).
|
|
@@ -12,6 +12,30 @@ import { SqlSchemaIR } from "@prisma-next/sql-schema-ir/types";
|
|
|
12
12
|
* @template TTarget - The target ID (e.g., 'postgres', 'mysql')
|
|
13
13
|
*/
|
|
14
14
|
interface SqlControlAdapter<TTarget extends string = string> extends ControlAdapterInstance<'sql', TTarget> {
|
|
15
|
+
/**
|
|
16
|
+
* Reads the contract marker for `space` from the database, returning
|
|
17
|
+
* `null` if no marker row exists for that space (or if the marker
|
|
18
|
+
* table itself is missing). Implementations are responsible for the
|
|
19
|
+
* dialect-specific existence probe (e.g. Postgres
|
|
20
|
+
* `information_schema.tables` vs SQLite `sqlite_master`) and parameter
|
|
21
|
+
* placeholders.
|
|
22
|
+
*
|
|
23
|
+
* `space` is required so callers cannot accidentally fall through to
|
|
24
|
+
* the app's marker row when reading per-extension markers.
|
|
25
|
+
*
|
|
26
|
+
* @param driver - ControlDriverInstance for executing queries (target-specific)
|
|
27
|
+
* @param space - Contract space id whose marker row to read (e.g. `'app'`)
|
|
28
|
+
* @returns Resolved marker record, or `null` if not yet stamped.
|
|
29
|
+
*/
|
|
30
|
+
readMarker(driver: ControlDriverInstance<'sql', TTarget>, space: string): Promise<ContractMarkerRecord | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Reads every marker row from `prisma_contract.marker` (one per
|
|
33
|
+
* contract space) and returns them keyed by `space`. Used by the
|
|
34
|
+
* per-space verifier to detect marker-vs-on-disk drift and orphan
|
|
35
|
+
* marker rows. Returns an empty map when the marker table does not
|
|
36
|
+
* yet exist (fresh database / never-signed project).
|
|
37
|
+
*/
|
|
38
|
+
readAllMarkers(driver: ControlDriverInstance<'sql', TTarget>): Promise<ReadonlyMap<string, ContractMarkerRecord>>;
|
|
15
39
|
/**
|
|
16
40
|
* Introspects a database schema and returns a raw SqlSchemaIR.
|
|
17
41
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-adapter.d.mts","names":[],"sources":["../src/core/control-adapter.ts"],"
|
|
1
|
+
{"version":3,"file":"control-adapter.d.mts","names":[],"sources":["../src/core/control-adapter.ts"],"mappings":";;;;;;;;;AAoBA;;;;UAAiB,iBAAA,0CACP,sBAAA,QAA8B,OAAA;EAiB5B;;;;;;;;;;;;;;;EADV,UAAA,CACE,MAAA,EAAQ,qBAAA,QAA6B,OAAA,GACrC,KAAA,WACC,OAAA,CAAQ,oBAAA;EAsDgD;;;;;;;EA7C3D,cAAA,CACE,MAAA,EAAQ,qBAAA,QAA6B,OAAA,IACpC,OAAA,CAAQ,WAAA,SAAoB,oBAAA;EAbrB;;;;;;;;;;;;EA2BV,UAAA,CACE,MAAA,EAAQ,qBAAA,QAA6B,OAAA,GACrC,QAAA,YACA,MAAA,YACC,OAAA,CAAQ,WAAA;EAJX;;;;;EAAA,SAWS,gBAAA,GAAmB,iBAAA;EAPzB;;;;;EAAA,SAcM,mBAAA,GAAsB,oBAAA;EAW/B;;;;;;;;AASF;EATE,KAAA,CAAM,GAAA,EAAK,WAAA,EAAa,OAAA,EAAS,cAAA,YAA0B,gBAAA;AAAA;;;;;;;UAS5C,2BAAA;EAOf;;;;;;EAAA,MAAA,CAAO,KAAA,EAAO,YAAA,QAAoB,OAAA,IAAW,iBAAA,CAAkB,OAAA;AAAA"}
|
package/dist/control-adapter.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {};
|
package/dist/control.d.mts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { A as
|
|
2
|
-
import { ControlFamilyDescriptor, ControlStack, MigrationOperationClass, MigrationOperationPolicy, MigrationOperationPolicy as MigrationOperationPolicy$1, MigrationPlan, MigrationPlanOperation, MigrationPlanner, MigrationPlannerConflict, MigrationPlannerConflict as MigrationPlannerConflict$1, MigrationPlannerResult, TargetMigrationsCapability, assembleAuthoringContributions } from "@prisma-next/framework-components/control";
|
|
1
|
+
import { A as SqlPlanTargetDetails, B as SchemaVerifyOptions, C as SqlMigrationRunner, D as SqlMigrationRunnerFailure, E as SqlMigrationRunnerExecuteOptions, F as SqlPlannerResult, I as SqlPlannerSuccessResult, L as StorageTypePlanResult, M as SqlPlannerConflictKind, N as SqlPlannerConflictLocation, O as SqlMigrationRunnerResult, P as SqlPlannerFailureResult, R as collectInitDependencies, S as SqlMigrationPlannerPlanOptions, T as SqlMigrationRunnerExecuteCallbacks, V as SqlControlFamilyInstance, _ as SqlMigrationPlanContractInfo, a as CreateSqlMigrationPlanOptions, b as SqlMigrationPlanOperationTarget, c as FieldEventContext, d as MultiSpaceRunnerSuccessValue, f as ResolveIdentityValueInput, g as SqlMigrationPlan, h as SqlControlTargetDescriptor, i as ComponentDatabaseDependency, j as SqlPlannerConflict, k as SqlMigrationRunnerSuccessValue, l as MultiSpaceRunnerFailure, m as SqlControlExtensionDescriptor, n as CodecControlHooks, o as ExpandNativeTypeInput, p as SqlControlAdapterDescriptor, r as ComponentDatabaseDependencies, s as FieldEvent, t as AnyRecord, u as MultiSpaceRunnerResult, v as SqlMigrationPlanOperation, w as SqlMigrationRunnerErrorCode, x as SqlMigrationPlanner, y as SqlMigrationPlanOperationStep, z as isDatabaseDependencyProvider } from "./types-BQBbcXg3.mjs";
|
|
2
|
+
import { ControlFamilyDescriptor, ControlStack, MigrationOperationClass, MigrationOperationPolicy, MigrationOperationPolicy as MigrationOperationPolicy$1, MigrationPlan, MigrationPlanOperation, MigrationPlanner, MigrationPlannerConflict, MigrationPlannerConflict as MigrationPlannerConflict$1, MigrationPlannerResult, MutationDefaultGeneratorDescriptor, OpFactoryCall, TargetMigrationsCapability, assembleAuthoringContributions } from "@prisma-next/framework-components/control";
|
|
3
3
|
import { NotOk, Ok } from "@prisma-next/utils/result";
|
|
4
|
-
import { SqlSchemaIR } from "@prisma-next/sql-schema-ir/types";
|
|
5
|
-
import * as _prisma_next_contract_types0 from "@prisma-next/contract/types";
|
|
6
4
|
import { ColumnDefault, Contract } from "@prisma-next/contract/types";
|
|
5
|
+
import { SqlSchemaIR } from "@prisma-next/sql-schema-ir/types";
|
|
7
6
|
import { TargetBoundComponentDescriptor } from "@prisma-next/framework-components/components";
|
|
8
7
|
import { SqlStorage, StorageColumn } from "@prisma-next/sql-contract/types";
|
|
9
|
-
import
|
|
8
|
+
import { EmissionSpi } from "@prisma-next/framework-components/emission";
|
|
10
9
|
|
|
11
10
|
//#region src/core/control-descriptor.d.ts
|
|
12
11
|
declare class SqlFamilyDescriptor implements ControlFamilyDescriptor<'sql', SqlControlFamilyInstance> {
|
|
@@ -14,17 +13,7 @@ declare class SqlFamilyDescriptor implements ControlFamilyDescriptor<'sql', SqlC
|
|
|
14
13
|
readonly id = "sql";
|
|
15
14
|
readonly familyId: "sql";
|
|
16
15
|
readonly version = "0.0.1";
|
|
17
|
-
readonly emission:
|
|
18
|
-
readonly id: "sql";
|
|
19
|
-
readonly validateTypes: (contract: _prisma_next_contract_types0.Contract, _ctx: _prisma_next_framework_components_emission0.ValidationContext) => void;
|
|
20
|
-
readonly validateStructure: (contract: _prisma_next_contract_types0.Contract) => void;
|
|
21
|
-
readonly generateStorageType: (contract: _prisma_next_contract_types0.Contract, storageHashTypeName: string) => string;
|
|
22
|
-
readonly generateModelStorageType: (_modelName: string, model: _prisma_next_contract_types0.ContractModel) => string;
|
|
23
|
-
readonly getFamilyImports: () => string[];
|
|
24
|
-
readonly getFamilyTypeAliases: (options?: _prisma_next_framework_components_emission0.GenerateContractTypesOptions) => string;
|
|
25
|
-
readonly getTypeMapsExpression: () => string;
|
|
26
|
-
readonly getContractWrapper: (contractBaseName: string, typeMapsName: string) => string;
|
|
27
|
-
};
|
|
16
|
+
readonly emission: EmissionSpi;
|
|
28
17
|
readonly authoring: {
|
|
29
18
|
readonly field: {
|
|
30
19
|
readonly uuid: {
|
|
@@ -104,9 +93,11 @@ declare class SqlFamilyDescriptor implements ControlFamilyDescriptor<'sql', SqlC
|
|
|
104
93
|
readonly typeParams: {
|
|
105
94
|
readonly length: 36;
|
|
106
95
|
};
|
|
107
|
-
readonly
|
|
108
|
-
readonly
|
|
109
|
-
|
|
96
|
+
readonly executionDefaults: {
|
|
97
|
+
readonly onCreate: {
|
|
98
|
+
readonly kind: "generator";
|
|
99
|
+
readonly id: "uuidv4";
|
|
100
|
+
};
|
|
110
101
|
};
|
|
111
102
|
readonly id: true;
|
|
112
103
|
};
|
|
@@ -119,9 +110,11 @@ declare class SqlFamilyDescriptor implements ControlFamilyDescriptor<'sql', SqlC
|
|
|
119
110
|
readonly typeParams: {
|
|
120
111
|
readonly length: 36;
|
|
121
112
|
};
|
|
122
|
-
readonly
|
|
123
|
-
readonly
|
|
124
|
-
|
|
113
|
+
readonly executionDefaults: {
|
|
114
|
+
readonly onCreate: {
|
|
115
|
+
readonly kind: "generator";
|
|
116
|
+
readonly id: "uuidv7";
|
|
117
|
+
};
|
|
125
118
|
};
|
|
126
119
|
readonly id: true;
|
|
127
120
|
};
|
|
@@ -134,9 +127,11 @@ declare class SqlFamilyDescriptor implements ControlFamilyDescriptor<'sql', SqlC
|
|
|
134
127
|
readonly typeParams: {
|
|
135
128
|
readonly length: 26;
|
|
136
129
|
};
|
|
137
|
-
readonly
|
|
138
|
-
readonly
|
|
139
|
-
|
|
130
|
+
readonly executionDefaults: {
|
|
131
|
+
readonly onCreate: {
|
|
132
|
+
readonly kind: "generator";
|
|
133
|
+
readonly id: "ulid";
|
|
134
|
+
};
|
|
140
135
|
};
|
|
141
136
|
readonly id: true;
|
|
142
137
|
};
|
|
@@ -167,14 +162,16 @@ declare class SqlFamilyDescriptor implements ControlFamilyDescriptor<'sql', SqlC
|
|
|
167
162
|
readonly default: 21;
|
|
168
163
|
};
|
|
169
164
|
};
|
|
170
|
-
readonly
|
|
171
|
-
readonly
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
readonly
|
|
175
|
-
readonly
|
|
176
|
-
|
|
177
|
-
|
|
165
|
+
readonly executionDefaults: {
|
|
166
|
+
readonly onCreate: {
|
|
167
|
+
readonly kind: "generator";
|
|
168
|
+
readonly id: "nanoid";
|
|
169
|
+
readonly params: {
|
|
170
|
+
readonly size: {
|
|
171
|
+
readonly kind: "arg";
|
|
172
|
+
readonly index: 0;
|
|
173
|
+
readonly path: readonly ["size"];
|
|
174
|
+
};
|
|
178
175
|
};
|
|
179
176
|
};
|
|
180
177
|
};
|
|
@@ -189,9 +186,11 @@ declare class SqlFamilyDescriptor implements ControlFamilyDescriptor<'sql', SqlC
|
|
|
189
186
|
readonly typeParams: {
|
|
190
187
|
readonly length: 24;
|
|
191
188
|
};
|
|
192
|
-
readonly
|
|
193
|
-
readonly
|
|
194
|
-
|
|
189
|
+
readonly executionDefaults: {
|
|
190
|
+
readonly onCreate: {
|
|
191
|
+
readonly kind: "generator";
|
|
192
|
+
readonly id: "cuid2";
|
|
193
|
+
};
|
|
195
194
|
};
|
|
196
195
|
readonly id: true;
|
|
197
196
|
};
|
|
@@ -204,9 +203,11 @@ declare class SqlFamilyDescriptor implements ControlFamilyDescriptor<'sql', SqlC
|
|
|
204
203
|
readonly typeParams: {
|
|
205
204
|
readonly length: 27;
|
|
206
205
|
};
|
|
207
|
-
readonly
|
|
208
|
-
readonly
|
|
209
|
-
|
|
206
|
+
readonly executionDefaults: {
|
|
207
|
+
readonly onCreate: {
|
|
208
|
+
readonly kind: "generator";
|
|
209
|
+
readonly id: "ksuid";
|
|
210
|
+
};
|
|
210
211
|
};
|
|
211
212
|
readonly id: true;
|
|
212
213
|
};
|
|
@@ -303,6 +304,30 @@ interface ContractToSchemaIROptions {
|
|
|
303
304
|
*/
|
|
304
305
|
declare function contractToSchemaIR(contract: Contract<SqlStorage> | null, options: ContractToSchemaIROptions): SqlSchemaIR;
|
|
305
306
|
//#endregion
|
|
307
|
+
//#region src/core/migrations/field-event-planner.d.ts
|
|
308
|
+
interface PlanFieldEventOperationsOptions {
|
|
309
|
+
/**
|
|
310
|
+
* Prior contract the planner is diffing against. `null` for first emits
|
|
311
|
+
* (every field is treated as added).
|
|
312
|
+
*/
|
|
313
|
+
readonly priorContract: Contract<SqlStorage> | null;
|
|
314
|
+
/**
|
|
315
|
+
* New contract the user just authored.
|
|
316
|
+
*/
|
|
317
|
+
readonly newContract: Contract<SqlStorage>;
|
|
318
|
+
/**
|
|
319
|
+
* Codec-id keyed map of control hooks, as produced by
|
|
320
|
+
* {@link import('./assembly').extractCodecControlHooks}. Hooks carry
|
|
321
|
+
* `unknown` target details after extraction; the caller casts the
|
|
322
|
+
* helper's returned ops to its target's `SqlMigrationPlanOperation`
|
|
323
|
+
* specialisation at the integration boundary, mirroring how
|
|
324
|
+
* `storageTypePlanCallStrategy` lifts `planTypeOperations` results into
|
|
325
|
+
* `RawSqlCall`.
|
|
326
|
+
*/
|
|
327
|
+
readonly codecHooks: ReadonlyMap<string, CodecControlHooks>;
|
|
328
|
+
}
|
|
329
|
+
declare function planFieldEventOperations(options: PlanFieldEventOperationsOptions): readonly OpFactoryCall[];
|
|
330
|
+
//#endregion
|
|
306
331
|
//#region src/core/migrations/plan-helpers.d.ts
|
|
307
332
|
declare function createMigrationPlan<TTargetDetails>(options: CreateSqlMigrationPlanOptions<TTargetDetails>): SqlMigrationPlan<TTargetDetails>;
|
|
308
333
|
declare function plannerSuccess<TTargetDetails>(plan: SqlMigrationPlan<TTargetDetails>): SqlPlannerSuccessResult<TTargetDetails>;
|
|
@@ -328,8 +353,65 @@ declare function runnerFailure(code: SqlMigrationRunnerErrorCode, summary: strin
|
|
|
328
353
|
*/
|
|
329
354
|
declare const INIT_ADDITIVE_POLICY: MigrationOperationPolicy$1;
|
|
330
355
|
//#endregion
|
|
356
|
+
//#region src/core/timestamp-now-generator.d.ts
|
|
357
|
+
/**
|
|
358
|
+
* Builds the canonical control-plane descriptor for the wall-clock-now
|
|
359
|
+
* mutation default generator. The descriptor's `id` and `buildPhases`
|
|
360
|
+
* are target-agnostic so PSL `temporal.updatedAt()` and TS
|
|
361
|
+
* `field.temporal.updatedAt()` lower to byte-identical contracts.
|
|
362
|
+
*
|
|
363
|
+
* `applicableCodecIds` is omitted: `timestampNow` is preset-only (not
|
|
364
|
+
* reachable via `@default(timestampNow())` lowering), and the codec is
|
|
365
|
+
* co-registered by the preset descriptor itself, so the
|
|
366
|
+
* `@default(...)` compatibility check has no role to play here.
|
|
367
|
+
*/
|
|
368
|
+
declare function timestampNowControlDescriptor(): MutationDefaultGeneratorDescriptor;
|
|
369
|
+
/**
|
|
370
|
+
* Builds the canonical `temporal.{createdAt,updatedAt}` field-preset pair
|
|
371
|
+
* for a SQL target. `createdAt` lowers to a `now()` storage default;
|
|
372
|
+
* `updatedAt` lowers to the `timestampNow` execution generator on both
|
|
373
|
+
* `onCreate` and `onUpdate` (RD: "last modified time", non-null). Targets
|
|
374
|
+
* supply the codec/native-type pair that matches their timestamp column;
|
|
375
|
+
* everything else is shared so PSL `temporal.updatedAt()` and TS
|
|
376
|
+
* `field.temporal.updatedAt()` lower to byte-identical contracts across
|
|
377
|
+
* targets by construction.
|
|
378
|
+
*/
|
|
379
|
+
declare function temporalAuthoringPresets<const CodecId extends string, const NativeType extends string>(input: {
|
|
380
|
+
readonly codecId: CodecId;
|
|
381
|
+
readonly nativeType: NativeType;
|
|
382
|
+
}): {
|
|
383
|
+
readonly createdAt: {
|
|
384
|
+
readonly kind: "fieldPreset";
|
|
385
|
+
readonly output: {
|
|
386
|
+
readonly codecId: CodecId;
|
|
387
|
+
readonly nativeType: NativeType;
|
|
388
|
+
readonly default: {
|
|
389
|
+
readonly kind: "function";
|
|
390
|
+
readonly expression: "now()";
|
|
391
|
+
};
|
|
392
|
+
};
|
|
393
|
+
};
|
|
394
|
+
readonly updatedAt: {
|
|
395
|
+
readonly kind: "fieldPreset";
|
|
396
|
+
readonly output: {
|
|
397
|
+
readonly codecId: CodecId;
|
|
398
|
+
readonly nativeType: NativeType;
|
|
399
|
+
readonly executionDefaults: {
|
|
400
|
+
readonly onCreate: {
|
|
401
|
+
readonly kind: "generator";
|
|
402
|
+
readonly id: "timestampNow";
|
|
403
|
+
};
|
|
404
|
+
readonly onUpdate: {
|
|
405
|
+
readonly kind: "generator";
|
|
406
|
+
readonly id: "timestampNow";
|
|
407
|
+
};
|
|
408
|
+
};
|
|
409
|
+
};
|
|
410
|
+
};
|
|
411
|
+
};
|
|
412
|
+
//#endregion
|
|
331
413
|
//#region src/exports/control.d.ts
|
|
332
414
|
declare const _default: SqlFamilyDescriptor;
|
|
333
415
|
//#endregion
|
|
334
|
-
export { type
|
|
416
|
+
export { type CodecControlHooks, type ComponentDatabaseDependencies, type ComponentDatabaseDependency, type ContractToSchemaIROptions, type CreateSqlMigrationPlanOptions, type DefaultRenderer, type ExpandNativeTypeInput, type FieldEvent, type FieldEventContext, INIT_ADDITIVE_POLICY, type MigrationOperationClass, type MigrationOperationPolicy, type MigrationPlan, type MigrationPlanOperation, type MigrationPlanner, type MigrationPlannerConflict, type MigrationPlannerResult, type MultiSpaceRunnerFailure, type MultiSpaceRunnerResult, type MultiSpaceRunnerSuccessValue, type NativeTypeExpander, type PlanFieldEventOperationsOptions, type ResolveIdentityValueInput, type SchemaVerifyOptions, type SqlControlAdapterDescriptor, type SqlControlExtensionDescriptor, type SqlControlFamilyInstance, type SqlControlTargetDescriptor, type SqlMigrationPlan, type SqlMigrationPlanContractInfo, type SqlMigrationPlanOperation, type SqlMigrationPlanOperationStep, type SqlMigrationPlanOperationTarget, type SqlMigrationPlanner, type SqlMigrationPlannerPlanOptions, type SqlMigrationRunner, type SqlMigrationRunnerErrorCode, type SqlMigrationRunnerExecuteCallbacks, type SqlMigrationRunnerExecuteOptions, type SqlMigrationRunnerFailure, type SqlMigrationRunnerResult, type SqlMigrationRunnerSuccessValue, type SqlPlanTargetDetails, type SqlPlannerConflict, type SqlPlannerConflictKind, type SqlPlannerConflictLocation, type SqlPlannerFailureResult, type SqlPlannerResult, type SqlPlannerSuccessResult, type StorageTypePlanResult, type TargetMigrationsCapability, assembleAuthoringContributions, collectInitDependencies, contractToSchemaIR, createMigrationPlan, _default as default, detectDestructiveChanges, extractCodecControlHooks, isDatabaseDependencyProvider, planFieldEventOperations, plannerFailure, plannerSuccess, runnerFailure, runnerSuccess, temporalAuthoringPresets, timestampNowControlDescriptor };
|
|
335
417
|
//# sourceMappingURL=control.d.mts.map
|
package/dist/control.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.d.mts","names":[],"sources":["../src/core/control-descriptor.ts","../src/core/assembly.ts","../src/core/migrations/contract-to-schema-ir.ts","../src/core/migrations/plan-helpers.ts","../src/core/migrations/policies.ts","../src/
|
|
1
|
+
{"version":3,"file":"control.d.mts","names":[],"sources":["../src/core/control-descriptor.ts","../src/core/assembly.ts","../src/core/migrations/contract-to-schema-ir.ts","../src/core/migrations/field-event-planner.ts","../src/core/migrations/plan-helpers.ts","../src/core/migrations/policies.ts","../src/core/timestamp-now-generator.ts","../src/exports/control.ts"],"mappings":";;;;;;;;;;cAUa,mBAAA,YACA,uBAAA,QAA+B,wBAAA;EAAA,SAEjC,IAAA;EAAA,SACA,EAAA;EAAA,SACA,QAAA;EAAA,SACA,OAAA;EAAA,SACA,QAAA,EAAU,WAAA;EAAA,SACV,SAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKT,MAAA,0BAAA,CACE,KAAA,EAAO,YAAA,QAAoB,SAAA,IAC1B,wBAAA;AAAA;;;iBCHW,wBAAA,CACd,WAAA,EAAa,aAAA,CAAc,8BAAA,mBAC1B,GAAA,SAAY,iBAAA;;;;;;;;ADdf;;;;;KE0BY,kBAAA,IAAsB,KAAA;EAAA,SACvB,UAAA;EAAA,SACA,OAAA;EAAA,SACA,UAAA,GAAa,MAAA;AAAA;;;;;;;;;;KAYZ,eAAA,IAAmB,GAAA,EAAK,aAAA,EAAe,MAAA,EAAQ,aAAA;;;;;;;;;;iBAuI3C,wBAAA,CACd,IAAA,EAAM,UAAA,SACN,EAAA,EAAI,UAAA,YACM,0BAAA;AAAA,UAiCK,yBAAA;EAAA,SACN,mBAAA;EAAA,SACA,gBAAA,GAAmB,kBAAA;EAAA,SACnB,aAAA,GAAgB,eAAA;EAAA,SAChB,mBAAA,GAAsB,aAAA,CAAc,8BAAA;AAAA;;;;;;;;;;;;;;;;iBAkB/B,kBAAA,CACd,QAAA,EAAU,QAAA,CAAS,UAAA,UACnB,OAAA,EAAS,yBAAA,GACR,WAAA;;;UC5Nc,+BAAA;EHXN;;;;EAAA,SGgBA,aAAA,EAAe,QAAA,CAAS,UAAA;;;;WAIxB,WAAA,EAAa,QAAA,CAAS,UAAA;;;;;;;;;;WAUtB,UAAA,EAAY,WAAA,SAAoB,iBAAA;AAAA;AAAA,iBAY3B,wBAAA,CACd,OAAA,EAAS,+BAAA,YACC,aAAA;;;iBCmCI,mBAAA,gBAAA,CACd,OAAA,EAAS,6BAAA,CAA8B,cAAA,IACtC,gBAAA,CAAiB,cAAA;AAAA,iBAcJ,cAAA,gBAAA,CACd,IAAA,EAAM,gBAAA,CAAiB,cAAA,IACtB,uBAAA,CAAwB,cAAA;AAAA,iBAOX,cAAA,CAAe,SAAA,WAAoB,kBAAA,KAAuB,uBAAA;;;;iBAoB1D,aAAA,CAAc,KAAA;EAC5B,iBAAA;EACA,kBAAA;AAAA,IACE,EAAA,CAAG,8BAAA;;;;iBAYS,aAAA,CACd,IAAA,EAAM,2BAAA,EACN,OAAA,UACA,OAAA;EAAY,GAAA;EAAc,IAAA,GAAO,SAAA;AAAA,IAChC,KAAA,CAAM,yBAAA;;;;;;cC1JI,oBAAA,EAAsB,0BAAA;;;;;;;;;;;;;;iBCsBnB,6BAAA,CAAA,GAAiC,kCAAA;;;;;;;;;;;iBAoBjC,wBAAA,+DAAA,CAGd,KAAA;EAAA,SAAkB,OAAA,EAAS,OAAA;EAAA,SAAkB,UAAA,EAAY,UAAA;AAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cC4BlB,QAAA"}
|