@dxos/echo 0.8.4-main.69d29f4 → 0.8.4-main.6fa680abb7

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 (649) hide show
  1. package/README.md +2 -2
  2. package/dist/lib/{browser → neutral}/Annotation.mjs +9 -5
  3. package/dist/lib/neutral/Database.mjs +45 -0
  4. package/dist/lib/{browser → neutral}/Entity.mjs +19 -12
  5. package/dist/lib/{browser → neutral}/Err.mjs +4 -3
  6. package/dist/lib/neutral/Feed.mjs +46 -0
  7. package/dist/lib/{node-esm → neutral}/Filter.mjs +12 -10
  8. package/dist/lib/{browser → neutral}/Format.mjs +4 -5
  9. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  10. package/dist/lib/{browser → neutral}/Key.mjs +2 -3
  11. package/dist/lib/{browser → neutral}/Obj.mjs +36 -17
  12. package/dist/lib/{browser → neutral}/Order.mjs +2 -3
  13. package/dist/lib/neutral/Query.mjs +35 -0
  14. package/dist/lib/neutral/QueryResult.mjs +2 -0
  15. package/dist/lib/neutral/Ref.mjs +24 -0
  16. package/dist/lib/{browser → neutral}/Relation.mjs +21 -13
  17. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  18. package/dist/lib/neutral/Tag.mjs +28 -0
  19. package/dist/lib/neutral/Type.mjs +37 -0
  20. package/dist/lib/{browser/chunk-AFGYYVVQ.mjs → neutral/chunk-2FK7XCDV.mjs} +6 -7
  21. package/dist/lib/neutral/chunk-2FK7XCDV.mjs.map +7 -0
  22. package/dist/lib/neutral/chunk-2Z72D23W.mjs +787 -0
  23. package/dist/lib/neutral/chunk-2Z72D23W.mjs.map +7 -0
  24. package/dist/lib/neutral/chunk-35FDO7WH.mjs +396 -0
  25. package/dist/lib/neutral/chunk-35FDO7WH.mjs.map +7 -0
  26. package/dist/lib/neutral/chunk-4HWWKURH.mjs +34 -0
  27. package/dist/lib/neutral/chunk-4HWWKURH.mjs.map +7 -0
  28. package/dist/lib/{browser/chunk-73M2G455.mjs → neutral/chunk-7VLKWC6T.mjs} +33 -10
  29. package/dist/lib/neutral/chunk-7VLKWC6T.mjs.map +7 -0
  30. package/dist/lib/{browser/chunk-INHXFXY5.mjs → neutral/chunk-ANHVGJI4.mjs} +2 -3
  31. package/dist/lib/{node-esm/chunk-AJEMYSIR.mjs.map → neutral/chunk-ANHVGJI4.mjs.map} +1 -1
  32. package/dist/lib/{browser/chunk-R3S54KRI.mjs → neutral/chunk-B5OXLWZL.mjs} +14 -15
  33. package/dist/lib/neutral/chunk-B5OXLWZL.mjs.map +7 -0
  34. package/dist/lib/{browser/chunk-TPIL3G6Y.mjs → neutral/chunk-BESZGRPL.mjs} +17 -6
  35. package/dist/lib/neutral/chunk-BESZGRPL.mjs.map +7 -0
  36. package/dist/lib/{browser/chunk-ZHXZGIXD.mjs → neutral/chunk-BNCCGLJN.mjs} +1 -3
  37. package/dist/lib/{browser/chunk-ZHXZGIXD.mjs.map → neutral/chunk-BNCCGLJN.mjs.map} +2 -2
  38. package/dist/lib/{browser/chunk-QIWDIPLR.mjs → neutral/chunk-EK7UOJ3R.mjs} +9 -5
  39. package/dist/lib/neutral/chunk-EK7UOJ3R.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-ETOQXZHC.mjs +130 -0
  41. package/dist/lib/neutral/chunk-ETOQXZHC.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-EV3A23AS.mjs +283 -0
  43. package/dist/lib/neutral/chunk-EV3A23AS.mjs.map +7 -0
  44. package/dist/lib/{node-esm/chunk-OZEDKT4R.mjs → neutral/chunk-FUGL645K.mjs} +135 -26
  45. package/dist/lib/neutral/chunk-FUGL645K.mjs.map +7 -0
  46. package/dist/lib/{browser/chunk-5RDNDPMX.mjs → neutral/chunk-FZO7LQO7.mjs} +3 -4
  47. package/dist/lib/neutral/chunk-FZO7LQO7.mjs.map +7 -0
  48. package/dist/lib/{browser/chunk-CGS2ULMK.mjs → neutral/chunk-J5LGTIGS.mjs} +1 -2
  49. package/dist/lib/neutral/chunk-LDHKQDXR.mjs +27 -0
  50. package/dist/lib/neutral/chunk-LDHKQDXR.mjs.map +7 -0
  51. package/dist/lib/{node-esm/chunk-5U5F4AWK.mjs → neutral/chunk-MFJPOZDU.mjs} +1579 -2717
  52. package/dist/lib/neutral/chunk-MFJPOZDU.mjs.map +7 -0
  53. package/dist/lib/{node-esm/chunk-NBWL7UCZ.mjs → neutral/chunk-OENWMTE6.mjs} +9 -4
  54. package/dist/lib/neutral/chunk-OENWMTE6.mjs.map +7 -0
  55. package/dist/lib/{browser/chunk-IXVWLTG7.mjs → neutral/chunk-OMUPQMLR.mjs} +1 -3
  56. package/dist/lib/{node-esm/chunk-UKGVOINP.mjs.map → neutral/chunk-OMUPQMLR.mjs.map} +1 -1
  57. package/dist/lib/{browser/chunk-2RMVRVOB.mjs → neutral/chunk-PH5RST5U.mjs} +73 -25
  58. package/dist/lib/neutral/chunk-PH5RST5U.mjs.map +7 -0
  59. package/dist/lib/neutral/chunk-PKD2L7XO.mjs +152 -0
  60. package/dist/lib/neutral/chunk-PKD2L7XO.mjs.map +7 -0
  61. package/dist/lib/{browser/chunk-L4RXUJHJ.mjs → neutral/chunk-QLALBCSA.mjs} +12 -58
  62. package/dist/lib/neutral/chunk-QLALBCSA.mjs.map +7 -0
  63. package/dist/lib/neutral/chunk-QTUBE4DR.mjs +102 -0
  64. package/dist/lib/neutral/chunk-QTUBE4DR.mjs.map +7 -0
  65. package/dist/lib/{node-esm/chunk-YOLH5KS4.mjs → neutral/chunk-SEMVAGBM.mjs} +97 -25
  66. package/dist/lib/neutral/chunk-SEMVAGBM.mjs.map +7 -0
  67. package/dist/lib/{node-esm/chunk-YQ2NWGL5.mjs → neutral/chunk-UBEZSGXY.mjs} +15 -3
  68. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  69. package/dist/lib/{browser/chunk-JMKVF2YQ.mjs → neutral/chunk-UI6MWK5W.mjs} +3 -4
  70. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  71. package/dist/lib/{browser/chunk-YKTSSMDS.mjs → neutral/chunk-WYOKA6AE.mjs} +4 -6
  72. package/dist/lib/neutral/chunk-WYOKA6AE.mjs.map +7 -0
  73. package/dist/lib/neutral/index.mjs +97 -0
  74. package/dist/lib/{node-esm → neutral}/internal/index.mjs +53 -40
  75. package/dist/lib/neutral/meta.json +1 -0
  76. package/dist/lib/{node-esm → neutral}/testing/index.mjs +43 -37
  77. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  78. package/dist/types/src/Annotation.d.ts +23 -1
  79. package/dist/types/src/Annotation.d.ts.map +1 -1
  80. package/dist/types/src/Collection.d.ts +16 -0
  81. package/dist/types/src/Collection.d.ts.map +1 -0
  82. package/dist/types/src/Database.d.ts +78 -83
  83. package/dist/types/src/Database.d.ts.map +1 -1
  84. package/dist/types/src/Dataset.d.ts +18 -0
  85. package/dist/types/src/Dataset.d.ts.map +1 -0
  86. package/dist/types/src/Entity.d.ts +38 -12
  87. package/dist/types/src/Entity.d.ts.map +1 -1
  88. package/dist/types/src/Err.d.ts +43 -0
  89. package/dist/types/src/Err.d.ts.map +1 -1
  90. package/dist/types/src/Feed.d.ts +165 -0
  91. package/dist/types/src/Feed.d.ts.map +1 -0
  92. package/dist/types/src/Filter.d.ts +1 -1
  93. package/dist/types/src/Filter.d.ts.map +1 -1
  94. package/dist/types/src/Format.d.ts +3 -3
  95. package/dist/types/src/Format.d.ts.map +1 -1
  96. package/dist/types/src/Hypergraph.d.ts +2 -2
  97. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  98. package/dist/types/src/JsonSchema.d.ts +11 -4
  99. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  100. package/dist/types/src/Obj.d.ts +149 -36
  101. package/dist/types/src/Obj.d.ts.map +1 -1
  102. package/dist/types/src/Order.d.ts.map +1 -1
  103. package/dist/types/src/Query.d.ts +101 -14
  104. package/dist/types/src/Query.d.ts.map +1 -1
  105. package/dist/types/src/Ref.d.ts +58 -10
  106. package/dist/types/src/Ref.d.ts.map +1 -1
  107. package/dist/types/src/Relation.d.ts +73 -26
  108. package/dist/types/src/Relation.d.ts.map +1 -1
  109. package/dist/types/src/SchemaRegistry.d.ts +4 -4
  110. package/dist/types/src/SchemaRegistry.d.ts.map +1 -1
  111. package/dist/types/src/Tag.d.ts +4 -3
  112. package/dist/types/src/Tag.d.ts.map +1 -1
  113. package/dist/types/src/Type.d.ts +51 -180
  114. package/dist/types/src/Type.d.ts.map +1 -1
  115. package/dist/types/src/View.d.ts +68 -0
  116. package/dist/types/src/View.d.ts.map +1 -0
  117. package/dist/types/src/hierarchy.test.d.ts +2 -0
  118. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  119. package/dist/types/src/index.d.ts +4 -0
  120. package/dist/types/src/index.d.ts.map +1 -1
  121. package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +68 -8
  122. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  123. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  124. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  125. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  126. package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
  127. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  128. package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +13 -1
  129. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  130. package/dist/types/src/internal/{api/entity.d.ts → Entity/api.d.ts} +2 -2
  131. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  132. package/dist/types/src/internal/{entities → Entity}/entity.d.ts +3 -3
  133. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  134. package/dist/types/src/internal/{entities → Entity}/index.d.ts +2 -0
  135. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  136. package/dist/types/src/internal/{entities → Entity}/model.d.ts +4 -26
  137. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  138. package/dist/types/src/internal/{entities → Entity}/object.d.ts +2 -2
  139. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  140. package/dist/types/src/internal/{entities → Entity}/relation.d.ts +3 -30
  141. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  142. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  143. package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
  144. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  145. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  146. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  147. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  148. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  149. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  150. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  151. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  152. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  153. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  154. package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
  155. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  156. package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
  157. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  158. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  159. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  160. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  161. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +19 -19
  162. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  163. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  164. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  165. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  166. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  167. package/dist/types/src/internal/{object → Obj}/create-object.d.ts +2 -2
  168. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  169. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  170. package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
  171. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  172. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  173. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  174. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  175. package/dist/types/src/internal/{object → Obj}/json-serializer.d.ts +4 -4
  176. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  177. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  178. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  179. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  180. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  181. package/dist/types/src/internal/{object → Obj}/set-value.d.ts +1 -1
  182. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  183. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  184. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  185. package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +4 -4
  186. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  187. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  188. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  189. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
  190. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  191. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +16 -3
  192. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  193. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  194. package/dist/types/src/internal/{schema → Type}/compose.d.ts +1 -1
  195. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  196. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  197. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +8 -7
  198. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  199. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  200. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  201. package/dist/types/src/internal/{schema → Type}/persistent-schema.d.ts +2 -2
  202. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  203. package/dist/types/src/internal/{api → common/api}/index.d.ts +0 -4
  204. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  205. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  206. package/dist/types/src/internal/common/index.d.ts +4 -0
  207. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  208. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  209. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  210. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  211. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  212. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  213. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  214. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  215. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  216. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  217. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  218. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  219. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  220. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  221. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +1 -1
  222. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  223. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  224. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  225. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  226. package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +2 -1
  227. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  228. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  229. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  230. package/dist/types/src/internal/{types → common/types}/base.d.ts +1 -0
  231. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  232. package/dist/types/src/internal/{types → common/types}/entity.d.ts +2 -2
  233. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  234. package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
  235. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  236. package/dist/types/src/internal/{types → common/types}/meta.d.ts +2 -1
  237. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  238. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  239. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  240. package/dist/types/src/internal/{types → common/types}/typename.d.ts +8 -0
  241. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  242. package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
  243. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  244. package/dist/types/src/internal/index.d.ts +8 -10
  245. package/dist/types/src/internal/index.d.ts.map +1 -1
  246. package/dist/types/src/testing/test-schema.d.ts +19 -18
  247. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  248. package/dist/types/tsconfig.tsbuildinfo +1 -1
  249. package/package.json +39 -113
  250. package/src/Annotation.ts +31 -1
  251. package/src/Collection.ts +32 -0
  252. package/src/Database.ts +153 -172
  253. package/src/Dataset.ts +26 -0
  254. package/src/Entity.ts +71 -51
  255. package/src/Err.ts +22 -0
  256. package/src/Feed.ts +257 -0
  257. package/src/Filter.ts +19 -4
  258. package/src/Format.ts +3 -3
  259. package/src/Hypergraph.ts +2 -2
  260. package/src/JsonSchema.ts +14 -4
  261. package/src/Obj.test.ts +63 -2
  262. package/src/Obj.ts +274 -132
  263. package/src/Order.ts +3 -1
  264. package/src/Query.test.ts +181 -14
  265. package/src/Query.ts +249 -23
  266. package/src/Ref.ts +64 -11
  267. package/src/Relation.test.ts +8 -2
  268. package/src/Relation.ts +163 -129
  269. package/src/SchemaRegistry.ts +5 -4
  270. package/src/Tag.ts +6 -5
  271. package/src/Type.test.ts +10 -10
  272. package/src/Type.ts +70 -303
  273. package/src/View.ts +102 -0
  274. package/src/hierarchy.test.ts +33 -0
  275. package/src/index.ts +4 -0
  276. package/src/internal/{annotations → Annotation}/annotations.test.ts +6 -6
  277. package/src/internal/{annotations → Annotation}/annotations.ts +120 -9
  278. package/src/internal/{annotations → Annotation}/index.ts +1 -0
  279. package/src/internal/{api → Annotation}/sorting.ts +2 -3
  280. package/src/internal/{annotations → Annotation}/util.ts +14 -1
  281. package/src/internal/{api/entity.ts → Entity/api.ts} +4 -2
  282. package/src/internal/{entities → Entity}/entity.ts +6 -4
  283. package/src/internal/{entities → Entity}/index.ts +2 -0
  284. package/src/internal/{entities → Entity}/model.ts +17 -42
  285. package/src/internal/{entities → Entity}/object.ts +2 -2
  286. package/src/internal/{entities → Entity}/relation.ts +19 -36
  287. package/src/internal/{api → Entity}/version.ts +3 -2
  288. package/src/internal/{formats → Format}/date.test.ts +1 -1
  289. package/src/internal/{formats → Format}/format.test.ts +1 -1
  290. package/src/internal/{formats → Format}/types.ts +3 -3
  291. package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
  292. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +4 -4
  293. package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -48
  294. package/src/internal/{json-schema → JsonSchema}/json-schema.ts +6 -4
  295. package/src/internal/{object → Obj}/clone.ts +3 -3
  296. package/src/internal/{object → Obj}/common.ts +2 -2
  297. package/src/internal/{object → Obj}/create-object.test.ts +4 -4
  298. package/src/internal/{object → Obj}/create-object.ts +5 -5
  299. package/src/internal/{object → Obj}/deleted.ts +2 -2
  300. package/src/internal/{object → Obj}/inspect.ts +2 -2
  301. package/src/internal/{object → Obj}/json-serializer.test.ts +29 -6
  302. package/src/internal/{object → Obj}/json-serializer.ts +30 -14
  303. package/src/internal/{object → Obj}/schema-validator.ts +1 -1
  304. package/src/internal/{object → Obj}/set-value.ts +2 -2
  305. package/src/internal/Obj/snapshot.ts +105 -0
  306. package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
  307. package/src/internal/{object → Obj}/typed-object.ts +4 -4
  308. package/src/internal/{ref → Ref}/ref-array.ts +1 -1
  309. package/src/internal/{ref → Ref}/ref.test.ts +4 -4
  310. package/src/internal/{ref → Ref}/ref.ts +27 -4
  311. package/src/internal/{schema → Type}/compose.test.ts +5 -5
  312. package/src/internal/{schema → Type}/compose.ts +1 -1
  313. package/src/internal/{schema → Type}/echo-schema.ts +11 -10
  314. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  315. package/src/internal/{schema → Type}/persistent-schema.ts +10 -4
  316. package/src/internal/{README.md → common/README.md} +1 -1
  317. package/src/internal/{api → common/api}/index.ts +0 -4
  318. package/src/internal/common/index.ts +7 -0
  319. package/src/internal/{proxy → common/proxy}/change.test.ts +3 -3
  320. package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -2
  321. package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
  322. package/src/internal/{proxy → common/proxy}/make-object.ts +13 -3
  323. package/src/internal/{proxy → common/proxy}/reactive.ts +1 -1
  324. package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
  325. package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +6 -6
  326. package/src/internal/{proxy → common/proxy}/typed-handler.ts +10 -3
  327. package/src/internal/{proxy → common/proxy}/typed-object.test.ts +4 -4
  328. package/src/internal/{types → common/types}/base.ts +1 -1
  329. package/src/internal/{types → common/types}/entity.ts +2 -2
  330. package/src/internal/{types → common/types}/index.ts +1 -0
  331. package/src/internal/{types → common/types}/meta.ts +4 -1
  332. package/src/internal/common/types/model-symbols.ts +69 -0
  333. package/src/internal/{types → common/types}/typename.ts +10 -0
  334. package/src/internal/{types → common/types}/version.ts +2 -3
  335. package/src/internal/index.ts +8 -31
  336. package/src/testing/api.test.ts +4 -4
  337. package/src/testing/test-schema.ts +20 -18
  338. package/dist/lib/browser/Database.mjs +0 -18
  339. package/dist/lib/browser/Filter.mjs +0 -62
  340. package/dist/lib/browser/JsonSchema.mjs +0 -20
  341. package/dist/lib/browser/Query.mjs +0 -27
  342. package/dist/lib/browser/QueryResult.mjs +0 -3
  343. package/dist/lib/browser/Ref.mjs +0 -23
  344. package/dist/lib/browser/SchemaRegistry.mjs +0 -3
  345. package/dist/lib/browser/Tag.mjs +0 -26
  346. package/dist/lib/browser/Type.mjs +0 -48
  347. package/dist/lib/browser/chunk-2RMVRVOB.mjs.map +0 -7
  348. package/dist/lib/browser/chunk-5RDNDPMX.mjs.map +0 -7
  349. package/dist/lib/browser/chunk-73M2G455.mjs.map +0 -7
  350. package/dist/lib/browser/chunk-7STIBCP7.mjs +0 -133
  351. package/dist/lib/browser/chunk-7STIBCP7.mjs.map +0 -7
  352. package/dist/lib/browser/chunk-AFGYYVVQ.mjs.map +0 -7
  353. package/dist/lib/browser/chunk-BC6R4CAF.mjs +0 -24
  354. package/dist/lib/browser/chunk-BC6R4CAF.mjs.map +0 -7
  355. package/dist/lib/browser/chunk-BPYFLHWO.mjs +0 -158
  356. package/dist/lib/browser/chunk-BPYFLHWO.mjs.map +0 -7
  357. package/dist/lib/browser/chunk-CBPFF3ZO.mjs +0 -204
  358. package/dist/lib/browser/chunk-CBPFF3ZO.mjs.map +0 -7
  359. package/dist/lib/browser/chunk-CJ5YELTO.mjs +0 -39
  360. package/dist/lib/browser/chunk-CJ5YELTO.mjs.map +0 -7
  361. package/dist/lib/browser/chunk-FPOISFQK.mjs +0 -40
  362. package/dist/lib/browser/chunk-FPOISFQK.mjs.map +0 -7
  363. package/dist/lib/browser/chunk-INHXFXY5.mjs.map +0 -7
  364. package/dist/lib/browser/chunk-IXVWLTG7.mjs.map +0 -7
  365. package/dist/lib/browser/chunk-JMKVF2YQ.mjs.map +0 -7
  366. package/dist/lib/browser/chunk-L4RXUJHJ.mjs.map +0 -7
  367. package/dist/lib/browser/chunk-MYCCGG2T.mjs +0 -15
  368. package/dist/lib/browser/chunk-MYCCGG2T.mjs.map +0 -7
  369. package/dist/lib/browser/chunk-PAM4KEXE.mjs +0 -3847
  370. package/dist/lib/browser/chunk-PAM4KEXE.mjs.map +0 -7
  371. package/dist/lib/browser/chunk-QIWDIPLR.mjs.map +0 -7
  372. package/dist/lib/browser/chunk-R3S54KRI.mjs.map +0 -7
  373. package/dist/lib/browser/chunk-RK4Z4JUZ.mjs +0 -283
  374. package/dist/lib/browser/chunk-RK4Z4JUZ.mjs.map +0 -7
  375. package/dist/lib/browser/chunk-TPIL3G6Y.mjs.map +0 -7
  376. package/dist/lib/browser/chunk-YKTSSMDS.mjs.map +0 -7
  377. package/dist/lib/browser/index.mjs +0 -85
  378. package/dist/lib/browser/internal/index.mjs +0 -457
  379. package/dist/lib/browser/meta.json +0 -1
  380. package/dist/lib/browser/testing/index.mjs +0 -367
  381. package/dist/lib/browser/testing/index.mjs.map +0 -7
  382. package/dist/lib/node-esm/Annotation.mjs +0 -33
  383. package/dist/lib/node-esm/Annotation.mjs.map +0 -7
  384. package/dist/lib/node-esm/Database.mjs +0 -18
  385. package/dist/lib/node-esm/Database.mjs.map +0 -7
  386. package/dist/lib/node-esm/Entity.mjs +0 -52
  387. package/dist/lib/node-esm/Entity.mjs.map +0 -7
  388. package/dist/lib/node-esm/Err.mjs +0 -11
  389. package/dist/lib/node-esm/Err.mjs.map +0 -7
  390. package/dist/lib/node-esm/Format.mjs +0 -67
  391. package/dist/lib/node-esm/Format.mjs.map +0 -7
  392. package/dist/lib/node-esm/JsonSchema.mjs +0 -20
  393. package/dist/lib/node-esm/JsonSchema.mjs.map +0 -7
  394. package/dist/lib/node-esm/Key.mjs +0 -13
  395. package/dist/lib/node-esm/Key.mjs.map +0 -7
  396. package/dist/lib/node-esm/Obj.mjs +0 -91
  397. package/dist/lib/node-esm/Obj.mjs.map +0 -7
  398. package/dist/lib/node-esm/Order.mjs +0 -13
  399. package/dist/lib/node-esm/Order.mjs.map +0 -7
  400. package/dist/lib/node-esm/Query.mjs +0 -27
  401. package/dist/lib/node-esm/Query.mjs.map +0 -7
  402. package/dist/lib/node-esm/QueryResult.mjs +0 -3
  403. package/dist/lib/node-esm/QueryResult.mjs.map +0 -7
  404. package/dist/lib/node-esm/Ref.mjs +0 -23
  405. package/dist/lib/node-esm/Ref.mjs.map +0 -7
  406. package/dist/lib/node-esm/Relation.mjs +0 -85
  407. package/dist/lib/node-esm/Relation.mjs.map +0 -7
  408. package/dist/lib/node-esm/SchemaRegistry.mjs +0 -3
  409. package/dist/lib/node-esm/SchemaRegistry.mjs.map +0 -7
  410. package/dist/lib/node-esm/Tag.mjs +0 -26
  411. package/dist/lib/node-esm/Tag.mjs.map +0 -7
  412. package/dist/lib/node-esm/Type.mjs +0 -48
  413. package/dist/lib/node-esm/Type.mjs.map +0 -7
  414. package/dist/lib/node-esm/chunk-2RIFBW3A.mjs +0 -250
  415. package/dist/lib/node-esm/chunk-2RIFBW3A.mjs.map +0 -7
  416. package/dist/lib/node-esm/chunk-5CB2ZW74.mjs +0 -57
  417. package/dist/lib/node-esm/chunk-5CB2ZW74.mjs.map +0 -7
  418. package/dist/lib/node-esm/chunk-5U5F4AWK.mjs.map +0 -7
  419. package/dist/lib/node-esm/chunk-AJEMYSIR.mjs +0 -22
  420. package/dist/lib/node-esm/chunk-BKYE5IW6.mjs +0 -158
  421. package/dist/lib/node-esm/chunk-BKYE5IW6.mjs.map +0 -7
  422. package/dist/lib/node-esm/chunk-BYOD7EVP.mjs +0 -98
  423. package/dist/lib/node-esm/chunk-BYOD7EVP.mjs.map +0 -7
  424. package/dist/lib/node-esm/chunk-FWTSPIFF.mjs +0 -133
  425. package/dist/lib/node-esm/chunk-FWTSPIFF.mjs.map +0 -7
  426. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  427. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  428. package/dist/lib/node-esm/chunk-K37NA7PO.mjs +0 -43
  429. package/dist/lib/node-esm/chunk-K37NA7PO.mjs.map +0 -7
  430. package/dist/lib/node-esm/chunk-LIXUCQJM.mjs +0 -41
  431. package/dist/lib/node-esm/chunk-LIXUCQJM.mjs.map +0 -7
  432. package/dist/lib/node-esm/chunk-MOLNWFNL.mjs +0 -9
  433. package/dist/lib/node-esm/chunk-MOLNWFNL.mjs.map +0 -7
  434. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs +0 -15
  435. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs.map +0 -7
  436. package/dist/lib/node-esm/chunk-NBWL7UCZ.mjs.map +0 -7
  437. package/dist/lib/node-esm/chunk-OZEDKT4R.mjs.map +0 -7
  438. package/dist/lib/node-esm/chunk-PW3VCWL5.mjs +0 -24
  439. package/dist/lib/node-esm/chunk-PW3VCWL5.mjs.map +0 -7
  440. package/dist/lib/node-esm/chunk-TSTKBFST.mjs +0 -403
  441. package/dist/lib/node-esm/chunk-TSTKBFST.mjs.map +0 -7
  442. package/dist/lib/node-esm/chunk-UKGVOINP.mjs +0 -9
  443. package/dist/lib/node-esm/chunk-UV63HEHQ.mjs +0 -143
  444. package/dist/lib/node-esm/chunk-UV63HEHQ.mjs.map +0 -7
  445. package/dist/lib/node-esm/chunk-WXLVPCRJ.mjs +0 -288
  446. package/dist/lib/node-esm/chunk-WXLVPCRJ.mjs.map +0 -7
  447. package/dist/lib/node-esm/chunk-WZ6YBELW.mjs +0 -74
  448. package/dist/lib/node-esm/chunk-WZ6YBELW.mjs.map +0 -7
  449. package/dist/lib/node-esm/chunk-XHJRMQZD.mjs +0 -69
  450. package/dist/lib/node-esm/chunk-XHJRMQZD.mjs.map +0 -7
  451. package/dist/lib/node-esm/chunk-YOLH5KS4.mjs.map +0 -7
  452. package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs.map +0 -7
  453. package/dist/lib/node-esm/index.mjs +0 -85
  454. package/dist/lib/node-esm/index.mjs.map +0 -7
  455. package/dist/lib/node-esm/internal/index.mjs.map +0 -7
  456. package/dist/lib/node-esm/meta.json +0 -1
  457. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  458. package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
  459. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
  460. package/dist/types/src/internal/annotations/index.d.ts +0 -3
  461. package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
  462. package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
  463. package/dist/types/src/internal/api/annotations.d.ts +0 -23
  464. package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
  465. package/dist/types/src/internal/api/entity.d.ts.map +0 -1
  466. package/dist/types/src/internal/api/index.d.ts.map +0 -1
  467. package/dist/types/src/internal/api/meta.d.ts.map +0 -1
  468. package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
  469. package/dist/types/src/internal/api/version.d.ts.map +0 -1
  470. package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
  471. package/dist/types/src/internal/entities/index.d.ts.map +0 -1
  472. package/dist/types/src/internal/entities/model.d.ts.map +0 -1
  473. package/dist/types/src/internal/entities/object.d.ts.map +0 -1
  474. package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
  475. package/dist/types/src/internal/entities/util.d.ts.map +0 -1
  476. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  477. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  478. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  479. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  480. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  481. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  482. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  483. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  484. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  485. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  486. package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
  487. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
  488. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  489. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  490. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  491. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
  492. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
  493. package/dist/types/src/internal/object/clone.d.ts.map +0 -1
  494. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  495. package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
  496. package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
  497. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  498. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  499. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  500. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  501. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  502. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  503. package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
  504. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  505. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  506. package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
  507. package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
  508. package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
  509. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  510. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  511. package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
  512. package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
  513. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
  514. package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
  515. package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
  516. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  517. package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
  518. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
  519. package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
  520. package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
  521. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
  522. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
  523. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
  524. package/dist/types/src/internal/proxy/reactive.d.ts.map +0 -1
  525. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
  526. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  527. package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
  528. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  529. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  530. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  531. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  532. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  533. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  534. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  535. package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
  536. package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
  537. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  538. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  539. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  540. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
  541. package/dist/types/src/internal/types/base.d.ts.map +0 -1
  542. package/dist/types/src/internal/types/entity.d.ts.map +0 -1
  543. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  544. package/dist/types/src/internal/types/meta.d.ts.map +0 -1
  545. package/dist/types/src/internal/types/typename.d.ts.map +0 -1
  546. package/dist/types/src/internal/types/version.d.ts.map +0 -1
  547. package/src/internal/api/annotations.ts +0 -60
  548. package/src/internal/object/snapshot.ts +0 -70
  549. /package/dist/lib/{browser → neutral}/Annotation.mjs.map +0 -0
  550. /package/dist/lib/{browser → neutral}/Database.mjs.map +0 -0
  551. /package/dist/lib/{browser → neutral}/Entity.mjs.map +0 -0
  552. /package/dist/lib/{browser → neutral}/Err.mjs.map +0 -0
  553. /package/dist/lib/{browser/Filter.mjs.map → neutral/Feed.mjs.map} +0 -0
  554. /package/dist/lib/{node-esm → neutral}/Filter.mjs.map +0 -0
  555. /package/dist/lib/{browser → neutral}/Format.mjs.map +0 -0
  556. /package/dist/lib/{browser → neutral}/JsonSchema.mjs.map +0 -0
  557. /package/dist/lib/{browser → neutral}/Key.mjs.map +0 -0
  558. /package/dist/lib/{browser → neutral}/Obj.mjs.map +0 -0
  559. /package/dist/lib/{browser → neutral}/Order.mjs.map +0 -0
  560. /package/dist/lib/{browser → neutral}/Query.mjs.map +0 -0
  561. /package/dist/lib/{browser → neutral}/QueryResult.mjs.map +0 -0
  562. /package/dist/lib/{browser → neutral}/Ref.mjs.map +0 -0
  563. /package/dist/lib/{browser → neutral}/Relation.mjs.map +0 -0
  564. /package/dist/lib/{browser → neutral}/SchemaRegistry.mjs.map +0 -0
  565. /package/dist/lib/{browser → neutral}/Tag.mjs.map +0 -0
  566. /package/dist/lib/{browser → neutral}/Type.mjs.map +0 -0
  567. /package/dist/lib/{browser/chunk-CGS2ULMK.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  568. /package/dist/lib/{browser → neutral}/index.mjs.map +0 -0
  569. /package/dist/lib/{browser → neutral}/internal/index.mjs.map +0 -0
  570. /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
  571. /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
  572. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  573. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  574. /package/dist/types/src/internal/{formats → Format}/format.d.ts +0 -0
  575. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  576. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  577. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  578. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  579. /package/dist/types/src/internal/{formats → Format}/select.d.ts +0 -0
  580. /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
  581. /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
  582. /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
  583. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  584. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +0 -0
  585. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
  586. /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
  587. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  588. /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
  589. /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
  590. /package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -0
  591. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  592. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  593. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  594. /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
  595. /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
  596. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  597. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  598. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  599. /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
  600. /package/dist/types/src/internal/{schema → Type}/index.d.ts +0 -0
  601. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  602. /package/dist/types/src/internal/{api → common/api}/meta.d.ts +0 -0
  603. /package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +0 -0
  604. /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
  605. /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
  606. /package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +0 -0
  607. /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
  608. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  609. /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
  610. /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
  611. /package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +0 -0
  612. /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
  613. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
  614. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
  615. /package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +0 -0
  616. /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
  617. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  618. /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
  619. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  620. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  621. /package/src/internal/{entities → Entity}/util.ts +0 -0
  622. /package/src/internal/{formats → Format}/date.ts +0 -0
  623. /package/src/internal/{formats → Format}/format.ts +0 -0
  624. /package/src/internal/{formats → Format}/index.ts +0 -0
  625. /package/src/internal/{formats → Format}/number.ts +0 -0
  626. /package/src/internal/{formats → Format}/object.ts +0 -0
  627. /package/src/internal/{formats → Format}/select.ts +0 -0
  628. /package/src/internal/{formats → Format}/string.ts +0 -0
  629. /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
  630. /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
  631. /package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +0 -0
  632. /package/src/internal/{object → Obj}/ids.ts +0 -0
  633. /package/src/internal/{object → Obj}/index.ts +0 -0
  634. /package/src/internal/{object → Obj}/schema-validator.test.ts +0 -0
  635. /package/src/internal/{object → Obj}/set-value.test.ts +0 -0
  636. /package/src/internal/{ref → Ref}/index.ts +0 -0
  637. /package/src/internal/{schema → Type}/index.ts +0 -0
  638. /package/src/internal/{api → common/api}/meta.ts +0 -0
  639. /package/src/internal/{proxy → common/proxy}/change-context.ts +0 -0
  640. /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
  641. /package/src/internal/{proxy → common/proxy}/errors.ts +0 -0
  642. /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
  643. /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
  644. /package/src/internal/{proxy → common/proxy}/ownership.ts +0 -0
  645. /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
  646. /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
  647. /package/src/internal/{proxy → common/proxy}/reactive-array.ts +0 -0
  648. /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
  649. /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
package/src/Database.ts CHANGED
@@ -2,6 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ // @import-as-namespace
6
+
5
7
  import * as Context from 'effect/Context';
6
8
  import * as Effect from 'effect/Effect';
7
9
  import * as Layer from 'effect/Layer';
@@ -9,71 +11,30 @@ import * as Option from 'effect/Option';
9
11
  import * as Schema from 'effect/Schema';
10
12
  import type * as Types from 'effect/Types';
11
13
 
12
- import { type QueryAST } from '@dxos/echo-protocol';
13
14
  import { promiseWithCauseCapture } from '@dxos/effect';
14
15
  import { invariant } from '@dxos/invariant';
15
- import { DXN, type PublicKey, type SpaceId } from '@dxos/keys';
16
- import { type QueryOptions as QueryOptionsProto } from '@dxos/protocols/proto/dxos/echo/filter';
16
+ import { DXN, type SpaceId } from '@dxos/keys';
17
17
 
18
18
  import type * as Entity from './Entity';
19
19
  import * as Err from './Err';
20
20
  import type * as Filter from './Filter';
21
21
  import type * as Hypergraph from './Hypergraph';
22
- import { isInstanceOf } from './internal/annotations';
23
- import type { Ref } from './internal/ref/ref';
24
- import { type AnyProperties } from './internal/types';
22
+ import { isInstanceOf } from './internal/Annotation';
23
+ import type { Ref } from './internal/Ref/ref';
24
+ import { type AnyProperties } from './internal/common/types';
25
25
  import type * as Obj from './Obj';
26
26
  import type * as Query from './Query';
27
27
  import type * as QueryResult from './QueryResult';
28
28
  import type * as SchemaRegistry from './SchemaRegistry';
29
29
  import type * as Type from './Type';
30
30
 
31
- /**
32
- * @deprecated Use `QueryAST.QueryOptions` instead.
33
- */
34
- export type QueryOptions = {
35
- /**
36
- * @deprecated Use `spaceIds` instead.
37
- */
38
- spaces?: PublicKey[];
39
-
40
- /**
41
- * Query only in specific spaces.
42
- */
43
- // TODO(dmaretskyi): Change this to SpaceId.
44
- spaceIds?: string[];
45
-
46
- /**
47
- * Return only the first `limit` results.
48
- */
49
- limit?: number;
50
-
51
- /**
52
- * Query only local spaces, or remote on agent.
53
- * @default `QueryOptions.DataLocation.LOCAL`
54
- *
55
- * Options:
56
- * - proto3_optional = true
57
- */
58
- // TODO(burdon): Remove?
59
- dataLocation?: QueryOptionsProto.DataLocation;
60
- };
61
-
62
31
  /**
63
32
  * `query` API function declaration.
64
33
  */
65
34
  // TODO(burdon): Reconcile Query and Filter (should only have one root type).
66
- // TODO(dmaretskyi): Remove query options.
67
35
  export interface QueryFn {
68
- <Q extends Query.Any>(
69
- query: Q,
70
- options?: (QueryAST.QueryOptions & QueryOptions) | undefined,
71
- ): QueryResult.QueryResult<Query.Type<Q>>;
72
-
73
- <F extends Filter.Any>(
74
- filter: F,
75
- options?: (QueryAST.QueryOptions & QueryOptions) | undefined,
76
- ): QueryResult.QueryResult<Filter.Type<F>>;
36
+ <Q extends Query.Any>(query: Q): QueryResult.QueryResult<Query.Type<Q>>;
37
+ <F extends Filter.Any>(filter: F): QueryResult.QueryResult<Filter.Type<F>>;
77
38
  }
78
39
 
79
40
  /**
@@ -145,7 +106,10 @@ export interface Database extends Queryable {
145
106
  /**
146
107
  * Return object by local ID.
147
108
  */
148
- getObjectById<T extends Obj.Unknown = Obj.Obj<AnyProperties>>(id: string, opts?: GetObjectByIdOptions): T | undefined;
109
+ getObjectById<T extends Obj.Unknown = Obj.OfShape<AnyProperties>>(
110
+ id: string,
111
+ opts?: GetObjectByIdOptions,
112
+ ): T | undefined;
149
113
 
150
114
  /**
151
115
  * Query objects.
@@ -186,151 +150,168 @@ export const isDatabase = (obj: unknown): obj is Database => {
186
150
 
187
151
  export const Database: Schema.Schema<Database> = Schema.Any.pipe(Schema.filter((space) => isDatabase(space)));
188
152
 
153
+ /**
154
+ * Effect service tag for Database dependency injection.
155
+ */
189
156
  export class Service extends Context.Tag('@dxos/echo/Database/Service')<
190
157
  Service,
191
158
  {
192
159
  readonly db: Database;
193
160
  }
194
- >() {
195
- static notAvailable = Layer.succeed(Service, {
196
- get db(): Database {
197
- throw new Error('Database not available');
198
- },
199
- });
200
-
201
- static make = (db: Database): Context.Tag.Service<Service> => {
202
- return {
203
- get db() {
204
- return db;
205
- },
206
- };
207
- };
161
+ >() {}
208
162
 
209
- static layer = (db: Database): Layer.Layer<Service> => {
210
- return Layer.succeed(Service, Service.make(db));
163
+ /**
164
+ * Layer that provides a Database service that throws when accessed.
165
+ * Useful as a default layer when no database is available.
166
+ */
167
+ export const notAvailable = Layer.succeed(Service, {
168
+ get db(): Database {
169
+ throw new Error('Database not available');
170
+ },
171
+ });
172
+
173
+ /**
174
+ * Creates a Database service instance from a Database.
175
+ */
176
+ export const makeService = (db: Database): Context.Tag.Service<Service> => {
177
+ return {
178
+ get db() {
179
+ return db;
180
+ },
211
181
  };
182
+ };
212
183
 
213
- // TODO(dmaretskyi): Move all those to the top-level API of Database.ts module.
184
+ /**
185
+ * Creates a Layer that provides the Database service.
186
+ */
187
+ export const layer = (db: Database): Layer.Layer<Service> => {
188
+ return Layer.succeed(Service, makeService(db));
189
+ };
214
190
 
215
- /**
216
- * Returns the space ID of the database.
217
- */
218
- static spaceId = Effect.gen(function* () {
219
- const { db } = yield* Service;
220
- return db.spaceId;
221
- });
191
+ /**
192
+ * Returns the space ID of the database.
193
+ */
194
+ export const spaceId = Effect.gen(function* () {
195
+ const { db } = yield* Service;
196
+ return db.spaceId;
197
+ });
222
198
 
223
- /**
224
- * Resolves an object by its DXN.
225
- */
226
- static resolve: {
227
- // No type check.
228
- (ref: DXN | Ref<any>): Effect.Effect<Entity.Unknown, never, Service>;
229
- // Check matches schema.
230
- <S extends Type.Entity.Any>(
231
- ref: DXN | Ref<any>,
232
- schema: S,
233
- ): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service>;
234
- } = (<S extends Type.Entity.Any>(
199
+ /**
200
+ * Resolves an object by its DXN.
201
+ */
202
+ export const resolve: {
203
+ // No type check.
204
+ (ref: DXN | Ref<any>): Effect.Effect<Entity.Unknown, never, Service>;
205
+ // Check matches schema.
206
+ <S extends Type.AnyEntity>(
235
207
  ref: DXN | Ref<any>,
236
- schema?: S,
237
- ): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service> =>
238
- Effect.gen(function* () {
239
- const { db } = yield* Service;
240
- const dxn = ref instanceof DXN ? ref : ref.dxn;
241
- const object = yield* promiseWithCauseCapture(() =>
242
- db.graph
243
- .createRefResolver({
244
- context: {
245
- space: db.spaceId,
246
- },
247
- })
248
- .resolve(dxn),
249
- );
250
-
251
- if (!object) {
252
- return yield* Effect.fail(new Err.ObjectNotFoundError(dxn));
253
- }
254
- invariant(!schema || isInstanceOf(schema, object), 'Object type mismatch.');
255
- return object as any;
256
- })) as any;
208
+ schema: S,
209
+ ): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service>;
210
+ } = (<S extends Type.AnyEntity>(
211
+ ref: DXN | Ref<any>,
212
+ schema?: S,
213
+ ): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service> =>
214
+ Effect.gen(function* () {
215
+ const { db } = yield* Service;
216
+ const dxn = ref instanceof DXN ? ref : ref.dxn;
217
+ const object = yield* promiseWithCauseCapture(() =>
218
+ db.graph
219
+ .createRefResolver({
220
+ context: {
221
+ space: db.spaceId,
222
+ },
223
+ })
224
+ .resolve(dxn),
225
+ );
257
226
 
258
- /**
259
- * Loads an object reference.
260
- */
261
- static load: <T>(ref: Ref<T>) => Effect.Effect<T, Err.ObjectNotFoundError, never> = Effect.fn(function* (ref) {
262
- const object = yield* promiseWithCauseCapture(() => ref.tryLoad());
263
227
  if (!object) {
264
- return yield* Effect.fail(new Err.ObjectNotFoundError(ref.dxn));
228
+ return yield* Effect.fail(new Err.ObjectNotFoundError(dxn));
265
229
  }
266
- return object;
267
- });
230
+ invariant(!schema || isInstanceOf(schema, object), 'Object type mismatch.');
231
+ return object as any;
232
+ })) as any;
268
233
 
269
- /**
270
- * Loads an object reference option.
271
- */
272
- // TODO(dmaretskyi): Do we need this -- you can just use `Effect.catchTag` in calling code instead.
273
- static loadOption: <T>(ref: Ref<T>) => Effect.Effect<Option.Option<T>, never, never> = Effect.fn(function* (ref) {
274
- const object = yield* Service.load(ref).pipe(
275
- Effect.catchTag('ObjectNotFoundError', () => Effect.succeed(undefined)),
276
- );
234
+ /**
235
+ * Loads an object reference.
236
+ */
237
+ export const load: <T>(ref: Ref<T>) => Effect.Effect<T, Err.ObjectNotFoundError, never> = Effect.fn(function* (ref) {
238
+ const object = yield* promiseWithCauseCapture(() => ref.tryLoad());
239
+ if (!object) {
240
+ return yield* Effect.fail(new Err.ObjectNotFoundError(ref.dxn));
241
+ }
242
+ return object;
243
+ });
277
244
 
278
- return Option.fromNullable(object);
279
- });
245
+ /**
246
+ * Loads an object reference option.
247
+ */
248
+ // TODO(dmaretskyi): Do we need this -- you can just use `Effect.catchTag` in calling code instead.
249
+ export const loadOption: <T>(ref: Ref<T>) => Effect.Effect<Option.Option<T>, never, never> = Effect.fn(function* (ref) {
250
+ const object = yield* load(ref).pipe(Effect.catchTag('ObjectNotFoundError', () => Effect.succeed(undefined)));
280
251
 
281
- /**
282
- * @link EchoDatabase.add
283
- */
284
- static add = <T extends Entity.Unknown>(obj: T): Effect.Effect<T, never, Service> =>
285
- Service.pipe(Effect.map(({ db }) => db.add(obj)));
252
+ return Option.fromNullable(object);
253
+ });
286
254
 
287
- /**
288
- * @link EchoDatabase.remove
289
- */
290
- static remove = <T extends Entity.Unknown>(obj: T): Effect.Effect<void, never, Service> =>
291
- Service.pipe(Effect.map(({ db }) => db.remove(obj)));
255
+ /**
256
+ * Adds an object to the database.
257
+ * @see {@link Database.add}
258
+ */
259
+ export const add = <T extends Entity.Unknown>(obj: T): Effect.Effect<T, never, Service> =>
260
+ Service.pipe(Effect.map(({ db }) => db.add(obj)));
292
261
 
293
- /**
294
- * @link EchoDatabase.flush
295
- */
296
- static flush = (opts?: FlushOptions) =>
297
- Service.pipe(Effect.flatMap(({ db }) => promiseWithCauseCapture(() => db.flush(opts))));
262
+ /**
263
+ * Removes an object from the database.
264
+ * @see {@link Database.remove}
265
+ */
266
+ export const remove = <T extends Entity.Unknown>(obj: T): Effect.Effect<void, never, Service> =>
267
+ Service.pipe(Effect.map(({ db }) => db.remove(obj)));
298
268
 
299
- /**
300
- * Creates a `QueryResult` object that can be subscribed to.
301
- */
302
- static query: {
303
- <Q extends Query.Any>(query: Q): Effect.Effect<QueryResult.QueryResult<Query.Type<Q>>, never, Service>;
304
- <F extends Filter.Any>(filter: F): Effect.Effect<QueryResult.QueryResult<Filter.Type<F>>, never, Service>;
305
- } = (queryOrFilter: Query.Any | Filter.Any) =>
306
- Service.pipe(
307
- Effect.map(({ db }) => db.query(queryOrFilter as any) as QueryResult.QueryResult<any>),
308
- Effect.withSpan('Service.query'),
309
- );
269
+ /**
270
+ * Flushes pending changes to disk.
271
+ * @see {@link Database.flush}
272
+ */
273
+ export const flush = (opts?: FlushOptions) =>
274
+ Service.pipe(Effect.flatMap(({ db }) => promiseWithCauseCapture(() => db.flush(opts))));
310
275
 
311
- /**
312
- * Executes the query once and returns the results.
313
- */
314
- static runQuery: {
315
- <Q extends Query.Any>(query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;
316
- <F extends Filter.Any>(filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;
317
- } = (queryOrFilter: Query.Any | Filter.Any) =>
318
- Service.query(queryOrFilter as any).pipe(
319
- Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())),
320
- );
276
+ /**
277
+ * Creates a `QueryResult` object that can be subscribed to.
278
+ */
279
+ export const query: {
280
+ <Q extends Query.Any>(query: Q): Effect.Effect<QueryResult.QueryResult<Query.Type<Q>>, never, Service>;
281
+ <F extends Filter.Any>(filter: F): Effect.Effect<QueryResult.QueryResult<Filter.Type<F>>, never, Service>;
282
+ } = (queryOrFilter: Query.Any | Filter.Any) =>
283
+ Service.pipe(
284
+ Effect.map(({ db }) => db.query(queryOrFilter as any) as QueryResult.QueryResult<any>),
285
+ Effect.withSpan('Database.query'),
286
+ );
321
287
 
322
- // TODO(dmaretskyi): Change API to `yield* Service.querySchema(...).first` and `yield* Service.querySchema(...).schema`.
288
+ /**
289
+ * Executes the query once and returns the results.
290
+ */
291
+ export const runQuery: {
292
+ <Q extends Query.Any>(query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;
293
+ <F extends Filter.Any>(filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;
294
+ } = (queryOrFilter: Query.Any | Filter.Any) =>
295
+ query(queryOrFilter as any).pipe(Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())));
323
296
 
324
- static schemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(
325
- query?: Q & SchemaRegistry.Query,
326
- ): Effect.Effect<QueryResult.QueryResult<SchemaRegistry.ExtractQueryResult<Q>>, never, Service> =>
327
- Service.pipe(
328
- Effect.map(({ db }) => db.schemaRegistry.query(query)),
329
- Effect.withSpan('Service.schemaQuery'),
330
- );
297
+ /**
298
+ * Creates a schema query result that can be subscribed to.
299
+ */
300
+ // TODO(dmaretskyi): Change API to `yield* Database.querySchema(...).first` and `yield* Database.querySchema(...).schema`.
301
+ export const schemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(
302
+ schemaQueryOptions?: Q & SchemaRegistry.Query,
303
+ ): Effect.Effect<QueryResult.QueryResult<SchemaRegistry.ExtractQueryResult<Q>>, never, Service> =>
304
+ Service.pipe(
305
+ Effect.map(({ db }) => db.schemaRegistry.query(schemaQueryOptions)),
306
+ Effect.withSpan('Database.schemaQuery'),
307
+ );
331
308
 
332
- static runSchemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(
333
- query?: Q & SchemaRegistry.Query,
334
- ): Effect.Effect<SchemaRegistry.ExtractQueryResult<Q>[], never, Service> =>
335
- Service.schemaQuery(query).pipe(Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())));
336
- }
309
+ /**
310
+ * Executes a schema query once and returns the results.
311
+ */
312
+ export const runSchemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(
313
+ schemaQueryOptions?: Q & SchemaRegistry.Query,
314
+ ): Effect.Effect<SchemaRegistry.ExtractQueryResult<Q>[], never, Service> =>
315
+ schemaQuery(schemaQueryOptions).pipe(
316
+ Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())),
317
+ );
package/src/Dataset.ts ADDED
@@ -0,0 +1,26 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ // @import-as-namespace
6
+
7
+ import { pipe } from 'effect/Function';
8
+ import * as Predicate from 'effect/Predicate';
9
+ import * as Schema from 'effect/Schema';
10
+
11
+ import * as Collection from './Collection';
12
+ import * as Feed from './Feed';
13
+ import * as Obj from './Obj';
14
+ import * as View from './View';
15
+
16
+ /**
17
+ * Abstart set of objects, represented by a view, feed, or collection.
18
+ */
19
+ export const Dataset = Schema.Union(Feed.Feed, Collection.Collection, View.View);
20
+ export type Dataset = Feed.Feed | Collection.Collection | View.View;
21
+
22
+ export const isDataset: (value: unknown) => value is Dataset = pipe(
23
+ Obj.instanceOf(Feed.Feed),
24
+ Predicate.or(Obj.instanceOf(Collection.Collection)),
25
+ Predicate.or(Obj.instanceOf(View.View)),
26
+ );
package/src/Entity.ts CHANGED
@@ -2,46 +2,28 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ // @import-as-namespace
6
+
5
7
  import type { ForeignKey } from '@dxos/echo-protocol';
