@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
@@ -0,0 +1,105 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { assertArgument } from '@dxos/invariant';
6
+ import { deepMapValues } from '@dxos/util';
7
+
8
+ import {
9
+ KindId,
10
+ MetaId,
11
+ ObjectDatabaseId,
12
+ ObjectDeletedId,
13
+ RelationSourceDXNId,
14
+ RelationSourceId,
15
+ RelationTargetDXNId,
16
+ RelationTargetId,
17
+ SchemaId,
18
+ SelfDXNId,
19
+ SnapshotKindId,
20
+ TypeId,
21
+ } from '../common/types';
22
+
23
+ /**
24
+ * Copy a Symbol-keyed property from source to target if it has a defined value.
25
+ * Handles both plain objects (symbol in source) and proxies where get returns a value
26
+ * but has/in returns false (e.g. ObjectDatabaseId on echo-db proxies).
27
+ * Optional transform clones or mutates the value before assignment (e.g. for MetaId).
28
+ */
29
+ const copySymbolProperty = (
30
+ source: any,
31
+ target: any,
32
+ symbol: symbol,
33
+ transform?: (value: unknown) => unknown,
34
+ ): void => {
35
+ let value: unknown;
36
+ // Echo-db proxy getters (e.g. RelationSourceId, RelationTargetId) can throw in certain states.
37
+ try {
38
+ value = source[symbol];
39
+ } catch {
40
+ return;
41
+ }
42
+ if (value !== undefined) {
43
+ const finalValue = transform ? transform(value) : value;
44
+ Object.defineProperty(target, symbol, {
45
+ value: finalValue,
46
+ writable: false,
47
+ enumerable: false,
48
+ configurable: false,
49
+ });
50
+ }
51
+ };
52
+
53
+ /**
54
+ * Returns an immutable snapshot of the reactive object.
55
+ * The snapshot is branded with SnapshotKindId (not KindId).
56
+ */
57
+ export const getSnapshot = <T extends object>(obj: T): T => {
58
+ assertArgument(typeof obj === 'object' && obj !== null && KindId in obj, 'obj', 'must be an entity');
59
+
60
+ const snapshot = deepMapValues(obj, (value, recurse) => {
61
+ // Do not recurse on references (but do recurse on arrays).
62
+ if (
63
+ typeof value === 'object' &&
64
+ value !== null &&
65
+ Object.getPrototypeOf(value) !== Object.prototype &&
66
+ !Array.isArray(value)
67
+ ) {
68
+ return value;
69
+ }
70
+
71
+ return recurse(value);
72
+ }) as any;
73
+
74
+ // Add SnapshotKindId brand based on original KindId.
75
+ if (obj != null && typeof obj === 'object' && KindId in obj) {
76
+ snapshot[SnapshotKindId] = (obj as any)[KindId];
77
+ }
78
+
79
+ // Preserve Symbol-keyed properties that are important for type introspection.
80
+ // These are not copied by deepMapValues since Object.keys() doesn't include symbols.
81
+ const source = obj as any;
82
+
83
+ // Type introspection symbols.
84
+ copySymbolProperty(source, snapshot, TypeId);
85
+ copySymbolProperty(source, snapshot, SchemaId);
86
+ copySymbolProperty(source, snapshot, SelfDXNId);
87
+
88
+ // Database reference (required for Obj.getDatabase to work on snapshots).
89
+ copySymbolProperty(source, snapshot, ObjectDatabaseId);
90
+ copySymbolProperty(source, snapshot, ObjectDeletedId);
91
+
92
+ // Metadata symbol. Copy arrays so the snapshot is not affected by mutations to the live meta's keys/tags.
93
+ copySymbolProperty(source, snapshot, MetaId, (meta: any) => ({
94
+ keys: [...(meta?.keys ?? [])],
95
+ tags: [...(meta?.tags ?? [])],
96
+ }));
97
+
98
+ // Relation endpoint symbols.
99
+ copySymbolProperty(source, snapshot, RelationSourceDXNId);
100
+ copySymbolProperty(source, snapshot, RelationTargetDXNId);
101
+ copySymbolProperty(source, snapshot, RelationSourceId);
102
+ copySymbolProperty(source, snapshot, RelationTargetId);
103
+
104
+ return Object.freeze(snapshot) as T;
105
+ };
@@ -6,13 +6,13 @@ import * as Schema from 'effect/Schema';
6
6
  import * as SchemaAST from 'effect/SchemaAST';
