@_linked/core 1.2.0-next.20260304061428 → 1.2.0-next.20260312041833
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 +32 -53
- package/README.md +401 -54
- package/lib/cjs/expressions/Expr.d.ts +58 -0
- package/lib/cjs/expressions/Expr.js +217 -0
- package/lib/cjs/expressions/Expr.js.map +1 -0
- package/lib/cjs/expressions/ExpressionMethods.d.ts +81 -0
- package/lib/cjs/expressions/ExpressionMethods.js +3 -0
- package/lib/cjs/expressions/ExpressionMethods.js.map +1 -0
- package/lib/cjs/expressions/ExpressionNode.d.ts +95 -0
- package/lib/cjs/expressions/ExpressionNode.js +349 -0
- package/lib/cjs/expressions/ExpressionNode.js.map +1 -0
- package/lib/cjs/index.d.ts +14 -2
- package/lib/cjs/index.js +36 -6
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/package.d.ts +1 -1
- package/lib/cjs/queries/CreateBuilder.d.ts +38 -0
- package/lib/cjs/queries/CreateBuilder.js +100 -0
- package/lib/cjs/queries/CreateBuilder.js.map +1 -0
- package/lib/cjs/queries/CreateQuery.d.ts +3 -3
- package/lib/cjs/queries/CreateQuery.js.map +1 -1
- package/lib/cjs/queries/DeleteBuilder.d.ts +36 -0
- package/lib/cjs/queries/DeleteBuilder.js +112 -0
- package/lib/cjs/queries/DeleteBuilder.js.map +1 -0
- package/lib/cjs/queries/DeleteQuery.d.ts +5 -5
- package/lib/cjs/queries/DeleteQuery.js.map +1 -1
- package/lib/cjs/queries/FieldSet.d.ts +206 -0
- package/lib/cjs/queries/FieldSet.js +549 -0
- package/lib/cjs/queries/FieldSet.js.map +1 -0
- package/lib/cjs/queries/IRCanonicalize.d.ts +10 -3
- package/lib/cjs/queries/IRCanonicalize.js +10 -1
- package/lib/cjs/queries/IRCanonicalize.js.map +1 -1
- package/lib/cjs/queries/IRDesugar.d.ts +43 -10
- package/lib/cjs/queries/IRDesugar.js +165 -134
- package/lib/cjs/queries/IRDesugar.js.map +1 -1
- package/lib/cjs/queries/IRLower.d.ts +19 -2
- package/lib/cjs/queries/IRLower.js +105 -20
- package/lib/cjs/queries/IRLower.js.map +1 -1
- package/lib/cjs/queries/IRMutation.d.ts +31 -1
- package/lib/cjs/queries/IRMutation.js +68 -15
- package/lib/cjs/queries/IRMutation.js.map +1 -1
- package/lib/cjs/queries/IntermediateRepresentation.d.ts +34 -4
- package/lib/cjs/queries/MutationQuery.d.ts +1 -1
- package/lib/cjs/queries/MutationQuery.js +17 -8
- package/lib/cjs/queries/MutationQuery.js.map +1 -1
- package/lib/cjs/queries/PropertyPath.d.ts +38 -0
- package/lib/cjs/queries/PropertyPath.js +82 -0
- package/lib/cjs/queries/PropertyPath.js.map +1 -0
- package/lib/cjs/queries/ProxiedPathBuilder.d.ts +14 -0
- package/lib/cjs/queries/ProxiedPathBuilder.js +29 -0
- package/lib/cjs/queries/ProxiedPathBuilder.js.map +1 -0
- package/lib/cjs/queries/QueryBuilder.d.ts +154 -0
- package/lib/cjs/queries/QueryBuilder.js +391 -0
- package/lib/cjs/queries/QueryBuilder.js.map +1 -0
- package/lib/cjs/queries/QueryFactory.d.ts +2 -1
- package/lib/cjs/queries/QueryFactory.js.map +1 -1
- package/lib/cjs/queries/SelectQuery.d.ts +66 -136
- package/lib/cjs/queries/SelectQuery.js +111 -526
- package/lib/cjs/queries/SelectQuery.js.map +1 -1
- package/lib/cjs/queries/UpdateBuilder.d.ts +46 -0
- package/lib/cjs/queries/UpdateBuilder.js +133 -0
- package/lib/cjs/queries/UpdateBuilder.js.map +1 -0
- package/lib/cjs/queries/UpdateQuery.d.ts +5 -5
- package/lib/cjs/queries/UpdateQuery.js.map +1 -1
- package/lib/cjs/queries/WhereCondition.d.ts +18 -0
- package/lib/cjs/queries/WhereCondition.js +3 -0
- package/lib/cjs/queries/WhereCondition.js.map +1 -0
- package/lib/cjs/queries/resolveShape.d.ts +10 -0
- package/lib/cjs/queries/resolveShape.js +23 -0
- package/lib/cjs/queries/resolveShape.js.map +1 -0
- package/lib/cjs/shapes/SHACL.js +7 -5
- package/lib/cjs/shapes/SHACL.js.map +1 -1
- package/lib/cjs/shapes/Shape.d.ts +39 -52
- package/lib/cjs/shapes/Shape.js +32 -56
- package/lib/cjs/shapes/Shape.js.map +1 -1
- package/lib/cjs/sparql/SparqlAlgebra.d.ts +6 -1
- package/lib/cjs/sparql/SparqlStore.js +15 -0
- package/lib/cjs/sparql/SparqlStore.js.map +1 -1
- package/lib/cjs/sparql/algebraToString.js +10 -0
- package/lib/cjs/sparql/algebraToString.js.map +1 -1
- package/lib/cjs/sparql/irToAlgebra.d.ts +34 -3
- package/lib/cjs/sparql/irToAlgebra.js +386 -33
- package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
- package/lib/cjs/test-helpers/query-fixtures.d.ts +453 -3046
- package/lib/cjs/test-helpers/query-fixtures.js +143 -25
- package/lib/cjs/test-helpers/query-fixtures.js.map +1 -1
- package/lib/cjs/test-helpers/test-utils.d.ts +18 -0
- package/lib/cjs/test-helpers/test-utils.js +47 -0
- package/lib/cjs/test-helpers/test-utils.js.map +1 -0
- package/lib/cjs/utils/Package.d.ts +8 -8
- package/lib/cjs/utils/Package.js.map +1 -1
- package/lib/cjs/utils/ShapeClass.d.ts +2 -2
- package/lib/cjs/utils/ShapeClass.js +4 -22
- package/lib/cjs/utils/ShapeClass.js.map +1 -1
- package/lib/esm/expressions/Expr.d.ts +58 -0
- package/lib/esm/expressions/Expr.js +214 -0
- package/lib/esm/expressions/Expr.js.map +1 -0
- package/lib/esm/expressions/ExpressionMethods.d.ts +81 -0
- package/lib/esm/expressions/ExpressionMethods.js +2 -0
- package/lib/esm/expressions/ExpressionMethods.js.map +1 -0
- package/lib/esm/expressions/ExpressionNode.d.ts +95 -0
- package/lib/esm/expressions/ExpressionNode.js +341 -0
- package/lib/esm/expressions/ExpressionNode.js.map +1 -0
- package/lib/esm/index.d.ts +14 -2
- package/lib/esm/index.js +26 -2
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/package.d.ts +1 -1
- package/lib/esm/queries/CreateBuilder.d.ts +38 -0
- package/lib/esm/queries/CreateBuilder.js +96 -0
- package/lib/esm/queries/CreateBuilder.js.map +1 -0
- package/lib/esm/queries/CreateQuery.d.ts +3 -3
- package/lib/esm/queries/CreateQuery.js.map +1 -1
- package/lib/esm/queries/DeleteBuilder.d.ts +36 -0
- package/lib/esm/queries/DeleteBuilder.js +108 -0
- package/lib/esm/queries/DeleteBuilder.js.map +1 -0
- package/lib/esm/queries/DeleteQuery.d.ts +5 -5
- package/lib/esm/queries/DeleteQuery.js.map +1 -1
- package/lib/esm/queries/FieldSet.d.ts +206 -0
- package/lib/esm/queries/FieldSet.js +545 -0
- package/lib/esm/queries/FieldSet.js.map +1 -0
- package/lib/esm/queries/IRCanonicalize.d.ts +10 -3
- package/lib/esm/queries/IRCanonicalize.js +10 -1
- package/lib/esm/queries/IRCanonicalize.js.map +1 -1
- package/lib/esm/queries/IRDesugar.d.ts +43 -10
- package/lib/esm/queries/IRDesugar.js +160 -130
- package/lib/esm/queries/IRDesugar.js.map +1 -1
- package/lib/esm/queries/IRLower.d.ts +19 -2
- package/lib/esm/queries/IRLower.js +102 -19
- package/lib/esm/queries/IRLower.js.map +1 -1
- package/lib/esm/queries/IRMutation.d.ts +31 -1
- package/lib/esm/queries/IRMutation.js +63 -14
- package/lib/esm/queries/IRMutation.js.map +1 -1
- package/lib/esm/queries/IntermediateRepresentation.d.ts +34 -4
- package/lib/esm/queries/MutationQuery.d.ts +1 -1
- package/lib/esm/queries/MutationQuery.js +17 -8
- package/lib/esm/queries/MutationQuery.js.map +1 -1
- package/lib/esm/queries/PropertyPath.d.ts +38 -0
- package/lib/esm/queries/PropertyPath.js +77 -0
- package/lib/esm/queries/PropertyPath.js.map +1 -0
- package/lib/esm/queries/ProxiedPathBuilder.d.ts +14 -0
- package/lib/esm/queries/ProxiedPathBuilder.js +26 -0
- package/lib/esm/queries/ProxiedPathBuilder.js.map +1 -0
- package/lib/esm/queries/QueryBuilder.d.ts +154 -0
- package/lib/esm/queries/QueryBuilder.js +387 -0
- package/lib/esm/queries/QueryBuilder.js.map +1 -0
- package/lib/esm/queries/QueryFactory.d.ts +2 -1
- package/lib/esm/queries/QueryFactory.js.map +1 -1
- package/lib/esm/queries/SelectQuery.d.ts +66 -136
- package/lib/esm/queries/SelectQuery.js +105 -515
- package/lib/esm/queries/SelectQuery.js.map +1 -1
- package/lib/esm/queries/UpdateBuilder.d.ts +46 -0
- package/lib/esm/queries/UpdateBuilder.js +129 -0
- package/lib/esm/queries/UpdateBuilder.js.map +1 -0
- package/lib/esm/queries/UpdateQuery.d.ts +5 -5
- package/lib/esm/queries/UpdateQuery.js.map +1 -1
- package/lib/esm/queries/WhereCondition.d.ts +18 -0
- package/lib/esm/queries/WhereCondition.js +2 -0
- package/lib/esm/queries/WhereCondition.js.map +1 -0
- package/lib/esm/queries/resolveShape.d.ts +10 -0
- package/lib/esm/queries/resolveShape.js +20 -0
- package/lib/esm/queries/resolveShape.js.map +1 -0
- package/lib/esm/shapes/SHACL.js +7 -5
- package/lib/esm/shapes/SHACL.js.map +1 -1
- package/lib/esm/shapes/Shape.d.ts +39 -52
- package/lib/esm/shapes/Shape.js +32 -53
- package/lib/esm/shapes/Shape.js.map +1 -1
- package/lib/esm/sparql/SparqlAlgebra.d.ts +6 -1
- package/lib/esm/sparql/SparqlStore.js +16 -1
- package/lib/esm/sparql/SparqlStore.js.map +1 -1
- package/lib/esm/sparql/algebraToString.js +10 -0
- package/lib/esm/sparql/algebraToString.js.map +1 -1
- package/lib/esm/sparql/irToAlgebra.d.ts +34 -3
- package/lib/esm/sparql/irToAlgebra.js +380 -33
- package/lib/esm/sparql/irToAlgebra.js.map +1 -1
- package/lib/esm/test-helpers/query-fixtures.d.ts +453 -3046
- package/lib/esm/test-helpers/query-fixtures.js +143 -25
- package/lib/esm/test-helpers/query-fixtures.js.map +1 -1
- package/lib/esm/test-helpers/test-utils.d.ts +18 -0
- package/lib/esm/test-helpers/test-utils.js +41 -0
- package/lib/esm/test-helpers/test-utils.js.map +1 -0
- package/lib/esm/utils/Package.d.ts +8 -8
- package/lib/esm/utils/Package.js.map +1 -1
- package/lib/esm/utils/ShapeClass.d.ts +2 -2
- package/lib/esm/utils/ShapeClass.js +4 -22
- package/lib/esm/utils/ShapeClass.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -4,73 +4,52 @@
|
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
|
-
- [#
|
|
7
|
+
- [#31](https://github.com/Semantu/linked/pull/31) [`eb88865`](https://github.com/Semantu/linked/commit/eb8886564f2c9663805c4308a834ca615f9a1dab) Thanks [@flyon](https://github.com/flyon)! - Properties in `select()` and `update()` now support expressions — you can compute values dynamically instead of just reading or writing raw fields.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### What's new
|
|
10
10
|
|
|
11
|
-
-
|
|
11
|
+
- **Computed fields in queries** — chain expression methods on properties to derive new values: string manipulation (`.strlen()`, `.ucase()`, `.concat()`), arithmetic (`.plus()`, `.times()`, `.abs()`), date extraction (`.year()`, `.month()`, `.hours()`), and comparisons (`.gt()`, `.eq()`, `.contains()`).
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
```ts
|
|
20
|
-
import { SparqlStore } from "@_linked/core/sparql";
|
|
21
|
-
|
|
22
|
-
class MyStore extends SparqlStore {
|
|
23
|
-
protected async executeSparqlSelect(
|
|
24
|
-
sparql: string
|
|
25
|
-
): Promise<SparqlJsonResults> {
|
|
26
|
-
/* ... */
|
|
27
|
-
}
|
|
28
|
-
protected async executeSparqlUpdate(sparql: string): Promise<void> {
|
|
29
|
-
/* ... */
|
|
30
|
-
}
|
|
31
|
-
}
|
|
13
|
+
```typescript
|
|
14
|
+
await Person.select((p) => ({
|
|
15
|
+
name: p.name,
|
|
16
|
+
nameLen: p.name.strlen(),
|
|
17
|
+
ageInMonths: p.age.times(12),
|
|
18
|
+
}));
|
|
32
19
|
```
|
|
33
20
|
|
|
34
|
-
- **
|
|
35
|
-
|
|
36
|
-
- `selectToSparql(query, options?)` — SelectQuery → SPARQL string
|
|
37
|
-
- `createToSparql(query, options?)` — CreateQuery → SPARQL string
|
|
38
|
-
- `updateToSparql(query, options?)` — UpdateQuery → SPARQL string
|
|
39
|
-
- `deleteToSparql(query, options?)` — DeleteQuery → SPARQL string
|
|
40
|
-
|
|
41
|
-
- **IR → SPARQL algebra** (for stores that want to inspect/optimize the algebra before serialization):
|
|
42
|
-
|
|
43
|
-
- `selectToAlgebra(query, options?)` — returns `SparqlSelectPlan`
|
|
44
|
-
- `createToAlgebra(query, options?)` — returns `SparqlInsertDataPlan`
|
|
45
|
-
- `updateToAlgebra(query, options?)` — returns `SparqlDeleteInsertPlan`
|
|
46
|
-
- `deleteToAlgebra(query, options?)` — returns `SparqlDeleteInsertPlan`
|
|
47
|
-
|
|
48
|
-
- **Algebra → SPARQL string** serialization:
|
|
21
|
+
- **Expression-based WHERE filters** — filter using computed conditions, not just equality checks. Works on queries, updates, and deletes.
|
|
49
22
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
- `mapSparqlSelectResult(json, query)` — handles flat/nested/aggregated results with XSD type coercion
|
|
56
|
-
- `mapSparqlCreateResult(uri, query)` — echoes created fields with generated URI
|
|
57
|
-
- `mapSparqlUpdateResult(query)` — echoes updated fields
|
|
23
|
+
```typescript
|
|
24
|
+
await Person.select((p) => p.name).where((p) => p.name.strlen().gt(5));
|
|
25
|
+
await Person.update({ verified: true }).where((p) => p.age.gte(18));
|
|
26
|
+
```
|
|
58
27
|
|
|
59
|
-
- **
|
|
28
|
+
- **Computed updates** — when updating data, calculate new values based on existing ones instead of providing static values. Pass a callback to `update()` to reference current field values.
|
|
60
29
|
|
|
61
|
-
|
|
30
|
+
```typescript
|
|
31
|
+
await Person.update((p) => ({ age: p.age.plus(1) })).for(entity);
|
|
32
|
+
await Person.update((p) => ({
|
|
33
|
+
label: p.firstName.concat(" ").concat(p.lastName),
|
|
34
|
+
})).for(entity);
|
|
35
|
+
```
|
|
62
36
|
|
|
63
|
-
-
|
|
37
|
+
- **`Expr` module** — for expressions that don't start from a property, like the current timestamp, conditional logic, or coalescing nulls.
|
|
64
38
|
|
|
65
|
-
|
|
39
|
+
```typescript
|
|
40
|
+
await Person.update({ lastSeen: Expr.now() }).for(entity);
|
|
41
|
+
await Person.select((p) => ({
|
|
42
|
+
displayName: Expr.firstDefined(p.nickname, p.name),
|
|
43
|
+
}));
|
|
44
|
+
```
|
|
66
45
|
|
|
67
|
-
|
|
46
|
+
Update expression callbacks are fully typed — `.plus()` only appears on number properties, `.strlen()` only on strings, etc.
|
|
68
47
|
|
|
69
|
-
|
|
48
|
+
### New exports
|
|
70
49
|
|
|
71
|
-
|
|
50
|
+
`ExpressionNode`, `Expr`, `ExpressionInput`, `PropertyRefMap`, `ExpressionUpdateProxy<S>`, `ExpressionUpdateResult<S>`, and per-type method interfaces (`NumericExpressionMethods`, `StringExpressionMethods`, `DateExpressionMethods`, `BooleanExpressionMethods`, `BaseExpressionMethods`).
|
|
72
51
|
|
|
73
|
-
|
|
52
|
+
See the [README](./README.md#computed-expressions) for the full method reference and more examples.
|
|
74
53
|
|
|
75
54
|
## 1.1.0
|
|
76
55
|
|