@_linked/core 2.17.0 → 2.18.0-next.20260904081842
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/CHANGELOG.md +49 -0
- package/lib/esm/queries/QueryBuilder.d.ts +54 -0
- package/lib/esm/queries/QueryBuilder.js +77 -2
- package/lib/esm/queries/QueryBuilder.js.map +1 -1
- package/lib/esm/shapes/Shape.d.ts +36 -0
- package/lib/esm/shapes/Shape.js +49 -0
- package/lib/esm/shapes/Shape.js.map +1 -1
- package/lib/esm/shapes/propertyShapeTerms.d.ts +36 -0
- package/lib/esm/shapes/propertyShapeTerms.js +49 -0
- package/lib/esm/shapes/propertyShapeTerms.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,54 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.18.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#205](https://github.com/linked-cm/core/pull/205) [`48ecb4d`](https://github.com/linked-cm/core/commit/48ecb4dbdc20471bf19a4c4cc9d58ef90f5cd1b1) Thanks [@flyon](https://github.com/flyon)! - Expose the meta-model's SHACL constraint table via `getPropertyShapeTerms()` /
|
|
8
|
+
`getPropertyShapeTerm(label)`, so an alternative serializer can look up each constraint's
|
|
9
|
+
predicate, datatype and node kind rather than hard-coding its own copy.
|
|
10
|
+
|
|
11
|
+
Purely additive — `buildPropertyShapeData` is unchanged. Create Now's code→RDF shape sync uses
|
|
12
|
+
this to emit the full SHACL constraint set (pattern, `sh:in`, ranges, lengths, class) instead of
|
|
13
|
+
the five it previously enumerated by hand.
|
|
14
|
+
|
|
15
|
+
- [#206](https://github.com/linked-cm/core/pull/206) [`a4989a8`](https://github.com/linked-cm/core/commit/a4989a80e3619500238f6c1a8f60cc482458b99a) Thanks [@flyon](https://github.com/flyon)! - Add a boolean existence check to the query API: `Shape.exists(id)` and a terminal
|
|
16
|
+
`.exists()` on the select builder.
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
if (await SourceDocument.exists({ id })) {
|
|
20
|
+
await SourceDocument.update(values).for({ id });
|
|
21
|
+
} else {
|
|
22
|
+
await SourceDocument.create({ id, ...values });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// or, for "does anything match?"
|
|
26
|
+
await Person.select()
|
|
27
|
+
.where((p) => p.name.equals("Semmy"))
|
|
28
|
+
.exists();
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Until now "does this node exist?" had no direct expression. The natural workaround —
|
|
32
|
+
`select().where(…).one()` — resolves to a row or `null`, so callers wrap it in a
|
|
33
|
+
`.catch(() => null)` and convert; that swallow makes an unreachable store
|
|
34
|
+
indistinguishable from a missing node, silently turning every
|
|
35
|
+
`exists ? update : create` into an unconditional `create`.
|
|
36
|
+
|
|
37
|
+
`.exists()` returns a real `Promise<boolean>` and never catches: a store, transport or
|
|
38
|
+
lowering failure rejects, including an unresolved query-context reference in a where
|
|
39
|
+
clause (which `exec()` still reports as `null`, unchanged).
|
|
40
|
+
|
|
41
|
+
It also normalises the query to its cheapest correct form first. Dropped: the projection,
|
|
42
|
+
preloads, sorting and pagination — none of them can change whether a _match_ exists, and
|
|
43
|
+
honouring `offset` while dropping the projection could actively flip the answer, since
|
|
44
|
+
`OFFSET` skips rows of a solution sequence whose cardinality depends on the projection.
|
|
45
|
+
Kept: filters, `minus` entries and the subject. `LIMIT 1` is then applied. So
|
|
46
|
+
`Person.select(p => p.name).orderBy(…).offset(10).exists()` emits the same minimal
|
|
47
|
+
`SELECT DISTINCT ?a0 … LIMIT 1` as a bare `Person.exists({id})`.
|
|
48
|
+
|
|
49
|
+
Purely additive. No IR, algebra, wire-format or `IDataset` change — it lowers to an
|
|
50
|
+
ordinary SELECT, so every store implementation supports it as-is.
|
|
51
|
+
|
|
3
52
|
## 2.17.0
|
|
4
53
|
|
|
5
54
|
### Minor Changes
|
|
@@ -111,6 +111,51 @@ export declare class SelectBuilder<S extends Shape = Shape, R = any, Result = an
|
|
|
111
111
|
forAll(ids?: (string | NodeReferenceValue)[]): SelectBuilder<S, R, Result>;
|
|
112
112
|
/** Limit to one result. Unwraps array Result type to single element. */
|
|
113
113
|
one(): SelectBuilder<S, R, Result extends (infer E)[] ? E : Result>;
|
|
114
|
+
/**
|
|
115
|
+
* Whether **any** row matches this query. Executes immediately and resolves to a
|
|
116
|
+
* real `boolean` — never a row, never `null`, never an array the caller has to
|
|
117
|
+
* interpret.
|
|
118
|
+
*
|
|
119
|
+
* ```ts
|
|
120
|
+
* await Person.select().where(p => p.name.equals('Semmy')).exists(); // boolean
|
|
121
|
+
* await Person.exists({id}); // the common case
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* ### The query is normalised to its cheapest correct form first
|
|
125
|
+
*
|
|
126
|
+
* **Dropped** — the projection, preloads, sorting *and pagination* (`limit`/`offset`).
|
|
127
|
+
* **Kept** — filters, `minus` entries and the subject: those decide whether a match
|
|
128
|
+
* exists. `LIMIT 1` is then applied.
|
|
129
|
+
*
|
|
130
|
+
* So `.select(…).orderBy(…).offset(10).exists()` costs, and answers, exactly the same
|
|
131
|
+
* as a bare `.exists()`:
|
|
132
|
+
*
|
|
133
|
+
* ```sparql
|
|
134
|
+
* SELECT DISTINCT ?a0 WHERE { ?a0 rdf:type <…> . FILTER(?a0 = <…>) } LIMIT 1
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
137
|
+
* Pagination is dropped rather than honoured on purpose. `OFFSET` skips rows of the
|
|
138
|
+
* *solution sequence*, whose cardinality depends on the projection — a multi-valued
|
|
139
|
+
* projected property yields several rows per subject. Keeping `offset` while dropping
|
|
140
|
+
* the projection would let the same chain answer `true` before normalisation and
|
|
141
|
+
* `false` after. `exists()` therefore answers a question about the **match set**,
|
|
142
|
+
* not about a page of it.
|
|
143
|
+
*
|
|
144
|
+
* ### Errors are not swallowed
|
|
145
|
+
*
|
|
146
|
+
* A store, transport or lowering failure rejects the returned promise; it is never
|
|
147
|
+
* reported as `false`. That includes an unresolved query-context reference in a
|
|
148
|
+
* where clause, which `exec()` deliberately reports as `null` ("not ready") but
|
|
149
|
+
* which `exists()` must not flatten into a boolean.
|
|
150
|
+
*
|
|
151
|
+
* The one case that does resolve `false` without querying is a query with **no
|
|
152
|
+
* subject to ask about** — `.for(null)`, `.for(undefined)`, or an unresolved
|
|
153
|
+
* `PendingQueryContext` *as the subject*. "Does the node with no id exist?" has a
|
|
154
|
+
* correct total answer, and it is `false`.
|
|
155
|
+
*
|
|
156
|
+
* @param target Optional explicit dataset, as for {@link exec}.
|
|
157
|
+
*/
|
|
158
|
+
exists(target?: IDataset): Promise<boolean>;
|
|
114
159
|
/**
|
|
115
160
|
* Preload a component's query fields at the given property path.
|
|
116
161
|
*
|
|
@@ -181,6 +226,15 @@ export declare class SelectBuilder<S extends Shape = Shape, R = any, Result = an
|
|
|
181
226
|
* dispatch — only `.exec(target)` overrides.
|
|
182
227
|
*/
|
|
183
228
|
exec(target?: IDataset): Promise<Result>;
|
|
229
|
+
/**
|
|
230
|
+
* Shared execution path for {@link exec} and {@link exists}.
|
|
231
|
+
*
|
|
232
|
+
* @param swallowUnresolvedContext When true (the `exec` path), a where-clause
|
|
233
|
+
* context reference that has not resolved yet surfaces as `null` — "not ready",
|
|
234
|
+
* which a reactive layer re-runs once the context lands. `exists()` passes
|
|
235
|
+
* false: it must not turn "could not ask" into a boolean.
|
|
236
|
+
*/
|
|
237
|
+
private _run;
|
|
184
238
|
/** `await` triggers execution. */
|
|
185
239
|
then<TResult1 = Result, TResult2 = never>(onfulfilled?: ((value: Result) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
|
|
186
240
|
/** Catch errors from execution. Chain off then() to avoid re-executing. */
|
|
@@ -175,6 +175,68 @@ export class SelectBuilder {
|
|
|
175
175
|
one() {
|
|
176
176
|
return this.clone({ limit: 1, singleResult: true });
|
|
177
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Whether **any** row matches this query. Executes immediately and resolves to a
|
|
180
|
+
* real `boolean` — never a row, never `null`, never an array the caller has to
|
|
181
|
+
* interpret.
|
|
182
|
+
*
|
|
183
|
+
* ```ts
|
|
184
|
+
* await Person.select().where(p => p.name.equals('Semmy')).exists(); // boolean
|
|
185
|
+
* await Person.exists({id}); // the common case
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* ### The query is normalised to its cheapest correct form first
|
|
189
|
+
*
|
|
190
|
+
* **Dropped** — the projection, preloads, sorting *and pagination* (`limit`/`offset`).
|
|
191
|
+
* **Kept** — filters, `minus` entries and the subject: those decide whether a match
|
|
192
|
+
* exists. `LIMIT 1` is then applied.
|
|
193
|
+
*
|
|
194
|
+
* So `.select(…).orderBy(…).offset(10).exists()` costs, and answers, exactly the same
|
|
195
|
+
* as a bare `.exists()`:
|
|
196
|
+
*
|
|
197
|
+
* ```sparql
|
|
198
|
+
* SELECT DISTINCT ?a0 WHERE { ?a0 rdf:type <…> . FILTER(?a0 = <…>) } LIMIT 1
|
|
199
|
+
* ```
|
|
200
|
+
*
|
|
201
|
+
* Pagination is dropped rather than honoured on purpose. `OFFSET` skips rows of the
|
|
202
|
+
* *solution sequence*, whose cardinality depends on the projection — a multi-valued
|
|
203
|
+
* projected property yields several rows per subject. Keeping `offset` while dropping
|
|
204
|
+
* the projection would let the same chain answer `true` before normalisation and
|
|
205
|
+
* `false` after. `exists()` therefore answers a question about the **match set**,
|
|
206
|
+
* not about a page of it.
|
|
207
|
+
*
|
|
208
|
+
* ### Errors are not swallowed
|
|
209
|
+
*
|
|
210
|
+
* A store, transport or lowering failure rejects the returned promise; it is never
|
|
211
|
+
* reported as `false`. That includes an unresolved query-context reference in a
|
|
212
|
+
* where clause, which `exec()` deliberately reports as `null` ("not ready") but
|
|
213
|
+
* which `exists()` must not flatten into a boolean.
|
|
214
|
+
*
|
|
215
|
+
* The one case that does resolve `false` without querying is a query with **no
|
|
216
|
+
* subject to ask about** — `.for(null)`, `.for(undefined)`, or an unresolved
|
|
217
|
+
* `PendingQueryContext` *as the subject*. "Does the node with no id exist?" has a
|
|
218
|
+
* correct total answer, and it is `false`.
|
|
219
|
+
*
|
|
220
|
+
* @param target Optional explicit dataset, as for {@link exec}.
|
|
221
|
+
*/
|
|
222
|
+
exists(target) {
|
|
223
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
224
|
+
const result = yield this.clone({
|
|
225
|
+
// Drop everything that cannot change whether a match exists, plus pagination.
|
|
226
|
+
selectFn: undefined,
|
|
227
|
+
fieldSet: undefined,
|
|
228
|
+
selectAllLabels: undefined,
|
|
229
|
+
preloads: undefined,
|
|
230
|
+
sortByFn: undefined,
|
|
231
|
+
sortDirection: undefined,
|
|
232
|
+
_sortBy: undefined,
|
|
233
|
+
offset: undefined,
|
|
234
|
+
// The cheapest correct bound. Replaces any limit set earlier in the chain.
|
|
235
|
+
limit: 1,
|
|
236
|
+
})._run(target, false);
|
|
237
|
+
return Array.isArray(result) ? result.length > 0 : result != null;
|
|
238
|
+
});
|
|
239
|
+
}
|
|
178
240
|
/**
|
|
179
241
|
* Preload a component's query fields at the given property path.
|
|
180
242
|
*
|
|
@@ -464,6 +526,19 @@ export class SelectBuilder {
|
|
|
464
526
|
* dispatch — only `.exec(target)` overrides.
|
|
465
527
|
*/
|
|
466
528
|
exec(target) {
|
|
529
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
530
|
+
return this._run(target, true);
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Shared execution path for {@link exec} and {@link exists}.
|
|
535
|
+
*
|
|
536
|
+
* @param swallowUnresolvedContext When true (the `exec` path), a where-clause
|
|
537
|
+
* context reference that has not resolved yet surfaces as `null` — "not ready",
|
|
538
|
+
* which a reactive layer re-runs once the context lands. `exists()` passes
|
|
539
|
+
* false: it must not turn "could not ask" into a boolean.
|
|
540
|
+
*/
|
|
541
|
+
_run(target, swallowUnresolvedContext) {
|
|
467
542
|
return __awaiter(this, void 0, void 0, function* () {
|
|
468
543
|
var _a;
|
|
469
544
|
if (this._nullSubject) {
|
|
@@ -478,14 +553,14 @@ export class SelectBuilder {
|
|
|
478
553
|
// `async` ensures a missing global dispatch surfaces as a rejected promise, not a sync throw.
|
|
479
554
|
const dispatch = target !== null && target !== void 0 ? target : getQueryDispatch();
|
|
480
555
|
try {
|
|
481
|
-
return
|
|
556
|
+
return yield dispatch.selectQuery(this);
|
|
482
557
|
}
|
|
483
558
|
catch (err) {
|
|
484
559
|
// A where-clause context reference that hasn't resolved yet surfaces as
|
|
485
560
|
// UnresolvedContextError when the dataset lowers the query. For SELECT this
|
|
486
561
|
// means "not ready" — return null (a reactive layer re-runs once it lands),
|
|
487
562
|
// mirroring the pending-subject behavior. Mutations still throw.
|
|
488
|
-
if (err instanceof UnresolvedContextError) {
|
|
563
|
+
if (swallowUnresolvedContext && err instanceof UnresolvedContextError) {
|
|
489
564
|
return null;
|
|
490
565
|
}
|
|
491
566
|
throw Error(`Error while executing query: ${err.stack}.\n\nQuery related to this error: ${JSON.stringify(this.toJSON())}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../src/queries/QueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../src/queries/QueryBuilder.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAOL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAC,YAAY,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,QAAQ,EAA6C,MAAM,eAAe,CAAC;AACnF,OAAO,EAAC,mBAAmB,EAAE,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAC,wBAAwB,EAAC,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,GAIzB,MAAM,gCAAgC,CAAC;AAyDxC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,aAAa;IAwBxB,YAAoB,IAA4B;QAujBhD,yEAAyE;QAChE,gBAAW,GAAG,QAAiB,CAAC;QAvjBvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAChD,CAAC;IAED,6CAA6C;IACrC,KAAK,CAA2B,YAA+C,EAAE;QACvF,OAAO,IAAI,aAAa,iBACtB,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,QAAQ,EAAE,IAAI,CAAC,SAAgB,EAC/B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,aAAa,EAAE,IAAI,CAAC,cAAc,EAClC,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,MAAM,EAAE,IAAI,CAAC,OAAO,EACpB,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,eAAe,EAAE,IAAI,CAAC,gBAAgB,EACtC,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAC7C,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IACpC,SAAS,EACZ,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,sBAAsB;IACtB,8EAA8E;IAE9E;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CACT,KAAmC;QAEnC,MAAM,QAAQ,GAAG,YAAY,CAAI,KAAK,CAAC,CAAC;QACxC,OAAO,IAAI,aAAa,CAAI,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;IACjD,CAAC;IAUD,MAAM,CAAW,oBAAsE;QACrF,IAAI,oBAAoB,YAAY,QAAQ,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAoC,CAAC;YACtE,OAAO,IAAI,CAAC,KAAK,CAAY,EAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAC,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,oBAAoB,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAoC,CAAC;YACtE,OAAO,IAAI,CAAC,KAAK,CAAY,EAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAY,EAAC,QAAQ,EAAE,oBAA2B,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC;IACzH,CAAC;IAED,oDAAoD;IACpD,SAAS;QACP,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAC3B,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAoC,CAAC;QAC9E,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAC,CAAC,CAAC;IACjE,CAAC;IAED,0BAA0B;IAC1B,KAAK,CAAC,EAAkB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,EAAE,EAAC,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,SAAqE;;QACzE,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,IAAI,OAAO,SAAS,KAAK,UAAU,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;YAC5D,kDAAkD;YAClD,KAAK,CAAC,OAAO,GAAG,MAAC,SAAmC,CAAC,KAAK,0CAAE,EAAE,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,KAAK,CAAC,OAAO,GAAG,SAA2B,CAAC;QAC9C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,YAAY,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,EAAC,CAAC,CAAC;IAC1D,CAAC;IAED,sBAAsB;IACtB,OAAO,CAAK,EAAuB,EAAE,YAA4B,KAAK;QACpE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAE,EAAS,EAAE,aAAa,EAAE,SAAS,EAAC,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,MAAM,CAAK,EAAuB,EAAE,YAA4B,KAAK;QACnE,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,CAAS;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC;IAChC,CAAC;IAED,yBAAyB;IACzB,MAAM,CAAC,CAAS;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,MAAM,EAAE,CAAC,EAAC,CAAC,CAAC;IACjC,CAAC;IAED,qFAAqF;IACrF,GAAG,CAAC,EAAwE;QAC1E,IAAI,EAAE,YAAY,mBAAmB,EAAE,CAAC;YACtC,wEAAwE;YACxE,oEAAoE;YACpE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,EAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,WAAW,EAAC,CAAQ,CAAC;QACpJ,CAAC;QACD,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACf,gFAAgF;YAChF,8FAA8F;YAC9F,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAC,CAAQ,CAAC;QAC9I,CAAC;QACD,MAAM,OAAO,GAAuB,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,iBAAiB,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAC,CAAQ,CAAC;IAC/G,CAAC;IAED;;;OAGG;IACH,iBAAiB;;QACf,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,EAAE,CAAA,CAAC,CAAC;IAC5D,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,GAAqC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAC,CAAC,CAAC;QACpH,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,iBAAiB,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAC,CAAC,CAAC;IACzG,CAAC;IAED,wEAAwE;IACxE,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAA6C,EAAC,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACG,MAAM,CAAC,MAAiB;;YAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;gBAC9B,8EAA8E;gBAC9E,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,SAAS;gBACnB,eAAe,EAAE,SAAS;gBAC1B,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,SAAS;gBACnB,aAAa,EAAE,SAAS;gBACxB,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,SAAS;gBACjB,2EAA2E;gBAC3E,KAAK,EAAE,CAAC;aACT,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACvB,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;QACpE,CAAC;KAAA;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CACL,IAAY,EACZ,SAAqC;QAErC,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAE,WAAW,EAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,2EAA2E;YAC3E,gEAAgE;YAChE,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAyC,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8EAA8E;IAC9E,mBAAmB;IACnB,8EAA8E;IAE9E,mEAAmE;IAC3D,mBAAmB;QACzB,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,CAAC,CAAM,EAAE,EAAE;gBAC3B,OAAO,IAAI,CAAC,SAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YACnF,CAAC,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvD,IAAI,EAAE,EAAE,CAAC;gBACP,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;oBACxC,GAAI,EAAE,CAAC,OAA2B;oBAClC,GAAI,SAAS,CAAC,OAA2B;iBAC1C,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,EAAE,GAAG,SAAS,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,wEAAwE;IAChE,qBAAqB;QAC3B,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,aAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAC,CAAC;YAClC,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,MAAM,GAAI,KAAK,CAAC,OAAoB,CAAC,KAAK,CAAC,CAAC;gBAElD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;wBAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;wBACxD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAuB,EAAE,CAAC,CAAC,EAAC,eAAe,EAAE,GAAG,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;oBACjF,CAAC,CAAC,CAAC;oBACH,OAAO,EAAC,aAAa,EAAC,CAAC;gBACzB,CAAC;gBAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,UAAU,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;oBACxF,MAAM,QAAQ,GAAG,QAAQ,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;oBAC1D,OAAO,EAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAuB,EAAE,CAAC,CAAC,EAAC,eAAe,EAAE,GAAG,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC;gBACpG,CAAC;gBAED,wBAAwB;gBACxB,OAAO,EAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;YACjE,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,gBAAgB;IAChB,8EAA8E;IAE9E;;;;;;;;;;OAUG;IACH,MAAM;;QACJ,MAAM,OAAO,GAAG,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,0CAAE,EAAE,KAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAqB;YAC7B,CAAC,EAAE,YAAY;YACf,KAAK,EAAE,OAAO;SACf,CAAC;QAEF,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACtC,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC;QACnC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,wEAAwE;YACxE,qEAAqE;YACrE,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvF,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,QAA+B,CAAC,EAAE,CAAC;QAC1D,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrG,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAC/B,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAuC,EAAE,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,CAC9G,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzD,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7C,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAClD,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7C,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAA0B,IAAsB;QAC7D,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,OAAO,GAAG,aAAa,CAAC,IAAI,CAAI,IAAI,CAAC,KAAY,CAAC,CAAC;QAEvD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YACH,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB,CAAC;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAqB,CAAC;QAC1D,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAqB,CAAC;QAC5D,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,0EAA0E;YAC1E,iEAAiE;YACjE,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC5C,CAAC,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YACjB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAqB,CAAC;QACrD,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAqB,CAAC;QAC9D,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,GAAG,OAAO,CAAC,GAAG,EAAsB,CAAC;QAC9C,CAAC;QAED,qFAAqF;QACrF,MAAM,SAAS,GAAsC,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAEvC,uBAAuB;QACvB,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;YAC5B,SAAS,CAAC,MAAM,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,CAAC;QAED,6EAA6E;QAC7E,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7D,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;YAC3B,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;YACnE,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvD,wBAAwB,CAAC,SAAS,EAAE,CAAC,CAAC,CACvC,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;QAChC,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,GAAI,OAAe,CAAC,KAAK,CAAC,SAAS,CAAqB,CAAC;QAClE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAE9E;;;;OAIG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACrC,CAAC;IAED,2DAA2D;IACnD,oBAAoB;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAErC,IAAI,KAA4B,CAAC;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,CAAC;QAED,IAAI,MAA8B,CAAC;QACnC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,GAAG,oBAAoB,CAC3B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAuC,EAC5C,IAAI,CAAC,cAAc,IAAI,KAAK,CAC7B,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;QAED,MAAM,KAAK,GAAmB;YAC5B,OAAO;YACP,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM;YACN,YAAY,EACV,IAAI,CAAC,aAAa;gBAClB,CAAC,CAAC,CACA,IAAI,CAAC,QAAQ;oBACb,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;oBACjC,IAAI,IAAI,IAAI,CAAC,QAAQ,CACtB;SACJ,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACpD,CAAC;aAAM,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAKD,mFAAmF;IACnF,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;;;;OAQG;IACG,IAAI,CAAC,MAAiB;;YAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAoB,CAAC;QACpD,CAAC;KAAA;IAED;;;;;;;OAOG;IACW,IAAI,CAChB,MAA4B,EAC5B,wBAAiC;;;YAEjC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,qFAAqF;gBACrF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,EAAE,CAAA,EAAE,CAAC;gBACnD,4FAA4F;gBAC5F,OAAO,IAAI,CAAC;YACd,CAAC;YACD,6EAA6E;YAC7E,8FAA8F;YAC9F,MAAM,QAAQ,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,gBAAgB,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,wEAAwE;gBACxE,4EAA4E;gBAC5E,4EAA4E;gBAC5E,iEAAiE;gBACjE,IAAI,wBAAwB,IAAI,GAAG,YAAY,sBAAsB,EAAE,CAAC;oBACtE,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,CAAC,gCAAiC,GAAa,CAAC,KAAK,qCAAqC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACxI,CAAC;QACH,CAAC;KAAA;IAED,8EAA8E;IAC9E,+BAA+B;IAC/B,8EAA8E;IAE9E,kCAAkC;IAClC,IAAI,CACF,WAA0E,EAC1E,UAAuE;QAEvE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,2EAA2E;IAC3E,KAAK,CACH,UAAqE;QAErE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,+EAA+E;IAC/E,OAAO,CAAC,SAA+B;QACrC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AAED,4FAA4F;AAC5F,OAAO,EAAC,aAAa,IAAI,YAAY,EAAC,CAAC"}
|
|
@@ -2,6 +2,8 @@ import type { NodeShapeData, PropertyShapeData } from './nodeShapeData.js';
|
|
|
2
2
|
import type { QueryBuildFn, QueryResponseToResultType, SelectAllQueryResponse, WhereClause } from '../queries/SelectQuery.js';
|
|
3
3
|
import type { NodeReferenceValue, UpdatePartial } from '../queries/QueryFactory.js';
|
|
4
4
|
import { QueryBuilder } from '../queries/QueryBuilder.js';
|
|
5
|
+
import type { PendingQueryContext } from '../queries/QueryContext.js';
|
|
6
|
+
import type { IDataset } from '../interfaces/IDataset.js';
|
|
5
7
|
import { CreateBuilder } from '../queries/CreateBuilder.js';
|
|
6
8
|
import { UpdateBuilder } from '../queries/UpdateBuilder.js';
|
|
7
9
|
import { DeleteBuilder, type DeleteId } from '../queries/DeleteBuilder.js';
|
|
@@ -67,6 +69,40 @@ export declare abstract class Shape {
|
|
|
67
69
|
* Chain `.for(id)` to target a single entity.
|
|
68
70
|
*/
|
|
69
71
|
static selectAll<S extends Shape, ResultType = QueryResponseToResultType<SelectAllQueryResponse<S>, S>[]>(this: ShapeConstructor<S>): QueryBuilder<S, any, ResultType>;
|
|
72
|
+
/**
|
|
73
|
+
* Whether a node with this id exists as an instance of this shape.
|
|
74
|
+
*
|
|
75
|
+
* ```typescript
|
|
76
|
+
* if (await SourceDocument.exists({id})) {
|
|
77
|
+
* await SourceDocument.update(values).for({id});
|
|
78
|
+
* } else {
|
|
79
|
+
* await SourceDocument.create({id, ...values});
|
|
80
|
+
* }
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* Resolves to a real `boolean` — unlike `select().where(…).one()`, which resolves
|
|
84
|
+
* to a row or `null` and leaves the conversion (and the failure modes) to the
|
|
85
|
+
* caller. Runs the cheapest correct query: one projected variable, the shape's
|
|
86
|
+
* type triple, an equality filter on the subject, `LIMIT 1`.
|
|
87
|
+
*
|
|
88
|
+
* A `null`/`undefined` id resolves to `false` without touching the store — as does
|
|
89
|
+
* a `PendingQueryContext` whose value has not landed yet, since there is no subject
|
|
90
|
+
* to ask about. (An unresolved context inside a *where clause* rejects instead; see
|
|
91
|
+
* {@link QueryBuilder.exists}.)
|
|
92
|
+
*
|
|
93
|
+
* **Errors reject — they are never reported as `false`.** Do not wrap this in a
|
|
94
|
+
* `.catch(() => false)`: that is exactly how a broken existence check hides,
|
|
95
|
+
* turning every `exists ? update : create` into an unconditional `create`.
|
|
96
|
+
*
|
|
97
|
+
* For "does *anything* match?", compose on the builder instead:
|
|
98
|
+
* `await Person.select().where(p => p.name.equals('Semmy')).exists()`.
|
|
99
|
+
*
|
|
100
|
+
* @param id The node id: a string IRI, a `{id}` reference, or a `PendingQueryContext`.
|
|
101
|
+
* A malformed string IRI rejects (it does not throw synchronously).
|
|
102
|
+
* @param target Optional explicit dataset to run against; omitted uses the
|
|
103
|
+
* global query dispatch.
|
|
104
|
+
*/
|
|
105
|
+
static exists<S extends Shape>(this: ShapeConstructor<S>, id: string | NodeReferenceValue | PendingQueryContext | null | undefined, target?: IDataset): Promise<boolean>;
|
|
70
106
|
/**
|
|
71
107
|
* Update properties of an instance of this shape.
|
|
72
108
|
* Chain `.for(id)` to target a specific entity.
|
package/lib/esm/shapes/Shape.js
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import { QueryBuilder } from '../queries/QueryBuilder.js';
|
|
2
11
|
import { CreateBuilder } from '../queries/CreateBuilder.js';
|
|
3
12
|
import { UpdateBuilder } from '../queries/UpdateBuilder.js';
|
|
@@ -80,6 +89,46 @@ export class Shape {
|
|
|
80
89
|
static selectAll() {
|
|
81
90
|
return QueryBuilder.from(this).selectAll();
|
|
82
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Whether a node with this id exists as an instance of this shape.
|
|
94
|
+
*
|
|
95
|
+
* ```typescript
|
|
96
|
+
* if (await SourceDocument.exists({id})) {
|
|
97
|
+
* await SourceDocument.update(values).for({id});
|
|
98
|
+
* } else {
|
|
99
|
+
* await SourceDocument.create({id, ...values});
|
|
100
|
+
* }
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* Resolves to a real `boolean` — unlike `select().where(…).one()`, which resolves
|
|
104
|
+
* to a row or `null` and leaves the conversion (and the failure modes) to the
|
|
105
|
+
* caller. Runs the cheapest correct query: one projected variable, the shape's
|
|
106
|
+
* type triple, an equality filter on the subject, `LIMIT 1`.
|
|
107
|
+
*
|
|
108
|
+
* A `null`/`undefined` id resolves to `false` without touching the store — as does
|
|
109
|
+
* a `PendingQueryContext` whose value has not landed yet, since there is no subject
|
|
110
|
+
* to ask about. (An unresolved context inside a *where clause* rejects instead; see
|
|
111
|
+
* {@link QueryBuilder.exists}.)
|
|
112
|
+
*
|
|
113
|
+
* **Errors reject — they are never reported as `false`.** Do not wrap this in a
|
|
114
|
+
* `.catch(() => false)`: that is exactly how a broken existence check hides,
|
|
115
|
+
* turning every `exists ? update : create` into an unconditional `create`.
|
|
116
|
+
*
|
|
117
|
+
* For "does *anything* match?", compose on the builder instead:
|
|
118
|
+
* `await Person.select().where(p => p.name.equals('Semmy')).exists()`.
|
|
119
|
+
*
|
|
120
|
+
* @param id The node id: a string IRI, a `{id}` reference, or a `PendingQueryContext`.
|
|
121
|
+
* A malformed string IRI rejects (it does not throw synchronously).
|
|
122
|
+
* @param target Optional explicit dataset to run against; omitted uses the
|
|
123
|
+
* global query dispatch.
|
|
124
|
+
*/
|
|
125
|
+
static exists(id, target) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
// `async`, so that a bad string IRI (resolveUriOrThrow, inside .for()) rejects
|
|
128
|
+
// rather than throwing synchronously past the caller's .catch().
|
|
129
|
+
return QueryBuilder.from(this).for(id).exists(target);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
83
132
|
static update(data) {
|
|
84
133
|
return UpdateBuilder.from(this).set(data);
|
|
85
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shape.js","sourceRoot":"","sources":["../../../src/shapes/Shape.ts"],"names":[],"mappings":"AAcA,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"Shape.js","sourceRoot":"","sources":["../../../src/shapes/Shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import '../utils/Package.js';
|
|
2
|
+
/**
|
|
3
|
+
* How ONE SHACL constraint of a `sh:PropertyShape` is written to RDF: which predicate
|
|
4
|
+
* it uses and (when the meta-model pins one) which literal datatype / node kind.
|
|
5
|
+
*/
|
|
6
|
+
export interface PropertyShapeTerm {
|
|
7
|
+
/**
|
|
8
|
+
* The constraint's name as used by the decorator config and by `PropertyShapeData`
|
|
9
|
+
* — e.g. `pattern`, `minLength`, `in`. (A few `PropertyShapeData` fields carry a
|
|
10
|
+
* disambiguating suffix — `equalsConstraint`, `hasValueConstraint` — the LABEL is
|
|
11
|
+
* always the bare SHACL name, `equals` / `hasValue`.)
|
|
12
|
+
*/
|
|
13
|
+
label: string;
|
|
14
|
+
/** The predicate IRI the constraint serializes to, e.g. `sh:pattern`. */
|
|
15
|
+
predicate: string;
|
|
16
|
+
/** Fixed literal datatype IRI, when the meta-model pins one (e.g. `xsd:integer` for `sh:minLength`). */
|
|
17
|
+
datatype?: string;
|
|
18
|
+
/** `sh:IRI` or `sh:Literal`, when the meta-model pins one (absent for the generic `sh:hasValue`). */
|
|
19
|
+
nodeKind?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The SHACL constraints a `sh:PropertyShape` can carry, keyed by label — derived from the
|
|
23
|
+
* core meta-model (`PropertyShape.shape`, set up in `utils/Package.ts`) rather than from a
|
|
24
|
+
* hand-kept list, so a constraint added to the meta-model is immediately known here.
|
|
25
|
+
*
|
|
26
|
+
* This is the seam for **alternative serializers**: code that writes SHACL by a route other
|
|
27
|
+
* than the create pipeline (e.g. raw SPARQL `INSERT DATA`) can look up the predicate and the
|
|
28
|
+
* literal datatype for a constraint instead of re-deriving them. Constraints whose meta-model
|
|
29
|
+
* path is a complex property path are omitted (they have no single predicate).
|
|
30
|
+
*
|
|
31
|
+
* Requires the meta-model to have been set up (importing `@_linked/core` or `utils/Package`
|
|
32
|
+
* does that). The result is cached once non-empty.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getPropertyShapeTerms(): ReadonlyMap<string, PropertyShapeTerm>;
|
|
35
|
+
/** Lookup of a single constraint by label — see {@link getPropertyShapeTerms}. */
|
|
36
|
+
export declare function getPropertyShapeTerm(label: string): PropertyShapeTerm | undefined;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
|
+
*/
|
|
6
|
+
import '../utils/Package.js'; // side effect: sets up the meta-model this table reads
|
|
7
|
+
import { isPathRef } from '../paths/PropertyPathExpr.js';
|
|
8
|
+
import { PropertyShape } from './SHACL.js';
|
|
9
|
+
let cached;
|
|
10
|
+
/**
|
|
11
|
+
* The SHACL constraints a `sh:PropertyShape` can carry, keyed by label — derived from the
|
|
12
|
+
* core meta-model (`PropertyShape.shape`, set up in `utils/Package.ts`) rather than from a
|
|
13
|
+
* hand-kept list, so a constraint added to the meta-model is immediately known here.
|
|
14
|
+
*
|
|
15
|
+
* This is the seam for **alternative serializers**: code that writes SHACL by a route other
|
|
16
|
+
* than the create pipeline (e.g. raw SPARQL `INSERT DATA`) can look up the predicate and the
|
|
17
|
+
* literal datatype for a constraint instead of re-deriving them. Constraints whose meta-model
|
|
18
|
+
* path is a complex property path are omitted (they have no single predicate).
|
|
19
|
+
*
|
|
20
|
+
* Requires the meta-model to have been set up (importing `@_linked/core` or `utils/Package`
|
|
21
|
+
* does that). The result is cached once non-empty.
|
|
22
|
+
*/
|
|
23
|
+
export function getPropertyShapeTerms() {
|
|
24
|
+
var _a, _b, _c, _d;
|
|
25
|
+
if (cached && cached.size)
|
|
26
|
+
return cached;
|
|
27
|
+
const map = new Map();
|
|
28
|
+
for (const ps of (_b = (_a = PropertyShape.shape) === null || _a === void 0 ? void 0 : _a.propertyShapes) !== null && _b !== void 0 ? _b : []) {
|
|
29
|
+
// Only single-predicate paths describe a constraint; skip complex paths.
|
|
30
|
+
if (!ps.path || !isPathRef(ps.path))
|
|
31
|
+
continue;
|
|
32
|
+
const predicate = typeof ps.path === 'string' ? ps.path : ps.path.id;
|
|
33
|
+
if (!predicate)
|
|
34
|
+
continue;
|
|
35
|
+
map.set(ps.label, {
|
|
36
|
+
label: ps.label,
|
|
37
|
+
predicate,
|
|
38
|
+
datatype: (_c = ps.datatype) === null || _c === void 0 ? void 0 : _c.id,
|
|
39
|
+
nodeKind: (_d = ps.nodeKind) === null || _d === void 0 ? void 0 : _d.id,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
cached = map;
|
|
43
|
+
return map;
|
|
44
|
+
}
|
|
45
|
+
/** Lookup of a single constraint by label — see {@link getPropertyShapeTerms}. */
|
|
46
|
+
export function getPropertyShapeTerm(label) {
|
|
47
|
+
return getPropertyShapeTerms().get(label);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=propertyShapeTerms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propertyShapeTerms.js","sourceRoot":"","sources":["../../../src/shapes/propertyShapeTerms.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,qBAAqB,CAAC,CAAC,uDAAuD;AACrF,OAAO,EAAC,SAAS,EAAC,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAsBzC,IAAI,MAAkD,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB;;IACnC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;IACjD,KAAK,MAAM,EAAE,IAAI,MAAA,MAAA,aAAa,CAAC,KAAK,0CAAE,cAAc,mCAAI,EAAE,EAAE,CAAC;QAC3D,yEAAyE;QACzE,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC;YAAE,SAAS;QAC9C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE;YAChB,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,SAAS;YACT,QAAQ,EAAE,MAAA,EAAE,CAAC,QAAQ,0CAAE,EAAE;YACzB,QAAQ,EAAE,MAAA,EAAE,CAAC,QAAQ,0CAAE,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,CAAC;IACb,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,qBAAqB,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@_linked/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.18.0-next.20260904081842",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"linkedPackage": true,
|
|
6
6
|
"type": "module",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"setup": "npx semantu-agents",
|
|
49
49
|
"typecheck": "npx tsc -p tsconfig-tests.json",
|
|
50
50
|
"test": "NODE_OPTIONS=--experimental-vm-modules npx jest --config jest.config.cjs --runInBand && npm run typecheck",
|
|
51
|
-
"test:fuseki": "docker compose -f src/tests/docker-compose.test.yml up -d --wait && NODE_OPTIONS=--experimental-vm-modules npx jest --config jest.config.cjs --testPathPattern='sparql-fuseki' --verbose; EXIT=$?; docker compose -f src/tests/docker-compose.test.yml down; exit $EXIT"
|
|
51
|
+
"test:fuseki": "docker compose -f src/tests/docker-compose.test.yml up -d --wait && NODE_OPTIONS=--experimental-vm-modules npx jest --config jest.config.cjs --runInBand --testPathPattern='sparql-fuseki' --verbose; EXIT=$?; docker compose -f src/tests/docker-compose.test.yml down; exit $EXIT"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@changesets/changelog-github": "^0.5.2",
|