@dxos/echo 0.8.3 → 0.8.4-main.1f223c7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/lib/browser/{chunk-UYPR62ZB.mjs → chunk-EIXXFUN5.mjs} +271 -56
- package/dist/lib/browser/chunk-EIXXFUN5.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +9 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +2 -2
- package/dist/lib/node-esm/{chunk-BYBICDIO.mjs → chunk-TCY7IVTS.mjs} +271 -56
- package/dist/lib/node-esm/chunk-TCY7IVTS.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +9 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +2 -2
- package/dist/types/src/Obj.d.ts +102 -12
- package/dist/types/src/Obj.d.ts.map +1 -1
- package/dist/types/src/Ref.d.ts +2 -2
- package/dist/types/src/Relation.d.ts +6 -4
- package/dist/types/src/Relation.d.ts.map +1 -1
- package/dist/types/src/Type.d.ts +34 -33
- package/dist/types/src/Type.d.ts.map +1 -1
- package/dist/types/src/errors.d.ts +72 -0
- package/dist/types/src/errors.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +3 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/query/dsl.d.ts +27 -2
- package/dist/types/src/query/dsl.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -13
- package/src/Obj.ts +206 -20
- package/src/Relation.ts +10 -8
- package/src/Type.ts +65 -50
- package/src/errors.ts +18 -0
- package/src/index.ts +4 -1
- package/src/query/dsl.test.ts +40 -1
- package/src/query/dsl.ts +112 -6
- package/src/test/api.test.ts +9 -2
- package/dist/lib/browser/chunk-UYPR62ZB.mjs.map +0 -7
- package/dist/lib/node/chunk-4HQE2F3L.cjs +0 -644
- package/dist/lib/node/chunk-4HQE2F3L.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -43
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/testing/index.cjs +0 -89
- package/dist/lib/node/testing/index.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-BYBICDIO.mjs.map +0 -7
package/README.md
CHANGED
|
@@ -122,7 +122,7 @@ Defines attributes and encoding placed on objects.
|
|
|
122
122
|
| | Optional | Runtime prop | Runtime type | JSON prop | JSON type | Description |
|
|
123
123
|
| ------------------- | ----------------------- | -------------------------------------- | ---------------------- | --------------------------- | ---------- | ------------------------------ |
|
|
124
124
|
| Id | No | `id` | `ObjectID` ULID string | `id` | string | Unique object ID |
|
|
125
|
-
| Self DXN | Yes | `Symbol(@dxos/echo/
|
|
125
|
+
| Self DXN | Yes | `Symbol(@dxos/echo/DXN)` | `DXN` | `@dxn` | string | DXN to the object itself |
|
|
126
126
|
| Type | No | `Symbol(@dxos/echo/Type)` | `DXN` | `@type` | string | DXN to the object type |
|
|
127
127
|
| Schema | Yes | `Symbol(@dxos/echo/Schema)` | Effect-Schema | - | | Reference to the object schema |
|
|
128
128
|
| Tombstone marker | Yes | `Symbol(@dxos/echo/Deleted)` | `boolean` | `@deleted` | boolean | Deletion marker |
|
|
@@ -5,7 +5,30 @@ var __export = (target, all) => {
|
|
|
5
5
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
6
|
};
|
|
7
7
|
|
|
8
|
-
//
|
|
8
|
+
// src/errors.ts
|
|
9
|
+
import { BaseError } from "@dxos/errors";
|
|
10
|
+
var SchemaNotFoundError = class extends BaseError.extend("SCHEMA_NOT_FOUND", "Schema not found") {
|
|
11
|
+
constructor(schema, options) {
|
|
12
|
+
super({
|
|
13
|
+
context: {
|
|
14
|
+
schema
|
|
15
|
+
},
|
|
16
|
+
...options
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
var ObjectNotFoundError = class extends BaseError.extend("OBJECT_NOT_FOUND", "Object not found") {
|
|
21
|
+
constructor(dxn, options) {
|
|
22
|
+
super({
|
|
23
|
+
context: {
|
|
24
|
+
dxn
|
|
25
|
+
},
|
|
26
|
+
...options
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// src/Key.ts
|
|
9
32
|
var Key_exports = {};
|
|
10
33
|
__export(Key_exports, {
|
|
11
34
|
ObjectId: () => ObjectId,
|
|
@@ -13,30 +36,46 @@ __export(Key_exports, {
|
|
|
13
36
|
});
|
|
14
37
|
import { SpaceId, ObjectId } from "@dxos/keys";
|
|
15
38
|
|
|
16
|
-
//
|
|
39
|
+
// src/Obj.ts
|
|
17
40
|
var Obj_exports = {};
|
|
18
41
|
__export(Obj_exports, {
|
|
42
|
+
Meta: () => Meta,
|
|
43
|
+
VersionTypeId: () => VersionTypeId2,
|
|
44
|
+
clone: () => clone,
|
|
45
|
+
compareVersions: () => compareVersions,
|
|
46
|
+
decodeVersion: () => decodeVersion,
|
|
47
|
+
deleteKeys: () => deleteKeys,
|
|
48
|
+
encodeVersion: () => encodeVersion,
|
|
19
49
|
fromJSON: () => fromJSON,
|
|
20
50
|
getDXN: () => getDXN,
|
|
51
|
+
getKeys: () => getKeys,
|
|
21
52
|
getLabel: () => getLabel2,
|
|
22
53
|
getMeta: () => getMeta2,
|
|
23
54
|
getSchema: () => getSchema2,
|
|
55
|
+
getSnapshot: () => getSnapshot2,
|
|
24
56
|
getTypeDXN: () => getTypeDXN,
|
|
25
57
|
getTypename: () => getTypename,
|
|
26
58
|
instanceOf: () => instanceOf,
|
|
27
59
|
isDeleted: () => isDeleted2,
|
|
28
60
|
isObject: () => isObject,
|
|
61
|
+
isVersion: () => isVersion,
|
|
29
62
|
make: () => make,
|
|
30
|
-
|
|
63
|
+
setLabel: () => setLabel2,
|
|
64
|
+
toJSON: () => toJSON,
|
|
65
|
+
version: () => version,
|
|
66
|
+
versionValid: () => versionValid
|
|
31
67
|
});
|
|
32
68
|
import { Schema } from "effect";
|
|
69
|
+
import { dual } from "effect/Function";
|
|
33
70
|
import * as EchoSchema from "@dxos/echo-schema";
|
|
34
71
|
import { assertArgument, invariant } from "@dxos/invariant";
|
|
72
|
+
import * as LiveObject from "@dxos/live-object";
|
|
35
73
|
import { live } from "@dxos/live-object";
|
|
36
|
-
import { assumeType } from "@dxos/util";
|
|
37
|
-
var __dxlog_file = "/
|
|
74
|
+
import { assumeType, deepMapValues } from "@dxos/util";
|
|
75
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Obj.ts";
|
|
76
|
+
var Meta = EchoSchema.MetaId;
|
|
38
77
|
var make = (schema, props, meta) => {
|
|
39
|
-
assertArgument(EchoSchema.getTypeAnnotation(schema)?.kind === EchoSchema.EntityKind.Object, "Expected an object schema");
|
|
78
|
+
assertArgument(EchoSchema.getTypeAnnotation(schema)?.kind === EchoSchema.EntityKind.Object, "schema", "Expected an object schema");
|
|
40
79
|
if (props[EchoSchema.MetaId] != null) {
|
|
41
80
|
meta = props[EchoSchema.MetaId];
|
|
42
81
|
delete props[EchoSchema.MetaId];
|
|
@@ -55,11 +94,11 @@ var instanceOf = (...args) => {
|
|
|
55
94
|
};
|
|
56
95
|
var getSchema2 = EchoSchema.getSchema;
|
|
57
96
|
var getDXN = (obj) => {
|
|
58
|
-
assertArgument(!Schema.isSchema(obj), "Object should not be a schema.");
|
|
97
|
+
assertArgument(!Schema.isSchema(obj), "obj", "Object should not be a schema.");
|
|
59
98
|
const dxn = EchoSchema.getObjectDXN(obj);
|
|
60
99
|
invariant(dxn != null, "Invalid object.", {
|
|
61
100
|
F: __dxlog_file,
|
|
62
|
-
L:
|
|
101
|
+
L: 113,
|
|
63
102
|
S: void 0,
|
|
64
103
|
A: [
|
|
65
104
|
"dxn != null",
|
|
@@ -80,7 +119,7 @@ var getMeta2 = (obj) => {
|
|
|
80
119
|
const meta = EchoSchema.getMeta(obj);
|
|
81
120
|
invariant(meta != null, "Invalid object.", {
|
|
82
121
|
F: __dxlog_file,
|
|
83
|
-
L:
|
|
122
|
+
L: 141,
|
|
84
123
|
S: void 0,
|
|
85
124
|
A: [
|
|
86
125
|
"meta != null",
|
|
@@ -89,11 +128,33 @@ var getMeta2 = (obj) => {
|
|
|
89
128
|
});
|
|
90
129
|
return meta;
|
|
91
130
|
};
|
|
131
|
+
var getKeys = dual(2, (obj, source) => {
|
|
132
|
+
const meta = EchoSchema.getMeta(obj);
|
|
133
|
+
invariant(meta != null, "Invalid object.", {
|
|
134
|
+
F: __dxlog_file,
|
|
135
|
+
L: 153,
|
|
136
|
+
S: void 0,
|
|
137
|
+
A: [
|
|
138
|
+
"meta != null",
|
|
139
|
+
"'Invalid object.'"
|
|
140
|
+
]
|
|
141
|
+
});
|
|
142
|
+
return meta.keys.filter((key) => key.source === source);
|
|
143
|
+
});
|
|
144
|
+
var deleteKeys = (obj, source) => {
|
|
145
|
+
const meta = EchoSchema.getMeta(obj);
|
|
146
|
+
for (let i = 0; i < meta.keys.length; i++) {
|
|
147
|
+
if (meta.keys[i].source === source) {
|
|
148
|
+
meta.keys.splice(i, 1);
|
|
149
|
+
i--;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
};
|
|
92
153
|
var isDeleted2 = (obj) => {
|
|
93
154
|
const deleted = EchoSchema.isDeleted(obj);
|
|
94
155
|
invariant(typeof deleted === "boolean", "Invalid object.", {
|
|
95
156
|
F: __dxlog_file,
|
|
96
|
-
L:
|
|
157
|
+
L: 175,
|
|
97
158
|
S: void 0,
|
|
98
159
|
A: [
|
|
99
160
|
"typeof deleted === 'boolean'",
|
|
@@ -108,10 +169,88 @@ var getLabel2 = (obj) => {
|
|
|
108
169
|
return EchoSchema.getLabel(schema, obj);
|
|
109
170
|
}
|
|
110
171
|
};
|
|
172
|
+
var setLabel2 = (obj, label) => {
|
|
173
|
+
const schema = getSchema2(obj);
|
|
174
|
+
if (schema != null) {
|
|
175
|
+
EchoSchema.setLabel(schema, obj, label);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
111
178
|
var toJSON = (obj) => EchoSchema.objectToJSON(obj);
|
|
112
179
|
var fromJSON = EchoSchema.objectFromJSON;
|
|
180
|
+
var getSnapshot2 = LiveObject.getSnapshot;
|
|
181
|
+
var clone = (obj, opts) => {
|
|
182
|
+
const { id, ...data } = obj;
|
|
183
|
+
const schema = getSchema2(obj);
|
|
184
|
+
invariant(schema != null, "Object should have a schema", {
|
|
185
|
+
F: __dxlog_file,
|
|
186
|
+
L: 240,
|
|
187
|
+
S: void 0,
|
|
188
|
+
A: [
|
|
189
|
+
"schema != null",
|
|
190
|
+
"'Object should have a schema'"
|
|
191
|
+
]
|
|
192
|
+
});
|
|
193
|
+
const props = deepMapValues(data, (value, recurse) => {
|
|
194
|
+
if (EchoSchema.Ref.isRef(value)) {
|
|
195
|
+
return value;
|
|
196
|
+
}
|
|
197
|
+
return recurse(value);
|
|
198
|
+
});
|
|
199
|
+
if (opts?.retainId) {
|
|
200
|
+
props.id = id;
|
|
201
|
+
}
|
|
202
|
+
const meta = getMeta2(obj);
|
|
203
|
+
props[EchoSchema.MetaId] = deepMapValues(meta, (value, recurse) => {
|
|
204
|
+
if (EchoSchema.Ref.isRef(value)) {
|
|
205
|
+
return value;
|
|
206
|
+
}
|
|
207
|
+
return recurse(value);
|
|
208
|
+
});
|
|
209
|
+
return make(schema, props);
|
|
210
|
+
};
|
|
211
|
+
var VersionTypeId2 = EchoSchema.VersionTypeId;
|
|
212
|
+
var unversioned = {
|
|
213
|
+
[VersionTypeId2]: {},
|
|
214
|
+
versioned: false
|
|
215
|
+
};
|
|
216
|
+
var isVersion = (obj) => {
|
|
217
|
+
return obj != null && typeof obj === "object" && VersionTypeId2 in obj;
|
|
218
|
+
};
|
|
219
|
+
var version = (obj) => {
|
|
220
|
+
const version2 = obj[EchoSchema.ObjectVersionId];
|
|
221
|
+
if (version2 === void 0) {
|
|
222
|
+
return unversioned;
|
|
223
|
+
}
|
|
224
|
+
return version2;
|
|
225
|
+
};
|
|
226
|
+
var versionValid = (version2) => {
|
|
227
|
+
assertArgument(isVersion(version2), "version", "Invalid version object");
|
|
228
|
+
return !!version2.versioned;
|
|
229
|
+
};
|
|
230
|
+
var compareVersions = (version1, version2) => {
|
|
231
|
+
assertArgument(isVersion(version1), "version1", "Invalid version object");
|
|
232
|
+
assertArgument(isVersion(version2), "version2", "Invalid version object");
|
|
233
|
+
if (!versionValid(version1) || !versionValid(version2)) {
|
|
234
|
+
return "unversioned";
|
|
235
|
+
}
|
|
236
|
+
if (version1.automergeHeads?.length !== version2.automergeHeads?.length) {
|
|
237
|
+
return "different";
|
|
238
|
+
}
|
|
239
|
+
if (version1.automergeHeads?.some((head) => !version2.automergeHeads?.includes(head))) {
|
|
240
|
+
return "different";
|
|
241
|
+
}
|
|
242
|
+
return "equal";
|
|
243
|
+
};
|
|
244
|
+
var encodeVersion = (version2) => {
|
|
245
|
+
return JSON.stringify(version2);
|
|
246
|
+
};
|
|
247
|
+
var decodeVersion = (version2) => {
|
|
248
|
+
const parsed = JSON.parse(version2);
|
|
249
|
+
parsed[VersionTypeId2] = {};
|
|
250
|
+
return parsed;
|
|
251
|
+
};
|
|
113
252
|
|
|
114
|
-
//
|
|
253
|
+
// src/Ref.ts
|
|
115
254
|
var Ref_exports = {};
|
|
116
255
|
__export(Ref_exports, {
|
|
117
256
|
Array: () => Array2,
|
|
@@ -125,7 +264,7 @@ var isRef = EchoSchema2.Ref.isRef;
|
|
|
125
264
|
var make2 = EchoSchema2.Ref.make;
|
|
126
265
|
var fromDXN = EchoSchema2.Ref.fromDXN;
|
|
127
266
|
|
|
128
|
-
//
|
|
267
|
+
// src/Relation.ts
|
|
129
268
|
var Relation_exports = {};
|
|
130
269
|
__export(Relation_exports, {
|
|
131
270
|
Source: () => Source,
|
|
@@ -143,11 +282,11 @@ import { assertArgument as assertArgument2, invariant as invariant2 } from "@dxo
|
|
|
143
282
|
import { DXN } from "@dxos/keys";
|
|
144
283
|
import { live as live2 } from "@dxos/live-object";
|
|
145
284
|
import { assumeType as assumeType2 } from "@dxos/util";
|
|
146
|
-
var __dxlog_file2 = "/
|
|
285
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo/src/Relation.ts";
|
|
147
286
|
var Source = EchoSchema3.RelationSourceId;
|
|
148
287
|
var Target = EchoSchema3.RelationTargetId;
|
|
149
288
|
var make3 = (schema, props, meta) => {
|
|
150
|
-
assertArgument2(EchoSchema3.getTypeAnnotation(schema)?.kind === EchoSchema3.EntityKind.Relation, "Expected a relation schema");
|
|
289
|
+
assertArgument2(EchoSchema3.getTypeAnnotation(schema)?.kind === EchoSchema3.EntityKind.Relation, "schema", "Expected a relation schema");
|
|
151
290
|
if (props[EchoSchema3.MetaId] != null) {
|
|
152
291
|
meta = props[EchoSchema3.MetaId];
|
|
153
292
|
delete props[EchoSchema3.MetaId];
|
|
@@ -174,7 +313,7 @@ var getSourceDXN = (value) => {
|
|
|
174
313
|
const dxn = value[EchoSchema3.RelationSourceDXNId];
|
|
175
314
|
invariant2(dxn instanceof DXN, void 0, {
|
|
176
315
|
F: __dxlog_file2,
|
|
177
|
-
L:
|
|
316
|
+
L: 100,
|
|
178
317
|
S: void 0,
|
|
179
318
|
A: [
|
|
180
319
|
"dxn instanceof DXN",
|
|
@@ -189,7 +328,7 @@ var getTargetDXN = (value) => {
|
|
|
189
328
|
const dxn = value[EchoSchema3.RelationTargetDXNId];
|
|
190
329
|
invariant2(dxn instanceof DXN, void 0, {
|
|
191
330
|
F: __dxlog_file2,
|
|
192
|
-
L:
|
|
331
|
+
L: 112,
|
|
193
332
|
S: void 0,
|
|
194
333
|
A: [
|
|
195
334
|
"dxn instanceof DXN",
|
|
@@ -204,7 +343,7 @@ var getSource = (relation) => {
|
|
|
204
343
|
const obj = relation[EchoSchema3.RelationSourceId];
|
|
205
344
|
invariant2(obj !== void 0, `Invalid source: ${relation.id}`, {
|
|
206
345
|
F: __dxlog_file2,
|
|
207
|
-
L:
|
|
346
|
+
L: 124,
|
|
208
347
|
S: void 0,
|
|
209
348
|
A: [
|
|
210
349
|
"obj !== undefined",
|
|
@@ -219,7 +358,7 @@ var getTarget = (relation) => {
|
|
|
219
358
|
const obj = relation[EchoSchema3.RelationTargetId];
|
|
220
359
|
invariant2(obj !== void 0, `Invalid target: ${relation.id}`, {
|
|
221
360
|
F: __dxlog_file2,
|
|
222
|
-
L:
|
|
361
|
+
L: 136,
|
|
223
362
|
S: void 0,
|
|
224
363
|
A: [
|
|
225
364
|
"obj !== undefined",
|
|
@@ -229,18 +368,18 @@ var getTarget = (relation) => {
|
|
|
229
368
|
return obj;
|
|
230
369
|
};
|
|
231
370
|
|
|
232
|
-
//
|
|
371
|
+
// src/Type.ts
|
|
233
372
|
var Type_exports = {};
|
|
234
373
|
__export(Type_exports, {
|
|
235
374
|
DXN: () => DXN2,
|
|
236
375
|
Expando: () => Expando2,
|
|
237
376
|
Format: () => Format,
|
|
238
377
|
JsonSchema: () => JsonSchemaType,
|
|
239
|
-
Kind: () =>
|
|
378
|
+
Kind: () => Kind,
|
|
240
379
|
KindId: () => KindId,
|
|
241
380
|
Obj: () => Obj,
|
|
242
381
|
ObjectId: () => ObjectId2,
|
|
243
|
-
Ref: () =>
|
|
382
|
+
Ref: () => Ref4,
|
|
244
383
|
Relation: () => Relation,
|
|
245
384
|
SpaceId: () => SpaceId2,
|
|
246
385
|
getDXN: () => getDXN2,
|
|
@@ -253,19 +392,15 @@ __export(Type_exports, {
|
|
|
253
392
|
});
|
|
254
393
|
import * as EchoSchema4 from "@dxos/echo-schema";
|
|
255
394
|
import { invariant as invariant3 } from "@dxos/invariant";
|
|
256
|
-
import { EntityKind as EntityKind3 } from "@dxos/echo-schema";
|
|
257
395
|
import { SpaceId as SpaceId2, ObjectId as ObjectId2, DXN as DXN2 } from "@dxos/keys";
|
|
258
|
-
import {
|
|
259
|
-
|
|
260
|
-
JsonSchemaType,
|
|
261
|
-
toEffectSchema,
|
|
262
|
-
toJsonSchema
|
|
263
|
-
} from "@dxos/echo-schema";
|
|
264
|
-
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/echo/echo/src/Type.ts";
|
|
396
|
+
import { Format, JsonSchemaType, toEffectSchema, toJsonSchema } from "@dxos/echo-schema";
|
|
397
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
|
|
265
398
|
var KindId = EchoSchema4.EntityKindId;
|
|
399
|
+
var Kind = EchoSchema4.EntityKind;
|
|
266
400
|
var Obj = EchoSchema4.EchoObject;
|
|
401
|
+
var Expando2 = EchoSchema4.Expando;
|
|
267
402
|
var Relation = EchoSchema4.EchoRelation;
|
|
268
|
-
var
|
|
403
|
+
var Ref4 = EchoSchema4.Ref;
|
|
269
404
|
var getDXN2 = (schema) => {
|
|
270
405
|
return EchoSchema4.getSchemaDXN(schema);
|
|
271
406
|
};
|
|
@@ -273,7 +408,7 @@ var getTypename2 = (schema) => {
|
|
|
273
408
|
const typename = EchoSchema4.getSchemaTypename(schema);
|
|
274
409
|
invariant3(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
|
|
275
410
|
F: __dxlog_file3,
|
|
276
|
-
L:
|
|
411
|
+
L: 212,
|
|
277
412
|
S: void 0,
|
|
278
413
|
A: [
|
|
279
414
|
"typeof typename === 'string' && !typename.startsWith('dxn:')",
|
|
@@ -283,37 +418,68 @@ var getTypename2 = (schema) => {
|
|
|
283
418
|
return typename;
|
|
284
419
|
};
|
|
285
420
|
var getVersion = (schema) => {
|
|
286
|
-
const
|
|
287
|
-
invariant3(typeof
|
|
421
|
+
const version2 = EchoSchema4.getSchemaVersion(schema);
|
|
422
|
+
invariant3(typeof version2 === "string" && version2.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
|
|
288
423
|
F: __dxlog_file3,
|
|
289
|
-
L:
|
|
424
|
+
L: 222,
|
|
290
425
|
S: void 0,
|
|
291
426
|
A: [
|
|
292
427
|
"typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
|
|
293
428
|
"'Invalid version'"
|
|
294
429
|
]
|
|
295
430
|
});
|
|
296
|
-
return
|
|
431
|
+
return version2;
|
|
297
432
|
};
|
|
433
|
+
var isMutable2 = EchoSchema4.isMutable;
|
|
298
434
|
var getMeta3 = (schema) => {
|
|
299
435
|
return EchoSchema4.getTypeAnnotation(schema);
|
|
300
436
|
};
|
|
301
|
-
var isMutable2 = EchoSchema4.isMutable;
|
|
302
|
-
var Expando2 = EchoSchema4.Expando;
|
|
303
437
|
|
|
304
|
-
//
|
|
438
|
+
// src/index.ts
|
|
305
439
|
import { DXN as DXN4 } from "@dxos/keys";
|
|
306
440
|
|
|
307
|
-
//
|
|
308
|
-
import { Schema as Schema2 } from "effect";
|
|
441
|
+
// src/query/dsl.ts
|
|
442
|
+
import { Match, Schema as Schema2 } from "effect";
|
|
309
443
|
import { raise as raise2 } from "@dxos/debug";
|
|
310
444
|
import { getTypeReference } from "@dxos/echo-schema";
|
|
311
445
|
import { assertArgument as assertArgument3 } from "@dxos/invariant";
|
|
312
446
|
import { DXN as DXN3, ObjectId as ObjectId3 } from "@dxos/keys";
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
447
|
+
function _define_property(obj, key, value) {
|
|
448
|
+
if (key in obj) {
|
|
449
|
+
Object.defineProperty(obj, key, {
|
|
450
|
+
value,
|
|
451
|
+
enumerable: true,
|
|
452
|
+
configurable: true,
|
|
453
|
+
writable: true
|
|
454
|
+
});
|
|
455
|
+
} else {
|
|
456
|
+
obj[key] = value;
|
|
457
|
+
}
|
|
458
|
+
return obj;
|
|
459
|
+
}
|
|
460
|
+
var OrderClass = class _OrderClass {
|
|
461
|
+
static is(value) {
|
|
462
|
+
return typeof value === "object" && value !== null && "~Order" in value;
|
|
316
463
|
}
|
|
464
|
+
constructor(ast) {
|
|
465
|
+
_define_property(this, "ast", void 0);
|
|
466
|
+
_define_property(this, "~Order", void 0);
|
|
467
|
+
this.ast = ast;
|
|
468
|
+
this["~Order"] = _OrderClass.variance;
|
|
469
|
+
}
|
|
470
|
+
};
|
|
471
|
+
_define_property(OrderClass, "variance", {});
|
|
472
|
+
(function(Order2) {
|
|
473
|
+
Order2.natural = new OrderClass({
|
|
474
|
+
kind: "natural"
|
|
475
|
+
});
|
|
476
|
+
Order2.property = (property, direction) => new OrderClass({
|
|
477
|
+
kind: "property",
|
|
478
|
+
property,
|
|
479
|
+
direction
|
|
480
|
+
});
|
|
481
|
+
})(Order || (Order = {}));
|
|
482
|
+
var FilterClass = class _FilterClass {
|
|
317
483
|
static is(value) {
|
|
318
484
|
return typeof value === "object" && value !== null && "~Filter" in value;
|
|
319
485
|
}
|
|
@@ -342,7 +508,7 @@ var FilterClass = class _FilterClass {
|
|
|
342
508
|
});
|
|
343
509
|
}
|
|
344
510
|
static ids(...ids) {
|
|
345
|
-
assertArgument3(ids.every((id) => ObjectId3.isValid(id)), "ids must be valid");
|
|
511
|
+
assertArgument3(ids.every((id) => ObjectId3.isValid(id)), "ids", "ids must be valid");
|
|
346
512
|
if (ids.length === 0) {
|
|
347
513
|
return Filter.nothing();
|
|
348
514
|
}
|
|
@@ -362,7 +528,7 @@ var FilterClass = class _FilterClass {
|
|
|
362
528
|
});
|
|
363
529
|
}
|
|
364
530
|
static typename(typename) {
|
|
365
|
-
assertArgument3(!typename.startsWith("dxn:"), "Typename must no be qualified");
|
|
531
|
+
assertArgument3(!typename.startsWith("dxn:"), "typename", "Typename must no be qualified");
|
|
366
532
|
return new _FilterClass({
|
|
367
533
|
type: "object",
|
|
368
534
|
typename: DXN3.fromTypename(typename).toString(),
|
|
@@ -453,6 +619,12 @@ var FilterClass = class _FilterClass {
|
|
|
453
619
|
values
|
|
454
620
|
});
|
|
455
621
|
}
|
|
622
|
+
static contains(value) {
|
|
623
|
+
return new _FilterClass({
|
|
624
|
+
type: "contains",
|
|
625
|
+
value
|
|
626
|
+
});
|
|
627
|
+
}
|
|
456
628
|
static between(from, to) {
|
|
457
629
|
return new _FilterClass({
|
|
458
630
|
type: "range",
|
|
@@ -479,15 +651,18 @@ var FilterClass = class _FilterClass {
|
|
|
479
651
|
});
|
|
480
652
|
}
|
|
481
653
|
constructor(ast) {
|
|
654
|
+
_define_property(this, "ast", void 0);
|
|
655
|
+
_define_property(this, "~Filter", void 0);
|
|
482
656
|
this.ast = ast;
|
|
483
657
|
this["~Filter"] = _FilterClass.variance;
|
|
484
658
|
}
|
|
485
659
|
};
|
|
660
|
+
_define_property(FilterClass, "variance", {});
|
|
486
661
|
var Filter = FilterClass;
|
|
487
662
|
var propsFilterToAst = (predicates) => {
|
|
488
663
|
let idFilter;
|
|
489
664
|
if ("id" in predicates) {
|
|
490
|
-
assertArgument3(typeof predicates.id === "string" || Array.isArray(predicates.id), "invalid id filter");
|
|
665
|
+
assertArgument3(typeof predicates.id === "string" || Array.isArray(predicates.id), "predicates.id", "invalid id filter");
|
|
491
666
|
idFilter = typeof predicates.id === "string" ? [
|
|
492
667
|
predicates.id
|
|
493
668
|
] : predicates.id;
|
|
@@ -497,17 +672,39 @@ var propsFilterToAst = (predicates) => {
|
|
|
497
672
|
id: idFilter,
|
|
498
673
|
props: Object.fromEntries(Object.entries(predicates).filter(([prop, _value]) => prop !== "id").map(([prop, predicate]) => [
|
|
499
674
|
prop,
|
|
500
|
-
|
|
675
|
+
processPredicate(predicate)
|
|
501
676
|
]))
|
|
502
677
|
};
|
|
503
678
|
};
|
|
679
|
+
var processPredicate = (predicate) => {
|
|
680
|
+
return Match.value(predicate).pipe(
|
|
681
|
+
Match.withReturnType(),
|
|
682
|
+
Match.when(Filter.is, (predicate2) => predicate2.ast),
|
|
683
|
+
// TODO(wittjosiah): Add support for array predicates.
|
|
684
|
+
Match.when(Array.isArray, (_predicate) => {
|
|
685
|
+
throw new Error("Array predicates are not yet supported.");
|
|
686
|
+
}),
|
|
687
|
+
Match.when((predicate2) => !isRef(predicate2) && typeof predicate2 === "object" && predicate2 !== null, (predicate2) => {
|
|
688
|
+
const nestedProps = Object.fromEntries(Object.entries(predicate2).map(([key, value]) => [
|
|
689
|
+
key,
|
|
690
|
+
processPredicate(value)
|
|
691
|
+
]));
|
|
692
|
+
return {
|
|
693
|
+
type: "object",
|
|
694
|
+
typename: null,
|
|
695
|
+
props: nestedProps
|
|
696
|
+
};
|
|
697
|
+
}),
|
|
698
|
+
Match.orElse((value) => Filter.eq(value).ast)
|
|
699
|
+
);
|
|
700
|
+
};
|
|
504
701
|
var QueryClass = class _QueryClass {
|
|
505
|
-
static {
|
|
506
|
-
this.variance = {};
|
|
507
|
-
}
|
|
508
702
|
static is(value) {
|
|
509
703
|
return typeof value === "object" && value !== null && "~Query" in value;
|
|
510
704
|
}
|
|
705
|
+
static fromAst(ast) {
|
|
706
|
+
return new _QueryClass(ast);
|
|
707
|
+
}
|
|
511
708
|
static select(filter) {
|
|
512
709
|
return new _QueryClass({
|
|
513
710
|
type: "select",
|
|
@@ -536,10 +733,6 @@ var QueryClass = class _QueryClass {
|
|
|
536
733
|
exclude: exclude.ast
|
|
537
734
|
});
|
|
538
735
|
}
|
|
539
|
-
constructor(ast) {
|
|
540
|
-
this.ast = ast;
|
|
541
|
-
this["~Query"] = _QueryClass.variance;
|
|
542
|
-
}
|
|
543
736
|
select(filter) {
|
|
544
737
|
if (Filter.is(filter)) {
|
|
545
738
|
return new _QueryClass({
|
|
@@ -601,6 +794,13 @@ var QueryClass = class _QueryClass {
|
|
|
601
794
|
direction: "target"
|
|
602
795
|
});
|
|
603
796
|
}
|
|
797
|
+
orderBy(...order) {
|
|
798
|
+
return new _QueryClass({
|
|
799
|
+
type: "order",
|
|
800
|
+
query: this.ast,
|
|
801
|
+
order: order.map((o) => o.ast)
|
|
802
|
+
});
|
|
803
|
+
}
|
|
604
804
|
options(options) {
|
|
605
805
|
return new _QueryClass({
|
|
606
806
|
type: "options",
|
|
@@ -608,10 +808,23 @@ var QueryClass = class _QueryClass {
|
|
|
608
808
|
options
|
|
609
809
|
});
|
|
610
810
|
}
|
|
811
|
+
constructor(ast) {
|
|
812
|
+
_define_property(this, "ast", void 0);
|
|
813
|
+
_define_property(this, "~Query", void 0);
|
|
814
|
+
this.ast = ast;
|
|
815
|
+
this["~Query"] = _QueryClass.variance;
|
|
816
|
+
}
|
|
611
817
|
};
|
|
818
|
+
_define_property(QueryClass, "variance", {});
|
|
612
819
|
var Query = QueryClass;
|
|
820
|
+
var Order;
|
|
821
|
+
|
|
822
|
+
// src/index.ts
|
|
823
|
+
import { QueryAST } from "@dxos/echo-protocol";
|
|
613
824
|
|
|
614
825
|
export {
|
|
826
|
+
SchemaNotFoundError,
|
|
827
|
+
ObjectNotFoundError,
|
|
615
828
|
Key_exports,
|
|
616
829
|
Obj_exports,
|
|
617
830
|
Ref_exports,
|
|
@@ -619,6 +832,8 @@ export {
|
|
|
619
832
|
Type_exports,
|
|
620
833
|
Filter,
|
|
621
834
|
Query,
|
|
622
|
-
|
|
835
|
+
Order,
|
|
836
|
+
DXN4 as DXN,
|
|
837
|
+
QueryAST
|
|
623
838
|
};
|
|
624
|
-
//# sourceMappingURL=chunk-
|
|
839
|
+
//# sourceMappingURL=chunk-EIXXFUN5.mjs.map
|