@dxos/echo 0.8.4-main.c1de068 → 0.8.4-main.e098934
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-EUA7CM23.mjs → chunk-EIXXFUN5.mjs} +256 -36
- 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 +1 -1
- package/dist/lib/node-esm/{chunk-IV6BWGHK.mjs → chunk-TCY7IVTS.mjs} +256 -36
- 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 +1 -1
- package/dist/types/src/Obj.d.ts +101 -12
- package/dist/types/src/Obj.d.ts.map +1 -1
- 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 +1 -1
- 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 +203 -18
- package/src/Relation.ts +10 -8
- package/src/Type.ts +3 -1
- 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-EUA7CM23.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IV6BWGHK.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,6 +5,29 @@ var __export = (target, all) => {
|
|
|
5
5
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
6
|
};
|
|
7
7
|
|
|
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
|
+
|
|
8
31
|
// src/Key.ts
|
|
9
32
|
var Key_exports = {};
|
|
10
33
|
__export(Key_exports, {
|
|
@@ -16,27 +39,43 @@ import { SpaceId, ObjectId } from "@dxos/keys";
|
|
|
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";
|
|
74
|
+
import { assumeType, deepMapValues } from "@dxos/util";
|
|
37
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,8 +169,86 @@ 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 = {};
|
|
@@ -147,7 +286,7 @@ 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",
|
|
@@ -240,7 +379,7 @@ __export(Type_exports, {
|
|
|
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,
|
|
@@ -261,7 +400,7 @@ var Kind = EchoSchema4.EntityKind;
|
|
|
261
400
|
var Obj = EchoSchema4.EchoObject;
|
|
262
401
|
var Expando2 = EchoSchema4.Expando;
|
|
263
402
|
var Relation = EchoSchema4.EchoRelation;
|
|
264
|
-
var
|
|
403
|
+
var Ref4 = EchoSchema4.Ref;
|
|
265
404
|
var getDXN2 = (schema) => {
|
|
266
405
|
return EchoSchema4.getSchemaDXN(schema);
|
|
267
406
|
};
|
|
@@ -269,7 +408,7 @@ var getTypename2 = (schema) => {
|
|
|
269
408
|
const typename = EchoSchema4.getSchemaTypename(schema);
|
|
270
409
|
invariant3(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
|
|
271
410
|
F: __dxlog_file3,
|
|
272
|
-
L:
|
|
411
|
+
L: 212,
|
|
273
412
|
S: void 0,
|
|
274
413
|
A: [
|
|
275
414
|
"typeof typename === 'string' && !typename.startsWith('dxn:')",
|
|
@@ -279,17 +418,17 @@ var getTypename2 = (schema) => {
|
|
|
279
418
|
return typename;
|
|
280
419
|
};
|
|
281
420
|
var getVersion = (schema) => {
|
|
282
|
-
const
|
|
283
|
-
invariant3(typeof
|
|
421
|
+
const version2 = EchoSchema4.getSchemaVersion(schema);
|
|
422
|
+
invariant3(typeof version2 === "string" && version2.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
|
|
284
423
|
F: __dxlog_file3,
|
|
285
|
-
L:
|
|
424
|
+
L: 222,
|
|
286
425
|
S: void 0,
|
|
287
426
|
A: [
|
|
288
427
|
"typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
|
|
289
428
|
"'Invalid version'"
|
|
290
429
|
]
|
|
291
430
|
});
|
|
292
|
-
return
|
|
431
|
+
return version2;
|
|
293
432
|
};
|
|
294
433
|
var isMutable2 = EchoSchema4.isMutable;
|
|
295
434
|
var getMeta3 = (schema) => {
|
|
@@ -300,15 +439,47 @@ var getMeta3 = (schema) => {
|
|
|
300
439
|
import { DXN as DXN4 } from "@dxos/keys";
|
|
301
440
|
|
|
302
441
|
// src/query/dsl.ts
|
|
303
|
-
import { Schema as Schema2 } from "effect";
|
|
442
|
+
import { Match, Schema as Schema2 } from "effect";
|
|
304
443
|
import { raise as raise2 } from "@dxos/debug";
|
|
305
444
|
import { getTypeReference } from "@dxos/echo-schema";
|
|
306
445
|
import { assertArgument as assertArgument3 } from "@dxos/invariant";
|
|
307
446
|
import { DXN as DXN3, ObjectId as ObjectId3 } from "@dxos/keys";
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
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;
|
|
311
457
|
}
|
|
458
|
+
return obj;
|
|
459
|
+
}
|
|
460
|
+
var OrderClass = class _OrderClass {
|
|
461
|
+
static is(value) {
|
|
462
|
+
return typeof value === "object" && value !== null && "~Order" in value;
|
|
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 {
|
|
312
483
|
static is(value) {
|
|
313
484
|
return typeof value === "object" && value !== null && "~Filter" in value;
|
|
314
485
|
}
|
|
@@ -337,7 +508,7 @@ var FilterClass = class _FilterClass {
|
|
|
337
508
|
});
|
|
338
509
|
}
|
|
339
510
|
static ids(...ids) {
|
|
340
|
-
assertArgument3(ids.every((id) => ObjectId3.isValid(id)), "ids must be valid");
|
|
511
|
+
assertArgument3(ids.every((id) => ObjectId3.isValid(id)), "ids", "ids must be valid");
|
|
341
512
|
if (ids.length === 0) {
|
|
342
513
|
return Filter.nothing();
|
|
343
514
|
}
|
|
@@ -357,7 +528,7 @@ var FilterClass = class _FilterClass {
|
|
|
357
528
|
});
|
|
358
529
|
}
|
|
359
530
|
static typename(typename) {
|
|
360
|
-
assertArgument3(!typename.startsWith("dxn:"), "Typename must no be qualified");
|
|
531
|
+
assertArgument3(!typename.startsWith("dxn:"), "typename", "Typename must no be qualified");
|
|
361
532
|
return new _FilterClass({
|
|
362
533
|
type: "object",
|
|
363
534
|
typename: DXN3.fromTypename(typename).toString(),
|
|
@@ -448,6 +619,12 @@ var FilterClass = class _FilterClass {
|
|
|
448
619
|
values
|
|
449
620
|
});
|
|
450
621
|
}
|
|
622
|
+
static contains(value) {
|
|
623
|
+
return new _FilterClass({
|
|
624
|
+
type: "contains",
|
|
625
|
+
value
|
|
626
|
+
});
|
|
627
|
+
}
|
|
451
628
|
static between(from, to) {
|
|
452
629
|
return new _FilterClass({
|
|
453
630
|
type: "range",
|
|
@@ -474,15 +651,18 @@ var FilterClass = class _FilterClass {
|
|
|
474
651
|
});
|
|
475
652
|
}
|
|
476
653
|
constructor(ast) {
|
|
654
|
+
_define_property(this, "ast", void 0);
|
|
655
|
+
_define_property(this, "~Filter", void 0);
|
|
477
656
|
this.ast = ast;
|
|
478
657
|
this["~Filter"] = _FilterClass.variance;
|
|
479
658
|
}
|
|
480
659
|
};
|
|
660
|
+
_define_property(FilterClass, "variance", {});
|
|
481
661
|
var Filter = FilterClass;
|
|
482
662
|
var propsFilterToAst = (predicates) => {
|
|
483
663
|
let idFilter;
|
|
484
664
|
if ("id" in predicates) {
|
|
485
|
-
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");
|
|
486
666
|
idFilter = typeof predicates.id === "string" ? [
|
|
487
667
|
predicates.id
|
|
488
668
|
] : predicates.id;
|
|
@@ -492,17 +672,39 @@ var propsFilterToAst = (predicates) => {
|
|
|
492
672
|
id: idFilter,
|
|
493
673
|
props: Object.fromEntries(Object.entries(predicates).filter(([prop, _value]) => prop !== "id").map(([prop, predicate]) => [
|
|
494
674
|
prop,
|
|
495
|
-
|
|
675
|
+
processPredicate(predicate)
|
|
496
676
|
]))
|
|
497
677
|
};
|
|
498
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
|
+
};
|
|
499
701
|
var QueryClass = class _QueryClass {
|
|
500
|
-
static {
|
|
501
|
-
this.variance = {};
|
|
502
|
-
}
|
|
503
702
|
static is(value) {
|
|
504
703
|
return typeof value === "object" && value !== null && "~Query" in value;
|
|
505
704
|
}
|
|
705
|
+
static fromAst(ast) {
|
|
706
|
+
return new _QueryClass(ast);
|
|
707
|
+
}
|
|
506
708
|
static select(filter) {
|
|
507
709
|
return new _QueryClass({
|
|
508
710
|
type: "select",
|
|
@@ -531,10 +733,6 @@ var QueryClass = class _QueryClass {
|
|
|
531
733
|
exclude: exclude.ast
|
|
532
734
|
});
|
|
533
735
|
}
|
|
534
|
-
constructor(ast) {
|
|
535
|
-
this.ast = ast;
|
|
536
|
-
this["~Query"] = _QueryClass.variance;
|
|
537
|
-
}
|
|
538
736
|
select(filter) {
|
|
539
737
|
if (Filter.is(filter)) {
|
|
540
738
|
return new _QueryClass({
|
|
@@ -596,6 +794,13 @@ var QueryClass = class _QueryClass {
|
|
|
596
794
|
direction: "target"
|
|
597
795
|
});
|
|
598
796
|
}
|
|
797
|
+
orderBy(...order) {
|
|
798
|
+
return new _QueryClass({
|
|
799
|
+
type: "order",
|
|
800
|
+
query: this.ast,
|
|
801
|
+
order: order.map((o) => o.ast)
|
|
802
|
+
});
|
|
803
|
+
}
|
|
599
804
|
options(options) {
|
|
600
805
|
return new _QueryClass({
|
|
601
806
|
type: "options",
|
|
@@ -603,10 +808,23 @@ var QueryClass = class _QueryClass {
|
|
|
603
808
|
options
|
|
604
809
|
});
|
|
605
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
|
+
}
|
|
606
817
|
};
|
|
818
|
+
_define_property(QueryClass, "variance", {});
|
|
607
819
|
var Query = QueryClass;
|
|
820
|
+
var Order;
|
|
821
|
+
|
|
822
|
+
// src/index.ts
|
|
823
|
+
import { QueryAST } from "@dxos/echo-protocol";
|
|
608
824
|
|
|
609
825
|
export {
|
|
826
|
+
SchemaNotFoundError,
|
|
827
|
+
ObjectNotFoundError,
|
|
610
828
|
Key_exports,
|
|
611
829
|
Obj_exports,
|
|
612
830
|
Ref_exports,
|
|
@@ -614,6 +832,8 @@ export {
|
|
|
614
832
|
Type_exports,
|
|
615
833
|
Filter,
|
|
616
834
|
Query,
|
|
617
|
-
|
|
835
|
+
Order,
|
|
836
|
+
DXN4 as DXN,
|
|
837
|
+
QueryAST
|
|
618
838
|
};
|
|
619
|
-
//# sourceMappingURL=chunk-
|
|
839
|
+
//# sourceMappingURL=chunk-EIXXFUN5.mjs.map
|