@dxos/echo 0.8.4-main.8360d9e660 → 0.8.4-main.8baae0fced

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 (292) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +3 -3
  3. package/dist/lib/neutral/Annotation.mjs +5 -3
  4. package/dist/lib/neutral/Database.mjs +8 -4
  5. package/dist/lib/neutral/Entity.mjs +16 -14
  6. package/dist/lib/neutral/Err.mjs +1 -1
  7. package/dist/lib/neutral/Extension.mjs +18 -0
  8. package/dist/lib/neutral/Extension.mjs.map +7 -0
  9. package/dist/lib/neutral/Feed.mjs +23 -18
  10. package/dist/lib/neutral/Filter.mjs +23 -13
  11. package/dist/lib/neutral/Format.mjs +3 -3
  12. package/dist/lib/neutral/JsonSchema.mjs +8 -8
  13. package/dist/lib/neutral/Key.mjs +1 -1
  14. package/dist/lib/neutral/Migration.mjs +17 -0
  15. package/dist/lib/neutral/Migration.mjs.map +7 -0
  16. package/dist/lib/neutral/Obj.mjs +16 -13
  17. package/dist/lib/neutral/Order.mjs +1 -1
  18. package/dist/lib/neutral/Query.mjs +19 -17
  19. package/dist/lib/neutral/QueryResult.mjs +1 -1
  20. package/dist/lib/neutral/Ref.mjs +9 -7
  21. package/dist/lib/neutral/Relation.mjs +15 -14
  22. package/dist/lib/neutral/SchemaRegistry.mjs +1 -1
  23. package/dist/lib/neutral/Tag.mjs +14 -13
  24. package/dist/lib/neutral/Type.mjs +10 -10
  25. package/dist/lib/neutral/{chunk-FZO7LQO7.mjs → chunk-44HT3MEC.mjs} +2 -2
  26. package/dist/lib/neutral/{chunk-ROAGDPV7.mjs → chunk-4A2GS5LQ.mjs} +12 -8
  27. package/dist/lib/neutral/chunk-4A2GS5LQ.mjs.map +7 -0
  28. package/dist/lib/neutral/{chunk-OENWMTE6.mjs → chunk-5SL5LDLD.mjs} +4 -2
  29. package/dist/lib/neutral/chunk-5SL5LDLD.mjs.map +7 -0
  30. package/dist/lib/neutral/{chunk-ANHVGJI4.mjs → chunk-7RVZT53K.mjs} +1 -1
  31. package/dist/lib/neutral/{chunk-YWXWXIE5.mjs → chunk-APHSOTIX.mjs} +2 -2
  32. package/dist/lib/neutral/{chunk-YWXWXIE5.mjs.map → chunk-APHSOTIX.mjs.map} +2 -2
  33. package/dist/lib/neutral/{chunk-6DNYDXCV.mjs → chunk-B2P7IVG3.mjs} +61 -14
  34. package/dist/lib/neutral/chunk-B2P7IVG3.mjs.map +7 -0
  35. package/dist/lib/neutral/{chunk-BNCCGLJN.mjs → chunk-BICZKPQG.mjs} +1 -1
  36. package/dist/lib/neutral/{chunk-43Y5DOS6.mjs → chunk-BMB7IHGB.mjs} +16 -66
  37. package/dist/lib/neutral/chunk-BMB7IHGB.mjs.map +7 -0
  38. package/dist/lib/neutral/{chunk-6K2MVI2O.mjs → chunk-BUBEC474.mjs} +4 -4
  39. package/dist/lib/neutral/{chunk-YMNSMKKW.mjs → chunk-C4PSESGN.mjs} +6 -22
  40. package/dist/lib/neutral/{chunk-YMNSMKKW.mjs.map → chunk-C4PSESGN.mjs.map} +3 -3
  41. package/dist/lib/neutral/chunk-FIWO2FZK.mjs +36 -0
  42. package/dist/lib/neutral/chunk-FIWO2FZK.mjs.map +7 -0
  43. package/dist/lib/neutral/chunk-GWFFC34K.mjs +50 -0
  44. package/dist/lib/neutral/chunk-GWFFC34K.mjs.map +7 -0
  45. package/dist/lib/neutral/{chunk-NXMFBIT5.mjs → chunk-HKETO4L4.mjs} +72 -6
  46. package/dist/lib/neutral/chunk-HKETO4L4.mjs.map +7 -0
  47. package/dist/lib/neutral/{chunk-NEGC54NE.mjs → chunk-I2DARWPX.mjs} +17 -19
  48. package/dist/lib/neutral/chunk-I2DARWPX.mjs.map +7 -0
  49. package/dist/lib/neutral/{chunk-7VNVH63N.mjs → chunk-IVSI7QO6.mjs} +50 -20
  50. package/dist/lib/neutral/chunk-IVSI7QO6.mjs.map +7 -0
  51. package/dist/lib/neutral/{chunk-BOZZPUXE.mjs → chunk-MLS7U7AT.mjs} +12 -65
  52. package/dist/lib/neutral/chunk-MLS7U7AT.mjs.map +7 -0
  53. package/dist/lib/neutral/{chunk-WYOKA6AE.mjs → chunk-N4B7FHQT.mjs} +2 -2
  54. package/dist/lib/neutral/{chunk-WYOKA6AE.mjs.map → chunk-N4B7FHQT.mjs.map} +1 -1
  55. package/dist/lib/neutral/{chunk-FXEG7EOK.mjs → chunk-N7VOEPSV.mjs} +6 -3
  56. package/dist/lib/neutral/{chunk-FXEG7EOK.mjs.map → chunk-N7VOEPSV.mjs.map} +3 -3
  57. package/dist/lib/neutral/{chunk-UTBRYVQC.mjs → chunk-QRZ2I3ZM.mjs} +2 -2
  58. package/dist/lib/neutral/{chunk-SEMVAGBM.mjs → chunk-TNBK56IN.mjs} +19 -24
  59. package/dist/lib/neutral/chunk-TNBK56IN.mjs.map +7 -0
  60. package/dist/lib/neutral/{chunk-B5OXLWZL.mjs → chunk-TRPZU2HV.mjs} +2 -2
  61. package/dist/lib/neutral/{chunk-UI6MWK5W.mjs → chunk-TTCSATUD.mjs} +1 -1
  62. package/dist/lib/neutral/{chunk-OMUPQMLR.mjs → chunk-V72DY6LU.mjs} +1 -1
  63. package/dist/lib/neutral/{chunk-6GPU7XC3.mjs → chunk-VW42HESL.mjs} +54 -17
  64. package/dist/lib/neutral/chunk-VW42HESL.mjs.map +7 -0
  65. package/dist/lib/neutral/{chunk-4JRI2ZJI.mjs → chunk-X3356HPV.mjs} +120 -12
  66. package/dist/lib/neutral/chunk-X3356HPV.mjs.map +7 -0
  67. package/dist/lib/neutral/{chunk-W47JKR3X.mjs → chunk-XEXM5HWQ.mjs} +18 -46
  68. package/dist/lib/neutral/chunk-XEXM5HWQ.mjs.map +7 -0
  69. package/dist/lib/neutral/{chunk-C4JZK4J7.mjs → chunk-Z5GKP74O.mjs} +231 -479
  70. package/dist/lib/neutral/chunk-Z5GKP74O.mjs.map +7 -0
  71. package/dist/lib/neutral/{chunk-UBEZSGXY.mjs → chunk-ZISMEVKD.mjs} +1 -1
  72. package/dist/lib/neutral/{chunk-UBEZSGXY.mjs.map → chunk-ZISMEVKD.mjs.map} +2 -2
  73. package/dist/lib/neutral/index.mjs +38 -28
  74. package/dist/lib/neutral/internal/index.mjs +15 -9
  75. package/dist/lib/neutral/meta.json +1 -1
  76. package/dist/lib/neutral/testing/index.mjs +185 -129
  77. package/dist/lib/neutral/testing/index.mjs.map +3 -3
  78. package/dist/types/src/Annotation.d.ts +1 -1
  79. package/dist/types/src/Annotation.d.ts.map +1 -1
  80. package/dist/types/src/Collection.d.ts.map +1 -1
  81. package/dist/types/src/Database.d.ts +14 -2
  82. package/dist/types/src/Database.d.ts.map +1 -1
  83. package/dist/types/src/Dataset.d.ts +2 -1
  84. package/dist/types/src/Dataset.d.ts.map +1 -1
  85. package/dist/types/src/Entity.d.ts +17 -11
  86. package/dist/types/src/Entity.d.ts.map +1 -1
  87. package/dist/types/src/Err.d.ts +18 -18
  88. package/dist/types/src/Err.d.ts.map +1 -1
  89. package/dist/types/src/Extension.d.ts +80 -0
  90. package/dist/types/src/Extension.d.ts.map +1 -0
  91. package/dist/types/src/Extension.test.d.ts +2 -0
  92. package/dist/types/src/Extension.test.d.ts.map +1 -0
  93. package/dist/types/src/Feed.d.ts +62 -21
  94. package/dist/types/src/Feed.d.ts.map +1 -1
  95. package/dist/types/src/Filter.d.ts +54 -4
  96. package/dist/types/src/Filter.d.ts.map +1 -1
  97. package/dist/types/src/Filter.test.d.ts +2 -0
  98. package/dist/types/src/Filter.test.d.ts.map +1 -0
  99. package/dist/types/src/Hypergraph.d.ts +3 -3
  100. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  101. package/dist/types/src/Json.d.ts +33 -0
  102. package/dist/types/src/Json.d.ts.map +1 -0
  103. package/dist/types/src/Json.test.d.ts +2 -0
  104. package/dist/types/src/Json.test.d.ts.map +1 -0
  105. package/dist/types/src/JsonSchema.d.ts +1 -1
  106. package/dist/types/src/Migration.d.ts +69 -0
  107. package/dist/types/src/Migration.d.ts.map +1 -0
  108. package/dist/types/src/Obj.d.ts +42 -28
  109. package/dist/types/src/Obj.d.ts.map +1 -1
  110. package/dist/types/src/Order.d.ts.map +1 -1
  111. package/dist/types/src/Query.d.ts +13 -2
  112. package/dist/types/src/Query.d.ts.map +1 -1
  113. package/dist/types/src/Ref.d.ts +1 -0
  114. package/dist/types/src/Ref.d.ts.map +1 -1
  115. package/dist/types/src/Relation.d.ts +17 -18
  116. package/dist/types/src/Relation.d.ts.map +1 -1
  117. package/dist/types/src/Tag.d.ts +2 -2
  118. package/dist/types/src/Tag.d.ts.map +1 -1
  119. package/dist/types/src/Type.d.ts +3 -3
  120. package/dist/types/src/Type.d.ts.map +1 -1
  121. package/dist/types/src/View.d.ts +1 -1
  122. package/dist/types/src/View.d.ts.map +1 -1
  123. package/dist/types/src/exemplars.test.d.ts +2 -0
  124. package/dist/types/src/exemplars.test.d.ts.map +1 -0
  125. package/dist/types/src/index.d.ts +3 -0
  126. package/dist/types/src/index.d.ts.map +1 -1
  127. package/dist/types/src/internal/Annotation/annotations.d.ts +12 -2
  128. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -1
  129. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -1
  130. package/dist/types/src/internal/Annotation/util.d.ts +1 -1
  131. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -1
  132. package/dist/types/src/internal/Entity/api.d.ts.map +1 -1
  133. package/dist/types/src/internal/Entity/model.d.ts +2 -0
  134. package/dist/types/src/internal/Entity/model.d.ts.map +1 -1
  135. package/dist/types/src/internal/Entity/object.d.ts.map +1 -1
  136. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -1
  137. package/dist/types/src/internal/Entity/version.d.ts.map +1 -1
  138. package/dist/types/src/internal/Format/date.d.ts.map +1 -1
  139. package/dist/types/src/internal/Format/format.d.ts.map +1 -1
  140. package/dist/types/src/internal/Format/number.d.ts.map +1 -1
  141. package/dist/types/src/internal/Format/object.d.ts.map +1 -1
  142. package/dist/types/src/internal/Format/types.d.ts.map +1 -1
  143. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -1
  144. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +28 -28
  145. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -1
  146. package/dist/types/src/internal/JsonSchema/json-schema.d.ts +1 -1
  147. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -1
  148. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -1
  149. package/dist/types/src/internal/Obj/common.d.ts.map +1 -1
  150. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -1
  151. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -1
  152. package/dist/types/src/internal/Obj/ids.d.ts +1 -1
  153. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -1
  154. package/dist/types/src/internal/Obj/json-serializer.d.ts +4 -3
  155. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -1
  156. package/dist/types/src/internal/Obj/set-value.d.ts +1 -1
  157. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -1
  158. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -1
  159. package/dist/types/src/internal/Query.d.ts +10 -0
  160. package/dist/types/src/internal/Query.d.ts.map +1 -0
  161. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -1
  162. package/dist/types/src/internal/Ref/ref.d.ts +14 -1
  163. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -1
  164. package/dist/types/src/internal/Type/compose.d.ts.map +1 -1
  165. package/dist/types/src/internal/Type/echo-schema.d.ts +2 -2
  166. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -1
  167. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -1
  168. package/dist/types/src/internal/common/api/meta.d.ts +3 -3
  169. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -1
  170. package/dist/types/src/internal/common/proxy/change-context.d.ts +1 -1
  171. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -1
  172. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -1
  173. package/dist/types/src/internal/common/proxy/errors.d.ts +1 -1
  174. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -1
  175. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -1
  176. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -1
  177. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -1
  178. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -1
  179. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -1
  180. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +1 -1
  181. package/dist/types/src/internal/common/proxy/reactive.d.ts +1 -1
  182. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -1
  183. package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
  184. package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
  185. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -1
  186. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -1
  187. package/dist/types/src/internal/common/types/base.d.ts.map +1 -1
  188. package/dist/types/src/internal/common/types/entity.d.ts +4 -4
  189. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -1
  190. package/dist/types/src/internal/common/types/meta.d.ts +10 -0
  191. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -1
  192. package/dist/types/src/internal/common/types/version.d.ts +1 -1
  193. package/dist/types/src/internal/index.d.ts +1 -0
  194. package/dist/types/src/internal/index.d.ts.map +1 -1
  195. package/dist/types/src/testing/test-data.d.ts +8 -8
  196. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  197. package/dist/types/src/testing/test-schema.d.ts +53 -53
  198. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  199. package/dist/types/src/testing/util.d.ts.map +1 -1
  200. package/dist/types/tsconfig.tsbuildinfo +1 -1
  201. package/package.json +25 -15
  202. package/src/Annotation.ts +1 -0
  203. package/src/Collection.ts +2 -2
  204. package/src/Database.ts +50 -15
  205. package/src/Entity.ts +18 -12
  206. package/src/Extension.test.ts +235 -0
  207. package/src/Extension.ts +122 -0
  208. package/src/Feed.ts +107 -34
  209. package/src/Filter.test.ts +90 -0
  210. package/src/Filter.ts +97 -3
  211. package/src/Hypergraph.ts +3 -3
  212. package/src/Json.test.ts +175 -0
  213. package/src/Json.ts +102 -0
  214. package/src/Migration.ts +106 -0
  215. package/src/Obj.test.ts +105 -13
  216. package/src/Obj.ts +154 -33
  217. package/src/Query.test.ts +199 -9
  218. package/src/Query.ts +58 -8
  219. package/src/Ref.ts +2 -0
  220. package/src/Relation.ts +24 -20
  221. package/src/Type.ts +1 -1
  222. package/src/View.ts +1 -1
  223. package/src/exemplars.test.ts +21 -0
  224. package/src/index.ts +4 -0
  225. package/src/internal/Annotation/annotations.test.ts +51 -2
  226. package/src/internal/Annotation/annotations.ts +33 -14
  227. package/src/internal/Annotation/sorting.ts +0 -1
  228. package/src/internal/Entity/api.ts +0 -1
  229. package/src/internal/Entity/model.ts +2 -0
  230. package/src/internal/Entity/object.ts +0 -1
  231. package/src/internal/Entity/version.ts +0 -1
  232. package/src/internal/Format/date.test.ts +0 -1
  233. package/src/internal/Format/format.test.ts +0 -1
  234. package/src/internal/JsonSchema/json-schema-type.ts +1 -1
  235. package/src/internal/JsonSchema/json-schema.test.ts +1 -2
  236. package/src/internal/JsonSchema/json-schema.ts +1 -2
  237. package/src/internal/Obj/clone.ts +1 -1
  238. package/src/internal/Obj/create-object.test.ts +2 -4
  239. package/src/internal/Obj/create-object.ts +2 -3
  240. package/src/internal/Obj/deleted.ts +1 -1
  241. package/src/internal/Obj/ids.ts +1 -1
  242. package/src/internal/Obj/json-serializer.test.ts +49 -5
  243. package/src/internal/Obj/json-serializer.ts +47 -25
  244. package/src/internal/Obj/set-value.test.ts +24 -24
  245. package/src/internal/Obj/set-value.ts +1 -1
  246. package/src/internal/Query.ts +156 -0
  247. package/src/internal/Ref/ref-array.ts +0 -1
  248. package/src/internal/Ref/ref.test.ts +0 -1
  249. package/src/internal/Ref/ref.ts +18 -1
  250. package/src/internal/Type/compose.test.ts +0 -1
  251. package/src/internal/Type/echo-schema.ts +3 -4
  252. package/src/internal/common/README.md +1 -1
  253. package/src/internal/common/api/meta.ts +3 -3
  254. package/src/internal/common/proxy/change-context.ts +1 -1
  255. package/src/internal/common/proxy/change.test.ts +94 -94
  256. package/src/internal/common/proxy/errors.ts +2 -2
  257. package/src/internal/common/proxy/handler.test.ts +0 -2
  258. package/src/internal/common/proxy/json-serializer.ts +4 -1
  259. package/src/internal/common/proxy/make-object.ts +0 -1
  260. package/src/internal/common/proxy/ownership.ts +0 -1
  261. package/src/internal/common/proxy/reactive-array.ts +1 -1
  262. package/src/internal/common/proxy/reactive.test.ts +54 -0
  263. package/src/internal/common/proxy/reactive.ts +11 -3
  264. package/src/internal/common/proxy/typed-handler.test.ts +0 -1
  265. package/src/internal/common/proxy/typed-handler.ts +8 -10
  266. package/src/internal/common/proxy/typed-object.test.ts +2 -3
  267. package/src/internal/common/types/entity.ts +1 -1
  268. package/src/internal/common/types/meta.ts +12 -1
  269. package/src/internal/index.ts +1 -0
  270. package/src/testing/api.test.ts +0 -1
  271. package/src/testing/test-data.ts +157 -98
  272. package/dist/lib/neutral/chunk-43Y5DOS6.mjs.map +0 -7
  273. package/dist/lib/neutral/chunk-4JRI2ZJI.mjs.map +0 -7
  274. package/dist/lib/neutral/chunk-6DNYDXCV.mjs.map +0 -7
  275. package/dist/lib/neutral/chunk-6GPU7XC3.mjs.map +0 -7
  276. package/dist/lib/neutral/chunk-7VNVH63N.mjs.map +0 -7
  277. package/dist/lib/neutral/chunk-BOZZPUXE.mjs.map +0 -7
  278. package/dist/lib/neutral/chunk-C4JZK4J7.mjs.map +0 -7
  279. package/dist/lib/neutral/chunk-NEGC54NE.mjs.map +0 -7
  280. package/dist/lib/neutral/chunk-NXMFBIT5.mjs.map +0 -7
  281. package/dist/lib/neutral/chunk-OENWMTE6.mjs.map +0 -7
  282. package/dist/lib/neutral/chunk-ROAGDPV7.mjs.map +0 -7
  283. package/dist/lib/neutral/chunk-SEMVAGBM.mjs.map +0 -7
  284. package/dist/lib/neutral/chunk-W47JKR3X.mjs.map +0 -7
  285. /package/dist/lib/neutral/{chunk-FZO7LQO7.mjs.map → chunk-44HT3MEC.mjs.map} +0 -0
  286. /package/dist/lib/neutral/{chunk-ANHVGJI4.mjs.map → chunk-7RVZT53K.mjs.map} +0 -0
  287. /package/dist/lib/neutral/{chunk-BNCCGLJN.mjs.map → chunk-BICZKPQG.mjs.map} +0 -0
  288. /package/dist/lib/neutral/{chunk-6K2MVI2O.mjs.map → chunk-BUBEC474.mjs.map} +0 -0
  289. /package/dist/lib/neutral/{chunk-UTBRYVQC.mjs.map → chunk-QRZ2I3ZM.mjs.map} +0 -0
  290. /package/dist/lib/neutral/{chunk-B5OXLWZL.mjs.map → chunk-TRPZU2HV.mjs.map} +0 -0
  291. /package/dist/lib/neutral/{chunk-UI6MWK5W.mjs.map → chunk-TTCSATUD.mjs.map} +0 -0
  292. /package/dist/lib/neutral/{chunk-OMUPQMLR.mjs.map → chunk-V72DY6LU.mjs.map} +0 -0
