@dxos/echo 0.8.4-main.ef1bc66f44 → 0.8.4-main.f466a3d56e

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 (565) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +5 -5
  3. package/dist/lib/neutral/Annotation.mjs +7 -3
  4. package/dist/lib/neutral/Database.mjs +8 -4
  5. package/dist/lib/neutral/Entity.mjs +24 -14
  6. package/dist/lib/neutral/Err.mjs +3 -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 +52 -0
  10. package/dist/lib/neutral/Feed.mjs.map +7 -0
  11. package/dist/lib/neutral/Filter.mjs +23 -10
  12. package/dist/lib/neutral/Format.mjs +3 -3
  13. package/dist/lib/neutral/JsonSchema.mjs +9 -9
  14. package/dist/lib/neutral/Key.mjs +1 -1
  15. package/dist/lib/neutral/Migration.mjs +17 -0
  16. package/dist/lib/neutral/Migration.mjs.map +7 -0
  17. package/dist/lib/neutral/Obj.mjs +34 -17
  18. package/dist/lib/neutral/Order.mjs +1 -1
  19. package/dist/lib/neutral/Query.mjs +21 -9
  20. package/dist/lib/neutral/QueryResult.mjs +1 -1
  21. package/dist/lib/neutral/Ref.mjs +11 -7
  22. package/dist/lib/neutral/Relation.mjs +23 -13
  23. package/dist/lib/neutral/SchemaRegistry.mjs +1 -1
  24. package/dist/lib/neutral/Tag.mjs +14 -10
  25. package/dist/lib/neutral/Type.mjs +13 -23
  26. package/dist/lib/neutral/{chunk-N2QNHMT5.mjs → chunk-44HT3MEC.mjs} +2 -2
  27. package/dist/lib/neutral/{chunk-N2QNHMT5.mjs.map → chunk-44HT3MEC.mjs.map} +1 -1
  28. package/dist/lib/neutral/{chunk-XAJMXQ4H.mjs → chunk-5SL5LDLD.mjs} +6 -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-APHSOTIX.mjs +34 -0
  32. package/dist/lib/neutral/chunk-APHSOTIX.mjs.map +7 -0
  33. package/dist/lib/neutral/{chunk-ZAHWXGK4.mjs → chunk-APJKDGFL.mjs} +85 -7
  34. package/dist/lib/neutral/chunk-APJKDGFL.mjs.map +7 -0
  35. package/dist/lib/neutral/{chunk-4L6DOFXP.mjs → chunk-BICZKPQG.mjs} +1 -1
  36. package/dist/lib/neutral/{chunk-4L6DOFXP.mjs.map → chunk-BICZKPQG.mjs.map} +1 -1
  37. package/dist/lib/neutral/chunk-BMB7IHGB.mjs +346 -0
  38. package/dist/lib/neutral/chunk-BMB7IHGB.mjs.map +7 -0
  39. package/dist/lib/neutral/chunk-FIWO2FZK.mjs +36 -0
  40. package/dist/lib/neutral/chunk-FIWO2FZK.mjs.map +7 -0
  41. package/dist/lib/neutral/chunk-G54OX4IX.mjs +2452 -0
  42. package/dist/lib/neutral/chunk-G54OX4IX.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-LKFNEFHF.mjs → chunk-I2DARWPX.mjs} +18 -20
  46. package/dist/lib/neutral/chunk-I2DARWPX.mjs.map +7 -0
  47. package/dist/lib/neutral/chunk-J54QMAKF.mjs +421 -0
  48. package/dist/lib/neutral/chunk-J54QMAKF.mjs.map +7 -0
  49. package/dist/lib/neutral/chunk-MGSQGHOD.mjs +206 -0
  50. package/dist/lib/neutral/chunk-MGSQGHOD.mjs.map +7 -0
  51. package/dist/lib/neutral/chunk-MLS7U7AT.mjs +734 -0
  52. package/dist/lib/neutral/chunk-MLS7U7AT.mjs.map +7 -0
  53. package/dist/lib/neutral/{chunk-KB7RIVLK.mjs → chunk-N4B7FHQT.mjs} +4 -4
  54. package/dist/lib/neutral/{chunk-KB7RIVLK.mjs.map → chunk-N4B7FHQT.mjs.map} +2 -2
  55. package/dist/lib/neutral/{chunk-K5K3Z62A.mjs → chunk-N7VOEPSV.mjs} +11 -3
  56. package/dist/lib/neutral/chunk-N7VOEPSV.mjs.map +7 -0
  57. package/dist/lib/neutral/chunk-PSZBLH53.mjs +81 -0
  58. package/dist/lib/neutral/chunk-PSZBLH53.mjs.map +7 -0
  59. package/dist/lib/neutral/{chunk-MTEHHY62.mjs → chunk-PT37DG2F.mjs} +77 -58
  60. package/dist/lib/neutral/chunk-PT37DG2F.mjs.map +7 -0
  61. package/dist/lib/neutral/{chunk-DLPC7DHQ.mjs → chunk-Q2KKKJSV.mjs} +5 -5
  62. package/dist/lib/neutral/chunk-Q2KKKJSV.mjs.map +7 -0
  63. package/dist/lib/neutral/chunk-Q7ZL2P5H.mjs +320 -0
  64. package/dist/lib/neutral/chunk-Q7ZL2P5H.mjs.map +7 -0
  65. package/dist/lib/neutral/{chunk-QARLJVDB.mjs → chunk-QRZ2I3ZM.mjs} +8 -4
  66. package/dist/lib/neutral/chunk-QRZ2I3ZM.mjs.map +7 -0
  67. package/dist/lib/neutral/{chunk-VUQGRDRI.mjs → chunk-SCPFDS2E.mjs} +40 -12
  68. package/dist/lib/neutral/chunk-SCPFDS2E.mjs.map +7 -0
  69. package/dist/lib/neutral/{chunk-RIMHNJ3E.mjs → chunk-TNBK56IN.mjs} +98 -44
  70. package/dist/lib/neutral/chunk-TNBK56IN.mjs.map +7 -0
  71. package/dist/lib/neutral/{chunk-7WE7SBA2.mjs → chunk-TRPZU2HV.mjs} +13 -13
  72. package/dist/lib/neutral/chunk-TRPZU2HV.mjs.map +7 -0
  73. package/dist/lib/neutral/{chunk-ROKO4RKJ.mjs → chunk-TTCSATUD.mjs} +2 -2
  74. package/dist/lib/neutral/chunk-TTCSATUD.mjs.map +7 -0
  75. package/dist/lib/neutral/{chunk-OMUPQMLR.mjs → chunk-V72DY6LU.mjs} +1 -1
  76. package/dist/lib/neutral/chunk-ZFACXBY6.mjs +136 -0
  77. package/dist/lib/neutral/chunk-ZFACXBY6.mjs.map +7 -0
  78. package/dist/lib/neutral/{chunk-RPB6V4BE.mjs → chunk-ZISMEVKD.mjs} +14 -1
  79. package/dist/lib/neutral/chunk-ZISMEVKD.mjs.map +7 -0
  80. package/dist/lib/neutral/index.mjs +51 -28
  81. package/dist/lib/neutral/internal/index.mjs +52 -38
  82. package/dist/lib/neutral/meta.json +1 -1
  83. package/dist/lib/neutral/testing/index.mjs +199 -136
  84. package/dist/lib/neutral/testing/index.mjs.map +3 -3
  85. package/dist/types/src/Annotation.d.ts +3 -3
  86. package/dist/types/src/Annotation.d.ts.map +1 -1
  87. package/dist/types/src/Collection.d.ts +16 -0
  88. package/dist/types/src/Collection.d.ts.map +1 -0
  89. package/dist/types/src/Database.d.ts +21 -36
  90. package/dist/types/src/Database.d.ts.map +1 -1
  91. package/dist/types/src/Dataset.d.ts +19 -0
  92. package/dist/types/src/Dataset.d.ts.map +1 -0
  93. package/dist/types/src/Entity.d.ts +54 -22
  94. package/dist/types/src/Entity.d.ts.map +1 -1
  95. package/dist/types/src/Err.d.ts +55 -12
  96. package/dist/types/src/Err.d.ts.map +1 -1
  97. package/dist/types/src/Extension.d.ts +80 -0
  98. package/dist/types/src/Extension.d.ts.map +1 -0
  99. package/dist/types/src/Extension.test.d.ts +2 -0
  100. package/dist/types/src/Extension.test.d.ts.map +1 -0
  101. package/dist/types/src/Feed.d.ts +206 -0
  102. package/dist/types/src/Feed.d.ts.map +1 -0
  103. package/dist/types/src/Filter.d.ts +55 -5
  104. package/dist/types/src/Filter.d.ts.map +1 -1
  105. package/dist/types/src/Filter.test.d.ts +2 -0
  106. package/dist/types/src/Filter.test.d.ts.map +1 -0
  107. package/dist/types/src/Format.d.ts +3 -3
  108. package/dist/types/src/Format.d.ts.map +1 -1
  109. package/dist/types/src/Hypergraph.d.ts +11 -6
  110. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  111. package/dist/types/src/Json.d.ts +33 -0
  112. package/dist/types/src/Json.d.ts.map +1 -0
  113. package/dist/types/src/Json.test.d.ts +2 -0
  114. package/dist/types/src/Json.test.d.ts.map +1 -0
  115. package/dist/types/src/JsonSchema.d.ts +11 -4
  116. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  117. package/dist/types/src/Migration.d.ts +69 -0
  118. package/dist/types/src/Migration.d.ts.map +1 -0
  119. package/dist/types/src/Obj.d.ts +163 -59
  120. package/dist/types/src/Obj.d.ts.map +1 -1
  121. package/dist/types/src/Order.d.ts.map +1 -1
  122. package/dist/types/src/Query.d.ts +105 -17
  123. package/dist/types/src/Query.d.ts.map +1 -1
  124. package/dist/types/src/Ref.d.ts +59 -10
  125. package/dist/types/src/Ref.d.ts.map +1 -1
  126. package/dist/types/src/Relation.d.ts +86 -40
  127. package/dist/types/src/Relation.d.ts.map +1 -1
  128. package/dist/types/src/SchemaRegistry.d.ts +4 -4
  129. package/dist/types/src/SchemaRegistry.d.ts.map +1 -1
  130. package/dist/types/src/Tag.d.ts +2 -1
  131. package/dist/types/src/Tag.d.ts.map +1 -1
  132. package/dist/types/src/Type.d.ts +51 -180
  133. package/dist/types/src/Type.d.ts.map +1 -1
  134. package/dist/types/src/View.d.ts +68 -0
  135. package/dist/types/src/View.d.ts.map +1 -0
  136. package/dist/types/src/exemplars.test.d.ts +2 -0
  137. package/dist/types/src/exemplars.test.d.ts.map +1 -0
  138. package/dist/types/src/index.d.ts +7 -0
  139. package/dist/types/src/index.d.ts.map +1 -1
  140. package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +65 -2
  141. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  142. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  143. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  144. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  145. package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
  146. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  147. package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +2 -2
  148. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  149. package/dist/types/src/internal/{api/entity.d.ts → Entity/api.d.ts} +2 -2
  150. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  151. package/dist/types/src/internal/{entities → Entity}/entity.d.ts +3 -3
  152. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  153. package/dist/types/src/internal/{entities → Entity}/index.d.ts +2 -0
  154. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  155. package/dist/types/src/internal/{entities → Entity}/model.d.ts +4 -26
  156. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  157. package/dist/types/src/internal/{entities → Entity}/object.d.ts +2 -2
  158. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  159. package/dist/types/src/internal/{entities → Entity}/relation.d.ts +3 -30
  160. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  161. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  162. package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
  163. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  164. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  165. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  166. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  167. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  168. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  169. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  170. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  171. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  172. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  173. package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
  174. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  175. package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
  176. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  177. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  178. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  179. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  180. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +37 -37
  181. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  182. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +1 -1
  183. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  184. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  185. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  186. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  187. package/dist/types/src/internal/{object → Obj}/create-object.d.ts +2 -2
  188. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  189. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  190. package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
  191. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  192. package/dist/types/src/internal/{object → Obj}/ids.d.ts +1 -1
  193. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  194. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  195. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  196. package/dist/types/src/internal/{object → Obj}/json-serializer.d.ts +13 -5
  197. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  198. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  199. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  200. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  201. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  202. package/dist/types/src/internal/{object → Obj}/set-value.d.ts +2 -2
  203. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  204. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  205. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  206. package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +4 -4
  207. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  208. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  209. package/dist/types/src/internal/Query.d.ts +10 -0
  210. package/dist/types/src/internal/Query.d.ts.map +1 -0
  211. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  212. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
  213. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  214. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +15 -2
  215. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  216. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  217. package/dist/types/src/internal/{schema → Type}/compose.d.ts +1 -1
  218. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  219. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  220. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +7 -7
  221. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  222. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  223. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  224. package/dist/types/src/internal/{schema → Type}/persistent-schema.d.ts +2 -2
  225. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  226. package/dist/types/src/internal/{api → common/api}/index.d.ts +0 -4
  227. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  228. package/dist/types/src/internal/{api → common/api}/meta.d.ts +3 -3
  229. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  230. package/dist/types/src/internal/common/index.d.ts +4 -0
  231. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  232. package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +1 -1
  233. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  234. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  235. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  236. package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +1 -1
  237. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  238. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  239. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  240. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  241. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  242. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  243. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  244. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  245. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  246. package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +1 -1
  247. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  248. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +2 -2
  249. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts.map +1 -1
  250. package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
  251. package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
  252. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  253. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  254. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  255. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  256. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  257. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  258. package/dist/types/src/internal/{types → common/types}/base.d.ts +1 -0
  259. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  260. package/dist/types/src/internal/{types → common/types}/entity.d.ts +5 -5
  261. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  262. package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
  263. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  264. package/dist/types/src/internal/{types → common/types}/meta.d.ts +12 -1
  265. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  266. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  267. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  268. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  269. package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
  270. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  271. package/dist/types/src/internal/index.d.ts +9 -10
  272. package/dist/types/src/internal/index.d.ts.map +1 -1
  273. package/dist/types/src/testing/test-data.d.ts +8 -8
  274. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  275. package/dist/types/src/testing/test-schema.d.ts +47 -46
  276. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  277. package/dist/types/src/testing/util.d.ts.map +1 -1
  278. package/dist/types/tsconfig.tsbuildinfo +1 -1
  279. package/package.json +30 -15
  280. package/src/Annotation.ts +7 -3
  281. package/src/Collection.ts +37 -0
  282. package/src/Database.ts +64 -65
  283. package/src/Dataset.ts +26 -0
  284. package/src/Entity.ts +87 -61
  285. package/src/Err.ts +22 -0
  286. package/src/Extension.test.ts +235 -0
  287. package/src/Extension.ts +122 -0
  288. package/src/Feed.ts +335 -0
  289. package/src/Filter.test.ts +90 -0
  290. package/src/Filter.ts +116 -7
  291. package/src/Format.ts +3 -3
  292. package/src/Hypergraph.ts +12 -7
  293. package/src/Json.test.ts +175 -0
  294. package/src/Json.ts +102 -0
  295. package/src/JsonSchema.ts +14 -4
  296. package/src/Migration.ts +106 -0
  297. package/src/Obj.test.ts +142 -15
  298. package/src/Obj.ts +382 -161
  299. package/src/Order.ts +3 -1
  300. package/src/Query.test.ts +372 -15
  301. package/src/Query.ts +274 -26
  302. package/src/Ref.ts +66 -11
  303. package/src/Relation.test.ts +8 -2
  304. package/src/Relation.ts +183 -147
  305. package/src/SchemaRegistry.ts +5 -4
  306. package/src/Tag.ts +6 -5
  307. package/src/Type.test.ts +10 -10
  308. package/src/Type.ts +70 -303
  309. package/src/View.ts +107 -0
  310. package/src/exemplars.test.ts +21 -0
  311. package/src/index.ts +8 -0
  312. package/src/internal/{annotations → Annotation}/annotations.test.ts +56 -7
  313. package/src/internal/{annotations → Annotation}/annotations.ts +122 -19
  314. package/src/internal/{annotations → Annotation}/index.ts +1 -0
  315. package/src/internal/{api → Annotation}/sorting.ts +2 -4
  316. package/src/internal/{annotations → Annotation}/util.ts +1 -1
  317. package/src/internal/{api/entity.ts → Entity/api.ts} +3 -2
  318. package/src/internal/{entities → Entity}/entity.ts +6 -4
  319. package/src/internal/{entities → Entity}/index.ts +2 -0
  320. package/src/internal/{entities → Entity}/model.ts +15 -42
  321. package/src/internal/{entities → Entity}/object.ts +2 -3
  322. package/src/internal/{entities → Entity}/relation.ts +19 -36
  323. package/src/internal/{api → Entity}/version.ts +2 -2
  324. package/src/internal/{formats → Format}/date.test.ts +1 -2
  325. package/src/internal/{formats → Format}/format.test.ts +1 -2
  326. package/src/internal/{formats → Format}/types.ts +2 -2
  327. package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
  328. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +4 -4
  329. package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -49
  330. package/src/internal/{json-schema → JsonSchema}/json-schema.ts +6 -5
  331. package/src/internal/{object → Obj}/clone.ts +3 -3
  332. package/src/internal/{object → Obj}/common.ts +2 -2
  333. package/src/internal/{object → Obj}/create-object.test.ts +5 -7
  334. package/src/internal/{object → Obj}/create-object.ts +5 -6
  335. package/src/internal/{object → Obj}/deleted.ts +2 -2
  336. package/src/internal/{object → Obj}/ids.ts +1 -1
  337. package/src/internal/{object → Obj}/inspect.ts +2 -2
  338. package/src/internal/{object → Obj}/json-serializer.test.ts +31 -9
  339. package/src/internal/{object → Obj}/json-serializer.ts +60 -35
  340. package/src/internal/{object → Obj}/schema-validator.ts +1 -1
  341. package/src/internal/{object → Obj}/set-value.test.ts +24 -24
  342. package/src/internal/{object → Obj}/set-value.ts +3 -3
  343. package/src/internal/{object → Obj}/snapshot.ts +35 -23
  344. package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
  345. package/src/internal/{object → Obj}/typed-object.ts +4 -4
  346. package/src/internal/Query.ts +156 -0
  347. package/src/internal/{ref → Ref}/ref-array.ts +1 -2
  348. package/src/internal/{ref → Ref}/ref.test.ts +4 -5
  349. package/src/internal/{ref → Ref}/ref.ts +20 -3
  350. package/src/internal/{schema → Type}/compose.test.ts +5 -6
  351. package/src/internal/{schema → Type}/compose.ts +1 -1
  352. package/src/internal/{schema → Type}/echo-schema.ts +9 -10
  353. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  354. package/src/internal/{schema → Type}/persistent-schema.ts +9 -4
  355. package/src/internal/{README.md → common/README.md} +2 -2
  356. package/src/internal/{api → common/api}/index.ts +0 -4
  357. package/src/internal/{api → common/api}/meta.ts +3 -3
  358. package/src/internal/common/index.ts +7 -0
  359. package/src/internal/{proxy → common/proxy}/change-context.ts +1 -1
  360. package/src/internal/{proxy → common/proxy}/change.test.ts +97 -97
  361. package/src/internal/{proxy → common/proxy}/errors.ts +2 -2
  362. package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -4
  363. package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
  364. package/src/internal/{proxy → common/proxy}/make-object.ts +1 -2
  365. package/src/internal/{proxy → common/proxy}/ownership.ts +0 -1
  366. package/src/internal/{proxy → common/proxy}/reactive-array.ts +1 -1
  367. package/src/internal/common/proxy/reactive.test.ts +54 -0
  368. package/src/internal/{proxy → common/proxy}/reactive.ts +12 -4
  369. package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
  370. package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +6 -7
  371. package/src/internal/{proxy → common/proxy}/typed-handler.ts +10 -13
  372. package/src/internal/{proxy → common/proxy}/typed-object.test.ts +5 -6
  373. package/src/internal/{types → common/types}/base.ts +1 -1
  374. package/src/internal/{types → common/types}/entity.ts +2 -2
  375. package/src/internal/{types → common/types}/index.ts +1 -0
  376. package/src/internal/{types → common/types}/meta.ts +15 -1
  377. package/src/internal/common/types/model-symbols.ts +69 -0
  378. package/src/internal/{types → common/types}/version.ts +2 -3
  379. package/src/internal/index.ts +9 -31
  380. package/src/testing/api.test.ts +4 -5
  381. package/src/testing/test-data.ts +157 -98
  382. package/src/testing/test-schema.ts +20 -18
  383. package/dist/lib/neutral/chunk-2AF5GMG6.mjs +0 -171
  384. package/dist/lib/neutral/chunk-2AF5GMG6.mjs.map +0 -7
  385. package/dist/lib/neutral/chunk-7WE7SBA2.mjs.map +0 -7
  386. package/dist/lib/neutral/chunk-DLPC7DHQ.mjs.map +0 -7
  387. package/dist/lib/neutral/chunk-EBUAT5ID.mjs +0 -229
  388. package/dist/lib/neutral/chunk-EBUAT5ID.mjs.map +0 -7
  389. package/dist/lib/neutral/chunk-K5K3Z62A.mjs.map +0 -7
  390. package/dist/lib/neutral/chunk-LKFNEFHF.mjs.map +0 -7
  391. package/dist/lib/neutral/chunk-MTEHHY62.mjs.map +0 -7
  392. package/dist/lib/neutral/chunk-QARLJVDB.mjs.map +0 -7
  393. package/dist/lib/neutral/chunk-RIMHNJ3E.mjs.map +0 -7
  394. package/dist/lib/neutral/chunk-ROKO4RKJ.mjs.map +0 -7
  395. package/dist/lib/neutral/chunk-RPB6V4BE.mjs.map +0 -7
  396. package/dist/lib/neutral/chunk-TLGNKUUG.mjs +0 -3905
  397. package/dist/lib/neutral/chunk-TLGNKUUG.mjs.map +0 -7
  398. package/dist/lib/neutral/chunk-TQT6WTIJ.mjs +0 -142
  399. package/dist/lib/neutral/chunk-TQT6WTIJ.mjs.map +0 -7
  400. package/dist/lib/neutral/chunk-VUQGRDRI.mjs.map +0 -7
  401. package/dist/lib/neutral/chunk-X2MPMYYN.mjs +0 -13
  402. package/dist/lib/neutral/chunk-X2MPMYYN.mjs.map +0 -7
  403. package/dist/lib/neutral/chunk-XAJMXQ4H.mjs.map +0 -7
  404. package/dist/lib/neutral/chunk-ZAHWXGK4.mjs.map +0 -7
  405. package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
  406. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
  407. package/dist/types/src/internal/annotations/index.d.ts +0 -3
  408. package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
  409. package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
  410. package/dist/types/src/internal/api/annotations.d.ts +0 -23
  411. package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
  412. package/dist/types/src/internal/api/entity.d.ts.map +0 -1
  413. package/dist/types/src/internal/api/index.d.ts.map +0 -1
  414. package/dist/types/src/internal/api/meta.d.ts.map +0 -1
  415. package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
  416. package/dist/types/src/internal/api/version.d.ts.map +0 -1
  417. package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
  418. package/dist/types/src/internal/entities/index.d.ts.map +0 -1
  419. package/dist/types/src/internal/entities/model.d.ts.map +0 -1
  420. package/dist/types/src/internal/entities/object.d.ts.map +0 -1
  421. package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
  422. package/dist/types/src/internal/entities/util.d.ts.map +0 -1
  423. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  424. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  425. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  426. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  427. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  428. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  429. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  430. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  431. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  432. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  433. package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
  434. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
  435. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  436. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  437. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  438. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
  439. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
  440. package/dist/types/src/internal/object/clone.d.ts.map +0 -1
  441. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  442. package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
  443. package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
  444. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  445. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  446. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  447. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  448. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  449. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  450. package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
  451. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  452. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  453. package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
  454. package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
  455. package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
  456. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  457. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  458. package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
  459. package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
  460. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
  461. package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
  462. package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
  463. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  464. package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
  465. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
  466. package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
  467. package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
  468. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
  469. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
  470. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
  471. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
  472. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  473. package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
  474. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  475. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  476. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  477. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  478. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  479. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  480. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  481. package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
  482. package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
  483. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  484. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  485. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  486. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
  487. package/dist/types/src/internal/types/base.d.ts.map +0 -1
  488. package/dist/types/src/internal/types/entity.d.ts.map +0 -1
  489. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  490. package/dist/types/src/internal/types/meta.d.ts.map +0 -1
  491. package/dist/types/src/internal/types/typename.d.ts.map +0 -1
  492. package/dist/types/src/internal/types/version.d.ts.map +0 -1
  493. package/src/internal/api/annotations.ts +0 -60
  494. /package/dist/lib/neutral/{chunk-ANHVGJI4.mjs.map → chunk-7RVZT53K.mjs.map} +0 -0
  495. /package/dist/lib/neutral/{chunk-OMUPQMLR.mjs.map → chunk-V72DY6LU.mjs.map} +0 -0
  496. /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
  497. /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
  498. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  499. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  500. /package/dist/types/src/internal/{formats → Format}/format.d.ts +0 -0
  501. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  502. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  503. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  504. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  505. /package/dist/types/src/internal/{formats → Format}/select.d.ts +0 -0
  506. /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
  507. /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
  508. /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
  509. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  510. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
  511. /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
  512. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  513. /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
  514. /package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -0
  515. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  516. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  517. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  518. /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
  519. /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
  520. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  521. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  522. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  523. /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
  524. /package/dist/types/src/internal/{schema → Type}/index.d.ts +0 -0
  525. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  526. /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
  527. /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
  528. /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
  529. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  530. /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
  531. /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
  532. /package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +0 -0
  533. /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
  534. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
  535. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
  536. /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
  537. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  538. /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
  539. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +0 -0
  540. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  541. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  542. /package/dist/types/src/internal/{types → common/types}/typename.d.ts +0 -0
  543. /package/src/internal/{entities → Entity}/util.ts +0 -0
  544. /package/src/internal/{formats → Format}/date.ts +0 -0
  545. /package/src/internal/{formats → Format}/format.ts +0 -0
  546. /package/src/internal/{formats → Format}/index.ts +0 -0
  547. /package/src/internal/{formats → Format}/number.ts +0 -0
  548. /package/src/internal/{formats → Format}/object.ts +0 -0
  549. /package/src/internal/{formats → Format}/select.ts +0 -0
  550. /package/src/internal/{formats → Format}/string.ts +0 -0
  551. /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
  552. /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
  553. /package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +0 -0
  554. /package/src/internal/{object → Obj}/index.ts +0 -0
  555. /package/src/internal/{object → Obj}/schema-validator.test.ts +0 -0
  556. /package/src/internal/{ref → Ref}/index.ts +0 -0
  557. /package/src/internal/{schema → Type}/index.ts +0 -0
  558. /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
  559. /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
  560. /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
  561. /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
  562. /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
  563. /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
  564. /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
  565. /package/src/internal/{types → common/types}/typename.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
  );
