@dxos/echo 0.8.4-staging.ac66bdf99f → 0.9.1-main.c7dcc2e112

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 (444) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +7 -7
  3. package/dist/lib/neutral/Annotation.mjs +45 -6
  4. package/dist/lib/neutral/Database.mjs +10 -17
  5. package/dist/lib/neutral/Entity.mjs +35 -20
  6. package/dist/lib/neutral/Err.mjs +3 -3
  7. package/dist/lib/neutral/Feed.mjs +23 -19
  8. package/dist/lib/neutral/Filter.mjs +13 -15
  9. package/dist/lib/neutral/Format.mjs +23 -3
  10. package/dist/lib/neutral/JsonSchema.mjs +7 -8
  11. package/dist/lib/neutral/Key.mjs +9 -5
  12. package/dist/lib/neutral/Migration.mjs +11 -10
  13. package/dist/lib/neutral/Obj.mjs +33 -20
  14. package/dist/lib/neutral/Order.mjs +7 -3
  15. package/dist/lib/neutral/Query.mjs +17 -17
  16. package/dist/lib/neutral/QueryResult.mjs +1 -1
  17. package/dist/lib/neutral/Ref.mjs +10 -9
  18. package/dist/lib/neutral/Registry.mjs +14 -0
  19. package/dist/lib/neutral/Relation.mjs +28 -25
  20. package/dist/lib/neutral/Scope.mjs +12 -0
  21. package/dist/lib/neutral/Tag.mjs +17 -14
  22. package/dist/lib/neutral/Type.mjs +54 -26
  23. package/dist/lib/neutral/{chunk-OMUPQMLR.mjs → chunk-35INCYOE.mjs} +1 -1
  24. package/dist/lib/neutral/chunk-35INCYOE.mjs.map +7 -0
  25. package/dist/lib/neutral/{chunk-4OIBYSXE.mjs → chunk-3JXQUMUI.mjs} +78 -32
  26. package/dist/lib/neutral/chunk-3JXQUMUI.mjs.map +7 -0
  27. package/dist/lib/neutral/{chunk-G3IQMKF7.mjs → chunk-4TPQZPLY.mjs} +130 -119
  28. package/dist/lib/neutral/chunk-4TPQZPLY.mjs.map +7 -0
  29. package/dist/lib/neutral/{chunk-TU3GW67D.mjs → chunk-5GAIWRQB.mjs} +40 -40
  30. package/dist/lib/neutral/chunk-5GAIWRQB.mjs.map +7 -0
  31. package/dist/lib/neutral/{chunk-B4BASU6W.mjs → chunk-6CEISA3V.mjs} +93 -76
  32. package/dist/lib/neutral/chunk-6CEISA3V.mjs.map +7 -0
  33. package/dist/lib/neutral/{chunk-GZQTCRJB.mjs → chunk-6M2Z6WBH.mjs} +22 -2
  34. package/dist/lib/neutral/chunk-6M2Z6WBH.mjs.map +7 -0
  35. package/dist/lib/neutral/{chunk-ANHVGJI4.mjs → chunk-7LOUAPYZ.mjs} +9 -5
  36. package/dist/lib/neutral/chunk-7LOUAPYZ.mjs.map +7 -0
  37. package/dist/lib/neutral/{chunk-WAK4DMFV.mjs → chunk-A53NTBHE.mjs} +12 -7
  38. package/dist/lib/neutral/chunk-A53NTBHE.mjs.map +7 -0
  39. package/dist/lib/neutral/{chunk-EAMSSLZC.mjs → chunk-AFANXSGV.mjs} +83 -46
  40. package/dist/lib/neutral/chunk-AFANXSGV.mjs.map +7 -0
  41. package/dist/lib/neutral/{chunk-UBEZSGXY.mjs → chunk-BBFJWWAV.mjs} +6 -6
  42. package/dist/lib/neutral/chunk-BBFJWWAV.mjs.map +7 -0
  43. package/dist/lib/neutral/chunk-E7IOTOZD.mjs +108 -0
  44. package/dist/lib/neutral/chunk-E7IOTOZD.mjs.map +7 -0
  45. package/dist/lib/neutral/{chunk-UI6MWK5W.mjs → chunk-EVK6XBXO.mjs} +16 -2
  46. package/dist/lib/neutral/chunk-EVK6XBXO.mjs.map +7 -0
  47. package/dist/lib/neutral/chunk-HGWQR5KH.mjs +259 -0
  48. package/dist/lib/neutral/chunk-HGWQR5KH.mjs.map +7 -0
  49. package/dist/lib/neutral/chunk-JZ6LFQU5.mjs +109 -0
  50. package/dist/lib/neutral/chunk-JZ6LFQU5.mjs.map +7 -0
  51. package/dist/lib/neutral/{chunk-JUXPFOEI.mjs → chunk-K3S7D5PR.mjs} +48 -88
  52. package/dist/lib/neutral/chunk-K3S7D5PR.mjs.map +7 -0
  53. package/dist/lib/neutral/{chunk-OS35K56T.mjs → chunk-L3OBWBV2.mjs} +3 -3
  54. package/dist/lib/neutral/{chunk-OS35K56T.mjs.map → chunk-L3OBWBV2.mjs.map} +2 -2
  55. package/dist/lib/neutral/{chunk-V36VO5SS.mjs → chunk-NOL7O3BL.mjs} +32 -40
  56. package/dist/lib/neutral/chunk-NOL7O3BL.mjs.map +7 -0
  57. package/dist/lib/neutral/{chunk-TBKX6JQO.mjs → chunk-O6BH7EPN.mjs} +30 -3
  58. package/dist/lib/neutral/chunk-O6BH7EPN.mjs.map +7 -0
  59. package/dist/lib/neutral/{chunk-7RO7CPBZ.mjs → chunk-PLDMJJJC.mjs} +2 -2
  60. package/dist/lib/neutral/{chunk-HBUZJNZO.mjs → chunk-SZ5WB6HF.mjs} +94 -99
  61. package/dist/lib/neutral/chunk-SZ5WB6HF.mjs.map +7 -0
  62. package/dist/lib/neutral/{chunk-BVOFLCVF.mjs → chunk-TF5BSLF6.mjs} +9 -6
  63. package/dist/lib/neutral/chunk-TF5BSLF6.mjs.map +7 -0
  64. package/dist/lib/neutral/{chunk-DQYLD2RB.mjs → chunk-TFEWTY5A.mjs} +155 -129
  65. package/dist/lib/neutral/chunk-TFEWTY5A.mjs.map +7 -0
  66. package/dist/lib/neutral/{chunk-MOR5ERFM.mjs → chunk-VQYL2OQF.mjs} +771 -1252
  67. package/dist/lib/neutral/chunk-VQYL2OQF.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-WISOH2XH.mjs +36 -0
  69. package/dist/lib/neutral/chunk-WISOH2XH.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-WU3GIANS.mjs +31 -0
  71. package/dist/lib/neutral/chunk-WU3GIANS.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-WZ32BF53.mjs +702 -0
  73. package/dist/lib/neutral/chunk-WZ32BF53.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-X3NUUON4.mjs +184 -0
  75. package/dist/lib/neutral/chunk-X3NUUON4.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-Z3WMRRAZ.mjs +168 -0
  77. package/dist/lib/neutral/chunk-Z3WMRRAZ.mjs.map +7 -0
  78. package/dist/lib/neutral/index.mjs +47 -41
  79. package/dist/lib/neutral/internal/index.mjs +157 -72
  80. package/dist/lib/neutral/meta.json +1 -1
  81. package/dist/lib/neutral/testing/index.mjs +261 -178
  82. package/dist/lib/neutral/testing/index.mjs.map +4 -4
  83. package/dist/types/src/Annotation.d.ts +108 -4
  84. package/dist/types/src/Annotation.d.ts.map +1 -1
  85. package/dist/types/src/Annotation.test.d.ts +2 -0
  86. package/dist/types/src/Annotation.test.d.ts.map +1 -0
  87. package/dist/types/src/Collection.d.ts +2 -3
  88. package/dist/types/src/Collection.d.ts.map +1 -1
  89. package/dist/types/src/Database.d.ts +78 -49
  90. package/dist/types/src/Database.d.ts.map +1 -1
  91. package/dist/types/src/Dataset.d.ts +16 -6
  92. package/dist/types/src/Dataset.d.ts.map +1 -1
  93. package/dist/types/src/Entity.d.ts +103 -28
  94. package/dist/types/src/Entity.d.ts.map +1 -1
  95. package/dist/types/src/Err.d.ts +27 -27
  96. package/dist/types/src/Err.d.ts.map +1 -1
  97. package/dist/types/src/Feed.d.ts +69 -19
  98. package/dist/types/src/Feed.d.ts.map +1 -1
  99. package/dist/types/src/Filter.d.ts +38 -12
  100. package/dist/types/src/Filter.d.ts.map +1 -1
  101. package/dist/types/src/Format.d.ts +0 -2
  102. package/dist/types/src/Format.d.ts.map +1 -1
  103. package/dist/types/src/Hypergraph.d.ts +14 -9
  104. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  105. package/dist/types/src/Json.d.ts +33 -0
  106. package/dist/types/src/Json.d.ts.map +1 -0
  107. package/dist/types/src/Json.test.d.ts +2 -0
  108. package/dist/types/src/Json.test.d.ts.map +1 -0
  109. package/dist/types/src/JsonSchema.d.ts +2 -2
  110. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  111. package/dist/types/src/Key.d.ts +1 -1
  112. package/dist/types/src/Key.d.ts.map +1 -1
  113. package/dist/types/src/Migration.d.ts +26 -11
  114. package/dist/types/src/Migration.d.ts.map +1 -1
  115. package/dist/types/src/Obj.d.ts +106 -61
  116. package/dist/types/src/Obj.d.ts.map +1 -1
  117. package/dist/types/src/Order.d.ts +10 -0
  118. package/dist/types/src/Order.d.ts.map +1 -1
  119. package/dist/types/src/Query.d.ts +34 -12
  120. package/dist/types/src/Query.d.ts.map +1 -1
  121. package/dist/types/src/QueryResult.d.ts +21 -0
  122. package/dist/types/src/QueryResult.d.ts.map +1 -1
  123. package/dist/types/src/Ref.d.ts +15 -7
  124. package/dist/types/src/Ref.d.ts.map +1 -1
  125. package/dist/types/src/Registry.d.ts +131 -0
  126. package/dist/types/src/Registry.d.ts.map +1 -0
  127. package/dist/types/src/Relation.d.ts +73 -41
  128. package/dist/types/src/Relation.d.ts.map +1 -1
  129. package/dist/types/src/Scope.d.ts +35 -0
  130. package/dist/types/src/Scope.d.ts.map +1 -0
  131. package/dist/types/src/Tag.d.ts +21 -5
  132. package/dist/types/src/Tag.d.ts.map +1 -1
  133. package/dist/types/src/Type.d.ts +366 -95
  134. package/dist/types/src/Type.d.ts.map +1 -1
  135. package/dist/types/src/View.d.ts +9 -12
  136. package/dist/types/src/View.d.ts.map +1 -1
  137. package/dist/types/src/exemplars.test.d.ts +2 -0
  138. package/dist/types/src/exemplars.test.d.ts.map +1 -0
  139. package/dist/types/src/index.d.ts +4 -3
  140. package/dist/types/src/index.d.ts.map +1 -1
  141. package/dist/types/src/internal/Annotation/annotations.d.ts +120 -38
  142. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -1
  143. package/dist/types/src/internal/Annotation/dictionary.d.ts +24 -0
  144. package/dist/types/src/internal/Annotation/dictionary.d.ts.map +1 -0
  145. package/dist/types/src/internal/Annotation/entity-dictionary.d.ts +14 -0
  146. package/dist/types/src/internal/Annotation/entity-dictionary.d.ts.map +1 -0
  147. package/dist/types/src/internal/Annotation/index.d.ts +4 -2
  148. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -1
  149. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -1
  150. package/dist/types/src/internal/Annotation/util.d.ts +14 -5
  151. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -1
  152. package/dist/types/src/internal/Entity/api.d.ts +17 -3
  153. package/dist/types/src/internal/Entity/api.d.ts.map +1 -1
  154. package/dist/types/src/internal/Entity/entity.d.ts +72 -8
  155. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -1
  156. package/dist/types/src/internal/Entity/guard.d.ts +10 -0
  157. package/dist/types/src/internal/Entity/guard.d.ts.map +1 -0
  158. package/dist/types/src/internal/Entity/index.d.ts +2 -0
  159. package/dist/types/src/internal/Entity/index.d.ts.map +1 -1
  160. package/dist/types/src/internal/Entity/model.d.ts +21 -17
  161. package/dist/types/src/internal/Entity/model.d.ts.map +1 -1
  162. package/dist/types/src/internal/Entity/object.d.ts +3 -3
  163. package/dist/types/src/internal/Entity/object.d.ts.map +1 -1
  164. package/dist/types/src/internal/Entity/relation.d.ts +30 -7
  165. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -1
  166. package/dist/types/src/internal/Entity/type-kind.d.ts +24 -0
  167. package/dist/types/src/internal/Entity/type-kind.d.ts.map +1 -0
  168. package/dist/types/src/internal/Entity/type-uri.d.ts +24 -0
  169. package/dist/types/src/internal/Entity/type-uri.d.ts.map +1 -0
  170. package/dist/types/src/internal/Entity/version.d.ts.map +1 -1
  171. package/dist/types/src/internal/Format/date.d.ts.map +1 -1
  172. package/dist/types/src/internal/Format/format.d.ts +3 -2
  173. package/dist/types/src/internal/Format/format.d.ts.map +1 -1
  174. package/dist/types/src/internal/Format/index.d.ts +2 -2
  175. package/dist/types/src/internal/Format/index.d.ts.map +1 -1
  176. package/dist/types/src/internal/Format/number.d.ts.map +1 -1
  177. package/dist/types/src/internal/Format/object.d.ts +3 -1
  178. package/dist/types/src/internal/Format/object.d.ts.map +1 -1
  179. package/dist/types/src/internal/Format/types.d.ts.map +1 -1
  180. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -1
  181. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +34 -34
  182. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -1
  183. package/dist/types/src/internal/JsonSchema/json-schema.d.ts +3 -2
  184. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -1
  185. package/dist/types/src/internal/Obj/atoms.d.ts +43 -0
  186. package/dist/types/src/internal/Obj/atoms.d.ts.map +1 -0
  187. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -1
  188. package/dist/types/src/internal/Obj/common.d.ts.map +1 -1
  189. package/dist/types/src/internal/Obj/create-object.d.ts +12 -12
  190. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -1
  191. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -1
  192. package/dist/types/src/internal/Obj/index.d.ts +1 -1
  193. package/dist/types/src/internal/Obj/index.d.ts.map +1 -1
  194. package/dist/types/src/internal/Obj/json-serializer.d.ts +8 -8
  195. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -1
  196. package/dist/types/src/internal/Obj/set-value.d.ts +1 -1
  197. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -1
  198. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -1
  199. package/dist/types/src/internal/Obj/typed-object.d.ts +1 -1
  200. package/dist/types/src/internal/Query/index.d.ts +2 -0
  201. package/dist/types/src/internal/Query/index.d.ts.map +1 -0
  202. package/dist/types/src/internal/{Query.d.ts → Query/pretty.d.ts} +1 -1
  203. package/dist/types/src/internal/Query/pretty.d.ts.map +1 -0
  204. package/dist/types/src/internal/Ref/atoms.d.ts +10 -0
  205. package/dist/types/src/internal/Ref/atoms.d.ts.map +1 -0
  206. package/dist/types/src/internal/Ref/index.d.ts +1 -0
  207. package/dist/types/src/internal/Ref/index.d.ts.map +1 -1
  208. package/dist/types/src/internal/Ref/ref-array.d.ts +2 -2
  209. package/dist/types/src/internal/Ref/ref.d.ts +114 -19
  210. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -1
  211. package/dist/types/src/internal/Ref/strong-deps.d.ts +35 -0
  212. package/dist/types/src/internal/Ref/strong-deps.d.ts.map +1 -0
  213. package/dist/types/src/internal/Ref/utils.d.ts +8 -0
  214. package/dist/types/src/internal/Ref/utils.d.ts.map +1 -0
  215. package/dist/types/src/internal/Type/compose.d.ts.map +1 -1
  216. package/dist/types/src/internal/Type/index.d.ts +1 -2
  217. package/dist/types/src/internal/Type/index.d.ts.map +1 -1
  218. package/dist/types/src/internal/Type/manipulation.d.ts +0 -1
  219. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -1
  220. package/dist/types/src/internal/Type/type-schema.d.ts +52 -0
  221. package/dist/types/src/internal/Type/type-schema.d.ts.map +1 -0
  222. package/dist/types/src/internal/common/api/meta.d.ts +14 -11
  223. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -1
  224. package/dist/types/src/internal/common/proxy/change-context.d.ts +1 -1
  225. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -1
  226. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -1
  227. package/dist/types/src/internal/common/proxy/errors.d.ts +1 -1
  228. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -1
  229. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -1
  230. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -1
  231. package/dist/types/src/internal/common/proxy/make-object.d.ts +11 -5
  232. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -1
  233. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -1
  234. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -1
  235. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +1 -1
  236. package/dist/types/src/internal/common/proxy/reactive.d.ts +1 -1
  237. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -1
  238. package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
  239. package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
  240. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -1
  241. package/dist/types/src/internal/common/proxy/typed-handler.d.ts +18 -2
  242. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -1
  243. package/dist/types/src/internal/common/types/base.d.ts +4 -4
  244. package/dist/types/src/internal/common/types/base.d.ts.map +1 -1
  245. package/dist/types/src/internal/common/types/entity.d.ts +62 -5
  246. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -1
  247. package/dist/types/src/internal/common/types/index.d.ts +1 -1
  248. package/dist/types/src/internal/common/types/index.d.ts.map +1 -1
  249. package/dist/types/src/internal/common/types/meta.d.ts +33 -12
  250. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -1
  251. package/dist/types/src/internal/common/types/model-symbols.d.ts +15 -4
  252. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -1
  253. package/dist/types/src/internal/common/types/typename.d.ts +7 -0
  254. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -1
  255. package/dist/types/src/internal/common/types/version.d.ts +1 -1
  256. package/dist/types/src/internal/common/types/well-known-types.d.ts +11 -0
  257. package/dist/types/src/internal/common/types/well-known-types.d.ts.map +1 -0
  258. package/dist/types/src/internal/index.d.ts +2 -2
  259. package/dist/types/src/internal/index.d.ts.map +1 -1
  260. package/dist/types/src/testing/index.d.ts +1 -0
  261. package/dist/types/src/testing/index.d.ts.map +1 -1
  262. package/dist/types/src/testing/registry.d.ts +9 -0
  263. package/dist/types/src/testing/registry.d.ts.map +1 -0
  264. package/dist/types/src/testing/test-data.d.ts +8 -8
  265. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  266. package/dist/types/src/testing/test-schema.d.ts +83 -89
  267. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  268. package/dist/types/src/testing/util.d.ts +5 -3
  269. package/dist/types/src/testing/util.d.ts.map +1 -1
  270. package/dist/types/tsconfig.tsbuildinfo +1 -1
  271. package/package.json +26 -24
  272. package/src/Annotation.test.ts +439 -0
  273. package/src/Annotation.ts +163 -4
  274. package/src/Collection.ts +5 -9
  275. package/src/Database.ts +126 -101
  276. package/src/Dataset.ts +10 -2
  277. package/src/Entity.test.ts +116 -6
  278. package/src/Entity.ts +136 -32
  279. package/src/Err.ts +4 -4
  280. package/src/Feed.ts +95 -44
  281. package/src/Filter.ts +70 -40
  282. package/src/Format.ts +0 -4
  283. package/src/Hypergraph.ts +14 -9
  284. package/src/Json.test.ts +175 -0
  285. package/src/Json.ts +103 -0
  286. package/src/Key.ts +1 -1
  287. package/src/Migration.ts +39 -19
  288. package/src/Obj.test.ts +122 -20
  289. package/src/Obj.ts +170 -91
  290. package/src/Order.ts +22 -0
  291. package/src/Query.test.ts +183 -154
  292. package/src/Query.ts +172 -85
  293. package/src/QueryResult.ts +26 -0
  294. package/src/Ref.ts +22 -4
  295. package/src/Registry.ts +155 -0
  296. package/src/Relation.test.ts +10 -10
  297. package/src/Relation.ts +116 -69
  298. package/src/Scope.ts +50 -0
  299. package/src/Tag.md +88 -0
  300. package/src/Tag.ts +50 -6
  301. package/src/Type.test.ts +223 -18
  302. package/src/Type.ts +623 -131
  303. package/src/View.ts +14 -23
  304. package/src/exemplars.test.ts +21 -0
  305. package/src/index.ts +4 -4
  306. package/src/internal/Annotation/annotations.test.ts +31 -11
  307. package/src/internal/Annotation/annotations.ts +199 -111
  308. package/src/internal/Annotation/dictionary.ts +47 -0
  309. package/src/internal/Annotation/entity-dictionary.ts +74 -0
  310. package/src/internal/Annotation/index.ts +4 -2
  311. package/src/internal/Annotation/util.ts +17 -8
  312. package/src/internal/Entity/api.ts +54 -7
  313. package/src/internal/Entity/entity.ts +196 -47
  314. package/src/internal/Entity/guard.ts +26 -0
  315. package/src/internal/Entity/index.ts +2 -0
  316. package/src/internal/Entity/model.ts +38 -28
  317. package/src/internal/Entity/object.ts +21 -5
  318. package/src/internal/Entity/relation.ts +68 -34
  319. package/src/internal/Entity/type-kind.ts +75 -0
  320. package/src/internal/Entity/type-uri.ts +92 -0
  321. package/src/internal/Entity/util.ts +9 -9
  322. package/src/internal/Format/date.ts +0 -4
  323. package/src/internal/Format/format.test.ts +21 -0
  324. package/src/internal/Format/index.ts +2 -3
  325. package/src/internal/Format/object.ts +21 -4
  326. package/src/internal/Format/types.ts +1 -1
  327. package/src/internal/JsonSchema/annotations.ts +1 -1
  328. package/src/internal/JsonSchema/json-schema-type.ts +4 -4
  329. package/src/internal/JsonSchema/json-schema.test.ts +71 -145
  330. package/src/internal/JsonSchema/json-schema.ts +49 -35
  331. package/src/internal/Obj/atoms.ts +275 -0
  332. package/src/internal/Obj/clone.ts +9 -4
  333. package/src/internal/Obj/create-object.test.ts +12 -10
  334. package/src/internal/Obj/create-object.ts +68 -22
  335. package/src/internal/Obj/index.ts +1 -1
  336. package/src/internal/Obj/inspect.ts +5 -3
  337. package/src/internal/Obj/json-serializer.test.ts +101 -22
  338. package/src/internal/Obj/json-serializer.ts +92 -36
  339. package/src/internal/Obj/set-value.test.ts +22 -45
  340. package/src/internal/Obj/set-value.ts +12 -19
  341. package/src/internal/Obj/snapshot.ts +13 -4
  342. package/src/internal/Obj/typed-object.test.ts +9 -11
  343. package/src/internal/Obj/typed-object.ts +1 -1
  344. package/src/internal/Query/index.ts +5 -0
  345. package/src/internal/{Query.ts → Query/pretty.ts} +40 -12
  346. package/src/internal/Ref/atoms.ts +20 -0
  347. package/src/internal/Ref/index.ts +1 -0
  348. package/src/internal/Ref/ref-array.ts +3 -3
  349. package/src/internal/Ref/ref.test.ts +18 -27
  350. package/src/internal/Ref/ref.ts +224 -69
  351. package/src/internal/Ref/strong-deps.ts +107 -0
  352. package/src/internal/Ref/utils.ts +45 -0
  353. package/src/internal/Type/compose.test.ts +3 -1
  354. package/src/internal/Type/index.ts +1 -2
  355. package/src/internal/Type/manipulation.ts +0 -25
  356. package/src/internal/Type/type-schema.ts +60 -0
  357. package/src/internal/common/README.md +2 -2
  358. package/src/internal/common/api/meta.ts +19 -17
  359. package/src/internal/common/proxy/change-context.ts +1 -1
  360. package/src/internal/common/proxy/change.test.ts +91 -83
  361. package/src/internal/common/proxy/errors.ts +2 -2
  362. package/src/internal/common/proxy/handler.test.ts +1 -1
  363. package/src/internal/common/proxy/json-serializer.ts +27 -16
  364. package/src/internal/common/proxy/make-object.ts +44 -20
  365. package/src/internal/common/proxy/ownership.ts +2 -2
  366. package/src/internal/common/proxy/reactive-array.ts +1 -1
  367. package/src/internal/common/proxy/reactive.test.ts +54 -0
  368. package/src/internal/common/proxy/reactive.ts +11 -2
  369. package/src/internal/common/proxy/schema.test.ts +48 -86
  370. package/src/internal/common/proxy/typed-handler.test.ts +12 -11
  371. package/src/internal/common/proxy/typed-handler.ts +78 -16
  372. package/src/internal/common/proxy/typed-object.test.ts +16 -28
  373. package/src/internal/common/types/base.ts +4 -4
  374. package/src/internal/common/types/entity.ts +80 -1
  375. package/src/internal/common/types/index.ts +6 -1
  376. package/src/internal/common/types/meta.ts +62 -20
  377. package/src/internal/common/types/model-symbols.ts +24 -4
  378. package/src/internal/common/types/typename.ts +39 -3
  379. package/src/internal/common/types/well-known-types.ts +15 -0
  380. package/src/internal/index.ts +6 -4
  381. package/src/testing/api.test.ts +15 -9
  382. package/src/testing/index.ts +1 -0
  383. package/src/testing/registry.ts +44 -0
  384. package/src/testing/test-data.ts +159 -99
  385. package/src/testing/test-schema.ts +22 -58
  386. package/src/testing/util.ts +14 -11
  387. package/dist/lib/neutral/Extension.mjs +0 -18
  388. package/dist/lib/neutral/SchemaRegistry.mjs +0 -2
  389. package/dist/lib/neutral/chunk-2KHZ36F5.mjs +0 -361
  390. package/dist/lib/neutral/chunk-2KHZ36F5.mjs.map +0 -7
  391. package/dist/lib/neutral/chunk-4OIBYSXE.mjs.map +0 -7
  392. package/dist/lib/neutral/chunk-4P3IXBLT.mjs +0 -45
  393. package/dist/lib/neutral/chunk-4P3IXBLT.mjs.map +0 -7
  394. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +0 -7
  395. package/dist/lib/neutral/chunk-B4BASU6W.mjs.map +0 -7
  396. package/dist/lib/neutral/chunk-BNCCGLJN.mjs +0 -7
  397. package/dist/lib/neutral/chunk-BNCCGLJN.mjs.map +0 -7
  398. package/dist/lib/neutral/chunk-BVOFLCVF.mjs.map +0 -7
  399. package/dist/lib/neutral/chunk-DQYLD2RB.mjs.map +0 -7
  400. package/dist/lib/neutral/chunk-EAMSSLZC.mjs.map +0 -7
  401. package/dist/lib/neutral/chunk-G3IQMKF7.mjs.map +0 -7
  402. package/dist/lib/neutral/chunk-GZQTCRJB.mjs.map +0 -7
  403. package/dist/lib/neutral/chunk-HBUZJNZO.mjs.map +0 -7
  404. package/dist/lib/neutral/chunk-JUXPFOEI.mjs.map +0 -7
  405. package/dist/lib/neutral/chunk-MOR5ERFM.mjs.map +0 -7
  406. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +0 -7
  407. package/dist/lib/neutral/chunk-PHU22NLC.mjs +0 -136
  408. package/dist/lib/neutral/chunk-PHU22NLC.mjs.map +0 -7
  409. package/dist/lib/neutral/chunk-ROG4RXXL.mjs +0 -97
  410. package/dist/lib/neutral/chunk-ROG4RXXL.mjs.map +0 -7
  411. package/dist/lib/neutral/chunk-T6W2LEZU.mjs +0 -125
  412. package/dist/lib/neutral/chunk-T6W2LEZU.mjs.map +0 -7
  413. package/dist/lib/neutral/chunk-TBKX6JQO.mjs.map +0 -7
  414. package/dist/lib/neutral/chunk-TU3GW67D.mjs.map +0 -7
  415. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +0 -7
  416. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +0 -7
  417. package/dist/lib/neutral/chunk-V36VO5SS.mjs.map +0 -7
  418. package/dist/lib/neutral/chunk-WAK4DMFV.mjs.map +0 -7
  419. package/dist/lib/neutral/chunk-YAHXAYOW.mjs +0 -56
  420. package/dist/lib/neutral/chunk-YAHXAYOW.mjs.map +0 -7
  421. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs +0 -50
  422. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs.map +0 -7
  423. package/dist/types/src/Extension.d.ts +0 -80
  424. package/dist/types/src/Extension.d.ts.map +0 -1
  425. package/dist/types/src/Extension.test.d.ts +0 -2
  426. package/dist/types/src/Extension.test.d.ts.map +0 -1
  427. package/dist/types/src/SchemaRegistry.d.ts +0 -84
  428. package/dist/types/src/SchemaRegistry.d.ts.map +0 -1
  429. package/dist/types/src/internal/Obj/ids.d.ts +0 -6
  430. package/dist/types/src/internal/Obj/ids.d.ts.map +0 -1
  431. package/dist/types/src/internal/Query.d.ts.map +0 -1
  432. package/dist/types/src/internal/Type/echo-schema.d.ts +0 -181
  433. package/dist/types/src/internal/Type/echo-schema.d.ts.map +0 -1
  434. package/dist/types/src/internal/Type/persistent-schema.d.ts +0 -20
  435. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +0 -1
  436. package/src/Extension.test.ts +0 -235
  437. package/src/Extension.ts +0 -122
  438. package/src/SchemaRegistry.ts +0 -106
  439. package/src/internal/Obj/ids.ts +0 -12
  440. package/src/internal/Type/echo-schema.ts +0 -423
  441. package/src/internal/Type/persistent-schema.ts +0 -33
  442. /package/dist/lib/neutral/{Extension.mjs.map → Registry.mjs.map} +0 -0
  443. /package/dist/lib/neutral/{SchemaRegistry.mjs.map → Scope.mjs.map} +0 -0
  444. /package/dist/lib/neutral/{chunk-7RO7CPBZ.mjs.map → chunk-PLDMJJJC.mjs.map} +0 -0