7
7
  import { describe, expect, test } from 'vitest';
8
8
 
9
- import { EchoObjectSchema } from '../entities';
9
+ import { EchoObjectSchema } from '../Entity';
10
10
 
11
11
  const Organization = Schema.Struct({
12
12
  name: Schema.String,
13
13
  }).pipe(
14
14
  EchoObjectSchema({
15
- typename: 'example.com/type/Organization',
15
+ typename: 'com.example.type.organization',
16
16
  version: '0.1.0',
17
17
  }),
18
18
  );
@@ -25,7 +25,7 @@ describe('EchoObjectSchema DSL', () => {
25
25
  });
26
26
 
27
27
  test('static typename accessor', async () => {
28
- expect(Organization.typename).to.eq('example.com/type/Organization');
28
+ expect(Organization.typename).to.eq('com.example.type.organization');
29
29
  });
30
30
 
31
31
  test('expect schema', async () => {
@@ -4,8 +4,8 @@
4
4
 
5
5
  import type * as Schema from 'effect/Schema';
6
6
 
7
- import { type TypeMeta } from '../annotations';
8
- import { type AnyEntity } from '../types';
7
+ import { type TypeMeta } from '../Annotation';
8
+ import { type AnyEntity } from '../common/types';
9
9
 
10
10
  /**
11
11
  * Definition for an object type that can be stored in an ECHO database.
@@ -14,7 +14,7 @@ import { type AnyEntity } from '../types';
14
14
  *
15
15
  * In contrast to {@link EchoSchema} this definition is not recorded in the database.
16
16
  *
17
- * @deprecated Use `Type.Obj.Any` from `@dxos/echo` instead.
17
+ * @deprecated Use `Type.AnyObj` from `@dxos/echo` instead.
18
18
  */
19
19
  export interface TypedObject<A = any, I = any> extends TypeMeta, Schema.Schema<A, I> {}
20
20
 
@@ -22,7 +22,7 @@ export interface TypedObject<A = any, I = any> extends TypeMeta, Schema.Schema<A
22
22
  * Typed object that could be used as a prototype in class definitions.
23
23
  * This is an internal API type.
24
24
  *
25
- * @deprecated Use `Type.Obj.Any` from `@dxos/echo` instead.
25
+ * @deprecated Use `Type.AnyObj` from `@dxos/echo` instead.
26
26
  */
27
27
  export interface TypedObjectPrototype<A = any, I = any> extends TypedObject<A, I> {
28
28
  /** Type constructor. */
@@ -5,7 +5,7 @@
5
5
  import { type ObjectId } from '@dxos/keys';
6
6
  import { isNonNullable } from '@dxos/util';
7
7
 
8
- import { type AnyEntity } from '../types';
8
+ import { type AnyEntity } from '../common/types';
9
9
 
10
10
  import { Ref } from './ref';
11
11
 
@@ -7,8 +7,8 @@ import { describe, expect, test } from 'vitest';
7
7
 
8
8
  import { DXN, ObjectId } from '@dxos/keys';
9
9
 
10
- import { EchoObjectSchema, getObjectDXN } from '../entities';
11
- import { createObject } from '../object';
10
+ import { EchoObjectSchema, getObjectDXN } from '../Entity';
11
+ import { createObject } from '../Obj';
12
12
 
13
13
  import { Ref, getReferenceAst } from './ref';
14
14
 
@@ -16,7 +16,7 @@ const Task = Schema.Struct({
16
16
  title: Schema.optional(Schema.String),
17
17
  }).pipe(
18
18
  EchoObjectSchema({
19
- typename: 'example.com/type/Task',
19
+ typename: 'com.example.type.task',
20
20
  version: '0.1.0',
21
21
  }),
22
22
  );
@@ -29,7 +29,7 @@ const Contact = Schema.Struct({
29
29
  tasks: Schema.Array(Ref(Task)),
30
30
  }).pipe(
31
31
  EchoObjectSchema({
32
- typename: 'example.com/type/Person',
32
+ typename: 'com.example.type.person',
33
33
  version: '0.1.0',
34
34
  }),
35
35
  );
@@ -3,8 +3,11 @@
3
3
  //
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
+ import * as Equal from 'effect/Equal';
7
+ import * as Hash from 'effect/Hash';
6
8
  import * as Option from 'effect/Option';
7
9
  import * as ParseResult from 'effect/ParseResult';
10
+ import * as Pipeable from 'effect/Pipeable';
8
11
  import * as Schema from 'effect/Schema';
9
12
  import * as SchemaAST from 'effect/SchemaAST';
10
13
  import type * as Types from 'effect/Types';
@@ -16,9 +19,9 @@ import { assertArgument, invariant } from '@dxos/invariant';
16
19
  import { DXN, ObjectId } from '@dxos/keys';
17
20
 
18
21
  import * as Database from '../../Database';
19
- import { ReferenceAnnotationId, getSchemaDXN, getTypeAnnotation, getTypeIdentifierAnnotation } from '../annotations';
20
- import { type JsonSchemaType } from '../json-schema';
21
- import type { AnyEntity, AnyProperties } from '../types';
22
+ import { ReferenceAnnotationId, getSchemaDXN, getTypeAnnotation, getTypeIdentifierAnnotation } from '../Annotation';
23
+ import { type JsonSchemaType } from '../JsonSchema';
24
+ import type { AnyEntity, AnyProperties } from '../common/types';
22
25
 
23
26
  /**
24
27
  * The `$id` and `$ref` fields for an ECHO reference schema.
@@ -130,7 +133,7 @@ export const Ref: RefFn = <S extends Schema.Schema.Any>(schema: S): RefSchema<Sc
130
133
  * Represents materialized reference to a target.
131
134
  * This is the data type for the fields marked as ref.
132
135
  */
133
- export interface Ref<T> {
136
+ export interface Ref<T> extends Pipeable.Pipeable {
134
137
  /**
135
138
  * Target object DXN.
136
139
  */
@@ -459,6 +462,21 @@ export class RefImpl<T> implements Ref<T> {
459
462
 
460
463
  [RefTypeId] = refVariance;
461
464
 
465
+ /**
466
+ * Effect Hash trait. Required for MutableHashMap-based caches (e.g., Atom.family)
467
+ * to deduplicate Ref instances that point to the same object.
468
+ * ECHO proxies return new RefImpl instances on every property access,
469
+ * so without this, each access would create a separate cache entry.
470
+ */
471
+ [Hash.symbol](): number {
472
+ return Hash.hash(this.#dxn.toString());
473
+ }
474
+
475
+ /** Effect Equal trait. See {@link Hash.symbol} for rationale. */
476
+ [Equal.symbol](that: Equal.Equal): boolean {
477
+ return that instanceof RefImpl && this.#dxn.toString() === that.dxn.toString();
478
+ }
479
+
462
480
  /**
463
481
  * Internal method to set the resolver.
464
482
  *
@@ -474,6 +492,11 @@ export class RefImpl<T> implements Ref<T> {
474
492
  _getSavedTarget(): T | undefined {
475
493
  return this.#target;
476
494
  }
495
+
496
+ pipe() {
497
+ // eslint-disable-next-line prefer-rest-params
498
+ return Pipeable.pipeArguments(this, arguments);
499
+ }
477
500
  }
478
501
 
479
502
  /**
@@ -5,10 +5,10 @@
5
5
  import * as Schema from 'effect/Schema';
6
6
  import { describe, test } from 'vitest';
7
7
 
8
- import { FieldPath } from '../annotations';
9
- import { EchoObjectSchema } from '../entities';
10
- import { FormatAnnotation, TypeFormat } from '../formats';
11
- import { ECHO_ANNOTATIONS_NS_KEY, toJsonSchema } from '../json-schema';
8
+ import { FieldPath } from '../Annotation';
9
+ import { EchoObjectSchema } from '../Entity';
10
+ import { FormatAnnotation, TypeFormat } from '../Format';
11
+ import { ECHO_ANNOTATIONS_NS_KEY, toJsonSchema } from '../JsonSchema';
12
12
 
13
13
  import { composeSchema } from './compose';
14
14
 
@@ -17,7 +17,7 @@ describe('schema composition', () => {
17
17
  const BaseType = Schema.Struct({
18
18
  name: Schema.String,
19
19
  email: Schema.String,
20
- }).pipe(EchoObjectSchema({ typename: 'example.com/Person', version: '0.1.0' }));
20
+ }).pipe(EchoObjectSchema({ typename: 'com.example.person', version: '0.1.0' }));
21
21
 
22
22
  const OverlaySchema = Schema.Struct({
23
23
  email: Schema.String.pipe(FieldPath('$.email'), FormatAnnotation.set(TypeFormat.Email)),
@@ -6,7 +6,7 @@ import type * as Types from 'effect/Types';
6
6
 
7
7
  import { invariant } from '@dxos/invariant';
8
8
 
9
- import { type JsonSchemaType } from '../json-schema';
9
+ import { type JsonSchemaType } from '../JsonSchema';
10
10
 
11
11
  /**
12
12
  * Creates a composite schema from the source and projection schemas.
@@ -8,11 +8,12 @@ import * as SchemaAST from 'effect/SchemaAST';
8
8
  import { invariant } from '@dxos/invariant';
9
9
  import { type ObjectId } from '@dxos/keys';
10
10
 
11
- import { type SchemaMeta, SchemaMetaSymbol, type TypeAnnotation, getTypeAnnotation } from '../annotations';
12
- import { type JsonSchemaType, toEffectSchema, toJsonSchema } from '../json-schema';
13
- import { type TypedObject, type TypedObjectPrototype, getSnapshot } from '../object';
14
- import { ChangeId } from '../proxy';
15
- import { EntityKind, SchemaKindId } from '../types';
11
+ import type * as Type from '../../Type';
12
+ import { type SchemaMeta, SchemaMetaSymbol, type TypeAnnotation, getTypeAnnotation } from '../Annotation';
13
+ import { type JsonSchemaType, toEffectSchema, toJsonSchema } from '../JsonSchema';
14
+ import { type TypedObject, type TypedObjectPrototype, getSnapshot } from '../Obj';
15
+ import { ChangeId } from '../common/proxy';
16
+ import { EntityKind, SchemaKindId } from '../common/types';
16
17
 
17
18
  import {
18
19
  addFieldsToSchema,
@@ -177,7 +178,7 @@ const schemaVariance = {
177
178
  *
178
179
  * @example
179
180
  * ```ts
180
- * export class TableType extends Schema.Struct({...}).pipe(Type.object({ typename: 'example.org/type/Table', version: '0.1.0' })){
181
+ * export class TableType extends Schema.Struct({...}).pipe(Type.object({ typename: 'com.example.type.table', version: '0.1.0' })){
181
182
  * title: Schema.String,
182
183
  * schema: Schema.optional(ref(EchoSchema)),
183
184
  * props: Schema.mutable(S.Array(TablePropSchema)),
@@ -192,7 +193,7 @@ export class EchoSchema<A = any, I = any> extends EchoSchemaConstructor() implem
192
193
 
193
194
  /**
194
195
  * Schema kind key that marks this as an ECHO schema.
195
- * Makes EchoSchema satisfy the Type.Obj.Any type.
196
+ * Makes EchoSchema satisfy the Type.AnyObj type.
196
197
  */
197
198
  readonly [SchemaKindId]: EntityKind.Object = EntityKind.Object;
198
199
 
@@ -304,8 +305,8 @@ export class EchoSchema<A = any, I = any> extends EchoSchemaConstructor() implem
304
305
  /**
305
306
  * Reference to the underlying persistent schema object.
306
307
  */
307
- public get persistentSchema(): PersistentSchema {
308
- return this._persistentSchema;
308
+ public get persistentSchema(): Type.PersistentType {
309
+ return this._persistentSchema as Type.PersistentType;
309
310
  }
310
311
 
311
312
  public getProperties(): SchemaAST.PropertySignature[] {
@@ -399,7 +400,7 @@ export class EchoSchema<A = any, I = any> extends EchoSchemaConstructor() implem
399
400
  */
400
401
  _rebuild(): void {
401
402
  if (this._isDirty || this._schema == null) {
402
- this._schema = toEffectSchema(getSnapshot(this._persistentSchema.jsonSchema));
403
+ this._schema = toEffectSchema(getSnapshot(this._persistentSchema).jsonSchema);
403
404
  this._isDirty = false;
404
405
  }
405
406
  }
@@ -8,7 +8,7 @@ import * as SchemaAST from 'effect/SchemaAST';
8
8
  import { invariant } from '@dxos/invariant';
9
9
  import { DXN } from '@dxos/keys';
10
10
 
11
- import { type TypeAnnotation, TypeAnnotationId, TypeIdentifierAnnotationId } from '../annotations';
11
+ import { type TypeAnnotation, TypeAnnotationId, TypeIdentifierAnnotationId } from '../Annotation';
12
12
 
13
13
  // TODO(ZaymonFC): Do this one at a time. This might be dangerous.
14
14
  export const addFieldsToSchema = (
@@ -4,9 +4,10 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
- import { TypenameSchema, VersionSchema } from '../annotations';
8
- import { EchoObjectSchema } from '../entities';
9
- import { JsonSchemaType } from '../json-schema';
7
+ import { IconAnnotation } from '../Annotation';
8
+ import { LabelAnnotation, TypenameSchema, VersionSchema } from '../Annotation';
9
+ import { EchoObjectSchema } from '../Entity';
10
+ import { JsonSchemaType } from '../JsonSchema';
10
11
 
11
12
  /**
12
13
  * Persistent representation of a schema.
@@ -19,9 +20,14 @@ export const PersistentSchema = Schema.Struct({
19
20
  jsonSchema: JsonSchemaType,
20
21
  }).pipe(
21
22
  EchoObjectSchema({
22
- typename: 'dxos.org/type/Schema',
23
+ typename: 'org.dxos.type.schema',
23
24
  version: '0.1.0',
24
25
  }),
26
+ LabelAnnotation.set(['name']),
27
+ IconAnnotation.set({
28
+ icon: 'ph--brackets-curly--regular',
29
+ hue: 'blue',
30
+ }),
25
31
  );
26
32
 
27
33
  export interface PersistentSchema extends Schema.Schema.Type<typeof PersistentSchema> {}
@@ -30,7 +30,7 @@
30
30
 
31
31
  - [x] QueryResult namespace
32
32
  - [x] SchemaRegistry interface
33
- - [x] Schema registry should return Type.Entity.Any instead of Schema.Schema.AnyNoContext.
33
+ - [x] Schema registry should return Type.AnyEntity instead of Schema.Schema.AnyNoContext.
34
34
  - [x] Hypergraph interface
35
35
  - [x] Obj.getDatabase
36
36
  - [x] SpaceAction.AddObject target should be a db not a space.
@@ -12,8 +12,4 @@
12
12
  * and prevent external packages from using internals directly.
13
13
  */
14
14
 
15
- export * from './annotations';
16
- export * from './entity';
17
15
  export * from './meta';
18
- export * from './sorting';
19
- export * from './version';
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './api';
6
+ export * from './proxy';
7
+ export * from './types';
@@ -4,9 +4,9 @@
4
4
 
5
5
  import { describe, test } from 'vitest';
6
6
 
7
- import * as Obj from '../../Obj';
8
- import * as Relation from '../../Relation';
9
- import { TestSchema } from '../../testing';
7
+ import * as Obj from '../../../Obj';
8
+ import * as Relation from '../../../Relation';
9
+ import { TestSchema } from '../../../testing';
10
10
 
11
11
  /**
12
12
  * Tests for Obj.change context enforcement and mutator type safety.
@@ -8,8 +8,8 @@ import { describe, expect, test } from 'vitest';
8
8
 
9
9
  import { isNode } from '@dxos/util';
10
10
 
11
- import { TestSchema, updateCounter } from '../../testing';
12
- import { createObject } from '../object';
11
+ import { TestSchema, updateCounter } from '../../../testing';
12
+ import { createObject } from '../../Obj';
13
13
  import { ATTR_META } from '../types';
14
14
 
15
15
  import { makeObject } from './make-object';
@@ -7,16 +7,19 @@ import { invariant } from '@dxos/invariant';
7
7
  import { DXN } from '@dxos/keys';
8
8
  import { deepMapValues } from '@dxos/util';
9
9
 
10
+ import { Ref } from '../../Ref';
10
11
  import {
12
+ ATTR_META,
11
13
  ATTR_RELATION_SOURCE,
12
14
  ATTR_RELATION_TARGET,
13
15
  ATTR_SELF_DXN,
16
+ ATTR_TYPE,
17
+ MetaId,
14
18
  RelationSourceDXNId,
15
19
  RelationTargetDXNId,
16
20
  SelfDXNId,
17
- } from '../entities';
18
- import { Ref } from '../ref';
19
- import { ATTR_META, ATTR_TYPE, MetaId, TypeId } from '../types';
21
+ TypeId,
22
+ } from '../types';
20
23
 
21
24
  /**
22
25
  * Attaches a toJSON method to the object for typed serialization.
@@ -6,8 +6,8 @@ import type * as Schema from 'effect/Schema';
6
6
 
7
7
  import { ObjectId } from '@dxos/keys';
8
8
 
9
- import { getTypeAnnotation } from '../annotations';
10
- import { type AnyProperties, KindId, MetaId, type ObjectMeta, ObjectMetaSchema } from '../types';
9
+ import { getTypeAnnotation } from '../../Annotation';
10
+ import { type AnyProperties, KindId, MetaId, type ObjectMeta, ObjectMetaSchema, ParentId } from '../types';
11
11
 
12
12
  import { defineHiddenProperty } from './define-hidden-property';
13
13
  import { attachTypedJsonSerializer } from './json-serializer';
@@ -35,7 +35,8 @@ export const makeObject: {
35
35
  meta?: ObjectMeta,
36
36
  ): T;
37
37
  } = <T extends AnyProperties>(schema: Schema.Schema<T, any>, obj: MakeObjectProps<T>, meta?: ObjectMeta): T => {
38
- return createReactiveObject<T>({ ...obj } as T, meta, schema);
38
+ // Use Object.assign to copy symbol properties (like ParentId) that spread operator doesn't copy.
39
+ return createReactiveObject<T>(Object.assign({}, obj) as T, meta, schema);
39
40
  };
40
41
 
41
42
  const createReactiveObject = <T extends AnyProperties>(obj: T, meta?: ObjectMeta, schema?: Schema.Schema<T>): T => {
@@ -47,12 +48,21 @@ const createReactiveObject = <T extends AnyProperties>(obj: T, meta?: ObjectMeta
47
48
  throw new Error('Schema is required for reactive objects. Use Atom for untyped reactive state.');
48
49
  }
49
50
 
51
+ // Extract parent from props (can be set via [Obj.Parent]).
52
+ const parent = (obj as any)[ParentId];
53
+ if (parent !== undefined) {
54
+ delete (obj as any)[ParentId];
55
+ }
56
+
50
57
  const annotation = getTypeAnnotation(schema);
51
58
  if (annotation) {
52
59
  setIdOnTarget(obj);
53
60
  defineHiddenProperty(obj, KindId, annotation.kind);
54
61
  }
55
62
  initMeta(obj, meta);
63
+ if (parent !== undefined) {
64
+ defineHiddenProperty(obj, ParentId, parent);
65
+ }
56
66
  prepareTypedTarget(obj, schema);
57
67
  attachTypedJsonSerializer(obj);
58
68
  const proxy = createProxy<T>(obj, TypedReactiveHandler.instance);
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type RefTypeId } from '../ref/ref';
5
+ import { type RefTypeId } from '../../Ref/ref';
6
6
 
7
7
  import { getProxyTarget } from './proxy-utils';
8
8
  import { ChangeId, EventId } from './symbols';
@@ -6,14 +6,14 @@ import * as Schema from 'effect/Schema';
6
6
  import * as SchemaAST from 'effect/SchemaAST';
7
7
  import { describe, expect, test } from 'vitest';
8
8
 
9
- import { createEchoSchema } from '../../testing';
10
- import { PropertyMeta, getPropertyMetaAnnotation, getTypeAnnotation } from '../annotations';
11
- import { EchoObjectSchema } from '../entities';
9
+ import { createEchoSchema } from '../../../testing';
10
+ import { PropertyMeta, getPropertyMetaAnnotation, getTypeAnnotation } from '../../Annotation';
11
+ import { EchoObjectSchema } from '../../Entity';
12
12
 
13
13
  // TODO(dmaretskyi): Comment.
14
14
  const EmptySchemaType = Schema.Struct({}).pipe(
15
15
  EchoObjectSchema({
16
- typename: 'example.com/type/Empty',
16
+ typename: 'com.example.type.empty',
17
17
  version: '0.1.0',
18
18
  }),
19
19
  );
@@ -27,7 +27,7 @@ describe('dynamic schema', () => {
27
27
  field2: Schema.Boolean,
28
28
  }).pipe(
29
29
  EchoObjectSchema({
30
- typename: 'example.com/type/Test',
30
+ typename: 'com.example.type.test',
31
31
  version: '0.1.0',
32
32
  }),
33
33
  );
@@ -44,7 +44,7 @@ describe('dynamic schema', () => {
44
44
  field1: Schema.String,
45
45
  }).pipe(
46
46
  EchoObjectSchema({
47
- typename: 'example.com/type/Test',
47
+ typename: 'com.example.type.test',
48
48
  version: '0.1.0',
49
49
  }),
50
50
  );
@@ -95,7 +95,7 @@ describe('dynamic schema', () => {
95
95
  registered.updateFields({ field3: Schema.Boolean });
96
96
  registered.removeFields(['field2']);
97
97
  expect(getTypeAnnotation(registered)).to.deep.contain({
98
- typename: 'example.com/type/Empty',
98
+ typename: 'com.example.type.empty',
99
99
  version: '0.1.0',
100
100
  });
101
101
  expect(getPropertyMetaAnnotation(registered.getProperties()[0], metaNamespace)).to.deep.eq(metaInfo);
@@ -111,7 +111,7 @@ describe('dynamic schema', () => {
111
111
  });
112
112
 
113
113
  // First update.
114
- const newTypename1 = 'example.com/type/Individual';
114
+ const newTypename1 = 'com.example.type.individual';
115
115
  registered.updateTypename(newTypename1);
116
116
 
117
117
  // Basic typename update checks.
@@ -132,13 +132,13 @@ describe('dynamic schema', () => {
132
132
  expect(nameMeta).toEqual({ maxLength: 10 });
133
133
 
134
134
  // Second update to ensure multiple updates work.
135
- const newTypename2 = 'example.com/type/Person';
135
+ const newTypename2 = 'com.example.type.person';
136
136
  registered.updateTypename(newTypename2);
137
137
  expect(registered.typename).toBe(newTypename2);
138
138
  expect(registered.jsonSchema.$id).toBe(`dxn:type:${newTypename2}`);
139
139
  expect(registered.jsonSchema.typename).toBe(newTypename2);
140
140
  expect(getTypeAnnotation(registered)).to.deep.contain({
141
- typename: 'example.com/type/Person',
141
+ typename: 'com.example.type.person',
142
142
  version: '0.1.0',
143
143
  });
144
144
  });
@@ -5,10 +5,10 @@
5
5
  import * as Schema from 'effect/Schema';
6
6
  import { describe, expect, test } from 'vitest';
7
7
 
8
- import { TestSchema } from '../../testing';
9
- import { EchoObjectSchema } from '../entities';
10
- import { setValue } from '../object';
11
- import { Ref } from '../ref';
8
+ import { TestSchema } from '../../../testing';
9
+ import { EchoObjectSchema } from '../../Entity';
10
+ import { setValue } from '../../Obj';
11
+ import { Ref } from '../../Ref';
12
12
  import { foreignKey, getMeta } from '../types';
13
13
 
14
14
  import { makeObject } from './make-object';
@@ -40,10 +40,10 @@ describe('complex schema validations', () => {
40
40
 
41
41
  test('references', () => {
42
42
  const Foo = Schema.Struct({ field: Schema.String }).pipe(
43
- EchoObjectSchema({ typename: 'example.com/type/Foo', version: '0.1.0' }),
43
+ EchoObjectSchema({ typename: 'com.example.type.foo', version: '0.1.0' }),
44
44
  );
45
45
  const Bar = Schema.Struct({ fooRef: Ref(Foo) }).pipe(
46
- EchoObjectSchema({ typename: 'example.com/type/Bar', version: '0.1.0' }),
46
+ EchoObjectSchema({ typename: 'com.example.type.bar', version: '0.1.0' }),
47
47
  );
48
48
  const field = 'hello';
49
49
  expect(() => makeObject(Bar, { fooRef: { id: '1', field } as any })).to.throw();