@dxos/echo 0.8.4-main.fffef41 → 0.8.4-staging.60fe92afc8

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 (731) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +10 -11
  3. package/dist/lib/neutral/Annotation.mjs +68 -0
  4. package/dist/lib/neutral/Database.mjs +38 -0
  5. package/dist/lib/neutral/Entity.mjs +72 -0
  6. package/dist/lib/neutral/Err.mjs +12 -0
  7. package/dist/lib/neutral/Feed.mjs +54 -0
  8. package/dist/lib/neutral/Filter.mjs +70 -0
  9. package/dist/lib/neutral/Format.mjs +86 -0
  10. package/dist/lib/neutral/Format.mjs.map +7 -0
  11. package/dist/lib/neutral/JsonSchema.mjs +18 -0
  12. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  13. package/dist/lib/neutral/Key.mjs +16 -0
  14. package/dist/lib/neutral/Key.mjs.map +7 -0
  15. package/dist/lib/neutral/Migration.mjs +18 -0
  16. package/dist/lib/neutral/Migration.mjs.map +7 -0
  17. package/dist/lib/neutral/Obj.mjs +122 -0
  18. package/dist/lib/neutral/Obj.mjs.map +7 -0
  19. package/dist/lib/neutral/Order.mjs +16 -0
  20. package/dist/lib/neutral/Order.mjs.map +7 -0
  21. package/dist/lib/neutral/Query.mjs +38 -0
  22. package/dist/lib/neutral/Query.mjs.map +7 -0
  23. package/dist/lib/neutral/QueryResult.mjs +2 -0
  24. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  25. package/dist/lib/neutral/Ref.mjs +25 -0
  26. package/dist/lib/neutral/Ref.mjs.map +7 -0
  27. package/dist/lib/neutral/Registry.mjs +14 -0
  28. package/dist/lib/neutral/Registry.mjs.map +7 -0
  29. package/dist/lib/neutral/Relation.mjs +97 -0
  30. package/dist/lib/neutral/Relation.mjs.map +7 -0
  31. package/dist/lib/neutral/Scope.mjs +12 -0
  32. package/dist/lib/neutral/Scope.mjs.map +7 -0
  33. package/dist/lib/neutral/Tag.mjs +32 -0
  34. package/dist/lib/neutral/Tag.mjs.map +7 -0
  35. package/dist/lib/neutral/Type.mjs +65 -0
  36. package/dist/lib/neutral/Type.mjs.map +7 -0
  37. package/dist/lib/neutral/chunk-35INCYOE.mjs +7 -0
  38. package/dist/lib/neutral/chunk-35INCYOE.mjs.map +7 -0
  39. package/dist/lib/neutral/chunk-3PBP4V4O.mjs +101 -0
  40. package/dist/lib/neutral/chunk-3PBP4V4O.mjs.map +7 -0
  41. package/dist/lib/neutral/chunk-4ZUHOTCG.mjs +184 -0
  42. package/dist/lib/neutral/chunk-4ZUHOTCG.mjs.map +7 -0
  43. package/dist/lib/neutral/chunk-5SMDBFVB.mjs +108 -0
  44. package/dist/lib/neutral/chunk-5SMDBFVB.mjs.map +7 -0
  45. package/dist/lib/neutral/chunk-5SUJPHAE.mjs +34 -0
  46. package/dist/lib/neutral/chunk-5SUJPHAE.mjs.map +7 -0
  47. package/dist/lib/neutral/chunk-6M2Z6WBH.mjs +93 -0
  48. package/dist/lib/neutral/chunk-6M2Z6WBH.mjs.map +7 -0
  49. package/dist/lib/neutral/chunk-6YDI3J37.mjs +346 -0
  50. package/dist/lib/neutral/chunk-6YDI3J37.mjs.map +7 -0
  51. package/dist/lib/neutral/chunk-7FPIAJIV.mjs +2279 -0
  52. package/dist/lib/neutral/chunk-7FPIAJIV.mjs.map +7 -0
  53. package/dist/lib/neutral/chunk-7LOUAPYZ.mjs +25 -0
  54. package/dist/lib/neutral/chunk-7LOUAPYZ.mjs.map +7 -0
  55. package/dist/lib/neutral/chunk-7PI7C4EF.mjs +747 -0
  56. package/dist/lib/neutral/chunk-7PI7C4EF.mjs.map +7 -0
  57. package/dist/lib/neutral/chunk-BBFJWWAV.mjs +51 -0
  58. package/dist/lib/neutral/chunk-BBFJWWAV.mjs.map +7 -0
  59. package/dist/lib/neutral/chunk-EVK6XBXO.mjs +56 -0
  60. package/dist/lib/neutral/chunk-EVK6XBXO.mjs.map +7 -0
  61. package/dist/lib/neutral/chunk-IGK6FN65.mjs +27 -0
  62. package/dist/lib/neutral/chunk-IGK6FN65.mjs.map +7 -0
  63. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  64. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  65. package/dist/lib/neutral/chunk-LWXVKPPW.mjs +281 -0
  66. package/dist/lib/neutral/chunk-LWXVKPPW.mjs.map +7 -0
  67. package/dist/lib/neutral/chunk-MZ7K3MLL.mjs +48 -0
  68. package/dist/lib/neutral/chunk-MZ7K3MLL.mjs.map +7 -0
  69. package/dist/lib/neutral/chunk-O6BH7EPN.mjs +94 -0
  70. package/dist/lib/neutral/chunk-O6BH7EPN.mjs.map +7 -0
  71. package/dist/lib/neutral/chunk-QQIYS74I.mjs +336 -0
  72. package/dist/lib/neutral/chunk-QQIYS74I.mjs.map +7 -0
  73. package/dist/lib/neutral/chunk-R5W6DXR4.mjs +678 -0
  74. package/dist/lib/neutral/chunk-R5W6DXR4.mjs.map +7 -0
  75. package/dist/lib/neutral/chunk-RIVWNMSF.mjs +41 -0
  76. package/dist/lib/neutral/chunk-RIVWNMSF.mjs.map +7 -0
  77. package/dist/lib/neutral/chunk-SBVFRTST.mjs +160 -0
  78. package/dist/lib/neutral/chunk-SBVFRTST.mjs.map +7 -0
  79. package/dist/lib/neutral/chunk-T6E37YIP.mjs +251 -0
  80. package/dist/lib/neutral/chunk-T6E37YIP.mjs.map +7 -0
  81. package/dist/lib/neutral/chunk-TFEWTY5A.mjs +428 -0
  82. package/dist/lib/neutral/chunk-TFEWTY5A.mjs.map +7 -0
  83. package/dist/lib/neutral/chunk-TYGKCRMK.mjs +437 -0
  84. package/dist/lib/neutral/chunk-TYGKCRMK.mjs.map +7 -0
  85. package/dist/lib/neutral/chunk-UUP46KUQ.mjs +205 -0
  86. package/dist/lib/neutral/chunk-UUP46KUQ.mjs.map +7 -0
  87. package/dist/lib/neutral/chunk-WISOH2XH.mjs +36 -0
  88. package/dist/lib/neutral/chunk-WISOH2XH.mjs.map +7 -0
  89. package/dist/lib/neutral/chunk-WTQJHC75.mjs +395 -0
  90. package/dist/lib/neutral/chunk-WTQJHC75.mjs.map +7 -0
  91. package/dist/lib/neutral/chunk-WU3GIANS.mjs +31 -0
  92. package/dist/lib/neutral/chunk-WU3GIANS.mjs.map +7 -0
  93. package/dist/lib/neutral/chunk-ZGNNFYHS.mjs +132 -0
  94. package/dist/lib/neutral/chunk-ZGNNFYHS.mjs.map +7 -0
  95. package/dist/lib/neutral/index.mjs +111 -0
  96. package/dist/lib/neutral/index.mjs.map +7 -0
  97. package/dist/lib/neutral/internal/index.mjs +539 -0
  98. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  99. package/dist/lib/neutral/meta.json +1 -0
  100. package/dist/lib/neutral/testing/index.mjs +458 -0
  101. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  102. package/dist/types/src/Annotation.d.ts +128 -0
  103. package/dist/types/src/Annotation.d.ts.map +1 -0
  104. package/dist/types/src/Annotation.test.d.ts +2 -0
  105. package/dist/types/src/Annotation.test.d.ts.map +1 -0
  106. package/dist/types/src/Collection.d.ts +15 -0
  107. package/dist/types/src/Collection.d.ts.map +1 -0
  108. package/dist/types/src/Database.d.ts +208 -0
  109. package/dist/types/src/Database.d.ts.map +1 -0
  110. package/dist/types/src/Dataset.d.ts +29 -0
  111. package/dist/types/src/Dataset.d.ts.map +1 -0
  112. package/dist/types/src/Entity.d.ts +247 -0
  113. package/dist/types/src/Entity.d.ts.map +1 -0
  114. package/dist/types/src/Entity.test.d.ts +2 -0
  115. package/dist/types/src/Entity.test.d.ts.map +1 -0
  116. package/dist/types/src/Err.d.ts +107 -0
  117. package/dist/types/src/Err.d.ts.map +1 -0
  118. package/dist/types/src/Feed.d.ts +229 -0
  119. package/dist/types/src/Feed.d.ts.map +1 -0
  120. package/dist/types/src/Filter.d.ts +175 -0
  121. package/dist/types/src/Filter.d.ts.map +1 -0
  122. package/dist/types/src/Filter.test.d.ts +2 -0
  123. package/dist/types/src/Filter.test.d.ts.map +1 -0
  124. package/dist/types/src/Format.d.ts +2 -0
  125. package/dist/types/src/Format.d.ts.map +1 -0
  126. package/dist/types/src/Hypergraph.d.ts +70 -0
  127. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  128. package/dist/types/src/Json.d.ts +33 -0
  129. package/dist/types/src/Json.d.ts.map +1 -0
  130. package/dist/types/src/Json.test.d.ts +2 -0
  131. package/dist/types/src/Json.test.d.ts.map +1 -0
  132. package/dist/types/src/JsonSchema.d.ts +16 -0
  133. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  134. package/dist/types/src/Key.d.ts +2 -1
  135. package/dist/types/src/Key.d.ts.map +1 -1
  136. package/dist/types/src/Migration.d.ts +72 -0
  137. package/dist/types/src/Migration.d.ts.map +1 -0
  138. package/dist/types/src/Obj.d.ts +483 -110
  139. package/dist/types/src/Obj.d.ts.map +1 -1
  140. package/dist/types/src/Obj.test.d.ts +2 -0
  141. package/dist/types/src/Obj.test.d.ts.map +1 -0
  142. package/dist/types/src/Order.d.ts +26 -0
  143. package/dist/types/src/Order.d.ts.map +1 -0
  144. package/dist/types/src/Query.d.ts +231 -0
  145. package/dist/types/src/Query.d.ts.map +1 -0
  146. package/dist/types/src/Query.test.d.ts +2 -0
  147. package/dist/types/src/Query.test.d.ts.map +1 -0
  148. package/dist/types/src/QueryResult.d.ts +101 -0
  149. package/dist/types/src/QueryResult.d.ts.map +1 -0
  150. package/dist/types/src/Ref.d.ts +69 -11
  151. package/dist/types/src/Ref.d.ts.map +1 -1
  152. package/dist/types/src/Registry.d.ts +131 -0
  153. package/dist/types/src/Registry.d.ts.map +1 -0
  154. package/dist/types/src/Relation.d.ts +321 -23
  155. package/dist/types/src/Relation.d.ts.map +1 -1
  156. package/dist/types/src/Relation.test.d.ts +2 -0
  157. package/dist/types/src/Relation.test.d.ts.map +1 -0
  158. package/dist/types/src/Scope.d.ts +35 -0
  159. package/dist/types/src/Scope.d.ts.map +1 -0
  160. package/dist/types/src/Tag.d.ts +26 -9
  161. package/dist/types/src/Tag.d.ts.map +1 -1
  162. package/dist/types/src/Type.d.ts +397 -106
  163. package/dist/types/src/Type.d.ts.map +1 -1
  164. package/dist/types/src/Type.test.d.ts +2 -0
  165. package/dist/types/src/Type.test.d.ts.map +1 -0
  166. package/dist/types/src/View.d.ts +65 -0
  167. package/dist/types/src/View.d.ts.map +1 -0
  168. package/dist/types/src/exemplars.test.d.ts +2 -0
  169. package/dist/types/src/exemplars.test.d.ts.map +1 -0
  170. package/dist/types/src/hierarchy.test.d.ts +2 -0
  171. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  172. package/dist/types/src/index.d.ts +21 -5
  173. package/dist/types/src/index.d.ts.map +1 -1
  174. package/dist/types/src/internal/Annotation/annotations.d.ts +272 -0
  175. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  176. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  177. package/dist/types/src/internal/Annotation/dictionary.d.ts +24 -0
  178. package/dist/types/src/internal/Annotation/dictionary.d.ts.map +1 -0
  179. package/dist/types/src/internal/Annotation/entity-dictionary.d.ts +14 -0
  180. package/dist/types/src/internal/Annotation/entity-dictionary.d.ts.map +1 -0
  181. package/dist/types/src/internal/Annotation/index.d.ts +6 -0
  182. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  183. package/dist/types/src/internal/Annotation/sorting.d.ts +24 -0
  184. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  185. package/dist/types/src/internal/Annotation/util.d.ts +48 -0
  186. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  187. package/dist/types/src/internal/Entity/api.d.ts +27 -0
  188. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  189. package/dist/types/src/internal/Entity/entity.d.ts +84 -0
  190. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  191. package/dist/types/src/internal/Entity/guard.d.ts +10 -0
  192. package/dist/types/src/internal/Entity/guard.d.ts.map +1 -0
  193. package/dist/types/src/internal/Entity/index.d.ts +10 -0
  194. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  195. package/dist/types/src/internal/Entity/model.d.ts +59 -0
  196. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  197. package/dist/types/src/internal/Entity/object.d.ts +18 -0
  198. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  199. package/dist/types/src/internal/Entity/relation.d.ts +58 -0
  200. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  201. package/dist/types/src/internal/Entity/type-kind.d.ts +24 -0
  202. package/dist/types/src/internal/Entity/type-kind.d.ts.map +1 -0
  203. package/dist/types/src/internal/Entity/type-uri.d.ts +24 -0
  204. package/dist/types/src/internal/Entity/type-uri.d.ts.map +1 -0
  205. package/dist/types/src/internal/Entity/util.d.ts +2 -0
  206. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  207. package/dist/types/src/internal/Entity/version.d.ts +42 -0
  208. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  209. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  210. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  211. package/dist/types/src/internal/{formats → Format}/format.d.ts +7 -4
  212. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  213. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  214. package/dist/types/src/internal/{formats → Format}/index.d.ts +2 -2
  215. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  216. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  217. package/dist/types/src/internal/{formats → Format}/object.d.ts +3 -1
  218. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  219. package/dist/types/src/internal/{formats → Format}/select.d.ts +6 -4
  220. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  221. package/dist/types/src/internal/{formats → Format}/string.d.ts +4 -0
  222. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  223. package/dist/types/src/internal/{formats → Format}/types.d.ts +14 -10
  224. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  225. package/dist/types/src/internal/{json → JsonSchema}/annotations.d.ts +1 -1
  226. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  227. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  228. package/dist/types/src/internal/JsonSchema/index.d.ts +5 -0
  229. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  230. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  231. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +136 -35
  232. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  233. package/dist/types/src/internal/{json → JsonSchema}/json-schema.d.ts +6 -3
  234. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  235. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  236. package/dist/types/src/internal/Obj/atoms.d.ts +38 -0
  237. package/dist/types/src/internal/Obj/atoms.d.ts.map +1 -0
  238. package/dist/types/src/internal/Obj/clone.d.ts +8 -0
  239. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  240. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  241. package/dist/types/src/internal/{object/create.d.ts → Obj/create-object.d.ts} +15 -16
  242. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  243. package/dist/types/src/internal/Obj/create-object.test.d.ts +2 -0
  244. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  245. package/dist/types/src/internal/Obj/deleted.d.ts +6 -0
  246. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  247. package/dist/types/src/internal/Obj/index.d.ts +11 -0
  248. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  249. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  250. package/dist/types/src/internal/Obj/json-serializer.d.ts +45 -0
  251. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  252. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  253. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  254. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  255. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  256. package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
  257. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  258. package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
  259. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  260. package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
  261. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  262. package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
  263. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  264. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  265. package/dist/types/src/internal/Query/index.d.ts +2 -0
  266. package/dist/types/src/internal/Query/index.d.ts.map +1 -0
  267. package/dist/types/src/internal/Query/pretty.d.ts +10 -0
  268. package/dist/types/src/internal/Query/pretty.d.ts.map +1 -0
  269. package/dist/types/src/internal/Ref/atoms.d.ts +10 -0
  270. package/dist/types/src/internal/Ref/atoms.d.ts.map +1 -0
  271. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  272. package/dist/types/src/internal/Ref/ref-array.d.ts +21 -0
  273. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  274. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +88 -32
  275. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  276. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  277. package/dist/types/src/internal/Ref/utils.d.ts +8 -0
  278. package/dist/types/src/internal/Ref/utils.d.ts.map +1 -0
  279. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  280. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  281. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  282. package/dist/types/src/internal/Type/index.d.ts +3 -0
  283. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  284. package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -1
  285. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  286. package/dist/types/src/internal/Type/type-schema.d.ts +52 -0
  287. package/dist/types/src/internal/Type/type-schema.d.ts.map +1 -0
  288. package/dist/types/src/internal/common/api/index.d.ts +11 -0
  289. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  290. package/dist/types/src/internal/common/api/meta.d.ts +45 -0
  291. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  292. package/dist/types/src/internal/common/index.d.ts +4 -0
  293. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  294. package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
  295. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  296. package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -0
  297. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  298. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts +5 -0
  299. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  300. package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
  301. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  302. package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -0
  303. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  304. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  305. package/dist/types/src/internal/common/proxy/index.d.ts +14 -0
  306. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  307. package/dist/types/src/internal/common/proxy/json-serializer.d.ts +6 -0
  308. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  309. package/dist/types/src/internal/common/proxy/make-object.d.ts +20 -0
  310. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  311. package/dist/types/src/internal/common/proxy/ownership.d.ts +57 -0
  312. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  313. package/dist/types/src/internal/common/proxy/proxy-types.d.ts +18 -0
  314. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  315. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts +47 -0
  316. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  317. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
  318. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  319. package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
  320. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  321. package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
  322. package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
  323. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  324. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  325. package/dist/types/src/internal/common/proxy/symbols.d.ts +3 -0
  326. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  327. package/dist/types/src/internal/common/proxy/typed-handler.d.ts +64 -0
  328. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  329. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  330. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  331. package/dist/types/src/internal/common/types/base.d.ts +27 -0
  332. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  333. package/dist/types/src/internal/common/types/entity.d.ts +94 -0
  334. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  335. package/dist/types/src/internal/common/types/index.d.ts +7 -0
  336. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  337. package/dist/types/src/internal/common/types/meta.d.ts +54 -0
  338. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  339. package/dist/types/src/internal/common/types/model-symbols.d.ts +65 -0
  340. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  341. package/dist/types/src/internal/common/types/typename.d.ts +28 -0
  342. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  343. package/dist/types/src/internal/common/types/version.d.ts +15 -0
  344. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  345. package/dist/types/src/internal/common/types/well-known-types.d.ts +11 -0
  346. package/dist/types/src/internal/common/types/well-known-types.d.ts.map +1 -0
  347. package/dist/types/src/internal/index.d.ts +10 -14
  348. package/dist/types/src/internal/index.d.ts.map +1 -1
  349. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  350. package/dist/types/src/testing/index.d.ts +4 -3
  351. package/dist/types/src/testing/index.d.ts.map +1 -1
  352. package/dist/types/src/testing/registry.d.ts +9 -0
  353. package/dist/types/src/testing/registry.d.ts.map +1 -0
  354. package/dist/types/src/testing/test-data.d.ts +18 -0
  355. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  356. package/dist/types/src/testing/test-schema.d.ts +298 -0
  357. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  358. package/dist/types/src/testing/util.d.ts +23 -0
  359. package/dist/types/src/testing/util.d.ts.map +1 -0
  360. package/dist/types/tsconfig.tsbuildinfo +1 -1
  361. package/package.json +119 -66
  362. package/src/Annotation.test.ts +439 -0
  363. package/src/Annotation.ts +202 -0
  364. package/src/Collection.ts +33 -0
  365. package/src/Database.ts +345 -0
  366. package/src/Dataset.ts +34 -0
  367. package/src/Entity.test.ts +132 -0
  368. package/src/Entity.ts +345 -0
  369. package/src/Err.ts +40 -0
  370. package/src/Feed.ts +352 -0
  371. package/src/Filter.test.ts +90 -0
  372. package/src/Filter.ts +484 -0
  373. package/src/Format.ts +5 -0
  374. package/src/Hypergraph.ts +84 -0
  375. package/src/Json.test.ts +175 -0
  376. package/src/Json.ts +103 -0
  377. package/src/JsonSchema.ts +26 -0
  378. package/src/Key.ts +4 -1
  379. package/src/Migration.ts +114 -0
  380. package/src/Obj.test.ts +641 -0
  381. package/src/Obj.ts +778 -281
  382. package/src/Order.ts +68 -0
  383. package/src/Query.test.ts +835 -0
  384. package/src/Query.ts +634 -0
  385. package/src/QueryResult.ts +132 -0
  386. package/src/Ref.ts +98 -10
  387. package/src/Registry.ts +155 -0
  388. package/src/Relation.test.ts +88 -0
  389. package/src/Relation.ts +503 -67
  390. package/src/Scope.ts +50 -0
  391. package/src/Tag.md +88 -0
  392. package/src/Tag.ts +53 -8
  393. package/src/Type.test.ts +257 -0
  394. package/src/Type.ts +643 -151
  395. package/src/View.ts +98 -0
  396. package/src/exemplars.test.ts +21 -0
  397. package/src/hierarchy.test.ts +33 -0
  398. package/src/index.ts +22 -6
  399. package/src/internal/Annotation/annotations.test.ts +165 -0
  400. package/src/internal/Annotation/annotations.ts +609 -0
  401. package/src/internal/Annotation/dictionary.ts +47 -0
  402. package/src/internal/Annotation/entity-dictionary.ts +74 -0
  403. package/src/internal/Annotation/index.ts +9 -0
  404. package/src/internal/Annotation/sorting.ts +51 -0
  405. package/src/internal/Annotation/util.ts +94 -0
  406. package/src/internal/Entity/api.ts +77 -0
  407. package/src/internal/Entity/entity.ts +277 -0
  408. package/src/internal/Entity/guard.ts +26 -0
  409. package/src/internal/Entity/index.ts +13 -0
  410. package/src/internal/Entity/model.ts +119 -0
  411. package/src/internal/Entity/object.ts +73 -0
  412. package/src/internal/Entity/relation.ts +188 -0
  413. package/src/internal/Entity/type-kind.ts +75 -0
  414. package/src/internal/Entity/type-uri.ts +92 -0
  415. package/src/internal/Entity/util.ts +33 -0
  416. package/src/internal/Entity/version.ts +96 -0
  417. package/src/internal/{formats → Format}/date.test.ts +1 -2
  418. package/src/internal/{formats → Format}/date.ts +5 -9
  419. package/src/internal/{formats → Format}/format.test.ts +27 -7
  420. package/src/internal/{formats → Format}/format.ts +8 -6
  421. package/src/internal/{formats → Format}/index.ts +2 -3
  422. package/src/internal/{formats → Format}/number.ts +5 -5
  423. package/src/internal/{formats → Format}/object.ts +23 -6
  424. package/src/internal/{formats → Format}/select.ts +6 -4
  425. package/src/internal/{formats → Format}/string.ts +14 -9
  426. package/src/internal/{formats → Format}/types.ts +54 -43
  427. package/src/internal/{json → JsonSchema}/annotations.ts +3 -3
  428. package/src/internal/{json-schema → JsonSchema}/index.ts +2 -0
  429. package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +4 -2
  430. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +39 -39
  431. package/src/internal/{json → JsonSchema}/json-schema.test.ts +119 -182
  432. package/src/internal/{json → JsonSchema}/json-schema.ts +70 -42
  433. package/src/internal/Obj/atoms.ts +244 -0
  434. package/src/internal/Obj/clone.ts +53 -0
  435. package/src/internal/{object → Obj}/common.ts +3 -4
  436. package/src/internal/Obj/create-object.test.ts +116 -0
  437. package/src/internal/Obj/create-object.ts +140 -0
  438. package/src/internal/Obj/deleted.ts +19 -0
  439. package/src/internal/Obj/index.ts +14 -0
  440. package/src/internal/{object → Obj}/inspect.ts +7 -7
  441. package/src/internal/Obj/json-serializer.test.ts +199 -0
  442. package/src/internal/Obj/json-serializer.ts +278 -0
  443. package/src/internal/{object → Obj}/schema-validator.test.ts +3 -7
  444. package/src/internal/Obj/schema-validator.ts +6 -0
  445. package/src/internal/Obj/set-value.test.ts +258 -0
  446. package/src/internal/Obj/set-value.ts +158 -0
  447. package/src/internal/Obj/snapshot.ts +114 -0
  448. package/src/internal/Obj/typed-object.test.ts +32 -0
  449. package/src/internal/Obj/typed-object.ts +30 -0
  450. package/src/internal/{json → Query}/index.ts +1 -1
  451. package/src/internal/Query/pretty.ts +162 -0
  452. package/src/internal/Ref/atoms.ts +20 -0
  453. package/src/internal/{ref → Ref}/ref-array.ts +6 -7
  454. package/src/internal/Ref/ref.test.ts +91 -0
  455. package/src/internal/{ref → Ref}/ref.ts +230 -101
  456. package/src/internal/Ref/utils.ts +45 -0
  457. package/src/internal/{projection → Type}/compose.test.ts +9 -9
  458. package/src/internal/{projection → Type}/compose.ts +14 -9
  459. package/src/internal/Type/index.ts +6 -0
  460. package/src/internal/{schema → Type}/manipulation.ts +0 -25
  461. package/src/internal/Type/type-schema.ts +60 -0
  462. package/src/internal/common/README.md +102 -0
  463. package/src/internal/common/api/index.ts +15 -0
  464. package/src/internal/common/api/meta.ts +90 -0
  465. package/src/internal/{testing → common}/index.ts +2 -1
  466. package/src/internal/common/proxy/change-context.ts +138 -0
  467. package/src/internal/common/proxy/change.test.ts +527 -0
  468. package/src/internal/common/proxy/define-hidden-property.ts +14 -0
  469. package/src/internal/common/proxy/errors.ts +42 -0
  470. package/src/internal/common/proxy/event-batch.ts +44 -0
  471. package/src/internal/common/proxy/handler.test.ts +121 -0
  472. package/src/internal/common/proxy/index.ts +17 -0
  473. package/src/internal/common/proxy/json-serializer.ts +101 -0
  474. package/src/internal/common/proxy/make-object.ts +129 -0
  475. package/src/internal/common/proxy/ownership.ts +252 -0
  476. package/src/internal/common/proxy/proxy-types.ts +23 -0
  477. package/src/internal/common/proxy/proxy-utils.ts +150 -0
  478. package/src/internal/common/proxy/reactive-array.ts +71 -0
  479. package/src/internal/common/proxy/reactive.test.ts +54 -0
  480. package/src/internal/common/proxy/reactive.ts +77 -0
  481. package/src/internal/{object → common/proxy}/schema-validator.ts +6 -3
  482. package/src/internal/common/proxy/schema.test.ts +107 -0
  483. package/src/internal/common/proxy/symbols.ts +7 -0
  484. package/src/internal/common/proxy/typed-handler.test.ts +314 -0
  485. package/src/internal/common/proxy/typed-handler.ts +509 -0
  486. package/src/internal/common/proxy/typed-object.test.ts +103 -0
  487. package/src/internal/common/types/base.ts +43 -0
  488. package/src/internal/common/types/entity.ts +133 -0
  489. package/src/internal/common/types/index.ts +15 -0
  490. package/src/internal/common/types/meta.ts +109 -0
  491. package/src/internal/common/types/model-symbols.ts +89 -0
  492. package/src/internal/common/types/typename.ts +91 -0
  493. package/src/internal/common/types/version.ts +19 -0
  494. package/src/internal/common/types/well-known-types.ts +15 -0
  495. package/src/internal/index.ts +14 -17
  496. package/src/testing/api.test.ts +131 -0
  497. package/src/testing/index.ts +4 -3
  498. package/src/testing/registry.ts +44 -0
  499. package/src/testing/test-data.ts +189 -0
  500. package/src/testing/test-schema.ts +204 -0
  501. package/src/testing/util.ts +88 -0
  502. package/dist/lib/browser/chunk-BIDAASFK.mjs +0 -3727
  503. package/dist/lib/browser/chunk-BIDAASFK.mjs.map +0 -7
  504. package/dist/lib/browser/chunk-ZDLCWGEW.mjs +0 -410
  505. package/dist/lib/browser/chunk-ZDLCWGEW.mjs.map +0 -7
  506. package/dist/lib/browser/chunk-ZFRJKT4A.mjs +0 -585
  507. package/dist/lib/browser/chunk-ZFRJKT4A.mjs.map +0 -7
  508. package/dist/lib/browser/index.mjs +0 -35
  509. package/dist/lib/browser/internal/index.mjs +0 -336
  510. package/dist/lib/browser/meta.json +0 -1
  511. package/dist/lib/browser/query/index.mjs +0 -13
  512. package/dist/lib/browser/testing/index.mjs +0 -267
  513. package/dist/lib/browser/testing/index.mjs.map +0 -7
  514. package/dist/lib/node-esm/chunk-3SVRRCUU.mjs +0 -3727
  515. package/dist/lib/node-esm/chunk-3SVRRCUU.mjs.map +0 -7
  516. package/dist/lib/node-esm/chunk-CGDHRZWH.mjs +0 -585
  517. package/dist/lib/node-esm/chunk-CGDHRZWH.mjs.map +0 -7
  518. package/dist/lib/node-esm/chunk-HWS6VBQC.mjs +0 -410
  519. package/dist/lib/node-esm/chunk-HWS6VBQC.mjs.map +0 -7
  520. package/dist/lib/node-esm/index.mjs +0 -35
  521. package/dist/lib/node-esm/internal/index.mjs +0 -336
  522. package/dist/lib/node-esm/meta.json +0 -1
  523. package/dist/lib/node-esm/query/index.mjs +0 -13
  524. package/dist/lib/node-esm/testing/index.mjs +0 -267
  525. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  526. package/dist/types/src/errors.d.ts +0 -68
  527. package/dist/types/src/errors.d.ts.map +0 -1
  528. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  529. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  530. package/dist/types/src/internal/ast/annotations.d.ts +0 -131
  531. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  532. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  533. package/dist/types/src/internal/ast/entity-kind.d.ts +0 -10
  534. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  535. package/dist/types/src/internal/ast/index.d.ts +0 -5
  536. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  537. package/dist/types/src/internal/ast/types.d.ts +0 -6
  538. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  539. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  540. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  541. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  542. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  543. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  544. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  545. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  546. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  547. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  548. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  549. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  550. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  551. package/dist/types/src/internal/json/index.d.ts +0 -2
  552. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  553. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  554. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  555. package/dist/types/src/internal/json-schema/index.d.ts +0 -3
  556. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  557. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  558. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  559. package/dist/types/src/internal/object/accessors.d.ts +0 -37
  560. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  561. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  562. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  563. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  564. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  565. package/dist/types/src/internal/object/deleted.d.ts +0 -6
  566. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  567. package/dist/types/src/internal/object/entity.d.ts +0 -33
  568. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  569. package/dist/types/src/internal/object/expando.d.ts +0 -14
  570. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  571. package/dist/types/src/internal/object/ids.d.ts +0 -6
  572. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  573. package/dist/types/src/internal/object/index.d.ts +0 -16
  574. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  575. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  576. package/dist/types/src/internal/object/json-serializer.d.ts +0 -32
  577. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  578. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  579. package/dist/types/src/internal/object/meta.d.ts +0 -31
  580. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  581. package/dist/types/src/internal/object/model.d.ts +0 -117
  582. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  583. package/dist/types/src/internal/object/relation.d.ts +0 -17
  584. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  585. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  586. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  587. package/dist/types/src/internal/object/typed-object.d.ts +0 -31
  588. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  589. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  590. package/dist/types/src/internal/object/typename.d.ts +0 -15
  591. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  592. package/dist/types/src/internal/object/version.d.ts +0 -14
  593. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  594. package/dist/types/src/internal/projection/compose.d.ts +0 -6
  595. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  596. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  597. package/dist/types/src/internal/projection/index.d.ts +0 -2
  598. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  599. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  600. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  601. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  602. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  603. package/dist/types/src/internal/proxy/typed-handler.d.ts +0 -44
  604. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  605. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  606. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  607. package/dist/types/src/internal/query/index.d.ts +0 -2
  608. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  609. package/dist/types/src/internal/query/query.d.ts +0 -17
  610. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  611. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  612. package/dist/types/src/internal/ref/ref-array.d.ts +0 -21
  613. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  614. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  615. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  616. package/dist/types/src/internal/schema/echo-schema.d.ts +0 -168
  617. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  618. package/dist/types/src/internal/schema/index.d.ts +0 -7
  619. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  620. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  621. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  622. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  623. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  624. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  625. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  626. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  627. package/dist/types/src/internal/testing/index.d.ts +0 -3
  628. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  629. package/dist/types/src/internal/testing/types.d.ts +0 -381
  630. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  631. package/dist/types/src/internal/testing/utils.d.ts +0 -10
  632. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  633. package/dist/types/src/internal/types/index.d.ts +0 -3
  634. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  635. package/dist/types/src/internal/types/types.d.ts +0 -79
  636. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  637. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  638. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  639. package/dist/types/src/internal/types/util.d.ts +0 -5
  640. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  641. package/dist/types/src/query/index.d.ts +0 -2
  642. package/dist/types/src/query/index.d.ts.map +0 -1
  643. package/dist/types/src/query/query.d.ts +0 -248
  644. package/dist/types/src/query/query.d.ts.map +0 -1
  645. package/dist/types/src/query/query.test.d.ts +0 -2
  646. package/dist/types/src/query/query.test.d.ts.map +0 -1
  647. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  648. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  649. package/dist/types/src/testing/types.d.ts +0 -228
  650. package/dist/types/src/testing/types.d.ts.map +0 -1
  651. package/src/errors.ts +0 -18
  652. package/src/internal/ast/annotation-helper.ts +0 -22
  653. package/src/internal/ast/annotations.test.ts +0 -98
  654. package/src/internal/ast/annotations.ts +0 -226
  655. package/src/internal/ast/entity-kind.ts +0 -15
  656. package/src/internal/ast/index.ts +0 -8
  657. package/src/internal/ast/types.ts +0 -17
  658. package/src/internal/object/accessors.ts +0 -153
  659. package/src/internal/object/create.test.ts +0 -118
  660. package/src/internal/object/create.ts +0 -96
  661. package/src/internal/object/deleted.ts +0 -19
  662. package/src/internal/object/entity.ts +0 -248
  663. package/src/internal/object/expando.ts +0 -21
  664. package/src/internal/object/ids.ts +0 -12
  665. package/src/internal/object/index.ts +0 -19
  666. package/src/internal/object/json-serializer.test.ts +0 -99
  667. package/src/internal/object/json-serializer.ts +0 -225
  668. package/src/internal/object/meta.ts +0 -61
  669. package/src/internal/object/model.ts +0 -170
  670. package/src/internal/object/relation.ts +0 -24
  671. package/src/internal/object/typed-object.test.ts +0 -34
  672. package/src/internal/object/typed-object.ts +0 -88
  673. package/src/internal/object/typename.ts +0 -61
  674. package/src/internal/object/version.ts +0 -22
  675. package/src/internal/projection/index.ts +0 -5
  676. package/src/internal/proxy/handler.test.ts +0 -163
  677. package/src/internal/proxy/reactive-object.ts +0 -108
  678. package/src/internal/proxy/schema.test.ts +0 -136
  679. package/src/internal/proxy/typed-handler.test.ts +0 -102
  680. package/src/internal/proxy/typed-handler.ts +0 -228
  681. package/src/internal/proxy/typed-object.test.ts +0 -100
  682. package/src/internal/query/index.ts +0 -5
  683. package/src/internal/query/query.ts +0 -23
  684. package/src/internal/ref/ref.test.ts +0 -100
  685. package/src/internal/schema/echo-schema.ts +0 -383
  686. package/src/internal/schema/index.ts +0 -10
  687. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  688. package/src/internal/schema/snapshot.ts +0 -25
  689. package/src/internal/schema/stored-schema.ts +0 -26
  690. package/src/internal/testing/types.ts +0 -144
  691. package/src/internal/testing/utils.ts +0 -54
  692. package/src/internal/types/index.ts +0 -6
  693. package/src/internal/types/types.test.ts +0 -48
  694. package/src/internal/types/types.ts +0 -176
  695. package/src/internal/types/util.ts +0 -9
  696. package/src/query/index.ts +0 -6
  697. package/src/query/query.test.ts +0 -401
  698. package/src/query/query.ts +0 -789
  699. package/src/test/api.test.ts +0 -180
  700. package/src/testing/echo-schema.ts +0 -39
  701. package/src/testing/types.ts +0 -108
  702. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  703. /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
  704. /package/dist/lib/{browser/query/index.mjs.map → neutral/Entity.mjs.map} +0 -0
  705. /package/dist/lib/{node-esm/index.mjs.map → neutral/Err.mjs.map} +0 -0
  706. /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Feed.mjs.map} +0 -0
  707. /package/dist/lib/{node-esm/query/index.mjs.map → neutral/Filter.mjs.map} +0 -0
  708. /package/dist/types/src/internal/{ast → Annotation}/annotations.test.d.ts +0 -0
  709. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  710. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  711. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  712. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  713. /package/dist/types/src/internal/{json → JsonSchema}/effect-schema.test.d.ts +0 -0
  714. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  715. /package/dist/types/src/internal/{json → JsonSchema}/json-schema.test.d.ts +0 -0
  716. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  717. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  718. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  719. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  720. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  721. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  722. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  723. /package/dist/types/src/internal/{projection → Type}/compose.test.d.ts +0 -0
  724. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  725. /package/dist/types/src/internal/{object → common/proxy}/schema-validator.d.ts +0 -0
  726. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  727. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  728. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  729. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  730. /package/src/internal/{json → JsonSchema}/effect-schema.test.ts +0 -0
  731. /package/src/internal/{ref → Ref}/index.ts +0 -0