@@ -14,12 +14,12 @@ import { type ATTR_META, type ObjectMeta } from './meta';
14
14
  * NOTE: This describes the base type for all database objects.
15
15
  * It is stricter than `T extends {}` or `T extends object`.
16
16
  */
17
- // TODO(burdon): Make internal.
18
17
  // TODO(burdon): Prefer Record<string, unknown>.
19
18
  export type AnyProperties = Record<string, any>;
20
19
 
21
20
  /**
22
21
  * Canonical type for all ECHO entities (objects and relations).
22
+ * @depreacted Remove, use Entity.Unknown instead.
23
23
  */
24
24
  // TODO(wittjosiah): Remove. Prefer higher level types (e.g. Entity.Unknown).
25
25
  export interface AnyEntity {
@@ -43,10 +43,10 @@ export enum EntityKind {
43
43
  export const EntityKindSchema = Schema.Enums(EntityKind);
44
44
 
45
45
  /**
46
- * Typename for generic object references (Type.Obj / Type.Ref(Type.Obj)).
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,6 +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';
11
12
  import { type AnyProperties } from './base';
12
13
 
13
14
  /**
@@ -18,7 +19,7 @@ export const ATTR_META = '@meta';
18
19
  /**
19
20
  * Metadata section.
20
21
  */
21
- export const MetaId = Symbol.for('@dxos/echo/Meta');
22
+ export const MetaId: Entity.Meta = Symbol.for('@dxos/echo/Meta') as any;
22
23
 
23
24
  //
24
25
  // ObjectMeta
@@ -35,7 +36,20 @@ export const ObjectMetaSchema = Schema.Struct({
35
36
  */
36
37
  // TODO(dmaretskyi): Has to be optional for compatibility with old data.
37
38
  // Defaulting to an empty array is possible but requires a bit more work.
39
+ // TODO(dmaretskyi): In automerge this should be a map of { [tag]: boolean } for uniqueness and conflict resolution.
38
40
  tags: Schema.optional(Schema.Array(Schema.String)),
41
+
42
+ /**
43
+ * Fully-qualified registry key for the object (FQN format, e.g. `org.example.type.foo`).
44
+ * Identifies the canonical registry entry the object instance was created from.
45
+ */
46
+ key: Schema.optional(Schema.String),
47
+
48
+ /**
49
+ * Semantic version of the registry entry the object was created from.
50
+ * Must be a valid semver string (e.g. `1.2.3`).
51
+ */
52
+ version: Schema.optional(Schema.String),
39
53
  });
40
54
 
41
55
  export type ObjectMeta = Schema.Schema.Type<typeof ObjectMetaSchema>;
@@ -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');
@@ -3,10 +3,9 @@
3
3
  //
4
4
 
5
5
  /**
6
- * Version type symbol.
6
+ * Version type identifier.
7
7
  */
8
- export const VersionTypeId: unique symbol = Symbol.for('@dxos/echo/VersionTypeId');
9
-
8
+ export const VersionTypeId = '~@dxos/echo/VersionTypeId' as const;
10
9
  export type VersionTypeId = typeof VersionTypeId;
11
10
 
12
11
  /**
@@ -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
  });
@@ -110,7 +109,7 @@ describe('Experimental API review', () => {
110
109
  expect(expando.content).to.eq('Test');
111
110
 
112
111
  // This should work: assign to Obj.Obj of the schema's instance type
113
- const _typed: Obj.Obj<TestSchema.Expando> = expando;
112
+ const _typed: Obj.OfShape<TestSchema.Expando> = expando;
114
113
  }
115
114
 
116
115
  {
@@ -119,7 +118,7 @@ describe('Experimental API review', () => {
119
118
  expect(person.name).to.eq('Test');
120
119
 
121
120
  // This should work: assign to Obj.Obj of the schema's instance type
122
- const _typed: Obj.Obj<TestSchema.Person> = person;
121
+ const _typed: Obj.OfShape<TestSchema.Person> = person;
123
122
  }
124
123
  });
125
124
  });