@dxos/echo 0.8.4-main.c85a9c8dae → 0.8.4-main.cb12b3f963

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 (554) hide show
  1. package/dist/lib/neutral/Annotation.mjs +3 -3
  2. package/dist/lib/neutral/Database.mjs +8 -4
  3. package/dist/lib/neutral/Entity.mjs +16 -11
  4. package/dist/lib/neutral/Err.mjs +1 -1
  5. package/dist/lib/neutral/Extension.mjs +18 -0
  6. package/dist/lib/neutral/Extension.mjs.map +7 -0
  7. package/dist/lib/neutral/Feed.mjs +21 -14
  8. package/dist/lib/neutral/Filter.mjs +21 -10
  9. package/dist/lib/neutral/Format.mjs +3 -3
  10. package/dist/lib/neutral/JsonSchema.mjs +8 -7
  11. package/dist/lib/neutral/Key.mjs +1 -1
  12. package/dist/lib/neutral/Migration.mjs +17 -0
  13. package/dist/lib/neutral/Migration.mjs.map +7 -0
  14. package/dist/lib/neutral/Obj.mjs +16 -10
  15. package/dist/lib/neutral/Order.mjs +1 -1
  16. package/dist/lib/neutral/Query.mjs +19 -13
  17. package/dist/lib/neutral/QueryResult.mjs +1 -1
  18. package/dist/lib/neutral/Ref.mjs +7 -7
  19. package/dist/lib/neutral/Relation.mjs +15 -11
  20. package/dist/lib/neutral/SchemaRegistry.mjs +1 -1
  21. package/dist/lib/neutral/Tag.mjs +14 -10
  22. package/dist/lib/neutral/Type.mjs +10 -7
  23. package/dist/lib/neutral/{chunk-ALOGSVBP.mjs → chunk-3U5PIVPZ.mjs} +59 -4
  24. package/dist/lib/neutral/chunk-3U5PIVPZ.mjs.map +7 -0
  25. package/dist/lib/neutral/{chunk-DZQSL6RW.mjs → chunk-44HT3MEC.mjs} +2 -2
  26. package/dist/lib/neutral/{chunk-DZQSL6RW.mjs.map → chunk-44HT3MEC.mjs.map} +1 -1
  27. package/dist/lib/neutral/{chunk-5ELDDYWE.mjs → chunk-4VTRFJV3.mjs} +17 -19
  28. package/dist/lib/neutral/chunk-4VTRFJV3.mjs.map +7 -0
  29. package/dist/lib/neutral/chunk-5NR2KWDU.mjs +34 -0
  30. package/dist/lib/neutral/chunk-5NR2KWDU.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-62RJTYOZ.mjs +346 -0
  32. package/dist/lib/neutral/chunk-62RJTYOZ.mjs.map +7 -0
  33. package/dist/lib/neutral/{chunk-OVUBTQLT.mjs → chunk-7OO5B5DD.mjs} +2 -2
  34. package/dist/lib/neutral/chunk-7OO5B5DD.mjs.map +7 -0
  35. package/dist/lib/neutral/{chunk-ANHVGJI4.mjs → chunk-7RVZT53K.mjs} +1 -1
  36. package/dist/lib/neutral/{chunk-GAWKQ5DZ.mjs → chunk-AG7JS76F.mjs} +5 -5
  37. package/dist/lib/neutral/chunk-AG7JS76F.mjs.map +7 -0
  38. package/dist/lib/neutral/{chunk-PP4DNUZU.mjs → chunk-AVPYX7FF.mjs} +1399 -2882
  39. package/dist/lib/neutral/chunk-AVPYX7FF.mjs.map +7 -0
  40. package/dist/lib/neutral/{chunk-ZWKJ4LZJ.mjs → chunk-BCKTAKBX.mjs} +23 -51
  41. package/dist/lib/neutral/chunk-BCKTAKBX.mjs.map +7 -0
  42. package/dist/lib/neutral/{chunk-T6JEFNP6.mjs → chunk-BICZKPQG.mjs} +1 -1
  43. package/dist/lib/neutral/{chunk-T6JEFNP6.mjs.map → chunk-BICZKPQG.mjs.map} +1 -1
  44. package/dist/lib/neutral/{chunk-F7KMHDPJ.mjs → chunk-GECFB2UL.mjs} +49 -31
  45. package/dist/lib/neutral/chunk-GECFB2UL.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-GWFFC34K.mjs +50 -0
  47. package/dist/lib/neutral/chunk-GWFFC34K.mjs.map +7 -0
  48. package/dist/lib/neutral/{chunk-BRJSLACP.mjs → chunk-M7ET73JD.mjs} +71 -17
  49. package/dist/lib/neutral/chunk-M7ET73JD.mjs.map +7 -0
  50. package/dist/lib/neutral/{chunk-4KG6IGL4.mjs → chunk-N4B7FHQT.mjs} +4 -4
  51. package/dist/lib/neutral/{chunk-4KG6IGL4.mjs.map → chunk-N4B7FHQT.mjs.map} +2 -2
  52. package/dist/lib/neutral/{chunk-KGV3QIRX.mjs → chunk-NCSIQP3L.mjs} +124 -17
  53. package/dist/lib/neutral/chunk-NCSIQP3L.mjs.map +7 -0
  54. package/dist/lib/neutral/{chunk-QXF3LGN2.mjs → chunk-NGQNU3KX.mjs} +5 -3
  55. package/dist/lib/neutral/chunk-NGQNU3KX.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-PRCRETDK.mjs +36 -0
  57. package/dist/lib/neutral/chunk-PRCRETDK.mjs.map +7 -0
  58. package/dist/lib/neutral/{chunk-AQP4QKYP.mjs → chunk-S4JXD2RO.mjs} +44 -9
  59. package/dist/lib/neutral/chunk-S4JXD2RO.mjs.map +7 -0
  60. package/dist/lib/neutral/{chunk-W7OP5HGZ.mjs → chunk-SVEGO3DJ.mjs} +14 -10
  61. package/dist/lib/neutral/chunk-SVEGO3DJ.mjs.map +7 -0
  62. package/dist/lib/neutral/{chunk-M2KVTHZM.mjs → chunk-TRPZU2HV.mjs} +10 -10
  63. package/dist/lib/neutral/chunk-TRPZU2HV.mjs.map +7 -0
  64. package/dist/lib/neutral/{chunk-ZTUBYOGB.mjs → chunk-TTCSATUD.mjs} +1 -1
  65. package/dist/lib/neutral/chunk-TTCSATUD.mjs.map +7 -0
  66. package/dist/lib/neutral/{chunk-GFNCSK7F.mjs → chunk-TTUIJXGD.mjs} +54 -23
  67. package/dist/lib/neutral/chunk-TTUIJXGD.mjs.map +7 -0
  68. package/dist/lib/neutral/{chunk-OMUPQMLR.mjs → chunk-V72DY6LU.mjs} +1 -1
  69. package/dist/lib/neutral/{chunk-T4MPQJ7X.mjs → chunk-WGMPVUUL.mjs} +6 -22
  70. package/dist/lib/neutral/chunk-WGMPVUUL.mjs.map +7 -0
  71. package/dist/lib/neutral/{chunk-O3TZFQCT.mjs → chunk-YDRLYZKW.mjs} +2 -2
  72. package/dist/lib/neutral/chunk-YDRLYZKW.mjs.map +7 -0
  73. package/dist/lib/neutral/chunk-Z25FPDXG.mjs +734 -0
  74. package/dist/lib/neutral/chunk-Z25FPDXG.mjs.map +7 -0
  75. package/dist/lib/neutral/{chunk-MXQJZCPY.mjs → chunk-ZISMEVKD.mjs} +1 -1
  76. package/dist/lib/neutral/chunk-ZISMEVKD.mjs.map +7 -0
  77. package/dist/lib/neutral/index.mjs +38 -25
  78. package/dist/lib/neutral/internal/index.mjs +48 -38
  79. package/dist/lib/neutral/meta.json +1 -1
  80. package/dist/lib/neutral/testing/index.mjs +41 -35
  81. package/dist/lib/neutral/testing/index.mjs.map +2 -2
  82. package/dist/types/src/Annotation.d.ts +3 -3
  83. package/dist/types/src/Annotation.d.ts.map +1 -1
  84. package/dist/types/src/Collection.d.ts.map +1 -1
  85. package/dist/types/src/Database.d.ts +15 -3
  86. package/dist/types/src/Database.d.ts.map +1 -1
  87. package/dist/types/src/Dataset.d.ts +2 -1
  88. package/dist/types/src/Dataset.d.ts.map +1 -1
  89. package/dist/types/src/Entity.d.ts +17 -11
  90. package/dist/types/src/Entity.d.ts.map +1 -1
  91. package/dist/types/src/Err.d.ts +18 -18
  92. package/dist/types/src/Err.d.ts.map +1 -1
  93. package/dist/types/src/Extension.d.ts +80 -0
  94. package/dist/types/src/Extension.d.ts.map +1 -0
  95. package/dist/types/src/Extension.test.d.ts +2 -0
  96. package/dist/types/src/Extension.test.d.ts.map +1 -0
  97. package/dist/types/src/Feed.d.ts +40 -23
  98. package/dist/types/src/Feed.d.ts.map +1 -1
  99. package/dist/types/src/Filter.d.ts +33 -4
  100. package/dist/types/src/Filter.d.ts.map +1 -1
  101. package/dist/types/src/Filter.test.d.ts +2 -0
  102. package/dist/types/src/Filter.test.d.ts.map +1 -0
  103. package/dist/types/src/Format.d.ts +1 -1
  104. package/dist/types/src/Format.d.ts.map +1 -1
  105. package/dist/types/src/Hypergraph.d.ts +6 -1
  106. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  107. package/dist/types/src/Json.d.ts +33 -0
  108. package/dist/types/src/Json.d.ts.map +1 -0
  109. package/dist/types/src/Json.test.d.ts +2 -0
  110. package/dist/types/src/Json.test.d.ts.map +1 -0
  111. package/dist/types/src/JsonSchema.d.ts +5 -5
  112. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  113. package/dist/types/src/Migration.d.ts +57 -0
  114. package/dist/types/src/Migration.d.ts.map +1 -0
  115. package/dist/types/src/Obj.d.ts +45 -29
  116. package/dist/types/src/Obj.d.ts.map +1 -1
  117. package/dist/types/src/Order.d.ts.map +1 -1
  118. package/dist/types/src/Query.d.ts +13 -2
  119. package/dist/types/src/Query.d.ts.map +1 -1
  120. package/dist/types/src/Ref.d.ts +11 -11
  121. package/dist/types/src/Ref.d.ts.map +1 -1
  122. package/dist/types/src/Relation.d.ts +16 -16
  123. package/dist/types/src/Relation.d.ts.map +1 -1
  124. package/dist/types/src/SchemaRegistry.d.ts +1 -1
  125. package/dist/types/src/Tag.d.ts +2 -2
  126. package/dist/types/src/Tag.d.ts.map +1 -1
  127. package/dist/types/src/Type.d.ts +10 -9
  128. package/dist/types/src/Type.d.ts.map +1 -1
  129. package/dist/types/src/View.d.ts +1 -1
  130. package/dist/types/src/View.d.ts.map +1 -1
  131. package/dist/types/src/exemplars.test.d.ts +2 -0
  132. package/dist/types/src/exemplars.test.d.ts.map +1 -0
  133. package/dist/types/src/index.d.ts +3 -0
  134. package/dist/types/src/index.d.ts.map +1 -1
  135. package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +24 -2
  136. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  137. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  138. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  139. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  140. package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
  141. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  142. package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +2 -2
  143. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  144. package/dist/types/src/internal/{api/entity.d.ts → Entity/api.d.ts} +2 -2
  145. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  146. package/dist/types/src/internal/{entities → Entity}/entity.d.ts +2 -2
  147. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  148. package/dist/types/src/internal/{entities → Entity}/index.d.ts +2 -0
  149. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  150. package/dist/types/src/internal/{entities → Entity}/model.d.ts +2 -26
  151. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  152. package/dist/types/src/internal/{entities → Entity}/object.d.ts +2 -2
  153. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  154. package/dist/types/src/internal/{entities → Entity}/relation.d.ts +3 -30
  155. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  156. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  157. package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
  158. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  159. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  160. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  161. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  162. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  163. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  164. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  165. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  166. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  167. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  168. package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
  169. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  170. package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
  171. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  172. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  173. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  174. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  175. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +23 -23
  176. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  177. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +1 -1
  178. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  179. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  180. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  181. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  182. package/dist/types/src/internal/{object → Obj}/create-object.d.ts +2 -2
  183. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  184. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  185. package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
  186. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  187. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  188. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  189. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  190. package/dist/types/src/internal/{object → Obj}/json-serializer.d.ts +13 -5
  191. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  192. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  193. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  194. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  195. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  196. package/dist/types/src/internal/{object → Obj}/set-value.d.ts +2 -2
  197. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  198. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  199. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  200. package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +2 -2
  201. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  202. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  203. package/dist/types/src/internal/Query.d.ts +10 -0
  204. package/dist/types/src/internal/Query.d.ts.map +1 -0
  205. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  206. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
  207. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  208. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +15 -2
  209. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  210. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  211. package/dist/types/src/internal/{schema → Type}/compose.d.ts +1 -1
  212. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  213. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  214. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +6 -6
  215. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  216. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  217. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  218. package/dist/types/src/internal/{schema → Type}/persistent-schema.d.ts +2 -2
  219. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  220. package/dist/types/src/internal/{api → common/api}/index.d.ts +0 -4
  221. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  222. package/dist/types/src/internal/{api → common/api}/meta.d.ts +3 -3
  223. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  224. package/dist/types/src/internal/common/index.d.ts +4 -0
  225. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  226. package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +1 -1
  227. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  228. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  229. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  230. package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +1 -1
  231. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  232. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  233. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  234. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  235. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  236. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  237. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  238. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  239. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  240. package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +1 -1
  241. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  242. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +2 -2
  243. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts.map +1 -1
  244. package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
  245. package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
  246. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  247. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  248. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  249. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  250. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  251. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  252. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  253. package/dist/types/src/internal/{types → common/types}/entity.d.ts +4 -4
  254. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  255. package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
  256. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  257. package/dist/types/src/internal/{types → common/types}/meta.d.ts +3 -3
  258. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  259. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  260. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  261. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  262. package/dist/types/src/internal/{types → common/types}/version.d.ts +1 -1
  263. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  264. package/dist/types/src/internal/index.d.ts +9 -10
  265. package/dist/types/src/internal/index.d.ts.map +1 -1
  266. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  267. package/dist/types/src/testing/test-schema.d.ts +53 -53
  268. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  269. package/dist/types/src/testing/util.d.ts.map +1 -1
  270. package/dist/types/tsconfig.tsbuildinfo +1 -1
  271. package/package.json +24 -14
  272. package/src/Annotation.ts +5 -3
  273. package/src/Collection.ts +8 -1
  274. package/src/Database.ts +54 -17
  275. package/src/Dataset.ts +2 -0
  276. package/src/Entity.ts +20 -11
  277. package/src/Err.ts +2 -0
  278. package/src/Extension.test.ts +235 -0
  279. package/src/Extension.ts +122 -0
  280. package/src/Feed.ts +86 -36
  281. package/src/Filter.test.ts +90 -0
  282. package/src/Filter.ts +68 -3
  283. package/src/Format.ts +1 -1
  284. package/src/Hypergraph.ts +7 -2
  285. package/src/Json.test.ts +175 -0
  286. package/src/Json.ts +102 -0
  287. package/src/JsonSchema.ts +7 -5
  288. package/src/Migration.ts +94 -0
  289. package/src/Obj.test.ts +107 -15
  290. package/src/Obj.ts +166 -40
  291. package/src/Order.ts +2 -0
  292. package/src/Query.test.ts +221 -31
  293. package/src/Query.ts +50 -3
  294. package/src/Ref.ts +14 -12
  295. package/src/Relation.test.ts +2 -2
  296. package/src/Relation.ts +28 -21
  297. package/src/SchemaRegistry.ts +1 -1
  298. package/src/Tag.ts +3 -1
  299. package/src/Type.ts +14 -11
  300. package/src/View.ts +9 -2
  301. package/src/exemplars.test.ts +21 -0
  302. package/src/index.ts +4 -0
  303. package/src/internal/{annotations → Annotation}/annotations.test.ts +56 -7
  304. package/src/internal/{annotations → Annotation}/annotations.ts +71 -20
  305. package/src/internal/{annotations → Annotation}/index.ts +1 -0
  306. package/src/internal/{api → Annotation}/sorting.ts +2 -4
  307. package/src/internal/{annotations → Annotation}/util.ts +1 -1
  308. package/src/internal/{api/entity.ts → Entity/api.ts} +3 -2
  309. package/src/internal/{entities → Entity}/entity.ts +2 -2
  310. package/src/internal/{entities → Entity}/index.ts +2 -0
  311. package/src/internal/{entities → Entity}/model.ts +13 -42
  312. package/src/internal/{entities → Entity}/object.ts +2 -3
  313. package/src/internal/{entities → Entity}/relation.ts +19 -36
  314. package/src/internal/{api → Entity}/version.ts +2 -2
  315. package/src/internal/{formats → Format}/date.test.ts +1 -2
  316. package/src/internal/{formats → Format}/format.test.ts +1 -2
  317. package/src/internal/{formats → Format}/types.ts +2 -2
  318. package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
  319. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +4 -4
  320. package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -49
  321. package/src/internal/{json-schema → JsonSchema}/json-schema.ts +3 -4
  322. package/src/internal/{object → Obj}/clone.ts +3 -3
  323. package/src/internal/{object → Obj}/common.ts +2 -2
  324. package/src/internal/{object → Obj}/create-object.test.ts +5 -7
  325. package/src/internal/{object → Obj}/create-object.ts +5 -6
  326. package/src/internal/{object → Obj}/deleted.ts +2 -2
  327. package/src/internal/{object → Obj}/inspect.ts +2 -2
  328. package/src/internal/{object → Obj}/json-serializer.test.ts +8 -9
  329. package/src/internal/{object → Obj}/json-serializer.ts +36 -18
  330. package/src/internal/{object → Obj}/schema-validator.ts +1 -1
  331. package/src/internal/{object → Obj}/set-value.test.ts +24 -24
  332. package/src/internal/{object → Obj}/set-value.ts +3 -3
  333. package/src/internal/{object → Obj}/snapshot.ts +14 -5
  334. package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
  335. package/src/internal/{object → Obj}/typed-object.ts +2 -2
  336. package/src/internal/Query.ts +137 -0
  337. package/src/internal/{ref → Ref}/ref-array.ts +1 -2
  338. package/src/internal/{ref → Ref}/ref.test.ts +4 -5
  339. package/src/internal/{ref → Ref}/ref.ts +20 -3
  340. package/src/internal/{schema → Type}/compose.test.ts +5 -6
  341. package/src/internal/{schema → Type}/compose.ts +1 -1
  342. package/src/internal/{schema → Type}/echo-schema.ts +7 -8
  343. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  344. package/src/internal/{schema → Type}/persistent-schema.ts +7 -7
  345. package/src/internal/{README.md → common/README.md} +1 -1
  346. package/src/internal/{api → common/api}/index.ts +0 -4
  347. package/src/internal/{api → common/api}/meta.ts +3 -3
  348. package/src/internal/common/index.ts +7 -0
  349. package/src/internal/{proxy → common/proxy}/change-context.ts +1 -1
  350. package/src/internal/{proxy → common/proxy}/change.test.ts +97 -97
  351. package/src/internal/{proxy → common/proxy}/errors.ts +2 -2
  352. package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -4
  353. package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
  354. package/src/internal/{proxy → common/proxy}/make-object.ts +1 -2
  355. package/src/internal/{proxy → common/proxy}/ownership.ts +0 -1
  356. package/src/internal/{proxy → common/proxy}/reactive-array.ts +1 -1
  357. package/src/internal/common/proxy/reactive.test.ts +54 -0
  358. package/src/internal/{proxy → common/proxy}/reactive.ts +12 -4
  359. package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
  360. package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +6 -7
  361. package/src/internal/{proxy → common/proxy}/typed-handler.ts +10 -13
  362. package/src/internal/{proxy → common/proxy}/typed-object.test.ts +5 -6
  363. package/src/internal/{types → common/types}/entity.ts +1 -1
  364. package/src/internal/{types → common/types}/index.ts +1 -0
  365. package/src/internal/{types → common/types}/meta.ts +1 -2
  366. package/src/internal/common/types/model-symbols.ts +69 -0
  367. package/src/internal/index.ts +9 -31
  368. package/src/testing/api.test.ts +2 -3
  369. package/src/testing/test-data.ts +0 -1
  370. package/src/testing/test-schema.ts +9 -9
  371. package/dist/lib/neutral/chunk-5ELDDYWE.mjs.map +0 -7
  372. package/dist/lib/neutral/chunk-ALOGSVBP.mjs.map +0 -7
  373. package/dist/lib/neutral/chunk-AQP4QKYP.mjs.map +0 -7
  374. package/dist/lib/neutral/chunk-BRJSLACP.mjs.map +0 -7
  375. package/dist/lib/neutral/chunk-F7KMHDPJ.mjs.map +0 -7
  376. package/dist/lib/neutral/chunk-GAWKQ5DZ.mjs.map +0 -7
  377. package/dist/lib/neutral/chunk-GFNCSK7F.mjs.map +0 -7
  378. package/dist/lib/neutral/chunk-KGV3QIRX.mjs.map +0 -7
  379. package/dist/lib/neutral/chunk-M2KVTHZM.mjs.map +0 -7
  380. package/dist/lib/neutral/chunk-MXQJZCPY.mjs.map +0 -7
  381. package/dist/lib/neutral/chunk-O3TZFQCT.mjs.map +0 -7
  382. package/dist/lib/neutral/chunk-OVUBTQLT.mjs.map +0 -7
  383. package/dist/lib/neutral/chunk-PP4DNUZU.mjs.map +0 -7
  384. package/dist/lib/neutral/chunk-QXF3LGN2.mjs.map +0 -7
  385. package/dist/lib/neutral/chunk-T4MPQJ7X.mjs.map +0 -7
  386. package/dist/lib/neutral/chunk-W7OP5HGZ.mjs.map +0 -7
  387. package/dist/lib/neutral/chunk-ZTUBYOGB.mjs.map +0 -7
  388. package/dist/lib/neutral/chunk-ZWKJ4LZJ.mjs.map +0 -7
  389. package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
  390. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
  391. package/dist/types/src/internal/annotations/index.d.ts +0 -3
  392. package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
  393. package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
  394. package/dist/types/src/internal/api/annotations.d.ts +0 -23
  395. package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
  396. package/dist/types/src/internal/api/entity.d.ts.map +0 -1
  397. package/dist/types/src/internal/api/index.d.ts.map +0 -1
  398. package/dist/types/src/internal/api/meta.d.ts.map +0 -1
  399. package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
  400. package/dist/types/src/internal/api/version.d.ts.map +0 -1
  401. package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
  402. package/dist/types/src/internal/entities/index.d.ts.map +0 -1
  403. package/dist/types/src/internal/entities/model.d.ts.map +0 -1
  404. package/dist/types/src/internal/entities/object.d.ts.map +0 -1
  405. package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
  406. package/dist/types/src/internal/entities/util.d.ts.map +0 -1
  407. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  408. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  409. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  410. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  411. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  412. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  413. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  414. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  415. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  416. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  417. package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
  418. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
  419. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  420. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  421. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  422. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
  423. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
  424. package/dist/types/src/internal/object/clone.d.ts.map +0 -1
  425. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  426. package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
  427. package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
  428. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  429. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  430. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  431. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  432. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  433. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  434. package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
  435. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  436. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  437. package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
  438. package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
  439. package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
  440. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  441. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  442. package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
  443. package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
  444. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
  445. package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
  446. package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
  447. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  448. package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
  449. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
  450. package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
  451. package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
  452. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
  453. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
  454. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
  455. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
  456. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  457. package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
  458. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  459. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  460. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  461. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  462. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  463. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  464. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  465. package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
  466. package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
  467. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  468. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  469. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  470. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
  471. package/dist/types/src/internal/types/base.d.ts.map +0 -1
  472. package/dist/types/src/internal/types/entity.d.ts.map +0 -1
  473. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  474. package/dist/types/src/internal/types/meta.d.ts.map +0 -1
  475. package/dist/types/src/internal/types/typename.d.ts.map +0 -1
  476. package/dist/types/src/internal/types/version.d.ts.map +0 -1
  477. package/src/internal/api/annotations.ts +0 -60
  478. /package/dist/lib/neutral/{chunk-ANHVGJI4.mjs.map → chunk-7RVZT53K.mjs.map} +0 -0
  479. /package/dist/lib/neutral/{chunk-OMUPQMLR.mjs.map → chunk-V72DY6LU.mjs.map} +0 -0
  480. /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
  481. /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
  482. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  483. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  484. /package/dist/types/src/internal/{formats → Format}/format.d.ts +0 -0
  485. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  486. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  487. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  488. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  489. /package/dist/types/src/internal/{formats → Format}/select.d.ts +0 -0
  490. /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
  491. /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
  492. /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
  493. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  494. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
  495. /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
  496. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  497. /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
  498. /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
  499. /package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -0
  500. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  501. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  502. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  503. /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
  504. /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
  505. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  506. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  507. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  508. /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
  509. /package/dist/types/src/internal/{schema → Type}/index.d.ts +0 -0
  510. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  511. /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
  512. /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
  513. /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
  514. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  515. /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
  516. /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
  517. /package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +0 -0
  518. /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
  519. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
  520. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
  521. /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
  522. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  523. /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
  524. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +0 -0
  525. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  526. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  527. /package/dist/types/src/internal/{types → common/types}/base.d.ts +0 -0
  528. /package/dist/types/src/internal/{types → common/types}/typename.d.ts +0 -0
  529. /package/src/internal/{entities → Entity}/util.ts +0 -0
  530. /package/src/internal/{formats → Format}/date.ts +0 -0
  531. /package/src/internal/{formats → Format}/format.ts +0 -0
  532. /package/src/internal/{formats → Format}/index.ts +0 -0
  533. /package/src/internal/{formats → Format}/number.ts +0 -0
  534. /package/src/internal/{formats → Format}/object.ts +0 -0
  535. /package/src/internal/{formats → Format}/select.ts +0 -0
  536. /package/src/internal/{formats → Format}/string.ts +0 -0
  537. /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
  538. /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
  539. /package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +0 -0
  540. /package/src/internal/{object → Obj}/ids.ts +0 -0
  541. /package/src/internal/{object → Obj}/index.ts +0 -0
  542. /package/src/internal/{object → Obj}/schema-validator.test.ts +0 -0
  543. /package/src/internal/{ref → Ref}/index.ts +0 -0
  544. /package/src/internal/{schema → Type}/index.ts +0 -0
  545. /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
  546. /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
  547. /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
  548. /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
  549. /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
  550. /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
  551. /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
  552. /package/src/internal/{types → common/types}/base.ts +0 -0
  553. /package/src/internal/{types → common/types}/typename.ts +0 -0
  554. /package/src/internal/{types → common/types}/version.ts +0 -0
