@dxos/echo 0.8.4-main.67995b8 → 0.8.4-main.a4bbb77
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-I4YEWYJA.mjs} +431 -168
- package/dist/lib/browser/chunk-I4YEWYJA.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-AWWFAF75.mjs} +431 -168
- package/dist/lib/node-esm/chunk-AWWFAF75.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 +107 -13
- package/dist/types/src/Obj.d.ts.map +1 -1
- package/dist/types/src/Relation.d.ts +10 -7
- 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 +32 -5
- package/dist/types/src/query/dsl.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -26
- package/src/Obj.ts +240 -20
- package/src/Relation.ts +22 -11
- package/src/Type.ts +4 -2
- 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 +127 -14
- package/src/test/api.test.ts +16 -9
- package/dist/lib/browser/chunk-EUA7CM23.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IV6BWGHK.mjs.map +0 -7
|
@@ -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,50 +39,143 @@ import { SpaceId, ObjectId } from "@dxos/keys";
|
|
|
16
39
|
// src/Obj.ts
|
|
17
40
|
var Obj_exports = {};
|
|
18
41
|
__export(Obj_exports, {
|
|
42
|
+
Any: () => Any,
|
|
43
|
+
Meta: () => Meta,
|
|
44
|
+
VersionTypeId: () => VersionTypeId2,
|
|
45
|
+
clone: () => clone,
|
|
46
|
+
compareVersions: () => compareVersions,
|
|
47
|
+
decodeVersion: () => decodeVersion,
|
|
48
|
+
deleteKeys: () => deleteKeys,
|
|
49
|
+
encodeVersion: () => encodeVersion,
|
|
19
50
|
fromJSON: () => fromJSON,
|
|
20
|
-
getDXN: () =>
|
|
51
|
+
getDXN: () => getDXN2,
|
|
52
|
+
getKeys: () => getKeys,
|
|
21
53
|
getLabel: () => getLabel2,
|
|
22
|
-
getMeta: () =>
|
|
54
|
+
getMeta: () => getMeta3,
|
|
23
55
|
getSchema: () => getSchema2,
|
|
56
|
+
getSnapshot: () => getSnapshot2,
|
|
24
57
|
getTypeDXN: () => getTypeDXN,
|
|
25
|
-
getTypename: () =>
|
|
58
|
+
getTypename: () => getTypename2,
|
|
26
59
|
instanceOf: () => instanceOf,
|
|
27
60
|
isDeleted: () => isDeleted2,
|
|
28
61
|
isObject: () => isObject,
|
|
62
|
+
isVersion: () => isVersion,
|
|
29
63
|
make: () => make,
|
|
30
|
-
|
|
64
|
+
setLabel: () => setLabel2,
|
|
65
|
+
sort: () => sort,
|
|
66
|
+
sortByLabel: () => sortByLabel,
|
|
67
|
+
sortByTypename: () => sortByTypename,
|
|
68
|
+
toJSON: () => toJSON,
|
|
69
|
+
version: () => version,
|
|
70
|
+
versionValid: () => versionValid
|
|
31
71
|
});
|
|
32
72
|
import { Schema } from "effect";
|
|
33
|
-
import
|
|
34
|
-
import
|
|
73
|
+
import { dual } from "effect/Function";
|
|
74
|
+
import * as EchoSchema2 from "@dxos/echo-schema";
|
|
75
|
+
import { assertArgument, invariant as invariant2 } from "@dxos/invariant";
|
|
76
|
+
import * as LiveObject from "@dxos/live-object";
|
|
35
77
|
import { live } from "@dxos/live-object";
|
|
36
|
-
import { assumeType } from "@dxos/util";
|
|
37
|
-
|
|
78
|
+
import { assumeType, deepMapValues } from "@dxos/util";
|
|
79
|
+
|
|
80
|
+
// src/Type.ts
|
|
81
|
+
var Type_exports = {};
|
|
82
|
+
__export(Type_exports, {
|
|
83
|
+
DXN: () => DXN,
|
|
84
|
+
Expando: () => Expando2,
|
|
85
|
+
Format: () => Format,
|
|
86
|
+
JsonSchema: () => JsonSchemaType,
|
|
87
|
+
Kind: () => Kind,
|
|
88
|
+
KindId: () => KindId,
|
|
89
|
+
Obj: () => Obj,
|
|
90
|
+
ObjectId: () => ObjectId2,
|
|
91
|
+
Ref: () => Ref2,
|
|
92
|
+
Relation: () => Relation,
|
|
93
|
+
SpaceId: () => SpaceId2,
|
|
94
|
+
getDXN: () => getDXN,
|
|
95
|
+
getMeta: () => getMeta,
|
|
96
|
+
getTypename: () => getTypename,
|
|
97
|
+
getVersion: () => getVersion,
|
|
98
|
+
isMutable: () => isMutable2,
|
|
99
|
+
toEffectSchema: () => toEffectSchema,
|
|
100
|
+
toJsonSchema: () => toJsonSchema
|
|
101
|
+
});
|
|
102
|
+
import * as EchoSchema from "@dxos/echo-schema";
|
|
103
|
+
import { invariant } from "@dxos/invariant";
|
|
104
|
+
import { SpaceId as SpaceId2, ObjectId as ObjectId2, DXN } from "@dxos/keys";
|
|
105
|
+
import { Format, JsonSchemaType, toEffectSchema, toJsonSchema } from "@dxos/echo-schema";
|
|
106
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
|
|
107
|
+
var KindId = EchoSchema.EntityKindId;
|
|
108
|
+
var Kind = EchoSchema.EntityKind;
|
|
109
|
+
var Obj = EchoSchema.EchoObject;
|
|
110
|
+
var Expando2 = EchoSchema.Expando;
|
|
111
|
+
var Relation = EchoSchema.EchoRelation;
|
|
112
|
+
var Ref2 = EchoSchema.Ref;
|
|
113
|
+
var getDXN = (schema) => {
|
|
114
|
+
return EchoSchema.getSchemaDXN(schema);
|
|
115
|
+
};
|
|
116
|
+
var getTypename = (schema) => {
|
|
117
|
+
const typename = EchoSchema.getSchemaTypename(schema);
|
|
118
|
+
invariant(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
|
|
119
|
+
F: __dxlog_file,
|
|
120
|
+
L: 212,
|
|
121
|
+
S: void 0,
|
|
122
|
+
A: [
|
|
123
|
+
"typeof typename === 'string' && !typename.startsWith('dxn:')",
|
|
124
|
+
"'Invalid typename'"
|
|
125
|
+
]
|
|
126
|
+
});
|
|
127
|
+
return typename;
|
|
128
|
+
};
|
|
129
|
+
var getVersion = (schema) => {
|
|
130
|
+
const version2 = EchoSchema.getSchemaVersion(schema);
|
|
131
|
+
invariant(typeof version2 === "string" && version2.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
|
|
132
|
+
F: __dxlog_file,
|
|
133
|
+
L: 222,
|
|
134
|
+
S: void 0,
|
|
135
|
+
A: [
|
|
136
|
+
"typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
|
|
137
|
+
"'Invalid version'"
|
|
138
|
+
]
|
|
139
|
+
});
|
|
140
|
+
return version2;
|
|
141
|
+
};
|
|
142
|
+
var isMutable2 = EchoSchema.isMutable;
|
|
143
|
+
var getMeta = (schema) => {
|
|
144
|
+
return EchoSchema.getTypeAnnotation(schema);
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
// src/Obj.ts
|
|
148
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo/src/Obj.ts";
|
|
149
|
+
var Any = Schema.Struct({}).pipe(Obj({
|
|
150
|
+
typename: "dxos.org/types/Any",
|
|
151
|
+
version: "0.1.0"
|
|
152
|
+
}));
|
|
153
|
+
var Meta = EchoSchema2.MetaId;
|
|
38
154
|
var make = (schema, props, meta) => {
|
|
39
|
-
assertArgument(
|
|
40
|
-
if (props[
|
|
41
|
-
meta = props[
|
|
42
|
-
delete props[
|
|
155
|
+
assertArgument(EchoSchema2.getTypeAnnotation(schema)?.kind === EchoSchema2.EntityKind.Object, "schema", "Expected an object schema");
|
|
156
|
+
if (props[EchoSchema2.MetaId] != null) {
|
|
157
|
+
meta = props[EchoSchema2.MetaId];
|
|
158
|
+
delete props[EchoSchema2.MetaId];
|
|
43
159
|
}
|
|
44
160
|
return live(schema, props, meta);
|
|
45
161
|
};
|
|
46
162
|
var isObject = (obj) => {
|
|
47
163
|
assumeType(obj);
|
|
48
|
-
return typeof obj === "object" && obj !== null && obj[
|
|
164
|
+
return typeof obj === "object" && obj !== null && obj[EchoSchema2.EntityKindId] === EchoSchema2.EntityKind.Object;
|
|
49
165
|
};
|
|
50
166
|
var instanceOf = (...args) => {
|
|
51
167
|
if (args.length === 1) {
|
|
52
|
-
return (obj) =>
|
|
168
|
+
return (obj) => EchoSchema2.isInstanceOf(args[0], obj);
|
|
53
169
|
}
|
|
54
|
-
return
|
|
170
|
+
return EchoSchema2.isInstanceOf(args[0], args[1]);
|
|
55
171
|
};
|
|
56
|
-
var getSchema2 =
|
|
57
|
-
var
|
|
58
|
-
assertArgument(!Schema.isSchema(obj), "Object should not be a schema.");
|
|
59
|
-
const dxn =
|
|
60
|
-
|
|
61
|
-
F:
|
|
62
|
-
L:
|
|
172
|
+
var getSchema2 = EchoSchema2.getSchema;
|
|
173
|
+
var getDXN2 = (obj) => {
|
|
174
|
+
assertArgument(!Schema.isSchema(obj), "obj", "Object should not be a schema.");
|
|
175
|
+
const dxn = EchoSchema2.getObjectDXN(obj);
|
|
176
|
+
invariant2(dxn != null, "Invalid object.", {
|
|
177
|
+
F: __dxlog_file2,
|
|
178
|
+
L: 120,
|
|
63
179
|
S: void 0,
|
|
64
180
|
A: [
|
|
65
181
|
"dxn != null",
|
|
@@ -68,19 +184,19 @@ var getDXN = (obj) => {
|
|
|
68
184
|
});
|
|
69
185
|
return dxn;
|
|
70
186
|
};
|
|
71
|
-
var getTypeDXN =
|
|
72
|
-
var
|
|
187
|
+
var getTypeDXN = EchoSchema2.getType;
|
|
188
|
+
var getTypename2 = (obj) => {
|
|
73
189
|
const schema = getSchema2(obj);
|
|
74
190
|
if (schema == null) {
|
|
75
|
-
return
|
|
191
|
+
return EchoSchema2.getType(obj)?.asTypeDXN()?.type;
|
|
76
192
|
}
|
|
77
|
-
return
|
|
193
|
+
return EchoSchema2.getSchemaTypename(schema);
|
|
78
194
|
};
|
|
79
|
-
var
|
|
80
|
-
const meta =
|
|
81
|
-
|
|
82
|
-
F:
|
|
83
|
-
L:
|
|
195
|
+
var getMeta3 = (obj) => {
|
|
196
|
+
const meta = EchoSchema2.getMeta(obj);
|
|
197
|
+
invariant2(meta != null, "Invalid object.", {
|
|
198
|
+
F: __dxlog_file2,
|
|
199
|
+
L: 148,
|
|
84
200
|
S: void 0,
|
|
85
201
|
A: [
|
|
86
202
|
"meta != null",
|
|
@@ -89,11 +205,33 @@ var getMeta2 = (obj) => {
|
|
|
89
205
|
});
|
|
90
206
|
return meta;
|
|
91
207
|
};
|
|
208
|
+
var getKeys = dual(2, (obj, source) => {
|
|
209
|
+
const meta = EchoSchema2.getMeta(obj);
|
|
210
|
+
invariant2(meta != null, "Invalid object.", {
|
|
211
|
+
F: __dxlog_file2,
|
|
212
|
+
L: 160,
|
|
213
|
+
S: void 0,
|
|
214
|
+
A: [
|
|
215
|
+
"meta != null",
|
|
216
|
+
"'Invalid object.'"
|
|
217
|
+
]
|
|
218
|
+
});
|
|
219
|
+
return meta.keys.filter((key) => key.source === source);
|
|
220
|
+
});
|
|
221
|
+
var deleteKeys = (obj, source) => {
|
|
222
|
+
const meta = EchoSchema2.getMeta(obj);
|
|
223
|
+
for (let i = 0; i < meta.keys.length; i++) {
|
|
224
|
+
if (meta.keys[i].source === source) {
|
|
225
|
+
meta.keys.splice(i, 1);
|
|
226
|
+
i--;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
};
|
|
92
230
|
var isDeleted2 = (obj) => {
|
|
93
|
-
const deleted =
|
|
94
|
-
|
|
95
|
-
F:
|
|
96
|
-
L:
|
|
231
|
+
const deleted = EchoSchema2.isDeleted(obj);
|
|
232
|
+
invariant2(typeof deleted === "boolean", "Invalid object.", {
|
|
233
|
+
F: __dxlog_file2,
|
|
234
|
+
L: 182,
|
|
97
235
|
S: void 0,
|
|
98
236
|
A: [
|
|
99
237
|
"typeof deleted === 'boolean'",
|
|
@@ -105,11 +243,111 @@ var isDeleted2 = (obj) => {
|
|
|
105
243
|
var getLabel2 = (obj) => {
|
|
106
244
|
const schema = getSchema2(obj);
|
|
107
245
|
if (schema != null) {
|
|
108
|
-
return
|
|
246
|
+
return EchoSchema2.getLabel(schema, obj);
|
|
109
247
|
}
|
|
110
248
|
};
|
|
111
|
-
var
|
|
112
|
-
|
|
249
|
+
var setLabel2 = (obj, label) => {
|
|
250
|
+
const schema = getSchema2(obj);
|
|
251
|
+
if (schema != null) {
|
|
252
|
+
EchoSchema2.setLabel(schema, obj, label);
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
var compare = (a, b) => {
|
|
256
|
+
if (a == null) {
|
|
257
|
+
return b == null ? 0 : 1;
|
|
258
|
+
}
|
|
259
|
+
if (b == null) {
|
|
260
|
+
return -1;
|
|
261
|
+
}
|
|
262
|
+
return a.localeCompare(b);
|
|
263
|
+
};
|
|
264
|
+
var sortByLabel = (a, b) => compare(getLabel2(a), getLabel2(b));
|
|
265
|
+
var sortByTypename = (a, b) => compare(getTypename2(a), getTypename2(b));
|
|
266
|
+
var sort = (...comparators) => {
|
|
267
|
+
return (a, b) => {
|
|
268
|
+
for (const comparator of comparators) {
|
|
269
|
+
const result = comparator(a, b);
|
|
270
|
+
if (result !== 0) {
|
|
271
|
+
return result;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return 0;
|
|
275
|
+
};
|
|
276
|
+
};
|
|
277
|
+
var toJSON = (obj) => EchoSchema2.objectToJSON(obj);
|
|
278
|
+
var fromJSON = EchoSchema2.objectFromJSON;
|
|
279
|
+
var getSnapshot2 = LiveObject.getSnapshot;
|
|
280
|
+
var clone = (obj, opts) => {
|
|
281
|
+
const { id, ...data } = obj;
|
|
282
|
+
const schema = getSchema2(obj);
|
|
283
|
+
invariant2(schema != null, "Object should have a schema", {
|
|
284
|
+
F: __dxlog_file2,
|
|
285
|
+
L: 275,
|
|
286
|
+
S: void 0,
|
|
287
|
+
A: [
|
|
288
|
+
"schema != null",
|
|
289
|
+
"'Object should have a schema'"
|
|
290
|
+
]
|
|
291
|
+
});
|
|
292
|
+
const props = deepMapValues(data, (value, recurse) => {
|
|
293
|
+
if (EchoSchema2.Ref.isRef(value)) {
|
|
294
|
+
return value;
|
|
295
|
+
}
|
|
296
|
+
return recurse(value);
|
|
297
|
+
});
|
|
298
|
+
if (opts?.retainId) {
|
|
299
|
+
props.id = id;
|
|
300
|
+
}
|
|
301
|
+
const meta = getMeta3(obj);
|
|
302
|
+
props[EchoSchema2.MetaId] = deepMapValues(meta, (value, recurse) => {
|
|
303
|
+
if (EchoSchema2.Ref.isRef(value)) {
|
|
304
|
+
return value;
|
|
305
|
+
}
|
|
306
|
+
return recurse(value);
|
|
307
|
+
});
|
|
308
|
+
return make(schema, props);
|
|
309
|
+
};
|
|
310
|
+
var VersionTypeId2 = EchoSchema2.VersionTypeId;
|
|
311
|
+
var unversioned = {
|
|
312
|
+
[VersionTypeId2]: {},
|
|
313
|
+
versioned: false
|
|
314
|
+
};
|
|
315
|
+
var isVersion = (obj) => {
|
|
316
|
+
return obj != null && typeof obj === "object" && VersionTypeId2 in obj;
|
|
317
|
+
};
|
|
318
|
+
var version = (obj) => {
|
|
319
|
+
const version2 = obj[EchoSchema2.ObjectVersionId];
|
|
320
|
+
if (version2 === void 0) {
|
|
321
|
+
return unversioned;
|
|
322
|
+
}
|
|
323
|
+
return version2;
|
|
324
|
+
};
|
|
325
|
+
var versionValid = (version2) => {
|
|
326
|
+
assertArgument(isVersion(version2), "version", "Invalid version object");
|
|
327
|
+
return !!version2.versioned;
|
|
328
|
+
};
|
|
329
|
+
var compareVersions = (version1, version2) => {
|
|
330
|
+
assertArgument(isVersion(version1), "version1", "Invalid version object");
|
|
331
|
+
assertArgument(isVersion(version2), "version2", "Invalid version object");
|
|
332
|
+
if (!versionValid(version1) || !versionValid(version2)) {
|
|
333
|
+
return "unversioned";
|
|
334
|
+
}
|
|
335
|
+
if (version1.automergeHeads?.length !== version2.automergeHeads?.length) {
|
|
336
|
+
return "different";
|
|
337
|
+
}
|
|
338
|
+
if (version1.automergeHeads?.some((head) => !version2.automergeHeads?.includes(head))) {
|
|
339
|
+
return "different";
|
|
340
|
+
}
|
|
341
|
+
return "equal";
|
|
342
|
+
};
|
|
343
|
+
var encodeVersion = (version2) => {
|
|
344
|
+
return JSON.stringify(version2);
|
|
345
|
+
};
|
|
346
|
+
var decodeVersion = (version2) => {
|
|
347
|
+
const parsed = JSON.parse(version2);
|
|
348
|
+
parsed[VersionTypeId2] = {};
|
|
349
|
+
return parsed;
|
|
350
|
+
};
|
|
113
351
|
|
|
114
352
|
// src/Ref.ts
|
|
115
353
|
var Ref_exports = {};
|
|
@@ -119,15 +357,16 @@ __export(Ref_exports, {
|
|
|
119
357
|
isRef: () => isRef,
|
|
120
358
|
make: () => make2
|
|
121
359
|
});
|
|
122
|
-
import * as
|
|
123
|
-
var Array2 =
|
|
124
|
-
var isRef =
|
|
125
|
-
var make2 =
|
|
126
|
-
var fromDXN =
|
|
360
|
+
import * as EchoSchema3 from "@dxos/echo-schema";
|
|
361
|
+
var Array2 = EchoSchema3.RefArray;
|
|
362
|
+
var isRef = EchoSchema3.Ref.isRef;
|
|
363
|
+
var make2 = EchoSchema3.Ref.make;
|
|
364
|
+
var fromDXN = EchoSchema3.Ref.fromDXN;
|
|
127
365
|
|
|
128
366
|
// src/Relation.ts
|
|
129
367
|
var Relation_exports = {};
|
|
130
368
|
__export(Relation_exports, {
|
|
369
|
+
Any: () => Any2,
|
|
131
370
|
Source: () => Source,
|
|
132
371
|
Target: () => Target,
|
|
133
372
|
getSource: () => getSource,
|
|
@@ -137,44 +376,51 @@ __export(Relation_exports, {
|
|
|
137
376
|
isRelation: () => isRelation,
|
|
138
377
|
make: () => make3
|
|
139
378
|
});
|
|
379
|
+
import { Schema as Schema2 } from "effect";
|
|
140
380
|
import { raise } from "@dxos/debug";
|
|
141
|
-
import * as
|
|
142
|
-
import { assertArgument as assertArgument2, invariant as
|
|
143
|
-
import { DXN } from "@dxos/keys";
|
|
381
|
+
import * as EchoSchema4 from "@dxos/echo-schema";
|
|
382
|
+
import { assertArgument as assertArgument2, invariant as invariant3 } from "@dxos/invariant";
|
|
383
|
+
import { DXN as DXN2 } from "@dxos/keys";
|
|
144
384
|
import { live as live2 } from "@dxos/live-object";
|
|
145
385
|
import { assumeType as assumeType2 } from "@dxos/util";
|
|
146
|
-
var
|
|
147
|
-
var
|
|
148
|
-
|
|
386
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo/src/Relation.ts";
|
|
387
|
+
var Any2 = Schema2.Struct({}).pipe(Relation({
|
|
388
|
+
typename: "dxos.org/types/Any",
|
|
389
|
+
version: "0.1.0",
|
|
390
|
+
source: Any,
|
|
391
|
+
target: Any
|
|
392
|
+
}));
|
|
393
|
+
var Source = EchoSchema4.RelationSourceId;
|
|
394
|
+
var Target = EchoSchema4.RelationTargetId;
|
|
149
395
|
var make3 = (schema, props, meta) => {
|
|
150
|
-
assertArgument2(
|
|
151
|
-
if (props[
|
|
152
|
-
meta = props[
|
|
153
|
-
delete props[
|
|
154
|
-
}
|
|
155
|
-
const sourceDXN =
|
|
156
|
-
const targetDXN =
|
|
157
|
-
props[
|
|
158
|
-
props[
|
|
396
|
+
assertArgument2(EchoSchema4.getTypeAnnotation(schema)?.kind === EchoSchema4.EntityKind.Relation, "schema", "Expected a relation schema");
|
|
397
|
+
if (props[EchoSchema4.MetaId] != null) {
|
|
398
|
+
meta = props[EchoSchema4.MetaId];
|
|
399
|
+
delete props[EchoSchema4.MetaId];
|
|
400
|
+
}
|
|
401
|
+
const sourceDXN = EchoSchema4.getObjectDXN(props[Source]) ?? raise(new Error("Unresolved relation source"));
|
|
402
|
+
const targetDXN = EchoSchema4.getObjectDXN(props[Target]) ?? raise(new Error("Unresolved relation target"));
|
|
403
|
+
props[EchoSchema4.RelationSourceDXNId] = sourceDXN;
|
|
404
|
+
props[EchoSchema4.RelationTargetDXNId] = targetDXN;
|
|
159
405
|
return live2(schema, props, meta);
|
|
160
406
|
};
|
|
161
407
|
var isRelation = (value) => {
|
|
162
408
|
if (typeof value !== "object" || value === null) {
|
|
163
409
|
return false;
|
|
164
410
|
}
|
|
165
|
-
if (
|
|
411
|
+
if (EchoSchema4.ATTR_RELATION_SOURCE in value || EchoSchema4.ATTR_RELATION_TARGET in value) {
|
|
166
412
|
return true;
|
|
167
413
|
}
|
|
168
|
-
const kind = value[
|
|
169
|
-
return kind ===
|
|
414
|
+
const kind = value[EchoSchema4.EntityKindId];
|
|
415
|
+
return kind === EchoSchema4.EntityKind.Relation;
|
|
170
416
|
};
|
|
171
417
|
var getSourceDXN = (value) => {
|
|
172
418
|
assertArgument2(isRelation(value), "Expected a relation");
|
|
173
419
|
assumeType2(value);
|
|
174
|
-
const dxn = value[
|
|
175
|
-
|
|
176
|
-
F:
|
|
177
|
-
L:
|
|
420
|
+
const dxn = value[EchoSchema4.RelationSourceDXNId];
|
|
421
|
+
invariant3(dxn instanceof DXN2, void 0, {
|
|
422
|
+
F: __dxlog_file3,
|
|
423
|
+
L: 109,
|
|
178
424
|
S: void 0,
|
|
179
425
|
A: [
|
|
180
426
|
"dxn instanceof DXN",
|
|
@@ -186,10 +432,10 @@ var getSourceDXN = (value) => {
|
|
|
186
432
|
var getTargetDXN = (value) => {
|
|
187
433
|
assertArgument2(isRelation(value), "Expected a relation");
|
|
188
434
|
assumeType2(value);
|
|
189
|
-
const dxn = value[
|
|
190
|
-
|
|
191
|
-
F:
|
|
192
|
-
L:
|
|
435
|
+
const dxn = value[EchoSchema4.RelationTargetDXNId];
|
|
436
|
+
invariant3(dxn instanceof DXN2, void 0, {
|
|
437
|
+
F: __dxlog_file3,
|
|
438
|
+
L: 121,
|
|
193
439
|
S: void 0,
|
|
194
440
|
A: [
|
|
195
441
|
"dxn instanceof DXN",
|
|
@@ -201,10 +447,10 @@ var getTargetDXN = (value) => {
|
|
|
201
447
|
var getSource = (relation) => {
|
|
202
448
|
assertArgument2(isRelation(relation), "Expected a relation");
|
|
203
449
|
assumeType2(relation);
|
|
204
|
-
const obj = relation[
|
|
205
|
-
|
|
206
|
-
F:
|
|
207
|
-
L:
|
|
450
|
+
const obj = relation[EchoSchema4.RelationSourceId];
|
|
451
|
+
invariant3(obj !== void 0, `Invalid source: ${relation.id}`, {
|
|
452
|
+
F: __dxlog_file3,
|
|
453
|
+
L: 133,
|
|
208
454
|
S: void 0,
|
|
209
455
|
A: [
|
|
210
456
|
"obj !== undefined",
|
|
@@ -216,10 +462,10 @@ var getSource = (relation) => {
|
|
|
216
462
|
var getTarget = (relation) => {
|
|
217
463
|
assertArgument2(isRelation(relation), "Expected a relation");
|
|
218
464
|
assumeType2(relation);
|
|
219
|
-
const obj = relation[
|
|
220
|
-
|
|
221
|
-
F:
|
|
222
|
-
L:
|
|
465
|
+
const obj = relation[EchoSchema4.RelationTargetId];
|
|
466
|
+
invariant3(obj !== void 0, `Invalid target: ${relation.id}`, {
|
|
467
|
+
F: __dxlog_file3,
|
|
468
|
+
L: 145,
|
|
223
469
|
S: void 0,
|
|
224
470
|
A: [
|
|
225
471
|
"obj !== undefined",
|
|
@@ -229,86 +475,51 @@ var getTarget = (relation) => {
|
|
|
229
475
|
return obj;
|
|
230
476
|
};
|
|
231
477
|
|
|
232
|
-
// src/Type.ts
|
|
233
|
-
var Type_exports = {};
|
|
234
|
-
__export(Type_exports, {
|
|
235
|
-
DXN: () => DXN2,
|
|
236
|
-
Expando: () => Expando2,
|
|
237
|
-
Format: () => Format,
|
|
238
|
-
JsonSchema: () => JsonSchemaType,
|
|
239
|
-
Kind: () => Kind,
|
|
240
|
-
KindId: () => KindId,
|
|
241
|
-
Obj: () => Obj,
|
|
242
|
-
ObjectId: () => ObjectId2,
|
|
243
|
-
Ref: () => Ref3,
|
|
244
|
-
Relation: () => Relation,
|
|
245
|
-
SpaceId: () => SpaceId2,
|
|
246
|
-
getDXN: () => getDXN2,
|
|
247
|
-
getMeta: () => getMeta3,
|
|
248
|
-
getTypename: () => getTypename2,
|
|
249
|
-
getVersion: () => getVersion,
|
|
250
|
-
isMutable: () => isMutable2,
|
|
251
|
-
toEffectSchema: () => toEffectSchema,
|
|
252
|
-
toJsonSchema: () => toJsonSchema
|
|
253
|
-
});
|
|
254
|
-
import * as EchoSchema4 from "@dxos/echo-schema";
|
|
255
|
-
import { invariant as invariant3 } from "@dxos/invariant";
|
|
256
|
-
import { SpaceId as SpaceId2, ObjectId as ObjectId2, DXN as DXN2 } from "@dxos/keys";
|
|
257
|
-
import { Format, JsonSchemaType, toEffectSchema, toJsonSchema } from "@dxos/echo-schema";
|
|
258
|
-
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
|
|
259
|
-
var KindId = EchoSchema4.EntityKindId;
|
|
260
|
-
var Kind = EchoSchema4.EntityKind;
|
|
261
|
-
var Obj = EchoSchema4.EchoObject;
|
|
262
|
-
var Expando2 = EchoSchema4.Expando;
|
|
263
|
-
var Relation = EchoSchema4.EchoRelation;
|
|
264
|
-
var Ref3 = EchoSchema4.Ref;
|
|
265
|
-
var getDXN2 = (schema) => {
|
|
266
|
-
return EchoSchema4.getSchemaDXN(schema);
|
|
267
|
-
};
|
|
268
|
-
var getTypename2 = (schema) => {
|
|
269
|
-
const typename = EchoSchema4.getSchemaTypename(schema);
|
|
270
|
-
invariant3(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
|
|
271
|
-
F: __dxlog_file3,
|
|
272
|
-
L: 210,
|
|
273
|
-
S: void 0,
|
|
274
|
-
A: [
|
|
275
|
-
"typeof typename === 'string' && !typename.startsWith('dxn:')",
|
|
276
|
-
"'Invalid typename'"
|
|
277
|
-
]
|
|
278
|
-
});
|
|
279
|
-
return typename;
|
|
280
|
-
};
|
|
281
|
-
var getVersion = (schema) => {
|
|
282
|
-
const version = EchoSchema4.getSchemaVersion(schema);
|
|
283
|
-
invariant3(typeof version === "string" && version.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
|
|
284
|
-
F: __dxlog_file3,
|
|
285
|
-
L: 220,
|
|
286
|
-
S: void 0,
|
|
287
|
-
A: [
|
|
288
|
-
"typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
|
|
289
|
-
"'Invalid version'"
|
|
290
|
-
]
|
|
291
|
-
});
|
|
292
|
-
return version;
|
|
293
|
-
};
|
|
294
|
-
var isMutable2 = EchoSchema4.isMutable;
|
|
295
|
-
var getMeta3 = (schema) => {
|
|
296
|
-
return EchoSchema4.getTypeAnnotation(schema);
|
|
297
|
-
};
|
|
298
|
-
|
|
299
478
|
// src/index.ts
|
|
300
479
|
import { DXN as DXN4 } from "@dxos/keys";
|
|
301
480
|
|
|
302
481
|
// src/query/dsl.ts
|
|
303
|
-
import { Schema as
|
|
482
|
+
import { Match, Schema as Schema3 } from "effect";
|
|
304
483
|
import { raise as raise2 } from "@dxos/debug";
|
|
305
484
|
import { getTypeReference } from "@dxos/echo-schema";
|
|
306
485
|
import { assertArgument as assertArgument3 } from "@dxos/invariant";
|
|
307
486
|
import { DXN as DXN3, ObjectId as ObjectId3 } from "@dxos/keys";
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
487
|
+
function _define_property(obj, key, value) {
|
|
488
|
+
if (key in obj) {
|
|
489
|
+
Object.defineProperty(obj, key, {
|
|
490
|
+
value,
|
|
491
|
+
enumerable: true,
|
|
492
|
+
configurable: true,
|
|
493
|
+
writable: true
|
|
494
|
+
});
|
|
495
|
+
} else {
|
|
496
|
+
obj[key] = value;
|
|
311
497
|
}
|
|
498
|
+
return obj;
|
|
499
|
+
}
|
|
500
|
+
var OrderClass = class _OrderClass {
|
|
501
|
+
static is(value) {
|
|
502
|
+
return typeof value === "object" && value !== null && "~Order" in value;
|
|
503
|
+
}
|
|
504
|
+
constructor(ast) {
|
|
505
|
+
_define_property(this, "ast", void 0);
|
|
506
|
+
_define_property(this, "~Order", void 0);
|
|
507
|
+
this.ast = ast;
|
|
508
|
+
this["~Order"] = _OrderClass.variance;
|
|
509
|
+
}
|
|
510
|
+
};
|
|
511
|
+
_define_property(OrderClass, "variance", {});
|
|
512
|
+
(function(Order2) {
|
|
513
|
+
Order2.natural = new OrderClass({
|
|
514
|
+
kind: "natural"
|
|
515
|
+
});
|
|
516
|
+
Order2.property = (property, direction) => new OrderClass({
|
|
517
|
+
kind: "property",
|
|
518
|
+
property,
|
|
519
|
+
direction
|
|
520
|
+
});
|
|
521
|
+
})(Order || (Order = {}));
|
|
522
|
+
var FilterClass = class _FilterClass {
|
|
312
523
|
static is(value) {
|
|
313
524
|
return typeof value === "object" && value !== null && "~Filter" in value;
|
|
314
525
|
}
|
|
@@ -337,7 +548,7 @@ var FilterClass = class _FilterClass {
|
|
|
337
548
|
});
|
|
338
549
|
}
|
|
339
550
|
static ids(...ids) {
|
|
340
|
-
assertArgument3(ids.every((id) => ObjectId3.isValid(id)), "ids must be valid");
|
|
551
|
+
assertArgument3(ids.every((id) => ObjectId3.isValid(id)), "ids", "ids must be valid");
|
|
341
552
|
if (ids.length === 0) {
|
|
342
553
|
return Filter.nothing();
|
|
343
554
|
}
|
|
@@ -357,7 +568,7 @@ var FilterClass = class _FilterClass {
|
|
|
357
568
|
});
|
|
358
569
|
}
|
|
359
570
|
static typename(typename) {
|
|
360
|
-
assertArgument3(!typename.startsWith("dxn:"), "Typename must no be qualified");
|
|
571
|
+
assertArgument3(!typename.startsWith("dxn:"), "typename", "Typename must no be qualified");
|
|
361
572
|
return new _FilterClass({
|
|
362
573
|
type: "object",
|
|
363
574
|
typename: DXN3.fromTypename(typename).toString(),
|
|
@@ -371,10 +582,13 @@ var FilterClass = class _FilterClass {
|
|
|
371
582
|
props: {}
|
|
372
583
|
});
|
|
373
584
|
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
585
|
+
static tag(tag) {
|
|
586
|
+
return new _FilterClass({
|
|
587
|
+
type: "tag",
|
|
588
|
+
tag
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
static props(props) {
|
|
378
592
|
return new _FilterClass({
|
|
379
593
|
type: "object",
|
|
380
594
|
typename: null,
|
|
@@ -448,6 +662,12 @@ var FilterClass = class _FilterClass {
|
|
|
448
662
|
values
|
|
449
663
|
});
|
|
450
664
|
}
|
|
665
|
+
static contains(value) {
|
|
666
|
+
return new _FilterClass({
|
|
667
|
+
type: "contains",
|
|
668
|
+
value
|
|
669
|
+
});
|
|
670
|
+
}
|
|
451
671
|
static between(from, to) {
|
|
452
672
|
return new _FilterClass({
|
|
453
673
|
type: "range",
|
|
@@ -474,35 +694,60 @@ var FilterClass = class _FilterClass {
|
|
|
474
694
|
});
|
|
475
695
|
}
|
|
476
696
|
constructor(ast) {
|
|
697
|
+
_define_property(this, "ast", void 0);
|
|
698
|
+
_define_property(this, "~Filter", void 0);
|
|
477
699
|
this.ast = ast;
|
|
478
700
|
this["~Filter"] = _FilterClass.variance;
|
|
479
701
|
}
|
|
480
702
|
};
|
|
703
|
+
_define_property(FilterClass, "variance", {});
|
|
481
704
|
var Filter = FilterClass;
|
|
482
705
|
var propsFilterToAst = (predicates) => {
|
|
483
706
|
let idFilter;
|
|
484
707
|
if ("id" in predicates) {
|
|
485
|
-
assertArgument3(typeof predicates.id === "string" || Array.isArray(predicates.id), "invalid id filter");
|
|
708
|
+
assertArgument3(typeof predicates.id === "string" || Array.isArray(predicates.id), "predicates.id", "invalid id filter");
|
|
486
709
|
idFilter = typeof predicates.id === "string" ? [
|
|
487
710
|
predicates.id
|
|
488
711
|
] : predicates.id;
|
|
489
|
-
|
|
712
|
+
Schema3.Array(ObjectId3).pipe(Schema3.validateSync)(idFilter);
|
|
490
713
|
}
|
|
491
714
|
return {
|
|
492
715
|
id: idFilter,
|
|
493
716
|
props: Object.fromEntries(Object.entries(predicates).filter(([prop, _value]) => prop !== "id").map(([prop, predicate]) => [
|
|
494
717
|
prop,
|
|
495
|
-
|
|
718
|
+
processPredicate(predicate)
|
|
496
719
|
]))
|
|
497
720
|
};
|
|
498
721
|
};
|
|
722
|
+
var processPredicate = (predicate) => {
|
|
723
|
+
return Match.value(predicate).pipe(
|
|
724
|
+
Match.withReturnType(),
|
|
725
|
+
Match.when(Filter.is, (predicate2) => predicate2.ast),
|
|
726
|
+
// TODO(wittjosiah): Add support for array predicates.
|
|
727
|
+
Match.when(Array.isArray, (_predicate) => {
|
|
728
|
+
throw new Error("Array predicates are not yet supported.");
|
|
729
|
+
}),
|
|
730
|
+
Match.when((predicate2) => !isRef(predicate2) && typeof predicate2 === "object" && predicate2 !== null, (predicate2) => {
|
|
731
|
+
const nestedProps = Object.fromEntries(Object.entries(predicate2).map(([key, value]) => [
|
|
732
|
+
key,
|
|
733
|
+
processPredicate(value)
|
|
734
|
+
]));
|
|
735
|
+
return {
|
|
736
|
+
type: "object",
|
|
737
|
+
typename: null,
|
|
738
|
+
props: nestedProps
|
|
739
|
+
};
|
|
740
|
+
}),
|
|
741
|
+
Match.orElse((value) => Filter.eq(value).ast)
|
|
742
|
+
);
|
|
743
|
+
};
|
|
499
744
|
var QueryClass = class _QueryClass {
|
|
500
|
-
static {
|
|
501
|
-
this.variance = {};
|
|
502
|
-
}
|
|
503
745
|
static is(value) {
|
|
504
746
|
return typeof value === "object" && value !== null && "~Query" in value;
|
|
505
747
|
}
|
|
748
|
+
static fromAst(ast) {
|
|
749
|
+
return new _QueryClass(ast);
|
|
750
|
+
}
|
|
506
751
|
static select(filter) {
|
|
507
752
|
return new _QueryClass({
|
|
508
753
|
type: "select",
|
|
@@ -531,10 +776,6 @@ var QueryClass = class _QueryClass {
|
|
|
531
776
|
exclude: exclude.ast
|
|
532
777
|
});
|
|
533
778
|
}
|
|
534
|
-
constructor(ast) {
|
|
535
|
-
this.ast = ast;
|
|
536
|
-
this["~Query"] = _QueryClass.variance;
|
|
537
|
-
}
|
|
538
779
|
select(filter) {
|
|
539
780
|
if (Filter.is(filter)) {
|
|
540
781
|
return new _QueryClass({
|
|
@@ -546,7 +787,7 @@ var QueryClass = class _QueryClass {
|
|
|
546
787
|
return new _QueryClass({
|
|
547
788
|
type: "filter",
|
|
548
789
|
selection: this.ast,
|
|
549
|
-
filter: FilterClass.
|
|
790
|
+
filter: FilterClass.props(filter).ast
|
|
550
791
|
});
|
|
551
792
|
}
|
|
552
793
|
}
|
|
@@ -596,6 +837,13 @@ var QueryClass = class _QueryClass {
|
|
|
596
837
|
direction: "target"
|
|
597
838
|
});
|
|
598
839
|
}
|
|
840
|
+
orderBy(...order) {
|
|
841
|
+
return new _QueryClass({
|
|
842
|
+
type: "order",
|
|
843
|
+
query: this.ast,
|
|
844
|
+
order: order.map((o) => o.ast)
|
|
845
|
+
});
|
|
846
|
+
}
|
|
599
847
|
options(options) {
|
|
600
848
|
return new _QueryClass({
|
|
601
849
|
type: "options",
|
|
@@ -603,17 +851,32 @@ var QueryClass = class _QueryClass {
|
|
|
603
851
|
options
|
|
604
852
|
});
|
|
605
853
|
}
|
|
854
|
+
constructor(ast) {
|
|
855
|
+
_define_property(this, "ast", void 0);
|
|
856
|
+
_define_property(this, "~Query", void 0);
|
|
857
|
+
this.ast = ast;
|
|
858
|
+
this["~Query"] = _QueryClass.variance;
|
|
859
|
+
}
|
|
606
860
|
};
|
|
861
|
+
_define_property(QueryClass, "variance", {});
|
|
607
862
|
var Query = QueryClass;
|
|
863
|
+
var Order;
|
|
864
|
+
|
|
865
|
+
// src/index.ts
|
|
866
|
+
import { QueryAST } from "@dxos/echo-protocol";
|
|
608
867
|
|
|
609
868
|
export {
|
|
869
|
+
SchemaNotFoundError,
|
|
870
|
+
ObjectNotFoundError,
|
|
610
871
|
Key_exports,
|
|
872
|
+
Type_exports,
|
|
611
873
|
Obj_exports,
|
|
612
874
|
Ref_exports,
|
|
613
875
|
Relation_exports,
|
|
614
|
-
Type_exports,
|
|
615
876
|
Filter,
|
|
616
877
|
Query,
|
|
617
|
-
|
|
878
|
+
Order,
|
|
879
|
+
DXN4 as DXN,
|
|
880
|
+
QueryAST
|
|
618
881
|
};
|
|
619
|
-
//# sourceMappingURL=chunk-
|
|
882
|
+
//# sourceMappingURL=chunk-I4YEWYJA.mjs.map
|