@@ -2,40 +2,55 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import type * as Atom from '@effect-atom/atom/Atom';
5
6
  import * as Effect from 'effect/Effect';
7
+ import * as Equal from 'effect/Equal';
8
+ import * as Hash from 'effect/Hash';
6
9
  import * as Option from 'effect/Option';
7
10
  import * as ParseResult from 'effect/ParseResult';
11
+ import * as Pipeable from 'effect/Pipeable';
8
12
  import * as Schema from 'effect/Schema';
9
13
  import * as SchemaAST from 'effect/SchemaAST';
14
+ import type * as Types from 'effect/Types';
10
15
 
11
- import { type EncodedReference, Reference } from '@dxos/echo-protocol';
12
- import { compositeRuntime } from '@dxos/echo-signals/runtime';
16
+ import { Event } from '@dxos/async';
17
+ import { type CustomInspectFunction, inspectCustom } from '@dxos/debug';
18
+ import { EncodedReference } from '@dxos/echo-protocol';
13
19
  import { assertArgument, invariant } from '@dxos/invariant';
14
- import { DXN, ObjectId } from '@dxos/keys';
15
-
16
- import { ReferenceAnnotationId, getSchemaDXN, getTypeAnnotation, getTypeIdentifierAnnotation } from '../ast';
17
- import { type JsonSchemaType } from '../json-schema';
18
- import type { BaseObject, WithId } from '../types';
20
+ import { DXN, EID, EntityId, type URI } from '@dxos/keys';
21
+
22
+ import * as Database from '../../Database';
23
+ import type * as Type from '../../Type';
24
+ import {
25
+ ReferenceAnnotationId,
26
+ getSchemaURI,
27
+ getTypeAnnotation,
28
+ getTypeIdentifierAnnotation,
29
+ } from '../Annotation/annotations';
30
+ import { type AnyEntity, type AnyProperties, type UnknownTypeSchema, getStaticTypeSchema } from '../common/types';
31
+ import { type JsonSchemaType } from '../JsonSchema';
32
+ import * as RefAtoms from './atoms';
19
33
 
