@dxos/echo 0.8.4-main.937b3ca → 0.8.4-main.9be5663bfe

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 (668) 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 +47 -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/Extension.mjs +18 -0
  7. package/dist/lib/neutral/Feed.mjs +48 -0
  8. package/dist/lib/neutral/Filter.mjs +72 -0
  9. package/dist/lib/{browser → neutral}/Format.mjs +4 -5
  10. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  11. package/dist/lib/{browser → neutral}/Key.mjs +2 -3
  12. package/dist/lib/{node-esm → neutral}/Obj.mjs +39 -17
  13. package/dist/lib/{browser → neutral}/Order.mjs +2 -3
  14. package/dist/lib/neutral/Query.mjs +38 -0
  15. package/dist/lib/neutral/QueryResult.mjs +2 -0
  16. package/dist/lib/neutral/Ref.mjs +24 -0
  17. package/dist/lib/{browser → neutral}/Relation.mjs +22 -13
  18. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  19. package/dist/lib/neutral/Tag.mjs +29 -0
  20. package/dist/lib/neutral/Type.mjs +37 -0
  21. package/dist/lib/{browser/chunk-XDIUHAAX.mjs → neutral/chunk-46QNGNTY.mjs} +9 -5
  22. package/dist/lib/neutral/chunk-46QNGNTY.mjs.map +7 -0
  23. package/dist/lib/neutral/chunk-5VKHCUDA.mjs +299 -0
  24. package/dist/lib/neutral/chunk-5VKHCUDA.mjs.map +7 -0
  25. package/dist/lib/{node-esm/chunk-YOLH5KS4.mjs → neutral/chunk-6URFBQJH.mjs} +104 -26
  26. package/dist/lib/neutral/chunk-6URFBQJH.mjs.map +7 -0
  27. package/dist/lib/neutral/chunk-7SQD3FRZ.mjs +159 -0
  28. package/dist/lib/neutral/chunk-7SQD3FRZ.mjs.map +7 -0
  29. package/dist/lib/{browser/chunk-INHXFXY5.mjs → neutral/chunk-ANHVGJI4.mjs} +2 -3
  30. package/dist/lib/{node-esm/chunk-AJEMYSIR.mjs.map → neutral/chunk-ANHVGJI4.mjs.map} +1 -1
  31. package/dist/lib/{browser/chunk-ZHXZGIXD.mjs → neutral/chunk-BNCCGLJN.mjs} +1 -3
  32. package/dist/lib/{node-esm/chunk-MOLNWFNL.mjs.map → neutral/chunk-BNCCGLJN.mjs.map} +2 -2
  33. package/dist/lib/{browser/chunk-FRDT7RA4.mjs → neutral/chunk-DQYLD2RB.mjs} +15 -16
  34. package/dist/lib/neutral/chunk-DQYLD2RB.mjs.map +7 -0
  35. package/dist/lib/{node-esm/chunk-ZBB67AKD.mjs → neutral/chunk-E5PBQJWV.mjs} +9 -6
  36. package/dist/lib/neutral/chunk-E5PBQJWV.mjs.map +7 -0
  37. package/dist/lib/neutral/chunk-EBVB5NOH.mjs +133 -0
  38. package/dist/lib/neutral/chunk-EBVB5NOH.mjs.map +7 -0
  39. package/dist/lib/neutral/chunk-FNEFSO2C.mjs +787 -0
  40. package/dist/lib/neutral/chunk-FNEFSO2C.mjs.map +7 -0
  41. package/dist/lib/{browser/chunk-BJPE6CIC.mjs → neutral/chunk-FW7UJX25.mjs} +1708 -2721
  42. package/dist/lib/neutral/chunk-FW7UJX25.mjs.map +7 -0
  43. package/dist/lib/{browser/chunk-PQZW3S6L.mjs → neutral/chunk-GZQTCRJB.mjs} +3 -4
  44. package/dist/lib/neutral/chunk-GZQTCRJB.mjs.map +7 -0
  45. package/dist/lib/neutral/chunk-HBJ7JT5A.mjs +120 -0
  46. package/dist/lib/neutral/chunk-HBJ7JT5A.mjs.map +7 -0
  47. package/dist/lib/{browser/chunk-CGS2ULMK.mjs → neutral/chunk-J5LGTIGS.mjs} +1 -2
  48. package/dist/lib/{browser/chunk-U2J7TA7K.mjs → neutral/chunk-OLFCVPOO.mjs} +6 -7
  49. package/dist/lib/neutral/chunk-OLFCVPOO.mjs.map +7 -0
  50. package/dist/lib/{browser/chunk-IXVWLTG7.mjs → neutral/chunk-OMUPQMLR.mjs} +1 -3
  51. package/dist/lib/{browser/chunk-IXVWLTG7.mjs.map → neutral/chunk-OMUPQMLR.mjs.map} +1 -1
  52. package/dist/lib/neutral/chunk-QWAOTFCY.mjs +396 -0
  53. package/dist/lib/neutral/chunk-QWAOTFCY.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-R72KFH2X.mjs +34 -0
  55. package/dist/lib/neutral/chunk-R72KFH2X.mjs.map +7 -0
  56. package/dist/lib/{browser/chunk-ZAGAOZVY.mjs → neutral/chunk-T2JOLN37.mjs} +73 -7
  57. package/dist/lib/neutral/chunk-T2JOLN37.mjs.map +7 -0
  58. package/dist/lib/{browser/chunk-YKTSSMDS.mjs → neutral/chunk-TBKX6JQO.mjs} +4 -6
  59. package/dist/lib/neutral/chunk-TBKX6JQO.mjs.map +7 -0
  60. package/dist/lib/{browser/chunk-CJ5YELTO.mjs → neutral/chunk-UBEZSGXY.mjs} +15 -3
  61. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  62. package/dist/lib/{browser/chunk-JMKVF2YQ.mjs → neutral/chunk-UI6MWK5W.mjs} +3 -4
  63. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  64. package/dist/lib/{browser/chunk-KQQGVHFN.mjs → neutral/chunk-UPWIIW2V.mjs} +12 -58
  65. package/dist/lib/neutral/chunk-UPWIIW2V.mjs.map +7 -0
  66. package/dist/lib/{node-esm/chunk-ANLVLWME.mjs → neutral/chunk-WVLOCXB5.mjs} +33 -10
  67. package/dist/lib/neutral/chunk-WVLOCXB5.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs +50 -0
  69. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs.map +7 -0
  70. package/dist/lib/{browser/chunk-2SBB7OWV.mjs → neutral/chunk-YSLSJ7QS.mjs} +73 -25
  71. package/dist/lib/neutral/chunk-YSLSJ7QS.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-ZGVZNBBJ.mjs +415 -0
  73. package/dist/lib/neutral/chunk-ZGVZNBBJ.mjs.map +7 -0
  74. package/dist/lib/{node-esm/chunk-NBWL7UCZ.mjs → neutral/chunk-ZIXGDU6F.mjs} +9 -4
  75. package/dist/lib/neutral/chunk-ZIXGDU6F.mjs.map +7 -0
  76. package/dist/lib/neutral/index.mjs +101 -0
  77. package/dist/lib/{browser → neutral}/internal/index.mjs +57 -40
  78. package/dist/lib/neutral/meta.json +1 -0
  79. package/dist/lib/{node-esm → neutral}/testing/index.mjs +44 -37
  80. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  81. package/dist/types/src/Annotation.d.ts +23 -1
  82. package/dist/types/src/Annotation.d.ts.map +1 -1
  83. package/dist/types/src/Collection.d.ts +16 -0
  84. package/dist/types/src/Collection.d.ts.map +1 -0
  85. package/dist/types/src/Database.d.ts +86 -84
  86. package/dist/types/src/Database.d.ts.map +1 -1
  87. package/dist/types/src/Dataset.d.ts +19 -0
  88. package/dist/types/src/Dataset.d.ts.map +1 -0
  89. package/dist/types/src/Entity.d.ts +41 -15
  90. package/dist/types/src/Entity.d.ts.map +1 -1
  91. package/dist/types/src/Err.d.ts +43 -0
  92. package/dist/types/src/Err.d.ts.map +1 -1
  93. package/dist/types/src/Extension.d.ts +80 -0
  94. package/dist/types/src/Extension.d.ts.map +1 -0
  95. package/dist/types/src/Extension.test.d.ts +2 -0
  96. package/dist/types/src/Extension.test.d.ts.map +1 -0
  97. package/dist/types/src/Feed.d.ts +171 -0
  98. package/dist/types/src/Feed.d.ts.map +1 -0
  99. package/dist/types/src/Filter.d.ts +32 -5
  100. package/dist/types/src/Filter.d.ts.map +1 -1
  101. package/dist/types/src/Filter.test.d.ts +2 -0
  102. package/dist/types/src/Filter.test.d.ts.map +1 -0
  103. package/dist/types/src/Format.d.ts +3 -3
  104. package/dist/types/src/Format.d.ts.map +1 -1
  105. package/dist/types/src/Hypergraph.d.ts +8 -3
  106. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  107. package/dist/types/src/JsonSchema.d.ts +11 -4
  108. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  109. package/dist/types/src/Obj.d.ts +174 -46
  110. package/dist/types/src/Obj.d.ts.map +1 -1
  111. package/dist/types/src/Order.d.ts.map +1 -1
  112. package/dist/types/src/Query.d.ts +109 -15
  113. package/dist/types/src/Query.d.ts.map +1 -1
  114. package/dist/types/src/Ref.d.ts +58 -10
  115. package/dist/types/src/Ref.d.ts.map +1 -1
  116. package/dist/types/src/Relation.d.ts +75 -29
  117. package/dist/types/src/Relation.d.ts.map +1 -1
  118. package/dist/types/src/SchemaRegistry.d.ts +4 -4
  119. package/dist/types/src/SchemaRegistry.d.ts.map +1 -1
  120. package/dist/types/src/Tag.d.ts +4 -3
  121. package/dist/types/src/Tag.d.ts.map +1 -1
  122. package/dist/types/src/Type.d.ts +51 -180
  123. package/dist/types/src/Type.d.ts.map +1 -1
  124. package/dist/types/src/View.d.ts +68 -0
  125. package/dist/types/src/View.d.ts.map +1 -0
  126. package/dist/types/src/hierarchy.test.d.ts +2 -0
  127. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  128. package/dist/types/src/index.d.ts +5 -0
  129. package/dist/types/src/index.d.ts.map +1 -1
  130. package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +69 -8
  131. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  132. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  133. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  134. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  135. package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
  136. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  137. package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +13 -1
  138. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  139. package/dist/types/src/internal/{api/entity.d.ts → Entity/api.d.ts} +2 -2
  140. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  141. package/dist/types/src/internal/{entities → Entity}/entity.d.ts +3 -3
  142. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  143. package/dist/types/src/internal/{entities → Entity}/index.d.ts +2 -0
  144. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  145. package/dist/types/src/internal/{entities → Entity}/model.d.ts +4 -26
  146. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  147. package/dist/types/src/internal/{entities → Entity}/object.d.ts +2 -2
  148. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  149. package/dist/types/src/internal/{entities → Entity}/relation.d.ts +3 -30
  150. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  151. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  152. package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
  153. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  154. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  155. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  156. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  157. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  158. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  159. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  160. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  161. package/dist/types/src/internal/{formats → Format}/select.d.ts +2 -2
  162. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  163. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  164. package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
  165. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  166. package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
  167. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  168. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  169. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  170. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  171. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +131 -30
  172. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  173. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +2 -1
  174. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  175. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  176. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  177. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  178. package/dist/types/src/internal/{object → Obj}/create-object.d.ts +2 -2
  179. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  180. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  181. package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
  182. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  183. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  184. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  185. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  186. package/dist/types/src/internal/{object → Obj}/json-serializer.d.ts +13 -5
  187. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  188. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  189. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  190. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  191. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  192. package/dist/types/src/internal/{object → Obj}/set-value.d.ts +1 -1
  193. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  194. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  195. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  196. package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +4 -4
  197. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  198. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  199. package/dist/types/src/internal/Query.d.ts +10 -0
  200. package/dist/types/src/internal/Query.d.ts.map +1 -0
  201. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  202. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
  203. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  204. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +18 -4
  205. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  206. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  207. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  208. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  209. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  210. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +8 -7
  211. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  212. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  213. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  214. package/dist/types/src/internal/{schema → Type}/persistent-schema.d.ts +2 -2
  215. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  216. package/dist/types/src/internal/{api → common/api}/index.d.ts +0 -4
  217. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  218. package/dist/types/src/internal/{api → common/api}/meta.d.ts +2 -2
  219. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  220. package/dist/types/src/internal/common/index.d.ts +4 -0
  221. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  222. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  223. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  224. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  225. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  226. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  227. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  228. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  229. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  230. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  231. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  232. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  233. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  234. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  235. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +1 -1
  236. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  237. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  238. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  239. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  240. package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +2 -1
  241. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  242. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  243. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  244. package/dist/types/src/internal/{types → common/types}/base.d.ts +1 -0
  245. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  246. package/dist/types/src/internal/{types → common/types}/entity.d.ts +2 -2
  247. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  248. package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
  249. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  250. package/dist/types/src/internal/{types → common/types}/meta.d.ts +7 -6
  251. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  252. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  253. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  254. package/dist/types/src/internal/{types → common/types}/typename.d.ts +8 -0
  255. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  256. package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
  257. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  258. package/dist/types/src/internal/index.d.ts +9 -10
  259. package/dist/types/src/internal/index.d.ts.map +1 -1
  260. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  261. package/dist/types/src/testing/test-schema.d.ts +19 -18
  262. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  263. package/dist/types/tsconfig.tsbuildinfo +1 -1
  264. package/package.json +44 -113
  265. package/src/Annotation.ts +31 -1
  266. package/src/Collection.ts +37 -0
  267. package/src/Database.ts +167 -173
  268. package/src/Dataset.ts +26 -0
  269. package/src/Entity.ts +73 -54
  270. package/src/Err.ts +22 -0
  271. package/src/Extension.test.ts +235 -0
  272. package/src/Extension.ts +122 -0
  273. package/src/Feed.ts +283 -0
  274. package/src/Filter.test.ts +90 -0
  275. package/src/Filter.ts +81 -7
  276. package/src/Format.ts +3 -3
  277. package/src/Hypergraph.ts +9 -4
  278. package/src/JsonSchema.ts +14 -4
  279. package/src/Obj.test.ts +166 -13
  280. package/src/Obj.ts +407 -145
  281. package/src/Order.ts +3 -1
  282. package/src/Query.test.ts +339 -15
  283. package/src/Query.ts +275 -24
  284. package/src/Ref.ts +64 -11
  285. package/src/Relation.test.ts +8 -2
  286. package/src/Relation.ts +167 -133
  287. package/src/SchemaRegistry.ts +5 -4
  288. package/src/Tag.ts +6 -5
  289. package/src/Type.test.ts +10 -10
  290. package/src/Type.ts +70 -303
  291. package/src/View.ts +107 -0
  292. package/src/hierarchy.test.ts +33 -0
  293. package/src/index.ts +5 -0
  294. package/src/internal/{annotations → Annotation}/annotations.test.ts +56 -7
  295. package/src/internal/{annotations → Annotation}/annotations.ts +134 -16
  296. package/src/internal/{annotations → Annotation}/index.ts +1 -0
  297. package/src/internal/{api → Annotation}/sorting.ts +2 -4
  298. package/src/internal/{annotations → Annotation}/util.ts +14 -1
  299. package/src/internal/{api/entity.ts → Entity/api.ts} +3 -2
  300. package/src/internal/{entities → Entity}/entity.ts +6 -4
  301. package/src/internal/{entities → Entity}/index.ts +2 -0
  302. package/src/internal/{entities → Entity}/model.ts +17 -42
  303. package/src/internal/{entities → Entity}/object.ts +3 -6
  304. package/src/internal/{entities → Entity}/relation.ts +20 -39
  305. package/src/internal/{api → Entity}/version.ts +2 -2
  306. package/src/internal/{formats → Format}/date.test.ts +1 -2
  307. package/src/internal/{formats → Format}/format.test.ts +2 -3
  308. package/src/internal/{formats → Format}/select.ts +1 -1
  309. package/src/internal/{formats → Format}/types.ts +3 -3
  310. package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
  311. package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +4 -2
  312. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +33 -34
  313. package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -49
  314. package/src/internal/{json-schema → JsonSchema}/json-schema.ts +16 -11
  315. package/src/internal/{object → Obj}/clone.ts +3 -3
  316. package/src/internal/{object → Obj}/common.ts +2 -2
  317. package/src/internal/{object → Obj}/create-object.test.ts +5 -7
  318. package/src/internal/{object → Obj}/create-object.ts +5 -6
  319. package/src/internal/{object → Obj}/deleted.ts +2 -2
  320. package/src/internal/{object → Obj}/inspect.ts +2 -2
  321. package/src/internal/{object → Obj}/json-serializer.test.ts +31 -8
  322. package/src/internal/{object → Obj}/json-serializer.ts +58 -24
  323. package/src/internal/{object → Obj}/schema-validator.test.ts +3 -7
  324. package/src/internal/{object → Obj}/schema-validator.ts +1 -1
  325. package/src/internal/{object → Obj}/set-value.test.ts +33 -33
  326. package/src/internal/{object → Obj}/set-value.ts +2 -2
  327. package/src/internal/Obj/snapshot.ts +105 -0
  328. package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
  329. package/src/internal/{object → Obj}/typed-object.ts +4 -4
  330. package/src/internal/Query.ts +134 -0
  331. package/src/internal/{ref → Ref}/ref-array.ts +1 -2
  332. package/src/internal/{ref → Ref}/ref.test.ts +5 -6
  333. package/src/internal/{ref → Ref}/ref.ts +29 -5
  334. package/src/internal/{schema → Type}/compose.test.ts +5 -6
  335. package/src/internal/{schema → Type}/compose.ts +14 -9
  336. package/src/internal/{schema → Type}/echo-schema.ts +11 -11
  337. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  338. package/src/internal/{schema → Type}/persistent-schema.ts +10 -4
  339. package/src/internal/{README.md → common/README.md} +1 -1
  340. package/src/internal/{api → common/api}/index.ts +0 -4
  341. package/src/internal/{api → common/api}/meta.ts +3 -3
  342. package/src/internal/common/index.ts +7 -0
  343. package/src/internal/{proxy → common/proxy}/change.test.ts +65 -65
  344. package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -4
  345. package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
  346. package/src/internal/{proxy → common/proxy}/make-object.ts +13 -4
  347. package/src/internal/{proxy → common/proxy}/ownership.ts +0 -1
  348. package/src/internal/{proxy → common/proxy}/reactive.ts +1 -2
  349. package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
  350. package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +14 -19
  351. package/src/internal/{proxy → common/proxy}/typed-handler.ts +11 -6
  352. package/src/internal/{proxy → common/proxy}/typed-object.test.ts +15 -16
  353. package/src/internal/{types → common/types}/base.ts +1 -1
  354. package/src/internal/{types → common/types}/entity.ts +2 -2
  355. package/src/internal/{types → common/types}/index.ts +1 -0
  356. package/src/internal/{types → common/types}/meta.ts +15 -14
  357. package/src/internal/common/types/model-symbols.ts +69 -0
  358. package/src/internal/{types → common/types}/typename.ts +10 -0
  359. package/src/internal/{types → common/types}/version.ts +2 -3
  360. package/src/internal/index.ts +9 -31
  361. package/src/testing/api.test.ts +4 -5
  362. package/src/testing/test-data.ts +0 -1
  363. package/src/testing/test-schema.ts +20 -18
  364. package/dist/lib/browser/Database.mjs +0 -18
  365. package/dist/lib/browser/Filter.mjs +0 -62
  366. package/dist/lib/browser/JsonSchema.mjs +0 -20
  367. package/dist/lib/browser/Obj.mjs +0 -91
  368. package/dist/lib/browser/Query.mjs +0 -27
  369. package/dist/lib/browser/QueryResult.mjs +0 -3
  370. package/dist/lib/browser/Ref.mjs +0 -23
  371. package/dist/lib/browser/SchemaRegistry.mjs +0 -3
  372. package/dist/lib/browser/Tag.mjs +0 -26
  373. package/dist/lib/browser/Type.mjs +0 -48
  374. package/dist/lib/browser/chunk-22JMFST2.mjs +0 -24
  375. package/dist/lib/browser/chunk-22JMFST2.mjs.map +0 -7
  376. package/dist/lib/browser/chunk-2SBB7OWV.mjs.map +0 -7
  377. package/dist/lib/browser/chunk-6L5HHUVU.mjs +0 -158
  378. package/dist/lib/browser/chunk-6L5HHUVU.mjs.map +0 -7
  379. package/dist/lib/browser/chunk-7STIBCP7.mjs +0 -133
  380. package/dist/lib/browser/chunk-7STIBCP7.mjs.map +0 -7
  381. package/dist/lib/browser/chunk-BJPE6CIC.mjs.map +0 -7
  382. package/dist/lib/browser/chunk-CJ5YELTO.mjs.map +0 -7
  383. package/dist/lib/browser/chunk-FPOISFQK.mjs +0 -40
  384. package/dist/lib/browser/chunk-FPOISFQK.mjs.map +0 -7
  385. package/dist/lib/browser/chunk-FRDT7RA4.mjs.map +0 -7
  386. package/dist/lib/browser/chunk-INHXFXY5.mjs.map +0 -7
  387. package/dist/lib/browser/chunk-JMKVF2YQ.mjs.map +0 -7
  388. package/dist/lib/browser/chunk-KQQGVHFN.mjs.map +0 -7
  389. package/dist/lib/browser/chunk-MYCCGG2T.mjs +0 -15
  390. package/dist/lib/browser/chunk-MYCCGG2T.mjs.map +0 -7
  391. package/dist/lib/browser/chunk-NOPVNWPT.mjs +0 -204
  392. package/dist/lib/browser/chunk-NOPVNWPT.mjs.map +0 -7
  393. package/dist/lib/browser/chunk-PQZW3S6L.mjs.map +0 -7
  394. package/dist/lib/browser/chunk-RK4Z4JUZ.mjs +0 -283
  395. package/dist/lib/browser/chunk-RK4Z4JUZ.mjs.map +0 -7
  396. package/dist/lib/browser/chunk-U2J7TA7K.mjs.map +0 -7
  397. package/dist/lib/browser/chunk-W5D2GWAW.mjs +0 -98
  398. package/dist/lib/browser/chunk-W5D2GWAW.mjs.map +0 -7
  399. package/dist/lib/browser/chunk-XDIUHAAX.mjs.map +0 -7
  400. package/dist/lib/browser/chunk-YKTSSMDS.mjs.map +0 -7
  401. package/dist/lib/browser/chunk-ZAGAOZVY.mjs.map +0 -7
  402. package/dist/lib/browser/chunk-ZHXZGIXD.mjs.map +0 -7
  403. package/dist/lib/browser/index.mjs +0 -85
  404. package/dist/lib/browser/meta.json +0 -1
  405. package/dist/lib/browser/testing/index.mjs +0 -367
  406. package/dist/lib/browser/testing/index.mjs.map +0 -7
  407. package/dist/lib/node-esm/Annotation.mjs +0 -33
  408. package/dist/lib/node-esm/Annotation.mjs.map +0 -7
  409. package/dist/lib/node-esm/Database.mjs +0 -18
  410. package/dist/lib/node-esm/Database.mjs.map +0 -7
  411. package/dist/lib/node-esm/Entity.mjs +0 -52
  412. package/dist/lib/node-esm/Entity.mjs.map +0 -7
  413. package/dist/lib/node-esm/Err.mjs +0 -11
  414. package/dist/lib/node-esm/Err.mjs.map +0 -7
  415. package/dist/lib/node-esm/Filter.mjs +0 -62
  416. package/dist/lib/node-esm/Format.mjs +0 -67
  417. package/dist/lib/node-esm/JsonSchema.mjs +0 -20
  418. package/dist/lib/node-esm/JsonSchema.mjs.map +0 -7
  419. package/dist/lib/node-esm/Key.mjs +0 -13
  420. package/dist/lib/node-esm/Key.mjs.map +0 -7
  421. package/dist/lib/node-esm/Obj.mjs.map +0 -7
  422. package/dist/lib/node-esm/Order.mjs +0 -13
  423. package/dist/lib/node-esm/Order.mjs.map +0 -7
  424. package/dist/lib/node-esm/Query.mjs +0 -27
  425. package/dist/lib/node-esm/Query.mjs.map +0 -7
  426. package/dist/lib/node-esm/QueryResult.mjs +0 -3
  427. package/dist/lib/node-esm/QueryResult.mjs.map +0 -7
  428. package/dist/lib/node-esm/Ref.mjs +0 -23
  429. package/dist/lib/node-esm/Ref.mjs.map +0 -7
  430. package/dist/lib/node-esm/Relation.mjs +0 -85
  431. package/dist/lib/node-esm/Relation.mjs.map +0 -7
  432. package/dist/lib/node-esm/SchemaRegistry.mjs +0 -3
  433. package/dist/lib/node-esm/SchemaRegistry.mjs.map +0 -7
  434. package/dist/lib/node-esm/Tag.mjs +0 -26
  435. package/dist/lib/node-esm/Tag.mjs.map +0 -7
  436. package/dist/lib/node-esm/Type.mjs +0 -48
  437. package/dist/lib/node-esm/Type.mjs.map +0 -7
  438. package/dist/lib/node-esm/chunk-4PNXQA64.mjs +0 -250
  439. package/dist/lib/node-esm/chunk-4PNXQA64.mjs.map +0 -7
  440. package/dist/lib/node-esm/chunk-5OBN7GZW.mjs +0 -158
  441. package/dist/lib/node-esm/chunk-5OBN7GZW.mjs.map +0 -7
  442. package/dist/lib/node-esm/chunk-AJEMYSIR.mjs +0 -22
  443. package/dist/lib/node-esm/chunk-ANLVLWME.mjs.map +0 -7
  444. package/dist/lib/node-esm/chunk-DMR7OAFK.mjs +0 -57
  445. package/dist/lib/node-esm/chunk-DMR7OAFK.mjs.map +0 -7
  446. package/dist/lib/node-esm/chunk-FWTSPIFF.mjs +0 -133
  447. package/dist/lib/node-esm/chunk-FWTSPIFF.mjs.map +0 -7
  448. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  449. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  450. package/dist/lib/node-esm/chunk-ILMLLM4R.mjs +0 -204
  451. package/dist/lib/node-esm/chunk-ILMLLM4R.mjs.map +0 -7
  452. package/dist/lib/node-esm/chunk-K37NA7PO.mjs +0 -43
  453. package/dist/lib/node-esm/chunk-K37NA7PO.mjs.map +0 -7
  454. package/dist/lib/node-esm/chunk-LT3H4JOX.mjs +0 -3847
  455. package/dist/lib/node-esm/chunk-LT3H4JOX.mjs.map +0 -7
  456. package/dist/lib/node-esm/chunk-MOLNWFNL.mjs +0 -9
  457. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs +0 -15
  458. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs.map +0 -7
  459. package/dist/lib/node-esm/chunk-NBWL7UCZ.mjs.map +0 -7
  460. package/dist/lib/node-esm/chunk-NRN3ZW2T.mjs +0 -143
  461. package/dist/lib/node-esm/chunk-NRN3ZW2T.mjs.map +0 -7
  462. package/dist/lib/node-esm/chunk-QLI2EIJ2.mjs +0 -41
  463. package/dist/lib/node-esm/chunk-QLI2EIJ2.mjs.map +0 -7
  464. package/dist/lib/node-esm/chunk-QYR67VBV.mjs +0 -288
  465. package/dist/lib/node-esm/chunk-QYR67VBV.mjs.map +0 -7
  466. package/dist/lib/node-esm/chunk-UKGVOINP.mjs +0 -9
  467. package/dist/lib/node-esm/chunk-UKGVOINP.mjs.map +0 -7
  468. package/dist/lib/node-esm/chunk-W6QIEBTQ.mjs +0 -403
  469. package/dist/lib/node-esm/chunk-W6QIEBTQ.mjs.map +0 -7
  470. package/dist/lib/node-esm/chunk-XHJRMQZD.mjs +0 -69
  471. package/dist/lib/node-esm/chunk-XHJRMQZD.mjs.map +0 -7
  472. package/dist/lib/node-esm/chunk-Y75VU7LB.mjs +0 -74
  473. package/dist/lib/node-esm/chunk-Y75VU7LB.mjs.map +0 -7
  474. package/dist/lib/node-esm/chunk-YOLH5KS4.mjs.map +0 -7
  475. package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs +0 -39
  476. package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs.map +0 -7
  477. package/dist/lib/node-esm/chunk-ZBB67AKD.mjs.map +0 -7
  478. package/dist/lib/node-esm/index.mjs +0 -85
  479. package/dist/lib/node-esm/index.mjs.map +0 -7
  480. package/dist/lib/node-esm/internal/index.mjs +0 -457
  481. package/dist/lib/node-esm/internal/index.mjs.map +0 -7
  482. package/dist/lib/node-esm/meta.json +0 -1
  483. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  484. package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
  485. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
  486. package/dist/types/src/internal/annotations/index.d.ts +0 -3
  487. package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
  488. package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
  489. package/dist/types/src/internal/api/annotations.d.ts +0 -23
  490. package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
  491. package/dist/types/src/internal/api/entity.d.ts.map +0 -1
  492. package/dist/types/src/internal/api/index.d.ts.map +0 -1
  493. package/dist/types/src/internal/api/meta.d.ts.map +0 -1
  494. package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
  495. package/dist/types/src/internal/api/version.d.ts.map +0 -1
  496. package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
  497. package/dist/types/src/internal/entities/index.d.ts.map +0 -1
  498. package/dist/types/src/internal/entities/model.d.ts.map +0 -1
  499. package/dist/types/src/internal/entities/object.d.ts.map +0 -1
  500. package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
  501. package/dist/types/src/internal/entities/util.d.ts.map +0 -1
  502. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  503. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  504. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  505. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  506. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  507. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  508. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  509. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  510. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  511. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  512. package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
  513. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
  514. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  515. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  516. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  517. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
  518. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
  519. package/dist/types/src/internal/object/clone.d.ts.map +0 -1
  520. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  521. package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
  522. package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
  523. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  524. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  525. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  526. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  527. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  528. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  529. package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
  530. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  531. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  532. package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
  533. package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
  534. package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
  535. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  536. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  537. package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
  538. package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
  539. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
  540. package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
  541. package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
  542. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  543. package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
  544. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
  545. package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
  546. package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
  547. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
  548. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
  549. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
  550. package/dist/types/src/internal/proxy/reactive.d.ts.map +0 -1
  551. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
  552. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  553. package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
  554. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  555. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  556. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  557. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  558. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  559. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  560. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  561. package/dist/types/src/internal/schema/compose.d.ts +0 -6
  562. package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
  563. package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
  564. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  565. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  566. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  567. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
  568. package/dist/types/src/internal/types/base.d.ts.map +0 -1
  569. package/dist/types/src/internal/types/entity.d.ts.map +0 -1
  570. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  571. package/dist/types/src/internal/types/meta.d.ts.map +0 -1
  572. package/dist/types/src/internal/types/typename.d.ts.map +0 -1
  573. package/dist/types/src/internal/types/version.d.ts.map +0 -1
  574. package/src/internal/api/annotations.ts +0 -60
  575. package/src/internal/object/snapshot.ts +0 -70
  576. /package/dist/lib/{browser → neutral}/Annotation.mjs.map +0 -0
  577. /package/dist/lib/{browser → neutral}/Database.mjs.map +0 -0
  578. /package/dist/lib/{browser → neutral}/Entity.mjs.map +0 -0
  579. /package/dist/lib/{browser → neutral}/Err.mjs.map +0 -0
  580. /package/dist/lib/{browser/Filter.mjs.map → neutral/Extension.mjs.map} +0 -0
  581. /package/dist/lib/{browser/Format.mjs.map → neutral/Feed.mjs.map} +0 -0
  582. /package/dist/lib/{node-esm → neutral}/Filter.mjs.map +0 -0
  583. /package/dist/lib/{node-esm → neutral}/Format.mjs.map +0 -0
  584. /package/dist/lib/{browser → neutral}/JsonSchema.mjs.map +0 -0
  585. /package/dist/lib/{browser → neutral}/Key.mjs.map +0 -0
  586. /package/dist/lib/{browser → neutral}/Obj.mjs.map +0 -0
  587. /package/dist/lib/{browser → neutral}/Order.mjs.map +0 -0
  588. /package/dist/lib/{browser → neutral}/Query.mjs.map +0 -0
  589. /package/dist/lib/{browser → neutral}/QueryResult.mjs.map +0 -0
  590. /package/dist/lib/{browser → neutral}/Ref.mjs.map +0 -0
  591. /package/dist/lib/{browser → neutral}/Relation.mjs.map +0 -0
  592. /package/dist/lib/{browser → neutral}/SchemaRegistry.mjs.map +0 -0
  593. /package/dist/lib/{browser → neutral}/Tag.mjs.map +0 -0
  594. /package/dist/lib/{browser → neutral}/Type.mjs.map +0 -0
  595. /package/dist/lib/{browser/chunk-CGS2ULMK.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  596. /package/dist/lib/{browser → neutral}/index.mjs.map +0 -0
  597. /package/dist/lib/{browser → neutral}/internal/index.mjs.map +0 -0
  598. /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
  599. /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
  600. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  601. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  602. /package/dist/types/src/internal/{formats → Format}/format.d.ts +0 -0
  603. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  604. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  605. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  606. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  607. /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
  608. /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
  609. /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
  610. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  611. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
  612. /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
  613. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  614. /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
  615. /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
  616. /package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -0
  617. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  618. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  619. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  620. /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
  621. /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
  622. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  623. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  624. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  625. /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
  626. /package/dist/types/src/internal/{schema → Type}/index.d.ts +0 -0
  627. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  628. /package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +0 -0
  629. /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
  630. /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
  631. /package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +0 -0
  632. /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
  633. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  634. /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
  635. /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
  636. /package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +0 -0
  637. /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
  638. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
  639. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
  640. /package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +0 -0
  641. /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
  642. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  643. /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
  644. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  645. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  646. /package/src/internal/{entities → Entity}/util.ts +0 -0
  647. /package/src/internal/{formats → Format}/date.ts +0 -0
  648. /package/src/internal/{formats → Format}/format.ts +0 -0
  649. /package/src/internal/{formats → Format}/index.ts +0 -0
  650. /package/src/internal/{formats → Format}/number.ts +0 -0
  651. /package/src/internal/{formats → Format}/object.ts +0 -0
  652. /package/src/internal/{formats → Format}/string.ts +0 -0
  653. /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
  654. /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
  655. /package/src/internal/{object → Obj}/ids.ts +0 -0
  656. /package/src/internal/{object → Obj}/index.ts +0 -0
  657. /package/src/internal/{ref → Ref}/index.ts +0 -0
  658. /package/src/internal/{schema → Type}/index.ts +0 -0
  659. /package/src/internal/{proxy → common/proxy}/change-context.ts +0 -0
  660. /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
  661. /package/src/internal/{proxy → common/proxy}/errors.ts +0 -0
  662. /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
  663. /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
  664. /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
  665. /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
  666. /package/src/internal/{proxy → common/proxy}/reactive-array.ts +0 -0
  667. /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
  668. /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
@@ -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.
@@ -59,8 +59,8 @@ describe('Obj.change enforcement', () => {
59
59
  test('getMeta returns mutable ObjectMeta inside change callback', ({ expect }) => {
60
60
  const obj = Obj.make(TestSchema.Person, { name: 'Test' });
61
61
 
62
- Obj.change(obj, (mutableObj) => {
63
- const meta = Obj.getMeta(mutableObj);
62
+ Obj.change(obj, (obj) => {
63
+ const meta = Obj.getMeta(obj);
64
64
 
65
65
  // These should compile without errors because meta is ObjectMeta (mutable).
66
66
  meta.keys = [];
@@ -76,9 +76,9 @@ describe('Obj.change enforcement', () => {
76
76
  const obj = Obj.make(TestSchema.Person, { name: 'Test' });
77
77
 
78
78
  // These should compile without errors inside change callback.
79
- Obj.change(obj, (mutableObj) => {
80
- Obj.addTag(mutableObj, 'my-tag');
81
- Obj.setValue(mutableObj, ['name'], 'Updated');
79
+ Obj.change(obj, (obj) => {
80
+ Obj.addTag(obj, 'my-tag');
81
+ Obj.setValue(obj, ['name'], 'Updated');
82
82
  });
83
83
 
84
84
  expect(obj.name).toBe('Updated');
@@ -122,8 +122,8 @@ describe('Obj.change enforcement', () => {
122
122
  // Person schema uses 'name' as label field.
123
123
  expect(Obj.getLabel(obj)).toBe('John');
124
124
 
125
- Obj.change(obj, (o) => {
126
- Obj.setLabel(o, 'Jane');
125
+ Obj.change(obj, (obj) => {
126
+ Obj.setLabel(obj, 'Jane');
127
127
  });
128
128
 
129
129
  // setLabel updates the name field.
@@ -140,8 +140,8 @@ describe('Obj.change enforcement', () => {
140
140
 
141
141
  // setDescription only works if schema has description annotation.
142
142
  // For schemas without it, this is a no-op.
143
- Obj.change(obj, (o) => {
144
- Obj.setDescription(o, 'My Description');
143
+ Obj.change(obj, (obj) => {
144
+ Obj.setDescription(obj, 'My Description');
145
145
  });
146
146
 
147
147
  // Verify setDescription doesn't throw.
@@ -153,15 +153,15 @@ describe('Obj.change enforcement', () => {
153
153
 
154
154
  expect(Obj.getMeta(obj).tags).toBeUndefined();
155
155
 
156
- Obj.change(obj, (o) => {
157
- Obj.addTag(o, 'tag-1');
158
- Obj.addTag(o, 'tag-2');
156
+ Obj.change(obj, (obj) => {
157
+ Obj.addTag(obj, 'tag-1');
158
+ Obj.addTag(obj, 'tag-2');
159
159
  });
160
160
 
161
161
  expect(Obj.getMeta(obj).tags).toEqual(['tag-1', 'tag-2']);
162
162
 
163
- Obj.change(obj, (o) => {
164
- Obj.removeTag(o, 'tag-1');
163
+ Obj.change(obj, (obj) => {
164
+ Obj.removeTag(obj, 'tag-1');
165
165
  });
166
166
 
167
167
  expect(Obj.getMeta(obj).tags).toEqual(['tag-2']);
@@ -170,8 +170,8 @@ describe('Obj.change enforcement', () => {
170
170
  test('deleteKeys removes foreign keys by source', ({ expect }) => {
171
171
  const obj = Obj.make(TestSchema.Person, { name: 'Test' });
172
172
 
173
- Obj.change(obj, (o) => {
174
- const meta = Obj.getMeta(o);
173
+ Obj.change(obj, (obj) => {
174
+ const meta = Obj.getMeta(obj);
175
175
  meta.keys.push({ source: 'source-a', id: '1' });
176
176
  meta.keys.push({ source: 'source-a', id: '2' });
177
177
  meta.keys.push({ source: 'source-b', id: '3' });
@@ -179,8 +179,8 @@ describe('Obj.change enforcement', () => {
179
179
 
180
180
  expect(Obj.getMeta(obj).keys).toHaveLength(3);
181
181
 
182
- Obj.change(obj, (o) => {
183
- Obj.deleteKeys(o, 'source-a');
182
+ Obj.change(obj, (obj) => {
183
+ Obj.deleteKeys(obj, 'source-a');
184
184
  });
185
185
 
186
186
  expect(Obj.getMeta(obj).keys).toHaveLength(1);
@@ -190,8 +190,8 @@ describe('Obj.change enforcement', () => {
190
190
  test('setValue sets nested properties', ({ expect }) => {
191
191
  const obj = Obj.make(TestSchema.Person, { name: 'Test' });
192
192
 
193
- Obj.change(obj, (o) => {
194
- Obj.setValue(o, ['name'], 'Updated Name');
193
+ Obj.change(obj, (obj) => {
194
+ Obj.setValue(obj, ['name'], 'Updated Name');
195
195
  });
196
196
 
197
197
  expect(obj.name).toBe('Updated Name');
@@ -200,8 +200,8 @@ describe('Obj.change enforcement', () => {
200
200
  test('getMeta is mutable inside change and changes persist', ({ expect }) => {
201
201
  const obj = Obj.make(TestSchema.Person, { name: 'Test' });
202
202
 
203
- Obj.change(obj, (o) => {
204
- const meta = Obj.getMeta(o);
203
+ Obj.change(obj, (obj) => {
204
+ const meta = Obj.getMeta(obj);
205
205
  meta.tags = ['tag-1', 'tag-2'];
206
206
  meta.keys.push({ source: 'external', id: '123' });
207
207
  });
@@ -214,12 +214,12 @@ describe('Obj.change enforcement', () => {
214
214
  test('multiple mutations in single change all persist', ({ expect }) => {
215
215
  const obj = Obj.make(TestSchema.Person, { name: 'Test' });
216
216
 
217
- Obj.change(obj, (o) => {
218
- o.name = 'Name 1';
219
- o.name = 'Name 2';
220
- o.name = 'Name 3';
221
- Obj.addTag(o, 'tag-1');
222
- Obj.addTag(o, 'tag-2');
217
+ Obj.change(obj, (obj) => {
218
+ obj.name = 'Name 1';
219
+ obj.name = 'Name 2';
220
+ obj.name = 'Name 3';
221
+ Obj.addTag(obj, 'tag-1');
222
+ Obj.addTag(obj, 'tag-2');
223
223
  });
224
224
 
225
225
  // All mutations should persist.
@@ -237,9 +237,9 @@ describe('Obj.change enforcement', () => {
237
237
  notificationCount++;
238
238
  });
239
239
 
240
- Obj.change(obj, (p) => {
241
- p.name = 'Jane';
242
- p.age = 30;
240
+ Obj.change(obj, (obj) => {
241
+ obj.name = 'Jane';
242
+ obj.age = 30;
243
243
  });
244
244
 
245
245
  // Should only fire one notification for all changes.
@@ -256,8 +256,8 @@ describe('Obj.change enforcement', () => {
256
256
  address: { city: 'NYC', coordinates: {} },
257
257
  });
258
258
 
259
- Obj.change(obj, (p) => {
260
- p.address!.state = 'NY';
259
+ Obj.change(obj, (obj) => {
260
+ obj.address!.state = 'NY';
261
261
  });
262
262
 
263
263
  expect(obj.address?.state).toBe('NY');
@@ -270,9 +270,9 @@ describe('Obj.change enforcement', () => {
270
270
  address: { city: 'NYC', coordinates: { lat: 40.7128, lng: -74.006 } },
271
271
  });
272
272
 
273
- Obj.change(obj, (p) => {
274
- p.address!.coordinates!.lat = 51.5074;
275
- p.address!.coordinates!.lng = -0.1278;
273
+ Obj.change(obj, (obj) => {
274
+ obj.address!.coordinates!.lat = 51.5074;
275
+ obj.address!.coordinates!.lng = -0.1278;
276
276
  });
277
277
 
278
278
  expect(obj.address?.coordinates?.lat).toBe(51.5074);
@@ -306,12 +306,12 @@ describe('Obj.change enforcement', () => {
306
306
  test('nested Obj.change calls work correctly', ({ expect }) => {
307
307
  const obj = Obj.make(TestSchema.Person, { name: 'John' });
308
308
 
309
- Obj.change(obj, (p) => {
310
- p.name = 'Jane';
309
+ Obj.change(obj, (obj) => {
310
+ obj.name = 'Jane';
311
311
 
312
312
  // Nested change should work (already in change context).
313
- Obj.change(obj, (p2) => {
314
- p2.age = 30;
313
+ Obj.change(obj, (obj) => {
314
+ obj.age = 30;
315
315
  });
316
316
  });
317
317
 
@@ -323,8 +323,8 @@ describe('Obj.change enforcement', () => {
323
323
  const obj = Obj.make(TestSchema.Person, { name: 'John' });
324
324
 
325
325
  expect(() => {
326
- Obj.change(obj, (p) => {
327
- p.name = 'Jane';
326
+ Obj.change(obj, (obj) => {
327
+ obj.name = 'Jane';
328
328
  throw new Error('Test error');
329
329
  });
330
330
  }).toThrow('Test error');
@@ -344,8 +344,8 @@ describe('Obj.change enforcement', () => {
344
344
  fields: [{ label: 'tag1', value: 'val1' }],
345
345
  });
346
346
 
347
- Obj.change(obj, (p) => {
348
- p.fields!.push({ label: 'tag2', value: 'val2' });
347
+ Obj.change(obj, (obj) => {
348
+ obj.fields!.push({ label: 'tag2', value: 'val2' });
349
349
  });
350
350
 
351
351
  expect(obj.fields).toHaveLength(2);
@@ -362,8 +362,8 @@ describe('Obj.change enforcement', () => {
362
362
  });
363
363
 
364
364
  let popped: any;
365
- Obj.change(obj, (p) => {
366
- popped = p.fields!.pop();
365
+ Obj.change(obj, (obj) => {
366
+ popped = obj.fields!.pop();
367
367
  });
368
368
 
369
369
  expect(popped.label).toBe('b');
@@ -380,8 +380,8 @@ describe('Obj.change enforcement', () => {
380
380
  ],
381
381
  });
382
382
 
383
- Obj.change(obj, (p) => {
384
- p.fields!.splice(1, 1, { label: 'x', value: 'x' });
383
+ Obj.change(obj, (obj) => {
384
+ obj.fields!.splice(1, 1, { label: 'x', value: 'x' });
385
385
  });
386
386
 
387
387
  expect(obj.fields).toHaveLength(3);
@@ -429,8 +429,8 @@ describe('Obj.change enforcement', () => {
429
429
  test('delete property within Obj.change', ({ expect }) => {
430
430
  const obj = Obj.make(TestSchema.Person, { name: 'John', age: 25 });
431
431
 
432
- Obj.change(obj, (p) => {
433
- delete p.age;
432
+ Obj.change(obj, (obj) => {
433
+ delete obj.age;
434
434
  });
435
435
 
436
436
  expect(obj.age).toBeUndefined();
@@ -455,8 +455,8 @@ describe('Obj.change enforcement', () => {
455
455
  [Relation.Target]: target,
456
456
  });
457
457
 
458
- Relation.change(rel, (r) => {
459
- const meta = Relation.getMeta(r);
458
+ Relation.change(rel, (rel) => {
459
+ const meta = Relation.getMeta(rel);
460
460
  meta.tags = ['rel-tag'];
461
461
  meta.keys.push({ source: 'rel-source', id: 'rel-key' });
462
462
  });
@@ -473,14 +473,14 @@ describe('Obj.change enforcement', () => {
473
473
  [Relation.Target]: target,
474
474
  });
475
475
 
476
- Relation.change(rel, (r) => {
477
- Relation.addTag(r, 'important');
476
+ Relation.change(rel, (rel) => {
477
+ Relation.addTag(rel, 'important');
478
478
  });
479
479
 
480
480
  expect(Relation.getMeta(rel).tags).toContain('important');
481
481
 
482
- Relation.change(rel, (r) => {
483
- Relation.removeTag(r, 'important');
482
+ Relation.change(rel, (rel) => {
483
+ Relation.removeTag(rel, 'important');
484
484
  });
485
485
 
486
486
  expect(Relation.getMeta(rel).tags).not.toContain('important');
@@ -494,8 +494,8 @@ describe('Obj.change enforcement', () => {
494
494
 
495
495
  // Direct assignment of root ECHO objects (created with Obj.make) is not allowed.
496
496
  expect(() => {
497
- Obj.change(obj, (o) => {
498
- o.other = other;
497
+ Obj.change(obj, (obj) => {
498
+ obj.other = other;
499
499
  });
500
500
  }).toThrow(/Object references must be wrapped with `Ref\.make`/);
501
501
  });
@@ -504,14 +504,14 @@ describe('Obj.change enforcement', () => {
504
504
  const obj = Obj.make(TestSchema.Expando, {});
505
505
 
506
506
  // Assign a plain object (not created with Obj.make).
507
- Obj.change(obj, (o) => {
508
- o.nested = { value: 'initial' };
507
+ Obj.change(obj, (obj) => {
508
+ obj.nested = { value: 'initial' };
509
509
  });
510
510
  expect(obj.nested.value).toBe('initial');
511
511
 
512
512
  // Modify plain nested object through parent's change context.
513
- Obj.change(obj, (o) => {
514
- o.nested.value = 'modified';
513
+ Obj.change(obj, (obj) => {
514
+ obj.nested.value = 'modified';
515
515
  });
516
516
  expect(obj.nested.value).toBe('modified');
517
517
  });
@@ -3,15 +3,13 @@
3
3
  //
4
4
 
5
5
  import { inspect } from 'node:util';
6
-
7
6
  import { describe, expect, test } from 'vitest';
8
7
 
9
8
  import { isNode } from '@dxos/util';
10
9
 
11
- import { TestSchema, updateCounter } from '../../testing';
12
- import { createObject } from '../object';
10
+ import { TestSchema, updateCounter } from '../../../testing';
11
+ import { createObject } from '../../Obj';
13
12
  import { ATTR_META } from '../types';
14
-
15
13
  import { makeObject } from './make-object';
16
14
  import { objectData } from './proxy-types';
17
15
  import { change } from './reactive';
@@ -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,9 +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';
11
-
9
+ import { getTypeAnnotation } from '../../Annotation';
10
+ import { type AnyProperties, KindId, MetaId, type ObjectMeta, ObjectMetaSchema, ParentId } from '../types';
12
11
  import { defineHiddenProperty } from './define-hidden-property';
13
12
  import { attachTypedJsonSerializer } from './json-serializer';
14
13
  import { createProxy, getProxyTarget, isValidProxyTarget } from './proxy-utils';
@@ -35,7 +34,8 @@ export const makeObject: {
35
34
  meta?: ObjectMeta,
36
35
  ): T;
37
36
  } = <T extends AnyProperties>(schema: Schema.Schema<T, any>, obj: MakeObjectProps<T>, meta?: ObjectMeta): T => {
38
- return createReactiveObject<T>({ ...obj } as T, meta, schema);
37
+ // Use Object.assign to copy symbol properties (like ParentId) that spread operator doesn't copy.
38
+ return createReactiveObject<T>(Object.assign({}, obj) as T, meta, schema);
39
39
  };
40
40
 
41
41
  const createReactiveObject = <T extends AnyProperties>(obj: T, meta?: ObjectMeta, schema?: Schema.Schema<T>): T => {
@@ -47,12 +47,21 @@ const createReactiveObject = <T extends AnyProperties>(obj: T, meta?: ObjectMeta
47
47
  throw new Error('Schema is required for reactive objects. Use Atom for untyped reactive state.');
48
48
  }
49
49
 
50
+ // Extract parent from props (can be set via [Obj.Parent]).
51
+ const parent = (obj as any)[ParentId];
52
+ if (parent !== undefined) {
53
+ delete (obj as any)[ParentId];
54
+ }
55
+
50
56
  const annotation = getTypeAnnotation(schema);
51
57
  if (annotation) {
52
58
  setIdOnTarget(obj);
53
59
  defineHiddenProperty(obj, KindId, annotation.kind);
54
60
  }
55
61
  initMeta(obj, meta);
62
+ if (parent !== undefined) {
63
+ defineHiddenProperty(obj, ParentId, parent);
64
+ }
56
65
  prepareTypedTarget(obj, schema);
57
66
  attachTypedJsonSerializer(obj);
58
67
  const proxy = createProxy<T>(obj, TypedReactiveHandler.instance);
@@ -5,7 +5,6 @@
5
5
  import { invariant } from '@dxos/invariant';
6
6
 
7
7
  import { KindId } from '../types';
8
-
9
8
  import { queueOwnerNotification } from './change-context';
10
9
  import { defineHiddenProperty } from './define-hidden-property';
11
10
  import { getProxyTarget, isProxy, isValidProxyTarget } from './proxy-utils';
@@ -2,8 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type RefTypeId } from '../ref/ref';
6
-
5
+ import { type RefTypeId } from '../../Ref/ref';
7
6
  import { getProxyTarget } from './proxy-utils';
8
7
  import { ChangeId, EventId } from './symbols';
9
8
 
@@ -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,12 +5,11 @@
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
-
14
13
  import { makeObject } from './make-object';
15
14
  import { change, subscribe } from './reactive';
16
15
 
@@ -40,10 +39,10 @@ describe('complex schema validations', () => {
40
39
 
41
40
  test('references', () => {
42
41
  const Foo = Schema.Struct({ field: Schema.String }).pipe(
43
- EchoObjectSchema({ typename: 'example.com/type/Foo', version: '0.1.0' }),
42
+ EchoObjectSchema({ typename: 'com.example.type.foo', version: '0.1.0' }),
44
43
  );
45
44
  const Bar = Schema.Struct({ fooRef: Ref(Foo) }).pipe(
46
- EchoObjectSchema({ typename: 'example.com/type/Bar', version: '0.1.0' }),
45
+ EchoObjectSchema({ typename: 'com.example.type.bar', version: '0.1.0' }),
47
46
  );
48
47
  const field = 'hello';
49
48
  expect(() => makeObject(Bar, { fooRef: { id: '1', field } as any })).to.throw();
@@ -94,7 +93,7 @@ describe('complex schema validations', () => {
94
93
  });
95
94
 
96
95
  test('subscribe', () => {
97
- const TestSchema = Schema.mutable(Schema.Struct({ field: Schema.String })).pipe(
96
+ const TestSchema = Schema.Struct({ field: Schema.String }).pipe(
98
97
  EchoObjectSchema({ typename: 'Test', version: '0.1.0' }),
99
98
  );
100
99
  const object = makeObject(TestSchema, { field: 'value' });
@@ -117,12 +116,10 @@ describe('complex schema validations', () => {
117
116
  });
118
117
 
119
118
  describe('object structure restrictions', () => {
120
- const NestedSchema = Schema.mutable(
121
- Schema.Struct({
122
- data: Schema.optional(Schema.Any),
123
- nested: Schema.optional(Schema.Any),
124
- }),
125
- );
119
+ const NestedSchema = Schema.Struct({
120
+ data: Schema.optional(Schema.Any),
121
+ nested: Schema.optional(Schema.Any),
122
+ });
126
123
 
127
124
  test('prevents direct cycles', () => {
128
125
  const obj = makeObject(NestedSchema, { data: null });
@@ -226,11 +223,9 @@ describe('object structure restrictions', () => {
226
223
  });
227
224
 
228
225
  test('array elements are owned by root ECHO object', () => {
229
- const ArraySchema = Schema.mutable(
230
- Schema.Struct({
231
- items: Schema.mutable(Schema.Array(Schema.Any)),
232
- }),
233
- );
226
+ const ArraySchema = Schema.Struct({
227
+ items: Schema.Array(Schema.Any),
228
+ });
234
229
 
235
230
  const obj1 = makeObject(ArraySchema, {
236
231
  items: [{ id: 1 }, { id: 2 }, { id: 3 }],
@@ -2,19 +2,16 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { type InspectOptionsStylized } from 'node:util';
6
-
7
5
  import * as Schema from 'effect/Schema';
8
6
  import * as SchemaAST from 'effect/SchemaAST';
7
+ import { type InspectOptionsStylized } from 'node:util';
9
8
 
10
9
  import { Event } from '@dxos/async';
11
10
  import { inspectCustom } from '@dxos/debug';
12
11
  import { invariant } from '@dxos/invariant';
13
12
 
14
- import { getSchemaDXN } from '../annotations';
15
- import { ObjectDeletedId } from '../entities';
16
- import { SchemaId, TypeId } from '../types';
17
-
13
+ import { getSchemaDXN } from '../../Annotation';
14
+ import { ObjectDeletedId, ParentId, SchemaId, TypeId } from '../types';
18
15
  import { executeChange, isInChangeContext, queueNotification } from './change-context';
19
16
  import { defineHiddenProperty } from './define-hidden-property';
20
17
  import { createPropertyDeleteError } from './errors';
@@ -47,6 +44,7 @@ type ProxyTarget = {
47
44
  * Schema for the root.
48
45
  */
49
46
  [SchemaId]: Schema.Schema.AnyNoContext;
47
+ [ParentId]?: any;
50
48
 
51
49
  /**
52
50
  * For modifications.
@@ -320,6 +318,10 @@ export class TypedReactiveHandler implements ReactiveHandler<ProxyTarget> {
320
318
  ): { echoRoot: object; preparedValue: any } {
321
319
  const echoRoot = getEchoRoot(target);
322
320
 
321
+ if (prop === ParentId) {
322
+ return { echoRoot, preparedValue: value }; // Short-circuit for parent assignment.
323
+ }
324
+
323
325
  // Check for cycles before assignment.
324
326
  if (isValidProxyTarget(value) || isProxy(value)) {
325
327
  if (wouldCreateCycle(echoRoot, value)) {
@@ -363,6 +365,9 @@ export class TypedReactiveHandler implements ReactiveHandler<ProxyTarget> {
363
365
  }
364
366
 
365
367
  private _validateValue(target: any, prop: string | symbol, value: any) {
368
+ if (prop === ParentId) {
369
+ return value;
370
+ }
366
371
  const schema = SchemaValidator.getTargetPropertySchema(target, prop);
367
372
  const _ = Schema.asserts(schema)(value);
368
373
  if (isValidProxyTarget(value)) {