@@ -1,42 +1,90 @@
1
1
  import {
2
2
  select
3
- } from "./chunk-EAMSSLZC.mjs";
3
+ } from "./chunk-AFANXSGV.mjs";
4
4
  import {
5
5
  Feed
6
- } from "./chunk-TU3GW67D.mjs";
7
- import {
8
- object
9
- } from "./chunk-ROG4RXXL.mjs";
6
+ } from "./chunk-5GAIWRQB.mjs";
10
7
  import {
11
8
  nothing
12
- } from "./chunk-V36VO5SS.mjs";
9
+ } from "./chunk-NOL7O3BL.mjs";
13
10
  import {
14
11
  Unknown,
15
12
  instanceOf,
16
13
  make
17
- } from "./chunk-B4BASU6W.mjs";
14
+ } from "./chunk-6CEISA3V.mjs";
18
15
  import {
19
16
  Ref
20
- } from "./chunk-BVOFLCVF.mjs";
17
+ } from "./chunk-TF5BSLF6.mjs";
18
+ import {
19
+ getSchema,
20
+ makeObject
21
+ } from "./chunk-HGWQR5KH.mjs";
21
22
  import {
22
23
  JsonSchemaType
23
- } from "./chunk-JUXPFOEI.mjs";
24
+ } from "./chunk-K3S7D5PR.mjs";
24
25
  import {
25
26
  FormInputAnnotation,
26
- IconAnnotation,
27
- SystemTypeAnnotation
28
- } from "./chunk-2KHZ36F5.mjs";
27
+ HiddenAnnotation,
28
+ IconAnnotation
29
+ } from "./chunk-WZ32BF53.mjs";
29
30
  import {
30
31
  __export
31
32
  } from "./chunk-J5LGTIGS.mjs";
