@dxos/echo 0.8.4-main.21d9917 → 0.8.4-main.2244d791bb

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 (278) hide show
  1. package/dist/lib/{browser → neutral}/Annotation.mjs +7 -5
  2. package/dist/lib/neutral/Database.mjs +45 -0
  3. package/dist/lib/{browser → neutral}/Entity.mjs +8 -9
  4. package/dist/lib/{browser → neutral}/Err.mjs +4 -3
  5. package/dist/lib/{browser → neutral}/Filter.mjs +9 -10
  6. package/dist/lib/{browser → neutral}/Format.mjs +4 -5
  7. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  8. package/dist/lib/{browser → neutral}/Key.mjs +2 -3
  9. package/dist/lib/{node-esm → neutral}/Obj.mjs +23 -10
  10. package/dist/lib/{browser → neutral}/Order.mjs +2 -3
  11. package/dist/lib/neutral/Query.mjs +26 -0
  12. package/dist/lib/neutral/QueryResult.mjs +2 -0
  13. package/dist/lib/neutral/Ref.mjs +22 -0
  14. package/dist/lib/{browser → neutral}/Relation.mjs +9 -10
  15. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  16. package/dist/lib/neutral/Tag.mjs +25 -0
  17. package/dist/lib/{browser → neutral}/Type.mjs +8 -9
  18. package/dist/lib/{browser/chunk-W5D2GWAW.mjs → neutral/chunk-36GDMODZ.mjs} +5 -6
  19. package/dist/lib/{browser/chunk-W5D2GWAW.mjs.map → neutral/chunk-36GDMODZ.mjs.map} +1 -1
  20. package/dist/lib/{browser/chunk-ZHXZGIXD.mjs → neutral/chunk-4L6DOFXP.mjs} +1 -3
  21. package/dist/lib/{browser/chunk-ZHXZGIXD.mjs.map → neutral/chunk-4L6DOFXP.mjs.map} +1 -1
  22. package/dist/lib/{browser/chunk-NOPVNWPT.mjs → neutral/chunk-5MGEVDUW.mjs} +73 -8
  23. package/dist/lib/neutral/chunk-5MGEVDUW.mjs.map +7 -0
  24. package/dist/lib/{browser/chunk-FRDT7RA4.mjs → neutral/chunk-7WE7SBA2.mjs} +4 -5
  25. package/dist/lib/neutral/chunk-7WE7SBA2.mjs.map +7 -0
  26. package/dist/lib/{browser/chunk-INHXFXY5.mjs → neutral/chunk-ANHVGJI4.mjs} +2 -3
  27. package/dist/lib/{node-esm/chunk-AJEMYSIR.mjs.map → neutral/chunk-ANHVGJI4.mjs.map} +1 -1
  28. package/dist/lib/neutral/chunk-B4FLOYG7.mjs +130 -0
  29. package/dist/lib/neutral/chunk-B4FLOYG7.mjs.map +7 -0
  30. package/dist/lib/{browser/chunk-U2J7TA7K.mjs → neutral/chunk-BHR4XVJK.mjs} +5 -6
  31. package/dist/lib/{node-esm/chunk-DMR7OAFK.mjs.map → neutral/chunk-BHR4XVJK.mjs.map} +1 -1
  32. package/dist/lib/{browser/chunk-ZAGAOZVY.mjs → neutral/chunk-CH3HX4Z5.mjs} +4 -5
  33. package/dist/lib/{node-esm/chunk-QYR67VBV.mjs.map → neutral/chunk-CH3HX4Z5.mjs.map} +1 -1
  34. package/dist/lib/{browser/chunk-CGS2ULMK.mjs → neutral/chunk-J5LGTIGS.mjs} +1 -2
  35. package/dist/lib/{browser/chunk-YKTSSMDS.mjs → neutral/chunk-KB7RIVLK.mjs} +1 -3
  36. package/dist/lib/neutral/chunk-KB7RIVLK.mjs.map +7 -0
  37. package/dist/lib/{browser/chunk-2SBB7OWV.mjs → neutral/chunk-KSFI2POM.mjs} +11 -10
  38. package/dist/lib/neutral/chunk-KSFI2POM.mjs.map +7 -0
  39. package/dist/lib/{browser/chunk-6L5HHUVU.mjs → neutral/chunk-LKQBTRJX.mjs} +18 -5
  40. package/dist/lib/neutral/chunk-LKQBTRJX.mjs.map +7 -0
  41. package/dist/lib/{browser/chunk-CJ5YELTO.mjs → neutral/chunk-MXQJZCPY.mjs} +15 -3
  42. package/dist/lib/neutral/chunk-MXQJZCPY.mjs.map +7 -0
  43. package/dist/lib/{browser/chunk-PQZW3S6L.mjs → neutral/chunk-N2QNHMT5.mjs} +3 -4
  44. package/dist/lib/{node-esm/chunk-Y75VU7LB.mjs.map → neutral/chunk-N2QNHMT5.mjs.map} +1 -1
  45. package/dist/lib/{browser/chunk-IXVWLTG7.mjs → neutral/chunk-OMUPQMLR.mjs} +1 -3
  46. package/dist/lib/{browser/chunk-IXVWLTG7.mjs.map → neutral/chunk-OMUPQMLR.mjs.map} +1 -1
  47. package/dist/lib/{node-esm/chunk-YOLH5KS4.mjs → neutral/chunk-RIMHNJ3E.mjs} +17 -4
  48. package/dist/lib/neutral/chunk-RIMHNJ3E.mjs.map +7 -0
  49. package/dist/lib/{browser/chunk-JMKVF2YQ.mjs → neutral/chunk-ROKO4RKJ.mjs} +2 -3
  50. package/dist/lib/{node-esm/chunk-K37NA7PO.mjs.map → neutral/chunk-ROKO4RKJ.mjs.map} +1 -1
  51. package/dist/lib/{browser/chunk-KQQGVHFN.mjs → neutral/chunk-SHLKRGRB.mjs} +5 -6
  52. package/dist/lib/{node-esm/chunk-NRN3ZW2T.mjs.map → neutral/chunk-SHLKRGRB.mjs.map} +1 -1
  53. package/dist/lib/{browser/chunk-22JMFST2.mjs → neutral/chunk-UW4T7PAL.mjs} +3 -4
  54. package/dist/lib/{browser/chunk-22JMFST2.mjs.map → neutral/chunk-UW4T7PAL.mjs.map} +1 -1
  55. package/dist/lib/{browser/chunk-XDIUHAAX.mjs → neutral/chunk-WSPASOLU.mjs} +3 -4
  56. package/dist/lib/{node-esm/chunk-QLI2EIJ2.mjs.map → neutral/chunk-WSPASOLU.mjs.map} +1 -1
  57. package/dist/lib/{browser/chunk-MYCCGG2T.mjs → neutral/chunk-X2MPMYYN.mjs} +1 -3
  58. package/dist/lib/{node-esm/chunk-MOWUEW5P.mjs.map → neutral/chunk-X2MPMYYN.mjs.map} +1 -1
  59. package/dist/lib/{browser/chunk-FPOISFQK.mjs → neutral/chunk-XAJMXQ4H.mjs} +7 -4
  60. package/dist/lib/neutral/chunk-XAJMXQ4H.mjs.map +7 -0
  61. package/dist/lib/{browser/chunk-BJPE6CIC.mjs → neutral/chunk-ZUG3PNXU.mjs} +146 -83
  62. package/dist/lib/neutral/chunk-ZUG3PNXU.mjs.map +7 -0
  63. package/dist/lib/{browser → neutral}/index.mjs +23 -24
  64. package/dist/lib/{browser → neutral}/internal/index.mjs +13 -8
  65. package/dist/lib/neutral/meta.json +1 -0
  66. package/dist/lib/{browser → neutral}/testing/index.mjs +23 -24
  67. package/dist/lib/{node-esm → neutral}/testing/index.mjs.map +1 -1
  68. package/dist/types/src/Annotation.d.ts +22 -0
  69. package/dist/types/src/Annotation.d.ts.map +1 -1
  70. package/dist/types/src/Database.d.ts +72 -50
  71. package/dist/types/src/Database.d.ts.map +1 -1
  72. package/dist/types/src/Err.d.ts +43 -0
  73. package/dist/types/src/Err.d.ts.map +1 -1
  74. package/dist/types/src/Obj.d.ts +84 -4
  75. package/dist/types/src/Obj.d.ts.map +1 -1
  76. package/dist/types/src/Query.d.ts +10 -0
  77. package/dist/types/src/Query.d.ts.map +1 -1
  78. package/dist/types/src/Relation.d.ts +2 -2
  79. package/dist/types/src/Relation.d.ts.map +1 -1
  80. package/dist/types/src/hierarchy.test.d.ts +2 -0
  81. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  82. package/dist/types/src/internal/annotations/annotations.d.ts +13 -6
  83. package/dist/types/src/internal/annotations/annotations.d.ts.map +1 -1
  84. package/dist/types/src/internal/annotations/util.d.ts +12 -0
  85. package/dist/types/src/internal/annotations/util.d.ts.map +1 -1
  86. package/dist/types/src/internal/api/meta.d.ts +2 -2
  87. package/dist/types/src/internal/api/meta.d.ts.map +1 -1
  88. package/dist/types/src/internal/entities/model.d.ts +3 -1
  89. package/dist/types/src/internal/entities/model.d.ts.map +1 -1
  90. package/dist/types/src/internal/entities/object.d.ts.map +1 -1
  91. package/dist/types/src/internal/entities/relation.d.ts.map +1 -1
  92. package/dist/types/src/internal/formats/select.d.ts +2 -2
  93. package/dist/types/src/internal/formats/select.d.ts.map +1 -1
  94. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -1
  95. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +130 -29
  96. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -1
  97. package/dist/types/src/internal/json-schema/json-schema.d.ts +2 -1
  98. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +1 -1
  99. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -1
  100. package/dist/types/src/internal/object/snapshot.d.ts.map +1 -1
  101. package/dist/types/src/internal/proxy/make-object.d.ts.map +1 -1
  102. package/dist/types/src/internal/proxy/typed-handler.d.ts +2 -1
  103. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -1
  104. package/dist/types/src/internal/ref/ref.d.ts +16 -2
  105. package/dist/types/src/internal/ref/ref.d.ts.map +1 -1
  106. package/dist/types/src/internal/schema/compose.d.ts +2 -1
  107. package/dist/types/src/internal/schema/compose.d.ts.map +1 -1
  108. package/dist/types/src/internal/schema/echo-schema.d.ts +2 -1
  109. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -1
  110. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +1 -1
  111. package/dist/types/src/internal/types/meta.d.ts +5 -5
  112. package/dist/types/src/internal/types/meta.d.ts.map +1 -1
  113. package/dist/types/src/internal/types/typename.d.ts +8 -0
  114. package/dist/types/src/internal/types/typename.d.ts.map +1 -1
  115. package/dist/types/tsconfig.tsbuildinfo +1 -1
  116. package/package.json +34 -113
  117. package/src/Annotation.ts +27 -0
  118. package/src/Database.ts +141 -124
  119. package/src/Err.ts +20 -0
  120. package/src/Obj.test.ts +56 -0
  121. package/src/Obj.ts +140 -11
  122. package/src/Query.ts +28 -0
  123. package/src/Relation.ts +5 -3
  124. package/src/hierarchy.test.ts +33 -0
  125. package/src/internal/annotations/annotations.ts +28 -1
  126. package/src/internal/annotations/util.ts +13 -0
  127. package/src/internal/api/meta.ts +3 -3
  128. package/src/internal/entities/model.ts +4 -0
  129. package/src/internal/entities/object.ts +1 -3
  130. package/src/internal/entities/relation.ts +1 -3
  131. package/src/internal/formats/format.test.ts +1 -1
  132. package/src/internal/formats/select.ts +1 -1
  133. package/src/internal/formats/types.ts +1 -1
  134. package/src/internal/json-schema/json-schema-normalize.ts +4 -2
  135. package/src/internal/json-schema/json-schema-type.ts +30 -31
  136. package/src/internal/json-schema/json-schema.ts +10 -6
  137. package/src/internal/object/json-serializer.test.ts +26 -2
  138. package/src/internal/object/json-serializer.ts +25 -9
  139. package/src/internal/object/schema-validator.test.ts +3 -7
  140. package/src/internal/object/set-value.test.ts +9 -9
  141. package/src/internal/object/snapshot.ts +29 -6
  142. package/src/internal/proxy/make-object.ts +12 -2
  143. package/src/internal/proxy/typed-handler.test.ts +8 -12
  144. package/src/internal/proxy/typed-handler.ts +9 -1
  145. package/src/internal/proxy/typed-object.test.ts +11 -11
  146. package/src/internal/ref/ref.test.ts +1 -1
  147. package/src/internal/ref/ref.ts +26 -2
  148. package/src/internal/schema/compose.ts +13 -8
  149. package/src/internal/schema/echo-schema.ts +3 -2
  150. package/src/internal/schema/persistent-schema.ts +2 -1
  151. package/src/internal/types/meta.ts +12 -13
  152. package/src/internal/types/typename.ts +10 -0
  153. package/dist/lib/browser/Database.mjs +0 -18
  154. package/dist/lib/browser/JsonSchema.mjs +0 -20
  155. package/dist/lib/browser/Obj.mjs +0 -91
  156. package/dist/lib/browser/Query.mjs +0 -27
  157. package/dist/lib/browser/QueryResult.mjs +0 -3
  158. package/dist/lib/browser/Ref.mjs +0 -23
  159. package/dist/lib/browser/SchemaRegistry.mjs +0 -3
  160. package/dist/lib/browser/Tag.mjs +0 -26
  161. package/dist/lib/browser/chunk-2SBB7OWV.mjs.map +0 -7
  162. package/dist/lib/browser/chunk-6L5HHUVU.mjs.map +0 -7
  163. package/dist/lib/browser/chunk-7STIBCP7.mjs +0 -133
  164. package/dist/lib/browser/chunk-7STIBCP7.mjs.map +0 -7
  165. package/dist/lib/browser/chunk-BJPE6CIC.mjs.map +0 -7
  166. package/dist/lib/browser/chunk-CJ5YELTO.mjs.map +0 -7
  167. package/dist/lib/browser/chunk-FPOISFQK.mjs.map +0 -7
  168. package/dist/lib/browser/chunk-FRDT7RA4.mjs.map +0 -7
  169. package/dist/lib/browser/chunk-INHXFXY5.mjs.map +0 -7
  170. package/dist/lib/browser/chunk-JMKVF2YQ.mjs.map +0 -7
  171. package/dist/lib/browser/chunk-KQQGVHFN.mjs.map +0 -7
  172. package/dist/lib/browser/chunk-MYCCGG2T.mjs.map +0 -7
  173. package/dist/lib/browser/chunk-NOPVNWPT.mjs.map +0 -7
  174. package/dist/lib/browser/chunk-PQZW3S6L.mjs.map +0 -7
  175. package/dist/lib/browser/chunk-RK4Z4JUZ.mjs +0 -283
  176. package/dist/lib/browser/chunk-RK4Z4JUZ.mjs.map +0 -7
  177. package/dist/lib/browser/chunk-U2J7TA7K.mjs.map +0 -7
  178. package/dist/lib/browser/chunk-XDIUHAAX.mjs.map +0 -7
  179. package/dist/lib/browser/chunk-YKTSSMDS.mjs.map +0 -7
  180. package/dist/lib/browser/chunk-ZAGAOZVY.mjs.map +0 -7
  181. package/dist/lib/browser/meta.json +0 -1
  182. package/dist/lib/browser/testing/index.mjs.map +0 -7
  183. package/dist/lib/node-esm/Annotation.mjs +0 -33
  184. package/dist/lib/node-esm/Annotation.mjs.map +0 -7
  185. package/dist/lib/node-esm/Database.mjs +0 -18
  186. package/dist/lib/node-esm/Database.mjs.map +0 -7
  187. package/dist/lib/node-esm/Entity.mjs +0 -52
  188. package/dist/lib/node-esm/Entity.mjs.map +0 -7
  189. package/dist/lib/node-esm/Err.mjs +0 -11
  190. package/dist/lib/node-esm/Err.mjs.map +0 -7
  191. package/dist/lib/node-esm/Filter.mjs +0 -62
  192. package/dist/lib/node-esm/Filter.mjs.map +0 -7
  193. package/dist/lib/node-esm/Format.mjs +0 -67
  194. package/dist/lib/node-esm/Format.mjs.map +0 -7
  195. package/dist/lib/node-esm/JsonSchema.mjs +0 -20
  196. package/dist/lib/node-esm/JsonSchema.mjs.map +0 -7
  197. package/dist/lib/node-esm/Key.mjs +0 -13
  198. package/dist/lib/node-esm/Key.mjs.map +0 -7
  199. package/dist/lib/node-esm/Obj.mjs.map +0 -7
  200. package/dist/lib/node-esm/Order.mjs +0 -13
  201. package/dist/lib/node-esm/Order.mjs.map +0 -7
  202. package/dist/lib/node-esm/Query.mjs +0 -27
  203. package/dist/lib/node-esm/Query.mjs.map +0 -7
  204. package/dist/lib/node-esm/QueryResult.mjs +0 -3
  205. package/dist/lib/node-esm/QueryResult.mjs.map +0 -7
  206. package/dist/lib/node-esm/Ref.mjs +0 -23
  207. package/dist/lib/node-esm/Ref.mjs.map +0 -7
  208. package/dist/lib/node-esm/Relation.mjs +0 -85
  209. package/dist/lib/node-esm/Relation.mjs.map +0 -7
  210. package/dist/lib/node-esm/SchemaRegistry.mjs +0 -3
  211. package/dist/lib/node-esm/SchemaRegistry.mjs.map +0 -7
  212. package/dist/lib/node-esm/Tag.mjs +0 -26
  213. package/dist/lib/node-esm/Tag.mjs.map +0 -7
  214. package/dist/lib/node-esm/Type.mjs +0 -48
  215. package/dist/lib/node-esm/Type.mjs.map +0 -7
  216. package/dist/lib/node-esm/chunk-4PNXQA64.mjs +0 -250
  217. package/dist/lib/node-esm/chunk-4PNXQA64.mjs.map +0 -7
  218. package/dist/lib/node-esm/chunk-5OBN7GZW.mjs +0 -158
  219. package/dist/lib/node-esm/chunk-5OBN7GZW.mjs.map +0 -7
  220. package/dist/lib/node-esm/chunk-AJEMYSIR.mjs +0 -22
  221. package/dist/lib/node-esm/chunk-ANLVLWME.mjs +0 -98
  222. package/dist/lib/node-esm/chunk-ANLVLWME.mjs.map +0 -7
  223. package/dist/lib/node-esm/chunk-DMR7OAFK.mjs +0 -57
  224. package/dist/lib/node-esm/chunk-FWTSPIFF.mjs +0 -133
  225. package/dist/lib/node-esm/chunk-FWTSPIFF.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  227. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-ILMLLM4R.mjs +0 -204
  229. package/dist/lib/node-esm/chunk-ILMLLM4R.mjs.map +0 -7
  230. package/dist/lib/node-esm/chunk-K37NA7PO.mjs +0 -43
  231. package/dist/lib/node-esm/chunk-LT3H4JOX.mjs +0 -3847
  232. package/dist/lib/node-esm/chunk-LT3H4JOX.mjs.map +0 -7
  233. package/dist/lib/node-esm/chunk-MOLNWFNL.mjs +0 -9
  234. package/dist/lib/node-esm/chunk-MOLNWFNL.mjs.map +0 -7
  235. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs +0 -15
  236. package/dist/lib/node-esm/chunk-NBWL7UCZ.mjs +0 -40
  237. package/dist/lib/node-esm/chunk-NBWL7UCZ.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-NRN3ZW2T.mjs +0 -143
  239. package/dist/lib/node-esm/chunk-QLI2EIJ2.mjs +0 -41
  240. package/dist/lib/node-esm/chunk-QYR67VBV.mjs +0 -288
  241. package/dist/lib/node-esm/chunk-UKGVOINP.mjs +0 -9
  242. package/dist/lib/node-esm/chunk-UKGVOINP.mjs.map +0 -7
  243. package/dist/lib/node-esm/chunk-W6QIEBTQ.mjs +0 -403
  244. package/dist/lib/node-esm/chunk-W6QIEBTQ.mjs.map +0 -7
  245. package/dist/lib/node-esm/chunk-XHJRMQZD.mjs +0 -69
  246. package/dist/lib/node-esm/chunk-XHJRMQZD.mjs.map +0 -7
  247. package/dist/lib/node-esm/chunk-Y75VU7LB.mjs +0 -74
  248. package/dist/lib/node-esm/chunk-YOLH5KS4.mjs.map +0 -7
  249. package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs +0 -39
  250. package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs.map +0 -7
  251. package/dist/lib/node-esm/chunk-ZBB67AKD.mjs +0 -24
  252. package/dist/lib/node-esm/chunk-ZBB67AKD.mjs.map +0 -7
  253. package/dist/lib/node-esm/index.mjs +0 -85
  254. package/dist/lib/node-esm/index.mjs.map +0 -7
  255. package/dist/lib/node-esm/internal/index.mjs +0 -457
  256. package/dist/lib/node-esm/internal/index.mjs.map +0 -7
  257. package/dist/lib/node-esm/meta.json +0 -1
  258. package/dist/lib/node-esm/testing/index.mjs +0 -367
  259. /package/dist/lib/{browser → neutral}/Annotation.mjs.map +0 -0
  260. /package/dist/lib/{browser → neutral}/Database.mjs.map +0 -0
  261. /package/dist/lib/{browser → neutral}/Entity.mjs.map +0 -0
  262. /package/dist/lib/{browser → neutral}/Err.mjs.map +0 -0
  263. /package/dist/lib/{browser → neutral}/Filter.mjs.map +0 -0
  264. /package/dist/lib/{browser → neutral}/Format.mjs.map +0 -0
  265. /package/dist/lib/{browser → neutral}/JsonSchema.mjs.map +0 -0
  266. /package/dist/lib/{browser → neutral}/Key.mjs.map +0 -0
  267. /package/dist/lib/{browser → neutral}/Obj.mjs.map +0 -0
  268. /package/dist/lib/{browser → neutral}/Order.mjs.map +0 -0
  269. /package/dist/lib/{browser → neutral}/Query.mjs.map +0 -0
  270. /package/dist/lib/{browser → neutral}/QueryResult.mjs.map +0 -0
  271. /package/dist/lib/{browser → neutral}/Ref.mjs.map +0 -0
  272. /package/dist/lib/{browser → neutral}/Relation.mjs.map +0 -0
  273. /package/dist/lib/{browser → neutral}/SchemaRegistry.mjs.map +0 -0
  274. /package/dist/lib/{browser → neutral}/Tag.mjs.map +0 -0
  275. /package/dist/lib/{browser → neutral}/Type.mjs.map +0 -0
  276. /package/dist/lib/{browser/chunk-CGS2ULMK.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  277. /package/dist/lib/{browser → neutral}/index.mjs.map +0 -0
  278. /package/dist/lib/{browser → neutral}/internal/index.mjs.map +0 -0
@@ -1,17 +1,19 @@
1
- import "@dxos/node-std/globals";
2
1
  import {
3
2
  CurrencyAnnotationId,
4
3
  FormatAnnotation,
5
4
  FormatAnnotationId,
6
5
  TypeFormat
7
- } from "./chunk-FRDT7RA4.mjs";
6
+ } from "./chunk-7WE7SBA2.mjs";
8
7
  import {
9
8
  Service
10
- } from "./chunk-7STIBCP7.mjs";
9
+ } from "./chunk-B4FLOYG7.mjs";
11
10
  import {
11
+ ATTR_PARENT,
12
12
  ATTR_TYPE,
13
13
  GeneratorAnnotationId,
14
+ LabelAnnotation,
14
15
  LabelAnnotationId,
16
+ ParentId,
15
17
  PropertyMetaAnnotationId,
16
18
  ReferenceAnnotationId,
17
19
  SchemaId,
@@ -35,7 +37,7 @@ import {
35
37
  setLabelWithSchema,
36
38
  setSchema,
37
39
  setTypename
38
- } from "./chunk-RK4Z4JUZ.mjs";
40
+ } from "./chunk-RIMHNJ3E.mjs";
39
41
  import {
40
42
  ANY_OBJECT_TYPENAME,
41
43
  ANY_OBJECT_VERSION,
@@ -45,7 +47,7 @@ import {
45
47
  SchemaKindId,
46
48
  SnapshotKindId,
47
49
  makeTypeJsonSchemaAnnotation
48
- } from "./chunk-YKTSSMDS.mjs";
50
+ } from "./chunk-KB7RIVLK.mjs";
49
51
 
