@dxos/echo 0.10.0 → 0.11.0
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/dist/lib/Annotation.mjs +3 -0
- package/dist/lib/Blob.mjs +160 -0
- package/dist/lib/Blob.mjs.map +1 -0
- package/dist/lib/Database.mjs +2 -0
- package/dist/lib/Entity.mjs +231 -0
- package/dist/lib/Entity.mjs.map +1 -0
- package/dist/lib/Err.mjs +105 -0
- package/dist/lib/Err.mjs.map +1 -0
- package/dist/lib/Feed.mjs +338 -0
- package/dist/lib/Feed.mjs.map +1 -0
- package/dist/lib/Filter.mjs +380 -0
- package/dist/lib/Filter.mjs.map +1 -0
- package/dist/lib/Format.mjs +47 -0
- package/dist/lib/Format.mjs.map +1 -0
- package/dist/lib/JsonSchema.mjs +21 -0
- package/dist/lib/JsonSchema.mjs.map +1 -0
- package/dist/lib/Key.mjs +15 -0
- package/dist/lib/Key.mjs.map +1 -0
- package/dist/lib/Migration.mjs +38 -0
- package/dist/lib/Migration.mjs.map +1 -0
- package/dist/lib/Obj.mjs +660 -0
- package/dist/lib/Obj.mjs.map +1 -0
- package/dist/lib/Order.mjs +65 -0
- package/dist/lib/Order.mjs.map +1 -0
- package/dist/lib/Query.mjs +336 -0
- package/dist/lib/Query.mjs.map +1 -0
- package/dist/lib/QueryResult.mjs +7 -0
- package/dist/lib/QueryResult.mjs.map +1 -0
- package/dist/lib/Ref.mjs +44 -0
- package/dist/lib/Ref.mjs.map +1 -0
- package/dist/lib/Registry.mjs +35 -0
- package/dist/lib/Registry.mjs.map +1 -0
- package/dist/lib/Relation.mjs +397 -0
- package/dist/lib/Relation.mjs.map +1 -0
- package/dist/lib/Scope.mjs +51 -0
- package/dist/lib/Scope.mjs.map +1 -0
- package/dist/lib/Tag.mjs +70 -0
- package/dist/lib/Tag.mjs.map +1 -0
- package/dist/lib/Text.mjs +82 -0
- package/dist/lib/Text.mjs.map +1 -0
- package/dist/lib/Type.mjs +371 -0
- package/dist/lib/Type.mjs.map +1 -0
- package/dist/lib/chunk-Annotation.mjs +221 -0
- package/dist/lib/chunk-Annotation.mjs.map +1 -0
- package/dist/lib/chunk-Database.mjs +918 -0
- package/dist/lib/chunk-Database.mjs.map +1 -0
- package/dist/lib/chunk-atom-snapshot.mjs +249 -0
- package/dist/lib/chunk-atom-snapshot.mjs.map +1 -0
- package/dist/lib/chunk-internal.mjs +2775 -0
- package/dist/lib/chunk-internal.mjs.map +1 -0
- package/dist/lib/chunk-json-schema.mjs +660 -0
- package/dist/lib/chunk-json-schema.mjs.map +1 -0
- package/dist/lib/chunk-number.mjs +164 -0
- package/dist/lib/chunk-number.mjs.map +1 -0
- package/dist/lib/chunk-ref-array.mjs +31 -0
- package/dist/lib/chunk-ref-array.mjs.map +1 -0
- package/dist/lib/chunk-ref.mjs +590 -0
- package/dist/lib/chunk-ref.mjs.map +1 -0
- package/dist/lib/chunk-rolldown-runtime.mjs +13 -0
- package/dist/lib/chunk-select.mjs +186 -0
- package/dist/lib/chunk-select.mjs.map +1 -0
- package/dist/lib/chunk-src.mjs +234 -0
- package/dist/lib/chunk-src.mjs.map +1 -0
- package/dist/lib/chunk-util.mjs +140 -0
- package/dist/lib/chunk-util.mjs.map +1 -0
- package/dist/lib/index.mjs +24 -0
- package/dist/lib/internal.mjs +10 -0
- package/dist/lib/testing.mjs +346 -0
- package/dist/lib/testing.mjs.map +1 -0
- package/dist/types/src/Aggregate.d.ts +86 -0
- package/dist/types/src/Aggregate.d.ts.map +1 -0
- package/dist/types/src/Blob.d.ts +153 -0
- package/dist/types/src/Blob.d.ts.map +1 -0
- package/dist/types/src/Blob.test.d.ts +2 -0
- package/dist/types/src/Blob.test.d.ts.map +1 -0
- package/dist/types/src/Database.d.ts +153 -4
- package/dist/types/src/Database.d.ts.map +1 -1
- package/dist/types/src/Err.d.ts +116 -0
- package/dist/types/src/Err.d.ts.map +1 -1
- package/dist/types/src/Feed.d.ts +116 -28
- package/dist/types/src/Feed.d.ts.map +1 -1
- package/dist/types/src/Feed.test.d.ts +2 -0
- package/dist/types/src/Feed.test.d.ts.map +1 -0
- package/dist/types/src/Filter.d.ts +14 -6
- package/dist/types/src/Filter.d.ts.map +1 -1
- package/dist/types/src/Hypergraph.d.ts +18 -0
- package/dist/types/src/Hypergraph.d.ts.map +1 -1
- package/dist/types/src/Json.d.ts.map +1 -1
- package/dist/types/src/Obj.d.ts +14 -1
- package/dist/types/src/Obj.d.ts.map +1 -1
- package/dist/types/src/Order.d.ts +9 -3
- package/dist/types/src/Order.d.ts.map +1 -1
- package/dist/types/src/Query.d.ts +107 -26
- package/dist/types/src/Query.d.ts.map +1 -1
- package/dist/types/src/Relation.d.ts +6 -0
- package/dist/types/src/Relation.d.ts.map +1 -1
- package/dist/types/src/Type.d.ts.map +1 -1
- package/dist/types/src/View.d.ts +1 -1
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/api.d.ts +6 -0
- package/dist/types/src/internal/Entity/api.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/model.d.ts +3 -2
- package/dist/types/src/internal/Entity/model.d.ts.map +1 -1
- package/dist/types/src/internal/Filter/match.d.ts.map +1 -1
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +34 -8
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -1
- package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/atoms.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -1
- package/dist/types/src/internal/Query/pretty.d.ts.map +1 -1
- package/dist/types/src/internal/Query/query-result-effect.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/make-object.d.ts +13 -0
- package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/typed-handler.d.ts +12 -0
- package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/index.d.ts +1 -0
- package/dist/types/src/internal/common/types/index.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/model-symbols.d.ts +5 -0
- package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/projection.d.ts +32 -0
- package/dist/types/src/internal/common/types/projection.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +40 -35
- package/src/Aggregate.ts +105 -0
- package/src/Blob.test.ts +45 -0
- package/src/Blob.ts +205 -0
- package/src/Database.ts +207 -17
- package/src/Err.ts +36 -0
- package/src/Feed.test.ts +188 -0
- package/src/Feed.ts +238 -62
- package/src/Filter.ts +28 -10
- package/src/Hypergraph.ts +18 -0
- package/src/Json.ts +1 -0
- package/src/Obj.test.ts +2 -2
- package/src/Obj.ts +21 -1
- package/src/Order.ts +16 -9
- package/src/Query.test.ts +319 -2
- package/src/Query.ts +165 -51
- package/src/Relation.ts +14 -0
- package/src/Type.ts +5 -6
- package/src/index.ts +2 -0
- package/src/internal/Entity/api.ts +11 -1
- package/src/internal/Entity/model.ts +3 -0
- package/src/internal/Filter/match.ts +30 -1
- package/src/internal/JsonSchema/json-schema-type.ts +14 -2
- package/src/internal/JsonSchema/json-schema.test.ts +28 -1
- package/src/internal/JsonSchema/json-schema.ts +33 -6
- package/src/internal/Obj/atoms.ts +4 -2
- package/src/internal/Obj/json-serializer.test.ts +162 -2
- package/src/internal/Obj/json-serializer.ts +6 -0
- package/src/internal/Query/pretty.ts +19 -1
- package/src/internal/Query/query-result-effect.ts +2 -4
- package/src/internal/Ref/atoms.ts +1 -1
- package/src/internal/common/proxy/change-context.ts +1 -1
- package/src/internal/common/proxy/make-object.ts +42 -3
- package/src/internal/common/proxy/reactive.ts +5 -0
- package/src/internal/common/proxy/symbols.ts +1 -0
- package/src/internal/common/proxy/typed-handler.ts +71 -29
- package/src/internal/common/types/index.ts +1 -0
- package/src/internal/common/types/model-symbols.ts +6 -0
- package/src/internal/common/types/projection.ts +45 -0
- package/src/testing/test-data.ts +14 -14
- package/dist/lib/neutral/Annotation.mjs +0 -90
- package/dist/lib/neutral/Annotation.mjs.map +0 -7
- package/dist/lib/neutral/Database.mjs +0 -42
- package/dist/lib/neutral/Database.mjs.map +0 -7
- package/dist/lib/neutral/Entity.mjs +0 -76
- package/dist/lib/neutral/Entity.mjs.map +0 -7
- package/dist/lib/neutral/Err.mjs +0 -16
- package/dist/lib/neutral/Err.mjs.map +0 -7
- package/dist/lib/neutral/Feed.mjs +0 -50
- package/dist/lib/neutral/Feed.mjs.map +0 -7
- package/dist/lib/neutral/Filter.mjs +0 -72
- package/dist/lib/neutral/Filter.mjs.map +0 -7
- package/dist/lib/neutral/Format.mjs +0 -82
- package/dist/lib/neutral/Format.mjs.map +0 -7
- package/dist/lib/neutral/JsonSchema.mjs +0 -18
- package/dist/lib/neutral/JsonSchema.mjs.map +0 -7
- package/dist/lib/neutral/Key.mjs +0 -16
- package/dist/lib/neutral/Key.mjs.map +0 -7
- package/dist/lib/neutral/Migration.mjs +0 -18
- package/dist/lib/neutral/Migration.mjs.map +0 -7
- package/dist/lib/neutral/Obj.mjs +0 -128
- package/dist/lib/neutral/Obj.mjs.map +0 -7
- package/dist/lib/neutral/Order.mjs +0 -16
- package/dist/lib/neutral/Order.mjs.map +0 -7
- package/dist/lib/neutral/Query.mjs +0 -38
- package/dist/lib/neutral/Query.mjs.map +0 -7
- package/dist/lib/neutral/QueryResult.mjs +0 -2
- package/dist/lib/neutral/QueryResult.mjs.map +0 -7
- package/dist/lib/neutral/Ref.mjs +0 -25
- package/dist/lib/neutral/Ref.mjs.map +0 -7
- package/dist/lib/neutral/Registry.mjs +0 -14
- package/dist/lib/neutral/Registry.mjs.map +0 -7
- package/dist/lib/neutral/Relation.mjs +0 -97
- package/dist/lib/neutral/Relation.mjs.map +0 -7
- package/dist/lib/neutral/Scope.mjs +0 -12
- package/dist/lib/neutral/Scope.mjs.map +0 -7
- package/dist/lib/neutral/Tag.mjs +0 -32
- package/dist/lib/neutral/Tag.mjs.map +0 -7
- package/dist/lib/neutral/Text.mjs +0 -25
- package/dist/lib/neutral/Text.mjs.map +0 -7
- package/dist/lib/neutral/Type.mjs +0 -65
- package/dist/lib/neutral/Type.mjs.map +0 -7
- package/dist/lib/neutral/chunk-2HKGAQM4.mjs +0 -1394
- package/dist/lib/neutral/chunk-2HKGAQM4.mjs.map +0 -7
- package/dist/lib/neutral/chunk-2ZHECXUR.mjs +0 -95
- package/dist/lib/neutral/chunk-2ZHECXUR.mjs.map +0 -7
- package/dist/lib/neutral/chunk-3KTE2Y7Q.mjs +0 -336
- package/dist/lib/neutral/chunk-3KTE2Y7Q.mjs.map +0 -7
- package/dist/lib/neutral/chunk-3TN2VMI4.mjs +0 -714
- package/dist/lib/neutral/chunk-3TN2VMI4.mjs.map +0 -7
- package/dist/lib/neutral/chunk-42L4HJ3Z.mjs +0 -104
- package/dist/lib/neutral/chunk-42L4HJ3Z.mjs.map +0 -7
- package/dist/lib/neutral/chunk-4A2NWKRJ.mjs +0 -747
- package/dist/lib/neutral/chunk-4A2NWKRJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-7LOUAPYZ.mjs +0 -25
- package/dist/lib/neutral/chunk-7LOUAPYZ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ACFAOTKJ.mjs +0 -1531
- package/dist/lib/neutral/chunk-ACFAOTKJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-BEFR7LEA.mjs +0 -170
- package/dist/lib/neutral/chunk-BEFR7LEA.mjs.map +0 -7
- package/dist/lib/neutral/chunk-BXIKXT7Q.mjs +0 -89
- package/dist/lib/neutral/chunk-BXIKXT7Q.mjs.map +0 -7
- package/dist/lib/neutral/chunk-C57XMMBY.mjs +0 -206
- package/dist/lib/neutral/chunk-C57XMMBY.mjs.map +0 -7
- package/dist/lib/neutral/chunk-C62JYFAD.mjs +0 -183
- package/dist/lib/neutral/chunk-C62JYFAD.mjs.map +0 -7
- package/dist/lib/neutral/chunk-FSGX2R62.mjs +0 -48
- package/dist/lib/neutral/chunk-FSGX2R62.mjs.map +0 -7
- package/dist/lib/neutral/chunk-HBXT3GSB.mjs +0 -459
- package/dist/lib/neutral/chunk-HBXT3GSB.mjs.map +0 -7
- package/dist/lib/neutral/chunk-IQR45HAD.mjs +0 -31
- package/dist/lib/neutral/chunk-IQR45HAD.mjs.map +0 -7
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KCBW4BR6.mjs +0 -424
- package/dist/lib/neutral/chunk-KCBW4BR6.mjs.map +0 -7
- package/dist/lib/neutral/chunk-L3E5IXAE.mjs +0 -575
- package/dist/lib/neutral/chunk-L3E5IXAE.mjs.map +0 -7
- package/dist/lib/neutral/chunk-PRC4FEKJ.mjs +0 -56
- package/dist/lib/neutral/chunk-PRC4FEKJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-SCT6FFCR.mjs +0 -351
- package/dist/lib/neutral/chunk-SCT6FFCR.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TOCVVFK2.mjs +0 -75
- package/dist/lib/neutral/chunk-TOCVVFK2.mjs.map +0 -7
- package/dist/lib/neutral/chunk-U53LSQQA.mjs +0 -41
- package/dist/lib/neutral/chunk-U53LSQQA.mjs.map +0 -7
- package/dist/lib/neutral/chunk-UGFFV2FR.mjs +0 -27
- package/dist/lib/neutral/chunk-UGFFV2FR.mjs.map +0 -7
- package/dist/lib/neutral/chunk-UWLP4RFM.mjs +0 -7
- package/dist/lib/neutral/chunk-UWLP4RFM.mjs.map +0 -7
- package/dist/lib/neutral/chunk-UZHCQ6NI.mjs +0 -283
- package/dist/lib/neutral/chunk-UZHCQ6NI.mjs.map +0 -7
- package/dist/lib/neutral/chunk-WISOH2XH.mjs +0 -36
- package/dist/lib/neutral/chunk-WISOH2XH.mjs.map +0 -7
- package/dist/lib/neutral/chunk-WKIT2YY5.mjs +0 -34
- package/dist/lib/neutral/chunk-WKIT2YY5.mjs.map +0 -7
- package/dist/lib/neutral/chunk-XB6ISRAO.mjs +0 -271
- package/dist/lib/neutral/chunk-XB6ISRAO.mjs.map +0 -7
- package/dist/lib/neutral/chunk-XXL42WCB.mjs +0 -84
- package/dist/lib/neutral/chunk-XXL42WCB.mjs.map +0 -7
- package/dist/lib/neutral/chunk-XXWK4J53.mjs +0 -117
- package/dist/lib/neutral/chunk-XXWK4J53.mjs.map +0 -7
- package/dist/lib/neutral/index.mjs +0 -115
- package/dist/lib/neutral/index.mjs.map +0 -7
- package/dist/lib/neutral/internal/index.mjs +0 -581
- package/dist/lib/neutral/internal/index.mjs.map +0 -7
- package/dist/lib/neutral/meta.json +0 -1
- package/dist/lib/neutral/testing/index.mjs +0 -477
- package/dist/lib/neutral/testing/index.mjs.map +0 -7
|
@@ -0,0 +1,590 @@
|
|
|
1
|
+
import { g as getStaticTypeSchema } from "./chunk-util.mjs";
|
|
2
|
+
import { Jt as ObjectDeletedId, bt as getTypeAnnotation, et as ReferenceAnnotationId, r as Service, vt as getSchemaURI, xt as getTypeIdentifierAnnotation } from "./chunk-Database.mjs";
|
|
3
|
+
import { EncodedReference } from "@dxos/echo-protocol";
|
|
4
|
+
import { DXN, EID, EntityId } from "@dxos/keys";
|
|
5
|
+
import * as Option from "effect/Option";
|
|
6
|
+
import * as Schema from "effect/Schema";
|
|
7
|
+
import * as SchemaAST from "effect/SchemaAST";
|
|
8
|
+
import { assertArgument, invariant } from "@dxos/invariant";
|
|
9
|
+
import * as Effect from "effect/Effect";
|
|
10
|
+
import * as Equal from "effect/Equal";
|
|
11
|
+
import * as Hash from "effect/Hash";
|
|
12
|
+
import * as ParseResult from "effect/ParseResult";
|
|
13
|
+
import * as Pipeable from "effect/Pipeable";
|
|
14
|
+
import { Event } from "@dxos/async";
|
|
15
|
+
import { inspectCustom } from "@dxos/debug";
|
|
16
|
+
import * as Atom from "@effect-atom/atom/Atom";
|
|
17
|
+
//#region src/internal/common/proxy/proxy-utils.ts
|
|
18
|
+
var __dxlog_file$1 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/common/proxy/proxy-utils.ts";
|
|
19
|
+
var symbolIsProxy = Symbol.for("@dxos/schema/Proxy");
|
|
20
|
+
/**
|
|
21
|
+
* Marker placed on a reactive-object behaviour prototype (e.g. the typed handler's
|
|
22
|
+
* `TypedObject` prototype). A record target whose prototype chain carries this marker
|
|
23
|
+
* is a reactive data record — equivalent, for the purposes of the "plain object" gates
|
|
24
|
+
* below, to one rooted directly at `Object.prototype`. This lets a handler move its
|
|
25
|
+
* per-object metadata onto an intermediate prototype without those gates mistaking the
|
|
26
|
+
* record for a foreign class instance.
|
|
27
|
+
*/
|
|
28
|
+
var symbolReactivePrototype = Symbol.for("@dxos/echo/ReactivePrototype");
|
|
29
|
+
/**
|
|
30
|
+
* Internal api.
|
|
31
|
+
*/
|
|
32
|
+
var isProxy = (value) => !!value?.[symbolIsProxy];
|
|
33
|
+
/**
|
|
34
|
+
* True if `value` is a plain data record — either rooted at `Object.prototype` or carrying
|
|
35
|
+
* a reactive behaviour prototype (see {@link symbolReactivePrototype}).
|
|
36
|
+
*/
|
|
37
|
+
var isReactiveRecord = (value) => {
|
|
38
|
+
const proto = Object.getPrototypeOf(value);
|
|
39
|
+
return proto === Object.prototype || proto != null && !!proto[symbolReactivePrototype];
|
|
40
|
+
};
|
|
41
|
+
var isValidProxyTarget = (value) => {
|
|
42
|
+
if (value == null || value[symbolIsProxy]) return false;
|
|
43
|
+
if (Array.isArray(value)) return true;
|
|
44
|
+
return typeof value === "object" && isReactiveRecord(value);
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated
|
|
48
|
+
*/
|
|
49
|
+
var getProxySlot = (proxy) => {
|
|
50
|
+
const value = proxy[symbolIsProxy];
|
|
51
|
+
invariant(value instanceof ProxyHandlerSlot, void 0, {
|
|
52
|
+
"~LogMeta": "~LogMeta",
|
|
53
|
+
F: __dxlog_file$1,
|
|
54
|
+
L: 51,
|
|
55
|
+
S: void 0,
|
|
56
|
+
A: ["value instanceof ProxyHandlerSlot", ""]
|
|
57
|
+
});
|
|
58
|
+
return value;
|
|
59
|
+
};
|
|
60
|
+
var getProxyTarget = (proxy) => {
|
|
61
|
+
return getProxySlot(proxy).target;
|
|
62
|
+
};
|
|
63
|
+
var getProxyHandler = (proxy) => {
|
|
64
|
+
return getProxySlot(proxy).handler;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Clamp a splice range to `Array.prototype.splice` semantics for a string of the given `length`:
|
|
68
|
+
* a negative `start` counts from the end, a `start` past the end appends, and `deleteCount` is bounded
|
|
69
|
+
* to the remaining characters. Shared by both reactive handlers so the string CRDT API behaves
|
|
70
|
+
* identically across the in-memory and Automerge backends (Automerge's `splice` otherwise throws on
|
|
71
|
+
* out-of-range indices).
|
|
72
|
+
*/
|
|
73
|
+
var normalizeSpliceRange = (length, start, deleteCount) => {
|
|
74
|
+
const safeStart = start < 0 ? Math.max(length + start, 0) : Math.min(start, length);
|
|
75
|
+
return {
|
|
76
|
+
start: safeStart,
|
|
77
|
+
deleteCount: Math.max(0, Math.min(deleteCount, length - safeStart))
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Unsafe method to override id for debugging/testing and migration purposes.
|
|
82
|
+
* @deprecated
|
|
83
|
+
*/
|
|
84
|
+
var dangerouslySetProxyId = (obj, id) => {
|
|
85
|
+
getProxySlot(obj).target.id = id;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Create a reactive proxy object.
|
|
89
|
+
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
|
|
90
|
+
*
|
|
91
|
+
* @param target Object or array. Passing in array will enable array methods.
|
|
92
|
+
* @param handler ReactiveHandler instance.
|
|
93
|
+
*/
|
|
94
|
+
var createProxy = (target, handler) => {
|
|
95
|
+
const existingProxy = handler._proxyMap.get(target);
|
|
96
|
+
if (existingProxy) return existingProxy;
|
|
97
|
+
const proxy = new Proxy(target, new ProxyHandlerSlot(target, handler));
|
|
98
|
+
handler.init(target);
|
|
99
|
+
handler._proxyMap.set(target, proxy);
|
|
100
|
+
return proxy;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Passed as the handler to the Proxy constructor.
|
|
104
|
+
* Maintains a mutable slot for the actual handler.
|
|
105
|
+
*/
|
|
106
|
+
var ProxyHandlerSlot = class {
|
|
107
|
+
target;
|
|
108
|
+
_handler;
|
|
109
|
+
/**
|
|
110
|
+
* @param target Original object.
|
|
111
|
+
* @param _handler Handles intercepted operations.
|
|
112
|
+
*/
|
|
113
|
+
constructor(target, _handler) {
|
|
114
|
+
this.target = target;
|
|
115
|
+
this._handler = _handler;
|
|
116
|
+
}
|
|
117
|
+
get handler() {
|
|
118
|
+
invariant(this._handler, void 0, {
|
|
119
|
+
"~LogMeta": "~LogMeta",
|
|
120
|
+
F: __dxlog_file$1,
|
|
121
|
+
L: 127,
|
|
122
|
+
S: this,
|
|
123
|
+
A: ["this._handler", ""]
|
|
124
|
+
});
|
|
125
|
+
return this._handler;
|
|
126
|
+
}
|
|
127
|
+
setHandler(handler) {
|
|
128
|
+
this._handler = handler;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get value.
|
|
132
|
+
*/
|
|
133
|
+
get(target, prop, receiver) {
|
|
134
|
+
if (prop === symbolIsProxy) return this;
|
|
135
|
+
if (!this._handler || !this._handler.get) return Reflect.get(target, prop, receiver);
|
|
136
|
+
return this._handler.get(target, prop, receiver);
|
|
137
|
+
}
|
|
138
|
+
static {
|
|
139
|
+
for (const trap of [
|
|
140
|
+
"apply",
|
|
141
|
+
"construct",
|
|
142
|
+
"defineProperty",
|
|
143
|
+
"deleteProperty",
|
|
144
|
+
"get",
|
|
145
|
+
"getOwnPropertyDescriptor",
|
|
146
|
+
"getPrototypeOf",
|
|
147
|
+
"has",
|
|
148
|
+
"isExtensible",
|
|
149
|
+
"ownKeys",
|
|
150
|
+
"preventExtensions",
|
|
151
|
+
"set",
|
|
152
|
+
"setPrototypeOf"
|
|
153
|
+
]) {
|
|
154
|
+
if (trap === "get") continue;
|
|
155
|
+
Object.defineProperty(this.prototype, trap, {
|
|
156
|
+
enumerable: false,
|
|
157
|
+
value: function(...args) {
|
|
158
|
+
if (!this._handler || !this._handler[trap]) return Reflect[trap](...args);
|
|
159
|
+
return this._handler[trap].apply(this._handler, args);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region src/internal/common/proxy/symbols.ts
|
|
167
|
+
var EventId = Symbol.for("@dxos/live-object/EventId");
|
|
168
|
+
var ChangeId = Symbol.for("@dxos/live-object/ChangeId");
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region src/internal/common/proxy/reactive.ts
|
|
171
|
+
/**
|
|
172
|
+
* Subscribe to changes on a reactive object.
|
|
173
|
+
* @param obj - The reactive object to subscribe to.
|
|
174
|
+
* @param callback - Called when the object changes.
|
|
175
|
+
* @returns Unsubscribe function.
|
|
176
|
+
*/
|
|
177
|
+
var subscribe = (obj, callback) => {
|
|
178
|
+
if (!isProxy(obj)) return () => {};
|
|
179
|
+
const target = getProxyTarget(obj);
|
|
180
|
+
if (target && EventId in target) return target[EventId].on(callback);
|
|
181
|
+
return () => {};
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Perform mutations on a reactive object within a change context.
|
|
185
|
+
*
|
|
186
|
+
* If the object has a change handler (via ChangeId), it will be called with the callback.
|
|
187
|
+
* This allows handlers to implement features like:
|
|
188
|
+
* - Readonly enforcement (mutations only allowed within change context)
|
|
189
|
+
* - Batched notifications (single notification for all mutations in the callback)
|
|
190
|
+
* - Transaction semantics
|
|
191
|
+
*
|
|
192
|
+
* If the object doesn't have a change handler, the callback is called directly.
|
|
193
|
+
*
|
|
194
|
+
* @param obj - The reactive object to mutate.
|
|
195
|
+
* @param callback - Callback that receives a mutable view of the object.
|
|
196
|
+
*/
|
|
197
|
+
var change = (obj, callback) => {
|
|
198
|
+
const changeFn = obj[ChangeId];
|
|
199
|
+
if (changeFn) changeFn(callback);
|
|
200
|
+
else callback(obj);
|
|
201
|
+
};
|
|
202
|
+
//#endregion
|
|
203
|
+
//#region src/internal/Ref/utils.ts
|
|
204
|
+
/**
|
|
205
|
+
* Internal helper for loading ref targets in atoms.
|
|
206
|
+
* Handles the common pattern of checking for loaded target and triggering async load.
|
|
207
|
+
*/
|
|
208
|
+
var loadRefTarget = (ref, get, onTargetAvailable) => {
|
|
209
|
+
const currentTarget = ref.target;
|
|
210
|
+
if (currentTarget) return onTargetAvailable(currentTarget);
|
|
211
|
+
const unsubscribe = ref.onResolved(() => {
|
|
212
|
+
const target = ref.target;
|
|
213
|
+
if (target) get.setSelf(onTargetAvailable(target));
|
|
214
|
+
});
|
|
215
|
+
get.addFinalizer(unsubscribe);
|
|
216
|
+
ref.load().then((loadedTarget) => {
|
|
217
|
+
get.setSelf(onTargetAvailable(loadedTarget));
|
|
218
|
+
}).catch(() => {});
|
|
219
|
+
};
|
|
220
|
+
//#endregion
|
|
221
|
+
//#region src/internal/Ref/atoms.ts
|
|
222
|
+
/**
|
|
223
|
+
* Atom family for ECHO refs.
|
|
224
|
+
* Uses ref reference as key — same ref returns same atom.
|
|
225
|
+
* Subscribes to target object changes and resolves to undefined when the target is deleted.
|
|
226
|
+
*/
|
|
227
|
+
var refSimpleFamily = Atom.family((ref) => {
|
|
228
|
+
return Atom.make((get) => {
|
|
229
|
+
let unsubscribeTarget;
|
|
230
|
+
const setupSubscription = (target) => {
|
|
231
|
+
unsubscribeTarget?.();
|
|
232
|
+
unsubscribeTarget = subscribe(target, () => {
|
|
233
|
+
const deleted = !!target[ObjectDeletedId];
|
|
234
|
+
get.setSelf(deleted ? void 0 : target);
|
|
235
|
+
});
|
|
236
|
+
return !!target[ObjectDeletedId] ? void 0 : target;
|
|
237
|
+
};
|
|
238
|
+
get.addFinalizer(() => {
|
|
239
|
+
unsubscribeTarget?.();
|
|
240
|
+
});
|
|
241
|
+
return loadRefTarget(ref, get, setupSubscription);
|
|
242
|
+
}).pipe(Atom.keepAlive);
|
|
243
|
+
});
|
|
244
|
+
//#endregion
|
|
245
|
+
//#region src/internal/Ref/ref.ts
|
|
246
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Ref/ref.ts";
|
|
247
|
+
/**
|
|
248
|
+
* The `$id` and `$ref` fields for an ECHO reference schema.
|
|
249
|
+
*/
|
|
250
|
+
var JSON_SCHEMA_ECHO_REF_ID = "/schemas/echo/ref";
|
|
251
|
+
var getSchemaReference = (property) => {
|
|
252
|
+
const { $id, reference: { schema: { $ref } = {} } = {} } = property;
|
|
253
|
+
if ($id === "/schemas/echo/ref" && $ref) {
|
|
254
|
+
const parsed = DXN.tryMake($ref);
|
|
255
|
+
const typename = parsed ? DXN.getName(parsed) : void 0;
|
|
256
|
+
return typename ? { typename } : void 0;
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
var createSchemaReference = (typename) => {
|
|
260
|
+
return {
|
|
261
|
+
$id: JSON_SCHEMA_ECHO_REF_ID,
|
|
262
|
+
reference: { schema: { $ref: DXN.make(typename) } }
|
|
263
|
+
};
|
|
264
|
+
};
|
|
265
|
+
var getReferenceAst = (ast) => {
|
|
266
|
+
if (ast._tag !== "Declaration" || !ast.annotations[ReferenceAnnotationId]) return;
|
|
267
|
+
return {
|
|
268
|
+
typename: ast.annotations[ReferenceAnnotationId].typename,
|
|
269
|
+
version: ast.annotations[ReferenceAnnotationId].version
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
var RefTypeId = Symbol.for("@dxos/echo/internal/Ref");
|
|
273
|
+
/**
|
|
274
|
+
* Schema builder for references.
|
|
275
|
+
*/
|
|
276
|
+
var Ref = (input) => {
|
|
277
|
+
const schema = getStaticTypeSchema(input) ?? input;
|
|
278
|
+
assertArgument(Schema.isSchema(schema), "schema", "Must call with an instance of effect-schema");
|
|
279
|
+
const annotation = getTypeAnnotation(schema);
|
|
280
|
+
if (annotation == null) throw new Error("Reference target must be an ECHO schema.");
|
|
281
|
+
return createEchoReferenceSchema(getTypeIdentifierAnnotation(schema), annotation.typename, annotation.version);
|
|
282
|
+
};
|
|
283
|
+
Ref.isRef = (obj) => {
|
|
284
|
+
return obj != null && typeof obj === "object" && RefTypeId in obj;
|
|
285
|
+
};
|
|
286
|
+
Ref.hasEntityId = (id) => (ref) => {
|
|
287
|
+
const uri = EID.tryParse(ref.uri);
|
|
288
|
+
return uri !== void 0 && EID.isLocal(uri) && EID.getEntityId(uri) === id;
|
|
289
|
+
};
|
|
290
|
+
Ref.isRefSchema = (schema) => {
|
|
291
|
+
return Ref.isRefSchemaAST(schema.ast);
|
|
292
|
+
};
|
|
293
|
+
Ref.isRefSchemaAST = (ast) => {
|
|
294
|
+
return SchemaAST.getAnnotation(ast, ReferenceAnnotationId).pipe(Option.isSome);
|
|
295
|
+
};
|
|
296
|
+
Ref.make = (obj) => {
|
|
297
|
+
if (typeof obj !== "object" || obj === null) throw new TypeError("Expected: ECHO object.");
|
|
298
|
+
const id = obj.id;
|
|
299
|
+
invariant(EntityId.isValid(id), "Invalid object ID", {
|
|
300
|
+
"~LogMeta": "~LogMeta",
|
|
301
|
+
F: __dxlog_file,
|
|
302
|
+
L: 287,
|
|
303
|
+
S: void 0,
|
|
304
|
+
A: ["EntityId.isValid(id)", "'Invalid object ID'"]
|
|
305
|
+
});
|
|
306
|
+
return new RefImpl(EID.make({ entityId: id }), obj);
|
|
307
|
+
};
|
|
308
|
+
Ref.fromURI = (uri) => {
|
|
309
|
+
assertArgument(typeof uri === "string", "uri", "Expected URI string");
|
|
310
|
+
return new RefImpl(uri);
|
|
311
|
+
};
|
|
312
|
+
/**
|
|
313
|
+
* @internal
|
|
314
|
+
*/
|
|
315
|
+
var createEchoReferenceSchema = (echoUri, typename, version) => {
|
|
316
|
+
if (!echoUri && !typename) throw new TypeError("Either echoUri or typename must be provided.");
|
|
317
|
+
const referenceInfo = {
|
|
318
|
+
schema: { $ref: echoUri ?? DXN.make(typename) },
|
|
319
|
+
schemaVersion: version
|
|
320
|
+
};
|
|
321
|
+
return Schema.declare([], {
|
|
322
|
+
encode: () => {
|
|
323
|
+
return (value) => Effect.gen(function* () {
|
|
324
|
+
if (Ref.isRef(value)) return EncodedReference.fromURI(value.uri);
|
|
325
|
+
else if (EncodedReference.isEncodedReference(value)) return value;
|
|
326
|
+
throw new Error("Invalid reference");
|
|
327
|
+
});
|
|
328
|
+
},
|
|
329
|
+
decode: () => {
|
|
330
|
+
return (value) => Effect.gen(function* () {
|
|
331
|
+
const dbService = yield* Effect.serviceOption(Service);
|
|
332
|
+
if (Ref.isRef(value)) if (Option.isSome(dbService)) return dbService.value.db.makeRef(value.uri);
|
|
333
|
+
else return value;
|
|
334
|
+
if (!EncodedReference.isEncodedReference(value)) return yield* Effect.fail(new ParseResult.Unexpected(value, "reference"));
|
|
335
|
+
if (Option.isSome(dbService)) return dbService.value.db.makeRef(EncodedReference.toURI(value));
|
|
336
|
+
else return Ref.fromURI(EncodedReference.toURI(value));
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
}, {
|
|
340
|
+
jsonSchema: {
|
|
341
|
+
$id: JSON_SCHEMA_ECHO_REF_ID,
|
|
342
|
+
$ref: JSON_SCHEMA_ECHO_REF_ID,
|
|
343
|
+
reference: referenceInfo
|
|
344
|
+
},
|
|
345
|
+
[ReferenceAnnotationId]: {
|
|
346
|
+
typename: typename ?? "",
|
|
347
|
+
version
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
};
|
|
351
|
+
/**
|
|
352
|
+
* A settled {@link RefResolverRequest} with a fixed `state` and `result`, used by resolvers
|
|
353
|
+
* whose backends are fully synchronous (e.g. {@link StaticRefResolver}).
|
|
354
|
+
*/
|
|
355
|
+
var makeSettledRequest = (state, result) => ({
|
|
356
|
+
state,
|
|
357
|
+
stateChanged: new Event(),
|
|
358
|
+
getResult: () => state === "ready" ? result : void 0,
|
|
359
|
+
wait: async () => state === "ready" ? result : void 0,
|
|
360
|
+
abort: () => {}
|
|
361
|
+
});
|
|
362
|
+
var RefImpl = class RefImpl {
|
|
363
|
+
[RefTypeId] = refVariance;
|
|
364
|
+
#uri;
|
|
365
|
+
/**
|
|
366
|
+
* Target is set when the reference is created from a specific object.
|
|
367
|
+
* In this case, the target might not be in the database.
|
|
368
|
+
*/
|
|
369
|
+
#target = void 0;
|
|
370
|
+
#resolver = void 0;
|
|
371
|
+
#resolved = new Event();
|
|
372
|
+
/**
|
|
373
|
+
* Callback to issue a reactive notification when object is resolved.
|
|
374
|
+
*/
|
|
375
|
+
#resolverCallback = () => {
|
|
376
|
+
this.#resolved.emit();
|
|
377
|
+
};
|
|
378
|
+
constructor(uri, target) {
|
|
379
|
+
this.#uri = uri;
|
|
380
|
+
this.#target = target;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* @inheritdoc
|
|
384
|
+
*/
|
|
385
|
+
get uri() {
|
|
386
|
+
return this.#uri;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* @inheritdoc
|
|
390
|
+
*/
|
|
391
|
+
get target() {
|
|
392
|
+
if (this.#target) return this.#target;
|
|
393
|
+
invariant(this.#resolver, "Resolver is not set", {
|
|
394
|
+
"~LogMeta": "~LogMeta",
|
|
395
|
+
F: __dxlog_file,
|
|
396
|
+
L: 534,
|
|
397
|
+
S: this,
|
|
398
|
+
A: ["this.#resolver", "'Resolver is not set'"]
|
|
399
|
+
});
|
|
400
|
+
return this.#resolver.resolveSync(this.#uri, true, this.#resolverCallback);
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* @inheritdoc
|
|
404
|
+
*/
|
|
405
|
+
get isAvailable() {
|
|
406
|
+
return this.#target !== void 0 || this.#resolver !== void 0;
|
|
407
|
+
}
|
|
408
|
+
get atom() {
|
|
409
|
+
return refSimpleFamily(this);
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* @inheritdoc
|
|
413
|
+
*/
|
|
414
|
+
async load() {
|
|
415
|
+
if (this.#target) return this.#target;
|
|
416
|
+
invariant(this.#resolver, "Resolver is not set", {
|
|
417
|
+
"~LogMeta": "~LogMeta",
|
|
418
|
+
F: __dxlog_file,
|
|
419
|
+
L: 556,
|
|
420
|
+
S: this,
|
|
421
|
+
A: ["this.#resolver", "'Resolver is not set'"]
|
|
422
|
+
});
|
|
423
|
+
const obj = await this.#resolver.resolveLegacy(this.#uri);
|
|
424
|
+
if (obj == null) throw new Error("Object not found");
|
|
425
|
+
return obj;
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* @inheritdoc
|
|
429
|
+
*/
|
|
430
|
+
async tryLoad() {
|
|
431
|
+
if (this.#target) return this.#target;
|
|
432
|
+
invariant(this.#resolver, "Resolver is not set", {
|
|
433
|
+
"~LogMeta": "~LogMeta",
|
|
434
|
+
F: __dxlog_file,
|
|
435
|
+
L: 571,
|
|
436
|
+
S: this,
|
|
437
|
+
A: ["this.#resolver", "'Resolver is not set'"]
|
|
438
|
+
});
|
|
439
|
+
return await this.#resolver.resolveLegacy(this.#uri);
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* @inheritdoc
|
|
443
|
+
*/
|
|
444
|
+
onResolved(callback) {
|
|
445
|
+
return this.#resolved.on(callback);
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Do not inline the target object in the reference.
|
|
449
|
+
* Makes .target unavailable unless the reference is connected to a database context.
|
|
450
|
+
* Clones the reference object.
|
|
451
|
+
*/
|
|
452
|
+
noInline() {
|
|
453
|
+
const ref = new RefImpl(this.#uri, void 0);
|
|
454
|
+
ref.#resolver = this.#resolver;
|
|
455
|
+
return ref;
|
|
456
|
+
}
|
|
457
|
+
encode() {
|
|
458
|
+
return {
|
|
459
|
+
"/": this.#uri,
|
|
460
|
+
...this.#target ? { target: this.#target } : {}
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Serializes the reference to a JSON object.
|
|
465
|
+
* The serialization format is compatible with the IPLD-style encoded references.
|
|
466
|
+
* When a reference has a saved target (i.e. the target or object holding the reference is not in the database),
|
|
467
|
+
* the target is included in the serialized object.
|
|
468
|
+
*/
|
|
469
|
+
toJSON() {
|
|
470
|
+
return this.encode();
|
|
471
|
+
}
|
|
472
|
+
toString() {
|
|
473
|
+
if (this.#target) return `Ref(${this.#target.toString()})`;
|
|
474
|
+
return `Ref(${this.#uri.toString()})`;
|
|
475
|
+
}
|
|
476
|
+
[inspectCustom] = (depth, options, inspect) => {
|
|
477
|
+
return this.toString();
|
|
478
|
+
};
|
|
479
|
+
/**
|
|
480
|
+
* Effect Hash trait. Required for MutableHashMap-based caches (e.g., Atom.family)
|
|
481
|
+
* to deduplicate Ref instances that point to the same object.
|
|
482
|
+
* ECHO proxies return new RefImpl instances on every property access,
|
|
483
|
+
* so without this, each access would create a separate cache entry.
|
|
484
|
+
*/
|
|
485
|
+
[Hash.symbol]() {
|
|
486
|
+
return Hash.hash(this.#uri.toString());
|
|
487
|
+
}
|
|
488
|
+
/** Effect Equal trait. See {@link Hash.symbol} for rationale. */
|
|
489
|
+
[Equal.symbol](that) {
|
|
490
|
+
return that instanceof RefImpl && this.#uri === that.uri;
|
|
491
|
+
}
|
|
492
|
+
pipe() {
|
|
493
|
+
return Pipeable.pipeArguments(this, arguments);
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* @internal
|
|
497
|
+
*/
|
|
498
|
+
_setResolver(resolver) {
|
|
499
|
+
this.#resolver = resolver;
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* @internal
|
|
503
|
+
*/
|
|
504
|
+
_getSavedTarget() {
|
|
505
|
+
return this.#target;
|
|
506
|
+
}
|
|
507
|
+
};
|
|
508
|
+
/**
|
|
509
|
+
* Internal API for setting the reference resolver.
|
|
510
|
+
*/
|
|
511
|
+
var setRefResolver = (ref, resolver) => {
|
|
512
|
+
invariant(ref instanceof RefImpl, "Ref is not an instance of RefImpl", {
|
|
513
|
+
"~LogMeta": "~LogMeta",
|
|
514
|
+
F: __dxlog_file,
|
|
515
|
+
L: 661,
|
|
516
|
+
S: void 0,
|
|
517
|
+
A: ["ref instanceof RefImpl", "'Ref is not an instance of RefImpl'"]
|
|
518
|
+
});
|
|
519
|
+
ref._setResolver(resolver);
|
|
520
|
+
};
|
|
521
|
+
/**
|
|
522
|
+
* Internal API for getting the saved target on a reference.
|
|
523
|
+
*/
|
|
524
|
+
var getRefSavedTarget = (ref) => {
|
|
525
|
+
invariant(ref instanceof RefImpl, "Ref is not an instance of RefImpl", {
|
|
526
|
+
"~LogMeta": "~LogMeta",
|
|
527
|
+
F: __dxlog_file,
|
|
528
|
+
L: 669,
|
|
529
|
+
S: void 0,
|
|
530
|
+
A: ["ref instanceof RefImpl", "'Ref is not an instance of RefImpl'"]
|
|
531
|
+
});
|
|
532
|
+
return ref._getSavedTarget();
|
|
533
|
+
};
|
|
534
|
+
var refVariance = { _T: null };
|
|
535
|
+
var refFromEncodedReference = (encodedReference, resolver) => {
|
|
536
|
+
const ref = new RefImpl(EncodedReference.toURI(encodedReference));
|
|
537
|
+
if (resolver) setRefResolver(ref, resolver);
|
|
538
|
+
return ref;
|
|
539
|
+
};
|
|
540
|
+
var StaticRefResolver = class {
|
|
541
|
+
objects = /* @__PURE__ */ new Map();
|
|
542
|
+
schemas = /* @__PURE__ */ new Map();
|
|
543
|
+
addObject(obj) {
|
|
544
|
+
this.objects.set(obj.id, obj);
|
|
545
|
+
return this;
|
|
546
|
+
}
|
|
547
|
+
addSchema(input) {
|
|
548
|
+
const schema = getStaticTypeSchema(input);
|
|
549
|
+
invariant(schema, "Type entity is missing its source schema", {
|
|
550
|
+
"~LogMeta": "~LogMeta",
|
|
551
|
+
F: __dxlog_file,
|
|
552
|
+
L: 701,
|
|
553
|
+
S: this,
|
|
554
|
+
A: ["schema", "'Type entity is missing its source schema'"]
|
|
555
|
+
});
|
|
556
|
+
const uri = getSchemaURI(schema);
|
|
557
|
+
invariant(uri, "Schema has no URI", {
|
|
558
|
+
"~LogMeta": "~LogMeta",
|
|
559
|
+
F: __dxlog_file,
|
|
560
|
+
L: 703,
|
|
561
|
+
S: this,
|
|
562
|
+
A: ["uri", "'Schema has no URI'"]
|
|
563
|
+
});
|
|
564
|
+
this.schemas.set(uri, schema);
|
|
565
|
+
return this;
|
|
566
|
+
}
|
|
567
|
+
resolve(uri, _options) {
|
|
568
|
+
const obj = this.#lookup(uri);
|
|
569
|
+
return makeSettledRequest(obj ? "ready" : "unavailable", obj);
|
|
570
|
+
}
|
|
571
|
+
resolveSync(uri, _load, _onLoad) {
|
|
572
|
+
return this.#lookup(uri);
|
|
573
|
+
}
|
|
574
|
+
async resolveLegacy(uri) {
|
|
575
|
+
return this.#lookup(uri);
|
|
576
|
+
}
|
|
577
|
+
async resolveSchema(uri) {
|
|
578
|
+
return this.schemas.get(uri);
|
|
579
|
+
}
|
|
580
|
+
#lookup(uri) {
|
|
581
|
+
const echoUri = EID.tryParse(uri);
|
|
582
|
+
const id = echoUri ? EID.getEntityId(echoUri) : void 0;
|
|
583
|
+
if (id == null) return;
|
|
584
|
+
return this.objects.get(id);
|
|
585
|
+
}
|
|
586
|
+
};
|
|
587
|
+
//#endregion
|
|
588
|
+
export { getProxyTarget as C, normalizeSpliceRange as D, isValidProxyTarget as E, symbolIsProxy as O, getProxySlot as S, isReactiveRecord as T, ChangeId as _, StaticRefResolver as a, dangerouslySetProxyId as b, getRefSavedTarget as c, makeSettledRequest as d, refFromEncodedReference as f, subscribe as g, change as h, RefTypeId as i, symbolReactivePrototype as k, getReferenceAst as l, loadRefTarget as m, Ref as n, createEchoReferenceSchema as o, setRefResolver as p, RefImpl as r, createSchemaReference as s, JSON_SCHEMA_ECHO_REF_ID as t, getSchemaReference as u, EventId as v, isProxy as w, getProxyHandler as x, createProxy as y };
|
|
589
|
+
|
|
590
|
+
//# sourceMappingURL=chunk-ref.mjs.map
|