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