@@ -3,12 +3,12 @@ import {
3
3
  JsonSchemaType,
4
4
  toEffectSchema,
5
5
  toJsonSchema
6
- } from "./chunk-BOZZPUXE.mjs";
6
+ } from "./chunk-MLS7U7AT.mjs";
7
7
  import {
8
8
  Ref,
9
9
  refFromEncodedReference,
10
10
  setRefResolver
11
- } from "./chunk-43Y5DOS6.mjs";
11
+ } from "./chunk-BMB7IHGB.mjs";
12
12
  import {
13
13
  ATTR_PARENT,
14
14
  ATTR_TYPE,
@@ -33,14 +33,14 @@ import {
33
33
  getTypename,
34
34
  setSchema,
35
35
  setTypename
36
- } from "./chunk-SEMVAGBM.mjs";
36
+ } from "./chunk-TNBK56IN.mjs";
37
37
  import {
38
38
  EntityKind,
39
39
  KindId,
40
40
  SchemaKindId,
41
41
  SnapshotKindId,
42
42
  makeTypeJsonSchemaAnnotation
43
- } from "./chunk-WYOKA6AE.mjs";
43
+ } from "./chunk-N4B7FHQT.mjs";
44
44
 
45
45
  // src/internal/index.ts
46
46
  import { JsonPath, JsonProp, getValue, splitJsonPath } from "@dxos/effect";
