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

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 (533) hide show
  1. package/README.md +1 -2
  2. package/dist/lib/neutral/Annotation.mjs +35 -0
  3. package/dist/lib/neutral/Database.mjs +45 -0
  4. package/dist/lib/neutral/Entity.mjs +51 -0
  5. package/dist/lib/neutral/Err.mjs +10 -0
  6. package/dist/lib/neutral/Filter.mjs +61 -0
  7. package/dist/lib/neutral/Format.mjs +66 -0
  8. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  9. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  10. package/dist/lib/neutral/Key.mjs +12 -0
  11. package/dist/lib/neutral/Key.mjs.map +7 -0
  12. package/dist/lib/neutral/Obj.mjs +96 -0
  13. package/dist/lib/neutral/Obj.mjs.map +7 -0
  14. package/dist/lib/neutral/Order.mjs +12 -0
  15. package/dist/lib/neutral/Order.mjs.map +7 -0
  16. package/dist/lib/neutral/Query.mjs +26 -0
  17. package/dist/lib/neutral/Query.mjs.map +7 -0
  18. package/dist/lib/neutral/QueryResult.mjs +2 -0
  19. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  20. package/dist/lib/neutral/Ref.mjs +22 -0
  21. package/dist/lib/neutral/Ref.mjs.map +7 -0
  22. package/dist/lib/neutral/Relation.mjs +84 -0
  23. package/dist/lib/neutral/Relation.mjs.map +7 -0
  24. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  25. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  26. package/dist/lib/neutral/Tag.mjs +25 -0
  27. package/dist/lib/neutral/Tag.mjs.map +7 -0
  28. package/dist/lib/neutral/Type.mjs +47 -0
  29. package/dist/lib/neutral/Type.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-2AF5GMG6.mjs +171 -0
  31. package/dist/lib/neutral/chunk-2AF5GMG6.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-4L6DOFXP.mjs +7 -0
  33. package/dist/lib/neutral/chunk-4L6DOFXP.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-7WE7SBA2.mjs +402 -0
  35. package/dist/lib/neutral/chunk-7WE7SBA2.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  37. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-DLPC7DHQ.mjs +56 -0
  39. package/dist/lib/neutral/chunk-DLPC7DHQ.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-EBUAT5ID.mjs +229 -0
  41. package/dist/lib/neutral/chunk-EBUAT5ID.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  43. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-K5K3Z62A.mjs +40 -0
  45. package/dist/lib/neutral/chunk-K5K3Z62A.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-KB7RIVLK.mjs +67 -0
  47. package/dist/lib/neutral/chunk-KB7RIVLK.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-LKFNEFHF.mjs +130 -0
  49. package/dist/lib/neutral/chunk-LKFNEFHF.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-MTEHHY62.mjs +251 -0
  51. package/dist/lib/neutral/chunk-MTEHHY62.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-N2QNHMT5.mjs +73 -0
  53. package/dist/lib/neutral/chunk-N2QNHMT5.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  55. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-QARLJVDB.mjs +23 -0
  57. package/dist/lib/neutral/chunk-QARLJVDB.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-RIMHNJ3E.mjs +296 -0
  59. package/dist/lib/neutral/chunk-RIMHNJ3E.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-ROKO4RKJ.mjs +42 -0
  61. package/dist/lib/neutral/chunk-ROKO4RKJ.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-RPB6V4BE.mjs +38 -0
  63. package/dist/lib/neutral/chunk-RPB6V4BE.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-TLGNKUUG.mjs +3905 -0
  65. package/dist/lib/neutral/chunk-TLGNKUUG.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-TQT6WTIJ.mjs +142 -0
  67. package/dist/lib/neutral/chunk-TQT6WTIJ.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-VUQGRDRI.mjs +97 -0
  69. package/dist/lib/neutral/chunk-VUQGRDRI.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-X2MPMYYN.mjs +13 -0
  71. package/dist/lib/neutral/chunk-X2MPMYYN.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-XAJMXQ4H.mjs +43 -0
  73. package/dist/lib/neutral/chunk-XAJMXQ4H.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-ZAHWXGK4.mjs +287 -0
  75. package/dist/lib/neutral/chunk-ZAHWXGK4.mjs.map +7 -0
  76. package/dist/lib/neutral/index.mjs +84 -0
  77. package/dist/lib/neutral/index.mjs.map +7 -0
  78. package/dist/lib/{node-esm → neutral}/internal/index.mjs +251 -125
  79. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  80. package/dist/lib/neutral/meta.json +1 -0
  81. package/dist/lib/neutral/testing/index.mjs +366 -0
  82. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  83. package/dist/types/src/Annotation.d.ts +24 -0
  84. package/dist/types/src/Annotation.d.ts.map +1 -0
  85. package/dist/types/src/Database.d.ts +216 -0
  86. package/dist/types/src/Database.d.ts.map +1 -0
  87. package/dist/types/src/Entity.d.ts +142 -0
  88. package/dist/types/src/Entity.d.ts.map +1 -0
  89. package/dist/types/src/Entity.test.d.ts +2 -0
  90. package/dist/types/src/Entity.test.d.ts.map +1 -0
  91. package/dist/types/src/{errors.d.ts → Err.d.ts} +13 -17
  92. package/dist/types/src/Err.d.ts.map +1 -0
  93. package/dist/types/src/Filter.d.ts +120 -0
  94. package/dist/types/src/Filter.d.ts.map +1 -0
  95. package/dist/types/src/Format.d.ts +4 -0
  96. package/dist/types/src/Format.d.ts.map +1 -0
  97. package/dist/types/src/Hypergraph.d.ts +60 -0
  98. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  99. package/dist/types/src/JsonSchema.d.ts +9 -0
  100. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  101. package/dist/types/src/Key.d.ts +1 -0
  102. package/dist/types/src/Key.d.ts.map +1 -1
  103. package/dist/types/src/Obj.d.ts +325 -99
  104. package/dist/types/src/Obj.d.ts.map +1 -1
  105. package/dist/types/src/Obj.test.d.ts +2 -0
  106. package/dist/types/src/Obj.test.d.ts.map +1 -0
  107. package/dist/types/src/Order.d.ts +16 -0
  108. package/dist/types/src/Order.d.ts.map +1 -0
  109. package/dist/types/src/Query.d.ts +125 -0
  110. package/dist/types/src/Query.d.ts.map +1 -0
  111. package/dist/types/src/Query.test.d.ts +2 -0
  112. package/dist/types/src/Query.test.d.ts.map +1 -0
  113. package/dist/types/src/QueryResult.d.ts +80 -0
  114. package/dist/types/src/QueryResult.d.ts.map +1 -0
  115. package/dist/types/src/Ref.d.ts +13 -11
  116. package/dist/types/src/Ref.d.ts.map +1 -1
  117. package/dist/types/src/Relation.d.ts +243 -23
  118. package/dist/types/src/Relation.d.ts.map +1 -1
  119. package/dist/types/src/Relation.test.d.ts +2 -0
  120. package/dist/types/src/Relation.test.d.ts.map +1 -0
  121. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  122. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  123. package/dist/types/src/Tag.d.ts +7 -7
  124. package/dist/types/src/Tag.d.ts.map +1 -1
  125. package/dist/types/src/Type.d.ts +225 -72
  126. package/dist/types/src/Type.d.ts.map +1 -1
  127. package/dist/types/src/Type.test.d.ts +2 -0
  128. package/dist/types/src/Type.test.d.ts.map +1 -0
  129. package/dist/types/src/hierarchy.test.d.ts +2 -0
  130. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  131. package/dist/types/src/index.d.ts +14 -5
  132. package/dist/types/src/index.d.ts.map +1 -1
  133. package/dist/types/src/internal/annotations/annotations.d.ts +177 -0
  134. package/dist/types/src/internal/annotations/annotations.d.ts.map +1 -0
  135. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +1 -0
  136. package/dist/types/src/internal/annotations/index.d.ts +3 -0
  137. package/dist/types/src/internal/annotations/index.d.ts.map +1 -0
  138. package/dist/types/src/internal/annotations/util.d.ts +39 -0
  139. package/dist/types/src/internal/annotations/util.d.ts.map +1 -0
  140. package/dist/types/src/internal/api/annotations.d.ts +23 -0
  141. package/dist/types/src/internal/api/annotations.d.ts.map +1 -0
  142. package/dist/types/src/internal/api/entity.d.ts +13 -0
  143. package/dist/types/src/internal/api/entity.d.ts.map +1 -0
  144. package/dist/types/src/internal/api/index.d.ts +15 -0
  145. package/dist/types/src/internal/api/index.d.ts.map +1 -0
  146. package/dist/types/src/internal/api/meta.d.ts +42 -0
  147. package/dist/types/src/internal/api/meta.d.ts.map +1 -0
  148. package/dist/types/src/internal/api/sorting.d.ts +24 -0
  149. package/dist/types/src/internal/api/sorting.d.ts.map +1 -0
  150. package/dist/types/src/internal/api/version.d.ts +42 -0
  151. package/dist/types/src/internal/api/version.d.ts.map +1 -0
  152. package/dist/types/src/internal/entities/entity.d.ts +20 -0
  153. package/dist/types/src/internal/entities/entity.d.ts.map +1 -0
  154. package/dist/types/src/internal/entities/index.d.ts +6 -0
  155. package/dist/types/src/internal/entities/index.d.ts.map +1 -0
  156. package/dist/types/src/internal/entities/model.d.ts +79 -0
  157. package/dist/types/src/internal/entities/model.d.ts.map +1 -0
  158. package/dist/types/src/internal/entities/object.d.ts +18 -0
  159. package/dist/types/src/internal/entities/object.d.ts.map +1 -0
  160. package/dist/types/src/internal/entities/relation.d.ts +62 -0
  161. package/dist/types/src/internal/entities/relation.d.ts.map +1 -0
  162. package/dist/types/src/internal/entities/util.d.ts +2 -0
  163. package/dist/types/src/internal/entities/util.d.ts.map +1 -0
  164. package/dist/types/src/internal/formats/format.d.ts +4 -2
  165. package/dist/types/src/internal/formats/format.d.ts.map +1 -1
  166. package/dist/types/src/internal/formats/select.d.ts +6 -4
  167. package/dist/types/src/internal/formats/select.d.ts.map +1 -1
  168. package/dist/types/src/internal/formats/string.d.ts +4 -0
  169. package/dist/types/src/internal/formats/string.d.ts.map +1 -1
  170. package/dist/types/src/internal/formats/types.d.ts +13 -9
  171. package/dist/types/src/internal/formats/types.d.ts.map +1 -1
  172. package/dist/types/src/internal/index.d.ts +7 -10
  173. package/dist/types/src/internal/index.d.ts.map +1 -1
  174. package/dist/types/src/internal/json-schema/annotations.d.ts.map +1 -0
  175. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +1 -0
  176. package/dist/types/src/internal/json-schema/index.d.ts +2 -0
  177. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -1
  178. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -1
  179. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +130 -29
  180. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -1
  181. package/dist/types/src/internal/{json → json-schema}/json-schema.d.ts +4 -2
  182. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +1 -0
  183. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +1 -0
  184. package/dist/types/src/internal/object/clone.d.ts +8 -0
  185. package/dist/types/src/internal/object/clone.d.ts.map +1 -0
  186. package/dist/types/src/internal/object/common.d.ts.map +1 -1
  187. package/dist/types/src/internal/object/{create.d.ts → create-object.d.ts} +9 -10
  188. package/dist/types/src/internal/object/create-object.d.ts.map +1 -0
  189. package/dist/types/src/internal/object/create-object.test.d.ts +2 -0
  190. package/dist/types/src/internal/object/create-object.test.d.ts.map +1 -0
  191. package/dist/types/src/internal/object/deleted.d.ts +2 -2
  192. package/dist/types/src/internal/object/deleted.d.ts.map +1 -1
  193. package/dist/types/src/internal/object/ids.d.ts.map +1 -1
  194. package/dist/types/src/internal/object/index.d.ts +6 -11
  195. package/dist/types/src/internal/object/index.d.ts.map +1 -1
  196. package/dist/types/src/internal/object/json-serializer.d.ts +14 -9
  197. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -1
  198. package/dist/types/src/internal/object/schema-validator.d.ts +1 -14
  199. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -1
  200. package/dist/types/src/internal/object/set-value.d.ts +7 -0
  201. package/dist/types/src/internal/object/set-value.d.ts.map +1 -0
  202. package/dist/types/src/internal/object/set-value.test.d.ts +2 -0
  203. package/dist/types/src/internal/object/set-value.test.d.ts.map +1 -0
  204. package/dist/types/src/internal/object/snapshot.d.ts +6 -0
  205. package/dist/types/src/internal/object/snapshot.d.ts.map +1 -0
  206. package/dist/types/src/internal/object/typed-object.d.ts +8 -14
  207. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -1
  208. package/dist/types/src/internal/proxy/change-context.d.ts +55 -0
  209. package/dist/types/src/internal/proxy/change-context.d.ts.map +1 -0
  210. package/dist/types/src/internal/proxy/change.test.d.ts +2 -0
  211. package/dist/types/src/internal/proxy/change.test.d.ts.map +1 -0
  212. package/dist/types/src/internal/proxy/define-hidden-property.d.ts +5 -0
  213. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +1 -0
  214. package/dist/types/src/internal/proxy/errors.d.ts +19 -0
  215. package/dist/types/src/internal/proxy/errors.d.ts.map +1 -0
  216. package/dist/types/src/internal/proxy/event-batch.d.ts +10 -0
  217. package/dist/types/src/internal/proxy/event-batch.d.ts.map +1 -0
  218. package/dist/types/src/internal/proxy/index.d.ts +14 -0
  219. package/dist/types/src/internal/proxy/index.d.ts.map +1 -0
  220. package/dist/types/src/internal/proxy/json-serializer.d.ts +6 -0
  221. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +1 -0
  222. package/dist/types/src/internal/proxy/make-object.d.ts +14 -0
  223. package/dist/types/src/internal/proxy/make-object.d.ts.map +1 -0
  224. package/dist/types/src/internal/proxy/ownership.d.ts +57 -0
  225. package/dist/types/src/internal/proxy/ownership.d.ts.map +1 -0
  226. package/dist/types/src/internal/proxy/proxy-types.d.ts +18 -0
  227. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +1 -0
  228. package/dist/types/src/internal/proxy/proxy-utils.d.ts +47 -0
  229. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +1 -0
  230. package/dist/types/src/internal/proxy/reactive-array.d.ts +8 -0
  231. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +1 -0
  232. package/dist/types/src/internal/proxy/reactive.d.ts +39 -0
  233. package/dist/types/src/internal/proxy/reactive.d.ts.map +1 -0
  234. package/dist/types/src/internal/proxy/schema-validator.d.ts +15 -0
  235. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +1 -0
  236. package/dist/types/src/internal/proxy/symbols.d.ts +3 -0
  237. package/dist/types/src/internal/proxy/symbols.d.ts.map +1 -0
  238. package/dist/types/src/internal/proxy/typed-handler.d.ts +16 -12
  239. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -1
  240. package/dist/types/src/internal/ref/ref-array.d.ts +4 -4
  241. package/dist/types/src/internal/ref/ref-array.d.ts.map +1 -1
  242. package/dist/types/src/internal/ref/ref.d.ts +43 -18
  243. package/dist/types/src/internal/ref/ref.d.ts.map +1 -1
  244. package/dist/types/src/internal/schema/compose.d.ts +7 -0
  245. package/dist/types/src/internal/schema/compose.d.ts.map +1 -0
  246. package/dist/types/src/internal/schema/compose.test.d.ts.map +1 -0
  247. package/dist/types/src/internal/schema/echo-schema.d.ts +25 -12
  248. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -1
  249. package/dist/types/src/internal/schema/index.d.ts +1 -4
  250. package/dist/types/src/internal/schema/index.d.ts.map +1 -1
  251. package/dist/types/src/internal/schema/persistent-schema.d.ts +20 -0
  252. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +1 -0
  253. package/dist/types/src/internal/types/base.d.ts +26 -0
  254. package/dist/types/src/internal/types/base.d.ts.map +1 -0
  255. package/dist/types/src/internal/types/entity.d.ts +37 -0
  256. package/dist/types/src/internal/types/entity.d.ts.map +1 -0
  257. package/dist/types/src/internal/types/index.d.ts +5 -2
  258. package/dist/types/src/internal/types/index.d.ts.map +1 -1
  259. package/dist/types/src/internal/{object → types}/meta.d.ts +17 -16
  260. package/dist/types/src/internal/types/meta.d.ts.map +1 -0
  261. package/dist/types/src/internal/types/typename.d.ts +21 -0
  262. package/dist/types/src/internal/types/typename.d.ts.map +1 -0
  263. package/dist/types/src/internal/{object → types}/version.d.ts +3 -2
  264. package/dist/types/src/internal/types/version.d.ts.map +1 -0
  265. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  266. package/dist/types/src/testing/index.d.ts +3 -3
  267. package/dist/types/src/testing/index.d.ts.map +1 -1
  268. package/dist/types/src/testing/test-data.d.ts +18 -0
  269. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  270. package/dist/types/src/testing/test-schema.d.ts +303 -0
  271. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  272. package/dist/types/src/testing/util.d.ts +21 -0
  273. package/dist/types/src/testing/util.d.ts.map +1 -0
  274. package/dist/types/tsconfig.tsbuildinfo +1 -1
  275. package/package.json +101 -65
  276. package/src/Annotation.ts +45 -0
  277. package/src/Database.ts +353 -0
  278. package/src/Entity.test.ts +22 -0
  279. package/src/Entity.ts +217 -0
  280. package/src/{errors.ts → Err.ts} +2 -2
  281. package/src/Filter.ts +376 -0
  282. package/src/Format.ts +9 -0
  283. package/src/Hypergraph.ts +74 -0
  284. package/src/JsonSchema.ts +16 -0
  285. package/src/Key.ts +3 -0
  286. package/src/Obj.test.ts +412 -0
  287. package/src/Obj.ts +489 -289
  288. package/src/Order.ts +44 -0
  289. package/src/Query.test.ts +465 -0
  290. package/src/Query.ts +324 -0
  291. package/src/QueryResult.ts +106 -0
  292. package/src/Ref.ts +26 -9
  293. package/src/Relation.test.ts +82 -0
  294. package/src/Relation.ts +414 -61
  295. package/src/SchemaRegistry.ts +105 -0
  296. package/src/Tag.ts +3 -2
  297. package/src/Type.test.ts +52 -0
  298. package/src/Type.ts +361 -114
  299. package/src/hierarchy.test.ts +33 -0
  300. package/src/index.ts +15 -6
  301. package/src/internal/README.md +102 -0
  302. package/src/internal/{ast → annotations}/annotations.test.ts +18 -20
  303. package/src/internal/annotations/annotations.ts +487 -0
  304. package/src/internal/annotations/index.ts +6 -0
  305. package/src/internal/annotations/util.ts +85 -0
  306. package/src/internal/api/annotations.ts +60 -0
  307. package/src/internal/api/entity.ts +29 -0
  308. package/src/internal/api/index.ts +19 -0
  309. package/src/internal/api/meta.ts +88 -0
  310. package/src/internal/api/sorting.ts +53 -0
  311. package/src/internal/api/version.ts +96 -0
  312. package/src/internal/entities/entity.ts +126 -0
  313. package/src/internal/entities/index.ts +9 -0
  314. package/src/internal/entities/model.ts +138 -0
  315. package/src/internal/entities/object.ts +58 -0
  316. package/src/internal/entities/relation.ts +171 -0
  317. package/src/internal/entities/util.ts +33 -0
  318. package/src/internal/formats/date.test.ts +1 -1
  319. package/src/internal/formats/date.ts +5 -5
  320. package/src/internal/formats/format.test.ts +6 -6
  321. package/src/internal/formats/format.ts +8 -6
  322. package/src/internal/formats/number.ts +5 -5
  323. package/src/internal/formats/object.ts +4 -4
  324. package/src/internal/formats/select.ts +6 -4
  325. package/src/internal/formats/string.ts +14 -9
  326. package/src/internal/formats/types.ts +53 -42
  327. package/src/internal/index.ts +30 -13
  328. package/src/internal/{json → json-schema}/annotations.ts +1 -1
  329. package/src/internal/json-schema/index.ts +2 -0
  330. package/src/internal/json-schema/json-schema-normalize.ts +4 -2
  331. package/src/internal/json-schema/json-schema-type.ts +35 -35
  332. package/src/internal/{json → json-schema}/json-schema.test.ts +67 -55
  333. package/src/internal/{json → json-schema}/json-schema.ts +27 -14
  334. package/src/internal/object/clone.ts +48 -0
  335. package/src/internal/object/common.ts +3 -4
  336. package/src/internal/object/{create.test.ts → create-object.test.ts} +30 -32
  337. package/src/internal/object/{create.ts → create-object.ts} +35 -36
  338. package/src/internal/object/deleted.ts +6 -6
  339. package/src/internal/object/ids.ts +1 -1
  340. package/src/internal/object/index.ts +6 -11
  341. package/src/internal/object/inspect.ts +5 -7
  342. package/src/internal/object/json-serializer.test.ts +36 -37
  343. package/src/internal/object/json-serializer.ts +74 -102
  344. package/src/internal/object/schema-validator.test.ts +3 -7
  345. package/src/internal/object/schema-validator.ts +2 -237
  346. package/src/internal/object/set-value.test.ts +281 -0
  347. package/src/internal/object/set-value.ts +165 -0
  348. package/src/internal/object/snapshot.ts +93 -0
  349. package/src/internal/object/typed-object.test.ts +11 -11
  350. package/src/internal/object/typed-object.ts +8 -66
  351. package/src/internal/proxy/change-context.ts +138 -0
  352. package/src/internal/proxy/change.test.ts +519 -0
  353. package/src/internal/proxy/define-hidden-property.ts +14 -0
  354. package/src/internal/proxy/errors.ts +42 -0
  355. package/src/internal/proxy/event-batch.ts +44 -0
  356. package/src/internal/proxy/handler.test.ts +51 -91
  357. package/src/internal/proxy/index.ts +17 -0
  358. package/src/internal/proxy/json-serializer.ts +87 -0
  359. package/src/internal/proxy/make-object.ts +106 -0
  360. package/src/internal/proxy/ownership.ts +253 -0
  361. package/src/internal/proxy/proxy-types.ts +23 -0
  362. package/src/internal/proxy/proxy-utils.ts +150 -0
  363. package/src/internal/proxy/reactive-array.ts +71 -0
  364. package/src/internal/proxy/reactive.ts +69 -0
  365. package/src/internal/proxy/schema-validator.ts +244 -0
  366. package/src/internal/proxy/schema.test.ts +27 -18
  367. package/src/internal/proxy/symbols.ts +7 -0
  368. package/src/internal/proxy/typed-handler.test.ts +260 -48
  369. package/src/internal/proxy/typed-handler.ts +280 -58
  370. package/src/internal/proxy/typed-object.test.ts +53 -37
  371. package/src/internal/ref/ref-array.ts +4 -4
  372. package/src/internal/ref/ref.test.ts +9 -8
  373. package/src/internal/ref/ref.ts +107 -56
  374. package/src/internal/{projection → schema}/compose.test.ts +8 -9
  375. package/src/internal/{projection → schema}/compose.ts +13 -8
  376. package/src/internal/schema/echo-schema.ts +74 -33
  377. package/src/internal/schema/index.ts +1 -4
  378. package/src/internal/schema/manipulation.ts +1 -1
  379. package/src/internal/schema/persistent-schema.ts +28 -0
  380. package/src/internal/types/base.ts +43 -0
  381. package/src/internal/types/entity.ts +54 -0
  382. package/src/internal/types/index.ts +5 -2
  383. package/src/internal/types/meta.ts +65 -0
  384. package/src/internal/types/typename.ts +55 -0
  385. package/src/internal/types/version.ts +20 -0
  386. package/src/testing/api.test.ts +126 -0
  387. package/src/testing/index.ts +3 -3
  388. package/src/testing/test-data.ts +130 -0
  389. package/src/testing/test-schema.ts +238 -0
  390. package/src/testing/util.ts +85 -0
  391. package/dist/lib/browser/chunk-BIDAASFK.mjs +0 -3727
  392. package/dist/lib/browser/chunk-BIDAASFK.mjs.map +0 -7
  393. package/dist/lib/browser/chunk-ZDLCWGEW.mjs +0 -410
  394. package/dist/lib/browser/chunk-ZDLCWGEW.mjs.map +0 -7
  395. package/dist/lib/browser/chunk-ZFRJKT4A.mjs +0 -585
  396. package/dist/lib/browser/chunk-ZFRJKT4A.mjs.map +0 -7
  397. package/dist/lib/browser/index.mjs +0 -35
  398. package/dist/lib/browser/internal/index.mjs +0 -336
  399. package/dist/lib/browser/meta.json +0 -1
  400. package/dist/lib/browser/query/index.mjs +0 -13
  401. package/dist/lib/browser/testing/index.mjs +0 -267
  402. package/dist/lib/browser/testing/index.mjs.map +0 -7
  403. package/dist/lib/node-esm/chunk-3SVRRCUU.mjs +0 -3727
  404. package/dist/lib/node-esm/chunk-3SVRRCUU.mjs.map +0 -7
  405. package/dist/lib/node-esm/chunk-CGDHRZWH.mjs +0 -585
  406. package/dist/lib/node-esm/chunk-CGDHRZWH.mjs.map +0 -7
  407. package/dist/lib/node-esm/chunk-HWS6VBQC.mjs +0 -410
  408. package/dist/lib/node-esm/chunk-HWS6VBQC.mjs.map +0 -7
  409. package/dist/lib/node-esm/index.mjs +0 -35
  410. package/dist/lib/node-esm/meta.json +0 -1
  411. package/dist/lib/node-esm/query/index.mjs +0 -13
  412. package/dist/lib/node-esm/testing/index.mjs +0 -267
  413. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  414. package/dist/types/src/errors.d.ts.map +0 -1
  415. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  416. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  417. package/dist/types/src/internal/ast/annotations.d.ts +0 -131
  418. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  419. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  420. package/dist/types/src/internal/ast/entity-kind.d.ts +0 -10
  421. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  422. package/dist/types/src/internal/ast/index.d.ts +0 -5
  423. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  424. package/dist/types/src/internal/ast/types.d.ts +0 -6
  425. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  426. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  427. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  428. package/dist/types/src/internal/json/index.d.ts +0 -2
  429. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  430. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  431. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  432. package/dist/types/src/internal/object/accessors.d.ts +0 -37
  433. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  434. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  435. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  436. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  437. package/dist/types/src/internal/object/entity.d.ts +0 -33
  438. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  439. package/dist/types/src/internal/object/expando.d.ts +0 -14
  440. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  441. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  442. package/dist/types/src/internal/object/model.d.ts +0 -117
  443. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  444. package/dist/types/src/internal/object/relation.d.ts +0 -17
  445. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  446. package/dist/types/src/internal/object/typename.d.ts +0 -15
  447. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  448. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  449. package/dist/types/src/internal/projection/compose.d.ts +0 -6
  450. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  451. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  452. package/dist/types/src/internal/projection/index.d.ts +0 -2
  453. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  454. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  455. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  456. package/dist/types/src/internal/query/index.d.ts +0 -2
  457. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  458. package/dist/types/src/internal/query/query.d.ts +0 -17
  459. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  460. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  461. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  462. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  463. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  464. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  465. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  466. package/dist/types/src/internal/testing/index.d.ts +0 -3
  467. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  468. package/dist/types/src/internal/testing/types.d.ts +0 -381
  469. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  470. package/dist/types/src/internal/testing/utils.d.ts +0 -10
  471. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  472. package/dist/types/src/internal/types/types.d.ts +0 -79
  473. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  474. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  475. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  476. package/dist/types/src/internal/types/util.d.ts +0 -5
  477. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  478. package/dist/types/src/query/index.d.ts +0 -2
  479. package/dist/types/src/query/index.d.ts.map +0 -1
  480. package/dist/types/src/query/query.d.ts +0 -248
  481. package/dist/types/src/query/query.d.ts.map +0 -1
  482. package/dist/types/src/query/query.test.d.ts +0 -2
  483. package/dist/types/src/query/query.test.d.ts.map +0 -1
  484. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  485. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  486. package/dist/types/src/testing/types.d.ts +0 -228
  487. package/dist/types/src/testing/types.d.ts.map +0 -1
  488. package/src/internal/ast/annotation-helper.ts +0 -22
  489. package/src/internal/ast/annotations.ts +0 -226
  490. package/src/internal/ast/entity-kind.ts +0 -15
  491. package/src/internal/ast/index.ts +0 -8
  492. package/src/internal/ast/types.ts +0 -17
  493. package/src/internal/json/index.ts +0 -5
  494. package/src/internal/object/accessors.ts +0 -153
  495. package/src/internal/object/entity.ts +0 -248
  496. package/src/internal/object/expando.ts +0 -21
  497. package/src/internal/object/meta.ts +0 -61
  498. package/src/internal/object/model.ts +0 -170
  499. package/src/internal/object/relation.ts +0 -24
  500. package/src/internal/object/typename.ts +0 -61
  501. package/src/internal/object/version.ts +0 -22
  502. package/src/internal/projection/index.ts +0 -5
  503. package/src/internal/proxy/reactive-object.ts +0 -108
  504. package/src/internal/query/index.ts +0 -5
  505. package/src/internal/query/query.ts +0 -23
  506. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  507. package/src/internal/schema/snapshot.ts +0 -25
  508. package/src/internal/schema/stored-schema.ts +0 -26
  509. package/src/internal/testing/index.ts +0 -6
  510. package/src/internal/testing/types.ts +0 -144
  511. package/src/internal/testing/utils.ts +0 -54
  512. package/src/internal/types/types.test.ts +0 -48
  513. package/src/internal/types/types.ts +0 -176
  514. package/src/internal/types/util.ts +0 -9
  515. package/src/query/index.ts +0 -6
  516. package/src/query/query.test.ts +0 -401
  517. package/src/query/query.ts +0 -789
  518. package/src/test/api.test.ts +0 -180
  519. package/src/testing/echo-schema.ts +0 -39
  520. package/src/testing/types.ts +0 -108
  521. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  522. /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
  523. /package/dist/lib/{browser/query/index.mjs.map → neutral/Entity.mjs.map} +0 -0
  524. /package/dist/lib/{node-esm/index.mjs.map → neutral/Err.mjs.map} +0 -0
  525. /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Filter.mjs.map} +0 -0
  526. /package/dist/lib/{node-esm/query/index.mjs.map → neutral/Format.mjs.map} +0 -0
  527. /package/dist/types/src/internal/{ast → annotations}/annotations.test.d.ts +0 -0
  528. /package/dist/types/src/internal/{json → json-schema}/annotations.d.ts +0 -0
  529. /package/dist/types/src/internal/{json → json-schema}/effect-schema.test.d.ts +0 -0
  530. /package/dist/types/src/internal/{json → json-schema}/json-schema.test.d.ts +0 -0
  531. /package/dist/types/src/internal/{projection → schema}/compose.test.d.ts +0 -0
  532. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  533. /package/src/internal/{json → json-schema}/effect-schema.test.ts +0 -0