20
34
  /**
21
35
  * The `$id` and `$ref` fields for an ECHO reference schema.
22
36
  */
23
37
  export const JSON_SCHEMA_ECHO_REF_ID = '/schemas/echo/ref';
24
38
 
25
- // TODO(burdon): Define return type.
26
39
  export const getSchemaReference = (property: JsonSchemaType): { typename: string } | undefined => {
27
40
  const { $id, reference: { schema: { $ref } = {} } = {} } = property;
28
41
  if ($id === JSON_SCHEMA_ECHO_REF_ID && $ref) {
29
- return { typename: DXN.parse($ref).typename };
42
+ const parsed = DXN.tryMake($ref);
43
+ const typename = parsed ? DXN.getName(parsed) : undefined;
44
+ return typename ? { typename } : undefined;
30
45
  }
31
46
  };
32
47
 
33
- export const createSchemaReference = (typename: string): JsonSchemaType => {
48
+ export const createSchemaReference = (typename: string): Types.DeepMutable<JsonSchemaType> => {
34
49
  return {
35
50
  $id: JSON_SCHEMA_ECHO_REF_ID,
36
51
  reference: {
37
52
  schema: {
38
- $ref: DXN.fromTypename(typename).toString(),
53
+ $ref: DXN.make(typename),
39
54
  },
40
55
  },
41
56
  };
@@ -71,26 +86,48 @@ export const RefTypeId: unique symbol = Symbol('@dxos/echo/internal/Ref');
71
86
  /**
72
87
  * Reference Schema.
73
88
  */
74
- export interface Ref$<T extends WithId> extends Schema.SchemaClass<Ref<T>, EncodedReference> {}
89
+ export interface RefSchema<T extends AnyEntity> extends Schema.SchemaClass<Ref<T>, EncodedReference> {}
75
90
 
76
- // Type of the `Ref` function and extra methods attached to it.
91
+ /**
92
+ * Type of the `Ref` function and extra methods attached to it.
93
+ */
77
94
  export interface RefFn {
78
- <S extends Schema.Schema.Any>(schema: S): Ref$<Schema.Schema.Type<S>>;
95
+ // A reference target is a `Type.AnyEntity` entity (the canonical Option B
96
+ // input) or one of the well-known "any object" / "any relation" branded
97
+ // schemas (`Obj.Unknown` / `Relation.Unknown`). Arbitrary raw schemas are
98
+ // rejected.
99
+ //
100
+ // Referencing a type-kind entity (a meta-schema, e.g. `Type.Type`) yields a
101
+ // reference to a stored schema record; its loaded target is any registered
102
+ // entity (`Type.AnyEntity`), since a stored object/relation schema is itself a
103
+ // `Type.Type` record. Referencing an object/relation type yields a reference
104
+ // to an instance of that type.
105
+ <S extends Type.AnyEntity | UnknownTypeSchema<any, any> = Type.AnyEntity>(
106
+ schema: S,
107
+ ): RefSchema<
108
+ S extends Type.AnyType
109
+ ? Type.AnyEntity
110
+ : S extends Type.AnyObj | Type.AnyRelation
111
+ ? Type.InstanceType<S>
112
+ : S extends UnknownTypeSchema<infer A, any>
113
+ ? A
114
+ : never
115
+ >;
79
116
 
80
117
  /**
81
118
  * @returns True if the object is a reference.
82
119
  */
83
- isRef: (obj: any) => obj is Ref<any>;
120
+ isRef: (obj: unknown) => obj is Ref<any>;
84
121
 
85
122
  /**
86
123
  * @returns True if the reference points to the given object id.
87
124
  */
88
- hasObjectId: (id: ObjectId) => (ref: Ref<any>) => boolean;
125
+ hasEntityId: (id: EntityId) => (ref: Ref<any>) => boolean;
89
126
 
90
127
  /**
91
128
  * @returns True if the schema is a reference schema.
92
129
  */
93
- isRefSchema: (schema: Schema.Schema<any, any>) => schema is Ref$<any>;
130
+ isRefSchema: (schema: Schema.Schema<any, any>) => schema is RefSchema<any>;
94
131
 
95
132
  /**
96
133
  * @returns True if the schema AST is a reference schema.
@@ -100,49 +137,51 @@ export interface RefFn {
100
137
  /**
101
138
  * Constructs a reference that points to the given object.
102
139
  */
103
- // TODO(burdon): Tighten type of T?
104
- make: <T extends WithId>(object: T) => Ref<T>;
140
+ // TODO(burdon): Narrow to Obj.Unknown?
141
+ make: <T extends AnyEntity>(object: T) => Ref<T>;
105
142
 
106
143
  /**
107
- * Constructs a reference that points to the object specified by the provided DXN.
144
+ * Constructs a reference that points to the object specified by the provided URI
145
+ * (either an `echo:` EID for an object reference or a `dxn:` DXN for a type reference).
108
146
  */
109
- fromDXN: (dxn: DXN) => Ref<any>;
147
+ fromURI: (uri: URI.URI) => Ref<any>;
110
148
  }
149
+
111
150
  /**
112
151
  * Schema builder for references.
113
152
  */
114
- export const Ref: RefFn = <S extends Schema.Schema.Any>(schema: S): Ref$<Schema.Schema.Type<S>> => {
153
+ export const Ref: RefFn = (input: any): RefSchema<any> => {
154
+ // `Type.Type` entities carry their source schema on the hidden slot; the
155
+ // branded `Obj.Unknown` / `Relation.Unknown` schemas are used directly.
156
+ const schema = getStaticTypeSchema(input) ?? input;
115
157
  assertArgument(Schema.isSchema(schema), 'schema', 'Must call with an instance of effect-schema');
116
-
117
158
  const annotation = getTypeAnnotation(schema);
118
159
  if (annotation == null) {
119
160
  throw new Error('Reference target must be an ECHO schema.');
120
161
  }
121
162
 
122
- return createEchoReferenceSchema(
123
- getTypeIdentifierAnnotation(schema),
124
- annotation.typename,
125
- annotation.version,
126
- getSchemaExpectedName(schema.ast),
127
- );
163
+ return createEchoReferenceSchema(getTypeIdentifierAnnotation(schema), annotation.typename, annotation.version);
128
164
  };
129
165
 
130
166
  /**
131
167
  * Represents materialized reference to a target.
132
168
  * This is the data type for the fields marked as ref.
133
169
  */
134
- export interface Ref<T> {
170
+ export interface Ref<T> extends Pipeable.Pipeable {
135
171
  /**
136
- * Target object DXN.
172
+ * Target URI (either an `echo:` EID for an object reference or a `dxn:` DXN for a type reference).
137
173
  */
138
- get dxn(): DXN;
174
+ get uri(): URI.URI;
175
+
176
+ /**
177
+ * Returns true if the reference has a target available (inlined or resolver set).
178
+ */
179
+ get isAvailable(): boolean;
139
180
 
140
181
  /**
141
182
  * @returns The reference target.
142
183
  * May return `undefined` if the object is not loaded in the working set.
143
184
  * Accessing this property, even if it returns `undefined` will trigger the object to be loaded to the working set.
144
- *
145
- * @reactive Supports signal subscriptions.
146
185
  */
147
186
  get target(): T | undefined;
148
187
 
@@ -156,8 +195,19 @@ export interface Ref<T> {
156
195
  /**
157
196
  * @returns Promise that will resolves with the target object or undefined if the object is not loaded locally.
158
197
  */
198
+
159
199
  tryLoad(): Promise<T | undefined>;
160
200
 
201
+ /**
202
+ * Subscribe to the ref's resolution event.
203
+ * The callback fires when the target object becomes available in the working set
204
+ * (e.g. when its document is loaded after sibling-client mutation).
205
+ * Note: the resolver only schedules a notification when the target is requested
206
+ * via {@link target} while it is not yet loaded.
207
+ * @returns Function that unsubscribes the callback.
208
+ */
209
+ onResolved(callback: () => void): () => void;
210
+
161
211
  /**
162
212
  * Do not inline the target object in the reference.
163
213
  * Makes .target unavailable unless the reference is connected to a database context.
@@ -171,6 +221,13 @@ export interface Ref<T> {
171
221
  */
172
222
  noInline(): Ref<T>;
173
223
 
224
+ /**
225
+ * Read-only atom for the ref target.
226
+ * Resolves once when the target loads; does NOT subscribe to target object mutations.
227
+ * Use `Obj.atom(ref)` if you need reactive snapshots that update on every object mutation.
228
+ */
229
+ get atom(): Atom.Atom<T | undefined>;
230
+
174
231
  /**
175
232
  * Serializes the reference to a JSON object.
176
233
  * The serialization format is compatible with the IPLD-style encoded references.
@@ -199,9 +256,12 @@ Ref.isRef = (obj: any): obj is Ref<any> => {
199
256
  return obj && typeof obj === 'object' && RefTypeId in obj;
200
257
  };
201
258
 
202
- Ref.hasObjectId = (id: ObjectId) => (ref: Ref<any>) => ref.dxn.isLocalObjectId() && ref.dxn.parts[1] === id;
259
+ Ref.hasEntityId = (id: EntityId) => (ref: Ref<any>) => {
260
+ const uri = EID.tryParse(ref.uri);
261
+ return uri !== undefined && EID.isLocal(uri) && EID.getEntityId(uri) === id;
262
+ };
203
263
 
204
- Ref.isRefSchema = (schema: Schema.Schema<any, any>): schema is Ref$<any> => {
264
+ Ref.isRefSchema = (schema: Schema.Schema<any, any>): schema is RefSchema<any> => {
205
265
  return Ref.isRefSchemaAST(schema.ast);
206
266
  };
207
267
 
@@ -209,21 +269,21 @@ Ref.isRefSchemaAST = (ast: SchemaAST.AST): boolean => {
209
269
  return SchemaAST.getAnnotation(ast, ReferenceAnnotationId).pipe(Option.isSome);
210
270
  };
211
271
 
212
- Ref.make = <T extends BaseObject>(obj: T): Ref<T> => {
272
+ Ref.make = <T extends AnyProperties>(obj: T): Ref<T> => {
213
273
  if (typeof obj !== 'object' || obj === null) {
214
274
  throw new TypeError('Expected: ECHO object.');
215
275
  }
216
276
 
217
- // TODO(dmaretskyi): Extract to `getObjectDXN` function.
277
+ // TODO(dmaretskyi): Extract to `getObjectEchoUri` function.
218
278
  const id = obj.id;
219
- invariant(ObjectId.isValid(id), 'Invalid object ID');
220
- const dxn = Reference.localObjectReference(id).toDXN();
221
- return new RefImpl(dxn, obj);
279
+ invariant(EntityId.isValid(id), 'Invalid object ID');
280
+ const uri = EID.make({ entityId: id });
281
+ return new RefImpl(uri, obj);
222
282
  };
223
283
 
224
- Ref.fromDXN = (dxn: DXN): Ref<any> => {
225
- assertArgument(dxn instanceof DXN, 'dxn', 'Expected DXN');
226
- return new RefImpl(dxn);
284
+ Ref.fromURI = (uri: URI.URI): Ref<any> => {
285
+ assertArgument(typeof uri === 'string', 'uri', 'Expected URI string');
286
+ return new RefImpl(uri);
227
287
  };
228
288
 
229
289
  /**
@@ -239,19 +299,18 @@ export type JsonSchemaReferenceInfo = {
239
299
  */
240
300
  // TODO(burdon): Move to json schema and make private?
241
301
  export const createEchoReferenceSchema = (
242
- echoId: string | undefined,
302
+ echoUri: string | undefined,
243
303
  typename: string | undefined,
244
304
  version: string | undefined,
245
- schemaName?: string,
246
305
  ): Schema.SchemaClass<Ref<any>, EncodedReference> => {
247
- if (!echoId && !typename) {
248
- throw new TypeError('Either echoId or typename must be provided.');
306
+ if (!echoUri && !typename) {
307
+ throw new TypeError('Either echoUri or typename must be provided.');
249
308
  }
250
309
 
251
310
  const referenceInfo: JsonSchemaReferenceInfo = {
252
311
  schema: {
253
312
  // TODO(dmaretskyi): Include version?
254
- $ref: echoId ?? DXN.fromTypename(typename!).toString(),
313
+ $ref: echoUri ?? DXN.make(typename!),
255
314
  },
256
315
  schemaVersion: version,
257
316
  };
@@ -261,25 +320,39 @@ export const createEchoReferenceSchema = (
261
320
  [],
262
321
  {
263
322
  encode: () => {
264
- return (value) => {
265
- return Effect.succeed({
266
- '/': (value as Ref<any>).dxn.toString(),
323
+ return (value) =>
324
+ Effect.gen(function* () {
325
+ if (Ref.isRef(value)) {
326
+ return EncodedReference.fromURI((value as Ref<any>).uri);
327
+ } else if (EncodedReference.isEncodedReference(value)) {
328
+ return value;
329
+ }
330
+ throw new Error('Invalid reference');
267
331
  });
268
- };
269
332
  },
270
333
  decode: () => {
271
- return (value) => {
272
- // TODO(dmaretskyi): This branch seems to be taken by Schema.is
273
- if (Ref.isRef(value)) {
274
- return Effect.succeed(value);
275
- }
276
-
277
- if (typeof value !== 'object' || value == null || typeof (value as any)['/'] !== 'string') {
278
- return Effect.fail(new ParseResult.Unexpected(value, 'reference'));
279
- }
280
-
281
- return Effect.succeed(Ref.fromDXN(DXN.parse((value as any)['/'])));
282
- };
334
+ return (value) =>
335
+ Effect.gen(function* () {
336
+ const dbService = yield* Effect.serviceOption(Database.Service);
337
+
338
+ // TODO(dmaretskyi): This branch seems to be taken by Schema.is
339
+ if (Ref.isRef(value)) {
340
+ if (Option.isSome(dbService)) {
341
+ return dbService.value.db.makeRef(value.uri);
342
+ } else {
343
+ return value;
344
+ }
345
+ }
346
+
347
+ if (!EncodedReference.isEncodedReference(value)) {
348
+ return yield* Effect.fail(new ParseResult.Unexpected(value, 'reference'));
349
+ }
350
+ if (Option.isSome(dbService)) {
351
+ return dbService.value.db.makeRef(EncodedReference.toURI(value));
352
+ } else {
353
+ return Ref.fromURI(EncodedReference.toURI(value));
354
+ }
355
+ });
283
356
  },
284
357
  },
285
358
  {
@@ -311,25 +384,34 @@ export interface RefResolver {
311
384
  /**
312
385
  * Resolve ref synchronously from the objects in the working set.
313
386
  *
314
- * @param dxn
387
+ * @param uri
315
388
  * @param load If true the resolver should attempt to load the object from disk.
316
389
  * @param onLoad Callback to call when the object is loaded.
317
390
  */
318
- resolveSync(dxn: DXN, load: boolean, onLoad?: () => void): BaseObject | undefined;
391
+ resolveSync(uri: URI.URI, load: boolean, onLoad?: () => void): AnyProperties | undefined;
319
392
 
320
393
  /**
321
394
  * Resolver ref asynchronously.
322
395
  */
323
- resolve(dxn: DXN): Promise<BaseObject | undefined>;
396
+ resolve(uri: URI.URI): Promise<AnyProperties | undefined>;
324
397
 
325
398
  // TODO(dmaretskyi): Combine with `resolve`.
326
- resolveSchema(dxn: DXN): Promise<Schema.Schema.AnyNoContext | undefined>;
399
+ resolveSchema(uri: URI.URI): Promise<Schema.Schema.AnyNoContext | undefined>;
400
+
401
+ /**
402
+ * Resolve the source `Type.AnyEntity` entity for a type URI. Used by
403
+ * deserialization paths (`Obj.fromJSON`) to set the back-reference accessed
404
+ * via `Obj.getType` / `Entity.getType`. Optional — resolvers that only
405
+ * carry raw schemas may leave this unimplemented; the deserializer falls
406
+ * back to leaving the type entity unset.
407
+ */
408
+ resolveType?(uri: URI.URI): Promise<unknown | undefined>;
327
409
  }
328
410
 
329
411
  export class RefImpl<T> implements Ref<T> {
330
- #dxn: DXN;
412
+ #uri: URI.URI;
331
413
  #resolver?: RefResolver = undefined;
332
- #signal = compositeRuntime.createSignal();
414
+ #resolved = new Event<void>();
333
415
 
334
416
  /**
335
417
  * Target is set when the reference is created from a specific object.
@@ -341,32 +423,38 @@ export class RefImpl<T> implements Ref<T> {
341
423
  * Callback to issue a reactive notification when object is resolved.
342
424
  */
343
425
  #resolverCallback = () => {
344
- this.#signal.notifyWrite();
426
+ this.#resolved.emit();
345
427
  };
346
428
 
347
- constructor(dxn: DXN, target?: T) {
348
- this.#dxn = dxn;
429
+ constructor(uri: URI.URI, target?: T) {
430
+ this.#uri = uri;
349
431
  this.#target = target;
350
432
  }
351
433
 
352
434
  /**
353
435
  * @inheritdoc
354
436
  */
355
- get dxn(): DXN {
356
- return this.#dxn;
437
+ get uri(): URI.URI {
438
+ return this.#uri;
439
+ }
440
+
441
+ /**
442
+ * @inheritdoc
443
+ */
444
+ get isAvailable(): boolean {
445
+ return this.#target !== undefined || this.#resolver !== undefined;
357
446
  }
358
447
 
359
448
  /**
360
449
  * @inheritdoc
361
450
  */
362
451
  get target(): T | undefined {
363
- this.#signal.notifyRead();
364
452
  if (this.#target) {
365
453
  return this.#target;
366
454
  }
367
455
 
368
456
  invariant(this.#resolver, 'Resolver is not set');
369
- return this.#resolver.resolveSync(this.#dxn, true, this.#resolverCallback) as T | undefined;
457
+ return this.#resolver.resolveSync(this.#uri, true, this.#resolverCallback) as T | undefined;
370
458
  }
371
459
 
372
460
  /**
@@ -377,7 +465,7 @@ export class RefImpl<T> implements Ref<T> {
377
465
  return this.#target;
378
466
  }
379
467
  invariant(this.#resolver, 'Resolver is not set');
380
- const obj = await this.#resolver.resolve(this.#dxn);
468
+ const obj = await this.#resolver.resolve(this.#uri);
381
469
  if (obj == null) {
382
470
  throw new Error('Object not found');
383
471
  }
@@ -388,8 +476,18 @@ export class RefImpl<T> implements Ref<T> {
388
476
  * @inheritdoc
389
477
  */
390
478
  async tryLoad(): Promise<T | undefined> {
479
+ if (this.#target) {
480
+ return this.#target;
481
+ }
391
482
  invariant(this.#resolver, 'Resolver is not set');
392
- return (await this.#resolver.resolve(this.#dxn)) as T | undefined;
483
+ return (await this.#resolver.resolve(this.#uri)) as T | undefined;
484
+ }
485
+
486
+ /**
487
+ * @inheritdoc
488
+ */
489
+ onResolved(callback: () => void): () => void {
490
+ return this.#resolved.on(callback);
393
491
  }
394
492
 
395
493
  /**
@@ -398,14 +496,14 @@ export class RefImpl<T> implements Ref<T> {
398
496
  * Clones the reference object.
399
497
  */
400
498
  noInline(): RefImpl<T> {
401
- const ref = new RefImpl<T>(this.#dxn, undefined);
499
+ const ref = new RefImpl<T>(this.#uri, undefined);
402
500
  ref.#resolver = this.#resolver;
403
501
  return ref;
404
502
  }
405
503
 
406
504
  encode(): EncodedReference {
407
505
  return {
408
- '/': this.#dxn.toString(),
506
+ '/': this.#uri,
409
507
  ...(this.#target ? { target: this.#target } : {}),
410
508
  };
411
509
  }
@@ -425,13 +523,37 @@ export class RefImpl<T> implements Ref<T> {
425
523
  return `Ref(${this.#target.toString()})`;
426
524
  }
427
525
 
428
- return `Ref(${this.#dxn.toString()})`;
526
+ return `Ref(${this.#uri.toString()})`;
429
527
  }
430
528
 
529
+ [inspectCustom]: CustomInspectFunction = (depth, options, inspect) => {
530
+ return this.toString();
531
+ };
532
+
431
533
  [RefTypeId] = refVariance;
432
534
 
535
+ /**
536
+ * Effect Hash trait. Required for MutableHashMap-based caches (e.g., Atom.family)
537
+ * to deduplicate Ref instances that point to the same object.
538
+ * ECHO proxies return new RefImpl instances on every property access,
539
+ * so without this, each access would create a separate cache entry.
540
+ */
541
+ [Hash.symbol](): number {
542
+ return Hash.hash(this.#uri.toString());
543
+ }
544
+
545
+ /** Effect Equal trait. See {@link Hash.symbol} for rationale. */
546
+ [Equal.symbol](that: Equal.Equal): boolean {
547
+ return that instanceof RefImpl && this.#uri === that.uri;
548
+ }
549
+
550
+ get atom(): Atom.Atom<T | undefined> {
551
+ return RefAtoms.refSimpleFamily(this);
552
+ }
553
+
433
554
  /**
434
555
  * Internal method to set the resolver.
556
+ *
435
557
  * @internal
436
558
  */
437
559
  _setResolver(resolver: RefResolver): void {
@@ -439,13 +561,16 @@ export class RefImpl<T> implements Ref<T> {
439
561
  }
440
562
 
441
563
  /**
442
- * Internal method to get the saved target.
443
- * Not the same as `target` which is resolved from the resolver.
444
564
  * @internal
445
565
  */
446
566
  _getSavedTarget(): T | undefined {
447
567
  return this.#target;
448
568
  }
569
+
570
+ pipe() {
571
+ // eslint-disable-next-line prefer-rest-params
572
+ return Pipeable.pipeArguments(this, arguments);
573
+ }
449
574
  }
450
575
 
451
576
  /**
@@ -459,7 +584,7 @@ export const setRefResolver = (ref: Ref<any>, resolver: RefResolver) => {
459
584
  /**
460
585
  * Internal API for getting the saved target on a reference.
461
586
  */
462
- export const getRefSavedTarget = (ref: Ref<any>): BaseObject | undefined => {
587
+ export const getRefSavedTarget = (ref: Ref<any>): AnyProperties | undefined => {
463
588
  invariant(ref instanceof RefImpl, 'Ref is not an instance of RefImpl');
464
589
  return ref._getSavedTarget();
465
590
  };
@@ -470,8 +595,8 @@ const refVariance: Ref<any>[typeof RefTypeId] = {
470
595
  };
471
596
 
472
597
  export const refFromEncodedReference = (encodedReference: EncodedReference, resolver?: RefResolver): Ref<any> => {
473
- const dxn = DXN.parse(encodedReference['/']);
474
- const ref = new RefImpl(dxn);
598
+ const uri = EncodedReference.toURI(encodedReference);
599
+ const ref = new RefImpl(uri);
475
600
 
476
601
  // TODO(dmaretskyi): Handle inline target in the encoded reference.
477
602
 
@@ -482,23 +607,26 @@ export const refFromEncodedReference = (encodedReference: EncodedReference, reso
482
607
  };
483
608
 
484
609
  export class StaticRefResolver implements RefResolver {
485
- public objects = new Map<ObjectId, BaseObject>();
486
- public schemas = new Map<DXN.String, Schema.Schema.AnyNoContext>();
610
+ public objects = new Map<EntityId, AnyProperties>();
611
+ public schemas = new Map<URI.URI, Schema.Schema.AnyNoContext>();
487
612
 
488
- addObject(obj: BaseObject): this {
613
+ addObject(obj: AnyProperties): this {
489
614
  this.objects.set(obj.id, obj);
490
615
  return this;
491
616
  }
492
617
 
493
- addSchema(schema: Schema.Schema.AnyNoContext): this {
494
- const dxn = getSchemaDXN(schema);
495
- invariant(dxn, 'Schema has no DXN');
496
- this.schemas.set(dxn.toString(), schema);
618
+ addSchema(input: Type.AnyEntity): this {
619
+ const schema = getStaticTypeSchema(input);
620
+ invariant(schema, 'Type entity is missing its source schema');
621
+ const uri = getSchemaURI(schema);
622
+ invariant(uri, 'Schema has no URI');
623
+ this.schemas.set(uri, schema);
497
624
  return this;
498
625
  }
499
626
 
500
- resolveSync(dxn: DXN, _load: boolean, _onLoad?: () => void): BaseObject | undefined {
501
- const id = dxn?.asEchoDXN()?.echoId;
627
+ resolveSync(uri: URI.URI, _load: boolean, _onLoad?: () => void): AnyProperties | undefined {
628
+ const echoUri = EID.tryParse(uri);
629
+ const id = echoUri ? EID.getEntityId(echoUri) : undefined;
502
630
  if (id == null) {
503
631
  return undefined;
504
632
  }
@@ -506,8 +634,9 @@ export class StaticRefResolver implements RefResolver {
506
634
  return this.objects.get(id);
507
635
  }
508
636
 
509
- async resolve(dxn: DXN): Promise<BaseObject | undefined> {
510
- const id = dxn?.asEchoDXN()?.echoId;
637
+ async resolve(uri: URI.URI): Promise<AnyProperties | undefined> {
638
+ const echoUri = EID.tryParse(uri);
639
+ const id = echoUri ? EID.getEntityId(echoUri) : undefined;
511
640
  if (id == null) {
512
641
  return undefined;
513
642
  }
@@ -515,7 +644,7 @@ export class StaticRefResolver implements RefResolver {
515
644
  return this.objects.get(id);
516
645
  }
517
646
 
518
- async resolveSchema(dxn: DXN): Promise<Schema.Schema.AnyNoContext | undefined> {
519
- return this.schemas.get(dxn.toString());
647
+ async resolveSchema(uri: URI.URI): Promise<Schema.Schema.AnyNoContext | undefined> {
648
+ return this.schemas.get(uri);
520
649
  }
521
650
  }
@@ -0,0 +1,45 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import type * as Atom from '@effect-atom/atom/Atom';
6
+
7
+ import type { Ref } from './ref';
8
+
9
+ /**
10
+ * Internal helper for loading ref targets in atoms.
11
+ * Handles the common pattern of checking for loaded target and triggering async load.
12
+ */
13
+ export const loadRefTarget = <T, R>(
14
+ ref: Ref<T>,
15
+ get: Atom.Context,
16
+ onTargetAvailable: (target: T) => R,
17
+ ): R | undefined => {
18
+ // Accessing `ref.target` registers a resolution callback when the target is
19
+ // not yet loaded, so resolution can be observed via `ref.onResolved` below.
20
+ const currentTarget = ref.target;
21
+ if (currentTarget) {
22
+ return onTargetAvailable(currentTarget);
23
+ }
24
+
25
+ // Subscribe to the ref's resolution event in case the target loads later.
26
+ const unsubscribe = ref.onResolved(() => {
27
+ const target = ref.target;
28
+ if (target) {
29
+ get.setSelf(onTargetAvailable(target));
30
+ }
31
+ });
32
+ get.addFinalizer(unsubscribe);
33
+
34
+ // Also try async load (e.g. for objects that need disk loading).
35
+ void ref
36
+ .load()
37
+ .then((loadedTarget) => {
38
+ get.setSelf(onTargetAvailable(loadedTarget));
39
+ })
40
+ .catch(() => {
41
+ // Loading failed; the resolution subscription above will pick up cross-client updates.
42
+ });
43
+
44
+ return undefined;
45
+ };