@dxos/echo 0.8.4-main.406dc2a → 0.8.4-main.59c2e9b

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 (600) hide show
  1. package/README.md +1 -2
  2. package/dist/lib/browser/Annotation.mjs +33 -0
  3. package/dist/lib/browser/Database.mjs +18 -0
  4. package/dist/lib/browser/Entity.mjs +52 -0
  5. package/dist/lib/browser/Entity.mjs.map +7 -0
  6. package/dist/lib/browser/Err.mjs +11 -0
  7. package/dist/lib/browser/Err.mjs.map +7 -0
  8. package/dist/lib/browser/Filter.mjs +62 -0
  9. package/dist/lib/browser/Filter.mjs.map +7 -0
  10. package/dist/lib/browser/Format.mjs +67 -0
  11. package/dist/lib/browser/Format.mjs.map +7 -0
  12. package/dist/lib/browser/JsonSchema.mjs +20 -0
  13. package/dist/lib/browser/JsonSchema.mjs.map +7 -0
  14. package/dist/lib/browser/Key.mjs +13 -0
  15. package/dist/lib/browser/Key.mjs.map +7 -0
  16. package/dist/lib/browser/Obj.mjs +91 -0
  17. package/dist/lib/browser/Obj.mjs.map +7 -0
  18. package/dist/lib/browser/Order.mjs +13 -0
  19. package/dist/lib/browser/Order.mjs.map +7 -0
  20. package/dist/lib/browser/Query.mjs +27 -0
  21. package/dist/lib/browser/Query.mjs.map +7 -0
  22. package/dist/lib/browser/QueryResult.mjs +3 -0
  23. package/dist/lib/browser/QueryResult.mjs.map +7 -0
  24. package/dist/lib/browser/Ref.mjs +23 -0
  25. package/dist/lib/browser/Ref.mjs.map +7 -0
  26. package/dist/lib/browser/Relation.mjs +85 -0
  27. package/dist/lib/browser/Relation.mjs.map +7 -0
  28. package/dist/lib/browser/SchemaRegistry.mjs +3 -0
  29. package/dist/lib/browser/SchemaRegistry.mjs.map +7 -0
  30. package/dist/lib/browser/Tag.mjs +26 -0
  31. package/dist/lib/browser/Tag.mjs.map +7 -0
  32. package/dist/lib/browser/Type.mjs +48 -0
  33. package/dist/lib/browser/Type.mjs.map +7 -0
  34. package/dist/lib/browser/chunk-22JMFST2.mjs +24 -0
  35. package/dist/lib/browser/chunk-22JMFST2.mjs.map +7 -0
  36. package/dist/lib/browser/chunk-2SBB7OWV.mjs +250 -0
  37. package/dist/lib/browser/chunk-2SBB7OWV.mjs.map +7 -0
  38. package/dist/lib/browser/chunk-6L5HHUVU.mjs +158 -0
  39. package/dist/lib/browser/chunk-6L5HHUVU.mjs.map +7 -0
  40. package/dist/lib/browser/chunk-7STIBCP7.mjs +133 -0
  41. package/dist/lib/browser/chunk-7STIBCP7.mjs.map +7 -0
  42. package/dist/lib/browser/chunk-BJPE6CIC.mjs +3847 -0
  43. package/dist/lib/browser/chunk-BJPE6CIC.mjs.map +7 -0
  44. package/dist/lib/browser/chunk-CGS2ULMK.mjs +11 -0
  45. package/dist/lib/browser/chunk-CGS2ULMK.mjs.map +7 -0
  46. package/dist/lib/browser/chunk-CJ5YELTO.mjs +39 -0
  47. package/dist/lib/browser/chunk-CJ5YELTO.mjs.map +7 -0
  48. package/dist/lib/browser/chunk-FPOISFQK.mjs +40 -0
  49. package/dist/lib/browser/chunk-FPOISFQK.mjs.map +7 -0
  50. package/dist/lib/browser/chunk-FRDT7RA4.mjs +403 -0
  51. package/dist/lib/browser/chunk-FRDT7RA4.mjs.map +7 -0
  52. package/dist/lib/browser/chunk-INHXFXY5.mjs +22 -0
  53. package/dist/lib/browser/chunk-INHXFXY5.mjs.map +7 -0
  54. package/dist/lib/browser/chunk-IXVWLTG7.mjs +9 -0
  55. package/dist/lib/browser/chunk-IXVWLTG7.mjs.map +7 -0
  56. package/dist/lib/browser/chunk-JMKVF2YQ.mjs +43 -0
  57. package/dist/lib/browser/chunk-JMKVF2YQ.mjs.map +7 -0
  58. package/dist/lib/browser/chunk-KQQGVHFN.mjs +143 -0
  59. package/dist/lib/browser/chunk-KQQGVHFN.mjs.map +7 -0
  60. package/dist/lib/browser/chunk-MYCCGG2T.mjs +15 -0
  61. package/dist/lib/browser/chunk-MYCCGG2T.mjs.map +7 -0
  62. package/dist/lib/browser/chunk-NOPVNWPT.mjs +204 -0
  63. package/dist/lib/browser/chunk-NOPVNWPT.mjs.map +7 -0
  64. package/dist/lib/browser/chunk-PQZW3S6L.mjs +74 -0
  65. package/dist/lib/browser/chunk-PQZW3S6L.mjs.map +7 -0
  66. package/dist/lib/browser/chunk-RK4Z4JUZ.mjs +283 -0
  67. package/dist/lib/browser/chunk-RK4Z4JUZ.mjs.map +7 -0
  68. package/dist/lib/browser/chunk-U2J7TA7K.mjs +57 -0
  69. package/dist/lib/browser/chunk-U2J7TA7K.mjs.map +7 -0
  70. package/dist/lib/browser/chunk-W5D2GWAW.mjs +98 -0
  71. package/dist/lib/browser/chunk-W5D2GWAW.mjs.map +7 -0
  72. package/dist/lib/browser/chunk-XDIUHAAX.mjs +41 -0
  73. package/dist/lib/browser/chunk-XDIUHAAX.mjs.map +7 -0
  74. package/dist/lib/browser/chunk-YKTSSMDS.mjs +69 -0
  75. package/dist/lib/browser/chunk-YKTSSMDS.mjs.map +7 -0
  76. package/dist/lib/browser/chunk-ZAGAOZVY.mjs +288 -0
  77. package/dist/lib/browser/chunk-ZAGAOZVY.mjs.map +7 -0
  78. package/dist/lib/browser/chunk-ZHXZGIXD.mjs +9 -0
  79. package/dist/lib/browser/chunk-ZHXZGIXD.mjs.map +7 -0
  80. package/dist/lib/browser/index.mjs +72 -22
  81. package/dist/lib/browser/internal/index.mjs +245 -120
  82. package/dist/lib/browser/meta.json +1 -1
  83. package/dist/lib/browser/testing/index.mjs +295 -226
  84. package/dist/lib/browser/testing/index.mjs.map +4 -4
  85. package/dist/lib/node-esm/Annotation.mjs +33 -0
  86. package/dist/lib/node-esm/Annotation.mjs.map +7 -0
  87. package/dist/lib/node-esm/Database.mjs +18 -0
  88. package/dist/lib/node-esm/Database.mjs.map +7 -0
  89. package/dist/lib/node-esm/Entity.mjs +52 -0
  90. package/dist/lib/node-esm/Entity.mjs.map +7 -0
  91. package/dist/lib/node-esm/Err.mjs +11 -0
  92. package/dist/lib/node-esm/Err.mjs.map +7 -0
  93. package/dist/lib/node-esm/Filter.mjs +62 -0
  94. package/dist/lib/node-esm/Filter.mjs.map +7 -0
  95. package/dist/lib/node-esm/Format.mjs +67 -0
  96. package/dist/lib/node-esm/Format.mjs.map +7 -0
  97. package/dist/lib/node-esm/JsonSchema.mjs +20 -0
  98. package/dist/lib/node-esm/JsonSchema.mjs.map +7 -0
  99. package/dist/lib/node-esm/Key.mjs +13 -0
  100. package/dist/lib/node-esm/Key.mjs.map +7 -0
  101. package/dist/lib/node-esm/Obj.mjs +91 -0
  102. package/dist/lib/node-esm/Obj.mjs.map +7 -0
  103. package/dist/lib/node-esm/Order.mjs +13 -0
  104. package/dist/lib/node-esm/Order.mjs.map +7 -0
  105. package/dist/lib/node-esm/Query.mjs +27 -0
  106. package/dist/lib/node-esm/Query.mjs.map +7 -0
  107. package/dist/lib/node-esm/QueryResult.mjs +3 -0
  108. package/dist/lib/node-esm/QueryResult.mjs.map +7 -0
  109. package/dist/lib/node-esm/Ref.mjs +23 -0
  110. package/dist/lib/node-esm/Ref.mjs.map +7 -0
  111. package/dist/lib/node-esm/Relation.mjs +85 -0
  112. package/dist/lib/node-esm/Relation.mjs.map +7 -0
  113. package/dist/lib/node-esm/SchemaRegistry.mjs +3 -0
  114. package/dist/lib/node-esm/SchemaRegistry.mjs.map +7 -0
  115. package/dist/lib/node-esm/Tag.mjs +26 -0
  116. package/dist/lib/node-esm/Tag.mjs.map +7 -0
  117. package/dist/lib/node-esm/Type.mjs +48 -0
  118. package/dist/lib/node-esm/Type.mjs.map +7 -0
  119. package/dist/lib/node-esm/chunk-4PNXQA64.mjs +250 -0
  120. package/dist/lib/node-esm/chunk-4PNXQA64.mjs.map +7 -0
  121. package/dist/lib/node-esm/chunk-5OBN7GZW.mjs +158 -0
  122. package/dist/lib/node-esm/chunk-5OBN7GZW.mjs.map +7 -0
  123. package/dist/lib/node-esm/chunk-AJEMYSIR.mjs +22 -0
  124. package/dist/lib/node-esm/chunk-AJEMYSIR.mjs.map +7 -0
  125. package/dist/lib/node-esm/chunk-ANLVLWME.mjs +98 -0
  126. package/dist/lib/node-esm/chunk-ANLVLWME.mjs.map +7 -0
  127. package/dist/lib/node-esm/chunk-DMR7OAFK.mjs +57 -0
  128. package/dist/lib/node-esm/chunk-DMR7OAFK.mjs.map +7 -0
  129. package/dist/lib/node-esm/chunk-FWTSPIFF.mjs +133 -0
  130. package/dist/lib/node-esm/chunk-FWTSPIFF.mjs.map +7 -0
  131. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  132. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  133. package/dist/lib/node-esm/chunk-ILMLLM4R.mjs +204 -0
  134. package/dist/lib/node-esm/chunk-ILMLLM4R.mjs.map +7 -0
  135. package/dist/lib/node-esm/chunk-K37NA7PO.mjs +43 -0
  136. package/dist/lib/node-esm/chunk-K37NA7PO.mjs.map +7 -0
  137. package/dist/lib/node-esm/chunk-LT3H4JOX.mjs +3847 -0
  138. package/dist/lib/node-esm/chunk-LT3H4JOX.mjs.map +7 -0
  139. package/dist/lib/node-esm/chunk-MOLNWFNL.mjs +9 -0
  140. package/dist/lib/node-esm/chunk-MOLNWFNL.mjs.map +7 -0
  141. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs +15 -0
  142. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs.map +7 -0
  143. package/dist/lib/node-esm/chunk-NBWL7UCZ.mjs +40 -0
  144. package/dist/lib/node-esm/chunk-NBWL7UCZ.mjs.map +7 -0
  145. package/dist/lib/node-esm/chunk-NRN3ZW2T.mjs +143 -0
  146. package/dist/lib/node-esm/chunk-NRN3ZW2T.mjs.map +7 -0
  147. package/dist/lib/node-esm/chunk-QLI2EIJ2.mjs +41 -0
  148. package/dist/lib/node-esm/chunk-QLI2EIJ2.mjs.map +7 -0
  149. package/dist/lib/node-esm/chunk-QYR67VBV.mjs +288 -0
  150. package/dist/lib/node-esm/chunk-QYR67VBV.mjs.map +7 -0
  151. package/dist/lib/node-esm/chunk-UKGVOINP.mjs +9 -0
  152. package/dist/lib/node-esm/chunk-UKGVOINP.mjs.map +7 -0
  153. package/dist/lib/node-esm/chunk-W6QIEBTQ.mjs +403 -0
  154. package/dist/lib/node-esm/chunk-W6QIEBTQ.mjs.map +7 -0
  155. package/dist/lib/node-esm/chunk-XHJRMQZD.mjs +69 -0
  156. package/dist/lib/node-esm/chunk-XHJRMQZD.mjs.map +7 -0
  157. package/dist/lib/node-esm/chunk-Y75VU7LB.mjs +74 -0
  158. package/dist/lib/node-esm/chunk-Y75VU7LB.mjs.map +7 -0
  159. package/dist/lib/node-esm/chunk-YOLH5KS4.mjs +283 -0
  160. package/dist/lib/node-esm/chunk-YOLH5KS4.mjs.map +7 -0
  161. package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs +39 -0
  162. package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs.map +7 -0
  163. package/dist/lib/node-esm/chunk-ZBB67AKD.mjs +24 -0
  164. package/dist/lib/node-esm/chunk-ZBB67AKD.mjs.map +7 -0
  165. package/dist/lib/node-esm/index.mjs +72 -22
  166. package/dist/lib/node-esm/internal/index.mjs +245 -120
  167. package/dist/lib/node-esm/meta.json +1 -1
  168. package/dist/lib/node-esm/testing/index.mjs +295 -226
  169. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  170. package/dist/types/src/Annotation.d.ts +2 -0
  171. package/dist/types/src/Annotation.d.ts.map +1 -0
  172. package/dist/types/src/Database.d.ts +194 -0
  173. package/dist/types/src/Database.d.ts.map +1 -0
  174. package/dist/types/src/Entity.d.ts +142 -0
  175. package/dist/types/src/Entity.d.ts.map +1 -0
  176. package/dist/types/src/Entity.test.d.ts +2 -0
  177. package/dist/types/src/Entity.test.d.ts.map +1 -0
  178. package/dist/types/src/{errors.d.ts → Err.d.ts} +23 -31
  179. package/dist/types/src/Err.d.ts.map +1 -0
  180. package/dist/types/src/Filter.d.ts +120 -0
  181. package/dist/types/src/Filter.d.ts.map +1 -0
  182. package/dist/types/src/Format.d.ts +4 -0
  183. package/dist/types/src/Format.d.ts.map +1 -0
  184. package/dist/types/src/Hypergraph.d.ts +60 -0
  185. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  186. package/dist/types/src/JsonSchema.d.ts +9 -0
  187. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  188. package/dist/types/src/Key.d.ts +1 -0
  189. package/dist/types/src/Key.d.ts.map +1 -1
  190. package/dist/types/src/Obj.d.ts +302 -99
  191. package/dist/types/src/Obj.d.ts.map +1 -1
  192. package/dist/types/src/Obj.test.d.ts +2 -0
  193. package/dist/types/src/Obj.test.d.ts.map +1 -0
  194. package/dist/types/src/Order.d.ts +16 -0
  195. package/dist/types/src/Order.d.ts.map +1 -0
  196. package/dist/types/src/Query.d.ts +115 -0
  197. package/dist/types/src/Query.d.ts.map +1 -0
  198. package/dist/types/src/Query.test.d.ts +2 -0
  199. package/dist/types/src/Query.test.d.ts.map +1 -0
  200. package/dist/types/src/QueryResult.d.ts +80 -0
  201. package/dist/types/src/QueryResult.d.ts.map +1 -0
  202. package/dist/types/src/Ref.d.ts +13 -11
  203. package/dist/types/src/Ref.d.ts.map +1 -1
  204. package/dist/types/src/Relation.d.ts +242 -22
  205. package/dist/types/src/Relation.d.ts.map +1 -1
  206. package/dist/types/src/Relation.test.d.ts +2 -0
  207. package/dist/types/src/Relation.test.d.ts.map +1 -0
  208. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  209. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  210. package/dist/types/src/Tag.d.ts +17 -0
  211. package/dist/types/src/Tag.d.ts.map +1 -0
  212. package/dist/types/src/Type.d.ts +225 -72
  213. package/dist/types/src/Type.d.ts.map +1 -1
  214. package/dist/types/src/Type.test.d.ts +2 -0
  215. package/dist/types/src/Type.test.d.ts.map +1 -0
  216. package/dist/types/src/index.d.ts +15 -5
  217. package/dist/types/src/index.d.ts.map +1 -1
  218. package/dist/types/src/internal/annotations/annotations.d.ts +170 -0
  219. package/dist/types/src/internal/annotations/annotations.d.ts.map +1 -0
  220. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +1 -0
  221. package/dist/types/src/internal/annotations/index.d.ts +3 -0
  222. package/dist/types/src/internal/annotations/index.d.ts.map +1 -0
  223. package/dist/types/src/internal/annotations/util.d.ts +27 -0
  224. package/dist/types/src/internal/annotations/util.d.ts.map +1 -0
  225. package/dist/types/src/internal/api/annotations.d.ts +23 -0
  226. package/dist/types/src/internal/api/annotations.d.ts.map +1 -0
  227. package/dist/types/src/internal/api/entity.d.ts +13 -0
  228. package/dist/types/src/internal/api/entity.d.ts.map +1 -0
  229. package/dist/types/src/internal/api/index.d.ts +15 -0
  230. package/dist/types/src/internal/api/index.d.ts.map +1 -0
  231. package/dist/types/src/internal/api/meta.d.ts +42 -0
  232. package/dist/types/src/internal/api/meta.d.ts.map +1 -0
  233. package/dist/types/src/internal/api/sorting.d.ts +24 -0
  234. package/dist/types/src/internal/api/sorting.d.ts.map +1 -0
  235. package/dist/types/src/internal/api/version.d.ts +42 -0
  236. package/dist/types/src/internal/api/version.d.ts.map +1 -0
  237. package/dist/types/src/internal/entities/entity.d.ts +20 -0
  238. package/dist/types/src/internal/entities/entity.d.ts.map +1 -0
  239. package/dist/types/src/internal/entities/index.d.ts +6 -0
  240. package/dist/types/src/internal/entities/index.d.ts.map +1 -0
  241. package/dist/types/src/internal/entities/model.d.ts +77 -0
  242. package/dist/types/src/internal/entities/model.d.ts.map +1 -0
  243. package/dist/types/src/internal/entities/object.d.ts +18 -0
  244. package/dist/types/src/internal/entities/object.d.ts.map +1 -0
  245. package/dist/types/src/internal/entities/relation.d.ts +62 -0
  246. package/dist/types/src/internal/entities/relation.d.ts.map +1 -0
  247. package/dist/types/src/internal/entities/util.d.ts +2 -0
  248. package/dist/types/src/internal/entities/util.d.ts.map +1 -0
  249. package/dist/types/src/internal/formats/format.d.ts +4 -2
  250. package/dist/types/src/internal/formats/format.d.ts.map +1 -1
  251. package/dist/types/src/internal/formats/select.d.ts +5 -3
  252. package/dist/types/src/internal/formats/select.d.ts.map +1 -1
  253. package/dist/types/src/internal/formats/string.d.ts +4 -0
  254. package/dist/types/src/internal/formats/string.d.ts.map +1 -1
  255. package/dist/types/src/internal/formats/types.d.ts +13 -9
  256. package/dist/types/src/internal/formats/types.d.ts.map +1 -1
  257. package/dist/types/src/internal/index.d.ts +7 -10
  258. package/dist/types/src/internal/index.d.ts.map +1 -1
  259. package/dist/types/src/internal/json-schema/annotations.d.ts.map +1 -0
  260. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +1 -0
  261. package/dist/types/src/internal/json-schema/index.d.ts +2 -0
  262. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -1
  263. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -1
  264. package/dist/types/src/internal/{json → json-schema}/json-schema.d.ts +2 -1
  265. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +1 -0
  266. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +1 -0
  267. package/dist/types/src/internal/object/clone.d.ts +8 -0
  268. package/dist/types/src/internal/object/clone.d.ts.map +1 -0
  269. package/dist/types/src/internal/object/common.d.ts.map +1 -1
  270. package/dist/types/src/internal/object/{create.d.ts → create-object.d.ts} +10 -11
  271. package/dist/types/src/internal/object/create-object.d.ts.map +1 -0
  272. package/dist/types/src/internal/object/create-object.test.d.ts +2 -0
  273. package/dist/types/src/internal/object/create-object.test.d.ts.map +1 -0
  274. package/dist/types/src/internal/object/deleted.d.ts +2 -2
  275. package/dist/types/src/internal/object/deleted.d.ts.map +1 -1
  276. package/dist/types/src/internal/object/ids.d.ts.map +1 -1
  277. package/dist/types/src/internal/object/index.d.ts +6 -11
  278. package/dist/types/src/internal/object/index.d.ts.map +1 -1
  279. package/dist/types/src/internal/object/json-serializer.d.ts +14 -9
  280. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -1
  281. package/dist/types/src/internal/object/schema-validator.d.ts +1 -14
  282. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -1
  283. package/dist/types/src/internal/object/set-value.d.ts +7 -0
  284. package/dist/types/src/internal/object/set-value.d.ts.map +1 -0
  285. package/dist/types/src/internal/object/set-value.test.d.ts +2 -0
  286. package/dist/types/src/internal/object/set-value.test.d.ts.map +1 -0
  287. package/dist/types/src/internal/object/snapshot.d.ts +6 -0
  288. package/dist/types/src/internal/object/snapshot.d.ts.map +1 -0
  289. package/dist/types/src/internal/object/typed-object.d.ts +8 -14
  290. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -1
  291. package/dist/types/src/internal/proxy/change-context.d.ts +55 -0
  292. package/dist/types/src/internal/proxy/change-context.d.ts.map +1 -0
  293. package/dist/types/src/internal/proxy/change.test.d.ts +2 -0
  294. package/dist/types/src/internal/proxy/change.test.d.ts.map +1 -0
  295. package/dist/types/src/internal/proxy/define-hidden-property.d.ts +5 -0
  296. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +1 -0
  297. package/dist/types/src/internal/proxy/errors.d.ts +19 -0
  298. package/dist/types/src/internal/proxy/errors.d.ts.map +1 -0
  299. package/dist/types/src/internal/proxy/event-batch.d.ts +10 -0
  300. package/dist/types/src/internal/proxy/event-batch.d.ts.map +1 -0
  301. package/dist/types/src/internal/proxy/index.d.ts +14 -0
  302. package/dist/types/src/internal/proxy/index.d.ts.map +1 -0
  303. package/dist/types/src/internal/proxy/json-serializer.d.ts +6 -0
  304. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +1 -0
  305. package/dist/types/src/internal/proxy/make-object.d.ts +14 -0
  306. package/dist/types/src/internal/proxy/make-object.d.ts.map +1 -0
  307. package/dist/types/src/internal/proxy/ownership.d.ts +57 -0
  308. package/dist/types/src/internal/proxy/ownership.d.ts.map +1 -0
  309. package/dist/types/src/internal/proxy/proxy-types.d.ts +18 -0
  310. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +1 -0
  311. package/dist/types/src/internal/proxy/proxy-utils.d.ts +47 -0
  312. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +1 -0
  313. package/dist/types/src/internal/proxy/reactive-array.d.ts +8 -0
  314. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +1 -0
  315. package/dist/types/src/internal/proxy/reactive.d.ts +39 -0
  316. package/dist/types/src/internal/proxy/reactive.d.ts.map +1 -0
  317. package/dist/types/src/internal/proxy/schema-validator.d.ts +15 -0
  318. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +1 -0
  319. package/dist/types/src/internal/proxy/symbols.d.ts +3 -0
  320. package/dist/types/src/internal/proxy/symbols.d.ts.map +1 -0
  321. package/dist/types/src/internal/proxy/typed-handler.d.ts +15 -12
  322. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -1
  323. package/dist/types/src/internal/ref/ref-array.d.ts +4 -4
  324. package/dist/types/src/internal/ref/ref-array.d.ts.map +1 -1
  325. package/dist/types/src/internal/ref/ref.d.ts +27 -16
  326. package/dist/types/src/internal/ref/ref.d.ts.map +1 -1
  327. package/dist/types/src/internal/schema/compose.d.ts.map +1 -0
  328. package/dist/types/src/internal/schema/compose.test.d.ts.map +1 -0
  329. package/dist/types/src/internal/schema/echo-schema.d.ts +24 -12
  330. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -1
  331. package/dist/types/src/internal/schema/index.d.ts +1 -4
  332. package/dist/types/src/internal/schema/index.d.ts.map +1 -1
  333. package/dist/types/src/internal/schema/persistent-schema.d.ts +20 -0
  334. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +1 -0
  335. package/dist/types/src/internal/types/base.d.ts +26 -0
  336. package/dist/types/src/internal/types/base.d.ts.map +1 -0
  337. package/dist/types/src/internal/types/entity.d.ts +37 -0
  338. package/dist/types/src/internal/types/entity.d.ts.map +1 -0
  339. package/dist/types/src/internal/types/index.d.ts +5 -2
  340. package/dist/types/src/internal/types/index.d.ts.map +1 -1
  341. package/dist/types/src/internal/{object → types}/meta.d.ts +12 -11
  342. package/dist/types/src/internal/types/meta.d.ts.map +1 -0
  343. package/dist/types/src/internal/types/typename.d.ts +13 -0
  344. package/dist/types/src/internal/types/typename.d.ts.map +1 -0
  345. package/dist/types/src/internal/{object → types}/version.d.ts +3 -2
  346. package/dist/types/src/internal/types/version.d.ts.map +1 -0
  347. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  348. package/dist/types/src/testing/index.d.ts +3 -3
  349. package/dist/types/src/testing/index.d.ts.map +1 -1
  350. package/dist/types/src/testing/test-data.d.ts +18 -0
  351. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  352. package/dist/types/src/testing/test-schema.d.ts +303 -0
  353. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  354. package/dist/types/src/testing/util.d.ts +21 -0
  355. package/dist/types/src/testing/util.d.ts.map +1 -0
  356. package/dist/types/tsconfig.tsbuildinfo +1 -1
  357. package/package.json +160 -45
  358. package/src/Annotation.ts +18 -0
  359. package/src/Database.ts +336 -0
  360. package/src/Entity.test.ts +22 -0
  361. package/src/Entity.ts +217 -0
  362. package/src/{errors.ts → Err.ts} +2 -2
  363. package/src/Filter.ts +376 -0
  364. package/src/Format.ts +9 -0
  365. package/src/Hypergraph.ts +74 -0
  366. package/src/JsonSchema.ts +16 -0
  367. package/src/Key.ts +3 -0
  368. package/src/Obj.test.ts +386 -0
  369. package/src/Obj.ts +449 -275
  370. package/src/Order.ts +44 -0
  371. package/src/Query.test.ts +465 -0
  372. package/src/Query.ts +296 -0
  373. package/src/QueryResult.ts +106 -0
  374. package/src/Ref.ts +26 -9
  375. package/src/Relation.test.ts +82 -0
  376. package/src/Relation.ts +411 -60
  377. package/src/SchemaRegistry.ts +105 -0
  378. package/src/{query/tag.ts → Tag.ts} +10 -7
  379. package/src/Type.test.ts +52 -0
  380. package/src/Type.ts +361 -114
  381. package/src/index.ts +16 -6
  382. package/src/internal/README.md +100 -0
  383. package/src/internal/{ast → annotations}/annotations.test.ts +18 -20
  384. package/src/internal/annotations/annotations.ts +460 -0
  385. package/src/internal/annotations/index.ts +6 -0
  386. package/src/internal/annotations/util.ts +72 -0
  387. package/src/internal/api/annotations.ts +60 -0
  388. package/src/internal/api/entity.ts +29 -0
  389. package/src/internal/api/index.ts +19 -0
  390. package/src/internal/api/meta.ts +88 -0
  391. package/src/internal/api/sorting.ts +53 -0
  392. package/src/internal/api/version.ts +96 -0
  393. package/src/internal/entities/entity.ts +126 -0
  394. package/src/internal/entities/index.ts +9 -0
  395. package/src/internal/entities/model.ts +134 -0
  396. package/src/internal/entities/object.ts +60 -0
  397. package/src/internal/entities/relation.ts +173 -0
  398. package/src/internal/entities/util.ts +33 -0
  399. package/src/internal/formats/date.test.ts +1 -1
  400. package/src/internal/formats/date.ts +5 -5
  401. package/src/internal/formats/format.test.ts +5 -5
  402. package/src/internal/formats/format.ts +8 -6
  403. package/src/internal/formats/number.ts +5 -5
  404. package/src/internal/formats/object.ts +4 -4
  405. package/src/internal/formats/select.ts +5 -3
  406. package/src/internal/formats/string.ts +14 -9
  407. package/src/internal/formats/types.ts +53 -42
  408. package/src/internal/index.ts +30 -13
  409. package/src/internal/{json → json-schema}/annotations.ts +1 -1
  410. package/src/internal/json-schema/index.ts +2 -0
  411. package/src/internal/json-schema/json-schema-type.ts +5 -4
  412. package/src/internal/{json → json-schema}/json-schema.test.ts +73 -69
  413. package/src/internal/{json → json-schema}/json-schema.ts +17 -8
  414. package/src/internal/object/clone.ts +48 -0
  415. package/src/internal/object/common.ts +3 -4
  416. package/src/internal/object/{create.test.ts → create-object.test.ts} +31 -33
  417. package/src/internal/object/{create.ts → create-object.ts} +36 -37
  418. package/src/internal/object/deleted.ts +6 -6
  419. package/src/internal/object/ids.ts +1 -1
  420. package/src/internal/object/index.ts +6 -11
  421. package/src/internal/object/inspect.ts +5 -7
  422. package/src/internal/object/json-serializer.test.ts +35 -37
  423. package/src/internal/object/json-serializer.ts +65 -102
  424. package/src/internal/object/schema-validator.ts +2 -237
  425. package/src/internal/object/set-value.test.ts +281 -0
  426. package/src/internal/object/set-value.ts +165 -0
  427. package/src/internal/object/snapshot.ts +70 -0
  428. package/src/internal/object/typed-object.test.ts +11 -11
  429. package/src/internal/object/typed-object.ts +8 -66
  430. package/src/internal/proxy/change-context.ts +138 -0
  431. package/src/internal/proxy/change.test.ts +519 -0
  432. package/src/internal/proxy/define-hidden-property.ts +14 -0
  433. package/src/internal/proxy/errors.ts +42 -0
  434. package/src/internal/proxy/event-batch.ts +44 -0
  435. package/src/internal/proxy/handler.test.ts +51 -91
  436. package/src/internal/proxy/index.ts +17 -0
  437. package/src/internal/proxy/json-serializer.ts +87 -0
  438. package/src/internal/proxy/make-object.ts +96 -0
  439. package/src/internal/proxy/ownership.ts +253 -0
  440. package/src/internal/proxy/proxy-types.ts +23 -0
  441. package/src/internal/proxy/proxy-utils.ts +150 -0
  442. package/src/internal/proxy/reactive-array.ts +71 -0
  443. package/src/internal/proxy/reactive.ts +69 -0
  444. package/src/internal/proxy/schema-validator.ts +244 -0
  445. package/src/internal/proxy/schema.test.ts +27 -18
  446. package/src/internal/proxy/symbols.ts +7 -0
  447. package/src/internal/proxy/typed-handler.test.ts +264 -48
  448. package/src/internal/proxy/typed-handler.ts +275 -61
  449. package/src/internal/proxy/typed-object.test.ts +43 -27
  450. package/src/internal/ref/ref-array.ts +4 -4
  451. package/src/internal/ref/ref.test.ts +9 -8
  452. package/src/internal/ref/ref.ts +81 -54
  453. package/src/internal/{projection → schema}/compose.test.ts +8 -9
  454. package/src/internal/{projection → schema}/compose.ts +1 -1
  455. package/src/internal/schema/echo-schema.ts +73 -33
  456. package/src/internal/schema/index.ts +1 -4
  457. package/src/internal/schema/manipulation.ts +1 -1
  458. package/src/internal/schema/persistent-schema.ts +27 -0
  459. package/src/internal/types/base.ts +43 -0
  460. package/src/internal/types/entity.ts +54 -0
  461. package/src/internal/types/index.ts +5 -2
  462. package/src/internal/{object → types}/meta.ts +22 -17
  463. package/src/internal/types/typename.ts +45 -0
  464. package/src/internal/types/version.ts +20 -0
  465. package/src/testing/api.test.ts +126 -0
  466. package/src/testing/index.ts +3 -3
  467. package/src/testing/test-data.ts +130 -0
  468. package/src/testing/test-schema.ts +238 -0
  469. package/src/testing/util.ts +85 -0
  470. package/dist/lib/browser/chunk-HKFCK2GL.mjs +0 -175
  471. package/dist/lib/browser/chunk-HKFCK2GL.mjs.map +0 -7
  472. package/dist/lib/browser/chunk-MAAYELT7.mjs +0 -830
  473. package/dist/lib/browser/chunk-MAAYELT7.mjs.map +0 -7
  474. package/dist/lib/browser/chunk-MB6MMNFP.mjs +0 -3857
  475. package/dist/lib/browser/chunk-MB6MMNFP.mjs.map +0 -7
  476. package/dist/lib/browser/query/index.mjs +0 -15
  477. package/dist/lib/node-esm/chunk-5NWDGIBT.mjs +0 -830
  478. package/dist/lib/node-esm/chunk-5NWDGIBT.mjs.map +0 -7
  479. package/dist/lib/node-esm/chunk-AUAH4E2J.mjs +0 -175
  480. package/dist/lib/node-esm/chunk-AUAH4E2J.mjs.map +0 -7
  481. package/dist/lib/node-esm/chunk-BQRA4VLX.mjs +0 -3857
  482. package/dist/lib/node-esm/chunk-BQRA4VLX.mjs.map +0 -7
  483. package/dist/lib/node-esm/query/index.mjs +0 -15
  484. package/dist/types/src/errors.d.ts.map +0 -1
  485. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  486. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  487. package/dist/types/src/internal/ast/annotations.d.ts +0 -125
  488. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  489. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  490. package/dist/types/src/internal/ast/entity-kind.d.ts +0 -10
  491. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  492. package/dist/types/src/internal/ast/index.d.ts +0 -5
  493. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  494. package/dist/types/src/internal/ast/types.d.ts +0 -6
  495. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  496. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  497. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  498. package/dist/types/src/internal/json/index.d.ts +0 -2
  499. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  500. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  501. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  502. package/dist/types/src/internal/object/accessors.d.ts +0 -37
  503. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  504. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  505. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  506. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  507. package/dist/types/src/internal/object/entity.d.ts +0 -33
  508. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  509. package/dist/types/src/internal/object/expando.d.ts +0 -14
  510. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  511. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  512. package/dist/types/src/internal/object/model.d.ts +0 -117
  513. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  514. package/dist/types/src/internal/object/relation.d.ts +0 -17
  515. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  516. package/dist/types/src/internal/object/typename.d.ts +0 -15
  517. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  518. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  519. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  520. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  521. package/dist/types/src/internal/projection/index.d.ts +0 -2
  522. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  523. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  524. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  525. package/dist/types/src/internal/query/index.d.ts +0 -2
  526. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  527. package/dist/types/src/internal/query/query.d.ts +0 -17
  528. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  529. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  530. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  531. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  532. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  533. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  534. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  535. package/dist/types/src/internal/testing/index.d.ts +0 -3
  536. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  537. package/dist/types/src/internal/testing/types.d.ts +0 -455
  538. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  539. package/dist/types/src/internal/testing/utils.d.ts +0 -10
  540. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  541. package/dist/types/src/internal/types/types.d.ts +0 -79
  542. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  543. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  544. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  545. package/dist/types/src/internal/types/util.d.ts +0 -5
  546. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  547. package/dist/types/src/query/index.d.ts +0 -3
  548. package/dist/types/src/query/index.d.ts.map +0 -1
  549. package/dist/types/src/query/query.d.ts +0 -248
  550. package/dist/types/src/query/query.d.ts.map +0 -1
  551. package/dist/types/src/query/query.test.d.ts +0 -2
  552. package/dist/types/src/query/query.test.d.ts.map +0 -1
  553. package/dist/types/src/query/tag.d.ts +0 -17
  554. package/dist/types/src/query/tag.d.ts.map +0 -1
  555. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  556. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  557. package/dist/types/src/testing/types.d.ts +0 -113
  558. package/dist/types/src/testing/types.d.ts.map +0 -1
  559. package/src/internal/ast/annotation-helper.ts +0 -22
  560. package/src/internal/ast/annotations.ts +0 -219
  561. package/src/internal/ast/entity-kind.ts +0 -15
  562. package/src/internal/ast/index.ts +0 -8
  563. package/src/internal/ast/types.ts +0 -17
  564. package/src/internal/json/index.ts +0 -5
  565. package/src/internal/object/accessors.ts +0 -153
  566. package/src/internal/object/entity.ts +0 -248
  567. package/src/internal/object/expando.ts +0 -21
  568. package/src/internal/object/model.ts +0 -170
  569. package/src/internal/object/relation.ts +0 -24
  570. package/src/internal/object/typename.ts +0 -61
  571. package/src/internal/object/version.ts +0 -22
  572. package/src/internal/projection/index.ts +0 -5
  573. package/src/internal/proxy/reactive-object.ts +0 -108
  574. package/src/internal/query/index.ts +0 -5
  575. package/src/internal/query/query.ts +0 -23
  576. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  577. package/src/internal/schema/snapshot.ts +0 -25
  578. package/src/internal/schema/stored-schema.ts +0 -26
  579. package/src/internal/testing/index.ts +0 -6
  580. package/src/internal/testing/types.ts +0 -211
  581. package/src/internal/testing/utils.ts +0 -54
  582. package/src/internal/types/types.test.ts +0 -48
  583. package/src/internal/types/types.ts +0 -176
  584. package/src/internal/types/util.ts +0 -9
  585. package/src/query/index.ts +0 -6
  586. package/src/query/query.test.ts +0 -401
  587. package/src/query/query.ts +0 -789
  588. package/src/test/api.test.ts +0 -180
  589. package/src/testing/echo-schema.ts +0 -39
  590. package/src/testing/types.ts +0 -91
  591. /package/dist/lib/browser/{query/index.mjs.map → Annotation.mjs.map} +0 -0
  592. /package/dist/lib/{node-esm/query/index.mjs.map → browser/Database.mjs.map} +0 -0
  593. /package/dist/types/src/internal/{ast → annotations}/annotations.test.d.ts +0 -0
  594. /package/dist/types/src/internal/{json → json-schema}/annotations.d.ts +0 -0
  595. /package/dist/types/src/internal/{json → json-schema}/effect-schema.test.d.ts +0 -0
  596. /package/dist/types/src/internal/{json → json-schema}/json-schema.test.d.ts +0 -0
  597. /package/dist/types/src/internal/{projection → schema}/compose.d.ts +0 -0
  598. /package/dist/types/src/internal/{projection → schema}/compose.test.d.ts +0 -0
  599. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  600. /package/src/internal/{json → json-schema}/effect-schema.test.ts +0 -0