@@ -72,19 +72,21 @@ var ObjectMetaSchema = Schema2.Struct({
72
72
  // TODO(dmaretskyi): Has to be optional for compatibility with old data.
73
73
  // Defaulting to an empty array is possible but requires a bit more work.
74
74
  // TODO(dmaretskyi): In automerge this should be a map of { [tag]: boolean } for uniqueness and conflict resolution.
75
- tags: Schema2.optional(Schema2.Array(Schema2.String))
75
+ tags: Schema2.optional(Schema2.Array(Schema2.String)),
76
+ /**
77
+ * Fully-qualified registry key for the object (FQN format, e.g. `org.example.type.foo`).
78
+ * Identifies the canonical registry entry the object instance was created from.
79
+ */
80
+ key: Schema2.optional(Schema2.String),
81
+ /**
82
+ * Semantic version of the registry entry the object was created from.
83
+ * Must be a valid semver string (e.g. `1.2.3`).
84
+ */
85
+ version: Schema2.optional(Schema2.String)
76
86
  });
77
87
  var getMeta = (obj) => {
78
88
  const metadata = obj[MetaId];
79
- invariant(metadata, "ObjectMeta not found.", {
80
- F: __dxlog_file,
81
- L: 55,
82
- S: void 0,
83
- A: [
84
- "metadata",
85
- "'ObjectMeta not found.'"
86
- ]
87
- });
89
+ invariant(metadata, "ObjectMeta not found.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 45, S: void 0, A: ["metadata", "'ObjectMeta not found.'"] });
88
90
  return metadata;
89
91
  };
90
92
  var foreignKey = (source, id) => ({
@@ -141,29 +143,13 @@ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/common/
141
143
  function getMetaChecked(entity) {
142
144
  assertArgument(entity, "entity", "Should be an entity.");
143
145
  const meta = getMeta(entity);
144
- invariant2(meta != null, "Invalid entity.", {
145
- F: __dxlog_file2,
146
- L: 34,
147
- S: this,
148
- A: [
149
- "meta != null",
150
- "'Invalid entity.'"
151
- ]
152
- });
146
+ invariant2(meta != null, "Invalid entity.", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 9, S: this, A: ["meta != null", "'Invalid entity.'"] });
153
147
  return meta;
154
148
  }
155
149
  var getKeys = (entity, source) => {
156
150
  assertArgument(entity, "entity", "Should be an entity.");
157
151
  const meta = getMetaChecked(entity);
158
- invariant2(meta != null, "Invalid entity.", {
159
- F: __dxlog_file2,
160
- L: 45,
161
- S: void 0,
162
- A: [
163
- "meta != null",
164
- "'Invalid entity.'"
165
- ]
166
- });
152
+ invariant2(meta != null, "Invalid entity.", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 18, S: void 0, A: ["meta != null", "'Invalid entity.'"] });
167
153
  return meta.keys.filter((key) => key.source === source);
168
154
  };
169
155
  var deleteKeys = (entity, source) => {
@@ -282,7 +268,7 @@ var defineHiddenProperty = (object, key, value2) => {
282
268
  // src/internal/common/proxy/errors.ts
283
269
  var MutationOutsideChangeContextError = class extends Error {
284
270
  constructor(operation, suggestion) {
285
- super(`Cannot ${operation} outside of Obj.change(). Use Obj.change(obj, (mutableObj) => { ${suggestion} }) instead.`);
271
+ super(`Cannot ${operation} outside of Obj.update(). Use Obj.update(obj, (mutableObj) => { ${suggestion} }) instead.`);
286
272
  this.name = "MutationOutsideChangeContextError";
287
273
  }
288
274
  };
@@ -299,7 +285,7 @@ var createArrayMethodError = (method) => {
299
285
  // src/internal/common/proxy/json-serializer.ts
300
286
  import { invariant as invariant3 } from "@dxos/invariant";
301
287
  import { DXN } from "@dxos/keys";
302
- import { deepMapValues } from "@dxos/util";
288
+ import { deepMapValues, encodeUint8ArrayToJson } from "@dxos/util";
303
289
  var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/common/proxy/json-serializer.ts";
304
290
  var attachTypedJsonSerializer = (obj) => {
305
291
  const descriptor = Object.getOwnPropertyDescriptor(obj, "toJSON");
@@ -330,28 +316,12 @@ var typedJsonSerializer = function() {
330
316
  }
331
317
  if (this[RelationSourceDXNId]) {
332
318
  const sourceDXN = this[RelationSourceDXNId];
333
- invariant3(sourceDXN instanceof DXN, void 0, {
334
- F: __dxlog_file3,
335
- L: 64,
336
- S: this,
337
- A: [
338
- "sourceDXN instanceof DXN",
339
- ""
340
- ]
341
- });
319
+ invariant3(sourceDXN instanceof DXN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 42, S: this, A: ["sourceDXN instanceof DXN", ""] });
342
320
  result[ATTR_RELATION_SOURCE] = sourceDXN.toString();
343
321
  }
344
322
  if (this[RelationTargetDXNId]) {
345
323
  const targetDXN = this[RelationTargetDXNId];
346
- invariant3(targetDXN instanceof DXN, void 0, {
347
- F: __dxlog_file3,
348
- L: 69,
349
- S: this,
350
- A: [
351
- "targetDXN instanceof DXN",
352
- ""
353
- ]
354
- });
324
+ invariant3(targetDXN instanceof DXN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 47, S: this, A: ["targetDXN instanceof DXN", ""] });
355
325
  result[ATTR_RELATION_TARGET] = targetDXN.toString();
356
326
  }
357
327
  Object.assign(result, serializeData(rest));
@@ -362,6 +332,9 @@ var serializeData = (data) => {
362
332
  if (Ref.isRef(value2)) {
363
333
  return value2.noInline().encode();
364
334
  }
335
+ if (value2 instanceof Uint8Array) {
336
+ return encodeUint8ArrayToJson(value2);
337
+ }
365
338
  return recurse(value2);
366
339
  });
367
340
  };
@@ -388,15 +361,7 @@ var isValidProxyTarget = (value2) => {
388
361
  };
389
362
  var getProxySlot = (proxy) => {
390
363
  const value2 = proxy[symbolIsProxy];
391
- invariant4(value2 instanceof ProxyHandlerSlot, void 0, {
392
- F: __dxlog_file4,
393
- L: 32,
394
- S: void 0,
395
- A: [
396
- "value instanceof ProxyHandlerSlot",
397
- ""
398
- ]
399
- });
364
+ invariant4(value2 instanceof ProxyHandlerSlot, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 22, S: void 0, A: ["value instanceof ProxyHandlerSlot", ""] });
400
365
  return value2;
401
366
  };
402
367
  var getProxyTarget = (proxy) => {
@@ -430,15 +395,7 @@ var ProxyHandlerSlot = class {
430
395
  this._handler = _handler;
431
396
  }
432
397
  get handler() {
433
- invariant4(this._handler, void 0, {
434
- F: __dxlog_file4,
435
- L: 91,
436
- S: this,
437
- A: [
438
- "this._handler",
439
- ""
440
- ]
441
- });
398
+ invariant4(this._handler, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 71, S: this, A: ["this._handler", ""] });
442
399
  return this._handler;
443
400
  }
444
401
  // TODO(burdon): Requires comment.
@@ -528,15 +485,7 @@ var setOwnerRecursive = (value2, owner, options = {}) => {
528
485
  }
529
486
  if (!isRootEchoObject) {
530
487
  const ownershipAllowed = existingOwner == null || existingOwner === owner || existingOwner === newAllowedPreviousOwner;
531
- invariant5(ownershipAllowed, "Cannot reassign ownership of a nested record to a different ECHO object. Use deep copy first.", {
532
- F: __dxlog_file5,
533
- L: 102,
534
- S: void 0,
535
- A: [
536
- "ownershipAllowed",
537
- "'Cannot reassign ownership of a nested record to a different ECHO object. Use deep copy first.'"
538
- ]
539
- });
488
+ invariant5(ownershipAllowed, "Cannot reassign ownership of a nested record to a different ECHO object. Use deep copy first.", { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 76, S: void 0, A: ["ownershipAllowed", "'Cannot reassign ownership of a nested record to a different ECHO object. Use deep copy first.'"] });
540
489
  }