32
33
 
33
34
  // src/index.ts
34
35
  import { QueryAST as QueryAST2 } from "@dxos/echo-protocol";
35
- import { DXN } from "@dxos/keys";
36
+ import { DXN as DXN3, EID as EID2, URI } from "@dxos/keys";
36
37
 
37
38
  // src/Hypergraph.ts
38
39
  var Hypergraph_exports = {};
39
40
 
41
+ // src/Json.ts
42
+ var Json_exports = {};
43
+ __export(Json_exports, {
44
+ createRefReplacer: () => createRefReplacer
45
+ });
46
+ import { EID } from "@dxos/keys";
47
+ var isEncodedRef = (value) => typeof value === "object" && value !== null && Object.keys(value).length === 1 && typeof value["/"] === "string";
48
+ var toJson = (obj) => typeof obj.toJSON === "function" ? obj.toJSON() : obj;
49
+ var createRefReplacer = ({ db, depth = 1 }) => {
50
+ const hops = /* @__PURE__ */ new WeakMap();
51
+ return function(key, value) {
52
+ const parentHops = this && typeof this === "object" ? hops.get(this) ?? 0 : 0;
53
+ if (isEncodedRef(value)) {
54
+ if (parentHops >= depth) {
55
+ return value;
56
+ }
57
+ const dxnString = value["/"];
58
+ if (!dxnString.startsWith("dxn:") && !dxnString.startsWith("echo:")) {
59
+ return value;
60
+ }
61
+ let echoUri;
62
+ try {
63
+ const parsed = EID.tryParse(dxnString);
64
+ echoUri = parsed ? EID.getEntityId(parsed) : void 0;
65
+ } catch {
66
+ return value;
67
+ }
68
+ if (!echoUri) {
69
+ return value;
70
+ }
71
+ const target = db.getObjectById(echoUri);
72
+ if (!target) {
73
+ return value;
74
+ }
75
+ const encoded = toJson(target);
76
+ if (encoded != null && typeof encoded === "object") {
77
+ hops.set(encoded, parentHops + 1);
78
+ }
79
+ return encoded;
80
+ }
81
+ if (value != null && typeof value === "object") {
82
+ hops.set(value, parentHops);
83
+ }
84
+ return value;
85
+ };
86
+ };
87
+
40
88
  // src/Collection.ts