6
8
  import type { DXN, ObjectId } from '@dxos/keys';
7
9
 
8
- import {
9
- type ChangeCallback,
10
- EntityKind,
11
- EntityKindSchema,
12
- KindId,
13
- type Mutable,
14
- type ObjectJSON,
15
- type ObjectMeta,
16
- type ReadonlyMeta,
17
- SnapshotKindId,
18
- addTag as addTag$,
19
- change as change$,
20
- getDXN as getDXN$,
21
- getDatabase as getDatabase$,
22
- getDescription as getDescription$,
23
- getEntityKind,
24
- getKeys as getKeys$,
25
- getLabel as getLabel$,
26
- getMetaChecked as getMeta$,
27
- getTypeDXN as getTypeDXN$,
28
- getTypename as getTypename$,
29
- isDeleted as isDeleted$,
30
- removeTag as removeTag$,
31
- subscribe as subscribe$,
32
- objectToJSON as toJSON$,
33
- } from './internal';
10
+ import * as entityInternal from './internal/Entity';
11
+ import * as internal from './internal';
12
+ import type * as Relation from './Relation';
34
13
 
35
14
  // Re-export KindId and SnapshotKindId from internal.
36
- export { KindId, SnapshotKindId };
15
+ export const KindId = internal.KindId;
16
+ export type KindId = typeof internal.KindId;
17
+ export const SnapshotKindId = internal.SnapshotKindId;
18
+ export type SnapshotKindId = typeof internal.SnapshotKindId;
37
19
 