541
490
  defineHiddenProperty(actualValue, EchoOwner, owner);
542
491
  const recursiveOptions = {
@@ -603,15 +552,7 @@ var hasForeignOwner = (value2, target) => traverseObjectGraph(value2, (v) => {
603
552
  });
604
553
  var MAX_OWNER_DEPTH = 100;
605
554
  var getEchoRoot = (target, depth = 0) => {
606
- invariant5(depth < MAX_OWNER_DEPTH, "Owner chain too deep - possible circular ownership", {
607
- F: __dxlog_file5,
608
- L: 221,
609
- S: void 0,
610
- A: [
611
- "depth < MAX_OWNER_DEPTH",
612
- "'Owner chain too deep - possible circular ownership'"
613
- ]
614
- });
555
+ invariant5(depth < MAX_OWNER_DEPTH, "Owner chain too deep - possible circular ownership", { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 169, S: void 0, A: ["depth < MAX_OWNER_DEPTH", "'Owner chain too deep - possible circular ownership'"] });
615
556
  if (KindId in target) {
616
557
  return target;
617
558
  }
@@ -733,12 +674,7 @@ var SchemaValidator = class {
733
674
  log.warn("unknown property", {
734
675
  path: propertyPath,
735
676
  property: propertyName
736
- }, {
737
- F: __dxlog_file6,
738
- L: 71,
739
- S: this,
740
- C: (f, a) => f(...a)
741
- });
677
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 60, S: this });
742
678
  continue;
743
679
  }
744
680
  schema = Schema3.make(propertyType).annotations(propertyType.annotations);
@@ -748,15 +684,7 @@ var SchemaValidator = class {
748
684
  }
749
685
  static getTargetPropertySchema(target, prop) {
750
686
  const schema = target[SchemaId];
751
- invariant6(schema, "target has no schema", {
752
- F: __dxlog_file6,
753
- L: 84,
754
- S: this,
755
- A: [
756
- "schema",
757
- "'target has no schema'"
758
- ]
759
- });
687
+ invariant6(schema, "target has no schema", { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 73, S: this, A: ["schema", "'target has no schema'"] });
760
688
  const arrayAst = unwrapArray(schema.ast);
761
689
  if (arrayAst != null) {
762
690
  return getArrayElementSchema(arrayAst, prop);
@@ -765,30 +693,14 @@ var SchemaValidator = class {
765
693
  if (propertyType == null) {
766
694
  return Schema3.Any;
767
695
  }
768
- invariant6(propertyType, `invalid property: ${prop.toString()}`, {
769
- F: __dxlog_file6,
770
- L: 95,
771
- S: this,
772
- A: [
773
- "propertyType",
774
- "`invalid property: ${prop.toString()}`"
775
- ]
776
- });
696
+ invariant6(propertyType, `invalid property: ${prop.toString()}`, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 82, S: this, A: ["propertyType", "`invalid property: ${prop.toString()}`"] });
777
697
  return Schema3.make(propertyType);
778
698
  }
779
699
  };
780
700
  var getArrayElementSchema = (tupleAst, property) => {
781
701
  const elementIndex = typeof property === "string" ? parseInt(property, 10) : Number.NaN;
782
702
  if (Number.isNaN(elementIndex)) {
783
- invariant6(property === "length", `invalid array property: ${String(property)}`, {
784
- F: __dxlog_file6,
785
- L: 111,
786
- S: void 0,
787
- A: [
788
- "property === 'length'",
789
- "`invalid array property: ${String(property)}`"
790
- ]
791
- });
703
+ invariant6(property === "length", `invalid array property: ${String(property)}`, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 93, S: void 0, A: ["property === 'length'", "`invalid array property: ${String(property)}`"] });
792
704
  return Schema3.Number;
793
705
  }
