@prisma-next/extension-paradedb 0.6.0-dev.6 → 0.6.0-dev.8
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/dist/control.d.mts.map +1 -1
- package/dist/control.mjs +1 -1
- package/dist/{descriptor-meta-Dr4mAlbx.mjs → descriptor-meta-CPQfeTa-.mjs} +16 -13
- package/dist/descriptor-meta-CPQfeTa-.mjs.map +1 -0
- package/dist/operation-types-DXmTJ7jd.d.mts.map +1 -1
- package/dist/pack.mjs +1 -1
- package/dist/runtime.mjs +1 -1
- package/package.json +17 -17
- package/src/core/descriptor-meta.ts +13 -10
- package/src/core/proximity-chain.ts +3 -2
- package/dist/descriptor-meta-Dr4mAlbx.mjs.map +0 -1
package/dist/control.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.d.mts","names":[],"sources":["../src/core/descriptor-meta.ts","../src/exports/control.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"control.d.mts","names":[],"sources":["../src/core/descriptor-meta.ts","../src/exports/control.ts"],"mappings":";;;;cAmMa,gBAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;cCzIP,2BAAA,EAA6B,6BAAA"}
|
package/dist/control.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as paradedbQueryOperations, r as PARADEDB_SPACE_ID, t as paradedbPackMeta } from "./descriptor-meta-
|
|
1
|
+
import { n as paradedbQueryOperations, r as PARADEDB_SPACE_ID, t as paradedbPackMeta } from "./descriptor-meta-CPQfeTa-.mjs";
|
|
2
2
|
import { contractSpaceFromJson } from "@prisma-next/migration-tools/spaces";
|
|
3
3
|
//#endregion
|
|
4
4
|
//#region src/exports/control.ts
|
|
@@ -25,6 +25,7 @@ const PARADEDB_SPACE_ID = "paradedb";
|
|
|
25
25
|
//#endregion
|
|
26
26
|
//#region src/core/proximity-chain.ts
|
|
27
27
|
const TEXT$1 = "pg/text@1";
|
|
28
|
+
const TEXT_REF$1 = { codecId: TEXT$1 };
|
|
28
29
|
var ParadeDbProximityChain = class ParadeDbProximityChain {
|
|
29
30
|
returnType = {
|
|
30
31
|
codecId: TEXT$1,
|
|
@@ -46,12 +47,12 @@ var ParadeDbProximityChain = class ParadeDbProximityChain {
|
|
|
46
47
|
}
|
|
47
48
|
buildAst() {
|
|
48
49
|
if (this.steps.length === 0) throw new Error("paradeDbProximity: chain must have at least one .within(distance, term) step");
|
|
49
|
-
const args = [toExpr(this.start,
|
|
50
|
+
const args = [toExpr(this.start, TEXT_REF$1)];
|
|
50
51
|
let template = "({{self}}";
|
|
51
52
|
this.steps.forEach((step, i) => {
|
|
52
53
|
const op = step.ordered ? "##>" : "##";
|
|
53
54
|
args.push(LiteralExpr.of(step.distance));
|
|
54
|
-
args.push(toExpr(step.term,
|
|
55
|
+
args.push(toExpr(step.term, TEXT_REF$1));
|
|
55
56
|
template += ` ${op} {{arg${2 * i}}} ${op} {{arg${2 * i + 1}}}`;
|
|
56
57
|
});
|
|
57
58
|
template += ")";
|
|
@@ -76,13 +77,15 @@ const TEXT = "pg/text@1";
|
|
|
76
77
|
const BOOL = "pg/bool@1";
|
|
77
78
|
const FLOAT4 = "pg/float4@1";
|
|
78
79
|
const INT4 = "pg/int4@1";
|
|
80
|
+
const TEXT_REF = { codecId: TEXT };
|
|
81
|
+
const INT4_REF = { codecId: INT4 };
|
|
79
82
|
function paradedbQueryOperations() {
|
|
80
83
|
return {
|
|
81
84
|
paradeDbMatch: {
|
|
82
85
|
self: { codecId: TEXT },
|
|
83
86
|
impl: (self, query) => buildOperation({
|
|
84
87
|
method: "paradeDbMatch",
|
|
85
|
-
args: [toExpr(self,
|
|
88
|
+
args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],
|
|
86
89
|
returns: {
|
|
87
90
|
codecId: BOOL,
|
|
88
91
|
nullable: false
|
|
@@ -98,7 +101,7 @@ function paradedbQueryOperations() {
|
|
|
98
101
|
self: { codecId: TEXT },
|
|
99
102
|
impl: (self, query) => buildOperation({
|
|
100
103
|
method: "paradeDbMatchAny",
|
|
101
|
-
args: [toExpr(self,
|
|
104
|
+
args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],
|
|
102
105
|
returns: {
|
|
103
106
|
codecId: BOOL,
|
|
104
107
|
nullable: false
|
|
@@ -114,7 +117,7 @@ function paradedbQueryOperations() {
|
|
|
114
117
|
self: { codecId: TEXT },
|
|
115
118
|
impl: (self, query) => buildOperation({
|
|
116
119
|
method: "paradeDbMatchAll",
|
|
117
|
-
args: [toExpr(self,
|
|
120
|
+
args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],
|
|
118
121
|
returns: {
|
|
119
122
|
codecId: BOOL,
|
|
120
123
|
nullable: false
|
|
@@ -130,7 +133,7 @@ function paradedbQueryOperations() {
|
|
|
130
133
|
self: { codecId: TEXT },
|
|
131
134
|
impl: (self, query) => buildOperation({
|
|
132
135
|
method: "paradeDbTerm",
|
|
133
|
-
args: [toExpr(self,
|
|
136
|
+
args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],
|
|
134
137
|
returns: {
|
|
135
138
|
codecId: BOOL,
|
|
136
139
|
nullable: false
|
|
@@ -146,7 +149,7 @@ function paradedbQueryOperations() {
|
|
|
146
149
|
self: { codecId: TEXT },
|
|
147
150
|
impl: (self, query) => buildOperation({
|
|
148
151
|
method: "paradeDbPhrase",
|
|
149
|
-
args: [toExpr(self,
|
|
152
|
+
args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],
|
|
150
153
|
returns: {
|
|
151
154
|
codecId: BOOL,
|
|
152
155
|
nullable: false
|
|
@@ -162,7 +165,7 @@ function paradedbQueryOperations() {
|
|
|
162
165
|
self: { codecId: INT4 },
|
|
163
166
|
impl: (self) => buildOperation({
|
|
164
167
|
method: "paradeDbScore",
|
|
165
|
-
args: [toExpr(self,
|
|
168
|
+
args: [toExpr(self, INT4_REF)],
|
|
166
169
|
returns: {
|
|
167
170
|
codecId: FLOAT4,
|
|
168
171
|
nullable: false
|
|
@@ -180,7 +183,7 @@ function paradedbQueryOperations() {
|
|
|
180
183
|
if (!Number.isInteger(distance) || distance < 0 || distance > 2) throw new Error(`paradeDbFuzzy: distance must be an integer in [0, 2]; got ${String(distance)}`);
|
|
181
184
|
return buildOperation({
|
|
182
185
|
method: "paradeDbFuzzy",
|
|
183
|
-
args: [toExpr(self,
|
|
186
|
+
args: [toExpr(self, TEXT_REF), LiteralExpr.of(distance)],
|
|
184
187
|
returns: {
|
|
185
188
|
codecId: TEXT,
|
|
186
189
|
nullable: false
|
|
@@ -199,7 +202,7 @@ function paradedbQueryOperations() {
|
|
|
199
202
|
if (!Number.isInteger(weight) || weight < -2048 || weight > 2048) throw new Error(`paradeDbBoost: boost must be an integer in [-2048, 2048]; got ${String(weight)}`);
|
|
200
203
|
return buildOperation({
|
|
201
204
|
method: "paradeDbBoost",
|
|
202
|
-
args: [toExpr(self,
|
|
205
|
+
args: [toExpr(self, TEXT_REF), LiteralExpr.of(weight)],
|
|
203
206
|
returns: {
|
|
204
207
|
codecId: TEXT,
|
|
205
208
|
nullable: false
|
|
@@ -218,7 +221,7 @@ function paradedbQueryOperations() {
|
|
|
218
221
|
if (!Number.isInteger(value)) throw new Error(`paradeDbConst: value must be an integer; got ${String(value)}`);
|
|
219
222
|
return buildOperation({
|
|
220
223
|
method: "paradeDbConst",
|
|
221
|
-
args: [toExpr(self,
|
|
224
|
+
args: [toExpr(self, TEXT_REF), LiteralExpr.of(value)],
|
|
222
225
|
returns: {
|
|
223
226
|
codecId: TEXT,
|
|
224
227
|
nullable: false
|
|
@@ -237,7 +240,7 @@ function paradedbQueryOperations() {
|
|
|
237
240
|
if (!Number.isInteger(slop) || slop < 0) throw new Error(`paradeDbSlop: slop must be a non-negative integer; got ${String(slop)}`);
|
|
238
241
|
return buildOperation({
|
|
239
242
|
method: "paradeDbSlop",
|
|
240
|
-
args: [toExpr(self,
|
|
243
|
+
args: [toExpr(self, TEXT_REF), LiteralExpr.of(slop)],
|
|
241
244
|
returns: {
|
|
242
245
|
codecId: TEXT,
|
|
243
246
|
nullable: false
|
|
@@ -273,4 +276,4 @@ const paradedbPackMeta = {
|
|
|
273
276
|
//#endregion
|
|
274
277
|
export { paradedbQueryOperations as n, PARADEDB_SPACE_ID as r, paradedbPackMeta as t };
|
|
275
278
|
|
|
276
|
-
//# sourceMappingURL=descriptor-meta-
|
|
279
|
+
//# sourceMappingURL=descriptor-meta-CPQfeTa-.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor-meta-CPQfeTa-.mjs","names":["TEXT","TEXT_REF"],"sources":["../src/core/constants.ts","../src/core/proximity-chain.ts","../src/core/descriptor-meta.ts"],"sourcesContent":["/**\n * Extension ID for ParadeDB pg_search.\n */\nexport const PARADEDB_EXTENSION_ID = 'paradedb' as const;\n\n/**\n * Static names and identifiers used across paradedb's contract space.\n *\n * Centralised here so the contract IR (`./contract`), the baseline\n * migration ops (`./migrations`), the head ref, and the descriptor\n * (`../exports/control`) all reference the same values without typos.\n *\n * The space identifier `'paradedb'` is what the framework writes to\n * `migrations/` in the user's repo and what the marker table's\n * `space` column carries for paradedb-owned rows.\n *\n * The `paradedb:*` invariantId namespace is locked here — once\n * published, an invariantId is immutable so downstream consumers can\n * reference it by literal string match.\n */\nexport const PARADEDB_SPACE_ID = 'paradedb' as const;\n\nexport const PARADEDB_BASELINE_MIGRATION_NAME =\n '20260601T0000_install_pg_search_extension' as const;\n\n/**\n * `paradedb:*` invariantIds emitted by the baseline migration. Each id,\n * once published, is immutable: downstream consumers reference them by\n * literal string match.\n */\nexport const PARADEDB_INVARIANTS = {\n installPgSearch: 'paradedb:install-pg-search-v1',\n} as const;\n","import {\n type AnyExpression,\n LiteralExpr,\n OperationExpr,\n} from '@prisma-next/sql-relational-core/ast';\nimport { type Expression, toExpr } from '@prisma-next/sql-relational-core/expression';\n\nconst TEXT = 'pg/text@1' as const;\nconst TEXT_REF = { codecId: TEXT } as const;\n\nexport type ProximityTerm = unknown;\n\nexport interface ProximityWithinOptions {\n readonly ordered?: boolean;\n}\n\ninterface ProximityStep {\n readonly distance: number;\n readonly term: ProximityTerm;\n readonly ordered: boolean;\n}\n\n// https://docs.paradedb.com/documentation/full-text/proximity\nexport class ParadeDbProximityChain\n implements Expression<{ codecId: 'pg/text@1'; nullable: false }>\n{\n readonly returnType = { codecId: TEXT, nullable: false } as const;\n\n private readonly start: ProximityTerm;\n private readonly steps: readonly ProximityStep[];\n\n constructor(start: ProximityTerm, steps: readonly ProximityStep[] = []) {\n this.start = start;\n this.steps = steps;\n }\n\n within(\n distance: number,\n term: ProximityTerm,\n options?: ProximityWithinOptions,\n ): ParadeDbProximityChain {\n if (!Number.isInteger(distance) || distance < 0) {\n throw new Error(\n `paradeDbProximity.within: distance must be a non-negative integer; got ${String(distance)}`,\n );\n }\n return new ParadeDbProximityChain(this.start, [\n ...this.steps,\n { distance, term, ordered: options?.ordered === true },\n ]);\n }\n\n buildAst(): AnyExpression {\n if (this.steps.length === 0) {\n throw new Error(\n 'paradeDbProximity: chain must have at least one .within(distance, term) step',\n );\n }\n const args: AnyExpression[] = [toExpr(this.start, TEXT_REF)];\n let template = '({{self}}';\n this.steps.forEach((step, i) => {\n const op = step.ordered ? '##>' : '##';\n args.push(LiteralExpr.of(step.distance));\n args.push(toExpr(step.term, TEXT_REF));\n template += ` ${op} {{arg${2 * i}}} ${op} {{arg${2 * i + 1}}}`;\n });\n template += ')';\n const [self, ...rest] = args;\n if (!self) {\n throw new Error('paradeDbProximity: invariant violation — empty args');\n }\n return new OperationExpr({\n method: 'paradeDbProximity',\n self,\n args: rest.length > 0 ? rest : undefined,\n returns: this.returnType,\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template,\n },\n });\n }\n}\n","import { LiteralExpr } from '@prisma-next/sql-relational-core/ast';\nimport { buildOperation, toExpr } from '@prisma-next/sql-relational-core/expression';\nimport { paradedbIndexTypes } from '../types/index-types';\nimport type { QueryOperationTypes } from '../types/operation-types';\nimport { PARADEDB_EXTENSION_ID } from './constants';\nimport { ParadeDbProximityChain } from './proximity-chain';\n\ntype CodecTypesBase = Record<string, { readonly input: unknown; readonly output: unknown }>;\n\nconst TEXT = 'pg/text@1' as const;\nconst BOOL = 'pg/bool@1' as const;\nconst FLOAT4 = 'pg/float4@1' as const;\nconst INT4 = 'pg/int4@1' as const;\n\nconst TEXT_REF = { codecId: TEXT } as const;\nconst INT4_REF = { codecId: INT4 } as const;\n\nexport function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOperationTypes<CT> {\n return {\n // `@@@` accepts both text and structured query types on its RHS.\n // https://docs.paradedb.com/documentation/full-text/match\n paradeDbMatch: {\n self: { codecId: TEXT },\n impl: (self, query) =>\n buildOperation({\n method: 'paradeDbMatch',\n args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],\n returns: { codecId: BOOL, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}} @@@ {{arg0}}',\n },\n }),\n },\n paradeDbMatchAny: {\n self: { codecId: TEXT },\n impl: (self, query) =>\n buildOperation({\n method: 'paradeDbMatchAny',\n args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],\n returns: { codecId: BOOL, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}} ||| {{arg0}}',\n },\n }),\n },\n paradeDbMatchAll: {\n self: { codecId: TEXT },\n impl: (self, query) =>\n buildOperation({\n method: 'paradeDbMatchAll',\n args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],\n returns: { codecId: BOOL, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}} &&& {{arg0}}',\n },\n }),\n },\n // https://docs.paradedb.com/documentation/full-text/term\n paradeDbTerm: {\n self: { codecId: TEXT },\n impl: (self, query) =>\n buildOperation({\n method: 'paradeDbTerm',\n args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],\n returns: { codecId: BOOL, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}} === {{arg0}}',\n },\n }),\n },\n // https://docs.paradedb.com/documentation/full-text/phrase\n paradeDbPhrase: {\n self: { codecId: TEXT },\n impl: (self, query) =>\n buildOperation({\n method: 'paradeDbPhrase',\n args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],\n returns: { codecId: BOOL, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}} ### {{arg0}}',\n },\n }),\n },\n // https://docs.paradedb.com/documentation/sorting/score\n paradeDbScore: {\n self: { codecId: INT4 },\n impl: (self) =>\n buildOperation({\n method: 'paradeDbScore',\n args: [toExpr(self, INT4_REF)],\n returns: { codecId: FLOAT4, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: 'pdb.score({{self}})',\n },\n }),\n },\n // PG rejects parameterized typmods, so the cast argument lowers to a literal.\n // https://docs.paradedb.com/documentation/full-text/fuzzy\n paradeDbFuzzy: {\n self: { codecId: TEXT },\n impl: (self, distance) => {\n if (!Number.isInteger(distance) || distance < 0 || distance > 2) {\n throw new Error(\n `paradeDbFuzzy: distance must be an integer in [0, 2]; got ${String(distance)}`,\n );\n }\n return buildOperation({\n method: 'paradeDbFuzzy',\n args: [toExpr(self, TEXT_REF), LiteralExpr.of(distance)],\n returns: { codecId: TEXT, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}}::pdb.fuzzy({{arg0}})',\n },\n });\n },\n },\n // https://docs.paradedb.com/documentation/sorting/boost\n paradeDbBoost: {\n self: { codecId: TEXT },\n impl: (self, weight) => {\n if (!Number.isInteger(weight) || weight < -2048 || weight > 2048) {\n throw new Error(\n `paradeDbBoost: boost must be an integer in [-2048, 2048]; got ${String(weight)}`,\n );\n }\n return buildOperation({\n method: 'paradeDbBoost',\n args: [toExpr(self, TEXT_REF), LiteralExpr.of(weight)],\n returns: { codecId: TEXT, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}}::pdb.boost({{arg0}})',\n },\n });\n },\n },\n paradeDbConst: {\n self: { codecId: TEXT },\n impl: (self, value) => {\n if (!Number.isInteger(value)) {\n throw new Error(`paradeDbConst: value must be an integer; got ${String(value)}`);\n }\n return buildOperation({\n method: 'paradeDbConst',\n args: [toExpr(self, TEXT_REF), LiteralExpr.of(value)],\n returns: { codecId: TEXT, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}}::pdb.const({{arg0}})',\n },\n });\n },\n },\n paradeDbSlop: {\n self: { codecId: TEXT },\n impl: (self, slop) => {\n if (!Number.isInteger(slop) || slop < 0) {\n throw new Error(`paradeDbSlop: slop must be a non-negative integer; got ${String(slop)}`);\n }\n return buildOperation({\n method: 'paradeDbSlop',\n args: [toExpr(self, TEXT_REF), LiteralExpr.of(slop)],\n returns: { codecId: TEXT, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}}::pdb.slop({{arg0}})',\n },\n });\n },\n },\n // https://docs.paradedb.com/documentation/full-text/proximity\n paradeDbProximity: {\n self: { codecId: TEXT },\n impl: (start) => new ParadeDbProximityChain(start),\n },\n };\n}\n\nexport const paradedbPackMeta = {\n kind: 'extension',\n id: PARADEDB_EXTENSION_ID,\n familyId: 'sql',\n targetId: 'postgres',\n version: '0.0.1',\n capabilities: {\n postgres: {\n 'paradedb/bm25': true,\n },\n },\n indexTypes: paradedbIndexTypes,\n types: {\n queryOperationTypes: {\n import: {\n package: '@prisma-next/extension-paradedb/operation-types',\n named: 'QueryOperationTypes',\n alias: 'ParadeDbQueryOperationTypes',\n },\n },\n },\n} as const;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-types-DXmTJ7jd.d.mts","names":[],"sources":["../src/core/proximity-chain.ts","../src/types/operation-types.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"operation-types-DXmTJ7jd.d.mts","names":[],"sources":["../src/core/proximity-chain.ts","../src/types/operation-types.ts"],"mappings":"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"}
|
package/dist/pack.mjs
CHANGED
package/dist/runtime.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as paradedbQueryOperations, t as paradedbPackMeta } from "./descriptor-meta-
|
|
1
|
+
import { n as paradedbQueryOperations, t as paradedbPackMeta } from "./descriptor-meta-CPQfeTa-.mjs";
|
|
2
2
|
//#region src/exports/runtime.ts
|
|
3
3
|
const paradedbRuntimeDescriptor = {
|
|
4
4
|
kind: "extension",
|
package/package.json
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/extension-paradedb",
|
|
3
|
-
"version": "0.6.0-dev.
|
|
3
|
+
"version": "0.6.0-dev.8",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"arktype": "^2.1.25",
|
|
9
|
-
"@prisma-next/contract": "0.6.0-dev.
|
|
10
|
-
"@prisma-next/contract-authoring": "0.6.0-dev.
|
|
11
|
-
"@prisma-next/family-sql": "0.6.0-dev.
|
|
12
|
-
"@prisma-next/
|
|
13
|
-
"@prisma-next/
|
|
14
|
-
"@prisma-next/
|
|
15
|
-
"@prisma-next/sql-
|
|
16
|
-
"@prisma-next/sql-
|
|
17
|
-
"@prisma-next/sql-
|
|
9
|
+
"@prisma-next/contract": "0.6.0-dev.8",
|
|
10
|
+
"@prisma-next/contract-authoring": "0.6.0-dev.8",
|
|
11
|
+
"@prisma-next/family-sql": "0.6.0-dev.8",
|
|
12
|
+
"@prisma-next/sql-contract": "0.6.0-dev.8",
|
|
13
|
+
"@prisma-next/framework-components": "0.6.0-dev.8",
|
|
14
|
+
"@prisma-next/migration-tools": "0.6.0-dev.8",
|
|
15
|
+
"@prisma-next/sql-runtime": "0.6.0-dev.8",
|
|
16
|
+
"@prisma-next/sql-relational-core": "0.6.0-dev.8",
|
|
17
|
+
"@prisma-next/sql-operations": "0.6.0-dev.8"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"tsdown": "0.22.0",
|
|
21
21
|
"typescript": "5.9.3",
|
|
22
22
|
"vitest": "4.1.5",
|
|
23
|
-
"@prisma-next/adapter-postgres": "0.6.0-dev.
|
|
24
|
-
"@prisma-next/
|
|
25
|
-
"@prisma-next/
|
|
26
|
-
"@prisma-next/
|
|
27
|
-
"@prisma-next/
|
|
23
|
+
"@prisma-next/adapter-postgres": "0.6.0-dev.8",
|
|
24
|
+
"@prisma-next/operations": "0.6.0-dev.8",
|
|
25
|
+
"@prisma-next/cli": "0.6.0-dev.8",
|
|
26
|
+
"@prisma-next/sql-contract-ts": "0.6.0-dev.8",
|
|
27
|
+
"@prisma-next/target-postgres": "0.6.0-dev.8",
|
|
28
28
|
"@prisma-next/test-utils": "0.0.1",
|
|
29
|
-
"@prisma-next/
|
|
30
|
-
"@prisma-next/
|
|
29
|
+
"@prisma-next/tsdown": "0.0.0",
|
|
30
|
+
"@prisma-next/tsconfig": "0.0.0"
|
|
31
31
|
},
|
|
32
32
|
"files": [
|
|
33
33
|
"dist",
|
|
@@ -12,6 +12,9 @@ const BOOL = 'pg/bool@1' as const;
|
|
|
12
12
|
const FLOAT4 = 'pg/float4@1' as const;
|
|
13
13
|
const INT4 = 'pg/int4@1' as const;
|
|
14
14
|
|
|
15
|
+
const TEXT_REF = { codecId: TEXT } as const;
|
|
16
|
+
const INT4_REF = { codecId: INT4 } as const;
|
|
17
|
+
|
|
15
18
|
export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOperationTypes<CT> {
|
|
16
19
|
return {
|
|
17
20
|
// `@@@` accepts both text and structured query types on its RHS.
|
|
@@ -21,7 +24,7 @@ export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOpera
|
|
|
21
24
|
impl: (self, query) =>
|
|
22
25
|
buildOperation({
|
|
23
26
|
method: 'paradeDbMatch',
|
|
24
|
-
args: [toExpr(self,
|
|
27
|
+
args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],
|
|
25
28
|
returns: { codecId: BOOL, nullable: false },
|
|
26
29
|
lowering: {
|
|
27
30
|
targetFamily: 'sql',
|
|
@@ -35,7 +38,7 @@ export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOpera
|
|
|
35
38
|
impl: (self, query) =>
|
|
36
39
|
buildOperation({
|
|
37
40
|
method: 'paradeDbMatchAny',
|
|
38
|
-
args: [toExpr(self,
|
|
41
|
+
args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],
|
|
39
42
|
returns: { codecId: BOOL, nullable: false },
|
|
40
43
|
lowering: {
|
|
41
44
|
targetFamily: 'sql',
|
|
@@ -49,7 +52,7 @@ export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOpera
|
|
|
49
52
|
impl: (self, query) =>
|
|
50
53
|
buildOperation({
|
|
51
54
|
method: 'paradeDbMatchAll',
|
|
52
|
-
args: [toExpr(self,
|
|
55
|
+
args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],
|
|
53
56
|
returns: { codecId: BOOL, nullable: false },
|
|
54
57
|
lowering: {
|
|
55
58
|
targetFamily: 'sql',
|
|
@@ -64,7 +67,7 @@ export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOpera
|
|
|
64
67
|
impl: (self, query) =>
|
|
65
68
|
buildOperation({
|
|
66
69
|
method: 'paradeDbTerm',
|
|
67
|
-
args: [toExpr(self,
|
|
70
|
+
args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],
|
|
68
71
|
returns: { codecId: BOOL, nullable: false },
|
|
69
72
|
lowering: {
|
|
70
73
|
targetFamily: 'sql',
|
|
@@ -79,7 +82,7 @@ export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOpera
|
|
|
79
82
|
impl: (self, query) =>
|
|
80
83
|
buildOperation({
|
|
81
84
|
method: 'paradeDbPhrase',
|
|
82
|
-
args: [toExpr(self,
|
|
85
|
+
args: [toExpr(self, TEXT_REF), toExpr(query, TEXT_REF)],
|
|
83
86
|
returns: { codecId: BOOL, nullable: false },
|
|
84
87
|
lowering: {
|
|
85
88
|
targetFamily: 'sql',
|
|
@@ -94,7 +97,7 @@ export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOpera
|
|
|
94
97
|
impl: (self) =>
|
|
95
98
|
buildOperation({
|
|
96
99
|
method: 'paradeDbScore',
|
|
97
|
-
args: [toExpr(self,
|
|
100
|
+
args: [toExpr(self, INT4_REF)],
|
|
98
101
|
returns: { codecId: FLOAT4, nullable: false },
|
|
99
102
|
lowering: {
|
|
100
103
|
targetFamily: 'sql',
|
|
@@ -115,7 +118,7 @@ export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOpera
|
|
|
115
118
|
}
|
|
116
119
|
return buildOperation({
|
|
117
120
|
method: 'paradeDbFuzzy',
|
|
118
|
-
args: [toExpr(self,
|
|
121
|
+
args: [toExpr(self, TEXT_REF), LiteralExpr.of(distance)],
|
|
119
122
|
returns: { codecId: TEXT, nullable: false },
|
|
120
123
|
lowering: {
|
|
121
124
|
targetFamily: 'sql',
|
|
@@ -136,7 +139,7 @@ export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOpera
|
|
|
136
139
|
}
|
|
137
140
|
return buildOperation({
|
|
138
141
|
method: 'paradeDbBoost',
|
|
139
|
-
args: [toExpr(self,
|
|
142
|
+
args: [toExpr(self, TEXT_REF), LiteralExpr.of(weight)],
|
|
140
143
|
returns: { codecId: TEXT, nullable: false },
|
|
141
144
|
lowering: {
|
|
142
145
|
targetFamily: 'sql',
|
|
@@ -154,7 +157,7 @@ export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOpera
|
|
|
154
157
|
}
|
|
155
158
|
return buildOperation({
|
|
156
159
|
method: 'paradeDbConst',
|
|
157
|
-
args: [toExpr(self,
|
|
160
|
+
args: [toExpr(self, TEXT_REF), LiteralExpr.of(value)],
|
|
158
161
|
returns: { codecId: TEXT, nullable: false },
|
|
159
162
|
lowering: {
|
|
160
163
|
targetFamily: 'sql',
|
|
@@ -172,7 +175,7 @@ export function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOpera
|
|
|
172
175
|
}
|
|
173
176
|
return buildOperation({
|
|
174
177
|
method: 'paradeDbSlop',
|
|
175
|
-
args: [toExpr(self,
|
|
178
|
+
args: [toExpr(self, TEXT_REF), LiteralExpr.of(slop)],
|
|
176
179
|
returns: { codecId: TEXT, nullable: false },
|
|
177
180
|
lowering: {
|
|
178
181
|
targetFamily: 'sql',
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
import { type Expression, toExpr } from '@prisma-next/sql-relational-core/expression';
|
|
7
7
|
|
|
8
8
|
const TEXT = 'pg/text@1' as const;
|
|
9
|
+
const TEXT_REF = { codecId: TEXT } as const;
|
|
9
10
|
|
|
10
11
|
export type ProximityTerm = unknown;
|
|
11
12
|
|
|
@@ -55,12 +56,12 @@ export class ParadeDbProximityChain
|
|
|
55
56
|
'paradeDbProximity: chain must have at least one .within(distance, term) step',
|
|
56
57
|
);
|
|
57
58
|
}
|
|
58
|
-
const args: AnyExpression[] = [toExpr(this.start,
|
|
59
|
+
const args: AnyExpression[] = [toExpr(this.start, TEXT_REF)];
|
|
59
60
|
let template = '({{self}}';
|
|
60
61
|
this.steps.forEach((step, i) => {
|
|
61
62
|
const op = step.ordered ? '##>' : '##';
|
|
62
63
|
args.push(LiteralExpr.of(step.distance));
|
|
63
|
-
args.push(toExpr(step.term,
|
|
64
|
+
args.push(toExpr(step.term, TEXT_REF));
|
|
64
65
|
template += ` ${op} {{arg${2 * i}}} ${op} {{arg${2 * i + 1}}}`;
|
|
65
66
|
});
|
|
66
67
|
template += ')';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor-meta-Dr4mAlbx.mjs","names":["TEXT"],"sources":["../src/core/constants.ts","../src/core/proximity-chain.ts","../src/core/descriptor-meta.ts"],"sourcesContent":["/**\n * Extension ID for ParadeDB pg_search.\n */\nexport const PARADEDB_EXTENSION_ID = 'paradedb' as const;\n\n/**\n * Static names and identifiers used across paradedb's contract space.\n *\n * Centralised here so the contract IR (`./contract`), the baseline\n * migration ops (`./migrations`), the head ref, and the descriptor\n * (`../exports/control`) all reference the same values without typos.\n *\n * The space identifier `'paradedb'` is what the framework writes to\n * `migrations/` in the user's repo and what the marker table's\n * `space` column carries for paradedb-owned rows.\n *\n * The `paradedb:*` invariantId namespace is locked here — once\n * published, an invariantId is immutable so downstream consumers can\n * reference it by literal string match.\n */\nexport const PARADEDB_SPACE_ID = 'paradedb' as const;\n\nexport const PARADEDB_BASELINE_MIGRATION_NAME =\n '20260601T0000_install_pg_search_extension' as const;\n\n/**\n * `paradedb:*` invariantIds emitted by the baseline migration. Each id,\n * once published, is immutable: downstream consumers reference them by\n * literal string match.\n */\nexport const PARADEDB_INVARIANTS = {\n installPgSearch: 'paradedb:install-pg-search-v1',\n} as const;\n","import {\n type AnyExpression,\n LiteralExpr,\n OperationExpr,\n} from '@prisma-next/sql-relational-core/ast';\nimport { type Expression, toExpr } from '@prisma-next/sql-relational-core/expression';\n\nconst TEXT = 'pg/text@1' as const;\n\nexport type ProximityTerm = unknown;\n\nexport interface ProximityWithinOptions {\n readonly ordered?: boolean;\n}\n\ninterface ProximityStep {\n readonly distance: number;\n readonly term: ProximityTerm;\n readonly ordered: boolean;\n}\n\n// https://docs.paradedb.com/documentation/full-text/proximity\nexport class ParadeDbProximityChain\n implements Expression<{ codecId: 'pg/text@1'; nullable: false }>\n{\n readonly returnType = { codecId: TEXT, nullable: false } as const;\n\n private readonly start: ProximityTerm;\n private readonly steps: readonly ProximityStep[];\n\n constructor(start: ProximityTerm, steps: readonly ProximityStep[] = []) {\n this.start = start;\n this.steps = steps;\n }\n\n within(\n distance: number,\n term: ProximityTerm,\n options?: ProximityWithinOptions,\n ): ParadeDbProximityChain {\n if (!Number.isInteger(distance) || distance < 0) {\n throw new Error(\n `paradeDbProximity.within: distance must be a non-negative integer; got ${String(distance)}`,\n );\n }\n return new ParadeDbProximityChain(this.start, [\n ...this.steps,\n { distance, term, ordered: options?.ordered === true },\n ]);\n }\n\n buildAst(): AnyExpression {\n if (this.steps.length === 0) {\n throw new Error(\n 'paradeDbProximity: chain must have at least one .within(distance, term) step',\n );\n }\n const args: AnyExpression[] = [toExpr(this.start, TEXT)];\n let template = '({{self}}';\n this.steps.forEach((step, i) => {\n const op = step.ordered ? '##>' : '##';\n args.push(LiteralExpr.of(step.distance));\n args.push(toExpr(step.term, TEXT));\n template += ` ${op} {{arg${2 * i}}} ${op} {{arg${2 * i + 1}}}`;\n });\n template += ')';\n const [self, ...rest] = args;\n if (!self) {\n throw new Error('paradeDbProximity: invariant violation — empty args');\n }\n return new OperationExpr({\n method: 'paradeDbProximity',\n self,\n args: rest.length > 0 ? rest : undefined,\n returns: this.returnType,\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template,\n },\n });\n }\n}\n","import { LiteralExpr } from '@prisma-next/sql-relational-core/ast';\nimport { buildOperation, toExpr } from '@prisma-next/sql-relational-core/expression';\nimport { paradedbIndexTypes } from '../types/index-types';\nimport type { QueryOperationTypes } from '../types/operation-types';\nimport { PARADEDB_EXTENSION_ID } from './constants';\nimport { ParadeDbProximityChain } from './proximity-chain';\n\ntype CodecTypesBase = Record<string, { readonly input: unknown; readonly output: unknown }>;\n\nconst TEXT = 'pg/text@1' as const;\nconst BOOL = 'pg/bool@1' as const;\nconst FLOAT4 = 'pg/float4@1' as const;\nconst INT4 = 'pg/int4@1' as const;\n\nexport function paradedbQueryOperations<CT extends CodecTypesBase>(): QueryOperationTypes<CT> {\n return {\n // `@@@` accepts both text and structured query types on its RHS.\n // https://docs.paradedb.com/documentation/full-text/match\n paradeDbMatch: {\n self: { codecId: TEXT },\n impl: (self, query) =>\n buildOperation({\n method: 'paradeDbMatch',\n args: [toExpr(self, TEXT), toExpr(query, TEXT)],\n returns: { codecId: BOOL, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}} @@@ {{arg0}}',\n },\n }),\n },\n paradeDbMatchAny: {\n self: { codecId: TEXT },\n impl: (self, query) =>\n buildOperation({\n method: 'paradeDbMatchAny',\n args: [toExpr(self, TEXT), toExpr(query, TEXT)],\n returns: { codecId: BOOL, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}} ||| {{arg0}}',\n },\n }),\n },\n paradeDbMatchAll: {\n self: { codecId: TEXT },\n impl: (self, query) =>\n buildOperation({\n method: 'paradeDbMatchAll',\n args: [toExpr(self, TEXT), toExpr(query, TEXT)],\n returns: { codecId: BOOL, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}} &&& {{arg0}}',\n },\n }),\n },\n // https://docs.paradedb.com/documentation/full-text/term\n paradeDbTerm: {\n self: { codecId: TEXT },\n impl: (self, query) =>\n buildOperation({\n method: 'paradeDbTerm',\n args: [toExpr(self, TEXT), toExpr(query, TEXT)],\n returns: { codecId: BOOL, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}} === {{arg0}}',\n },\n }),\n },\n // https://docs.paradedb.com/documentation/full-text/phrase\n paradeDbPhrase: {\n self: { codecId: TEXT },\n impl: (self, query) =>\n buildOperation({\n method: 'paradeDbPhrase',\n args: [toExpr(self, TEXT), toExpr(query, TEXT)],\n returns: { codecId: BOOL, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}} ### {{arg0}}',\n },\n }),\n },\n // https://docs.paradedb.com/documentation/sorting/score\n paradeDbScore: {\n self: { codecId: INT4 },\n impl: (self) =>\n buildOperation({\n method: 'paradeDbScore',\n args: [toExpr(self, INT4)],\n returns: { codecId: FLOAT4, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: 'pdb.score({{self}})',\n },\n }),\n },\n // PG rejects parameterized typmods, so the cast argument lowers to a literal.\n // https://docs.paradedb.com/documentation/full-text/fuzzy\n paradeDbFuzzy: {\n self: { codecId: TEXT },\n impl: (self, distance) => {\n if (!Number.isInteger(distance) || distance < 0 || distance > 2) {\n throw new Error(\n `paradeDbFuzzy: distance must be an integer in [0, 2]; got ${String(distance)}`,\n );\n }\n return buildOperation({\n method: 'paradeDbFuzzy',\n args: [toExpr(self, TEXT), LiteralExpr.of(distance)],\n returns: { codecId: TEXT, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}}::pdb.fuzzy({{arg0}})',\n },\n });\n },\n },\n // https://docs.paradedb.com/documentation/sorting/boost\n paradeDbBoost: {\n self: { codecId: TEXT },\n impl: (self, weight) => {\n if (!Number.isInteger(weight) || weight < -2048 || weight > 2048) {\n throw new Error(\n `paradeDbBoost: boost must be an integer in [-2048, 2048]; got ${String(weight)}`,\n );\n }\n return buildOperation({\n method: 'paradeDbBoost',\n args: [toExpr(self, TEXT), LiteralExpr.of(weight)],\n returns: { codecId: TEXT, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}}::pdb.boost({{arg0}})',\n },\n });\n },\n },\n paradeDbConst: {\n self: { codecId: TEXT },\n impl: (self, value) => {\n if (!Number.isInteger(value)) {\n throw new Error(`paradeDbConst: value must be an integer; got ${String(value)}`);\n }\n return buildOperation({\n method: 'paradeDbConst',\n args: [toExpr(self, TEXT), LiteralExpr.of(value)],\n returns: { codecId: TEXT, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}}::pdb.const({{arg0}})',\n },\n });\n },\n },\n paradeDbSlop: {\n self: { codecId: TEXT },\n impl: (self, slop) => {\n if (!Number.isInteger(slop) || slop < 0) {\n throw new Error(`paradeDbSlop: slop must be a non-negative integer; got ${String(slop)}`);\n }\n return buildOperation({\n method: 'paradeDbSlop',\n args: [toExpr(self, TEXT), LiteralExpr.of(slop)],\n returns: { codecId: TEXT, nullable: false },\n lowering: {\n targetFamily: 'sql',\n strategy: 'function',\n template: '{{self}}::pdb.slop({{arg0}})',\n },\n });\n },\n },\n // https://docs.paradedb.com/documentation/full-text/proximity\n paradeDbProximity: {\n self: { codecId: TEXT },\n impl: (start) => new ParadeDbProximityChain(start),\n },\n };\n}\n\nexport const paradedbPackMeta = {\n kind: 'extension',\n id: PARADEDB_EXTENSION_ID,\n familyId: 'sql',\n targetId: 'postgres',\n version: '0.0.1',\n capabilities: {\n postgres: {\n 'paradedb/bm25': true,\n },\n },\n indexTypes: paradedbIndexTypes,\n types: {\n queryOperationTypes: {\n import: {\n package: '@prisma-next/extension-paradedb/operation-types',\n named: 'QueryOperationTypes',\n alias: 'ParadeDbQueryOperationTypes',\n },\n },\n },\n} as const;\n"],"mappings":";;;;;;;AAGA,MAAa,wBAAwB;;;;;;;;;;;;;;;;AAiBrC,MAAa,oBAAoB;;;ACbjC,MAAMA,SAAO;AAeb,IAAa,yBAAb,MAAa,uBAEb;CACE,aAAsB;EAAE,SAASA;EAAM,UAAU;EAAO;CAExD;CACA;CAEA,YAAY,OAAsB,QAAkC,EAAE,EAAE;EACtE,KAAK,QAAQ;EACb,KAAK,QAAQ;;CAGf,OACE,UACA,MACA,SACwB;EACxB,IAAI,CAAC,OAAO,UAAU,SAAS,IAAI,WAAW,GAC5C,MAAM,IAAI,MACR,0EAA0E,OAAO,SAAS,GAC3F;EAEH,OAAO,IAAI,uBAAuB,KAAK,OAAO,CAC5C,GAAG,KAAK,OACR;GAAE;GAAU;GAAM,SAAS,SAAS,YAAY;GAAM,CACvD,CAAC;;CAGJ,WAA0B;EACxB,IAAI,KAAK,MAAM,WAAW,GACxB,MAAM,IAAI,MACR,+EACD;EAEH,MAAM,OAAwB,CAAC,OAAO,KAAK,OAAOA,OAAK,CAAC;EACxD,IAAI,WAAW;EACf,KAAK,MAAM,SAAS,MAAM,MAAM;GAC9B,MAAM,KAAK,KAAK,UAAU,QAAQ;GAClC,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,CAAC;GACxC,KAAK,KAAK,OAAO,KAAK,MAAMA,OAAK,CAAC;GAClC,YAAY,IAAI,GAAG,QAAQ,IAAI,EAAE,KAAK,GAAG,QAAQ,IAAI,IAAI,EAAE;IAC3D;EACF,YAAY;EACZ,MAAM,CAAC,MAAM,GAAG,QAAQ;EACxB,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,sDAAsD;EAExE,OAAO,IAAI,cAAc;GACvB,QAAQ;GACR;GACA,MAAM,KAAK,SAAS,IAAI,OAAO,KAAA;GAC/B,SAAS,KAAK;GACd,UAAU;IACR,cAAc;IACd,UAAU;IACV;IACD;GACF,CAAC;;;;;ACvEN,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,OAAO;AAEb,SAAgB,0BAA8E;CAC5F,OAAO;EAGL,eAAe;GACb,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,MAAM,UACX,eAAe;IACb,QAAQ;IACR,MAAM,CAAC,OAAO,MAAM,KAAK,EAAE,OAAO,OAAO,KAAK,CAAC;IAC/C,SAAS;KAAE,SAAS;KAAM,UAAU;KAAO;IAC3C,UAAU;KACR,cAAc;KACd,UAAU;KACV,UAAU;KACX;IACF,CAAC;GACL;EACD,kBAAkB;GAChB,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,MAAM,UACX,eAAe;IACb,QAAQ;IACR,MAAM,CAAC,OAAO,MAAM,KAAK,EAAE,OAAO,OAAO,KAAK,CAAC;IAC/C,SAAS;KAAE,SAAS;KAAM,UAAU;KAAO;IAC3C,UAAU;KACR,cAAc;KACd,UAAU;KACV,UAAU;KACX;IACF,CAAC;GACL;EACD,kBAAkB;GAChB,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,MAAM,UACX,eAAe;IACb,QAAQ;IACR,MAAM,CAAC,OAAO,MAAM,KAAK,EAAE,OAAO,OAAO,KAAK,CAAC;IAC/C,SAAS;KAAE,SAAS;KAAM,UAAU;KAAO;IAC3C,UAAU;KACR,cAAc;KACd,UAAU;KACV,UAAU;KACX;IACF,CAAC;GACL;EAED,cAAc;GACZ,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,MAAM,UACX,eAAe;IACb,QAAQ;IACR,MAAM,CAAC,OAAO,MAAM,KAAK,EAAE,OAAO,OAAO,KAAK,CAAC;IAC/C,SAAS;KAAE,SAAS;KAAM,UAAU;KAAO;IAC3C,UAAU;KACR,cAAc;KACd,UAAU;KACV,UAAU;KACX;IACF,CAAC;GACL;EAED,gBAAgB;GACd,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,MAAM,UACX,eAAe;IACb,QAAQ;IACR,MAAM,CAAC,OAAO,MAAM,KAAK,EAAE,OAAO,OAAO,KAAK,CAAC;IAC/C,SAAS;KAAE,SAAS;KAAM,UAAU;KAAO;IAC3C,UAAU;KACR,cAAc;KACd,UAAU;KACV,UAAU;KACX;IACF,CAAC;GACL;EAED,eAAe;GACb,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,SACL,eAAe;IACb,QAAQ;IACR,MAAM,CAAC,OAAO,MAAM,KAAK,CAAC;IAC1B,SAAS;KAAE,SAAS;KAAQ,UAAU;KAAO;IAC7C,UAAU;KACR,cAAc;KACd,UAAU;KACV,UAAU;KACX;IACF,CAAC;GACL;EAGD,eAAe;GACb,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,MAAM,aAAa;IACxB,IAAI,CAAC,OAAO,UAAU,SAAS,IAAI,WAAW,KAAK,WAAW,GAC5D,MAAM,IAAI,MACR,6DAA6D,OAAO,SAAS,GAC9E;IAEH,OAAO,eAAe;KACpB,QAAQ;KACR,MAAM,CAAC,OAAO,MAAM,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;KACpD,SAAS;MAAE,SAAS;MAAM,UAAU;MAAO;KAC3C,UAAU;MACR,cAAc;MACd,UAAU;MACV,UAAU;MACX;KACF,CAAC;;GAEL;EAED,eAAe;GACb,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,MAAM,WAAW;IACtB,IAAI,CAAC,OAAO,UAAU,OAAO,IAAI,SAAS,SAAS,SAAS,MAC1D,MAAM,IAAI,MACR,iEAAiE,OAAO,OAAO,GAChF;IAEH,OAAO,eAAe;KACpB,QAAQ;KACR,MAAM,CAAC,OAAO,MAAM,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC;KAClD,SAAS;MAAE,SAAS;MAAM,UAAU;MAAO;KAC3C,UAAU;MACR,cAAc;MACd,UAAU;MACV,UAAU;MACX;KACF,CAAC;;GAEL;EACD,eAAe;GACb,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,MAAM,UAAU;IACrB,IAAI,CAAC,OAAO,UAAU,MAAM,EAC1B,MAAM,IAAI,MAAM,gDAAgD,OAAO,MAAM,GAAG;IAElF,OAAO,eAAe;KACpB,QAAQ;KACR,MAAM,CAAC,OAAO,MAAM,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC;KACjD,SAAS;MAAE,SAAS;MAAM,UAAU;MAAO;KAC3C,UAAU;MACR,cAAc;MACd,UAAU;MACV,UAAU;MACX;KACF,CAAC;;GAEL;EACD,cAAc;GACZ,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,MAAM,SAAS;IACpB,IAAI,CAAC,OAAO,UAAU,KAAK,IAAI,OAAO,GACpC,MAAM,IAAI,MAAM,0DAA0D,OAAO,KAAK,GAAG;IAE3F,OAAO,eAAe;KACpB,QAAQ;KACR,MAAM,CAAC,OAAO,MAAM,KAAK,EAAE,YAAY,GAAG,KAAK,CAAC;KAChD,SAAS;MAAE,SAAS;MAAM,UAAU;MAAO;KAC3C,UAAU;MACR,cAAc;MACd,UAAU;MACV,UAAU;MACX;KACF,CAAC;;GAEL;EAED,mBAAmB;GACjB,MAAM,EAAE,SAAS,MAAM;GACvB,OAAO,UAAU,IAAI,uBAAuB,MAAM;GACnD;EACF;;AAGH,MAAa,mBAAmB;CAC9B,MAAM;CACN,IAAI;CACJ,UAAU;CACV,UAAU;CACV,SAAS;CACT,cAAc,EACZ,UAAU,EACR,iBAAiB,MAClB,EACF;CACD,YAAY;CACZ,OAAO,EACL,qBAAqB,EACnB,QAAQ;EACN,SAAS;EACT,OAAO;EACP,OAAO;EACR,EACF,EACF;CACF"}
|