38
20
  // NOTE: Relation does not extend Obj so that, for example, we can prevent Relations from being used as source and target objects.
39
21
  // However, we generally refer to Obj and Relation instances as "objects",
40
22
  // and many API methods accept both Obj.Unknown and Relation.Unknown (i.e., Entity.Unknown) instances.
41
23
 
42
- export const Kind = EntityKind;
43
- export type Kind = EntityKind;
44
- export const KindSchema = EntityKindSchema;
24
+ export const Kind = internal.EntityKind;
25
+ export type Kind = internal.EntityKind;
26
+ export const KindSchema = internal.EntityKindSchema;
45
27
 
46
28
  /**
47
29
  * Assigns a kind to an Object or Relation instance.
@@ -89,7 +71,45 @@ export interface Any extends OfKind<Kind> {
89
71
  [key: string]: unknown;
90
72
  }
91
73
 
92
- export const getKind = getEntityKind;
74
+ /**
75
+ * Returns all properties of an object or relation except for the id and kind.
76
+ */
77
+ export type Properties<T> = Omit<T, 'id' | KindId | Relation.Source | Relation.Target>;
78
+
79
+ /**
80
+ * Check if a value is an ECHO entity (object or relation).
81
+ * Returns `false` for snapshots.
82
+ */
83
+ export const isEntity = (value: unknown): value is Unknown => {
84
+ if (typeof value !== 'object' || value === null) {
85
+ return false;
86
+ }
87
+ return (value as any)[KindId] !== undefined;
88
+ };
89
+
90
+ /**
91
+ * Check if a value is an ECHO entity snapshot.
92
+ * Returns `false` for entities.
93
+ */
94
+ export const isSnapshot = (value: unknown): value is Snapshot => {
95
+ if (typeof value !== 'object' || value === null) {
96
+ return false;
97
+ }
98
+ return (value as any)[SnapshotKindId] !== undefined;
99
+ };
100
+
101
+ // TODO(dmaretskyi): Type introspection -- move to kind.
102
+ export const getKind = internal.getEntityKind;
103
+
104
+ /**
105
+ * Property that accesses metadata for an entity.
106
+ */
107
+ export const Meta: unique symbol = internal.MetaId as any;
108
+
109
+ /**
110
+ * Property that accesses metadata for an entity.
111
+ */
112
+ export type Meta = typeof Meta;
93
113
 