41
89
  var Collection_exports = {};
42
90
  __export(Collection_exports, {
@@ -45,16 +93,14 @@ __export(Collection_exports, {
45
93
  make: () => make2
46
94
  });
47
95
  import * as Schema from "effect/Schema";
96
+ import { DXN } from "@dxos/keys";
48
97
  var Collection = Schema.Struct({
49
98
  name: Schema.String.pipe(Schema.optional),
50
99
  objects: Schema.Array(Ref(Unknown)).pipe(FormInputAnnotation.set(false))
51
- }).pipe(object({
52
- typename: "org.dxos.type.collection",
53
- version: "0.1.0"
54
- }), IconAnnotation.set({
100
+ }).pipe(IconAnnotation.set({
55
101
  icon: "ph--folder--regular",
56
- hue: "neutral"
57
- }));
102
+ hue: "amber"
103
+ }), makeObject(DXN.make("org.dxos.type.collection", "0.1.0")));
58
104
  var make2 = (props = {}) => make(Collection, {
59
105
  objects: [],
60
106
  ...props
@@ -73,14 +119,14 @@ __export(View_exports, {
73
119
  });
74
120
  import * as Schema2 from "effect/Schema";
75
121
  import { QueryAST } from "@dxos/echo-protocol";
76
- import { JsonPath } from "@dxos/effect";
77
- import { PublicKey } from "@dxos/keys";
122
+ import { SchemaEx } from "@dxos/effect";
123
+ import { DXN as DXN2, PublicKey } from "@dxos/keys";
78
124
  var FieldSchema = Schema2.Struct({
79
125
  id: Schema2.String,
80
- path: JsonPath,
126
+ path: SchemaEx.JsonPath,
81
127
  visible: Schema2.optional(Schema2.Boolean),
82
128
  // TODO(wittjosiah): Presentation-specific?
83
- referencePath: Schema2.optional(JsonPath)
129
+ referencePath: Schema2.optional(SchemaEx.JsonPath)
84
130
  });
85
131
  var KeyValueProps = Schema2.Record({
86
132
  key: Schema2.String,
@@ -95,7 +141,7 @@ var Projection = Schema2.Struct({
95
141
  /**
96
142
  * UX metadata associated with displayed fields (in table, form, etc.)
97
143
  */
98
- // TODO(wittjosiah): Should this just be an array of JsonPath?
144
+ // TODO(wittjosiah): Should this just be an array of SchemaEx.JsonPath?
99
145
  fields: Schema2.Array(FieldSchema),
100
146
  /**
101
147
  * The id for the field used to pivot the view.
@@ -116,13 +162,10 @@ var ViewSchema = Schema2.Struct({
116
162
  * Projection of the data returned from the query.
117
163
  */
118
164
  projection: Projection
119
- }).pipe(object({
120
- typename: "org.dxos.type.view",
121
- version: "0.1.0"
122
- }), SystemTypeAnnotation.set(true), IconAnnotation.set({
165
+ }).pipe(HiddenAnnotation.set(true), IconAnnotation.set({
123
166
  icon: "ph--funnel--regular",
124
167
  hue: "green"
125
- }));
168
+ }), makeObject(DXN2.make("org.dxos.type.view", "0.1.0")));
126
169
  var View = ViewSchema;
127
170
  var make3 = (props) => {
128
171
  return make(View, {
@@ -145,15 +188,18 @@ __export(Dataset_exports, {
145
188
  import { pipe } from "effect/Function";
146
189
  import * as Predicate from "effect/Predicate";
147
190
  import * as Schema3 from "effect/Schema";
148
- var Dataset = Schema3.Union(Feed, Collection, View);
191
+ var Dataset = Schema3.Union(getSchema(Feed), getSchema(Collection), getSchema(View));
149
192
  var isDataset = pipe(instanceOf(Feed), Predicate.or(instanceOf(Collection)), Predicate.or(instanceOf(View)));
150
193
 
151
194
  export {
152
195
  Hypergraph_exports,
196
+ Json_exports,
153
197
  Collection_exports,
154
198
  View_exports,
155
199
  Dataset_exports,
156
200
  QueryAST2 as QueryAST,
157
- DXN
201
+ DXN3 as DXN,
202
+ EID2 as EID,
203
+ URI
158
204
  };
159
- //# sourceMappingURL=chunk-4OIBYSXE.mjs.map
205
+ //# sourceMappingURL=chunk-3JXQUMUI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/index.ts", "../../../src/Hypergraph.ts", "../../../src/Json.ts", "../../../src/Collection.ts", "../../../src/View.ts", "../../../src/Dataset.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nexport { QueryAST } from '@dxos/echo-protocol';\nexport { DXN, EID, URI } from '@dxos/keys';\n\nexport * as Annotation from './Annotation';\nexport * as Database from './Database';\nexport * as Entity from './Entity';\n// TODO(burdon): Rename to Error (less problematic than Obj/Object).\nexport * as Err from './Err';\nexport * as Feed from './Feed';\nexport * as Filter from './Filter';\nexport * as Format from './Format';\nexport * as Hypergraph from './Hypergraph';\nexport * as Json from './Json';\nexport * as JsonSchema from './JsonSchema';\nexport * as Key from './Key';\nexport * as Migration from './Migration';\nexport * as Obj from './Obj';\nexport * as Order from './Order';\nexport * as Query from './Query';\nexport * as QueryResult from './QueryResult';\nexport * as Ref from './Ref';\nexport * as Registry from './Registry';\nexport * as Relation from './Relation';\nexport * as Scope from './Scope';\nexport * as Tag from './Tag';\nexport * as Type from './Type';\nexport * as Collection from './Collection';\nexport * as View from './View';\nexport * as Dataset from './Dataset';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type URI } from '@dxos/keys';\n\nimport type * as Database from './Database';\nimport type * as Entity from './Entity';\nimport type * as internal from './internal';\nimport type * as Key from './Key';\nimport type * as Ref from './Ref';\nimport type * as Registry from './Registry';\n\n/**\n * Resolution context.\n * Affects how non-absolute DXNs are resolved.\n */\nexport interface RefResolutionContext {\n /**\n * Space that the resolution is happening from.\n */\n space?: Key.SpaceId;\n\n /**\n * Feed that the resolution is happening from.\n * This feed will be searched first, and then the space it belongs to.\n */\n feed?: URI.URI;\n}\n\nexport interface RefResolverOptions {\n /**\n * Resolution context.\n * Affects how non-absolute DXNs are resolved.\n */\n context?: RefResolutionContext;\n\n /**\n * Middleware to change the resolved object before returning it.\n * @deprecated On track to be removed.\n */\n middleware?: (obj: internal.AnyProperties) => internal.AnyProperties;\n}\n\n/**\n * Manages cross-space database interactions.\n */\nexport interface Hypergraph extends Database.Queryable {\n /**\n * In-process registry of keyed objects and static schema types.\n * Populated at startup via `registry.add(objects)` / `registry.add(schemas)`.\n * Queries that include no explicit from() clause will fan out to this registry automatically.\n */\n get registry(): Registry.Registry;\n\n /**\n * Query objects.\n */\n query: Database.QueryFn;\n\n /**\n * Creates a reference to an existing object in the database.\n *\n * NOTE: The reference may be dangling if the object is not present in the database.\n * NOTE: Difference from `Ref.fromURI`\n * `Ref.fromURI(dxn)` returns an unhydrated reference. The `.load` and `.target` APIs will not work.\n * `db.makeRef(dxn)` is preferable in cases with access to the database.\n */\n makeRef<T extends Entity.Unknown = Entity.Unknown>(uri: URI.URI): Ref.Ref<T>;\n\n /**\n * @param hostDb Host database for reference resolution.\n * @param middleware Called with the loaded object. The caller may change the object.\n * @returns Result of `onLoad`.\n */\n // TODO(dmaretskyi): Restructure API: Remove middleware.\n createRefResolver(options: RefResolverOptions): Ref.Resolver;\n\n /**\n * Get a database by space ID.\n * @returns The database for the given space ID, or undefined if not found.\n */\n getDatabase(spaceId: Key.SpaceId): Database.Database | undefined;\n}\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { EID } from '@dxos/keys';\n\nimport * as Database from './Database';\nimport * as Obj from './Obj';\n\n/**\n * `JSON.stringify` replacer signature.\n *\n * Defined here (rather than re-imported from a UI package) so other ECHO-aware utilities can\n * share a stable signature without creating a dependency edge into the UI tree.\n */\nexport type JsonReplacer = (key: string, value: any) => any;\n\nexport type CreateRefReplacerOptions = {\n db: Database.Database;\n /** How many ref hops to follow. `0` leaves all refs as-is. Default: `1`. */\n depth?: number;\n};\n\nconst isEncodedRef = (value: unknown): value is { '/': string } =>\n typeof value === 'object' &&\n value !== null &&\n Object.keys(value as object).length === 1 &&\n typeof (value as { '/': unknown })['/'] === 'string';\n\nconst toJson = (obj: Obj.Any): unknown => (typeof (obj as any).toJSON === 'function' ? (obj as any).toJSON() : obj);\n\n/**\n * Returns a {@link JsonReplacer} that inlines ECHO ref objects (`{ \"/\": \"echo:...\" }`) up to\n * `depth` ref hops. Beyond that depth refs are left in their encoded form.\n *\n * Implemented as a per-call `JSON.stringify` replacer (not a one-shot tree walk at root) so it\n * composes with wrappers like `safeStringify` that intercept the root call. JSON.stringify\n * already drives the recursion; we only need to (a) detect a ref at the current callback,\n * (b) resolve and return the target if hop budget remains, and (c) tag the returned object\n * with its hop count so children know how far in they are.\n *\n * The hop count is tracked per-object via a `WeakMap`: a ref-resolved target's children inherit\n * `parentHops + 1`; a regular intermediate object's children inherit `parentHops`. This makes the\n * budget count *ref hops*, not tree depth — a ref deep in a tree still resolves once when\n * `depth >= 1`.\n *\n * Note: ECHO objects' `toJSON` runs before the replacer is invoked, so by the time we see a\n * value refs are already encoded as `{ \"/\": \"dxn:...\" }`.\n */\nexport const createRefReplacer = ({ db, depth = 1 }: CreateRefReplacerOptions): JsonReplacer => {\n // Per-object hop count. Set when we return an object (via ref resolution or pass-through) so\n // the child callbacks (which carry that object as `this`) can read it.\n const hops = new WeakMap<object, number>();\n\n return function (this: any, key: string, value: any) {\n // Hop count for this call: hops at the parent, or 0 for the root.\n const parentHops = this && typeof this === 'object' ? (hops.get(this) ?? 0) : 0;\n if (isEncodedRef(value)) {\n if (parentHops >= depth) {\n return value;\n }\n\n // The `{ '/': string }` shape is shared with non-DXN IPLD-style refs (e.g. CIDs);\n // an unparseable string would otherwise crash the whole `JSON.stringify`.\n // Treat any parse miss as \"leave as-is\" rather than propagating.\n const dxnString = value['/'];\n if (!dxnString.startsWith('dxn:') && !dxnString.startsWith('echo:')) {\n return value;\n }\n\n let echoUri: string | undefined;\n try {\n const parsed = EID.tryParse(dxnString);\n echoUri = parsed ? EID.getEntityId(parsed) : undefined;\n } catch {\n return value;\n }\n\n if (!echoUri) {\n return value;\n }\n const target = db.getObjectById(echoUri);\n if (!target) {\n return value;\n }\n\n const encoded = toJson(target);\n if (encoded != null && typeof encoded === 'object') {\n // Children of the resolved target are one hop deeper.\n hops.set(encoded as object, parentHops + 1);\n }\n return encoded;\n }\n\n // Pass-through object: children inherit the parent's hop count (this branch doesn't burn\n // budget).\n if (value != null && typeof value === 'object') {\n hops.set(value, parentHops);\n }\n\n return value;\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { DXN } from '@dxos/keys';\n\nimport * as Annotation from './Annotation';\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport * as Ref from './Ref';\nimport * as Type from './Type';\n\n/**\n * A an ordered set of objects.\n */\nexport const Collection = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n objects: Schema.Array(Ref.Ref(Obj.Unknown)).pipe(internal.FormInputAnnotation.set(false)),\n}).pipe(\n Annotation.IconAnnotation.set({ icon: 'ph--folder--regular', hue: 'amber' }),\n Type.makeObject(DXN.make('org.dxos.type.collection', '0.1.0')),\n);\n\nexport type Collection = Type.InstanceType<typeof Collection>;\n\nexport const make = (props: Partial<Obj.MakeProps<typeof Collection>> = {}): Collection =>\n Obj.make(Collection, { objects: [], ...props });\n\nexport const isCollection: (value: unknown) => value is Collection = Obj.instanceOf(Collection);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { QueryAST } from '@dxos/echo-protocol';\nimport { SchemaEx } from '@dxos/effect';\nimport { DXN, PublicKey } from '@dxos/keys';\n\nimport * as Annotation from './Annotation';\nimport * as Filter from './Filter';\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport * as Query from './Query';\nimport * as Type from './Type';\n\n/**\n * Stored field metadata (e.g., for UX).\n */\nexport const FieldSchema = Schema.Struct({\n id: Schema.String,\n path: SchemaEx.JsonPath,\n visible: Schema.optional(Schema.Boolean),\n\n // TODO(wittjosiah): Presentation-specific?\n referencePath: Schema.optional(SchemaEx.JsonPath),\n});\n\nexport type FieldType = Schema.Schema.Type<typeof FieldSchema>;\n\nexport const KeyValueProps = Schema.Record({ key: Schema.String, value: Schema.Any });\n\nexport const createFieldId = () => PublicKey.random().truncate();\n\nexport const Projection = Schema.Struct({\n /**\n * Optional schema override used to customize the underlying schema.\n */\n schema: internal.JsonSchemaType.pipe(Schema.optional),\n\n /**\n * UX metadata associated with displayed fields (in table, form, etc.)\n */\n // TODO(wittjosiah): Should this just be an array of SchemaEx.JsonPath?\n fields: Schema.Array(FieldSchema),\n\n /**\n * The id for the field used to pivot the view.\n * E.g., the field to use for kanban columns or the field to use for map coordinates.\n */\n pivotFieldId: Schema.String.pipe(Schema.optional),\n});\n\nexport type Projection = Schema.Schema.Type<typeof Projection>;\n\n/**\n * Views are generated or user-defined projections of a schema's properties.\n * They are used to configure the visual representation of the data.\n */\nconst ViewSchema = Schema.Struct({\n /**\n * Query used to retrieve data.\n * Can be a user-provided query grammar string or a query AST.\n */\n query: Schema.Struct({\n raw: Schema.optional(Schema.String),\n ast: QueryAST.Query,\n }),\n\n /**\n * Projection of the data returned from the query.\n */\n projection: Projection,\n}).pipe(\n internal.HiddenAnnotation.set(true),\n Annotation.IconAnnotation.set({ icon: 'ph--funnel--regular', hue: 'green' }),\n Type.makeObject(DXN.make('org.dxos.type.view', '0.1.0')),\n);\n\n// NOTE: Declared as a named interface and the `View` const is annotated `Type.Obj<View>` so\n// downstream consumers see a named `View` type instead of the inlined `QueryAST.Query` union.\n// Without the named interface, embedding `Type.getSchema(View.View)` in a downstream\n// `Schema.Struct` triggers TS2742 portability errors (e.g. plugin-kanban, plugin-table).\n// TODO(wittjosiah): Find a better solution that doesn't require manually keeping the interface in sync.\nexport interface View extends Type.InstanceType<typeof ViewSchema> {}\n\nexport const View: Type.Obj<View> = ViewSchema as any;\n\nexport const make = (props: Partial<Obj.MakeProps<typeof View>>): View => {\n return Obj.make(View, {\n query: { ast: Query.select(Filter.nothing()).ast },\n projection: { fields: [] },\n ...props,\n });\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { pipe } from 'effect/Function';\nimport * as Predicate from 'effect/Predicate';\nimport * as Schema from 'effect/Schema';\n\nimport * as Collection from './Collection';\nimport * as Feed from './Feed';\nimport * as Obj from './Obj';\nimport * as Type from './Type';\nimport * as View from './View';\n\n/**\n * Abstract set of objects, represented by a view, feed, or collection.\n * Schema-level union of the underlying type entities (rebuilt via\n * `Type.getSchema`) so this can still be consumed by Schema-side APIs such\n * as `Filter.type(...)` on a union.\n */\nexport type Dataset = Feed.Feed | Collection.Collection | View.View;\nexport const Dataset = Schema.Union(\n Type.getSchema(Feed.Feed),\n Type.getSchema(Collection.Collection),\n Type.getSchema(View.View),\n);\n\nexport const isDataset: (value: unknown) => value is Dataset = pipe(\n Obj.instanceOf(Feed.Feed),\n Predicate.or(Obj.instanceOf(Collection.Collection)),\n Predicate.or(Obj.instanceOf(View.View)),\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["QueryAST", "DXN", "EID", "URI", "EID", "isEncodedRef", "value", "Object", "keys", "length", "toJson", "obj", "toJSON", "createRefReplacer", "db", "depth", "hops", "WeakMap", "key", "parentHops", "get", "dxnString", "startsWith", "echoUri", "parsed", "tryParse", "getEntityId", "undefined", "target", "getObjectById", "encoded", "set", "make", "Schema", "DXN", "Collection", "Struct", "name", "String", "pipe", "optional", "objects", "Array", "Ref", "Unknown", "FormInputAnnotation", "set", "IconAnnotation", "icon", "hue", "makeObject", "DXN", "make", "props", "isCollection", "instanceOf", "make", "Schema", "QueryAST", "SchemaEx", "DXN", "PublicKey", "FieldSchema", "Struct", "id", "String", "path", "SchemaEx", "JsonPath", "visible", "optional", "Boolean", "referencePath", "KeyValueProps", "Record", "key", "value", "Any", "createFieldId", "PublicKey", "random", "truncate", "Projection", "schema", "JsonSchemaType", "pipe", "fields", "Array", "pivotFieldId", "ViewSchema", "query", "raw", "ast", "QueryAST", "Query", "projection", "HiddenAnnotation", "set", "IconAnnotation", "icon", "hue", "makeObject", "DXN", "make", "View", "props", "select", "nothing", "pipe", "Predicate", "Schema", "Dataset", "Union", "getSchema", "Feed", "Collection", "View", "isDataset", "pipe", "instanceOf", "or"]
7
+ }
@@ -1,12 +1,13 @@
1
- import {
2
- Service
3
- } from "./chunk-PHU22NLC.mjs";
4
1
  import {
5
2
  ReferenceAnnotationId,
6
- getSchemaDXN,
3
+ Service,
4
+ getSchemaURI,
7
5
  getTypeAnnotation,
8
6
  getTypeIdentifierAnnotation
9
- } from "./chunk-2KHZ36F5.mjs";
7
+ } from "./chunk-WZ32BF53.mjs";
8
+ import {
9
+ getStaticTypeSchema
10
+ } from "./chunk-O6BH7EPN.mjs";
10
11
 
11
12
  // src/internal/Ref/ref.ts
12
13
  import * as Effect from "effect/Effect";
@@ -21,15 +22,49 @@ import { Event } from "@dxos/async";
21
22
  import { inspectCustom } from "@dxos/debug";
22
23
  import { EncodedReference } from "@dxos/echo-protocol";
23
24
  import { assertArgument, invariant } from "@dxos/invariant";
24
- import { DXN, ObjectId } from "@dxos/keys";
25
+ import { DXN, EID, EntityId } from "@dxos/keys";
26
+
27
+ // src/internal/Ref/atoms.ts
28
+ import * as Atom from "@effect-atom/atom/Atom";
29
+
30
+ // src/internal/Ref/utils.ts
31
+ var loadRefTarget = (ref, get, onTargetAvailable) => {
32
+ const currentTarget = ref.target;
33
+ if (currentTarget) {
34
+ return onTargetAvailable(currentTarget);
35
+ }
36
+ const unsubscribe = ref.onResolved(() => {
37
+ const target = ref.target;
38
+ if (target) {
39
+ get.setSelf(onTargetAvailable(target));
40
+ }
41
+ });
42
+ get.addFinalizer(unsubscribe);
43
+ void ref.load().then((loadedTarget) => {
44
+ get.setSelf(onTargetAvailable(loadedTarget));
45
+ }).catch(() => {
46
+ });
47
+ return void 0;
48
+ };
49
+
50
+ // src/internal/Ref/atoms.ts
51
+ var refSimpleFamily = Atom.family((ref) => {
52
+ return Atom.make((get) => {
53
+ return loadRefTarget(ref, get, (target) => target);
54
+ });
55
+ });
56
+
57
+ // src/internal/Ref/ref.ts
25
58
  var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Ref/ref.ts";
26
59
  var JSON_SCHEMA_ECHO_REF_ID = "/schemas/echo/ref";
27
60
  var getSchemaReference = (property) => {
28
61
  const { $id, reference: { schema: { $ref } = {} } = {} } = property;
29
62
  if ($id === JSON_SCHEMA_ECHO_REF_ID && $ref) {
30
- return {
31
- typename: DXN.parse($ref).typename
32
- };
63
+ const parsed = DXN.tryMake($ref);
64
+ const typename = parsed ? DXN.getName(parsed) : void 0;
65
+ return typename ? {
66
+ typename
67
+ } : void 0;
33
68
  }
34
69
  };
35
70
  var createSchemaReference = (typename) => {
@@ -37,7 +72,7 @@ var createSchemaReference = (typename) => {
37
72
  $id: JSON_SCHEMA_ECHO_REF_ID,
38
73
  reference: {
39
74
  schema: {
40
- $ref: DXN.fromTypename(typename).toString()
75
+ $ref: DXN.make(typename)
41
76
  }
42
77
  }
43
78
  };
@@ -51,8 +86,9 @@ var getReferenceAst = (ast) => {
51
86
  version: ast.annotations[ReferenceAnnotationId].version
52
87
  };
53
88
  };
54
- var RefTypeId = /* @__PURE__ */ Symbol("@dxos/echo/internal/Ref");
55
- var Ref = (schema) => {
89
+ var RefTypeId = /* @__PURE__ */ Symbol.for("@dxos/echo/internal/Ref");
90
+ var Ref = (input) => {
91
+ const schema = getStaticTypeSchema(input) ?? input;
56
92
  assertArgument(Schema.isSchema(schema), "schema", "Must call with an instance of effect-schema");
57
93
  const annotation = getTypeAnnotation(schema);
58
94
  if (annotation == null) {
@@ -61,9 +97,12 @@ var Ref = (schema) => {
61
97
  return createEchoReferenceSchema(getTypeIdentifierAnnotation(schema), annotation.typename, annotation.version);
62
98
  };
63
99
  Ref.isRef = (obj) => {
64
- return obj && typeof obj === "object" && RefTypeId in obj;
100
+ return obj != null && typeof obj === "object" && RefTypeId in obj;
101
+ };
102
+ Ref.hasEntityId = (id) => (ref) => {
103
+ const uri = EID.tryParse(ref.uri);
104
+ return uri !== void 0 && EID.isLocal(uri) && EID.getEntityId(uri) === id;
65
105
  };
66
- Ref.hasObjectId = (id) => (ref) => ref.dxn.isLocalObjectId() && ref.dxn.parts[1] === id;
67
106
  Ref.isRefSchema = (schema) => {
68
107
  return Ref.isRefSchemaAST(schema.ast);
69
108
  };
@@ -75,30 +114,25 @@ Ref.make = (obj) => {
75
114
  throw new TypeError("Expected: ECHO object.");
76
115
  }
77
116
  const id = obj.id;
78
- invariant(ObjectId.isValid(id), "Invalid object ID", {
79
- F: __dxlog_file,
80
- L: 225,
81
- S: void 0,
82
- A: [
83
- "ObjectId.isValid(id)",
84
- "'Invalid object ID'"
85
- ]
117
+ invariant(EntityId.isValid(id), "Invalid object ID", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 87, S: void 0, A: ["EntityId.isValid(id)", "'Invalid object ID'"] });
118
+ const uri = EID.make({
119
+ entityId: id
86
120
  });
87
- const dxn = DXN.fromLocalObjectId(id);
88
- return new RefImpl(dxn, obj);
121
+ const ref = new RefImpl(uri, obj);
122
+ return ref;
89
123
  };
90
- Ref.fromDXN = (dxn) => {
91
- assertArgument(dxn instanceof DXN, "dxn", "Expected DXN");
92
- return new RefImpl(dxn);
124
+ Ref.fromURI = (uri) => {
125
+ assertArgument(typeof uri === "string", "uri", "Expected URI string");
126
+ return new RefImpl(uri);
93
127
  };
94
- var createEchoReferenceSchema = (echoId, typename, version) => {
95
- if (!echoId && !typename) {
96
- throw new TypeError("Either echoId or typename must be provided.");
128
+ var createEchoReferenceSchema = (echoUri, typename, version) => {
129
+ if (!echoUri && !typename) {
130
+ throw new TypeError("Either echoUri or typename must be provided.");
97
131
  }
98
132
  const referenceInfo = {
99
133
  schema: {
100
134
  // TODO(dmaretskyi): Include version?
101
- $ref: echoId ?? DXN.fromTypename(typename).toString()
135
+ $ref: echoUri ?? DXN.make(typename)
102
136
  },
103
137
  schemaVersion: version
104
138
  };
@@ -106,7 +140,7 @@ var createEchoReferenceSchema = (echoId, typename, version) => {
106
140
  encode: () => {
107
141
  return (value) => Effect.gen(function* () {
108
142
  if (Ref.isRef(value)) {
109
- return EncodedReference.fromDXN(value.dxn);
143
+ return EncodedReference.fromURI(value.uri);
110
144
  } else if (EncodedReference.isEncodedReference(value)) {
111
145
  return value;
112
146
  }
@@ -118,7 +152,7 @@ var createEchoReferenceSchema = (echoId, typename, version) => {
118
152
  const dbService = yield* Effect.serviceOption(Service);
119
153
  if (Ref.isRef(value)) {
120
154
  if (Option.isSome(dbService)) {
121
- return dbService.value.db.makeRef(value.dxn);
155
+ return dbService.value.db.makeRef(value.uri);
122
156
  } else {
123
157
  return value;
124
158
  }
@@ -127,9 +161,9 @@ var createEchoReferenceSchema = (echoId, typename, version) => {
127
161
  return yield* Effect.fail(new ParseResult.Unexpected(value, "reference"));
128
162
  }
129
163
  if (Option.isSome(dbService)) {
130
- return dbService.value.db.makeRef(EncodedReference.toDXN(value));
164
+ return dbService.value.db.makeRef(EncodedReference.toURI(value));
131
165
  } else {
132
- return Ref.fromDXN(EncodedReference.toDXN(value));
166
+ return Ref.fromURI(EncodedReference.toURI(value));
133
167
  }
134
168
  });
135
169
  }
@@ -147,8 +181,16 @@ var createEchoReferenceSchema = (echoId, typename, version) => {
147
181
  });
148
182
  return refSchema;
149
183
  };
184
+ var makeSettledRequest = (state, result) => ({
185
+ state,
186
+ stateChanged: new Event(),
187
+ getResult: () => state === "ready" ? result : void 0,
188
+ wait: async () => state === "ready" ? result : void 0,
189
+ abort: () => {
190
+ }
191
+ });
150
192
  var RefImpl = class _RefImpl {
151
- #dxn;
193
+ #uri;
152
194
  #resolver = void 0;
153
195
  #resolved = new Event();
154
196
  /**
@@ -162,15 +204,15 @@ var RefImpl = class _RefImpl {
162
204
  #resolverCallback = () => {
163
205
  this.#resolved.emit();
164
206
  };
165
- constructor(dxn, target) {
166
- this.#dxn = dxn;
207
+ constructor(uri, target) {
208
+ this.#uri = uri;
167
209
  this.#target = target;
168
210
  }
169
211
  /**
170
212
  * @inheritdoc
171
213
  */
172
- get dxn() {
173
- return this.#dxn;
214
+ get uri() {
215
+ return this.#uri;
174
216
  }
175
217
  /**
176
218
  * @inheritdoc
@@ -185,16 +227,8 @@ var RefImpl = class _RefImpl {
185
227
  if (this.#target) {
186
228
  return this.#target;
187
229
  }
188
- invariant(this.#resolver, "Resolver is not set", {
189
- F: __dxlog_file,
190
- L: 393,
191
- S: this,
192
- A: [
193
- "this.#resolver",
194
- "'Resolver is not set'"
195
- ]
196
- });
197
- return this.#resolver.resolveSync(this.#dxn, true, this.#resolverCallback);
230
+ invariant(this.#resolver, "Resolver is not set", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 205, S: this, A: ["this.#resolver", "'Resolver is not set'"] });
231
+ return this.#resolver.resolveSync(this.#uri, true, this.#resolverCallback);
198
232
  }
199
233
  /**
200
234
  * @inheritdoc
@@ -203,16 +237,8 @@ var RefImpl = class _RefImpl {
203
237
  if (this.#target) {
204
238
  return this.#target;
205
239
  }
206
- invariant(this.#resolver, "Resolver is not set", {
207
- F: __dxlog_file,
208
- L: 404,
209
- S: this,
210
- A: [
211
- "this.#resolver",
212
- "'Resolver is not set'"
213
- ]
214
- });
215
- const obj = await this.#resolver.resolve(this.#dxn);
240
+ invariant(this.#resolver, "Resolver is not set", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 214, S: this, A: ["this.#resolver", "'Resolver is not set'"] });
241
+ const obj = await this.#resolver.resolveLegacy(this.#uri);
216
242
  if (obj == null) {
217
243
  throw new Error("Object not found");
218
244
  }
@@ -225,16 +251,14 @@ var RefImpl = class _RefImpl {
225
251
  if (this.#target) {
226
252
  return this.#target;
227
253
  }
228
- invariant(this.#resolver, "Resolver is not set", {
229
- F: __dxlog_file,
230
- L: 419,
231
- S: this,
232
- A: [
233
- "this.#resolver",
234
- "'Resolver is not set'"
235
- ]
236
- });
237
- return await this.#resolver.resolve(this.#dxn);
254
+ invariant(this.#resolver, "Resolver is not set", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 227, S: this, A: ["this.#resolver", "'Resolver is not set'"] });
255
+ return await this.#resolver.resolveLegacy(this.#uri);
256
+ }
257
+ /**
258
+ * @inheritdoc
259
+ */
260
+ onResolved(callback) {
261
+ return this.#resolved.on(callback);
238
262
  }
239
263
  /**
240
264
  * Do not inline the target object in the reference.
@@ -242,13 +266,13 @@ var RefImpl = class _RefImpl {
242
266
  * Clones the reference object.
243
267
  */
244
268
  noInline() {
245
- const ref = new _RefImpl(this.#dxn, void 0);
269
+ const ref = new _RefImpl(this.#uri, void 0);
246
270
  ref.#resolver = this.#resolver;
247
271
  return ref;
248
272
  }
249
273
  encode() {
250
274
  return {
251
- "/": this.#dxn.toString(),
275
+ "/": this.#uri,
252
276
  ...this.#target ? {
253
277
  target: this.#target
254
278
  } : {}
@@ -267,7 +291,7 @@ var RefImpl = class _RefImpl {
267
291
  if (this.#target) {
268
292
  return `Ref(${this.#target.toString()})`;
269
293
  }
270
- return `Ref(${this.#dxn.toString()})`;
294
+ return `Ref(${this.#uri.toString()})`;
271
295
  }
272
296
  [inspectCustom] = (depth, options, inspect) => {
273
297
  return this.toString();
@@ -280,11 +304,14 @@ var RefImpl = class _RefImpl {
280
304
  * so without this, each access would create a separate cache entry.
281
305
  */
282
306
  [Hash.symbol]() {
283
- return Hash.hash(this.#dxn.toString());
307
+ return Hash.hash(this.#uri.toString());
284
308
  }
285
309
  /** Effect Equal trait. See {@link Hash.symbol} for rationale. */
286
310
  [Equal.symbol](that) {
287
- return that instanceof _RefImpl && this.#dxn.toString() === that.dxn.toString();
311
+ return that instanceof _RefImpl && this.#uri === that.uri;
312
+ }
313
+ get atom() {
314
+ return refSimpleFamily(this);
288
315
  }
289
316
  /**
290
317
  * Internal method to set the resolver.
@@ -305,35 +332,19 @@ var RefImpl = class _RefImpl {
305
332
  }
306
333
  };
307
334
  var setRefResolver = (ref, resolver) => {
308
- invariant(ref instanceof RefImpl, "Ref is not an instance of RefImpl", {
309
- F: __dxlog_file,
310
- L: 506,
311
- S: void 0,
312
- A: [
313
- "ref instanceof RefImpl",
314
- "'Ref is not an instance of RefImpl'"
315
- ]
316
- });
335
+ invariant(ref instanceof RefImpl, "Ref is not an instance of RefImpl", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 304, S: void 0, A: ["ref instanceof RefImpl", "'Ref is not an instance of RefImpl'"] });
317
336
  ref._setResolver(resolver);
318
337
  };
319
338
  var getRefSavedTarget = (ref) => {
320
- invariant(ref instanceof RefImpl, "Ref is not an instance of RefImpl", {
321
- F: __dxlog_file,
322
- L: 514,
323
- S: void 0,
324
- A: [
325
- "ref instanceof RefImpl",
326
- "'Ref is not an instance of RefImpl'"
327
- ]
328
- });
339
+ invariant(ref instanceof RefImpl, "Ref is not an instance of RefImpl", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 310, S: void 0, A: ["ref instanceof RefImpl", "'Ref is not an instance of RefImpl'"] });
329
340
  return ref._getSavedTarget();
330
341
  };
331
342
  var refVariance = {
332
343
  _T: null
333
344
  };
334
345
  var refFromEncodedReference = (encodedReference, resolver) => {
335
- const dxn = DXN.parse(encodedReference["/"]);
336
- const ref = new RefImpl(dxn);
346
+ const uri = EncodedReference.toURI(encodedReference);
347
+ const ref = new RefImpl(uri);
337
348
  if (resolver) {
338
349
  setRefResolver(ref, resolver);
339
350
  }
@@ -346,40 +357,39 @@ var StaticRefResolver = class {
346
357
  this.objects.set(obj.id, obj);
347
358
  return this;
348
359
  }
349
- addSchema(schema) {
350
- const dxn = getSchemaDXN(schema);
351
- invariant(dxn, "Schema has no DXN", {
352
- F: __dxlog_file,
353
- L: 546,
354
- S: this,
355
- A: [
356
- "dxn",
357
- "'Schema has no DXN'"
358
- ]
359
- });
360
- this.schemas.set(dxn.toString(), schema);
360
+ addSchema(input) {
361
+ const schema = getStaticTypeSchema(input);
362
+ invariant(schema, "Type entity is missing its source schema", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 335, S: this, A: ["schema", "'Type entity is missing its source schema'"] });
363
+ const uri = getSchemaURI(schema);
364
+ invariant(uri, "Schema has no URI", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 337, S: this, A: ["uri", "'Schema has no URI'"] });
365
+ this.schemas.set(uri, schema);
361
366
  return this;
362
367
  }
363
- resolveSync(dxn, _load, _onLoad) {
364
- const id = dxn?.asEchoDXN()?.echoId;
365
- if (id == null) {
366
- return void 0;
367
- }
368
- return this.objects.get(id);
368
+ resolve(uri, _options) {
369
+ const obj = this.#lookup(uri);
370
+ return makeSettledRequest(obj ? "ready" : "unavailable", obj);
369
371
  }
370
- async resolve(dxn) {
371
- const id = dxn?.asEchoDXN()?.echoId;
372
+ resolveSync(uri, _load, _onLoad) {
373
+ return this.#lookup(uri);
374
+ }
375
+ async resolveLegacy(uri) {
376
+ return this.#lookup(uri);
377
+ }
378
+ async resolveSchema(uri) {
379
+ return this.schemas.get(uri);
380
+ }
381
+ #lookup(uri) {
382
+ const echoUri = EID.tryParse(uri);
383
+ const id = echoUri ? EID.getEntityId(echoUri) : void 0;
372
384
  if (id == null) {
373
385
  return void 0;
374
386
  }
375
387
  return this.objects.get(id);
376
388
  }
377
- async resolveSchema(dxn) {
378
- return this.schemas.get(dxn.toString());
379
- }
380
389
  };
381
390
 
382
391
  export {
392
+ loadRefTarget,
383
393
  JSON_SCHEMA_ECHO_REF_ID,
384
394
  getSchemaReference,
385
395
  createSchemaReference,
@@ -387,10 +397,11 @@ export {
387
397
  RefTypeId,
388
398
  Ref,
389
399
  createEchoReferenceSchema,
400
+ makeSettledRequest,
390
401
  RefImpl,
391
402
  setRefResolver,
392
403
  getRefSavedTarget,
393
404
  refFromEncodedReference,
394
405
  StaticRefResolver
395
406
  };
396
- //# sourceMappingURL=chunk-G3IQMKF7.mjs.map
407
+ //# sourceMappingURL=chunk-4TPQZPLY.mjs.map