@@ -1,61 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { invariant } from '@dxos/invariant';
6
- import { DXN } from '@dxos/keys';
7
-
8
- import { getSchemaTypename } from '../ast';
9
- import { type BaseObject } from '../types';
10
-
11
- import { getSchema } from './accessors';
12
- import { TypeId } from './model';
13
-
14
- /**
15
- * Gets the typename of the object without the version.
16
- * Returns only the name portion, not the DXN.
17
- * @example "example.org/type/Contact"
18
- */
19
- export const getTypename = (obj: BaseObject): string | undefined => {
20
- const schema = getSchema(obj);
21
- if (schema != null) {
22
- // Try to extract typename from DXN.
23
- return getSchemaTypename(schema);
24
- } else {
25
- const type = getType(obj);
26
- return type?.asTypeDXN()?.type;
27
- }
28
- };
29
-
30
- /**
31
- * @internal
32
- */
33
- // TODO(dmaretskyi): Rename setTypeDXN.
34
- export const setTypename = (obj: any, typename: DXN) => {
35
- invariant(typename instanceof DXN, 'Invalid type.');
36
- Object.defineProperty(obj, TypeId, {
37
- value: typename,
38
- writable: false,
39
- enumerable: false,
40
- configurable: false,
41
- });
42
- };
43
-
44
- /**
45
- * @returns Object type as {@link DXN}.
46
- * @returns undefined if the object doesn't have a type.
47
- * @example `dxn:example.com/type/Contact:1.0.0`
48
- */
49
- export const getType = (obj: BaseObject): DXN | undefined => {
50
- if (!obj) {
51
- return undefined;
52
- }
53
-
54
- const type = (obj as any)[TypeId];
55
- if (!type) {
56
- return undefined;
57
- }
58
-
59
- invariant(type instanceof DXN, 'Invalid object.');
60
- return type;
61
- };
@@ -1,22 +0,0 @@
1
- //
2
- // NOTE: Those types must match the ones defined at @dxos/echo. We duplicated them murely due to technical constrains.
3
- //
4
-
5
- /**
6
- * Getter to get object version.
7
- */
8
- //
9
- // Copyright 2025 DXOS.org
10
- //
11
-
12
- export const VersionTypeId: unique symbol = Symbol('@dxos/echo/Version');
13
-
14
- /**
15
- * Represent object version.
16
- * May be backed by Automerge.
17
- * Objects with no history are not versioned.
18
- */
19
- export interface Version {
20
- [VersionTypeId]: {};
21
- automergeHeads?: string[];
22
- }
@@ -1,5 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export * from './compose';
@@ -1,108 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import type * as Schema from 'effect/Schema';
6
-
7
- import { ObjectId } from '@dxos/keys';
8
- import {
9
- type Live,
10
- UntypedReactiveHandler,
11
- createProxy,
12
- defineHiddenProperty,
13
- isValidProxyTarget,
14
- } from '@dxos/live-object';
15
-
16
- import { getTypeAnnotation } from '../ast';
17
- import { EntityKindId, Expando, MetaId, type ObjectMeta, ObjectMetaSchema, attachTypedJsonSerializer } from '../object';
18
- import type { BaseObject, CreationProps } from '../types';
19
-
20
- import { TypedReactiveHandler, prepareTypedTarget } from './typed-handler';
21
-
22
- /**
23
- * Creates a reactive object from a plain Javascript object.
24
- * Optionally provides a TS-effect schema.
25
- *
26
- * @depreacted Use `Obj.make`.
27
- */
28
- // TODO(dmaretskyi): Deep mutability.
29
- // TODO(dmaretskyi): Invert generics (generic over schema) to have better error messages.
30
- // TODO(dmaretskyi): Could mutate original object making it unusable.
31
- // TODO(burdon): Use Schema.make() to handle defaults?
32
- export const live: {
33
- <T extends BaseObject>(obj: T): Live<T>;
34
- <T extends BaseObject>(
35
- schema: Schema.Schema<T, any, never>,
36
- obj: NoInfer<CreationProps<T>>,
37
- meta?: ObjectMeta,
38
- ): Live<T>;
39
- } = <T extends BaseObject>(
40
- objOrSchema: Schema.Schema<T, any> | T,
41
- obj?: CreationProps<T>,
42
- meta?: ObjectMeta,
43
- ): Live<T> => {
44
- // TODO(dmaretskyi): Remove Expando special case.
45
- if (obj && (objOrSchema as any) !== Expando) {
46
- return createReactiveObject<T>({ ...obj } as T, meta, objOrSchema as Schema.Schema<T, any>);
47
- } else if (obj && (objOrSchema as any) === Expando) {
48
- return createReactiveObject<T>({ ...obj } as T, meta, undefined, { expando: true });
49
- } else {
50
- return createReactiveObject<T>(objOrSchema as T, meta);
51
- }
52
- };
53
-
54
- const createReactiveObject = <T extends BaseObject>(
55
- obj: T,
56
- meta?: ObjectMeta,
57
- schema?: Schema.Schema<T>,
58
- options?: { expando?: boolean },
59
- ): Live<T> => {
60
- if (!isValidProxyTarget(obj)) {
61
- throw new Error('Value cannot be made into a reactive object.');
62
- }
63
-
64
- if (schema) {
65
- const annotation = getTypeAnnotation(schema);
66
- const shouldGenerateId = options?.expando || !!annotation;
67
- if (shouldGenerateId) {
68
- setIdOnTarget(obj);
69
- }
70
- if (annotation) {
71
- defineHiddenProperty(obj, EntityKindId, annotation.kind);
72
- }
73
- initMeta(obj, meta);
74
- prepareTypedTarget(obj, schema);
75
- attachTypedJsonSerializer(obj);
76
- return createProxy<T>(obj, TypedReactiveHandler.instance);
77
- } else {
78
- if (options?.expando) {
79
- setIdOnTarget(obj);
80
- }
81
- initMeta(obj, meta);
82
- return createProxy<T>(obj, UntypedReactiveHandler.instance);
83
- }
84
- };
85
-
86
- /**
87
- * Set ID on ECHO object targets during creation.
88
- * Used for objects with schema and the ones explicitly marked as Expando.
89
- */
90
- const setIdOnTarget = (target: any) => {
91
- // invariant(!('id' in target), 'Object already has an `id` field, which is reserved.');
92
- if ('id' in target && target.id !== undefined && target.id !== null) {
93
- if (!ObjectId.isValid(target.id)) {
94
- throw new Error('Invalid object id format.');
95
- }
96
- } else {
97
- target.id = ObjectId.random();
98
- }
99
- };
100
-
101
- /**
102
- * Set metadata on object.
103
- */
104
- // TODO(dmaretskyi): Move to echo-schema.
105
- const initMeta = <T>(obj: T, meta: ObjectMeta = { keys: [] }) => {
106
- prepareTypedTarget(meta, ObjectMetaSchema);
107
- defineHiddenProperty(obj, MetaId, createProxy(meta, TypedReactiveHandler.instance as any));
108
- };
@@ -1,5 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export * from './query';
@@ -1,23 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- // TODO(wittjosiah): Remove. Use ordering in queries instead.
8
-
9
- /** @deprecated */
10
- const SortDirection = Schema.Union(Schema.Literal('asc'), Schema.Literal('desc'));
11
- /** @deprecated */
12
- export type SortDirectionType = Schema.Schema.Type<typeof SortDirection>;
13
-
14
- /** @deprecated */
15
- const FieldSort = Schema.Struct({
16
- fieldId: Schema.String,
17
- direction: SortDirection,
18
- }).pipe(Schema.mutable);
19
-
20
- /** @deprecated */
21
- export interface FieldSortType extends Schema.Schema.Type<typeof FieldSort> {}
22
- /** @deprecated */
23
- export const FieldSortType: Schema.Schema<FieldSortType> = FieldSort;
@@ -1,78 +0,0 @@
1
- //
2
- // Copyright 2022 DXOS.org
3
- //
4
-
5
- import type * as Schema from 'effect/Schema';
6
-
7
- import { raise } from '@dxos/debug';
8
- import { invariant } from '@dxos/invariant';
9
- import { type DXN } from '@dxos/keys';
10
- import { defaultMap } from '@dxos/util';
11
-
12
- import { getSchemaTypename, getSchemaVersion } from '../ast';
13
-
14
- import { StoredSchema } from './stored-schema';
15
-
16
- /**
17
- * Runtime registry of static schema objects (i.e., not Dynamic .
18
- */
19
- // TODO(burdon): Reconcile with EchoSchemaRegistry.
20
- export class RuntimeSchemaRegistry {
21
- private readonly _registry = new Map<string, Schema.Schema.AnyNoContext[]>();
22
-
23
- constructor() {
24
- this._registry.set(StoredSchema.typename, [StoredSchema]);
25
- }
26
-
27
- get schemas(): Schema.Schema.AnyNoContext[] {
28
- return Array.from(this._registry.values()).flat();
29
- }
30
-
31
- hasSchema<S extends Schema.Schema.AnyNoContext>(schema: S): boolean {
32
- const typename = getSchemaTypename(schema);
33
- const version = getSchemaVersion(schema);
34
- invariant(typename, 'Invalid schema');
35
-
36
- const schemas = this._registry.get(typename);
37
- return schemas?.some((schema) => getSchemaVersion(schema) === version) ?? false;
38
- }
39
-
40
- getSchemaByDXN(dxn: DXN): Schema.Schema.AnyNoContext | undefined {
41
- const components = dxn.asTypeDXN();
42
- if (!components) {
43
- return undefined;
44
- }
45
-
46
- const { type, version } = components;
47
- const allSchemas = this._registry.get(type) ?? [];
48
- if (version) {
49
- return allSchemas.find((s) => getSchemaVersion(s) === version);
50
- } else {
51
- // If no version is specified, return the earliest version for backwards compatibility.
52
- // TODO(dmaretskyi): Probably not correct to compare lexicographically, but it's good enough for now.
53
- return allSchemas.sort((a, b) =>
54
- (getSchemaVersion(a) ?? '0.0.0').localeCompare(getSchemaVersion(b) ?? '0.0.0'),
55
- )[0];
56
- }
57
- }
58
-
59
- /**
60
- * @deprecated Use getSchemaByDXN.
61
- */
62
- getSchema(typename: string): Schema.Schema.AnyNoContext | undefined {
63
- return this._registry.get(typename)?.[0];
64
- }
65
-
66
- addSchema(types: Schema.Schema.AnyNoContext[]): void {
67
- types.forEach((schema) => {
68
- const typename = getSchemaTypename(schema) ?? raise(new TypeError('Schema has no typename'));
69
- const version = getSchemaVersion(schema) ?? raise(new TypeError('Schema has no version'));
70
- const versions = defaultMap(this._registry, typename, () => []);
71
- if (versions.some((schema) => getSchemaVersion(schema) === version)) {
72
- throw new Error(`Schema version already registered: ${typename}:${version}`);
73
- }
74
-
75
- versions.push(schema);
76
- });
77
- }
78
- }
@@ -1,25 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- /**
6
- * Returns a non-reactive snapshot of the given live object.
7
- * @deprecated Use `getSnapshot` from `@dxos/live-object` instead.
8
- */
9
- // TODO(wittjosiah): Types.
10
- export const getSnapshot = (object: any): any => {
11
- if (typeof object !== 'object') {
12
- return object;
13
- }
14
-
15
- if (Array.isArray(object)) {
16
- return object.map(getSnapshot);
17
- }
18
-
19
- const result: any = {};
20
- for (const key in object) {
21
- result[key] = getSnapshot(object[key]);
22
- }
23
-
24
- return result;
25
- };
@@ -1,26 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- import { SchemaVersion, Typename } from '../ast';
8
- import { JsonSchemaType } from '../json-schema';
9
- import { EchoObject } from '../object';
10
-
11
- /**
12
- * Persistent representation of a schema.
13
- */
14
- export const StoredSchema = Schema.Struct({
15
- name: Schema.optional(Schema.String),
16
- typename: Typename,
17
- version: SchemaVersion,
18
- jsonSchema: JsonSchemaType,
19
- }).pipe(
20
- EchoObject({
21
- typename: 'dxos.org/type/Schema',
22
- version: '0.1.0',
23
- }),
24
- );
25
-
26
- export type StoredSchema = Schema.Schema.Type<typeof StoredSchema>;
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export * from './types';
6
- export * from './utils';
@@ -1,211 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- import { EchoObject, EchoRelation, Expando, TypedObject } from '../object';
8
- import { Ref, type Ref$ } from '../ref';
9
-
10
- // TODO(burdon): These are non-canonical test types, so we really shouldn't export and use in other classes (compare with @dxos/sdk/testing).
11
- export namespace Testing {
12
- //
13
- // Primitives
14
- //
15
-
16
- const Circle = Schema.Struct({ type: Schema.Literal('circle'), radius: Schema.Number });
17
- const Square = Schema.Struct({ type: Schema.Literal('square'), side: Schema.Number });
18
- const Shape = Schema.Union(Circle, Square);
19
-
20
- //
21
- // Simple types
22
- //
23
-
24
- const TestNestedSchema = Schema.mutable(Schema.Struct({ field: Schema.String }));
25
- export type TestNestedSchema = Schema.Schema.Type<typeof TestNestedSchema>;
26
- export const TestNestedType = TestNestedSchema.pipe(
27
- EchoObject({ typename: 'example.com/type/TestNested', version: '0.1.0' }),
28
- );
29
-
30
- //
31
- // Complex types
32
- // TODO(burdon): Change to Type.Obj.
33
- //
34
-
35
- export class EmptySchemaType extends TypedObject({
36
- typename: 'example.com/type/Empty',
37
- version: '0.1.0',
38
- })({}) {}
39
-
40
- const fields = {
41
- string: Schema.String,
42
- number: Schema.Number,
43
- nullableShapeArray: Schema.mutable(Schema.Array(Schema.Union(Shape, Schema.Null))),
44
- boolean: Schema.Boolean,
45
- null: Schema.Null,
46
- undefined: Schema.Undefined,
47
- stringArray: Schema.mutable(Schema.Array(Schema.String)),
48
- twoDimNumberArray: Schema.mutable(Schema.Array(Schema.mutable(Schema.Array(Schema.Number)))),
49
- object: TestNestedSchema,
50
- objectArray: Schema.mutable(Schema.Array(TestNestedSchema)),
51
- nested: Schema.optional(Ref(TestNestedType)),
52
- other: Schema.Any,
53
- };
54
-
55
- export const TestSchema = Schema.mutable(Schema.partial(Schema.Struct(fields)));
56
- export type TestSchema = Schema.Schema.Type<typeof TestSchema>;
57
-
58
- export class TestSchemaType extends TypedObject({
59
- typename: 'example.com/type/Test',
60
- version: '0.1.0',
61
- })(fields, { partial: true }) {} // TODO(burdon): Partial?
62
-
63
- // TODO(burdon): Why do we use need this rather then TestSchemaType?
64
- export const TestType = TestSchema.pipe(
65
- EchoObject({
66
- typename: 'example.com/type/Test',
67
- version: '0.1.0',
68
- }),
69
- );
70
-
71
- export class TestClass {
72
- field = 'value';
73
- toJSON() {
74
- return { field: this.field };
75
- }
76
- }
77
-
78
- // TODO(dmaretskyi): Another top-level Schema.mutable call as a workaround for the regression in the last minor.
79
- export const TestSchemaWithClass = Schema.mutable(
80
- Schema.extend(
81
- TestSchema,
82
- Schema.mutable(
83
- Schema.Struct({
84
- classInstance: Schema.optional(Schema.instanceOf(TestClass)),
85
- }),
86
- ),
87
- ),
88
- );
89
-
90
- export type TestSchemaWithClass = Schema.Schema.Type<typeof TestSchemaWithClass>;
91
-
92
- export class Contact extends TypedObject({
93
- typename: 'example.com/type/Contact',
94
- version: '0.1.0',
95
- })(
96
- {
97
- name: Schema.String,
98
- username: Schema.String,
99
- email: Schema.String,
100
- phoneNumbers: Schema.optional(Schema.Array(Schema.Struct({ label: Schema.String, number: Schema.String }))),
101
- tasks: Schema.suspend((): Schema.mutable<Schema.Array$<Ref$<Task>>> => Schema.mutable(Schema.Array(Ref(Task)))),
102
- address: Schema.Struct({
103
- city: Schema.optional(Schema.String),
104
- state: Schema.optional(Schema.String),
105
- zip: Schema.optional(Schema.String),
106
- coordinates: Schema.Struct({
107
- lat: Schema.optional(Schema.Number),
108
- lng: Schema.optional(Schema.Number),
109
- }),
110
- }),
111
- },
112
- { partial: true },
113
- ) {}
114
-
115
- export class Task extends TypedObject({
116
- typename: 'example.com/type/Task',
117
- version: '0.1.0',
118
- })(
119
- {
120
- title: Schema.optional(Schema.String),
121
- completed: Schema.optional(Schema.Boolean),
122
- assignee: Schema.optional(Ref(Contact)),
123
- previous: Schema.optional(Schema.suspend((): Ref$<Task> => Ref(Task))),
124
- subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend((): Ref$<Task> => Ref(Task))))),
125
- description: Schema.optional(Schema.String),
126
- },
127
- { partial: true },
128
- ) {}
129
-
130
- // TOOD(burdon): Ref$ breaks if using new syntax (since ID is not declared).
131
-
132
- // export const Task = Schema.Struct({
133
- // title: Schema.String,
134
- // completed: Schema.Boolean,
135
- // assignee: Schema.optional(Ref(Schema.suspend((): Ref$<Contact> => Ref(Contact)))),
136
- // previous: Schema.optional(Ref(Schema.suspend((): Ref$<Task> => Ref(Task)))),
137
- // subTasks: Schema.optional(Schema.Array(Ref(Schema.suspend((): Ref$<Task> => Ref(Task))))),
138
- // description: Schema.optional(Schema.String),
139
- // }).pipe(
140
- // EchoObject({
141
- // typename: 'example.com/type/Task',
142
- // version: '0.1.0',
143
- // }),
144
- // );
145
-
146
- // export type Task = Schema.Schema.Type<typeof Task>;
147
-
148
- // export const Contact = Schema.Struct({
149
- // name: Schema.String,
150
- // username: Schema.String,
151
- // email: Schema.String,
152
- // // TOOD(burdon): Should model via relations?
153
- // // tasks: Schema.mutable(Schema.Array(Ref(Task))),
154
- // address: Schema.Struct({
155
- // city: Schema.optional(Schema.String),
156
- // state: Schema.optional(Schema.String),
157
- // zip: Schema.optional(Schema.String),
158
- // coordinates: Schema.Struct({
159
- // lat: Schema.optional(Schema.Number),
160
- // lng: Schema.optional(Schema.Number),
161
- // }),
162
- // }),
163
- // }).pipe(
164
- // EchoObject({
165
- // typename: 'example.com/type/Contact',
166
- // version: '0.1.0',
167
- // }),
168
- // );
169
-
170
- // export type Contact = Schema.Schema.Type<typeof Contact>;
171
-
172
- export enum RecordType {
173
- UNDEFINED = 0,
174
- PERSONAL = 1,
175
- WORK = 2,
176
- }
177
-
178
- export class Container extends TypedObject({
179
- typename: 'example.com/type/Container',
180
- version: '0.1.0',
181
- })(
182
- {
183
- objects: Schema.mutable(Schema.Array(Ref(Expando))),
184
- records: Schema.mutable(
185
- Schema.Array(
186
- Schema.partial(
187
- Schema.Struct({
188
- title: Schema.String,
189
- description: Schema.String,
190
- contacts: Schema.mutable(Schema.Array(Ref(Contact))),
191
- type: Schema.Enums(RecordType),
192
- }),
193
- ),
194
- ),
195
- ),
196
- },
197
- { partial: true },
198
- ) {}
199
-
200
- export const HasManager = Schema.Struct({
201
- since: Schema.optional(Schema.String),
202
- }).pipe(
203
- EchoRelation({
204
- typename: 'example.com/type/HasManager',
205
- version: '0.1.0',
206
- source: Contact,
207
- target: Contact,
208
- }),
209
- );
210
- export interface HasManager extends Schema.Schema.Type<typeof HasManager> {}
211
- }
@@ -1,54 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { effect } from '@preact/signals-core';
6
- import type * as SchemaAST from 'effect/SchemaAST';
7
-
8
- import { registerSignalsRuntime } from '@dxos/echo-signals';
9
- import { deepMapValues } from '@dxos/util';
10
-
11
- registerSignalsRuntime();
12
-
13
- // TODO(burdon): Move to util.
14
- export const updateCounter = (touch: () => void) => {
15
- let updateCount = -1;
16
- const unsubscribe = effect(() => {
17
- touch();
18
- updateCount++;
19
- });
20
-
21
- return {
22
- // https://github.com/tc39/proposal-explicit-resource-management
23
- [Symbol.dispose]: unsubscribe,
24
- get count() {
25
- return updateCount;
26
- },
27
- };
28
- };
29
-
30
- /**
31
- * Converts AST to a format that can be compared with test matchers.
32
- */
33
- export const prepareAstForCompare = (obj: SchemaAST.AST): any =>
34
- deepMapValues(obj, (value: any, recurse, key) => {
35
- if (typeof value === 'function') {
36
- return null;
37
- }
38
-
39
- if (value instanceof RegExp) {
40
- return value;
41
- }
42
-
43
- // Convert symbols to strings.
44
- if (typeof value === 'object') {
45
- const clone = { ...value };
46
- for (const sym of Object.getOwnPropertySymbols(clone as any)) {
47
- clone[sym.toString()] = clone[sym];
48
- delete clone[sym];
49
- }
50
- return recurse(clone);
51
- }
52
-
53
- return recurse(value);
54
- });
@@ -1,48 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { describe, test } from 'vitest';
6
-
7
- import { type JsonPath } from '@dxos/effect';
8
-
9
- import { type BaseObject, getValue, setValue } from './types';
10
-
11
- describe('Types', () => {
12
- test('checks sanity', async ({ expect }) => {
13
- const obj: BaseObject = {};
14
- expect(obj).to.exist;
15
- });
16
- });
17
-
18
- describe('get/set deep', () => {
19
- test('get/set operations', ({ expect }) => {
20
- const obj = {
21
- name: 'test',
22
- items: ['a', 'b', 'c'],
23
- nested: {
24
- prop: 'value',
25
- arr: [1, 2, 3],
26
- },
27
- };
28
-
29
- // Basic property access.
30
- expect(getValue(obj, 'name' as JsonPath)).toBe('test');
31
-
32
- // Array index access.
33
- expect(getValue(obj, 'items[1]' as JsonPath)).toBe('b');
34
-
35
- // Nested property access.
36
- expect(getValue(obj, 'nested.prop' as JsonPath)).toBe('value');
37
-
38
- // Nested array access.
39
- expect(getValue(obj, 'nested.arr[2]' as JsonPath)).toBe(3);
40
-
41
- // Setting values.
42
- const updated1 = setValue(obj, 'items[1]' as JsonPath, 'x');
43
- expect(updated1.items[1]).toBe('x');
44
-
45
- const updated2 = setValue(obj, 'nested.arr[0]' as JsonPath, 99);
46
- expect(updated2.nested.arr[0]).toBe(99);
47
- });
48
- });