@dxos/echo 0.8.3 → 0.8.4-main.1da679c
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-WG555MU5.mjs} +404 -174
- package/dist/lib/browser/chunk-WG555MU5.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-N55B5WWQ.mjs} +404 -174
- package/dist/lib/node-esm/chunk-N55B5WWQ.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 +104 -13
- 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 +10 -7
- 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 +214 -21
- package/src/Relation.ts +22 -11
- package/src/Type.ts +66 -51
- 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
|
@@ -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,53 +36,143 @@ __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
|
+
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
|
+
toJSON: () => toJSON,
|
|
66
|
+
version: () => version,
|
|
67
|
+
versionValid: () => versionValid
|
|
31
68
|
});
|
|
32
69
|
import { Schema } from "effect";
|
|
33
|
-
import
|
|
34
|
-
import
|
|
70
|
+
import { dual } from "effect/Function";
|
|
71
|
+
import * as EchoSchema2 from "@dxos/echo-schema";
|
|
72
|
+
import { assertArgument, invariant as invariant2 } from "@dxos/invariant";
|
|
73
|
+
import * as LiveObject from "@dxos/live-object";
|
|
35
74
|
import { live } from "@dxos/live-object";
|
|
36
|
-
import { assumeType } from "@dxos/util";
|
|
37
|
-
|
|
75
|
+
import { assumeType, deepMapValues } from "@dxos/util";
|
|
76
|
+
|
|
77
|
+
// src/Type.ts
|
|
78
|
+
var Type_exports = {};
|
|
79
|
+
__export(Type_exports, {
|
|
80
|
+
DXN: () => DXN,
|
|
81
|
+
Expando: () => Expando2,
|
|
82
|
+
Format: () => Format,
|
|
83
|
+
JsonSchema: () => JsonSchemaType,
|
|
84
|
+
Kind: () => Kind,
|
|
85
|
+
KindId: () => KindId,
|
|
86
|
+
Obj: () => Obj,
|
|
87
|
+
ObjectId: () => ObjectId2,
|
|
88
|
+
Ref: () => Ref2,
|
|
89
|
+
Relation: () => Relation,
|
|
90
|
+
SpaceId: () => SpaceId2,
|
|
91
|
+
getDXN: () => getDXN,
|
|
92
|
+
getMeta: () => getMeta,
|
|
93
|
+
getTypename: () => getTypename,
|
|
94
|
+
getVersion: () => getVersion,
|
|
95
|
+
isMutable: () => isMutable2,
|
|
96
|
+
toEffectSchema: () => toEffectSchema,
|
|
97
|
+
toJsonSchema: () => toJsonSchema
|
|
98
|
+
});
|
|
99
|
+
import * as EchoSchema from "@dxos/echo-schema";
|
|
100
|
+
import { invariant } from "@dxos/invariant";
|
|
101
|
+
import { SpaceId as SpaceId2, ObjectId as ObjectId2, DXN } from "@dxos/keys";
|
|
102
|
+
import { Format, JsonSchemaType, toEffectSchema, toJsonSchema } from "@dxos/echo-schema";
|
|
103
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
|
|
104
|
+
var KindId = EchoSchema.EntityKindId;
|
|
105
|
+
var Kind = EchoSchema.EntityKind;
|
|
106
|
+
var Obj = EchoSchema.EchoObject;
|
|
107
|
+
var Expando2 = EchoSchema.Expando;
|
|
108
|
+
var Relation = EchoSchema.EchoRelation;
|
|
109
|
+
var Ref2 = EchoSchema.Ref;
|
|
110
|
+
var getDXN = (schema) => {
|
|
111
|
+
return EchoSchema.getSchemaDXN(schema);
|
|
112
|
+
};
|
|
113
|
+
var getTypename = (schema) => {
|
|
114
|
+
const typename = EchoSchema.getSchemaTypename(schema);
|
|
115
|
+
invariant(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
|
|
116
|
+
F: __dxlog_file,
|
|
117
|
+
L: 212,
|
|
118
|
+
S: void 0,
|
|
119
|
+
A: [
|
|
120
|
+
"typeof typename === 'string' && !typename.startsWith('dxn:')",
|
|
121
|
+
"'Invalid typename'"
|
|
122
|
+
]
|
|
123
|
+
});
|
|
124
|
+
return typename;
|
|
125
|
+
};
|
|
126
|
+
var getVersion = (schema) => {
|
|
127
|
+
const version2 = EchoSchema.getSchemaVersion(schema);
|
|
128
|
+
invariant(typeof version2 === "string" && version2.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
|
|
129
|
+
F: __dxlog_file,
|
|
130
|
+
L: 222,
|
|
131
|
+
S: void 0,
|
|
132
|
+
A: [
|
|
133
|
+
"typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
|
|
134
|
+
"'Invalid version'"
|
|
135
|
+
]
|
|
136
|
+
});
|
|
137
|
+
return version2;
|
|
138
|
+
};
|
|
139
|
+
var isMutable2 = EchoSchema.isMutable;
|
|
140
|
+
var getMeta = (schema) => {
|
|
141
|
+
return EchoSchema.getTypeAnnotation(schema);
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// src/Obj.ts
|
|
145
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo/src/Obj.ts";
|
|
146
|
+
var Any = Schema.Struct({}).pipe(Obj({
|
|
147
|
+
typename: "dxos.org/types/Any",
|
|
148
|
+
version: "0.1.0"
|
|
149
|
+
}));
|
|
150
|
+
var Meta = EchoSchema2.MetaId;
|
|
38
151
|
var make = (schema, props, meta) => {
|
|
39
|
-
assertArgument(
|
|
40
|
-
if (props[
|
|
41
|
-
meta = props[
|
|
42
|
-
delete props[
|
|
152
|
+
assertArgument(EchoSchema2.getTypeAnnotation(schema)?.kind === EchoSchema2.EntityKind.Object, "schema", "Expected an object schema");
|
|
153
|
+
if (props[EchoSchema2.MetaId] != null) {
|
|
154
|
+
meta = props[EchoSchema2.MetaId];
|
|
155
|
+
delete props[EchoSchema2.MetaId];
|
|
43
156
|
}
|
|
44
157
|
return live(schema, props, meta);
|
|
45
158
|
};
|
|
46
159
|
var isObject = (obj) => {
|
|
47
160
|
assumeType(obj);
|
|
48
|
-
return typeof obj === "object" && obj !== null && obj[
|
|
161
|
+
return typeof obj === "object" && obj !== null && obj[EchoSchema2.EntityKindId] === EchoSchema2.EntityKind.Object;
|
|
49
162
|
};
|
|
50
163
|
var instanceOf = (...args) => {
|
|
51
164
|
if (args.length === 1) {
|
|
52
|
-
return (obj) =>
|
|
165
|
+
return (obj) => EchoSchema2.isInstanceOf(args[0], obj);
|
|
53
166
|
}
|
|
54
|
-
return
|
|
167
|
+
return EchoSchema2.isInstanceOf(args[0], args[1]);
|
|
55
168
|
};
|
|
56
|
-
var getSchema2 =
|
|
57
|
-
var
|
|
58
|
-
assertArgument(!Schema.isSchema(obj), "Object should not be a schema.");
|
|
59
|
-
const dxn =
|
|
60
|
-
|
|
61
|
-
F:
|
|
62
|
-
L:
|
|
169
|
+
var getSchema2 = EchoSchema2.getSchema;
|
|
170
|
+
var getDXN2 = (obj) => {
|
|
171
|
+
assertArgument(!Schema.isSchema(obj), "obj", "Object should not be a schema.");
|
|
172
|
+
const dxn = EchoSchema2.getObjectDXN(obj);
|
|
173
|
+
invariant2(dxn != null, "Invalid object.", {
|
|
174
|
+
F: __dxlog_file2,
|
|
175
|
+
L: 120,
|
|
63
176
|
S: void 0,
|
|
64
177
|
A: [
|
|
65
178
|
"dxn != null",
|
|
@@ -68,19 +181,19 @@ var getDXN = (obj) => {
|
|
|
68
181
|
});
|
|
69
182
|
return dxn;
|
|
70
183
|
};
|
|
71
|
-
var getTypeDXN =
|
|
72
|
-
var
|
|
184
|
+
var getTypeDXN = EchoSchema2.getType;
|
|
185
|
+
var getTypename2 = (obj) => {
|
|
73
186
|
const schema = getSchema2(obj);
|
|
74
187
|
if (schema == null) {
|
|
75
|
-
return
|
|
188
|
+
return EchoSchema2.getType(obj)?.asTypeDXN()?.type;
|
|
76
189
|
}
|
|
77
|
-
return
|
|
190
|
+
return EchoSchema2.getSchemaTypename(schema);
|
|
78
191
|
};
|
|
79
|
-
var
|
|
80
|
-
const meta =
|
|
81
|
-
|
|
82
|
-
F:
|
|
83
|
-
L:
|
|
192
|
+
var getMeta3 = (obj) => {
|
|
193
|
+
const meta = EchoSchema2.getMeta(obj);
|
|
194
|
+
invariant2(meta != null, "Invalid object.", {
|
|
195
|
+
F: __dxlog_file2,
|
|
196
|
+
L: 148,
|
|
84
197
|
S: void 0,
|
|
85
198
|
A: [
|
|
86
199
|
"meta != null",
|
|
@@ -89,11 +202,33 @@ var getMeta2 = (obj) => {
|
|
|
89
202
|
});
|
|
90
203
|
return meta;
|
|
91
204
|
};
|
|
205
|
+
var getKeys = dual(2, (obj, source) => {
|
|
206
|
+
const meta = EchoSchema2.getMeta(obj);
|
|
207
|
+
invariant2(meta != null, "Invalid object.", {
|
|
208
|
+
F: __dxlog_file2,
|
|
209
|
+
L: 160,
|
|
210
|
+
S: void 0,
|
|
211
|
+
A: [
|
|
212
|
+
"meta != null",
|
|
213
|
+
"'Invalid object.'"
|
|
214
|
+
]
|
|
215
|
+
});
|
|
216
|
+
return meta.keys.filter((key) => key.source === source);
|
|
217
|
+
});
|
|
218
|
+
var deleteKeys = (obj, source) => {
|
|
219
|
+
const meta = EchoSchema2.getMeta(obj);
|
|
220
|
+
for (let i = 0; i < meta.keys.length; i++) {
|
|
221
|
+
if (meta.keys[i].source === source) {
|
|
222
|
+
meta.keys.splice(i, 1);
|
|
223
|
+
i--;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
};
|
|
92
227
|
var isDeleted2 = (obj) => {
|
|
93
|
-
const deleted =
|
|
94
|
-
|
|
95
|
-
F:
|
|
96
|
-
L:
|
|
228
|
+
const deleted = EchoSchema2.isDeleted(obj);
|
|
229
|
+
invariant2(typeof deleted === "boolean", "Invalid object.", {
|
|
230
|
+
F: __dxlog_file2,
|
|
231
|
+
L: 182,
|
|
97
232
|
S: void 0,
|
|
98
233
|
A: [
|
|
99
234
|
"typeof deleted === 'boolean'",
|
|
@@ -105,13 +240,91 @@ var isDeleted2 = (obj) => {
|
|
|
105
240
|
var getLabel2 = (obj) => {
|
|
106
241
|
const schema = getSchema2(obj);
|
|
107
242
|
if (schema != null) {
|
|
108
|
-
return
|
|
243
|
+
return EchoSchema2.getLabel(schema, obj);
|
|
109
244
|
}
|
|
110
245
|
};
|
|
111
|
-
var
|
|
112
|
-
|
|
246
|
+
var setLabel2 = (obj, label) => {
|
|
247
|
+
const schema = getSchema2(obj);
|
|
248
|
+
if (schema != null) {
|
|
249
|
+
EchoSchema2.setLabel(schema, obj, label);
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
var toJSON = (obj) => EchoSchema2.objectToJSON(obj);
|
|
253
|
+
var fromJSON = EchoSchema2.objectFromJSON;
|
|
254
|
+
var getSnapshot2 = LiveObject.getSnapshot;
|
|
255
|
+
var clone = (obj, opts) => {
|
|
256
|
+
const { id, ...data } = obj;
|
|
257
|
+
const schema = getSchema2(obj);
|
|
258
|
+
invariant2(schema != null, "Object should have a schema", {
|
|
259
|
+
F: __dxlog_file2,
|
|
260
|
+
L: 247,
|
|
261
|
+
S: void 0,
|
|
262
|
+
A: [
|
|
263
|
+
"schema != null",
|
|
264
|
+
"'Object should have a schema'"
|
|
265
|
+
]
|
|
266
|
+
});
|
|
267
|
+
const props = deepMapValues(data, (value, recurse) => {
|
|
268
|
+
if (EchoSchema2.Ref.isRef(value)) {
|
|
269
|
+
return value;
|
|
270
|
+
}
|
|
271
|
+
return recurse(value);
|
|
272
|
+
});
|
|
273
|
+
if (opts?.retainId) {
|
|
274
|
+
props.id = id;
|
|
275
|
+
}
|
|
276
|
+
const meta = getMeta3(obj);
|
|
277
|
+
props[EchoSchema2.MetaId] = deepMapValues(meta, (value, recurse) => {
|
|
278
|
+
if (EchoSchema2.Ref.isRef(value)) {
|
|
279
|
+
return value;
|
|
280
|
+
}
|
|
281
|
+
return recurse(value);
|
|
282
|
+
});
|
|
283
|
+
return make(schema, props);
|
|
284
|
+
};
|
|
285
|
+
var VersionTypeId2 = EchoSchema2.VersionTypeId;
|
|
286
|
+
var unversioned = {
|
|
287
|
+
[VersionTypeId2]: {},
|
|
288
|
+
versioned: false
|
|
289
|
+
};
|
|
290
|
+
var isVersion = (obj) => {
|
|
291
|
+
return obj != null && typeof obj === "object" && VersionTypeId2 in obj;
|
|
292
|
+
};
|
|
293
|
+
var version = (obj) => {
|
|
294
|
+
const version2 = obj[EchoSchema2.ObjectVersionId];
|
|
295
|
+
if (version2 === void 0) {
|
|
296
|
+
return unversioned;
|
|
297
|
+
}
|
|
298
|
+
return version2;
|
|
299
|
+
};
|
|
300
|
+
var versionValid = (version2) => {
|
|
301
|
+
assertArgument(isVersion(version2), "version", "Invalid version object");
|
|
302
|
+
return !!version2.versioned;
|
|
303
|
+
};
|
|
304
|
+
var compareVersions = (version1, version2) => {
|
|
305
|
+
assertArgument(isVersion(version1), "version1", "Invalid version object");
|
|
306
|
+
assertArgument(isVersion(version2), "version2", "Invalid version object");
|
|
307
|
+
if (!versionValid(version1) || !versionValid(version2)) {
|
|
308
|
+
return "unversioned";
|
|
309
|
+
}
|
|
310
|
+
if (version1.automergeHeads?.length !== version2.automergeHeads?.length) {
|
|
311
|
+
return "different";
|
|
312
|
+
}
|
|
313
|
+
if (version1.automergeHeads?.some((head) => !version2.automergeHeads?.includes(head))) {
|
|
314
|
+
return "different";
|
|
315
|
+
}
|
|
316
|
+
return "equal";
|
|
317
|
+
};
|
|
318
|
+
var encodeVersion = (version2) => {
|
|
319
|
+
return JSON.stringify(version2);
|
|
320
|
+
};
|
|
321
|
+
var decodeVersion = (version2) => {
|
|
322
|
+
const parsed = JSON.parse(version2);
|
|
323
|
+
parsed[VersionTypeId2] = {};
|
|
324
|
+
return parsed;
|
|
325
|
+
};
|
|
113
326
|
|
|
114
|
-
//
|
|
327
|
+
// src/Ref.ts
|
|
115
328
|
var Ref_exports = {};
|
|
116
329
|
__export(Ref_exports, {
|
|
117
330
|
Array: () => Array2,
|
|
@@ -119,15 +332,16 @@ __export(Ref_exports, {
|
|
|
119
332
|
isRef: () => isRef,
|
|
120
333
|
make: () => make2
|
|
121
334
|
});
|
|
122
|
-
import * as
|
|
123
|
-
var Array2 =
|
|
124
|
-
var isRef =
|
|
125
|
-
var make2 =
|
|
126
|
-
var fromDXN =
|
|
335
|
+
import * as EchoSchema3 from "@dxos/echo-schema";
|
|
336
|
+
var Array2 = EchoSchema3.RefArray;
|
|
337
|
+
var isRef = EchoSchema3.Ref.isRef;
|
|
338
|
+
var make2 = EchoSchema3.Ref.make;
|
|
339
|
+
var fromDXN = EchoSchema3.Ref.fromDXN;
|
|
127
340
|
|
|
128
|
-
//
|
|
341
|
+
// src/Relation.ts
|
|
129
342
|
var Relation_exports = {};
|
|
130
343
|
__export(Relation_exports, {
|
|
344
|
+
Any: () => Any2,
|
|
131
345
|
Source: () => Source,
|
|
132
346
|
Target: () => Target,
|
|
133
347
|
getSource: () => getSource,
|
|
@@ -137,44 +351,51 @@ __export(Relation_exports, {
|
|
|
137
351
|
isRelation: () => isRelation,
|
|
138
352
|
make: () => make3
|
|
139
353
|
});
|
|
354
|
+
import { Schema as Schema2 } from "effect";
|
|
140
355
|
import { raise } from "@dxos/debug";
|
|
141
|
-
import * as
|
|
142
|
-
import { assertArgument as assertArgument2, invariant as
|
|
143
|
-
import { DXN } from "@dxos/keys";
|
|
356
|
+
import * as EchoSchema4 from "@dxos/echo-schema";
|
|
357
|
+
import { assertArgument as assertArgument2, invariant as invariant3 } from "@dxos/invariant";
|
|
358
|
+
import { DXN as DXN2 } from "@dxos/keys";
|
|
144
359
|
import { live as live2 } from "@dxos/live-object";
|
|
145
360
|
import { assumeType as assumeType2 } from "@dxos/util";
|
|
146
|
-
var
|
|
147
|
-
var
|
|
148
|
-
|
|
361
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo/src/Relation.ts";
|
|
362
|
+
var Any2 = Schema2.Struct({}).pipe(Relation({
|
|
363
|
+
typename: "dxos.org/types/Any",
|
|
364
|
+
version: "0.1.0",
|
|
365
|
+
source: Any,
|
|
366
|
+
target: Any
|
|
367
|
+
}));
|
|
368
|
+
var Source = EchoSchema4.RelationSourceId;
|
|
369
|
+
var Target = EchoSchema4.RelationTargetId;
|
|
149
370
|
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[
|
|
371
|
+
assertArgument2(EchoSchema4.getTypeAnnotation(schema)?.kind === EchoSchema4.EntityKind.Relation, "schema", "Expected a relation schema");
|
|
372
|
+
if (props[EchoSchema4.MetaId] != null) {
|
|
373
|
+
meta = props[EchoSchema4.MetaId];
|
|
374
|
+
delete props[EchoSchema4.MetaId];
|
|
375
|
+
}
|
|
376
|
+
const sourceDXN = EchoSchema4.getObjectDXN(props[Source]) ?? raise(new Error("Unresolved relation source"));
|
|
377
|
+
const targetDXN = EchoSchema4.getObjectDXN(props[Target]) ?? raise(new Error("Unresolved relation target"));
|
|
378
|
+
props[EchoSchema4.RelationSourceDXNId] = sourceDXN;
|
|
379
|
+
props[EchoSchema4.RelationTargetDXNId] = targetDXN;
|
|
159
380
|
return live2(schema, props, meta);
|
|
160
381
|
};
|
|
161
382
|
var isRelation = (value) => {
|
|
162
383
|
if (typeof value !== "object" || value === null) {
|
|
163
384
|
return false;
|
|
164
385
|
}
|
|
165
|
-
if (
|
|
386
|
+
if (EchoSchema4.ATTR_RELATION_SOURCE in value || EchoSchema4.ATTR_RELATION_TARGET in value) {
|
|
166
387
|
return true;
|
|
167
388
|
}
|
|
168
|
-
const kind = value[
|
|
169
|
-
return kind ===
|
|
389
|
+
const kind = value[EchoSchema4.EntityKindId];
|
|
390
|
+
return kind === EchoSchema4.EntityKind.Relation;
|
|
170
391
|
};
|
|
171
392
|
var getSourceDXN = (value) => {
|
|
172
393
|
assertArgument2(isRelation(value), "Expected a relation");
|
|
173
394
|
assumeType2(value);
|
|
174
|
-
const dxn = value[
|
|
175
|
-
|
|
176
|
-
F:
|
|
177
|
-
L:
|
|
395
|
+
const dxn = value[EchoSchema4.RelationSourceDXNId];
|
|
396
|
+
invariant3(dxn instanceof DXN2, void 0, {
|
|
397
|
+
F: __dxlog_file3,
|
|
398
|
+
L: 109,
|
|
178
399
|
S: void 0,
|
|
179
400
|
A: [
|
|
180
401
|
"dxn instanceof DXN",
|
|
@@ -186,10 +407,10 @@ var getSourceDXN = (value) => {
|
|
|
186
407
|
var getTargetDXN = (value) => {
|
|
187
408
|
assertArgument2(isRelation(value), "Expected a relation");
|
|
188
409
|
assumeType2(value);
|
|
189
|
-
const dxn = value[
|
|
190
|
-
|
|
191
|
-
F:
|
|
192
|
-
L:
|
|
410
|
+
const dxn = value[EchoSchema4.RelationTargetDXNId];
|
|
411
|
+
invariant3(dxn instanceof DXN2, void 0, {
|
|
412
|
+
F: __dxlog_file3,
|
|
413
|
+
L: 121,
|
|
193
414
|
S: void 0,
|
|
194
415
|
A: [
|
|
195
416
|
"dxn instanceof DXN",
|
|
@@ -201,10 +422,10 @@ var getTargetDXN = (value) => {
|
|
|
201
422
|
var getSource = (relation) => {
|
|
202
423
|
assertArgument2(isRelation(relation), "Expected a relation");
|
|
203
424
|
assumeType2(relation);
|
|
204
|
-
const obj = relation[
|
|
205
|
-
|
|
206
|
-
F:
|
|
207
|
-
L:
|
|
425
|
+
const obj = relation[EchoSchema4.RelationSourceId];
|
|
426
|
+
invariant3(obj !== void 0, `Invalid source: ${relation.id}`, {
|
|
427
|
+
F: __dxlog_file3,
|
|
428
|
+
L: 133,
|
|
208
429
|
S: void 0,
|
|
209
430
|
A: [
|
|
210
431
|
"obj !== undefined",
|
|
@@ -216,10 +437,10 @@ var getSource = (relation) => {
|
|
|
216
437
|
var getTarget = (relation) => {
|
|
217
438
|
assertArgument2(isRelation(relation), "Expected a relation");
|
|
218
439
|
assumeType2(relation);
|
|
219
|
-
const obj = relation[
|
|
220
|
-
|
|
221
|
-
F:
|
|
222
|
-
L:
|
|
440
|
+
const obj = relation[EchoSchema4.RelationTargetId];
|
|
441
|
+
invariant3(obj !== void 0, `Invalid target: ${relation.id}`, {
|
|
442
|
+
F: __dxlog_file3,
|
|
443
|
+
L: 145,
|
|
223
444
|
S: void 0,
|
|
224
445
|
A: [
|
|
225
446
|
"obj !== undefined",
|
|
@@ -229,91 +450,51 @@ var getTarget = (relation) => {
|
|
|
229
450
|
return obj;
|
|
230
451
|
};
|
|
231
452
|
|
|
232
|
-
//
|
|
233
|
-
var Type_exports = {};
|
|
234
|
-
__export(Type_exports, {
|
|
235
|
-
DXN: () => DXN2,
|
|
236
|
-
Expando: () => Expando2,
|
|
237
|
-
Format: () => Format,
|
|
238
|
-
JsonSchema: () => JsonSchemaType,
|
|
239
|
-
Kind: () => EntityKind3,
|
|
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 { EntityKind as EntityKind3 } from "@dxos/echo-schema";
|
|
257
|
-
import { SpaceId as SpaceId2, ObjectId as ObjectId2, DXN as DXN2 } from "@dxos/keys";
|
|
258
|
-
import {
|
|
259
|
-
Format,
|
|
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";
|
|
265
|
-
var KindId = EchoSchema4.EntityKindId;
|
|
266
|
-
var Obj = EchoSchema4.EchoObject;
|
|
267
|
-
var Relation = EchoSchema4.EchoRelation;
|
|
268
|
-
var Ref3 = EchoSchema4.Ref;
|
|
269
|
-
var getDXN2 = (schema) => {
|
|
270
|
-
return EchoSchema4.getSchemaDXN(schema);
|
|
271
|
-
};
|
|
272
|
-
var getTypename2 = (schema) => {
|
|
273
|
-
const typename = EchoSchema4.getSchemaTypename(schema);
|
|
274
|
-
invariant3(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
|
|
275
|
-
F: __dxlog_file3,
|
|
276
|
-
L: 182,
|
|
277
|
-
S: void 0,
|
|
278
|
-
A: [
|
|
279
|
-
"typeof typename === 'string' && !typename.startsWith('dxn:')",
|
|
280
|
-
"'Invalid typename'"
|
|
281
|
-
]
|
|
282
|
-
});
|
|
283
|
-
return typename;
|
|
284
|
-
};
|
|
285
|
-
var getVersion = (schema) => {
|
|
286
|
-
const version = EchoSchema4.getSchemaVersion(schema);
|
|
287
|
-
invariant3(typeof version === "string" && version.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
|
|
288
|
-
F: __dxlog_file3,
|
|
289
|
-
L: 192,
|
|
290
|
-
S: void 0,
|
|
291
|
-
A: [
|
|
292
|
-
"typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
|
|
293
|
-
"'Invalid version'"
|
|
294
|
-
]
|
|
295
|
-
});
|
|
296
|
-
return version;
|
|
297
|
-
};
|
|
298
|
-
var getMeta3 = (schema) => {
|
|
299
|
-
return EchoSchema4.getTypeAnnotation(schema);
|
|
300
|
-
};
|
|
301
|
-
var isMutable2 = EchoSchema4.isMutable;
|
|
302
|
-
var Expando2 = EchoSchema4.Expando;
|
|
303
|
-
|
|
304
|
-
// packages/core/echo/echo/src/index.ts
|
|
453
|
+
// src/index.ts
|
|
305
454
|
import { DXN as DXN4 } from "@dxos/keys";
|
|
306
455
|
|
|
307
|
-
//
|
|
308
|
-
import { Schema as
|
|
456
|
+
// src/query/dsl.ts
|
|
457
|
+
import { Match, Schema as Schema3 } from "effect";
|
|
309
458
|
import { raise as raise2 } from "@dxos/debug";
|
|
310
459
|
import { getTypeReference } from "@dxos/echo-schema";
|
|
311
460
|
import { assertArgument as assertArgument3 } from "@dxos/invariant";
|
|
312
461
|
import { DXN as DXN3, ObjectId as ObjectId3 } from "@dxos/keys";
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
462
|
+
function _define_property(obj, key, value) {
|
|
463
|
+
if (key in obj) {
|
|
464
|
+
Object.defineProperty(obj, key, {
|
|
465
|
+
value,
|
|
466
|
+
enumerable: true,
|
|
467
|
+
configurable: true,
|
|
468
|
+
writable: true
|
|
469
|
+
});
|
|
470
|
+
} else {
|
|
471
|
+
obj[key] = value;
|
|
472
|
+
}
|
|
473
|
+
return obj;
|
|
474
|
+
}
|
|
475
|
+
var OrderClass = class _OrderClass {
|
|
476
|
+
static is(value) {
|
|
477
|
+
return typeof value === "object" && value !== null && "~Order" in value;
|
|
478
|
+
}
|
|
479
|
+
constructor(ast) {
|
|
480
|
+
_define_property(this, "ast", void 0);
|
|
481
|
+
_define_property(this, "~Order", void 0);
|
|
482
|
+
this.ast = ast;
|
|
483
|
+
this["~Order"] = _OrderClass.variance;
|
|
316
484
|
}
|
|
485
|
+
};
|
|
486
|
+
_define_property(OrderClass, "variance", {});
|
|
487
|
+
(function(Order2) {
|
|
488
|
+
Order2.natural = new OrderClass({
|
|
489
|
+
kind: "natural"
|
|
490
|
+
});
|
|
491
|
+
Order2.property = (property, direction) => new OrderClass({
|
|
492
|
+
kind: "property",
|
|
493
|
+
property,
|
|
494
|
+
direction
|
|
495
|
+
});
|
|
496
|
+
})(Order || (Order = {}));
|
|
497
|
+
var FilterClass = class _FilterClass {
|
|
317
498
|
static is(value) {
|
|
318
499
|
return typeof value === "object" && value !== null && "~Filter" in value;
|
|
319
500
|
}
|
|
@@ -342,7 +523,7 @@ var FilterClass = class _FilterClass {
|
|
|
342
523
|
});
|
|
343
524
|
}
|
|
344
525
|
static ids(...ids) {
|
|
345
|
-
assertArgument3(ids.every((id) => ObjectId3.isValid(id)), "ids must be valid");
|
|
526
|
+
assertArgument3(ids.every((id) => ObjectId3.isValid(id)), "ids", "ids must be valid");
|
|
346
527
|
if (ids.length === 0) {
|
|
347
528
|
return Filter.nothing();
|
|
348
529
|
}
|
|
@@ -362,7 +543,7 @@ var FilterClass = class _FilterClass {
|
|
|
362
543
|
});
|
|
363
544
|
}
|
|
364
545
|
static typename(typename) {
|
|
365
|
-
assertArgument3(!typename.startsWith("dxn:"), "Typename must no be qualified");
|
|
546
|
+
assertArgument3(!typename.startsWith("dxn:"), "typename", "Typename must no be qualified");
|
|
366
547
|
return new _FilterClass({
|
|
367
548
|
type: "object",
|
|
368
549
|
typename: DXN3.fromTypename(typename).toString(),
|
|
@@ -453,6 +634,12 @@ var FilterClass = class _FilterClass {
|
|
|
453
634
|
values
|
|
454
635
|
});
|
|
455
636
|
}
|
|
637
|
+
static contains(value) {
|
|
638
|
+
return new _FilterClass({
|
|
639
|
+
type: "contains",
|
|
640
|
+
value
|
|
641
|
+
});
|
|
642
|
+
}
|
|
456
643
|
static between(from, to) {
|
|
457
644
|
return new _FilterClass({
|
|
458
645
|
type: "range",
|
|
@@ -479,35 +666,60 @@ var FilterClass = class _FilterClass {
|
|
|
479
666
|
});
|
|
480
667
|
}
|
|
481
668
|
constructor(ast) {
|
|
669
|
+
_define_property(this, "ast", void 0);
|
|
670
|
+
_define_property(this, "~Filter", void 0);
|
|
482
671
|
this.ast = ast;
|
|
483
672
|
this["~Filter"] = _FilterClass.variance;
|
|
484
673
|
}
|
|
485
674
|
};
|
|
675
|
+
_define_property(FilterClass, "variance", {});
|
|
486
676
|
var Filter = FilterClass;
|
|
487
677
|
var propsFilterToAst = (predicates) => {
|
|
488
678
|
let idFilter;
|
|
489
679
|
if ("id" in predicates) {
|
|
490
|
-
assertArgument3(typeof predicates.id === "string" || Array.isArray(predicates.id), "invalid id filter");
|
|
680
|
+
assertArgument3(typeof predicates.id === "string" || Array.isArray(predicates.id), "predicates.id", "invalid id filter");
|
|
491
681
|
idFilter = typeof predicates.id === "string" ? [
|
|
492
682
|
predicates.id
|
|
493
683
|
] : predicates.id;
|
|
494
|
-
|
|
684
|
+
Schema3.Array(ObjectId3).pipe(Schema3.validateSync)(idFilter);
|
|
495
685
|
}
|
|
496
686
|
return {
|
|
497
687
|
id: idFilter,
|
|
498
688
|
props: Object.fromEntries(Object.entries(predicates).filter(([prop, _value]) => prop !== "id").map(([prop, predicate]) => [
|
|
499
689
|
prop,
|
|
500
|
-
|
|
690
|
+
processPredicate(predicate)
|
|
501
691
|
]))
|
|
502
692
|
};
|
|
503
693
|
};
|
|
694
|
+
var processPredicate = (predicate) => {
|
|
695
|
+
return Match.value(predicate).pipe(
|
|
696
|
+
Match.withReturnType(),
|
|
697
|
+
Match.when(Filter.is, (predicate2) => predicate2.ast),
|
|
698
|
+
// TODO(wittjosiah): Add support for array predicates.
|
|
699
|
+
Match.when(Array.isArray, (_predicate) => {
|
|
700
|
+
throw new Error("Array predicates are not yet supported.");
|
|
701
|
+
}),
|
|
702
|
+
Match.when((predicate2) => !isRef(predicate2) && typeof predicate2 === "object" && predicate2 !== null, (predicate2) => {
|
|
703
|
+
const nestedProps = Object.fromEntries(Object.entries(predicate2).map(([key, value]) => [
|
|
704
|
+
key,
|
|
705
|
+
processPredicate(value)
|
|
706
|
+
]));
|
|
707
|
+
return {
|
|
708
|
+
type: "object",
|
|
709
|
+
typename: null,
|
|
710
|
+
props: nestedProps
|
|
711
|
+
};
|
|
712
|
+
}),
|
|
713
|
+
Match.orElse((value) => Filter.eq(value).ast)
|
|
714
|
+
);
|
|
715
|
+
};
|
|
504
716
|
var QueryClass = class _QueryClass {
|
|
505
|
-
static {
|
|
506
|
-
this.variance = {};
|
|
507
|
-
}
|
|
508
717
|
static is(value) {
|
|
509
718
|
return typeof value === "object" && value !== null && "~Query" in value;
|
|
510
719
|
}
|
|
720
|
+
static fromAst(ast) {
|
|
721
|
+
return new _QueryClass(ast);
|
|
722
|
+
}
|
|
511
723
|
static select(filter) {
|
|
512
724
|
return new _QueryClass({
|
|
513
725
|
type: "select",
|
|
@@ -536,10 +748,6 @@ var QueryClass = class _QueryClass {
|
|
|
536
748
|
exclude: exclude.ast
|
|
537
749
|
});
|
|
538
750
|
}
|
|
539
|
-
constructor(ast) {
|
|
540
|
-
this.ast = ast;
|
|
541
|
-
this["~Query"] = _QueryClass.variance;
|
|
542
|
-
}
|
|
543
751
|
select(filter) {
|
|
544
752
|
if (Filter.is(filter)) {
|
|
545
753
|
return new _QueryClass({
|
|
@@ -601,6 +809,13 @@ var QueryClass = class _QueryClass {
|
|
|
601
809
|
direction: "target"
|
|
602
810
|
});
|
|
603
811
|
}
|
|
812
|
+
orderBy(...order) {
|
|
813
|
+
return new _QueryClass({
|
|
814
|
+
type: "order",
|
|
815
|
+
query: this.ast,
|
|
816
|
+
order: order.map((o) => o.ast)
|
|
817
|
+
});
|
|
818
|
+
}
|
|
604
819
|
options(options) {
|
|
605
820
|
return new _QueryClass({
|
|
606
821
|
type: "options",
|
|
@@ -608,17 +823,32 @@ var QueryClass = class _QueryClass {
|
|
|
608
823
|
options
|
|
609
824
|
});
|
|
610
825
|
}
|
|
826
|
+
constructor(ast) {
|
|
827
|
+
_define_property(this, "ast", void 0);
|
|
828
|
+
_define_property(this, "~Query", void 0);
|
|
829
|
+
this.ast = ast;
|
|
830
|
+
this["~Query"] = _QueryClass.variance;
|
|
831
|
+
}
|
|
611
832
|
};
|
|
833
|
+
_define_property(QueryClass, "variance", {});
|
|
612
834
|
var Query = QueryClass;
|
|
835
|
+
var Order;
|
|
836
|
+
|
|
837
|
+
// src/index.ts
|
|
838
|
+
import { QueryAST } from "@dxos/echo-protocol";
|
|
613
839
|
|
|
614
840
|
export {
|
|
841
|
+
SchemaNotFoundError,
|
|
842
|
+
ObjectNotFoundError,
|
|
615
843
|
Key_exports,
|
|
844
|
+
Type_exports,
|
|
616
845
|
Obj_exports,
|
|
617
846
|
Ref_exports,
|
|
618
847
|
Relation_exports,
|
|
619
|
-
Type_exports,
|
|
620
848
|
Filter,
|
|
621
849
|
Query,
|
|
622
|
-
|
|
850
|
+
Order,
|
|
851
|
+
DXN4 as DXN,
|
|
852
|
+
QueryAST
|
|
623
853
|
};
|
|
624
|
-
//# sourceMappingURL=chunk-
|
|
854
|
+
//# sourceMappingURL=chunk-N55B5WWQ.mjs.map
|