@@ -1,21 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- import { EchoObject } from './entity';
8
-
9
- export const EXPANDO_TYPENAME = 'dxos.org/type/Expando';
10
-
11
- const ExpandoSchema = Schema.Struct({}, { key: Schema.String, value: Schema.Any }).pipe(
12
- EchoObject({ typename: EXPANDO_TYPENAME, version: '0.1.0' }),
13
- );
14
-
15
- /**
16
- * Expando object is an object with an arbitrary set of properties.
17
- */
18
- // TODO(dmaretskyi): Can we consider expando a top-type, i.e. have a ref to expando potentially be a valid ref to any object?
19
- export interface Expando extends Schema.Schema.Type<typeof ExpandoSchema> {}
20
-
21
- export const Expando: Schema.Schema<Expando> = ExpandoSchema;
@@ -1,61 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- import { ForeignKey } from '@dxos/echo-protocol';
8
- import { invariant } from '@dxos/invariant';
9
- import { type Comparator, intersection } from '@dxos/util';
10
-
11
- import { type BaseObject } from '../types';
12
-
13
- import { MetaId } from './model';
14
-
15
- //
16
- // ObjectMeta
17
- //
18
-
19
- // TODO(dmaretskyi): Rename to ObjectMeta
20
- export const ObjectMetaSchema = Schema.mutable(
21
- Schema.Struct({
22
- keys: Schema.mutable(Schema.Array(ForeignKey)),
23
-
24
- /**
25
- * A set of tags.
26
- * Tags are arbitrary application-defined strings.
27
- * ECHO makes no assumptions about the tag structure.
28
- */
29
- // TODO(dmaretskyi): Has to be optional for compatibility with old data.
30
- // Defaulting to an empty array is possible but requires a bit more work.
31
- tags: Schema.optional(Schema.mutable(Schema.Array(Schema.String))),
32
- }),
33
- );
34
- export type ObjectMeta = Schema.Schema.Type<typeof ObjectMetaSchema>;
35
-
36
- export const foreignKey = (source: string, id: string): ForeignKey => ({ source, id });
37
- export const foreignKeyEquals = (a: ForeignKey, b: ForeignKey) => a.source === b.source && a.id === b.id;
38
-
39
- /**
40
- * Get metadata from object.
41
- * Only callable on the object root.
42
- * @deprecated Use {@link getMeta}.
43
- */
44
- // TODO(dmaretskyi): Remove.
45
- export const getObjectMeta = (obj: any): ObjectMeta => {
46
- return getMeta(obj);
47
- };
48
-
49
- /*
50
- * Get metadata from object.
51
- * Only callable on the object root.
52
- */
53
- export const getMeta = (obj: BaseObject): ObjectMeta => {
54
- const metadata = (obj as any)[MetaId];
55
- invariant(metadata, 'ObjectMeta not found.');
56
- return metadata;
57
- };
58
-
59
- // TODO(dmaretskyi): Move to echo-schema.
60
- export const compareForeignKeys: Comparator<BaseObject> = (a: BaseObject, b: BaseObject) =>
61
- intersection(getMeta(a).keys, getMeta(b).keys, foreignKeyEquals).length > 0;
@@ -1,170 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import type * as Schema from 'effect/Schema';
6
-
7
- import { type ForeignKey } from '@dxos/echo-protocol';
8
- import { invariant } from '@dxos/invariant';
9
- import { DXN, ObjectId } from '@dxos/keys';
10
- import { assumeType } from '@dxos/util';
11
-
12
- import { EntityKind } from '../ast';
13
-
14
- import { type ObjectMeta } from './meta';
15
- import type { Version } from './version';
16
-
17
- //
18
- // Defines the internal model of the echo object.
19
- //
20
-
21
- /**
22
- * Entity kind.
23
- */
24
- export const EntityKindId = Symbol.for('@dxos/echo/EntityKind');
25
-
26
- /**
27
- * DXN to the object itself.
28
- */
29
- export const SelfDXNId = Symbol.for('@dxos/echo/DXN');
30
-
31
- /**
32
- * Property name for self DXN when object is serialized to JSON.
33
- */
34
- export const ATTR_SELF_DXN = '@dxn';
35
-
36
- /**
37
- * DXN to the object type.
38
- */
39
- export const TypeId = Symbol.for('@dxos/echo/Type');
40
-
41
- /**
42
- * Property name for typename when object is serialized to JSON.
43
- */
44
- export const ATTR_TYPE = '@type';
45
-
46
- /**
47
- * Reference to the object schema.
48
- */
49
- export const SchemaId = Symbol.for('@dxos/echo/Schema');
50
-
51
- /**
52
- * Deletion marker.
53
- */
54
- export const DeletedId = Symbol.for('@dxos/echo/Deleted');
55
-
56
- /**
57
- * Property name for deleted when object is serialized to JSON.
58
- */
59
- export const ATTR_DELETED = '@deleted';
60
-
61
- /**
62
- * Metadata section.
63
- */
64
- export const MetaId = Symbol.for('@dxos/echo/Meta');
65
-
66
- /**
67
- * Property name for meta when object is serialized to JSON.
68
- */
69
- export const ATTR_META = '@meta';
70
-
71
- /**
72
- * Used to access relation source ref on live ECHO objects.
73
- * Reading this symbol must return `Live<EchoObject<any>>` or a DXN.
74
- */
75
- export const RelationSourceDXNId: unique symbol = Symbol.for('@dxos/echo/RelationSourceDXN');
76
-
77
- /**
78
- * Property name for relation source when object is serialized to JSON.
79
- */
80
- export const ATTR_RELATION_SOURCE = '@relationSource';
81
-
82
- /**
83
- * Used to access relation target ref on live ECHO objects.
84
- * Reading this symbol must return `Live<EchoObject<any>>` or a DXN.
85
- */
86
- export const RelationTargetDXNId: unique symbol = Symbol.for('@dxos/echo/RelationTargetDXN');
87
-
88
- /**
89
- * Property name for relation target when object is serialized to JSON.
90
- */
91
- export const ATTR_RELATION_TARGET = '@relationTarget';
92
-
93
- /**
94
- * Used to access relation source ref on live ECHO objects.
95
- * Reading this symbol must return `Live<EchoObject<any>>` or a DXN.
96
- */
97
- export const RelationSourceId: unique symbol = Symbol.for('@dxos/echo/RelationSource');
98
-
99
- /**
100
- * Used to access relation target ref on live ECHO objects.
101
- * Reading this symbol must return `Live<EchoObject<any>>` or a DXN.
102
- */
103
- export const RelationTargetId: unique symbol = Symbol.for('@dxos/echo/RelationTarget');
104
-
105
- /**
106
- * Getter to get object version.
107
- */
108
- export const ObjectVersionId: unique symbol = Symbol.for('@dxos/echo/ObjectVersion');
109
-
110
- /**
111
- * Internal runtime representation of an object.
112
- * The fields are accessed through getter functions.
113
- */
114
- export interface InternalObjectProps {
115
- id: ObjectId;
116
- readonly [SelfDXNId]?: DXN;
117
-
118
- // Echo supports untyped objects O_O.
119
- readonly [TypeId]?: DXN;
120
-
121
- /**
122
- * Returns the schema for the object.
123
- */
124
- readonly [SchemaId]?: Schema.Schema.AnyNoContext;
125
- readonly [EntityKindId]: EntityKind;
126
- readonly [DeletedId]?: boolean;
127
- readonly [MetaId]?: ObjectMeta;
128
- readonly [RelationSourceDXNId]?: DXN;
129
- readonly [RelationTargetDXNId]?: DXN;
130
- readonly [RelationSourceId]?: InternalObjectProps;
131
- readonly [RelationTargetId]?: InternalObjectProps;
132
- readonly [ObjectVersionId]?: Version;
133
- }
134
-
135
- /**
136
- * JSON representation of an object or relation.
137
- */
138
- export interface ObjectJSON {
139
- id: string;
140
- [ATTR_SELF_DXN]?: DXN.String;
141
- [ATTR_TYPE]: DXN.String;
142
- [ATTR_DELETED]?: boolean;
143
- [ATTR_META]?: ObjectMetaJSON;
144
- [ATTR_RELATION_SOURCE]?: DXN.String;
145
- [ATTR_RELATION_TARGET]?: DXN.String;
146
- }
147
-
148
- export interface ObjectMetaJSON {
149
- keys: ForeignKey[];
150
- tags?: string[];
151
- }
152
-
153
- // NOTE: Keep as `function` to avoid type inference issues.
154
- // eslint-disable-next-line prefer-arrow-functions/prefer-arrow-functions
155
- export function assertObjectModelShape(obj: unknown): asserts obj is InternalObjectProps {
156
- invariant(typeof obj === 'object' && obj !== null, 'Invalid object model: not an object');
157
- assumeType<InternalObjectProps>(obj);
158
- invariant(ObjectId.isValid(obj.id), 'Invalid object model: invalid id');
159
- invariant(obj[TypeId] === undefined || obj[TypeId] instanceof DXN, 'Invalid object model: invalid type');
160
- invariant(
161
- obj[EntityKindId] === EntityKind.Object || obj[EntityKindId] === EntityKind.Relation,
162
- 'Invalid object model: invalid entity kind',
163
- );
164
- if (obj[EntityKindId] === EntityKind.Relation) {
165
- invariant(obj[RelationSourceDXNId] instanceof DXN, 'Invalid object model: invalid relation source');
166
- invariant(obj[RelationTargetDXNId] instanceof DXN, 'Invalid object model: invalid relation target');
167
- invariant(!(obj[RelationSourceId] instanceof DXN), 'Invalid object model: source pointer is a DXN');
168
- invariant(!(obj[RelationTargetId] instanceof DXN), 'Invalid object model: target pointer is a DXN');
169
- }
170
- }
@@ -1,24 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import type { RelationSourceId, RelationTargetId } from './model';
6
-
7
- /**
8
- * Source and target props on relations.
9
- */
10
- // TODO(burdon): any?
11
- export type RelationSourceTargetRefs<Source = any, Target = any> = {
12
- /**
13
- * Source ECHO live object.
14
- */
15
- [RelationSourceId]: Source;
16
-
17
- /**
18
- * Target ECHO live object.
19
- */
20
- [RelationTargetId]: Target;
21
- };
22
-
23
- export type RelationSource<R> = R extends RelationSourceTargetRefs<infer Source, infer _Target> ? Source : never;
24
- export type RelationTarget<R> = R extends RelationSourceTargetRefs<infer _Source, infer Target> ? Target : never;
@@ -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/Person: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';