794
706
  if (elementIndex < tupleAst.elements.length) {
@@ -813,15 +725,7 @@ var getProperties = (typeAst, getTargetPropertyFn) => {
813
725
  const typeDiscriminators = getTypeDiscriminators(typeAstList);
814
726
  const targetPropertyValue = getTargetPropertyFn(String(typeDiscriminators[0].name));
815
727
  const typeIndex = typeDiscriminators.findIndex((p) => targetPropertyValue === p.type.literal);
816
- invariant6(typeIndex !== -1, "discriminator field not set on target", {
817
- F: __dxlog_file6,
818
- L: 142,
819
- S: void 0,
820
- A: [
821
- "typeIndex !== -1",
822
- "'discriminator field not set on target'"
823
- ]
824
- });
728
+ invariant6(typeIndex !== -1, "discriminator field not set on target", { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 118, S: void 0, A: ["typeIndex !== -1", "'discriminator field not set on target'"] });
825
729
  return SchemaAST2.getPropertySignatures(typeAstList[typeIndex]);
826
730
  };
827
731
  var getPropertyType = (ast, propertyName, getTargetPropertyFn) => {
@@ -851,15 +755,7 @@ var getTypeDiscriminators = (typeAstList) => {
851
755
  const isValidDiscriminator = discriminatorPropCandidates.every((p) => p.name === propertyName && !p.isOptional);
852
756
  const everyTypeHasDiscriminator = discriminatorPropCandidates.length === typeAstList.length;
853
757
  const isDiscriminatedUnion = isValidDiscriminator && everyTypeHasDiscriminator;
854
- invariant6(isDiscriminatedUnion, "type ambiguity: every type in a union must have a single unique-literal field", {
855
- F: __dxlog_file6,
856
- L: 193,
857
- S: void 0,
858
- A: [
859
- "isDiscriminatedUnion",
860
- "'type ambiguity: every type in a union must have a single unique-literal field'"
861
- ]
862
- });
758
+ invariant6(isDiscriminatedUnion, "type ambiguity: every type in a union must have a single unique-literal field", { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 148, S: void 0, A: ["isDiscriminatedUnion", "'type ambiguity: every type in a union must have a single unique-literal field'"] });
863
759
  return discriminatorPropCandidates;
864
760
  };
865
761
  var unwrapAst = (rootAst, predicate) => {
@@ -885,15 +781,7 @@ var unwrapAst = (rootAst, predicate) => {
885
781
  };
886
782
  var unwrapArray = (ast) => unwrapAst(ast, SchemaAST2.isTupleType);
887
783
  var checkIdNotPresentOnSchema = (schema) => {
888
- invariant6(SchemaAST2.isTypeLiteral(schema.ast), void 0, {
889
- F: __dxlog_file6,
890
- L: 236,
891
- S: void 0,
892
- A: [
893
- "SchemaAST.isTypeLiteral(schema.ast)",
894
- ""
895
- ]
896
- });
784
+ invariant6(SchemaAST2.isTypeLiteral(schema.ast), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 184, S: void 0, A: ["SchemaAST.isTypeLiteral(schema.ast)", ""] });
897
785
  const idProperty = SchemaAST2.getPropertySignatures(schema.ast).find((prop) => prop.name === "id");
898
786
  if (idProperty != null) {
899
787
  throw new Error('"id" property name is reserved');
@@ -954,24 +842,8 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
954
842
  constructor() {
955
843
  }
956
844
  init(target) {
957
- invariant7(typeof target === "object" && target !== null, void 0, {
958
- F: __dxlog_file7,
959
- L: 147,
960
- S: this,
961
- A: [
962
- "typeof target === 'object' && target !== null",
963
- ""
964
- ]
965
- });
966
- invariant7(SchemaId in target, "Schema is not defined for the target", {
967
- F: __dxlog_file7,
968
- L: 148,
969
- S: this,
970
- A: [
971
- "SchemaId in target",
972
- "'Schema is not defined for the target'"
973
- ]
974
- });
845
+ invariant7(typeof target === "object" && target !== null, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file7, L: 99, S: this, A: ["typeof target === 'object' && target !== null", ""] });
846
+ invariant7(SchemaId in target, "Schema is not defined for the target", { "~LogMeta": "~LogMeta", F: __dxlog_file7, L: 100, S: this, A: ["SchemaId in target", "'Schema is not defined for the target'"] });
975
847
  const hasOwner = !!getOwner(target);
976
848
  if (!(EventId in target) && !hasOwner) {
977
849
  defineHiddenProperty(target, EventId, new Event());
@@ -1028,7 +900,7 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
1028
900
  const isInitialized = ChangeId in echoRoot || EventId in echoRoot;
1029
901
  const isSymbolProp = typeof prop === "symbol";
1030
902
  if (isInitialized && !isSymbolProp && !isInChangeContext(echoRoot)) {
1031
- throw new Error(`Cannot modify object property "${String(prop)}" outside of Obj.change(). Use Obj.change(obj, (mutableObj) => { mutableObj.property = value; }) instead.`);
903
+ throw new Error(`Cannot modify object property "${String(prop)}" outside of Obj.update(). Use Obj.update(obj, (mutableObj) => { mutableObj.property = value; }) instead.`);
1032
904
  }
1033
905
  let result = false;
1034
906
  this._inSet = true;
@@ -1067,7 +939,7 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
1067
939
  const isInitialized = ChangeId in echoRoot || EventId in echoRoot;
1068
940
  const isSymbolProp = typeof property === "symbol";
1069
941
  if (isInitialized && !isSymbolProp && !isInChangeContext(echoRoot)) {
1070
- throw new Error(`Cannot modify object property "${String(property)}" outside of Obj.change(). Use Obj.change(obj, (mutableObj) => { mutableObj.property = value; }) instead.`);
942
+ throw new Error(`Cannot modify object property "${String(property)}" outside of Obj.update(). Use Obj.update(obj, (mutableObj) => { mutableObj.property = value; }) instead.`);
1071
943
  }
1072
944
  const { echoRoot: _, preparedValue } = this._prepareValueForAssignment(target, property, attributes.value);
1073
945
  const result = Reflect.defineProperty(target, property, {
@@ -1240,6 +1112,10 @@ var initMeta = (obj, meta = {
1240
1112
 
1241
1113
  // src/internal/common/proxy/reactive.ts
1242
1114
  var subscribe = (obj, callback) => {
1115
+ if (!isProxy(obj)) {
1116
+ return () => {
1117
+ };
1118
+ }
1243
1119
  const target = getProxyTarget(obj);
1244
1120
  if (target && EventId in target) {
1245
1121
  return target[EventId].on(callback);
@@ -1266,80 +1142,16 @@ import { DXN as DXN2, ObjectId as ObjectId2 } from "@dxos/keys";
1266
1142
  import { assumeType } from "@dxos/util";
1267
1143
  var __dxlog_file8 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/model.ts";
1268
1144
  function assertObjectModel(obj) {
1269
- invariant8(typeof obj === "object" && obj !== null, "Invalid object model: not an object", {
1270
- F: __dxlog_file8,
1271
- L: 94,
1272
- S: this,
1273
- A: [
1274
- "typeof obj === 'object' && obj !== null",
1275
- "'Invalid object model: not an object'"
1276
- ]
1277
- });
1145
+ invariant8(typeof obj === "object" && obj !== null, "Invalid object model: not an object", { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 12, S: this, A: ["typeof obj === 'object' && obj !== null", "'Invalid object model: not an object'"] });
1278
1146
  assumeType(obj);
1279
- invariant8(ObjectId2.isValid(obj.id), "Invalid object model: invalid id", {
1280
- F: __dxlog_file8,
1281
- L: 96,
1282
- S: this,
1283
- A: [
1284
- "ObjectId.isValid(obj.id)",
1285
- "'Invalid object model: invalid id'"
1286
- ]
1287
- });
1288
- invariant8(obj[TypeId] === void 0 || obj[TypeId] instanceof DXN2, "Invalid object model: invalid type", {
1289
- F: __dxlog_file8,
1290
- L: 97,
1291
- S: this,
1292
- A: [
1293
- "obj[TypeId] === undefined || obj[TypeId] instanceof DXN",
1294
- "'Invalid object model: invalid type'"
1295
- ]
1296
- });
1297
- invariant8(obj[KindId] === EntityKind.Object || obj[KindId] === EntityKind.Relation, "Invalid object model: invalid entity kind", {
1298
- F: __dxlog_file8,
1299
- L: 98,
1300
- S: this,
1301
- A: [
1302
- "obj[KindId] === EntityKind.Object || obj[KindId] === EntityKind.Relation",
1303
- "'Invalid object model: invalid entity kind'"
1304
- ]
1305
- });
1147
+ invariant8(ObjectId2.isValid(obj.id), "Invalid object model: invalid id", { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 14, S: this, A: ["ObjectId.isValid(obj.id)", "'Invalid object model: invalid id'"] });
1148
+ invariant8(obj[TypeId] === void 0 || obj[TypeId] instanceof DXN2, "Invalid object model: invalid type", { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 15, S: this, A: ["obj[TypeId] === undefined || obj[TypeId] instanceof DXN", "'Invalid object model: invalid type'"] });
1149
+ invariant8(obj[KindId] === EntityKind.Object || obj[KindId] === EntityKind.Relation, "Invalid object model: invalid entity kind", { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 16, S: this, A: ["obj[KindId] === EntityKind.Object || obj[KindId] === EntityKind.Relation", "'Invalid object model: invalid entity kind'"] });
1306
1150
  if (obj[KindId] === EntityKind.Relation) {
1307
- invariant8(obj[RelationSourceDXNId] instanceof DXN2, "Invalid object model: invalid relation source", {
1308
- F: __dxlog_file8,
1309
- L: 104,
1310
- S: this,
1311
- A: [
1312
- "obj[RelationSourceDXNId] instanceof DXN",
1313
- "'Invalid object model: invalid relation source'"
1314
- ]
1315
- });
1316
- invariant8(obj[RelationTargetDXNId] instanceof DXN2, "Invalid object model: invalid relation target", {
1317
- F: __dxlog_file8,
1318
- L: 105,
1319
- S: this,
1320
- A: [
1321
- "obj[RelationTargetDXNId] instanceof DXN",
1322
- "'Invalid object model: invalid relation target'"
1323
- ]
1324
- });
1325
- invariant8(!(obj[RelationSourceId] instanceof DXN2), "Invalid object model: source pointer is a DXN", {
1326
- F: __dxlog_file8,
1327
- L: 106,
1328
- S: this,
1329
- A: [
1330
- "!(obj[RelationSourceId] instanceof DXN)",
1331
- "'Invalid object model: source pointer is a DXN'"
1332
- ]
1333
- });
1334
- invariant8(!(obj[RelationTargetId] instanceof DXN2), "Invalid object model: target pointer is a DXN", {
1335
- F: __dxlog_file8,
1336
- L: 107,
1337
- S: this,
1338
- A: [
1339
- "!(obj[RelationTargetId] instanceof DXN)",
1340
- "'Invalid object model: target pointer is a DXN'"
1341
- ]
1342
- });
1151
+ invariant8(obj[RelationSourceDXNId] instanceof DXN2, "Invalid object model: invalid relation source", { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 18, S: this, A: ["obj[RelationSourceDXNId] instanceof DXN", "'Invalid object model: invalid relation source'"] });
1152
+ invariant8(obj[RelationTargetDXNId] instanceof DXN2, "Invalid object model: invalid relation target", { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 19, S: this, A: ["obj[RelationTargetDXNId] instanceof DXN", "'Invalid object model: invalid relation target'"] });
1153
+ invariant8(!(obj[RelationSourceId] instanceof DXN2), "Invalid object model: source pointer is a DXN", { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 20, S: this, A: ["!(obj[RelationSourceId] instanceof DXN)", "'Invalid object model: source pointer is a DXN'"] });
1154
+ invariant8(!(obj[RelationTargetId] instanceof DXN2), "Invalid object model: target pointer is a DXN", { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 21, S: this, A: ["!(obj[RelationTargetId] instanceof DXN)", "'Invalid object model: target pointer is a DXN'"] });
1343
1155
  }
1344
1156
  }
1345
1157
 
@@ -1350,27 +1162,11 @@ import { DXN as DXN3, ObjectId as ObjectId3 } from "@dxos/keys";
1350
1162
  import { assumeType as assumeType2 } from "@dxos/util";
1351
1163
  var __dxlog_file9 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/util.ts";
1352
1164
  var getObjectDXN = (object) => {
1353
- invariant9(!Schema5.isSchema(object), "schema not allowed in this function", {
1354
- F: __dxlog_file9,
1355
- L: 19,
1356
- S: void 0,
1357
- A: [
1358
- "!Schema.isSchema(object)",
1359
- "'schema not allowed in this function'"
1360
- ]
1361
- });
1165
+ invariant9(!Schema5.isSchema(object), "schema not allowed in this function", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 14, S: void 0, A: ["!Schema.isSchema(object)", "'schema not allowed in this function'"] });
1362
1166
  assertArgument2(typeof object === "object" && object != null, "object", "expected object");
1363
1167
  assumeType2(object);
1364
1168
  if (object[SelfDXNId]) {
1365
- invariant9(object[SelfDXNId] instanceof DXN3, "Invalid object model: invalid self dxn", {
1366
- F: __dxlog_file9,
1367
- L: 24,
1368
- S: void 0,
1369
- A: [
1370
- "object[SelfDXNId] instanceof DXN",
1371
- "'Invalid object model: invalid self dxn'"
1372
- ]
1373
- });
1169
+ invariant9(object[SelfDXNId] instanceof DXN3, "Invalid object model: invalid self dxn", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 18, S: void 0, A: ["object[SelfDXNId] instanceof DXN", "'Invalid object model: invalid self dxn'"] });
1374
1170
  return object[SelfDXNId];
1375
1171
  }
1376
1172
  if (!ObjectId3.isValid(object.id)) {
@@ -1383,15 +1179,7 @@ var getObjectDXN = (object) => {
1383
1179
  var __dxlog_file10 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/api.ts";
1384
1180
  var getDXN = (entity) => {
1385
1181
  const dxn = getObjectDXN(entity);
1386
- invariant10(dxn != null, "Invalid entity.", {
1387
- F: __dxlog_file10,
1388
- L: 20,
1389
- S: void 0,
1390
- A: [
1391
- "dxn != null",
1392
- "'Invalid entity.'"
1393
- ]
1394
- });
1182
+ invariant10(dxn != null, "Invalid entity.", { "~LogMeta": "~LogMeta", F: __dxlog_file10, L: 13, S: void 0, A: ["dxn != null", "'Invalid entity.'"] });
1395
1183
  return dxn;
1396
1184
  };
1397
1185
  var getDatabase = (entity) => {
@@ -1435,24 +1223,8 @@ import { invariant as invariant11 } from "@dxos/invariant";
1435
1223
  var __dxlog_file11 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/object.ts";
1436
1224
  var EchoObjectSchema = ({ typename, version: version2 }) => {
1437
1225
  return (self) => {
1438
- invariant11(typeof TypeAnnotationId === "symbol", "Sanity.", {
1439
- F: __dxlog_file11,
1440
- L: 37,
1441
- S: void 0,
1442
- A: [
1443
- "typeof TypeAnnotationId === 'symbol'",
1444
- "'Sanity.'"
1445
- ]
1446
- });
1447
- invariant11(SchemaAST4.isTypeLiteral(self.ast), "Schema must be a TypeLiteral.", {
1448
- F: __dxlog_file11,
1449
- L: 38,
1450
- S: void 0,
1451
- A: [
1452
- "SchemaAST.isTypeLiteral(self.ast)",
1453
- "'Schema must be a TypeLiteral.'"
1454
- ]
1455
- });
1226
+ invariant11(typeof TypeAnnotationId === "symbol", "Sanity.", { "~LogMeta": "~LogMeta", F: __dxlog_file11, L: 15, S: void 0, A: ["typeof TypeAnnotationId === 'symbol'", "'Sanity.'"] });
1227
+ invariant11(SchemaAST4.isTypeLiteral(self.ast), "Schema must be a TypeLiteral.", { "~LogMeta": "~LogMeta", F: __dxlog_file11, L: 16, S: void 0, A: ["SchemaAST.isTypeLiteral(self.ast)", "'Schema must be a TypeLiteral.'"] });
1456
1228
  const fields = self.fields ?? {};
1457
1229
  const schemaWithId = Schema7.extend(self, Schema7.Struct({
1458
1230
  id: Schema7.String
@@ -1495,15 +1267,7 @@ var EchoRelationSchema = ({ source, target, typename, version: version2 }) => {
1495
1267
  raise(new Error("Target schema must be an echo object schema."));
1496
1268
  }
1497
1269
  return (self) => {
1498
- invariant12(SchemaAST5.isTypeLiteral(self.ast), "Schema must be a TypeLiteral.", {
1499
- F: __dxlog_file12,
1500
- L: 110,
1501
- S: void 0,
1502
- A: [
1503
- "SchemaAST.isTypeLiteral(self.ast)",
1504
- "'Schema must be a TypeLiteral.'"
1505
- ]
1506
- });
1270
+ invariant12(SchemaAST5.isTypeLiteral(self.ast), "Schema must be a TypeLiteral.", { "~LogMeta": "~LogMeta", F: __dxlog_file12, L: 27, S: void 0, A: ["SchemaAST.isTypeLiteral(self.ast)", "'Schema must be a TypeLiteral.'"] });
1507
1271
  const fields = self.fields ?? {};
1508
1272
  const schemaWithId = Schema8.extend(self, Schema8.Struct({
1509
1273
  id: Schema8.String
@@ -1741,38 +1505,22 @@ import { raise as raise2 } from "@dxos/debug";
1741
1505
  import { ObjectStructure, isEncodedReference } from "@dxos/echo-protocol";
1742
1506
  import { assertArgument as assertArgument5, invariant as invariant13 } from "@dxos/invariant";
1743
1507
  import { DXN as DXN5, ObjectId as ObjectId4 } from "@dxos/keys";
1744
- import { assumeType as assumeType4, deepMapValues as deepMapValues2, visitValues } from "@dxos/util";
1508
+ import { assumeType as assumeType4, decodeUint8ArrayFromJson, deepMapValues as deepMapValues2, isEncodedUint8Array, visitValues } from "@dxos/util";
1745
1509
  var __dxlog_file13 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Obj/json-serializer.ts";
1746
1510
  var objectToJSON = (obj) => {
1747
1511
  const typename = getTypeDXN(obj)?.toString();
1748
- invariant13(typename && typeof typename === "string", void 0, {
1749
- F: __dxlog_file13,
1750
- L: 66,
1751
- S: void 0,
1752
- A: [
1753
- "typename && typeof typename === 'string'",
1754
- ""
1755
- ]
1756
- });
1512
+ invariant13(typename && typeof typename === "string", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file13, L: 21, S: void 0, A: ["typename && typeof typename === 'string'", ""] });
1757
1513
  return typedJsonSerializer.call(obj);
1758
1514
  };
1759
- var objectFromJSON = async (jsonData, { refResolver, dxn, database } = {}) => {
1515
+ var objectFromJSON = async (jsonData, { refResolver, dxn, database, parent } = {}) => {
1760
1516
  assumeType4(jsonData);
1761
1517
  assertArgument5(typeof jsonData === "object" && jsonData !== null, "jsonData", "expect object");
1762
1518
  assertArgument5(typeof jsonData[ATTR_TYPE] === "string", "jsonData[ATTR_TYPE]", "expected object to have a type");
1763
1519
  assertArgument5(typeof jsonData.id === "string", "jsonData.id", "expected object to have an id");
1764
1520
  const type = DXN5.parse(jsonData[ATTR_TYPE]);
1765
1521
  const schema = await refResolver?.resolveSchema(type);
1766
- invariant13(schema === void 0 || Schema10.isSchema(schema), void 0, {
1767
- F: __dxlog_file13,
1768
- L: 92,
1769
- S: void 0,
1770
- A: [
1771
- "schema === undefined || Schema.isSchema(schema)",
1772
- ""
1773
- ]
1774
- });
1775
- const decodedInput = stripInternalJsonKeys(jsonData);
1522
+ invariant13(schema === void 0 || Schema10.isSchema(schema), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file13, L: 41, S: void 0, A: ["schema === undefined || Schema.isSchema(schema)", ""] });
1523
+ const decodedInput = restoreUint8Arrays(stripInternalJsonKeys(jsonData));
1776
1524
  let obj;
1777
1525
  if (schema != null) {
1778
1526
  obj = await schema.pipe(Schema10.decodeUnknownPromise)(decodedInput);
@@ -1784,28 +1532,20 @@ var objectFromJSON = async (jsonData, { refResolver, dxn, database } = {}) => {
1784
1532
  refResolver
1785
1533
  });
1786
1534
  }
1787
- invariant13(ObjectId4.isValid(obj.id), "Invalid object id", {
1788
- F: __dxlog_file13,
1789
- L: 105,
1790
- S: void 0,
1791
- A: [
1792
- "ObjectId.isValid(obj.id)",
1793
- "'Invalid object id'"
1794
- ]
1795
- });
1535
+ invariant13(ObjectId4.isValid(obj.id), "Invalid object id", { "~LogMeta": "~LogMeta", F: __dxlog_file13, L: 54, S: void 0, A: ["ObjectId.isValid(obj.id)", "'Invalid object id'"] });
1796
1536
  setTypename(obj, type);
1797
1537
  if (schema) {
1798
1538
  setSchema(obj, schema);
1799
1539
  }
1800
1540
  const isRelation = typeof jsonData[ATTR_RELATION_SOURCE] === "string" || typeof jsonData[ATTR_RELATION_TARGET] === "string";
1801
1541
  if (isRelation) {
1802
- const sourceDxn = DXN5.parse(jsonData[ATTR_RELATION_SOURCE] ?? raise2(new TypeError("Missing relation source")));
1803
- const targetDxn = DXN5.parse(jsonData[ATTR_RELATION_TARGET] ?? raise2(new TypeError("Missing relation target")));
1804
- const source = await refResolver?.resolve(sourceDxn);
1805
- const target = await refResolver?.resolve(targetDxn);
1542
+ const sourceDXN = DXN5.parse(jsonData[ATTR_RELATION_SOURCE] ?? raise2(new TypeError("Missing relation source")));
1543
+ const targetDXN = DXN5.parse(jsonData[ATTR_RELATION_TARGET] ?? raise2(new TypeError("Missing relation target")));
1544
+ const source = await refResolver?.resolve(sourceDXN);
1545
+ const target = await refResolver?.resolve(targetDXN);
1806
1546
  defineHiddenProperty(obj, KindId, EntityKind.Relation);
1807
- defineHiddenProperty(obj, RelationSourceDXNId, sourceDxn);
1808
- defineHiddenProperty(obj, RelationTargetDXNId, targetDxn);
1547
+ defineHiddenProperty(obj, RelationSourceDXNId, sourceDXN);
1548
+ defineHiddenProperty(obj, RelationTargetDXNId, targetDXN);
1809
1549
  defineHiddenProperty(obj, RelationSourceId, source);
1810
1550
  defineHiddenProperty(obj, RelationTargetId, target);
1811
1551
  } else {
@@ -1813,15 +1553,7 @@ var objectFromJSON = async (jsonData, { refResolver, dxn, database } = {}) => {
1813
1553
  }
1814
1554
  if (typeof jsonData[ATTR_META] === "object") {
1815
1555
  const meta = await ObjectMetaSchema.pipe(Schema10.decodeUnknownPromise)(jsonData[ATTR_META]);
1816
- invariant13(Array.isArray(meta.keys), void 0, {
1817
- F: __dxlog_file13,
1818
- L: 131,
1819
- S: void 0,
1820
- A: [
1821
- "Array.isArray(meta.keys)",
1822
- ""
1823
- ]
1824
- });
1556
+ invariant13(Array.isArray(meta.keys), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file13, L: 75, S: void 0, A: ["Array.isArray(meta.keys)", ""] });
1825
1557
  defineHiddenProperty(obj, MetaId, meta);
1826
1558
  } else {
1827
1559
  defineHiddenProperty(obj, MetaId, {
@@ -1829,8 +1561,10 @@ var objectFromJSON = async (jsonData, { refResolver, dxn, database } = {}) => {
1829
1561
  });
1830
1562
  }
1831
1563
  if (jsonData[ATTR_PARENT]) {
1832
- const parentDxn = DXN5.parse(jsonData[ATTR_PARENT]);
1833
- const parent = await refResolver?.resolve(parentDxn);
1564
+ const parentDXN = DXN5.parse(jsonData[ATTR_PARENT]);
1565
+ const resolvedParent = await refResolver?.resolve(parentDXN);
1566
+ defineHiddenProperty(obj, ParentId, resolvedParent);
1567
+ } else if (parent) {
1834
1568
  defineHiddenProperty(obj, ParentId, parent);
1835
1569
  }
1836
1570
  if (dxn) {
@@ -1840,60 +1574,12 @@ var objectFromJSON = async (jsonData, { refResolver, dxn, database } = {}) => {
1840
1574
  defineHiddenProperty(obj, ObjectDatabaseId, database);
1841
1575
  }
1842
1576
  assertObjectModel(obj);
1843
- invariant13(obj[ATTR_TYPE] === void 0, "Invalid object model", {
1844
- F: __dxlog_file13,
1845
- L: 154,
1846
- S: void 0,
1847
- A: [
1848
- "(obj as any)[ATTR_TYPE] === undefined",
1849
- "'Invalid object model'"
1850
- ]
1851
- });
1852
- invariant13(obj[ATTR_META] === void 0, "Invalid object model", {
1853
- F: __dxlog_file13,
1854
- L: 155,
1855
- S: void 0,
1856
- A: [
1857
- "(obj as any)[ATTR_META] === undefined",
1858
- "'Invalid object model'"
1859
- ]
1860
- });
1861
- invariant13(obj[ATTR_DELETED] === void 0, "Invalid object model", {
1862
- F: __dxlog_file13,
1863
- L: 156,
1864
- S: void 0,
1865
- A: [
1866
- "(obj as any)[ATTR_DELETED] === undefined",
1867
- "'Invalid object model'"
1868
- ]
1869
- });
1870
- invariant13(obj[ATTR_SELF_DXN] === void 0, "Invalid object model", {
1871
- F: __dxlog_file13,
1872
- L: 157,
1873
- S: void 0,
1874
- A: [
1875
- "(obj as any)[ATTR_SELF_DXN] === undefined",
1876
- "'Invalid object model'"
1877
- ]
1878
- });
1879
- invariant13(obj[ATTR_RELATION_SOURCE] === void 0, "Invalid object model", {
1880
- F: __dxlog_file13,
1881
- L: 158,
1882
- S: void 0,
1883
- A: [
1884
- "(obj as any)[ATTR_RELATION_SOURCE] === undefined",
1885
- "'Invalid object model'"
1886
- ]
1887
- });
1888
- invariant13(obj[ATTR_RELATION_TARGET] === void 0, "Invalid object model", {
1889
- F: __dxlog_file13,
1890
- L: 159,
1891
- S: void 0,
1892
- A: [
1893
- "(obj as any)[ATTR_RELATION_TARGET] === undefined",
1894
- "'Invalid object model'"
1895
- ]
1896
- });
1577
+ invariant13(obj[ATTR_TYPE] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file13, L: 96, S: void 0, A: ["obj[ATTR_TYPE] === undefined", "'Invalid object model'"] });
1578
+ invariant13(obj[ATTR_META] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file13, L: 97, S: void 0, A: ["obj[ATTR_META] === undefined", "'Invalid object model'"] });
1579
+ invariant13(obj[ATTR_DELETED] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file13, L: 98, S: void 0, A: ["obj[ATTR_DELETED] === undefined", "'Invalid object model'"] });
1580
+ invariant13(obj[ATTR_SELF_DXN] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file13, L: 99, S: void 0, A: ["obj[ATTR_SELF_DXN] === undefined", "'Invalid object model'"] });
1581
+ invariant13(obj[ATTR_RELATION_SOURCE] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file13, L: 100, S: void 0, A: ["obj[ATTR_RELATION_SOURCE] === undefined", "'Invalid object model'"] });
1582
+ invariant13(obj[ATTR_RELATION_TARGET] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file13, L: 101, S: void 0, A: ["obj[ATTR_RELATION_TARGET] === undefined", "'Invalid object model'"] });
1897
1583
  return obj;
1898
1584
  };
1899
1585
  var decodeGeneric = (jsonData, options) => {
@@ -1902,11 +1588,20 @@ var decodeGeneric = (jsonData, options) => {
1902
1588
  if (isEncodedReference(value2)) {
1903
1589
  return refFromEncodedReference(value2, options.refResolver);
1904
1590
  }
1591
+ if (isEncodedUint8Array(value2)) {
1592
+ return decodeUint8ArrayFromJson(value2);
1593
+ }
1905
1594
  return visitor(value2);
1906
1595
  });
1907
1596
  };
1597
+ var restoreUint8Arrays = (data) => deepMapValues2(data, (value2, recurse) => {
1598
+ if (isEncodedUint8Array(value2)) {
1599
+ return decodeUint8ArrayFromJson(value2);
1600
+ }
1601
+ return recurse(value2);
1602
+ });
1908
1603
  var stripInternalJsonKeys = (jsonData) => {
1909
- const { [ATTR_TYPE]: _type, [ATTR_META]: _meta, [ATTR_DELETED]: _deleted, [ATTR_SELF_DXN]: _selfDxn, [ATTR_RELATION_SOURCE]: _relationSource, [ATTR_RELATION_TARGET]: _relationTarget, ...props } = jsonData;
1604
+ const { [ATTR_TYPE]: _type, [ATTR_META]: _meta, [ATTR_DELETED]: _deleted, [ATTR_SELF_DXN]: _selfDXN, [ATTR_RELATION_SOURCE]: _relationSource, [ATTR_RELATION_TARGET]: _relationTarget, ...props } = jsonData;
1910
1605
  return props;
1911
1606
  };
1912
1607
  var setRefResolverOnData = (obj, refResolver) => {
@@ -1988,25 +1683,9 @@ import { getArrayElementType, getBaseType, getProperties as getProperties2, isAr
1988
1683
  import { invariant as invariant14 } from "@dxos/invariant";
1989
1684
  var __dxlog_file14 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Obj/set-value.ts";
1990
1685
  var setValue = (obj, path, value2) => {
1991
- invariant14(path.length > 0, "Path must not be empty", {
1992
- F: __dxlog_file14,
1993
- L: 27,
1994
- S: void 0,
1995
- A: [
1996
- "path.length > 0",
1997
- "'Path must not be empty'"
1998
- ]
1999
- });
1686
+ invariant14(path.length > 0, "Path must not be empty", { "~LogMeta": "~LogMeta", F: __dxlog_file14, L: 14, S: void 0, A: ["path.length > 0", "'Path must not be empty'"] });
2000
1687
  const schema = getSchema(obj);
2001
- invariant14(schema != null, "Object must have a schema", {
2002
- F: __dxlog_file14,
2003
- L: 30,
2004
- S: void 0,
2005
- A: [
2006
- "schema != null",
2007
- "'Object must have a schema'"
2008
- ]
2009
- });
1688
+ invariant14(schema != null, "Object must have a schema", { "~LogMeta": "~LogMeta", F: __dxlog_file14, L: 16, S: void 0, A: ["schema != null", "'Object must have a schema'"] });
2010
1689
  let parent = obj;
2011
1690
  let currentAST = schema.ast;
2012
1691
  for (let i = 0; i < path.length - 1; i++) {
@@ -2148,15 +1827,7 @@ var __dxlog_file15 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Obj/cl
2148
1827
  var clone = (obj, opts) => {
2149
1828
  const { id, ...data } = obj;
2150
1829
  const schema = getSchema(obj);
2151
- invariant15(schema != null, "Object should have a schema", {
2152
- F: __dxlog_file15,
2153
- L: 21,
2154
- S: void 0,
2155
- A: [
2156
- "schema != null",
2157
- "'Object should have a schema'"
2158
- ]
2159
- });
1830
+ invariant15(schema != null, "Object should have a schema", { "~LogMeta": "~LogMeta", F: __dxlog_file15, L: 16, S: void 0, A: ["schema != null", "'Object should have a schema'"] });
2160
1831
  const props = deepMapValues4(data, (value2, recurse) => {
2161
1832
  if (Ref.isRef(value2)) {
2162
1833
  if (opts?.deep) {
@@ -2181,6 +1852,133 @@ var clone = (obj, opts) => {
2181
1852
  return makeObject(schema, props, meta);
2182
1853
  };
2183
1854
 
1855
+ // src/internal/Query.ts
1856
+ var prettyFilter = (filter) => {
1857
+ switch (filter.type) {
1858
+ case "object": {
1859
+ if (filter.typename === null && (filter.id === void 0 || filter.id.length === 0) && Object.keys(filter.props).length === 0 && (filter.foreignKeys === void 0 || filter.foreignKeys.length === 0) && filter.metaKey !== void 0) {
1860
+ return filter.metaVersion !== void 0 ? `Filter.key(${JSON.stringify(filter.metaKey)}, { version: ${JSON.stringify(filter.metaVersion)} })` : `Filter.key(${JSON.stringify(filter.metaKey)})`;
1861
+ }
1862
+ const parts = [];
1863
+ if (filter.typename !== null) {
1864
+ parts.push(String(filter.typename));
1865
+ }
1866
+ if (filter.id !== void 0 && filter.id.length > 0) {
1867
+ parts.push(`id: [${filter.id.join(", ")}]`);
1868
+ }
1869
+ const propEntries = Object.entries(filter.props);
1870
+ if (propEntries.length > 0) {
1871
+ const propsStr = propEntries.map(([k, v]) => `${k}: ${prettyFilter(v)}`).join(", ");
1872
+ parts.push(`{ ${propsStr} }`);
1873
+ }
1874
+ if (filter.foreignKeys !== void 0 && filter.foreignKeys.length > 0) {
1875
+ parts.push(`foreignKeys: [${filter.foreignKeys.map((fk) => JSON.stringify(fk)).join(", ")}]`);
1876
+ }
1877
+ if (filter.metaKey !== void 0) {
1878
+ parts.push(filter.metaVersion !== void 0 ? `metaKey: ${JSON.stringify(filter.metaKey)} (${filter.metaVersion})` : `metaKey: ${JSON.stringify(filter.metaKey)}`);
1879
+ }
1880
+ return parts.length > 0 ? `Filter.type(${parts.join(", ")})` : "Filter.everything()";
1881
+ }
1882
+ case "compare":
1883
+ return `Filter.${filter.operator}(${JSON.stringify(filter.value)})`;
1884
+ case "in":
1885
+ return `Filter.in([${filter.values.map((v) => JSON.stringify(v)).join(", ")}])`;
1886
+ case "contains":
1887
+ return `Filter.contains(${JSON.stringify(filter.value)})`;
1888
+ case "tag":
1889
+ return `Filter.tag(${JSON.stringify(filter.tag)})`;
1890
+ case "range":
1891
+ return `Filter.range(${JSON.stringify(filter.from)}, ${JSON.stringify(filter.to)})`;
1892
+ case "text-search":
1893
+ return filter.searchKind ? `Filter.textSearch(${JSON.stringify(filter.text)}, ${JSON.stringify(filter.searchKind)})` : `Filter.textSearch(${JSON.stringify(filter.text)})`;
1894
+ case "timestamp":
1895
+ return `Filter.${filter.field}.${filter.operator}(${filter.value})`;
1896
+ case "child-of":
1897
+ return `Filter.childOf([${filter.parents.map((p) => JSON.stringify(p)).join(", ")}], { transitive: ${filter.transitive} })`;
1898
+ case "not":
1899
+ return `Filter.not(${prettyFilter(filter.filter)})`;
1900
+ case "and":
1901
+ return `Filter.and(${filter.filters.map(prettyFilter).join(", ")})`;
1902
+ case "or":
1903
+ return `Filter.or(${filter.filters.map(prettyFilter).join(", ")})`;
1904
+ }
1905
+ };
1906
+ var prettyQuery = (query) => {
1907
+ switch (query.type) {
1908
+ case "select":
1909
+ return `Query.select(${prettyFilter(query.filter)})`;
1910
+ case "filter":
1911
+ return `${prettyQuery(query.selection)}.select(${prettyFilter(query.filter)})`;
1912
+ case "reference-traversal":
1913
+ return `${prettyQuery(query.anchor)}.reference(${JSON.stringify(query.property)})`;
1914
+ case "incoming-references": {
1915
+ const args = [];
1916
+ if (query.typename !== null) {
1917
+ args.push(String(query.typename));
1918
+ }
1919
+ if (query.property !== null) {
1920
+ args.push(JSON.stringify(query.property));
1921
+ }
1922
+ return `${prettyQuery(query.anchor)}.referencedBy(${args.join(", ")})`;
1923
+ }
1924
+ case "relation": {
1925
+ const method = query.direction === "outgoing" ? "sourceOf" : query.direction === "incoming" ? "targetOf" : "relationOf";
1926
+ const filterStr = query.filter !== void 0 ? prettyFilter(query.filter) : "";
1927
+ return `${prettyQuery(query.anchor)}.${method}(${filterStr})`;
1928
+ }
1929
+ case "relation-traversal":
1930
+ return `${prettyQuery(query.anchor)}.${query.direction}()`;
1931
+ case "hierarchy-traversal":
1932
+ return query.direction === "to-parent" ? `${prettyQuery(query.anchor)}.parent()` : `${prettyQuery(query.anchor)}.children()`;
1933
+ case "union":
1934
+ return `Query.all(${query.queries.map(prettyQuery).join(", ")})`;
1935
+ case "set-difference":
1936
+ return `Query.without(${prettyQuery(query.source)}, ${prettyQuery(query.exclude)})`;
1937
+ case "order": {
1938
+ const orders = query.order.map((o) => {
1939
+ if (o.kind === "natural") {
1940
+ return "Order.natural()";
1941
+ } else if (o.kind === "rank") {
1942
+ return `Order.rank(${JSON.stringify(o.direction)})`;
1943
+ } else {
1944
+ return `Order.property(${JSON.stringify(o.property)}, ${JSON.stringify(o.direction)})`;
1945
+ }
1946
+ });
1947
+ return `${prettyQuery(query.query)}.orderBy(${orders.join(", ")})`;
1948
+ }
1949
+ case "options": {
1950
+ const opts = query.options;
1951
+ const parts = [];
1952
+ if (opts.deleted !== void 0) {
1953
+ parts.push(`deleted: ${JSON.stringify(opts.deleted)}`);
1954
+ }
1955
+ if (opts.debugLabel !== void 0) {
1956
+ parts.push(`debugLabel: ${JSON.stringify(opts.debugLabel)}`);
1957
+ }
1958
+ return `${prettyQuery(query.query)}.options({ ${parts.join(", ")} })`;
1959
+ }
1960
+ case "from": {
1961
+ if (query.from._tag === "scope") {
1962
+ const scope = query.from.scope;
1963
+ const parts = [];
1964
+ if (scope.spaceIds !== void 0) {
1965
+ parts.push(`spaceIds: [${scope.spaceIds.map((s) => JSON.stringify(s)).join(", ")}]`);
1966
+ }
1967
+ if (scope.feeds !== void 0) {
1968
+ parts.push(`feeds: [${scope.feeds.map(String).join(", ")}]`);
1969
+ }
1970
+ if (scope.allFeedsFromSpaces !== void 0) {
1971
+ parts.push(`allFeedsFromSpaces: ${scope.allFeedsFromSpaces}`);
1972
+ }
1973
+ return `${prettyQuery(query.query)}.from({ ${parts.join(", ")} })`;
1974
+ }
1975
+ return `${prettyQuery(query.query)}.from(${prettyQuery(query.from.query)})`;
1976
+ }
1977
+ case "limit":
1978
+ return `${prettyQuery(query.query)}.limit(${query.limit})`;
1979
+ }
1980
+ };
1981
+
2184
1982
  // src/internal/Type/echo-schema.ts
2185
1983
  import * as Schema13 from "effect/Schema";
2186
1984
  import * as SchemaAST8 from "effect/SchemaAST";
@@ -2198,15 +1996,7 @@ var addFieldsToSchema = (schema, fields) => {
2198
1996
  };
2199
1997
  var updateFieldsInSchema = (schema, fields) => {
2200
1998
  const ast = schema.ast;
2201
- invariant16(SchemaAST7.isTypeLiteral(ast), void 0, {
2202
- F: __dxlog_file16,
2203
- L: 29,
2204
- S: void 0,
2205
- A: [
2206
- "SchemaAST.isTypeLiteral(ast)",
2207
- ""
2208
- ]
2209
- });
1999
+ invariant16(SchemaAST7.isTypeLiteral(ast), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file16, L: 16, S: void 0, A: ["SchemaAST.isTypeLiteral(ast)", ""] });
2210
2000
  const updatedProperties = [
2211
2001
  ...ast.propertySignatures
2212
2002
  ];
@@ -2226,28 +2016,12 @@ var removeFieldsFromSchema = (schema, fieldNames) => {
2226
2016
  };
2227
2017
  var updateFieldNameInSchema = (schema, { before, after }) => {
2228
2018
  const ast = schema.ast;
2229
- invariant16(SchemaAST7.isTypeLiteral(ast), void 0, {
2230
- F: __dxlog_file16,
2231
- L: 57,
2232
- S: void 0,
2233
- A: [
2234
- "SchemaAST.isTypeLiteral(ast)",
2235
- ""
2236
- ]
2237
- });
2019
+ invariant16(SchemaAST7.isTypeLiteral(ast), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file16, L: 36, S: void 0, A: ["SchemaAST.isTypeLiteral(ast)", ""] });
2238
2020
  return Schema11.make(new SchemaAST7.TypeLiteral(ast.propertySignatures.map((p) => p.name === before ? new SchemaAST7.PropertySignature(after, p.type, p.isOptional, p.isReadonly, p.annotations) : p), ast.indexSignatures, ast.annotations));
2239
2021
  };
2240
2022
  var setTypenameInSchema = (schema, typename) => {
2241
2023
  const existingAnnotation = schema.ast.annotations[TypeAnnotationId];
2242
- invariant16(existingAnnotation, `Missing ${String(TypeAnnotationId)}`, {
2243
- F: __dxlog_file16,
2244
- L: 77,
2245
- S: void 0,
2246
- A: [
2247
- "existingAnnotation",
2248
- "`Missing ${String(TypeAnnotationId)}`"
2249
- ]
2250
- });
2024
+ invariant16(existingAnnotation, `Missing ${String(TypeAnnotationId)}`, { "~LogMeta": "~LogMeta", F: __dxlog_file16, L: 41, S: void 0, A: ["existingAnnotation", "`Missing ${String(TypeAnnotationId)}`"] });
2251
2025
  return schema.annotations({
2252
2026
  ...schema.ast.annotations,
2253
2027
  [TypeAnnotationId]: {
@@ -2288,15 +2062,7 @@ var ImmutableSchema = class {
2288
2062
  constructor(_schema) {
2289
2063
  this._schema = _schema;
2290
2064
  this._objectAnnotation = getTypeAnnotation(this._schema);
2291
- invariant17(this._objectAnnotation, void 0, {
2292
- F: __dxlog_file17,
2293
- L: 49,
2294
- S: this,
2295
- A: [
2296
- "this._objectAnnotation",
2297
- ""
2298
- ]
2299
- });
2065
+ invariant17(this._objectAnnotation, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file17, L: 24, S: this, A: ["this._objectAnnotation", ""] });
2300
2066
  }
2301
2067
  //
2302
2068
  // Effect Schema (push to abstract base class).
@@ -2450,15 +2216,7 @@ var EchoSchema = class extends EchoSchemaConstructor() {
2450
2216
  * Returns a mutable schema.
2451
2217
  */
2452
2218
  get mutable() {
2453
- invariant17(!this.readonly, "Schema is not mutable", {
2454
- F: __dxlog_file17,
2455
- L: 279,
2456
- S: this,
2457
- A: [
2458
- "!this.readonly",
2459
- "'Schema is not mutable'"
2460
- ]
2461
- });
2219
+ invariant17(!this.readonly, "Schema is not mutable", { "~LogMeta": "~LogMeta", F: __dxlog_file17, L: 203, S: this, A: ["!this.readonly", "'Schema is not mutable'"] });
2462
2220
  return this;
2463
2221
  }
2464
2222
  //
@@ -2491,15 +2249,7 @@ var EchoSchema = class extends EchoSchemaConstructor() {
2491
2249
  }
2492
2250
  getProperties() {
2493
2251
  const ast = this._getSchema().ast;
2494
- invariant17(SchemaAST8.isTypeLiteral(ast), void 0, {
2495
- F: __dxlog_file17,
2496
- L: 314,
2497
- S: this,
2498
- A: [
2499
- "SchemaAST.isTypeLiteral(ast)",
2500
- ""
2501
- ]
2502
- });
2252
+ invariant17(SchemaAST8.isTypeLiteral(ast), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file17, L: 233, S: this, A: ["SchemaAST.isTypeLiteral(ast)", ""] });
2503
2253
  return [
2504
2254
  ...ast.propertySignatures
2505
2255
  ].filter((p) => p.name !== "id").map(unwrapOptionality);
@@ -2559,7 +2309,7 @@ var EchoSchema = class extends EchoSchemaConstructor() {
2559
2309
  });
2560
2310
  }
2561
2311
  /**
2562
- * Wrapper for Obj.change that handles the change context for the persistent schema.
2312
+ * Wrapper for Obj.update that handles the change context for the persistent schema.
2563
2313
  */
2564
2314
  _change(callback) {
2565
2315
  const changeFn = this._persistentSchema[ChangeId];
@@ -2695,6 +2445,8 @@ export {
2695
2445
  setValue,
2696
2446
  getSnapshot,
2697
2447
  clone,
2448
+ prettyFilter,
2449
+ prettyQuery,
2698
2450
  addFieldsToSchema,
2699
2451
  updateFieldsInSchema,
2700
2452
  removeFieldsFromSchema,
@@ -2709,4 +2461,4 @@ export {
2709
2461
  getValue,
2710
2462
  splitJsonPath
2711
2463
  };
2712
- //# sourceMappingURL=chunk-C4JZK4J7.mjs.map
2464
+ //# sourceMappingURL=chunk-Z5GKP74O.mjs.map