50
52
  // src/internal/index.ts
51
53
  import { JsonPath as JsonPath2, JsonProp, getValue, splitJsonPath } from "@dxos/effect";
@@ -67,22 +69,22 @@ import { intersection } from "@dxos/util";
67
69
  var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/types/meta.ts";
68
70
  var ATTR_META = "@meta";
69
71
  var MetaId = Symbol.for("@dxos/echo/Meta");
70
- var ObjectMetaSchema = Schema2.mutable(Schema2.Struct({
71
- keys: Schema2.mutable(Schema2.Array(ForeignKey)),
72
+ var ObjectMetaSchema = Schema2.Struct({
73
+ keys: Schema2.Array(ForeignKey),
72
74
  /**
73
- * A set of tags.
74
- * Tags are arbitrary application-defined strings.
75
- * ECHO makes no assumptions about the tag structure.
76
- */
75
+ * A set of tags.
76
+ * Tags are arbitrary application-defined strings.
77
+ * ECHO makes no assumptions about the tag structure.
78
+ */
77
79
  // TODO(dmaretskyi): Has to be optional for compatibility with old data.
78
80
  // Defaulting to an empty array is possible but requires a bit more work.
79
- tags: Schema2.optional(Schema2.mutable(Schema2.Array(Schema2.String)))
80
- }));
81
+ tags: Schema2.optional(Schema2.Array(Schema2.String))
82
+ });
81
83
  var getMeta = (obj) => {
82
84
  const metadata = obj[MetaId];
83
85
  invariant(metadata, "ObjectMeta not found.", {
84
86
  F: __dxlog_file,
85
- L: 53,
87
+ L: 52,
86
88
  S: void 0,
87
89
  A: [
88
90
  "metadata",
@@ -200,7 +202,7 @@ var EchoRelationSchema = ({ source, target, typename, version: version2 }) => {
200
202
  ]
201
203
  });
202
204
  const fields = self.fields ?? {};
203
- const schemaWithId = Schema4.extend(Schema4.mutable(self), Schema4.Struct({
205
+ const schemaWithId = Schema4.extend(self, Schema4.Struct({
204
206
  id: Schema4.String
205
207
  }));
206
208
  const ast = SchemaAST2.annotations(schemaWithId.ast, {
@@ -249,7 +251,7 @@ var ObjectDatabaseId = Symbol.for("@dxos/echo/Database");
249
251
  function assertObjectModel(obj) {
250
252
  invariant3(typeof obj === "object" && obj !== null, "Invalid object model: not an object", {
251
253
  F: __dxlog_file3,
252
- L: 119,
254
+ L: 123,
253
255
  S: this,
254
256
  A: [
255
257
  "typeof obj === 'object' && obj !== null",
@@ -259,7 +261,7 @@ function assertObjectModel(obj) {
259
261
  assumeType(obj);
260
262
  invariant3(ObjectId.isValid(obj.id), "Invalid object model: invalid id", {
261
263
  F: __dxlog_file3,
262
- L: 121,
264
+ L: 125,
263
265
  S: this,
264
266
  A: [
265
267
  "ObjectId.isValid(obj.id)",
@@ -268,7 +270,7 @@ function assertObjectModel(obj) {
268
270
  });
269
271
  invariant3(obj[TypeId] === void 0 || obj[TypeId] instanceof DXN2, "Invalid object model: invalid type", {
270
272
  F: __dxlog_file3,
271
- L: 122,
273
+ L: 126,
272
274
  S: this,
273
275
  A: [
274
276
  "obj[TypeId] === undefined || obj[TypeId] instanceof DXN",
@@ -277,7 +279,7 @@ function assertObjectModel(obj) {
277
279
  });
278
280
  invariant3(obj[KindId] === EntityKind.Object || obj[KindId] === EntityKind.Relation, "Invalid object model: invalid entity kind", {
279
281
  F: __dxlog_file3,
280
- L: 123,
282
+ L: 127,
281
283
  S: this,
282
284
  A: [
283
285
  "obj[KindId] === EntityKind.Object || obj[KindId] === EntityKind.Relation",
@@ -287,7 +289,7 @@ function assertObjectModel(obj) {
287
289
  if (obj[KindId] === EntityKind.Relation) {
288
290
  invariant3(obj[RelationSourceDXNId] instanceof DXN2, "Invalid object model: invalid relation source", {
289
291
  F: __dxlog_file3,
290
- L: 129,
292
+ L: 133,
291
293
  S: this,
292
294
  A: [
293
295
  "obj[RelationSourceDXNId] instanceof DXN",
@@ -296,7 +298,7 @@ function assertObjectModel(obj) {
296
298
  });
297
299
  invariant3(obj[RelationTargetDXNId] instanceof DXN2, "Invalid object model: invalid relation target", {
298
300
  F: __dxlog_file3,
299
- L: 130,
301
+ L: 134,
300
302
  S: this,
301
303
  A: [
302
304
  "obj[RelationTargetDXNId] instanceof DXN",
@@ -305,7 +307,7 @@ function assertObjectModel(obj) {
305
307
  });
306
308
  invariant3(!(obj[RelationSourceId] instanceof DXN2), "Invalid object model: source pointer is a DXN", {
307
309
  F: __dxlog_file3,
308
- L: 131,
310
+ L: 135,
309
311
  S: this,
310
312
  A: [
311
313
  "!(obj[RelationSourceId] instanceof DXN)",
@@ -314,7 +316,7 @@ function assertObjectModel(obj) {
314
316
  });
315
317
  invariant3(!(obj[RelationTargetId] instanceof DXN2), "Invalid object model: target pointer is a DXN", {
316
318
  F: __dxlog_file3,
317
- L: 132,
319
+ L: 136,
318
320
  S: this,
319
321
  A: [
320
322
  "!(obj[RelationTargetId] instanceof DXN)",
@@ -350,7 +352,7 @@ var EchoObjectSchema = ({ typename, version: version2 }) => {
350
352
  ]
351
353
  });
352
354
  const fields = self.fields ?? {};
353
- const schemaWithId = Schema5.extend(Schema5.mutable(self), Schema5.Struct({
355
+ const schemaWithId = Schema5.extend(self, Schema5.Struct({
354
356
  id: Schema5.String
355
357
  }));
356
358
  const ast = SchemaAST3.annotations(schemaWithId.ast, {
@@ -575,7 +577,7 @@ import * as Schema7 from "effect/Schema";
575
577
  import { JsonPath } from "@dxos/effect";
576
578
  var SimpleTypes = Schema7.Literal("array", "boolean", "integer", "null", "number", "object", "string");
577
579
  var NonNegativeInteger = Schema7.Number.pipe(Schema7.greaterThanOrEqualTo(0));
578
- var StringArray = Schema7.Array(Schema7.String).pipe(Schema7.mutable);
580
+ var StringArray = Schema7.Array(Schema7.String);
579
581
  var JsonSchemaOrBoolean = Schema7.Union(Schema7.suspend(() => JsonSchemaType), Schema7.Boolean);
580
582
  var JsonSchemaEchoAnnotations = Schema7.Struct({
581
583
  /**
@@ -594,7 +596,7 @@ var JsonSchemaEchoAnnotations = Schema7.Struct({
594
596
  meta: Schema7.optional(Schema7.Record({
595
597
  key: Schema7.String,
596
598
  value: Schema7.Any
597
- }).pipe(Schema7.mutable)),
599
+ })),
598
600
  /**
599
601
  * @deprecated
600
602
  */
@@ -604,15 +606,15 @@ var JsonSchemaEchoAnnotations = Schema7.Struct({
604
606
  version: Schema7.String,
605
607
  // Not used.
606
608
  schemaId: Schema7.optional(Schema7.String)
607
- }).pipe(Schema7.mutable)),
609
+ })),
608
610
  /**
609
611
  * @deprecated Superseded by `meta`.
610
612
  */
611
613
  annotations: Schema7.optional(Schema7.Record({
612
614
  key: Schema7.String,
613
615
  value: Schema7.Any
614
- }).pipe(Schema7.mutable))
615
- }).pipe(Schema7.mutable);
616
+ }))
617
+ });
616
618
  var _JsonSchemaType = Schema7.Struct({
617
619
  /**
618
620
  * Identifier for this schema.
@@ -746,16 +748,16 @@ var _JsonSchemaType = Schema7.Struct({
746
748
  properties: Schema7.optional(Schema7.Record({
747
749
  key: Schema7.String,
748
750
  value: Schema7.suspend(() => JsonSchemaType)
749
- }).pipe(Schema7.mutable)),
751
+ })),
750
752
  patternProperties: Schema7.optional(Schema7.Record({
751
753
  key: Schema7.String,
752
754
  value: Schema7.suspend(() => JsonSchemaType)
753
- }).pipe(Schema7.mutable)),
755
+ })),
754
756
  propertyNames: Schema7.optional(Schema7.suspend(() => JsonSchemaType)),
755
- definitions: Schema7.optional(Schema7.mutable(Schema7.Record({
757
+ definitions: Schema7.optional(Schema7.Record({
756
758
  key: Schema7.String,
757
759
  value: Schema7.suspend(() => JsonSchemaType)
758
- }))),
760
+ })),
759
761
  dependencies: Schema7.optional(Schema7.Record({
760
762
  key: Schema7.String,
761
763
  value: Schema7.suspend(() => Schema7.Union(Schema7.String, StringArray, JsonSchemaType)).annotations({
@@ -772,34 +774,34 @@ var _JsonSchemaType = Schema7.Struct({
772
774
  anyOf: Schema7.optional(Schema7.Array(Schema7.suspend(() => JsonSchemaType))),
773
775
  oneOf: Schema7.optional(Schema7.Array(Schema7.suspend(() => JsonSchemaType))),
774
776
  not: Schema7.optional(Schema7.suspend(() => JsonSchemaType)),
775
- $defs: Schema7.optional(Schema7.mutable(Schema7.Record({
777
+ $defs: Schema7.optional(Schema7.Record({
776
778
  key: Schema7.String,
777
779
  value: Schema7.suspend(() => JsonSchemaType)
778
- }))),
780
+ })),
779
781
  //
780
782
  // ECHO extensions.
781
783
  //
782
784
  currency: Schema7.optional(Schema7.String),
783
- reference: Schema7.optional(Schema7.mutable(Schema7.Struct({
785
+ reference: Schema7.optional(Schema7.Struct({
784
786
  schema: Schema7.suspend(() => JsonSchemaType),
785
787
  schemaVersion: Schema7.optional(Schema7.String),
786
788
  schemaObject: Schema7.optional(Schema7.String)
787
- }))),
789
+ })),
788
790
  /**
789
791
  * ECHO-specific annotations.
790
792
  */
791
793
  // TODO(dmaretskyi): Since we are adding a lot of new extensions to the JSON Schema, it is safer to namespace them here.
792
- annotations: Schema7.optional(Schema7.mutable(JsonSchemaEchoAnnotations)),
794
+ annotations: Schema7.optional(JsonSchemaEchoAnnotations),
793
795
  /**
794
796
  * @deprecated Use `annotations` instead.
795
797
  */
796
- echo: Schema7.optional(Schema7.mutable(JsonSchemaEchoAnnotations))
798
+ echo: Schema7.optional(JsonSchemaEchoAnnotations)
797
799
  }).annotations({
798
800
  identifier: "jsonSchema",
799
801
  description: "JSON Schema"
800
802
  });
801
803
  var JsonSchemaFields = Object.keys(_JsonSchemaType.fields);
802
- var JsonSchemaType = _JsonSchemaType.pipe(Schema7.mutable);
804
+ var JsonSchemaType = _JsonSchemaType;
803
805
  var getSchemaProperty = (schema, property) => {
804
806
  return schema.properties?.[property];
805
807
  };
@@ -947,8 +949,11 @@ import { clearUndefined, orderKeys, removeProperties } from "@dxos/util";
947
949
 
948
950
  // src/internal/ref/ref.ts
949
951
  import * as Effect from "effect/Effect";
952
+ import * as Equal from "effect/Equal";
953
+ import * as Hash from "effect/Hash";
950
954
  import * as Option from "effect/Option";
951
955
  import * as ParseResult from "effect/ParseResult";
956
+ import * as Pipeable from "effect/Pipeable";
952
957
  import * as Schema8 from "effect/Schema";
953
958
  import * as SchemaAST5 from "effect/SchemaAST";
954
959
  import { Event } from "@dxos/async";
@@ -1011,7 +1016,7 @@ Ref.make = (obj) => {
1011
1016
  const id = obj.id;
1012
1017
  invariant8(ObjectId3.isValid(id), "Invalid object ID", {
1013
1018
  F: __dxlog_file8,
1014
- L: 221,
1019
+ L: 225,
1015
1020
  S: void 0,
1016
1021
  A: [
1017
1022
  "ObjectId.isValid(id)",
@@ -1121,7 +1126,7 @@ var RefImpl = class _RefImpl {
1121
1126
  }
1122
1127
  invariant8(this.#resolver, "Resolver is not set", {
1123
1128
  F: __dxlog_file8,
1124
- L: 389,
1129
+ L: 393,
1125
1130
  S: this,
1126
1131
  A: [
1127
1132
  "this.#resolver",
@@ -1139,7 +1144,7 @@ var RefImpl = class _RefImpl {
1139
1144
  }
1140
1145
  invariant8(this.#resolver, "Resolver is not set", {
1141
1146
  F: __dxlog_file8,
1142
- L: 400,
1147
+ L: 404,
1143
1148
  S: this,
1144
1149
  A: [
1145
1150
  "this.#resolver",
@@ -1161,7 +1166,7 @@ var RefImpl = class _RefImpl {
1161
1166
  }
1162
1167
  invariant8(this.#resolver, "Resolver is not set", {
1163
1168
  F: __dxlog_file8,
1164
- L: 415,
1169
+ L: 419,
1165
1170
  S: this,
1166
1171
  A: [
1167
1172
  "this.#resolver",
@@ -1208,6 +1213,19 @@ var RefImpl = class _RefImpl {
1208
1213
  };
1209
1214
  [RefTypeId] = refVariance;
1210
1215
  /**
1216
+ * Effect Hash trait. Required for MutableHashMap-based caches (e.g., Atom.family)
1217
+ * to deduplicate Ref instances that point to the same object.
1218
+ * ECHO proxies return new RefImpl instances on every property access,
1219
+ * so without this, each access would create a separate cache entry.
1220
+ */
1221
+ [Hash.symbol]() {
1222
+ return Hash.hash(this.#dxn.toString());
1223
+ }
1224
+ /** Effect Equal trait. See {@link Hash.symbol} for rationale. */
1225
+ [Equal.symbol](that) {
1226
+ return that instanceof _RefImpl && this.#dxn.toString() === that.dxn.toString();
1227
+ }
1228
+ /**
1211
1229
  * Internal method to set the resolver.
1212
1230
  *
1213
1231
  * @internal
@@ -1221,11 +1239,14 @@ var RefImpl = class _RefImpl {
1221
1239
  _getSavedTarget() {
1222
1240
  return this.#target;
1223
1241
  }
1242
+ pipe() {
1243
+ return Pipeable.pipeArguments(this, arguments);
1244
+ }
1224
1245
  };
1225
1246
  var setRefResolver = (ref, resolver) => {
1226
1247
  invariant8(ref instanceof RefImpl, "Ref is not an instance of RefImpl", {
1227
1248
  F: __dxlog_file8,
1228
- L: 482,
1249
+ L: 506,
1229
1250
  S: void 0,
1230
1251
  A: [
1231
1252
  "ref instanceof RefImpl",
@@ -1237,7 +1258,7 @@ var setRefResolver = (ref, resolver) => {
1237
1258
  var getRefSavedTarget = (ref) => {
1238
1259
  invariant8(ref instanceof RefImpl, "Ref is not an instance of RefImpl", {
1239
1260
  F: __dxlog_file8,
1240
- L: 490,
1261
+ L: 514,
1241
1262
  S: void 0,
1242
1263
  A: [
1243
1264
  "ref instanceof RefImpl",
@@ -1268,7 +1289,7 @@ var StaticRefResolver = class {
1268
1289
  const dxn = getSchemaDXN(schema);
1269
1290
  invariant8(dxn, "Schema has no DXN", {
1270
1291
  F: __dxlog_file8,
1271
- L: 522,
1292
+ L: 546,
1272
1293
  S: this,
1273
1294
  A: [
1274
1295
  "dxn",
@@ -1469,7 +1490,7 @@ var toEffectSchema = (root, _defs) => {
1469
1490
  } else {
1470
1491
  log.warn("allOf with multiple schemas is not supported", void 0, {
1471
1492
  F: __dxlog_file9,
1472
- L: 220,
1493
+ L: 224,
1473
1494
  S: void 0,
1474
1495
  C: (f, a) => f(...a)
1475
1496
  });
@@ -1503,7 +1524,7 @@ var toEffectSchema = (root, _defs) => {
1503
1524
  } else {
1504
1525
  invariant9(root.items, void 0, {
1505
1526
  F: __dxlog_file9,
1506
- L: 253,
1527
+ L: 257,
1507
1528
  S: void 0,
1508
1529
  A: [
1509
1530
  "root.items",
@@ -1525,7 +1546,7 @@ var toEffectSchema = (root, _defs) => {
1525
1546
  const jsonSchema = defs[refSegments[refSegments.length - 1]];
1526
1547
  invariant9(jsonSchema, `missing definition for ${root.$ref}`, {
1527
1548
  F: __dxlog_file9,
1528
- L: 269,
1549
+ L: 273,
1529
1550
  S: void 0,
1530
1551
  A: [
1531
1552
  "jsonSchema",
@@ -1543,7 +1564,7 @@ var toEffectSchema = (root, _defs) => {
1543
1564
  var objectToEffectSchema = (root, defs) => {
1544
1565
  invariant9("type" in root && root.type === "object", `not an object: ${root}`, {
1545
1566
  F: __dxlog_file9,
1546
- L: 284,
1567
+ L: 288,
1547
1568
  S: void 0,
1548
1569
  A: [
1549
1570
  "'type' in root && root.type === 'object'",
@@ -1569,7 +1590,7 @@ var objectToEffectSchema = (root, defs) => {
1569
1590
  if (root.patternProperties) {
1570
1591
  invariant9(propertyList.length === 0, "pattern properties mixed with regular properties are not supported", {
1571
1592
  F: __dxlog_file9,
1572
- L: 310,
1593
+ L: 314,
1573
1594
  S: void 0,
1574
1595
  A: [
1575
1596
  "propertyList.length === 0",
@@ -1578,7 +1599,7 @@ var objectToEffectSchema = (root, defs) => {
1578
1599
  });
1579
1600
  invariant9(Object.keys(root.patternProperties).length === 1 && Object.keys(root.patternProperties)[0] === "", "only one pattern property is supported", {
1580
1601
  F: __dxlog_file9,
1581
- L: 311,
1602
+ L: 315,
1582
1603
  S: void 0,
1583
1604
  A: [
1584
1605
  "Object.keys(root.patternProperties).length === 1 && Object.keys(root.patternProperties)[0] === ''",
@@ -1606,7 +1627,7 @@ var objectToEffectSchema = (root, defs) => {
1606
1627
  }
1607
1628
  }
1608
1629
  if (immutableIdField) {
1609
- schema = Schema9.extend(Schema9.mutable(schema), Schema9.Struct({
1630
+ schema = Schema9.extend(schema, Schema9.Struct({
1610
1631
  id: immutableIdField
1611
1632
  }));
1612
1633
  }
@@ -1632,7 +1653,7 @@ var refToEffectSchema = (root) => {
1632
1653
  const targetSchemaDXN = DXN5.parse(reference.schema.$ref);
1633
1654
  invariant9(targetSchemaDXN.kind === DXN5.kind.TYPE, void 0, {
1634
1655
  F: __dxlog_file9,
1635
- L: 364,
1656
+ L: 368,
1636
1657
  S: void 0,
1637
1658
  A: [
1638
1659
  "targetSchemaDXN.kind === DXN.kind.TYPE",
@@ -2564,7 +2585,7 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
2564
2585
  init(target) {
2565
2586
  invariant14(typeof target === "object" && target !== null, void 0, {
2566
2587
  F: __dxlog_file14,
2567
- L: 147,
2588
+ L: 148,
2568
2589
  S: this,
2569
2590
  A: [
2570
2591
  "typeof target === 'object' && target !== null",
@@ -2573,7 +2594,7 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
2573
2594
  });
2574
2595
  invariant14(SchemaId in target, "Schema is not defined for the target", {
2575
2596
  F: __dxlog_file14,
2576
- L: 148,
2597
+ L: 149,
2577
2598
  S: this,
2578
2599
  A: [
2579
2600
  "SchemaId in target",
@@ -2693,6 +2714,12 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
2693
2714
  */
2694
2715
  _prepareValueForAssignment(target, prop, value2) {
2695
2716
  const echoRoot = getEchoRoot(target);
2717
+ if (prop === ParentId) {
2718
+ return {
2719
+ echoRoot,
2720
+ preparedValue: value2
2721
+ };
2722
+ }
2696
2723
  if (isValidProxyTarget(value2) || isProxy(value2)) {
2697
2724
  if (wouldCreateCycle(echoRoot, value2)) {
2698
2725
  throw new Error("Cannot create cycles in typed object graph. Consider using Ref for circular references.");
@@ -2725,6 +2752,9 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
2725
2752
  };
2726
2753
  }
2727
2754
  _validateValue(target, prop, value2) {
2755
+ if (prop === ParentId) {
2756
+ return value2;
2757
+ }
2728
2758
  const schema = SchemaValidator.getTargetPropertySchema(target, prop);
2729
2759
  const _ = Schema12.asserts(schema)(value2);
2730
2760
  if (isValidProxyTarget(value2)) {
@@ -2787,9 +2817,7 @@ var makeArraysReactive = (target) => {
2787
2817
 
2788
2818
  // src/internal/proxy/make-object.ts
2789
2819
  var makeObject = (schema, obj, meta) => {
2790
- return createReactiveObject({
2791
- ...obj
2792
- }, meta, schema);
2820
+ return createReactiveObject(Object.assign({}, obj), meta, schema);
2793
2821
  };
2794
2822
  var createReactiveObject = (obj, meta, schema) => {
2795
2823
  if (!isValidProxyTarget(obj)) {
@@ -2798,12 +2826,19 @@ var createReactiveObject = (obj, meta, schema) => {
2798
2826
  if (!schema) {
2799
2827
  throw new Error("Schema is required for reactive objects. Use Atom for untyped reactive state.");
2800
2828
  }
2829
+ const parent = obj[ParentId];
2830
+ if (parent !== void 0) {
2831
+ delete obj[ParentId];
2832
+ }
2801
2833
  const annotation = getTypeAnnotation(schema);
2802
2834
  if (annotation) {
2803
2835
  setIdOnTarget(obj);
2804
2836
  defineHiddenProperty(obj, KindId, annotation.kind);
2805
2837
  }
2806
2838
  initMeta(obj, meta);
2839
+ if (parent !== void 0) {
2840
+ defineHiddenProperty(obj, ParentId, parent);
2841
+ }
2807
2842
  prepareTypedTarget(obj, schema);
2808
2843
  attachTypedJsonSerializer(obj);
2809
2844
  const proxy = createProxy(obj, TypedReactiveHandler.instance);
@@ -2886,7 +2921,7 @@ var objectToJSON = (obj) => {
2886
2921
  const typename = getTypeDXN(obj)?.toString();
2887
2922
  invariant15(typename && typeof typename === "string", void 0, {
2888
2923
  F: __dxlog_file15,
2889
- L: 62,
2924
+ L: 64,
2890
2925
  S: void 0,
2891
2926
  A: [
2892
2927
  "typename && typeof typename === 'string'",
@@ -2904,27 +2939,28 @@ var objectFromJSON = async (jsonData, { refResolver, dxn } = {}) => {
2904
2939
  const schema = await refResolver?.resolveSchema(type);
2905
2940
  invariant15(schema === void 0 || Schema13.isSchema(schema), void 0, {
2906
2941
  F: __dxlog_file15,
2907
- L: 83,
2942
+ L: 85,
2908
2943
  S: void 0,
2909
2944
  A: [
2910
2945
  "schema === undefined || Schema.isSchema(schema)",
2911
2946
  ""
2912
2947
  ]
2913
2948
  });
2949
+ const decodedInput = stripInternalJsonKeys(jsonData);
2914
2950
  let obj;
2915
2951
  if (schema != null) {
2916
- obj = await schema.pipe(Schema13.decodeUnknownPromise)(jsonData);
2952
+ obj = await schema.pipe(Schema13.decodeUnknownPromise)(decodedInput);
2917
2953
  if (refResolver) {
2918
2954
  setRefResolverOnData(obj, refResolver);
2919
2955
  }
2920
2956
  } else {
2921
- obj = decodeGeneric(jsonData, {
2957
+ obj = decodeGeneric(decodedInput, {
2922
2958
  refResolver
2923
2959
  });
2924
2960
  }
2925
2961
  invariant15(ObjectId6.isValid(obj.id), "Invalid object id", {
2926
2962
  F: __dxlog_file15,
2927
- L: 95,
2963
+ L: 98,
2928
2964
  S: void 0,
2929
2965
  A: [
2930
2966
  "ObjectId.isValid(obj.id)",
@@ -2953,7 +2989,7 @@ var objectFromJSON = async (jsonData, { refResolver, dxn } = {}) => {
2953
2989
  const meta = await ObjectMetaSchema.pipe(Schema13.decodeUnknownPromise)(jsonData[ATTR_META]);
2954
2990
  invariant15(Array.isArray(meta.keys), void 0, {
2955
2991
  F: __dxlog_file15,
2956
- L: 121,
2992
+ L: 124,
2957
2993
  S: void 0,
2958
2994
  A: [
2959
2995
  "Array.isArray(meta.keys)",
@@ -2966,13 +3002,18 @@ var objectFromJSON = async (jsonData, { refResolver, dxn } = {}) => {
2966
3002
  keys: []
2967
3003
  });
2968
3004
  }
3005
+ if (jsonData[ATTR_PARENT]) {
3006
+ const parentDxn = DXN7.parse(jsonData[ATTR_PARENT]);
3007
+ const parent = await refResolver?.resolve(parentDxn);
3008
+ defineHiddenProperty(obj, ParentId, parent);
3009
+ }
2969
3010
  if (dxn) {
2970
3011
  defineHiddenProperty(obj, SelfDXNId, dxn);
2971
3012
  }
2972
3013
  assertObjectModel(obj);
2973
3014
  invariant15(obj[ATTR_TYPE] === void 0, "Invalid object model", {
2974
3015
  F: __dxlog_file15,
2975
- L: 134,
3016
+ L: 143,
2976
3017
  S: void 0,
2977
3018
  A: [
2978
3019
  "(obj as any)[ATTR_TYPE] === undefined",
@@ -2981,7 +3022,7 @@ var objectFromJSON = async (jsonData, { refResolver, dxn } = {}) => {
2981
3022
  });
2982
3023
  invariant15(obj[ATTR_META] === void 0, "Invalid object model", {
2983
3024
  F: __dxlog_file15,
2984
- L: 135,
3025
+ L: 144,
2985
3026
  S: void 0,
2986
3027
  A: [
2987
3028
  "(obj as any)[ATTR_META] === undefined",
@@ -2990,7 +3031,7 @@ var objectFromJSON = async (jsonData, { refResolver, dxn } = {}) => {
2990
3031
  });
2991
3032
  invariant15(obj[ATTR_DELETED] === void 0, "Invalid object model", {
2992
3033
  F: __dxlog_file15,
2993
- L: 136,
3034
+ L: 145,
2994
3035
  S: void 0,
2995
3036
  A: [
2996
3037
  "(obj as any)[ATTR_DELETED] === undefined",
@@ -2999,7 +3040,7 @@ var objectFromJSON = async (jsonData, { refResolver, dxn } = {}) => {
2999
3040
  });
3000
3041
  invariant15(obj[ATTR_SELF_DXN] === void 0, "Invalid object model", {
3001
3042
  F: __dxlog_file15,
3002
- L: 137,
3043
+ L: 146,
3003
3044
  S: void 0,
3004
3045
  A: [
3005
3046
  "(obj as any)[ATTR_SELF_DXN] === undefined",
@@ -3008,7 +3049,7 @@ var objectFromJSON = async (jsonData, { refResolver, dxn } = {}) => {
3008
3049
  });
3009
3050
  invariant15(obj[ATTR_RELATION_SOURCE] === void 0, "Invalid object model", {
3010
3051
  F: __dxlog_file15,
3011
- L: 138,
3052
+ L: 147,
3012
3053
  S: void 0,
3013
3054
  A: [
3014
3055
  "(obj as any)[ATTR_RELATION_SOURCE] === undefined",
@@ -3017,7 +3058,7 @@ var objectFromJSON = async (jsonData, { refResolver, dxn } = {}) => {
3017
3058
  });
3018
3059
  invariant15(obj[ATTR_RELATION_TARGET] === void 0, "Invalid object model", {
3019
3060
  F: __dxlog_file15,
3020
- L: 139,
3061
+ L: 148,
3021
3062
  S: void 0,
3022
3063
  A: [
3023
3064
  "(obj as any)[ATTR_RELATION_TARGET] === undefined",
@@ -3027,7 +3068,7 @@ var objectFromJSON = async (jsonData, { refResolver, dxn } = {}) => {
3027
3068
  return obj;
3028
3069
  };
3029
3070
  var decodeGeneric = (jsonData, options) => {
3030
- const { [ATTR_TYPE]: _type, [ATTR_META]: _meta, [ATTR_DELETED]: _deleted, [ATTR_SELF_DXN]: _selfDxn, [ATTR_RELATION_SOURCE]: _relationSource, [ATTR_RELATION_TARGET]: _relationTarget, ...props } = jsonData;
3071
+ const props = stripInternalJsonKeys(jsonData);
3031
3072
  return deepMapValues2(props, (value2, visitor) => {
3032
3073
  if (isEncodedReference(value2)) {
3033
3074
  return refFromEncodedReference(value2, options.refResolver);
@@ -3035,6 +3076,10 @@ var decodeGeneric = (jsonData, options) => {
3035
3076
  return visitor(value2);
3036
3077
  });
3037
3078
  };
3079
+ var stripInternalJsonKeys = (jsonData) => {
3080
+ const { [ATTR_TYPE]: _type, [ATTR_META]: _meta, [ATTR_DELETED]: _deleted, [ATTR_SELF_DXN]: _selfDxn, [ATTR_RELATION_SOURCE]: _relationSource, [ATTR_RELATION_TARGET]: _relationTarget, ...props } = jsonData;
3081
+ return props;
3082
+ };
3038
3083
  var setRefResolverOnData = (obj, refResolver) => {
3039
3084
  const visitor = (value2) => {
3040
3085
  if (Ref.isRef(value2)) {
@@ -3051,6 +3096,7 @@ var objectStructureToJson = (objectId, structure) => {
3051
3096
  id: objectId,
3052
3097
  [ATTR_TYPE]: ObjectStructure.getTypeReference(structure)?.["/"] ?? "",
3053
3098
  [ATTR_DELETED]: ObjectStructure.isDeleted(structure),
3099
+ [ATTR_PARENT]: ObjectStructure.getParent(structure)?.["/"],
3054
3100
  [ATTR_RELATION_SOURCE]: ObjectStructure.getRelationSource(structure)?.["/"],
3055
3101
  [ATTR_RELATION_TARGET]: ObjectStructure.getRelationTarget(structure)?.["/"]
3056
3102
  };
@@ -3216,10 +3262,17 @@ var createObjectWithDefaults = (ast) => {
3216
3262
 
3217
3263
  // src/internal/object/snapshot.ts
3218
3264
  import { deepMapValues as deepMapValues3 } from "@dxos/util";
3219
- var copySymbolProperty = (source, target, symbol) => {
3220
- if (symbol in source) {
3221
- Object.defineProperty(target, symbol, {
3222
- value: source[symbol],
3265
+ var copySymbolProperty = (source, target, symbol3, transform) => {
3266
+ let value2;
3267
+ try {
3268
+ value2 = source[symbol3];
3269
+ } catch {
3270
+ return;
3271
+ }
3272
+ if (value2 !== void 0) {
3273
+ const finalValue = transform ? transform(value2) : value2;
3274
+ Object.defineProperty(target, symbol3, {
3275
+ value: finalValue,
3223
3276
  writable: false,
3224
3277
  enumerable: false,
3225
3278
  configurable: false
@@ -3240,7 +3293,15 @@ var getSnapshot = (obj) => {
3240
3293
  const source = obj;
3241
3294
  copySymbolProperty(source, snapshot, TypeId);
3242
3295
  copySymbolProperty(source, snapshot, SchemaId);
3243
- copySymbolProperty(source, snapshot, MetaId);
3296
+ copySymbolProperty(source, snapshot, ObjectDatabaseId);
3297
+ copySymbolProperty(source, snapshot, MetaId, (meta) => ({
3298
+ keys: [
3299
+ ...meta?.keys ?? []
3300
+ ],
3301
+ tags: [
3302
+ ...meta?.tags ?? []
3303
+ ]
3304
+ }));
3244
3305
  copySymbolProperty(source, snapshot, RelationSourceDXNId);
3245
3306
  copySymbolProperty(source, snapshot, RelationTargetDXNId);
3246
3307
  copySymbolProperty(source, snapshot, RelationSourceId);
@@ -3381,7 +3442,9 @@ var PersistentSchema = Schema15.Struct({
3381
3442
  }).pipe(EchoObjectSchema({
3382
3443
  typename: "dxos.org/type/Schema",
3383
3444
  version: "0.1.0"
3384
- }));
3445
+ }), LabelAnnotation.set([
3446
+ "name"
3447
+ ]));
3385
3448
 
3386
3449
  // src/internal/schema/echo-schema.ts
3387
3450
  var __dxlog_file19 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/schema/echo-schema.ts";
@@ -3393,7 +3456,7 @@ var ImmutableSchema = class {
3393
3456
  this._objectAnnotation = getTypeAnnotation(this._schema);
3394
3457
  invariant19(this._objectAnnotation, void 0, {
3395
3458
  F: __dxlog_file19,
3396
- L: 48,
3459
+ L: 49,
3397
3460
  S: this,
3398
3461
  A: [
3399
3462
  "this._objectAnnotation",
@@ -3555,7 +3618,7 @@ var EchoSchema = class extends EchoSchemaConstructor() {
3555
3618
  get mutable() {
3556
3619
  invariant19(!this.readonly, "Schema is not mutable", {
3557
3620
  F: __dxlog_file19,
3558
- L: 278,
3621
+ L: 279,
3559
3622
  S: this,
3560
3623
  A: [
3561
3624
  "!this.readonly",
@@ -3596,7 +3659,7 @@ var EchoSchema = class extends EchoSchemaConstructor() {
3596
3659
  const ast = this._getSchema().ast;
3597
3660
  invariant19(SchemaAST11.isTypeLiteral(ast), void 0, {
3598
3661
  F: __dxlog_file19,
3599
- L: 313,
3662
+ L: 314,
3600
3663
  S: this,
3601
3664
  A: [
3602
3665
  "SchemaAST.isTypeLiteral(ast)",
@@ -3844,4 +3907,4 @@ export {
3844
3907
  getValue,
3845
3908
  splitJsonPath
3846
3909
  };
3847
- //# sourceMappingURL=chunk-BJPE6CIC.mjs.map
3910
+ //# sourceMappingURL=chunk-ZUG3PNXU.mjs.map