94
114
  //
95
115
  // Entity-level functions that work on any entity (object or relation).
@@ -100,27 +120,27 @@ export const getKind = getEntityKind;
100
120
  /**
101
121
  * JSON representation of an entity.
102
122
  */
103
- export type JSON = ObjectJSON;
123
+ export type JSON = internal.ObjectJSON;
104
124
 
105
125
  /**
106
126
  * Get the DXN of an entity (object or relation).
107
127
  */
108
- export const getDXN = (entity: Unknown | Snapshot): DXN => getDXN$(entity);
128
+ export const getDXN = (entity: Unknown | Snapshot): DXN => internal.getDXN(entity);
109
129
 
110
130
  /**
111
131
  * Get the DXN of an entity's type.
112
132
  */
113
- export const getTypeDXN = getTypeDXN$;
133
+ export const getTypeDXN = internal.getTypeDXN;
114
134
 
115
135
  /**
116
136
  * Get the typename of an entity's type.
117
137
  */
118
- export const getTypename = (entity: Unknown | Snapshot): string | undefined => getTypename$(entity);
138
+ export const getTypename = (entity: Unknown | Snapshot): string | undefined => internal.getTypename(entity);
119
139
 
120
140
  /**
121
141
  * Get the database an entity belongs to.
122
142
  */