@@ -2,9 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type RefTypeId } from '../ref/ref';
6
-
7
- import { getProxyTarget } from './proxy-utils';
5
+ import { type RefTypeId } from '../../Ref/ref';
6
+ import { getProxyTarget, isProxy } from './proxy-utils';
8
7
  import { ChangeId, EventId } from './symbols';
9
8
 
10
9
  /**
@@ -15,6 +14,15 @@ import { ChangeId, EventId } from './symbols';
15
14
  */
16
15
  // TODO(wittjosiah): Consider throwing if obj doesn't have EventId instead of returning no-op.
17
16
  export const subscribe = (obj: unknown, callback: () => void): (() => void) => {
17
+ // Guard against non-reactive inputs (queue-stored typed objects, snapshots, plain shapes
18
+ // with branded symbols) before `getProxyTarget`'s `ProxyHandlerSlot` invariant kicks in.
19
+ // `Obj.isObject` (KindId-based) is satisfied by these inputs, so callers like
20
+ // `Atom.family((obj) => Atom.make((get) => Obj.subscribe(obj, ...)))` legitimately reach
21
+ // here with a non-proxy. Falling back to a no-op preserves the documented contract that
22
+ // values without subscription support get a no-op unsubscribe.
23
+ if (!isProxy(obj)) {
24
+ return () => {};
25
+ }
18
26
  const target = getProxyTarget(obj as any);
19
27
  if (target && EventId in target) {
20
28
  return (target as any)[EventId].on(callback);
@@ -24,7 +32,7 @@ export const subscribe = (obj: unknown, callback: () => void): (() => void) => {
24
32
 
25
33
  /**
26
34
  * Deeply removes readonly modifiers from all properties of T.
27
- * Inside Obj.change, all properties are fully mutable regardless of schema definition.
35
+ * Inside Obj.update, all properties are fully mutable regardless of schema definition.
28
36
  * Ref types are preserved as-is since they are value-like objects that are replaced, not mutated.
29
37
  * Primitive types (including branded primitives) are preserved as-is.
30
38
  */
@@ -6,14 +6,14 @@ import * as Schema from 'effect/Schema';
6
6
  import * as SchemaAST from 'effect/SchemaAST';
7
7
  import { describe, expect, test } from 'vitest';
8
8
 
9
- import { createEchoSchema } from '../../testing';
10
- import { PropertyMeta, getPropertyMetaAnnotation, getTypeAnnotation } from '../annotations';
11
- import { EchoObjectSchema } from '../entities';
9
+ import { createEchoSchema } from '../../../testing';
10
+ import { PropertyMeta, getPropertyMetaAnnotation, getTypeAnnotation } from '../../Annotation';
11
+ import { EchoObjectSchema } from '../../Entity';
12
12
 
13
13
  // TODO(dmaretskyi): Comment.
14
14
  const EmptySchemaType = Schema.Struct({}).pipe(
15
15
  EchoObjectSchema({
16
- typename: 'example.com/type/Empty',
16
+ typename: 'com.example.type.empty',
17
17
  version: '0.1.0',
18
18
  }),
19
19
  );
@@ -27,7 +27,7 @@ describe('dynamic schema', () => {
27
27
  field2: Schema.Boolean,
28
28
  }).pipe(
29
29
  EchoObjectSchema({
30
- typename: 'example.com/type/Test',
30
+ typename: 'com.example.type.test',
31
31
  version: '0.1.0',
32
32
  }),
33
33
  );
@@ -44,7 +44,7 @@ describe('dynamic schema', () => {
44
44
  field1: Schema.String,
45
45
  }).pipe(
46
46
  EchoObjectSchema({
47
- typename: 'example.com/type/Test',
47
+ typename: 'com.example.type.test',
48
48
  version: '0.1.0',
49
49
  }),
50
50
  );
@@ -95,7 +95,7 @@ describe('dynamic schema', () => {
95
95
  registered.updateFields({ field3: Schema.Boolean });
96
96
  registered.removeFields(['field2']);
97
97
  expect(getTypeAnnotation(registered)).to.deep.contain({
98
- typename: 'example.com/type/Empty',
98
+ typename: 'com.example.type.empty',
99
99
  version: '0.1.0',
100
100
  });
101
101
  expect(getPropertyMetaAnnotation(registered.getProperties()[0], metaNamespace)).to.deep.eq(metaInfo);
@@ -111,7 +111,7 @@ describe('dynamic schema', () => {
111
111
  });
112
112
 
113
113
  // First update.
114
- const newTypename1 = 'example.com/type/Individual';
114
+ const newTypename1 = 'com.example.type.individual';
115
115
  registered.updateTypename(newTypename1);
116
116
 
117
117
  // Basic typename update checks.
@@ -132,13 +132,13 @@ describe('dynamic schema', () => {
132
132
  expect(nameMeta).toEqual({ maxLength: 10 });
133
133
 
134
134
  // Second update to ensure multiple updates work.
135
- const newTypename2 = 'example.com/type/Person';
135
+ const newTypename2 = 'com.example.type.person';
136
136
  registered.updateTypename(newTypename2);
137
137
  expect(registered.typename).toBe(newTypename2);
138
138
  expect(registered.jsonSchema.$id).toBe(`dxn:type:${newTypename2}`);
139
139
  expect(registered.jsonSchema.typename).toBe(newTypename2);
140
140
  expect(getTypeAnnotation(registered)).to.deep.contain({
141
- typename: 'example.com/type/Person',
141
+ typename: 'com.example.type.person',
142
142
  version: '0.1.0',
143
143
  });
144
144
  });
@@ -5,12 +5,11 @@
5
5
  import * as Schema from 'effect/Schema';
6
6
  import { describe, expect, test } from 'vitest';
7
7
 
8
- import { TestSchema } from '../../testing';
9
- import { EchoObjectSchema } from '../entities';
10
- import { setValue } from '../object';
11
- import { Ref } from '../ref';
8
+ import { TestSchema } from '../../../testing';
9
+ import { EchoObjectSchema } from '../../Entity';
10
+ import { setValue } from '../../Obj';
11
+ import { Ref } from '../../Ref';
12
12
  import { foreignKey, getMeta } from '../types';
13
-
14
13
  import { makeObject } from './make-object';
15
14
  import { change, subscribe } from './reactive';
16
15
 
@@ -40,10 +39,10 @@ describe('complex schema validations', () => {
40
39
 
41
40
  test('references', () => {
42
41
  const Foo = Schema.Struct({ field: Schema.String }).pipe(
43
- EchoObjectSchema({ typename: 'example.com/type/Foo', version: '0.1.0' }),
42
+ EchoObjectSchema({ typename: 'com.example.type.foo', version: '0.1.0' }),
44
43
  );
45
44
  const Bar = Schema.Struct({ fooRef: Ref(Foo) }).pipe(
46
- EchoObjectSchema({ typename: 'example.com/type/Bar', version: '0.1.0' }),
45
+ EchoObjectSchema({ typename: 'com.example.type.bar', version: '0.1.0' }),
47
46
  );
48
47
  const field = 'hello';
49
48
  expect(() => makeObject(Bar, { fooRef: { id: '1', field } as any })).to.throw();
@@ -2,19 +2,16 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { type InspectOptionsStylized } from 'node:util';
6
-
7
5
  import * as Schema from 'effect/Schema';
8
6
  import * as SchemaAST from 'effect/SchemaAST';
7
+ import { type InspectOptionsStylized } from 'node:util';
9
8
 
10
9
  import { Event } from '@dxos/async';
11
10
  import { inspectCustom } from '@dxos/debug';
12
11
  import { invariant } from '@dxos/invariant';
13
12
 
14
- import { getSchemaDXN } from '../annotations';
15
- import { ObjectDeletedId } from '../entities';
16
- import { ParentId, SchemaId, TypeId } from '../types';
17
-
13
+ import { getSchemaDXN } from '../../Annotation';
14
+ import { ObjectDeletedId, ParentId, SchemaId, TypeId } from '../types';
18
15
  import { executeChange, isInChangeContext, queueNotification } from './change-context';
19
16
  import { defineHiddenProperty } from './define-hidden-property';
20
17
  import { createPropertyDeleteError } from './errors';
@@ -229,7 +226,7 @@ export class TypedReactiveHandler implements ReactiveHandler<ProxyTarget> {
229
226
  set(target: ProxyTarget, prop: string | symbol, value: any, receiver: any): boolean {
230
227
  const echoRoot = getEchoRoot(target);
231
228
 
232
- // Check readonly enforcement - mutations only allowed within Obj.change().
229
+ // Check readonly enforcement - mutations only allowed within Obj.update().
233
230
  // Skip check if the object is still being initialized (no ChangeId handler yet).
234
231
  // Also skip for non-initialized root objects (those without EventId).
235
232
  // Skip for symbol properties (internal infrastructure, not user data).
@@ -237,8 +234,8 @@ export class TypedReactiveHandler implements ReactiveHandler<ProxyTarget> {
237
234
  const isSymbolProp = typeof prop === 'symbol';
238
235
  if (isInitialized && !isSymbolProp && !isInChangeContext(echoRoot)) {
239
236
  throw new Error(
240
- `Cannot modify object property "${String(prop)}" outside of Obj.change(). ` +
241
- 'Use Obj.change(obj, (mutableObj) => { mutableObj.property = value; }) instead.',
237
+ `Cannot modify object property "${String(prop)}" outside of Obj.update(). ` +
238
+ 'Use Obj.update(obj, (mutableObj) => { mutableObj.property = value; }) instead.',
242
239
  );
243
240
  }
244
241
 
@@ -268,7 +265,7 @@ export class TypedReactiveHandler implements ReactiveHandler<ProxyTarget> {
268
265
  deleteProperty(target: ProxyTarget, property: string | symbol): boolean {
269
266
  const echoRoot = getEchoRoot(target);
270
267
 
271
- // Check readonly enforcement - mutations only allowed within Obj.change().
268
+ // Check readonly enforcement - mutations only allowed within Obj.update().
272
269
  // Skip for symbol properties (internal infrastructure, not user data).
273
270
  const isInitialized = (echoRoot as any)[ChangeId] === true || EventId in echoRoot;
274
271
  const isSymbolProp = typeof property === 'symbol';
@@ -286,15 +283,15 @@ export class TypedReactiveHandler implements ReactiveHandler<ProxyTarget> {
286
283
  defineProperty(target: ProxyTarget, property: string | symbol, attributes: PropertyDescriptor): boolean {
287
284
  const echoRoot = getEchoRoot(target);
288
285
 
289
- // Check readonly enforcement - mutations only allowed within Obj.change().
286
+ // Check readonly enforcement - mutations only allowed within Obj.update().
290
287
  // Skip check if the object is still being initialized (no ChangeId handler yet).
291
288
  // Skip for symbol properties (internal infrastructure, not user data).
292
289
  const isInitialized = ChangeId in echoRoot || EventId in echoRoot;
293
290
  const isSymbolProp = typeof property === 'symbol';
294
291
  if (isInitialized && !isSymbolProp && !isInChangeContext(echoRoot)) {
295
292
  throw new Error(
296
- `Cannot modify object property "${String(property)}" outside of Obj.change(). ` +
297
- 'Use Obj.change(obj, (mutableObj) => { mutableObj.property = value; }) instead.',
293
+ `Cannot modify object property "${String(property)}" outside of Obj.update(). ` +
294
+ 'Use Obj.update(obj, (mutableObj) => { mutableObj.property = value; }) instead.',
298
295
  );
299
296
  }
300
297
 
@@ -6,9 +6,8 @@ import * as Schema from 'effect/Schema';
6
6
  import type * as Types from 'effect/Types';
7
7
  import { describe, expect, test } from 'vitest';
8
8
 
9
- import { EchoObjectSchema } from '../entities';
9
+ import { EchoObjectSchema } from '../../Entity';
10
10
  import { getSchema } from '../types';
11
-
12
11
  import { makeObject } from './make-object';
13
12
  import { change } from './reactive';
14
13
 
@@ -16,7 +15,7 @@ const Organization = Schema.Struct({
16
15
  name: Schema.String,
17
16
  }).pipe(
18
17
  EchoObjectSchema({
19
- typename: 'example.com/type/Organization',
18
+ typename: 'com.example.type.organization',
20
19
  version: '0.1.0',
21
20
  }),
22
21
  );
@@ -34,7 +33,7 @@ const Contact = Schema.Struct(
34
33
  ).pipe(
35
34
  Schema.partial,
36
35
  EchoObjectSchema({
37
- typename: 'example.com/type/Person',
36
+ typename: 'com.example.type.person',
38
37
  version: '0.1.0',
39
38
  }),
40
39
  );
@@ -87,7 +86,7 @@ describe('EchoObjectSchema class DSL', () => {
87
86
  }
88
87
 
89
88
  {
90
- // Plain object (not a reactive proxy) - doesn't need Obj.change.
89
+ // Plain object (not a reactive proxy) - doesn't need Obj.update.
91
90
  // Note: Schema.Schema.Type generates readonly types, so we cast to mutable for plain objects.
92
91
  type Test1 = Types.Mutable<Schema.Schema.Type<typeof schema>>;
93
92
 
@@ -101,7 +100,7 @@ describe('EchoObjectSchema class DSL', () => {
101
100
  meta: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),
102
101
  }).pipe(
103
102
  EchoObjectSchema({
104
- typename: 'dxos.org/type/FunctionTrigger',
103
+ typename: 'org.dxos.type.functionTrigger',
105
104
  version: '0.1.0',
106
105
  }),
107
106
  );
@@ -46,7 +46,7 @@ export const EntityKindSchema = Schema.Enums(EntityKind);
46
46
  * Typename for generic object references (Type.Obj / Ref.Ref(Obj.Unknown)).
47
47
  * Used when referencing any object without a specific schema.
48
48
  */
49
- export const ANY_OBJECT_TYPENAME = 'dxos.org/schema/AnyObject';
49
+ export const ANY_OBJECT_TYPENAME = 'org.dxos.schema.anyObject';
50
50
 
51
51
  /**
52
52
  * Version for generic object references.
@@ -5,5 +5,6 @@
5
5
  export * from './base';
6
6
  export * from './entity';
7
7
  export * from './meta';
8
+ export * from './model-symbols';
8
9
  export * from './typename';
9
10
  export * from './version';
@@ -8,8 +8,7 @@ import { ForeignKey } from '@dxos/echo-protocol';
8
8
  import { invariant } from '@dxos/invariant';
9
9
  import { type Comparator, intersection } from '@dxos/util';
10
10
 
11
- import type * as Entity from '../../Entity';
12
-
11
+ import type * as Entity from '../../../Entity';
13
12
  import { type AnyProperties } from './base';
14
13
 
15
14
  /**
@@ -0,0 +1,69 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ /**
6
+ * Internal symbol/string constants for the echo object model.
7
+ * Defined in common/ so proxy/ can use them without importing from Entity/.
8
+ * Entity/ re-exports these for external consumers.
9
+ */
10
+
11
+ /**
12
+ * Property name for self DXN when object is serialized to JSON.
13
+ */
14
+ export const ATTR_SELF_DXN = '@dxn';
15
+
16
+ /**
17
+ * DXN to the object itself.
18
+ */
19
+ export const SelfDXNId = Symbol.for('@dxos/echo/DXN');
20
+
21
+ /**
22
+ * Property name for deleted when object is serialized to JSON.
23
+ */
24
+ export const ATTR_DELETED = '@deleted';
25
+
26
+ /**
27
+ * Deletion marker.
28
+ */
29
+ export const ObjectDeletedId = Symbol.for('@dxos/echo/Deleted');
30
+
31
+ /**
32
+ * Object version accessor symbol.
33
+ */
34
+ export const ObjectVersionId: unique symbol = Symbol.for('@dxos/echo/Version');
35
+
36
+ /**
37
+ * Object database accessor symbol.
38
+ */
39
+ export const ObjectDatabaseId = Symbol.for('@dxos/echo/Database');
40
+
41
+ /**
42
+ * Property name for relation source when object is serialized to JSON.
43
+ */
44
+ export const ATTR_RELATION_SOURCE = '@relationSource';
45
+
46
+ /**
47
+ * Used to access relation source ref on live ECHO objects.
48
+ */
49
+ export const RelationSourceId: unique symbol = Symbol.for('@dxos/echo/RelationSource');
50
+
51
+ /**
52
+ * Used to access relation source DXN on live ECHO objects.
53
+ */
54
+ export const RelationSourceDXNId: unique symbol = Symbol.for('@dxos/echo/RelationSourceDXN');
55
+
56
+ /**
57
+ * Property name for relation target when object is serialized to JSON.
58
+ */
59
+ export const ATTR_RELATION_TARGET = '@relationTarget';
60
+
61
+ /**
62
+ * Used to access relation target ref on live ECHO objects.
63
+ */
64
+ export const RelationTargetId: unique symbol = Symbol.for('@dxos/echo/RelationTarget');
65
+
66
+ /**
67
+ * Used to access relation target DXN on live ECHO objects.
68
+ */
69
+ export const RelationTargetDXNId: unique symbol = Symbol.for('@dxos/echo/RelationTargetDXN');
@@ -5,35 +5,13 @@
5
5
  // TODO(burdon): Import directly (not part of ECHO API).
6
6
  export { JsonPath, JsonProp, getValue, splitJsonPath } from '@dxos/effect';
7
7
 
8
- export * from './annotations';
9
- export * from './api';
10
- export * from './entities';
11
- export * from './formats';
12
- export * from './json-schema';
13
- export * from './ref';
14
- export * from './types';
15
-
8
+ export * from './Annotation';
9
+ export * from './common';
10
+ export * from './Entity';
11
+ export * from './Format';
12
+ export * from './JsonSchema';
16
13
  // TODO(wittjosiah): Required to ensure types are portable (need to export all types required for downstream inference).
17
- export * from './object';
18
- export * from './proxy';
19
- export * from './schema';
20
-
21
- // export {
22
- // createObject,
23
- // createQueueDXN,
24
- // isDeleted,
25
- // objectFromJSON,
26
- // objectToJSON,
27
- // setRefResolverOnData,
28
- // SchemaValidator,
29
- // TypedObject,
30
- // } from './object';
31
- // export { makeObject } from './proxy';
32
- // export {
33
- // type BaseSchema,
34
- // EchoSchema,
35
- // ImmutableSchema,
36
- // RuntimeSchemaRegistry,
37
- // PersistentSchema,
38
- // isMutable,
39
- // } from './schema';
14
+ export * from './Obj';
15
+ export * from './Query';
16
+ export * from './Ref';
17
+ export * from './Type';
@@ -8,7 +8,6 @@ import { describe, test } from 'vitest';
8
8
  import { raise } from '@dxos/debug';
9
9
 
10
10
  import { Entity, Obj, Ref, Relation, Type } from '../index';
11
-
12
11
  import { TestSchema } from './test-schema';
13
12
 
14
13
  describe('Experimental API review', () => {
@@ -17,11 +16,11 @@ describe('Experimental API review', () => {
17
16
  const schema = Obj.getSchema(contact) ?? raise(new Error('No schema found'));
18
17
 
19
18
  expect(Type.getDXN(schema)?.typename).to.eq(TestSchema.Person.typename);
20
- expect(Type.getTypename(schema)).to.eq('example.com/type/Person');
19
+ expect(Type.getTypename(schema)).to.eq('com.example.type.person');
21
20
  expect(Type.getVersion(schema)).to.eq('0.1.0');
22
21
  expect(Type.getMeta(schema)).to.deep.eq({
23
22
  kind: Entity.Kind.Object,
24
- typename: 'example.com/type/Person',
23
+ typename: 'com.example.type.person',
25
24
  version: '0.1.0',
26
25
  });
27
26
  });
@@ -6,7 +6,6 @@ import { DatabaseDirectory, ObjectStructure } from '@dxos/echo-protocol';
6
6
  import { DXN, ObjectId, PublicKey } from '@dxos/keys';
7
7
 
8
8
  import { Type } from '../index';
9
-
10
9
  import { TestSchema } from './test-schema';
11
10
 
12
11
  const spaceKey = PublicKey.random();
@@ -19,7 +19,7 @@ export namespace TestSchema {
19
19
  */
20
20
  export const Expando = Schema.Struct({}, { key: Schema.String, value: Schema.Any }).pipe(
21
21
  Type.object({
22
- typename: 'example.com/type/Expando',
22
+ typename: 'com.example.type.expando',
23
23
  version: '0.1.0',
24
24
  }),
25
25
  );
@@ -65,7 +65,7 @@ export namespace TestSchema {
65
65
  /** @deprecated Use another test schema or create a specific local test schema. */
66
66
  export const Example = ExampleSchema.pipe(
67
67
  Type.object({
68
- typename: 'example.com/type/Example',
68
+ typename: 'com.example.type.example',
69
69
  version: '0.1.0',
70
70
  }),
71
71
  );
@@ -89,7 +89,7 @@ export namespace TestSchema {
89
89
 
90
90
  export const Message = MessageStruct.pipe(
91
91
  Type.object({
92
- typename: 'example.com/type/Message',
92
+ typename: 'com.example.type.message',
93
93
  version: '0.1.0',
94
94
  }),
95
95
  );
@@ -110,7 +110,7 @@ export namespace TestSchema {
110
110
  ),
111
111
  }).pipe(
112
112
  Type.object({
113
- typename: 'example.com/type/Organization',
113
+ typename: 'com.example.type.organization',
114
114
  version: '0.1.0',
115
115
  }),
116
116
  );
@@ -144,7 +144,7 @@ export namespace TestSchema {
144
144
  }).pipe(
145
145
  Schema.partial,
146
146
  Type.object({
147
- typename: 'example.com/type/Person',
147
+ typename: 'com.example.type.person',
148
148
  version: '0.1.0',
149
149
  }),
150
150
  );
@@ -166,7 +166,7 @@ export namespace TestSchema {
166
166
  }).pipe(
167
167
  Schema.partial,
168
168
  Type.object({
169
- typename: 'example.com/type/Task',
169
+ typename: 'com.example.type.task',
170
170
  version: '0.1.0',
171
171
  }),
172
172
  );
@@ -179,7 +179,7 @@ export namespace TestSchema {
179
179
 
180
180
  export const HasManager = Schema.Struct({}).pipe(
181
181
  Type.relation({
182
- typename: 'example.com/type/HasManager',
182
+ typename: 'com.example.type.has-manager',
183
183
  version: '0.1.0',
184
184
  source: Person,
185
185
  target: Person,
@@ -197,7 +197,7 @@ export namespace TestSchema {
197
197
  since: Schema.optional(Schema.String),
198
198
  }).pipe(
199
199
  Type.relation({
200
- typename: 'example.com/type/EmployedBy',
200
+ typename: 'com.example.type.employed-by',
201
201
  version: '0.1.0',
202
202
  source: Person,
203
203
  target: Organization,
@@ -231,7 +231,7 @@ export namespace TestSchema {
231
231
  }).pipe(
232
232
  Schema.partial,
233
233
  Type.object({
234
- typename: 'example.com/type/Container',
234
+ typename: 'com.example.type.container',
235
235
  version: '0.1.0',
236
236
  }),
237
237
  );
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/Database.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\nimport type * as Types from 'effect/Types';\n\nimport { promiseWithCauseCapture } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, type SpaceId } from '@dxos/keys';\n\nimport type * as Entity from './Entity';\nimport * as Err from './Err';\nimport type * as Filter from './Filter';\nimport type * as Hypergraph from './Hypergraph';\nimport { isInstanceOf } from './internal/annotations';\nimport type { Ref } from './internal/ref/ref';\nimport { type AnyProperties } from './internal/types';\nimport type * as Obj from './Obj';\nimport type * as Query from './Query';\nimport type * as QueryResult from './QueryResult';\nimport type * as SchemaRegistry from './SchemaRegistry';\nimport type * as Type from './Type';\n\n/**\n * `query` API function declaration.\n */\n// TODO(burdon): Reconcile Query and Filter (should only have one root type).\nexport interface QueryFn {\n <Q extends Query.Any>(query: Q): QueryResult.QueryResult<Query.Type<Q>>;\n <F extends Filter.Any>(filter: F): QueryResult.QueryResult<Filter.Type<F>>;\n}\n\n/**\n * Common interface for Database and Queue.\n */\nexport interface Queryable {\n query: QueryFn;\n}\n\nexport type GetObjectByIdOptions = {\n deleted?: boolean;\n};\n\nexport type ObjectPlacement = 'root-doc' | 'linked-doc';\n\nexport type AddOptions = {\n /**\n * Where to place the object in the Automerge document tree.\n * Root document is always loaded with the space.\n * Linked documents are loaded lazily.\n * Placing large number of objects in the root document may slow down the initial load.\n *\n * @default 'linked-doc'\n */\n placeIn?: ObjectPlacement;\n};\n\nexport type FlushOptions = {\n /**\n * Write any pending changes to disk.\n * @default true\n */\n disk?: boolean;\n\n /**\n * Wait for pending index updates.\n * @default false\n */\n indexes?: boolean;\n\n /**\n * Flush pending updates to objects and queries.\n * @default false\n */\n updates?: boolean;\n};\n\n/**\n * Identifier denoting an ECHO Database.\n */\nexport const TypeId = Symbol.for('@dxos/echo/Database');\nexport type TypeId = typeof TypeId;\n\n/**\n * ECHO Database interface.\n */\nexport interface Database extends Queryable {\n readonly [TypeId]: TypeId;\n\n get spaceId(): SpaceId;\n\n // TODO(burdon): Can we move this into graph?\n get schemaRegistry(): SchemaRegistry.SchemaRegistry;\n\n get graph(): Hypergraph.Hypergraph;\n\n toJSON(): object;\n\n /**\n * Return object by local ID.\n */\n getObjectById<T extends Obj.Unknown = Obj.OfShape<AnyProperties>>(\n id: string,\n opts?: GetObjectByIdOptions,\n ): T | undefined;\n\n /**\n * Query objects.\n */\n query: QueryFn;\n\n /**\n * Creates a reference to an existing object in the database.\n *\n * NOTE: The reference may be dangling if the object is not present in the database.\n * NOTE: Difference from `Ref.fromDXN`\n * `Ref.fromDXN(dxn)` returns an unhydrated reference. The `.load` and `.target` APIs will not work.\n * `db.makeRef(dxn)` is preferable in cases with access to the database.\n */\n makeRef<T extends Entity.Unknown = Entity.Unknown>(dxn: DXN): Ref<T>;\n\n /**\n * Adds object to the database.\n */\n add<T extends Entity.Unknown = Entity.Unknown>(obj: T, opts?: AddOptions): T;\n\n /**\n * Removes object from the database.\n */\n // TODO(burdon): Return true if removed (currently throws if not present).\n remove(obj: Entity.Unknown): void;\n\n /**\n * Wait for all pending changes to be saved to disk.\n * Optionaly waits for changes to be propagated to indexes and event handlers.\n */\n flush(opts?: FlushOptions): Promise<void>;\n}\n\nexport const isDatabase = (obj: unknown): obj is Database => {\n return obj ? typeof obj === 'object' && TypeId in obj && obj[TypeId] === TypeId : false;\n};\n\nexport const Database: Schema.Schema<Database> = Schema.Any.pipe(Schema.filter((space) => isDatabase(space)));\n\n/**\n * Effect service tag for Database dependency injection.\n */\nexport class Service extends Context.Tag('@dxos/echo/Database/Service')<\n Service,\n {\n readonly db: Database;\n }\n>() {}\n\n/**\n * Layer that provides a Database service that throws when accessed.\n * Useful as a default layer when no database is available.\n */\nexport const notAvailable = Layer.succeed(Service, {\n get db(): Database {\n throw new Error('Database not available');\n },\n});\n\n/**\n * Creates a Database service instance from a Database.\n */\nexport const makeService = (db: Database): Context.Tag.Service<Service> => {\n return {\n get db() {\n return db;\n },\n };\n};\n\n/**\n * Creates a Layer that provides the Database service.\n */\nexport const layer = (db: Database): Layer.Layer<Service> => {\n return Layer.succeed(Service, makeService(db));\n};\n\n/**\n * Returns the space ID of the database.\n */\nexport const spaceId = Effect.gen(function* () {\n const { db } = yield* Service;\n return db.spaceId;\n});\n\n/**\n * Resolves an object by its DXN.\n */\nexport const resolve: {\n // No type check.\n (ref: DXN | Ref<any>): Effect.Effect<Entity.Unknown, never, Service>;\n // Check matches schema.\n <S extends Type.AnyEntity>(\n ref: DXN | Ref<any>,\n schema: S,\n ): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service>;\n} = (<S extends Type.AnyEntity>(\n ref: DXN | Ref<any>,\n schema?: S,\n): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service> =>\n Effect.gen(function* () {\n const { db } = yield* Service;\n const dxn = ref instanceof DXN ? ref : ref.dxn;\n const object = yield* promiseWithCauseCapture(() =>\n db.graph\n .createRefResolver({\n context: {\n space: db.spaceId,\n },\n })\n .resolve(dxn),\n );\n\n if (!object) {\n return yield* Effect.fail(new Err.ObjectNotFoundError(dxn));\n }\n invariant(!schema || isInstanceOf(schema, object), 'Object type mismatch.');\n return object as any;\n })) as any;\n\n/**\n * Loads an object reference.\n */\nexport const load: <T>(ref: Ref<T>) => Effect.Effect<T, Err.ObjectNotFoundError, never> = Effect.fn(function* (ref) {\n const object = yield* promiseWithCauseCapture(() => ref.tryLoad());\n if (!object) {\n return yield* Effect.fail(new Err.ObjectNotFoundError(ref.dxn));\n }\n return object;\n});\n\n/**\n * Loads an object reference option.\n */\n// TODO(dmaretskyi): Do we need this -- you can just use `Effect.catchTag` in calling code instead.\nexport const loadOption: <T>(ref: Ref<T>) => Effect.Effect<Option.Option<T>, never, never> = Effect.fn(function* (ref) {\n const object = yield* load(ref).pipe(Effect.catchTag('ObjectNotFoundError', () => Effect.succeed(undefined)));\n\n return Option.fromNullable(object);\n});\n\n/**\n * Adds an object to the database.\n * @see {@link Database.add}\n */\nexport const add = <T extends Entity.Unknown>(obj: T): Effect.Effect<T, never, Service> =>\n Service.pipe(Effect.map(({ db }) => db.add(obj)));\n\n/**\n * Removes an object from the database.\n * @see {@link Database.remove}\n */\nexport const remove = <T extends Entity.Unknown>(obj: T): Effect.Effect<void, never, Service> =>\n Service.pipe(Effect.map(({ db }) => db.remove(obj)));\n\n/**\n * Flushes pending changes to disk.\n * @see {@link Database.flush}\n */\nexport const flush = (opts?: FlushOptions) =>\n Service.pipe(Effect.flatMap(({ db }) => promiseWithCauseCapture(() => db.flush(opts))));\n\n/**\n * Creates a `QueryResult` object that can be subscribed to.\n */\nexport const query: {\n <Q extends Query.Any>(query: Q): Effect.Effect<QueryResult.QueryResult<Query.Type<Q>>, never, Service>;\n <F extends Filter.Any>(filter: F): Effect.Effect<QueryResult.QueryResult<Filter.Type<F>>, never, Service>;\n} = (queryOrFilter: Query.Any | Filter.Any) =>\n Service.pipe(\n Effect.map(({ db }) => db.query(queryOrFilter as any) as QueryResult.QueryResult<any>),\n Effect.withSpan('Database.query'),\n );\n\n/**\n * Executes the query once and returns the results.\n */\nexport const runQuery: {\n <Q extends Query.Any>(query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;\n <F extends Filter.Any>(filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;\n} = (queryOrFilter: Query.Any | Filter.Any) =>\n query(queryOrFilter as any).pipe(Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())));\n\n/**\n * Creates a schema query result that can be subscribed to.\n */\n// TODO(dmaretskyi): Change API to `yield* Database.querySchema(...).first` and `yield* Database.querySchema(...).schema`.\nexport const schemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(\n schemaQueryOptions?: Q & SchemaRegistry.Query,\n): Effect.Effect<QueryResult.QueryResult<SchemaRegistry.ExtractQueryResult<Q>>, never, Service> =>\n Service.pipe(\n Effect.map(({ db }) => db.schemaRegistry.query(schemaQueryOptions)),\n Effect.withSpan('Database.schemaQuery'),\n );\n\n/**\n * Executes a schema query once and returns the results.\n */\nexport const runSchemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(\n schemaQueryOptions?: Q & SchemaRegistry.Query,\n): Effect.Effect<SchemaRegistry.ExtractQueryResult<Q>[], never, Service> =>\n schemaQuery(schemaQueryOptions).pipe(\n Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())),\n );\n"],
5
- "mappings": "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",
6
- "names": ["Context", "Effect", "Layer", "Option", "Schema", "promiseWithCauseCapture", "invariant", "DXN", "TypeId", "Symbol", "for", "isDatabase", "obj", "Database", "Any", "pipe", "filter", "space", "Service", "Tag", "notAvailable", "succeed", "db", "Error", "makeService", "layer", "spaceId", "gen", "resolve", "ref", "schema", "dxn", "DXN", "object", "promiseWithCauseCapture", "graph", "createRefResolver", "context", "fail", "ObjectNotFoundError", "invariant", "isInstanceOf", "load", "fn", "tryLoad", "loadOption", "catchTag", "undefined", "fromNullable", "add", "map", "remove", "flush", "opts", "flatMap", "query", "queryOrFilter", "withSpan", "runQuery", "queryResult", "run", "schemaQuery", "schemaQueryOptions", "schemaRegistry", "runSchemaQuery"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/Filter.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Match from 'effect/Match';\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\nimport type * as Types from 'effect/Types';\n\nimport { type ForeignKey, type QueryAST } from '@dxos/echo-protocol';\nimport { assertArgument } from '@dxos/invariant';\nimport { DXN, ObjectId } from '@dxos/keys';\n\nimport * as internal from './internal';\nimport * as Ref from './Ref';\n\nexport interface Filter<T> {\n // TODO(dmaretskyi): See new effect-schema approach to variance.\n '~Filter': { value: Types.Contravariant<T> };\n\n ast: QueryAST.Filter;\n}\n\nexport type Props<T> = {\n // Predicate or a value as a shorthand for `eq`.\n [K in keyof T & string]?: Filter<T[K]> | T[K];\n};\n\nexport type Any = Filter<any>;\n\nexport type Type<F extends Any> = F extends Filter<infer T> ? T : never;\n\nclass FilterClass implements Any {\n private static 'variance': Any['~Filter'] = {} as Any['~Filter'];\n\n constructor(public readonly ast: QueryAST.Filter) {}\n\n '~Filter' = FilterClass.variance;\n}\n\nexport const is = (value: unknown): value is Any => {\n return typeof value === 'object' && value !== null && '~Filter' in value;\n};\n\n/** Construct a filter from an ast. */\nexport const fromAst = (ast: QueryAST.Filter): Any => {\n return new FilterClass(ast);\n};\n\n/**\n * Filter that matches all objects.\n */\n// TODO(dmaretskyi): `Entity.Any` would be more type-safe, but causes annoying errors in existing code\nexport const everything = (): FilterClass => {\n return new FilterClass({\n type: 'object',\n typename: null,\n props: {},\n });\n};\n\n/**\n * Filter that matches no objects.\n */\nexport const nothing = (): FilterClass => {\n return new FilterClass({\n type: 'not',\n filter: {\n type: 'object',\n typename: null,\n props: {},\n },\n });\n};\n\n/*\n * Filter by ObjectId.\n */\nexport const id = (...ids: ObjectId[]): Any => {\n assertArgument(\n ids.every((id) => ObjectId.isValid(id)),\n 'ids',\n 'ids must be valid',\n );\n\n if (ids.length === 0) {\n return nothing();\n }\n\n return new FilterClass({\n type: 'object',\n typename: null,\n id: ids,\n props: {},\n });\n};\n\n/**\n * Filter by type.\n */\nexport const type = <S extends Schema.Schema.All>(\n schema: S | string,\n props?: Props<Schema.Schema.Type<S>>,\n): Filter<Schema.Schema.Type<S>> => {\n if (Schema.isSchema(schema) && SchemaAST.isUnion(schema.ast)) {\n const typenames = schema.ast.types.map((type) => internal.getTypeDXNFromSpecifier(Schema.make(type)));\n return new FilterClass({\n type: 'or',\n filters: typenames.map((typename) => ({\n type: 'object',\n typename: typename.toString(),\n props: {},\n })),\n });\n }\n\n const dxn = internal.getTypeDXNFromSpecifier(schema);\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n ...propsFilterToAst(props ?? {}),\n });\n};\n\n/**\n * Filter by non-qualified typename.\n */\nexport const typename = (typename: string): Any => {\n assertArgument(!typename.startsWith('dxn:'), 'typename', 'Typename must no be qualified');\n return new FilterClass({\n type: 'object',\n typename: DXN.fromTypename(typename).toString(),\n props: {},\n });\n};\n\n/**\n * Filter by fully qualified type DXN.\n */\nexport const typeDXN = (dxn: DXN): Any => {\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n props: {},\n });\n};\n\n/**\n * Filter by tag.\n */\nexport const tag = (tag: string): Any => {\n return new FilterClass({\n type: 'tag',\n tag,\n });\n};\n\n/**\n * Filter by properties.\n */\nexport const props = <T>(props: Props<T>): Filter<T> => {\n return new FilterClass({\n type: 'object',\n typename: null,\n ...propsFilterToAst(props),\n });\n};\n\nexport type TextSearchOptions = {\n // TODO(dmaretskyi): Hybrid search.\n type?: 'full-text' | 'vector';\n};\n\n/**\n * Full-text or vector search.\n */\nexport const text = (\n // TODO(dmaretskyi): Consider passing a vector here, but really the embedding should be done on the query-executor side.\n text: string,\n options?: TextSearchOptions,\n): Any => {\n return new FilterClass({\n type: 'text-search',\n text,\n searchKind: options?.type,\n });\n};\n\n/**\n * Filter by foreign keys.\n */\nexport const foreignKeys = <S extends Schema.Schema.All>(\n schema: S | string,\n keys: ForeignKey[],\n): Filter<Schema.Schema.Type<S>> => {\n const dxn = internal.getTypeDXNFromSpecifier(schema);\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n props: {},\n foreignKeys: keys,\n });\n};\n\n/**\n * Predicate for property to be equal to the provided value.\n */\nexport const eq = <T>(value: T): Filter<T | undefined> => {\n if (!Ref.isRef(value) && typeof value === 'object' && value !== null) {\n throw new TypeError('Cannot use object as a value for eq filter');\n }\n\n return new FilterClass({\n type: 'compare',\n operator: 'eq',\n value: Ref.isRef(value) ? value.noInline().encode() : value,\n });\n};\n\n/**\n * Predicate for property to be not equal to the provided value.\n */\nexport const neq = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'neq',\n value,\n });\n};\n\n/**\n * Predicate for property to be greater than the provided value.\n */\nexport const gt = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'gt',\n value,\n });\n};\n\n/**\n * Predicate for property to be greater than or equal to the provided value.\n */\nexport const gte = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'gte',\n value,\n });\n};\n\n/**\n * Predicate for property to be less than the provided value.\n */\nexport const lt = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'lt',\n value,\n });\n};\n\n/**\n * Predicate for property to be less than or equal to the provided value.\n */\nexport const lte = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'lte',\n value,\n });\n};\n\n/**\n * Predicate for property to be in the provided array.\n * @param values - Values to check against.\n */\nconst in$ = <T>(...values: T[]): Filter<T | undefined> => {\n return new FilterClass({\n type: 'in',\n values,\n });\n};\nexport { in$ as in };\n\n/**\n * Predicate for an array property to contain the provided value.\n * @param value - Value to check against.\n */\nexport const contains = <T>(value: T): Filter<readonly T[] | undefined> => {\n return new FilterClass({\n type: 'contains',\n value,\n });\n};\n\n/**\n * Predicate for property to be in the provided range.\n * @param from - Start of the range (inclusive).\n * @param to - End of the range (exclusive).\n */\nexport const between = <T>(from: T, to: T): Filter<unknown> => {\n return new FilterClass({\n type: 'range',\n from,\n to,\n });\n};\n\n/**\n * Negate the filter.\n */\nexport const not = <F extends Any>(filter: F): Filter<Type<F>> => {\n return new FilterClass({\n type: 'not',\n filter: filter.ast,\n });\n};\n\n/**\n * Combine filters with a logical AND.\n */\nexport const and = <Filters extends readonly Any[]>(...filters: Filters): Filter<Type<Filters[number]>> => {\n return new FilterClass({\n type: 'and',\n filters: filters.map((f) => f.ast),\n });\n};\n\n/**\n * Combine filters with a logical OR.\n */\nexport const or = <Filters extends readonly Any[]>(...filters: Filters): Filter<Type<Filters[number]>> => {\n return new FilterClass({\n type: 'or',\n filters: filters.map((f) => f.ast),\n });\n};\n\n// TODO(dmaretskyi): Add `Filter.match` to support pattern matching on string props.\n\nconst propsFilterToAst = (predicates: Props<any>): Pick<QueryAST.FilterObject, 'id' | 'props'> => {\n let idFilter: readonly ObjectId[] | undefined;\n if ('id' in predicates) {\n assertArgument(\n typeof predicates.id === 'string' || Array.isArray(predicates.id),\n 'predicates.id',\n 'invalid id filter',\n );\n idFilter = typeof predicates.id === 'string' ? [predicates.id] : predicates.id;\n Schema.Array(ObjectId).pipe(Schema.validateSync)(idFilter);\n }\n\n return {\n id: idFilter,\n props: Object.fromEntries(\n Object.entries(predicates)\n .filter(([prop, _value]) => prop !== 'id')\n .map(([prop, predicate]) => [prop, processPredicate(predicate)]),\n ) as Record<string, QueryAST.Filter>,\n };\n};\n\nconst processPredicate = (predicate: any): QueryAST.Filter => {\n return Match.value(predicate).pipe(\n Match.withReturnType<QueryAST.Filter>(),\n Match.when(is, (predicate) => predicate.ast),\n // TODO(wittjosiah): Add support for array predicates.\n Match.when(Array.isArray, (_predicate) => {\n throw new Error('Array predicates are not yet supported.');\n }),\n Match.when(\n (predicate: any) => !Ref.isRef(predicate) && typeof predicate === 'object' && predicate !== null,\n (predicate) => {\n const nestedProps = Object.fromEntries(\n Object.entries(predicate).map(([key, value]) => [key, processPredicate(value)]),\n );\n\n return {\n type: 'object',\n typename: null,\n props: nestedProps,\n };\n },\n ),\n Match.orElse((value) => eq(value).ast),\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["Match", "Schema", "SchemaAST", "assertArgument", "DXN", "ObjectId", "FilterClass", "ast", "variance", "is", "value", "fromAst", "everything", "type", "typename", "props", "nothing", "filter", "id", "ids", "assertArgument", "every", "ObjectId", "isValid", "length", "schema", "isSchema", "isUnion", "typenames", "types", "map", "getTypeDXNFromSpecifier", "make", "filters", "toString", "dxn", "propsFilterToAst", "startsWith", "DXN", "fromTypename", "typeDXN", "tag", "text", "options", "searchKind", "foreignKeys", "keys", "eq", "isRef", "TypeError", "operator", "noInline", "encode", "neq", "gt", "gte", "lt", "lte", "in$", "values", "contains", "value", "FilterClass", "type", "between", "from", "to", "not", "filter", "ast", "and", "filters", "map", "f", "or", "propsFilterToAst", "predicates", "idFilter", "assertArgument", "id", "Array", "isArray", "Schema", "ObjectId", "pipe", "validateSync", "props", "Object", "fromEntries", "entries", "prop", "_value", "predicate", "processPredicate", "withReturnType", "when", "is", "_predicate", "Error", "isRef", "nestedProps", "key", "typename", "orElse", "eq"]
7
- }