123
- export const getDatabase = (entity: Unknown | Snapshot): any | undefined => getDatabase$(entity);
143
+ export const getDatabase = (entity: Unknown | Snapshot): any | undefined => internal.getDatabase(entity);
124
144
 
125
145
  /**
126
146
  * Get the metadata for an entity.
@@ -128,43 +148,43 @@ export const getDatabase = (entity: Unknown | Snapshot): any | undefined => getD
128
148
  * Returns read-only meta when passed a regular entity or snapshot.
129
149
  */
130
150
  // TODO(wittjosiah): When passed a Snapshot, should return a snapshot of meta, not the live meta proxy.
131
- export function getMeta(entity: Mutable<Unknown>): ObjectMeta;
132
- export function getMeta(entity: Unknown | Snapshot): ReadonlyMeta;
133
- export function getMeta(entity: Unknown | Snapshot | Mutable<Unknown>): ObjectMeta | ReadonlyMeta {
134
- return getMeta$(entity);
151
+ export function getMeta(entity: Mutable<Unknown>): internal.ObjectMeta;
152
+ export function getMeta(entity: Unknown | Snapshot): internal.ReadonlyMeta;
153
+ export function getMeta(entity: Unknown | Snapshot | Mutable<Unknown>): internal.ObjectMeta | internal.ReadonlyMeta {
154
+ return internal.getMetaChecked(entity);
135
155
  }
136
156
 
137
157
  /**
138
158
  * Get foreign keys for an entity from the specified source.
139
159
  */
140
- export const getKeys = (entity: Unknown | Snapshot, source: string): ForeignKey[] => getKeys$(entity, source);
160
+ export const getKeys = (entity: Unknown | Snapshot, source: string): ForeignKey[] => internal.getKeys(entity, source);
141
161
 
142
162
  /**
143
163
  * Check if an entity is deleted.
144
164
  */
145
- export const isDeleted = (entity: Unknown | Snapshot): boolean => isDeleted$(entity);
165
+ export const isDeleted = (entity: Unknown | Snapshot): boolean => internal.isDeleted(entity);
146
166
 
147
167
  /**
148
168
  * Get the label of an entity.
149
169
  */
150
- export const getLabel = (entity: Unknown | Snapshot): string | undefined => getLabel$(entity);
170
+ export const getLabel = (entity: Unknown | Snapshot): string | undefined => internal.getLabel(entity);
151
171
 
152
172
  /**
153
173
  * Get the description of an entity.
154
174
  */
155
- export const getDescription = (entity: Unknown | Snapshot): string | undefined => getDescription$(entity);
175
+ export const getDescription = (entity: Unknown | Snapshot): string | undefined => internal.getDescription(entity);
156
176
 
157
177
  /**
158
178
  * Convert an entity to its JSON representation.
159
179
  */
160
- export const toJSON = (entity: Unknown | Snapshot): JSON => toJSON$(entity);
180
+ export const toJSON = (entity: Unknown | Snapshot): JSON => internal.objectToJSON(entity);
161
181
 
162
182
  /**
163
183
  * Subscribe to changes on an entity (object or relation).
164
184
  * @returns Unsubscribe function.
165
185
  */
166
186
  export const subscribe = (entity: Unknown, callback: () => void): (() => void) => {
167
- return subscribe$(entity, callback);
187
+ return internal.subscribe(entity, callback);
168
188
  };
169
189
 
170
190
  //
@@ -174,7 +194,7 @@ export const subscribe = (entity: Unknown, callback: () => void): (() => void) =
174
194
  /**
175
195
  * Used to provide a mutable view of an entity within `Entity.change`.
176
196
  */
177
- export type { Mutable };
197
+ export type Mutable<T> = internal.Mutable<T>;
178
198
 
179
199
  /**
180
200
  * Perform mutations on an entity (object or relation) within a change context.
@@ -200,18 +220,18 @@ export type { Mutable };
200
220
  *
201
221
  * Note: For type-specific operations, prefer `Obj.change` or `Relation.change`.
202
222
  */
203
- export const change = <T extends Unknown>(entity: T, callback: ChangeCallback<T>): void => {
204
- change$(entity, callback);
223
+ export const change = <T extends Unknown>(entity: T, callback: internal.ChangeCallback<T>): void => {
224
+ internal.change(entity, callback);
205
225
  };
206
226
 
207
227
  /**
208
228
  * Add a tag to an entity.
209
229
  * Must be called within an `Entity.change`, `Obj.change`, or `Relation.change` callback.
210
230
  */
211
- export const addTag = (entity: Mutable<Unknown>, tag: string): void => addTag$(entity, tag);
231
+ export const addTag = (entity: Mutable<Unknown>, tag: string): void => internal.addTag(entity, tag);
212
232
 
213
233
  /**
214
234
  * Remove a tag from an entity.
215
235
  * Must be called within an `Entity.change`, `Obj.change`, or `Relation.change` callback.
216
236
  */
217
- export const removeTag = (entity: Mutable<Unknown>, tag: string): void => removeTag$(entity, tag);
237
+ export const removeTag = (entity: Mutable<Unknown>, tag: string): void => internal.removeTag(entity, tag);
package/src/Err.ts CHANGED
@@ -2,6 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ // @import-as-namespace
6
+
5
7
  import { BaseError, type BaseErrorOptions } from '@dxos/errors';
6
8
  import { type DXN } from '@dxos/keys';
7
9
 
@@ -16,3 +18,23 @@ export class ObjectNotFoundError extends BaseError.extend('ObjectNotFoundError',
16
18
  super({ context: { dxn }, ...options });
17
19
  }
18
20
  }
21
+
22
+ /**
23
+ * Reason why getting a reactive object from a snapshot failed.
24
+ * - `no-database`: The snapshot is not associated with a database.
25
+ * - `object-not-found`: The object was removed or does not exist in the database.
26
+ */
27
+ export type GetReactiveErrorReason = 'no-database' | 'object-not-found';
28
+
29
+ /**
30
+ * Error thrown when a reactive object cannot be resolved from a snapshot.
31
+ * Extends `BaseError` with a `reason` and optional `snapshotId` in its context.
32
+ */
33
+ export class GetReactiveError extends BaseError.extend(
34
+ 'GetReactiveError',
35
+ 'Failed to get reactive object from snapshot',
36
+ ) {
37
+ constructor(options: { reason: GetReactiveErrorReason; snapshotId?: string } & BaseErrorOptions) {
38
+ super({ context: { reason: options.reason, snapshotId: options.snapshotId }, ...options });
39
+ }
40
+ }