@dxos/echo 0.8.4-staging.ac66bdf99f → 0.9.0

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 (437) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +7 -7
  3. package/dist/lib/neutral/Annotation.mjs +37 -6
  4. package/dist/lib/neutral/Database.mjs +6 -17
  5. package/dist/lib/neutral/Entity.mjs +31 -20
  6. package/dist/lib/neutral/Err.mjs +3 -3
  7. package/dist/lib/neutral/Feed.mjs +23 -19
  8. package/dist/lib/neutral/Filter.mjs +13 -15
  9. package/dist/lib/neutral/Format.mjs +23 -3
  10. package/dist/lib/neutral/JsonSchema.mjs +7 -8
  11. package/dist/lib/neutral/Key.mjs +9 -5
  12. package/dist/lib/neutral/Migration.mjs +11 -10
  13. package/dist/lib/neutral/Obj.mjs +29 -20
  14. package/dist/lib/neutral/Order.mjs +7 -3
  15. package/dist/lib/neutral/Query.mjs +17 -17
  16. package/dist/lib/neutral/QueryResult.mjs +1 -1
  17. package/dist/lib/neutral/Ref.mjs +10 -9
  18. package/dist/lib/neutral/Registry.mjs +14 -0
  19. package/dist/lib/neutral/Relation.mjs +28 -25
  20. package/dist/lib/neutral/Scope.mjs +12 -0
  21. package/dist/lib/neutral/Tag.mjs +17 -14
  22. package/dist/lib/neutral/Type.mjs +54 -26
  23. package/dist/lib/neutral/{chunk-OMUPQMLR.mjs → chunk-35INCYOE.mjs} +1 -1
  24. package/dist/lib/neutral/chunk-35INCYOE.mjs.map +7 -0
  25. package/dist/lib/neutral/chunk-3PBP4V4O.mjs +101 -0
  26. package/dist/lib/neutral/chunk-3PBP4V4O.mjs.map +7 -0
  27. package/dist/lib/neutral/chunk-4ZUHOTCG.mjs +184 -0
  28. package/dist/lib/neutral/chunk-4ZUHOTCG.mjs.map +7 -0
  29. package/dist/lib/neutral/chunk-5SMDBFVB.mjs +108 -0
  30. package/dist/lib/neutral/chunk-5SMDBFVB.mjs.map +7 -0
  31. package/dist/lib/neutral/{chunk-OS35K56T.mjs → chunk-5SUJPHAE.mjs} +3 -3
  32. package/dist/lib/neutral/{chunk-OS35K56T.mjs.map → chunk-5SUJPHAE.mjs.map} +2 -2
  33. package/dist/lib/neutral/{chunk-GZQTCRJB.mjs → chunk-6M2Z6WBH.mjs} +22 -2
  34. package/dist/lib/neutral/chunk-6M2Z6WBH.mjs.map +7 -0
  35. package/dist/lib/neutral/{chunk-V36VO5SS.mjs → chunk-6YDI3J37.mjs} +32 -40
  36. package/dist/lib/neutral/chunk-6YDI3J37.mjs.map +7 -0
  37. package/dist/lib/neutral/{chunk-MOR5ERFM.mjs → chunk-7FPIAJIV.mjs} +701 -1256
  38. package/dist/lib/neutral/chunk-7FPIAJIV.mjs.map +7 -0
  39. package/dist/lib/neutral/{chunk-ANHVGJI4.mjs → chunk-7LOUAPYZ.mjs} +9 -5
  40. package/dist/lib/neutral/chunk-7LOUAPYZ.mjs.map +7 -0
  41. package/dist/lib/neutral/{chunk-JUXPFOEI.mjs → chunk-7PI7C4EF.mjs} +48 -88
  42. package/dist/lib/neutral/chunk-7PI7C4EF.mjs.map +7 -0
  43. package/dist/lib/neutral/{chunk-UBEZSGXY.mjs → chunk-BBFJWWAV.mjs} +6 -6
  44. package/dist/lib/neutral/chunk-BBFJWWAV.mjs.map +7 -0
  45. package/dist/lib/neutral/{chunk-UI6MWK5W.mjs → chunk-EVK6XBXO.mjs} +16 -2
  46. package/dist/lib/neutral/chunk-EVK6XBXO.mjs.map +7 -0
  47. package/dist/lib/neutral/{chunk-7RO7CPBZ.mjs → chunk-IGK6FN65.mjs} +2 -2
  48. package/dist/lib/neutral/{chunk-HBUZJNZO.mjs → chunk-LWXVKPPW.mjs} +94 -99
  49. package/dist/lib/neutral/chunk-LWXVKPPW.mjs.map +7 -0
  50. package/dist/lib/neutral/{chunk-BVOFLCVF.mjs → chunk-MZ7K3MLL.mjs} +9 -6
  51. package/dist/lib/neutral/chunk-MZ7K3MLL.mjs.map +7 -0
  52. package/dist/lib/neutral/{chunk-TBKX6JQO.mjs → chunk-O6BH7EPN.mjs} +30 -3
  53. package/dist/lib/neutral/chunk-O6BH7EPN.mjs.map +7 -0
  54. package/dist/lib/neutral/{chunk-EAMSSLZC.mjs → chunk-QQIYS74I.mjs} +83 -46
  55. package/dist/lib/neutral/chunk-QQIYS74I.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-R5W6DXR4.mjs +678 -0
  57. package/dist/lib/neutral/chunk-R5W6DXR4.mjs.map +7 -0
  58. package/dist/lib/neutral/{chunk-WAK4DMFV.mjs → chunk-RIVWNMSF.mjs} +12 -7
  59. package/dist/lib/neutral/chunk-RIVWNMSF.mjs.map +7 -0
  60. package/dist/lib/neutral/{chunk-T6W2LEZU.mjs → chunk-SBVFRTST.mjs} +73 -38
  61. package/dist/lib/neutral/chunk-SBVFRTST.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-T6E37YIP.mjs +251 -0
  63. package/dist/lib/neutral/chunk-T6E37YIP.mjs.map +7 -0
  64. package/dist/lib/neutral/{chunk-DQYLD2RB.mjs → chunk-TFEWTY5A.mjs} +155 -129
  65. package/dist/lib/neutral/chunk-TFEWTY5A.mjs.map +7 -0
  66. package/dist/lib/neutral/{chunk-B4BASU6W.mjs → chunk-TYGKCRMK.mjs} +85 -76
  67. package/dist/lib/neutral/chunk-TYGKCRMK.mjs.map +7 -0
  68. package/dist/lib/neutral/{chunk-4OIBYSXE.mjs → chunk-UUP46KUQ.mjs} +78 -32
  69. package/dist/lib/neutral/chunk-UUP46KUQ.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-WISOH2XH.mjs +36 -0
  71. package/dist/lib/neutral/chunk-WISOH2XH.mjs.map +7 -0
  72. package/dist/lib/neutral/{chunk-G3IQMKF7.mjs → chunk-WTQJHC75.mjs} +111 -112
  73. package/dist/lib/neutral/chunk-WTQJHC75.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-WU3GIANS.mjs +31 -0
  75. package/dist/lib/neutral/chunk-WU3GIANS.mjs.map +7 -0
  76. package/dist/lib/neutral/{chunk-TU3GW67D.mjs → chunk-ZGNNFYHS.mjs} +40 -40
  77. package/dist/lib/neutral/chunk-ZGNNFYHS.mjs.map +7 -0
  78. package/dist/lib/neutral/index.mjs +47 -41
  79. package/dist/lib/neutral/internal/index.mjs +137 -72
  80. package/dist/lib/neutral/meta.json +1 -1
  81. package/dist/lib/neutral/testing/index.mjs +261 -178
  82. package/dist/lib/neutral/testing/index.mjs.map +4 -4
  83. package/dist/types/src/Annotation.d.ts +108 -4
  84. package/dist/types/src/Annotation.d.ts.map +1 -1
  85. package/dist/types/src/Annotation.test.d.ts +2 -0
  86. package/dist/types/src/Annotation.test.d.ts.map +1 -0
  87. package/dist/types/src/Collection.d.ts +2 -3
  88. package/dist/types/src/Collection.d.ts.map +1 -1
  89. package/dist/types/src/Database.d.ts +56 -49
  90. package/dist/types/src/Database.d.ts.map +1 -1
  91. package/dist/types/src/Dataset.d.ts +16 -6
  92. package/dist/types/src/Dataset.d.ts.map +1 -1
  93. package/dist/types/src/Entity.d.ts +101 -28
  94. package/dist/types/src/Entity.d.ts.map +1 -1
  95. package/dist/types/src/Err.d.ts +27 -27
  96. package/dist/types/src/Err.d.ts.map +1 -1
  97. package/dist/types/src/Feed.d.ts +66 -19
  98. package/dist/types/src/Feed.d.ts.map +1 -1
  99. package/dist/types/src/Filter.d.ts +38 -12
  100. package/dist/types/src/Filter.d.ts.map +1 -1
  101. package/dist/types/src/Format.d.ts +0 -2
  102. package/dist/types/src/Format.d.ts.map +1 -1
  103. package/dist/types/src/Hypergraph.d.ts +14 -9
  104. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  105. package/dist/types/src/Json.d.ts +33 -0
  106. package/dist/types/src/Json.d.ts.map +1 -0
  107. package/dist/types/src/Json.test.d.ts +2 -0
  108. package/dist/types/src/Json.test.d.ts.map +1 -0
  109. package/dist/types/src/JsonSchema.d.ts +2 -2
  110. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  111. package/dist/types/src/Key.d.ts +1 -1
  112. package/dist/types/src/Key.d.ts.map +1 -1
  113. package/dist/types/src/Migration.d.ts +26 -11
  114. package/dist/types/src/Migration.d.ts.map +1 -1
  115. package/dist/types/src/Obj.d.ts +104 -61
  116. package/dist/types/src/Obj.d.ts.map +1 -1
  117. package/dist/types/src/Order.d.ts +10 -0
  118. package/dist/types/src/Order.d.ts.map +1 -1
  119. package/dist/types/src/Query.d.ts +34 -12
  120. package/dist/types/src/Query.d.ts.map +1 -1
  121. package/dist/types/src/QueryResult.d.ts +21 -0
  122. package/dist/types/src/QueryResult.d.ts.map +1 -1
  123. package/dist/types/src/Ref.d.ts +15 -7
  124. package/dist/types/src/Ref.d.ts.map +1 -1
  125. package/dist/types/src/Registry.d.ts +131 -0
  126. package/dist/types/src/Registry.d.ts.map +1 -0
  127. package/dist/types/src/Relation.d.ts +73 -41
  128. package/dist/types/src/Relation.d.ts.map +1 -1
  129. package/dist/types/src/Scope.d.ts +35 -0
  130. package/dist/types/src/Scope.d.ts.map +1 -0
  131. package/dist/types/src/Tag.d.ts +21 -5
  132. package/dist/types/src/Tag.d.ts.map +1 -1
  133. package/dist/types/src/Type.d.ts +362 -95
  134. package/dist/types/src/Type.d.ts.map +1 -1
  135. package/dist/types/src/View.d.ts +9 -12
  136. package/dist/types/src/View.d.ts.map +1 -1
  137. package/dist/types/src/exemplars.test.d.ts +2 -0
  138. package/dist/types/src/exemplars.test.d.ts.map +1 -0
  139. package/dist/types/src/index.d.ts +4 -3
  140. package/dist/types/src/index.d.ts.map +1 -1
  141. package/dist/types/src/internal/Annotation/annotations.d.ts +79 -38
  142. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -1
  143. package/dist/types/src/internal/Annotation/dictionary.d.ts +24 -0
  144. package/dist/types/src/internal/Annotation/dictionary.d.ts.map +1 -0
  145. package/dist/types/src/internal/Annotation/entity-dictionary.d.ts +14 -0
  146. package/dist/types/src/internal/Annotation/entity-dictionary.d.ts.map +1 -0
  147. package/dist/types/src/internal/Annotation/index.d.ts +4 -2
  148. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -1
  149. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -1
  150. package/dist/types/src/internal/Annotation/util.d.ts +14 -5
  151. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -1
  152. package/dist/types/src/internal/Entity/api.d.ts +17 -3
  153. package/dist/types/src/internal/Entity/api.d.ts.map +1 -1
  154. package/dist/types/src/internal/Entity/entity.d.ts +72 -8
  155. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -1
  156. package/dist/types/src/internal/Entity/guard.d.ts +10 -0
  157. package/dist/types/src/internal/Entity/guard.d.ts.map +1 -0
  158. package/dist/types/src/internal/Entity/index.d.ts +2 -0
  159. package/dist/types/src/internal/Entity/index.d.ts.map +1 -1
  160. package/dist/types/src/internal/Entity/model.d.ts +21 -17
  161. package/dist/types/src/internal/Entity/model.d.ts.map +1 -1
  162. package/dist/types/src/internal/Entity/object.d.ts +3 -3
  163. package/dist/types/src/internal/Entity/object.d.ts.map +1 -1
  164. package/dist/types/src/internal/Entity/relation.d.ts +30 -7
  165. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -1
  166. package/dist/types/src/internal/Entity/type-kind.d.ts +24 -0
  167. package/dist/types/src/internal/Entity/type-kind.d.ts.map +1 -0
  168. package/dist/types/src/internal/Entity/type-uri.d.ts +24 -0
  169. package/dist/types/src/internal/Entity/type-uri.d.ts.map +1 -0
  170. package/dist/types/src/internal/Entity/version.d.ts.map +1 -1
  171. package/dist/types/src/internal/Format/date.d.ts.map +1 -1
  172. package/dist/types/src/internal/Format/format.d.ts +3 -2
  173. package/dist/types/src/internal/Format/format.d.ts.map +1 -1
  174. package/dist/types/src/internal/Format/index.d.ts +2 -2
  175. package/dist/types/src/internal/Format/index.d.ts.map +1 -1
  176. package/dist/types/src/internal/Format/number.d.ts.map +1 -1
  177. package/dist/types/src/internal/Format/object.d.ts +3 -1
  178. package/dist/types/src/internal/Format/object.d.ts.map +1 -1
  179. package/dist/types/src/internal/Format/types.d.ts.map +1 -1
  180. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -1
  181. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +34 -34
  182. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -1
  183. package/dist/types/src/internal/JsonSchema/json-schema.d.ts +3 -2
  184. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -1
  185. package/dist/types/src/internal/Obj/atoms.d.ts +38 -0
  186. package/dist/types/src/internal/Obj/atoms.d.ts.map +1 -0
  187. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -1
  188. package/dist/types/src/internal/Obj/common.d.ts.map +1 -1
  189. package/dist/types/src/internal/Obj/create-object.d.ts +12 -12
  190. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -1
  191. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -1
  192. package/dist/types/src/internal/Obj/index.d.ts +1 -1
  193. package/dist/types/src/internal/Obj/index.d.ts.map +1 -1
  194. package/dist/types/src/internal/Obj/json-serializer.d.ts +8 -8
  195. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -1
  196. package/dist/types/src/internal/Obj/set-value.d.ts +1 -1
  197. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -1
  198. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -1
  199. package/dist/types/src/internal/Obj/typed-object.d.ts +1 -1
  200. package/dist/types/src/internal/Query/index.d.ts +2 -0
  201. package/dist/types/src/internal/Query/index.d.ts.map +1 -0
  202. package/dist/types/src/internal/{Query.d.ts → Query/pretty.d.ts} +1 -1
  203. package/dist/types/src/internal/Query/pretty.d.ts.map +1 -0
  204. package/dist/types/src/internal/Ref/atoms.d.ts +10 -0
  205. package/dist/types/src/internal/Ref/atoms.d.ts.map +1 -0
  206. package/dist/types/src/internal/Ref/ref-array.d.ts +2 -2
  207. package/dist/types/src/internal/Ref/ref.d.ts +50 -19
  208. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -1
  209. package/dist/types/src/internal/Ref/utils.d.ts +8 -0
  210. package/dist/types/src/internal/Ref/utils.d.ts.map +1 -0
  211. package/dist/types/src/internal/Type/compose.d.ts.map +1 -1
  212. package/dist/types/src/internal/Type/index.d.ts +1 -2
  213. package/dist/types/src/internal/Type/index.d.ts.map +1 -1
  214. package/dist/types/src/internal/Type/manipulation.d.ts +0 -1
  215. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -1
  216. package/dist/types/src/internal/Type/type-schema.d.ts +52 -0
  217. package/dist/types/src/internal/Type/type-schema.d.ts.map +1 -0
  218. package/dist/types/src/internal/common/api/meta.d.ts +14 -11
  219. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -1
  220. package/dist/types/src/internal/common/proxy/change-context.d.ts +1 -1
  221. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -1
  222. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -1
  223. package/dist/types/src/internal/common/proxy/errors.d.ts +1 -1
  224. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -1
  225. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -1
  226. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -1
  227. package/dist/types/src/internal/common/proxy/make-object.d.ts +11 -5
  228. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -1
  229. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -1
  230. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -1
  231. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +1 -1
  232. package/dist/types/src/internal/common/proxy/reactive.d.ts +1 -1
  233. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -1
  234. package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
  235. package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
  236. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -1
  237. package/dist/types/src/internal/common/proxy/typed-handler.d.ts +18 -2
  238. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -1
  239. package/dist/types/src/internal/common/types/base.d.ts +4 -4
  240. package/dist/types/src/internal/common/types/base.d.ts.map +1 -1
  241. package/dist/types/src/internal/common/types/entity.d.ts +62 -5
  242. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -1
  243. package/dist/types/src/internal/common/types/index.d.ts +1 -1
  244. package/dist/types/src/internal/common/types/index.d.ts.map +1 -1
  245. package/dist/types/src/internal/common/types/meta.d.ts +33 -12
  246. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -1
  247. package/dist/types/src/internal/common/types/model-symbols.d.ts +15 -4
  248. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -1
  249. package/dist/types/src/internal/common/types/typename.d.ts +7 -0
  250. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -1
  251. package/dist/types/src/internal/common/types/version.d.ts +1 -1
  252. package/dist/types/src/internal/common/types/well-known-types.d.ts +11 -0
  253. package/dist/types/src/internal/common/types/well-known-types.d.ts.map +1 -0
  254. package/dist/types/src/internal/index.d.ts +2 -2
  255. package/dist/types/src/internal/index.d.ts.map +1 -1
  256. package/dist/types/src/testing/index.d.ts +1 -0
  257. package/dist/types/src/testing/index.d.ts.map +1 -1
  258. package/dist/types/src/testing/registry.d.ts +9 -0
  259. package/dist/types/src/testing/registry.d.ts.map +1 -0
  260. package/dist/types/src/testing/test-data.d.ts +8 -8
  261. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  262. package/dist/types/src/testing/test-schema.d.ts +83 -89
  263. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  264. package/dist/types/src/testing/util.d.ts +5 -3
  265. package/dist/types/src/testing/util.d.ts.map +1 -1
  266. package/dist/types/tsconfig.tsbuildinfo +1 -1
  267. package/package.json +26 -24
  268. package/src/Annotation.test.ts +439 -0
  269. package/src/Annotation.ts +158 -4
  270. package/src/Collection.ts +5 -9
  271. package/src/Database.ts +93 -100
  272. package/src/Dataset.ts +10 -2
  273. package/src/Entity.test.ts +116 -6
  274. package/src/Entity.ts +134 -32
  275. package/src/Err.ts +4 -4
  276. package/src/Feed.ts +92 -44
  277. package/src/Filter.ts +70 -40
  278. package/src/Format.ts +0 -4
  279. package/src/Hypergraph.ts +14 -9
  280. package/src/Json.test.ts +175 -0
  281. package/src/Json.ts +103 -0
  282. package/src/Key.ts +1 -1
  283. package/src/Migration.ts +39 -19
  284. package/src/Obj.test.ts +122 -20
  285. package/src/Obj.ts +168 -91
  286. package/src/Order.ts +22 -0
  287. package/src/Query.test.ts +183 -154
  288. package/src/Query.ts +172 -85
  289. package/src/QueryResult.ts +26 -0
  290. package/src/Ref.ts +22 -4
  291. package/src/Registry.ts +155 -0
  292. package/src/Relation.test.ts +10 -10
  293. package/src/Relation.ts +116 -69
  294. package/src/Scope.ts +50 -0
  295. package/src/Tag.md +88 -0
  296. package/src/Tag.ts +49 -6
  297. package/src/Type.test.ts +223 -18
  298. package/src/Type.ts +609 -131
  299. package/src/View.ts +14 -23
  300. package/src/exemplars.test.ts +21 -0
  301. package/src/index.ts +4 -4
  302. package/src/internal/Annotation/annotations.test.ts +31 -11
  303. package/src/internal/Annotation/annotations.ts +143 -111
  304. package/src/internal/Annotation/dictionary.ts +47 -0
  305. package/src/internal/Annotation/entity-dictionary.ts +74 -0
  306. package/src/internal/Annotation/index.ts +4 -2
  307. package/src/internal/Annotation/util.ts +17 -8
  308. package/src/internal/Entity/api.ts +54 -7
  309. package/src/internal/Entity/entity.ts +196 -47
  310. package/src/internal/Entity/guard.ts +26 -0
  311. package/src/internal/Entity/index.ts +2 -0
  312. package/src/internal/Entity/model.ts +38 -28
  313. package/src/internal/Entity/object.ts +21 -5
  314. package/src/internal/Entity/relation.ts +68 -34
  315. package/src/internal/Entity/type-kind.ts +75 -0
  316. package/src/internal/Entity/type-uri.ts +92 -0
  317. package/src/internal/Entity/util.ts +9 -9
  318. package/src/internal/Format/date.ts +0 -4
  319. package/src/internal/Format/format.test.ts +21 -0
  320. package/src/internal/Format/index.ts +2 -3
  321. package/src/internal/Format/object.ts +21 -4
  322. package/src/internal/Format/types.ts +1 -1
  323. package/src/internal/JsonSchema/annotations.ts +1 -1
  324. package/src/internal/JsonSchema/json-schema-type.ts +4 -4
  325. package/src/internal/JsonSchema/json-schema.test.ts +71 -145
  326. package/src/internal/JsonSchema/json-schema.ts +49 -35
  327. package/src/internal/Obj/atoms.ts +244 -0
  328. package/src/internal/Obj/clone.ts +9 -4
  329. package/src/internal/Obj/create-object.test.ts +12 -10
  330. package/src/internal/Obj/create-object.ts +68 -22
  331. package/src/internal/Obj/index.ts +1 -1
  332. package/src/internal/Obj/inspect.ts +5 -3
  333. package/src/internal/Obj/json-serializer.test.ts +101 -22
  334. package/src/internal/Obj/json-serializer.ts +89 -33
  335. package/src/internal/Obj/set-value.test.ts +22 -45
  336. package/src/internal/Obj/set-value.ts +12 -19
  337. package/src/internal/Obj/snapshot.ts +13 -4
  338. package/src/internal/Obj/typed-object.test.ts +9 -11
  339. package/src/internal/Obj/typed-object.ts +1 -1
  340. package/src/internal/Query/index.ts +5 -0
  341. package/src/internal/{Query.ts → Query/pretty.ts} +40 -12
  342. package/src/internal/Ref/atoms.ts +20 -0
  343. package/src/internal/Ref/ref-array.ts +3 -3
  344. package/src/internal/Ref/ref.test.ts +18 -27
  345. package/src/internal/Ref/ref.ts +137 -59
  346. package/src/internal/Ref/utils.ts +45 -0
  347. package/src/internal/Type/compose.test.ts +3 -1
  348. package/src/internal/Type/index.ts +1 -2
  349. package/src/internal/Type/manipulation.ts +0 -25
  350. package/src/internal/Type/type-schema.ts +60 -0
  351. package/src/internal/common/README.md +2 -2
  352. package/src/internal/common/api/meta.ts +19 -17
  353. package/src/internal/common/proxy/change-context.ts +1 -1
  354. package/src/internal/common/proxy/change.test.ts +91 -83
  355. package/src/internal/common/proxy/errors.ts +2 -2
  356. package/src/internal/common/proxy/handler.test.ts +1 -1
  357. package/src/internal/common/proxy/json-serializer.ts +27 -16
  358. package/src/internal/common/proxy/make-object.ts +44 -20
  359. package/src/internal/common/proxy/ownership.ts +2 -2
  360. package/src/internal/common/proxy/reactive-array.ts +1 -1
  361. package/src/internal/common/proxy/reactive.test.ts +54 -0
  362. package/src/internal/common/proxy/reactive.ts +11 -2
  363. package/src/internal/common/proxy/schema.test.ts +48 -86
  364. package/src/internal/common/proxy/typed-handler.test.ts +12 -11
  365. package/src/internal/common/proxy/typed-handler.ts +78 -16
  366. package/src/internal/common/proxy/typed-object.test.ts +16 -28
  367. package/src/internal/common/types/base.ts +4 -4
  368. package/src/internal/common/types/entity.ts +80 -1
  369. package/src/internal/common/types/index.ts +6 -1
  370. package/src/internal/common/types/meta.ts +62 -20
  371. package/src/internal/common/types/model-symbols.ts +24 -4
  372. package/src/internal/common/types/typename.ts +39 -3
  373. package/src/internal/common/types/well-known-types.ts +15 -0
  374. package/src/internal/index.ts +6 -4
  375. package/src/testing/api.test.ts +15 -9
  376. package/src/testing/index.ts +1 -0
  377. package/src/testing/registry.ts +44 -0
  378. package/src/testing/test-data.ts +159 -99
  379. package/src/testing/test-schema.ts +22 -58
  380. package/src/testing/util.ts +14 -11
  381. package/dist/lib/neutral/Extension.mjs +0 -18
  382. package/dist/lib/neutral/SchemaRegistry.mjs +0 -2
  383. package/dist/lib/neutral/chunk-2KHZ36F5.mjs +0 -361
  384. package/dist/lib/neutral/chunk-2KHZ36F5.mjs.map +0 -7
  385. package/dist/lib/neutral/chunk-4OIBYSXE.mjs.map +0 -7
  386. package/dist/lib/neutral/chunk-4P3IXBLT.mjs +0 -45
  387. package/dist/lib/neutral/chunk-4P3IXBLT.mjs.map +0 -7
  388. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +0 -7
  389. package/dist/lib/neutral/chunk-B4BASU6W.mjs.map +0 -7
  390. package/dist/lib/neutral/chunk-BNCCGLJN.mjs +0 -7
  391. package/dist/lib/neutral/chunk-BNCCGLJN.mjs.map +0 -7
  392. package/dist/lib/neutral/chunk-BVOFLCVF.mjs.map +0 -7
  393. package/dist/lib/neutral/chunk-DQYLD2RB.mjs.map +0 -7
  394. package/dist/lib/neutral/chunk-EAMSSLZC.mjs.map +0 -7
  395. package/dist/lib/neutral/chunk-G3IQMKF7.mjs.map +0 -7
  396. package/dist/lib/neutral/chunk-GZQTCRJB.mjs.map +0 -7
  397. package/dist/lib/neutral/chunk-HBUZJNZO.mjs.map +0 -7
  398. package/dist/lib/neutral/chunk-JUXPFOEI.mjs.map +0 -7
  399. package/dist/lib/neutral/chunk-MOR5ERFM.mjs.map +0 -7
  400. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +0 -7
  401. package/dist/lib/neutral/chunk-PHU22NLC.mjs +0 -136
  402. package/dist/lib/neutral/chunk-PHU22NLC.mjs.map +0 -7
  403. package/dist/lib/neutral/chunk-ROG4RXXL.mjs +0 -97
  404. package/dist/lib/neutral/chunk-ROG4RXXL.mjs.map +0 -7
  405. package/dist/lib/neutral/chunk-T6W2LEZU.mjs.map +0 -7
  406. package/dist/lib/neutral/chunk-TBKX6JQO.mjs.map +0 -7
  407. package/dist/lib/neutral/chunk-TU3GW67D.mjs.map +0 -7
  408. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +0 -7
  409. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +0 -7
  410. package/dist/lib/neutral/chunk-V36VO5SS.mjs.map +0 -7
  411. package/dist/lib/neutral/chunk-WAK4DMFV.mjs.map +0 -7
  412. package/dist/lib/neutral/chunk-YAHXAYOW.mjs +0 -56
  413. package/dist/lib/neutral/chunk-YAHXAYOW.mjs.map +0 -7
  414. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs +0 -50
  415. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs.map +0 -7
  416. package/dist/types/src/Extension.d.ts +0 -80
  417. package/dist/types/src/Extension.d.ts.map +0 -1
  418. package/dist/types/src/Extension.test.d.ts +0 -2
  419. package/dist/types/src/Extension.test.d.ts.map +0 -1
  420. package/dist/types/src/SchemaRegistry.d.ts +0 -84
  421. package/dist/types/src/SchemaRegistry.d.ts.map +0 -1
  422. package/dist/types/src/internal/Obj/ids.d.ts +0 -6
  423. package/dist/types/src/internal/Obj/ids.d.ts.map +0 -1
  424. package/dist/types/src/internal/Query.d.ts.map +0 -1
  425. package/dist/types/src/internal/Type/echo-schema.d.ts +0 -181
  426. package/dist/types/src/internal/Type/echo-schema.d.ts.map +0 -1
  427. package/dist/types/src/internal/Type/persistent-schema.d.ts +0 -20
  428. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +0 -1
  429. package/src/Extension.test.ts +0 -235
  430. package/src/Extension.ts +0 -122
  431. package/src/SchemaRegistry.ts +0 -106
  432. package/src/internal/Obj/ids.ts +0 -12
  433. package/src/internal/Type/echo-schema.ts +0 -423
  434. package/src/internal/Type/persistent-schema.ts +0 -33
  435. /package/dist/lib/neutral/{Extension.mjs.map → Registry.mjs.map} +0 -0
  436. /package/dist/lib/neutral/{SchemaRegistry.mjs.map → Scope.mjs.map} +0 -0
  437. /package/dist/lib/neutral/{chunk-7RO7CPBZ.mjs.map → chunk-IGK6FN65.mjs.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/testing/test-data.ts", "../../../../src/testing/test-schema.ts", "../../../../src/testing/util.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { DatabaseDirectory, ObjectStructure } from '@dxos/echo-protocol';\nimport { DXN, ObjectId, PublicKey } from '@dxos/keys';\n\nimport { Type } from '../index';\nimport { TestSchema } from './test-schema';\n\nconst spaceKey = PublicKey.random();\n\n// TODO(burdon): Use Obj.make.\n\nexport const PEOPLE = {\n alice: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Alice',\n },\n }),\n },\n }),\n bob: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Bob',\n },\n }),\n },\n }),\n};\n\nexport const ORGS = {\n dxos: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'DXOS',\n founded: '2023',\n },\n }),\n },\n }),\n cyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'Cyberdyne Systems',\n founded: '1984',\n },\n }),\n },\n }),\n};\n\nexport const WORKS_FOR = {\n fredWorksForCyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: Type.getDXN(TestSchema.EmployedBy)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects!)[0]).toString() },\n data: {\n since: '2020',\n position: 'Engineer',\n },\n }),\n },\n }),\n aliceWorksForAperture: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: Type.getDXN(TestSchema.EmployedBy)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.dxos.objects!)[0]).toString() },\n data: {\n since: '2018',\n position: 'Research Scientist',\n },\n }),\n },\n }),\n};\n\nexport const TASKS = {\n task1: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Complete project documentation',\n description: 'Write comprehensive documentation for the new system',\n status: 'in-progress',\n dueDate: '2023-12-31',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects!)[0]).toString() },\n },\n }),\n },\n }),\n task2: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Run experiments',\n description: 'Conduct series of experiments on the portal device',\n status: 'pending',\n dueDate: '2023-11-15',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n },\n }),\n },\n }),\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport * as Obj from '../Obj';\nimport * as Ref from '../Ref';\nimport * as Type from '../Type';\n\nexport namespace TestSchema {\n //\n // Expando\n //\n\n /**\n * Expando object is an object with an arbitrary set of properties.\n * This is the test variant with example.com namespace.\n */\n export const Expando = Schema.Struct({}, { key: Schema.String, value: Schema.Any }).pipe(\n Type.object({\n typename: 'com.example.type.expando',\n version: '0.1.0',\n }),\n );\n\n export interface Expando extends Schema.Schema.Type<typeof Expando> {}\n\n //\n // Example\n //\n\n const Nested = Schema.Struct({\n field: Schema.String,\n });\n\n export class TestClass {\n field = 'value';\n toJSON() {\n return { field: this.field };\n }\n }\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const ExampleSchema = Schema.Struct({\n string: Schema.String,\n number: Schema.Number,\n boolean: Schema.Boolean,\n null: Schema.Null,\n undefined: Schema.Undefined,\n stringArray: Schema.Array(Schema.String),\n twoDimNumberArray: Schema.Array(Schema.Array(Schema.Number)),\n nested: Nested,\n nestedArray: Schema.Array(Nested),\n nestedNullableArray: Schema.Array(Schema.Union(Nested, Schema.Null)),\n reference: Schema.suspend((): Ref.RefSchema<Example> => Ref.Ref(Example)),\n referenceArray: Schema.Array(Schema.suspend((): Ref.RefSchema<Example> => Ref.Ref(Example))),\n classInstance: Schema.instanceOf(TestClass),\n other: Schema.Any,\n }).pipe(Schema.partial);\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface ExampleSchema extends Schema.Schema.Type<typeof ExampleSchema> {}\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const Example = ExampleSchema.pipe(\n Type.object({\n typename: 'com.example.type.example',\n version: '0.1.0',\n }),\n );\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface Example extends Schema.Schema.Type<typeof Example> {}\n\n //\n // Message\n //\n\n // TODO(burdon): Support defaults directly on Type: `make` is erased by `pipe(Type.Obj)`.\n export const MessageStruct = Schema.Struct({\n // TODO(burdon): Support S.Date; Custom Timestamp (with defaults).\n // TODO(burdon): Support defaults (update create and create).\n timestamp: Schema.String.pipe(\n Schema.propertySignature,\n Schema.withConstructorDefault(() => new Date().toISOString()),\n ),\n });\n\n export const Message = MessageStruct.pipe(\n Type.object({\n typename: 'com.example.type.message',\n version: '0.1.0',\n }),\n );\n\n export interface Message extends Schema.Schema.Type<typeof Message> {}\n\n //\n // Organization\n //\n\n export const Organization = Schema.Struct({\n name: Schema.String,\n properties: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.String,\n }),\n ),\n }).pipe(\n Type.object({\n typename: 'com.example.type.organization',\n version: '0.1.0',\n }),\n );\n\n export interface Organization extends Schema.Schema.Type<typeof Organization> {}\n\n //\n // Person\n //\n\n export const Person = Schema.Struct({\n name: Schema.String,\n username: Schema.String,\n email: Schema.String,\n age: Schema.Number.pipe(Schema.optional),\n tasks: Schema.Array(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task))),\n employer: Schema.optional(Ref.Ref(Organization)),\n address: Schema.Struct({\n city: Schema.optional(Schema.String),\n state: Schema.optional(Schema.String),\n zip: Schema.optional(Schema.String),\n coordinates: Schema.Struct({\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }),\n }),\n fields: Schema.Struct({\n label: Schema.String,\n value: Schema.String,\n }).pipe(Schema.Array, Schema.optional),\n }).pipe(\n Schema.partial,\n Type.object({\n typename: 'com.example.type.person',\n version: '0.1.0',\n }),\n );\n\n export interface Person extends Schema.Schema.Type<typeof Person> {}\n\n //\n // Task\n //\n\n export const Task = Schema.Struct({\n title: Schema.optional(Schema.String),\n deadline: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Ref.Ref(Person)),\n previous: Schema.optional(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task))),\n subTasks: Schema.optional(Schema.Array(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task)))),\n description: Schema.optional(Schema.String),\n }).pipe(\n Schema.partial,\n Type.object({\n typename: 'com.example.type.task',\n version: '0.1.0',\n }),\n );\n\n export interface Task extends Schema.Schema.Type<typeof Task> {}\n\n //\n // HasManager\n //\n\n export const HasManager = Schema.Struct({}).pipe(\n Type.relation({\n typename: 'com.example.type.has-manager',\n version: '0.1.0',\n source: Person,\n target: Person,\n }),\n );\n\n export interface HasManager extends Schema.Schema.Type<typeof HasManager> {}\n\n //\n // EmployedBy\n //\n\n export const EmployedBy = Schema.Struct({\n role: Schema.String,\n since: Schema.optional(Schema.String),\n }).pipe(\n Type.relation({\n typename: 'com.example.type.employed-by',\n version: '0.1.0',\n source: Person,\n target: Organization,\n }),\n );\n\n export interface EmployedBy extends Schema.Schema.Type<typeof EmployedBy> {}\n\n //\n // RecordType\n //\n\n export enum RecordType {\n UNDEFINED = 0,\n PERSONAL = 1,\n WORK = 2,\n }\n\n export const Container = Schema.Struct({\n objects: Schema.Array(Ref.Ref(Obj.Unknown)),\n records: Schema.Array(\n Schema.partial(\n Schema.Struct({\n title: Schema.String,\n description: Schema.String,\n contacts: Schema.Array(Ref.Ref(Person)),\n type: Schema.Enums(RecordType),\n }),\n ),\n ),\n }).pipe(\n Schema.partial,\n Type.object({\n typename: 'com.example.type.container',\n version: '0.1.0',\n }),\n );\n\n export interface Container extends Schema.Schema.Type<typeof Container> {}\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type * as Schema from 'effect/Schema';\nimport type * as SchemaAST from 'effect/SchemaAST';\n\nimport { assertArgument } from '@dxos/invariant';\nimport { deepMapValues } from '@dxos/util';\n\nimport { EchoSchema, PersistentSchema, getSchemaTypename, makeObject, subscribe, toJsonSchema } from '../internal';\n\n/**\n * Create a reactive mutable schema that updates when the JSON schema is updated.\n */\n// TODO(dmaretskyi): Should be replaced by registration of typed object.\nexport const createEchoSchema = (schema: Schema.Schema.AnyNoContext, version = '0.1.0'): EchoSchema => {\n const jsonSchema = toJsonSchema(schema);\n const typename = getSchemaTypename(schema);\n assertArgument(typename, 'typename', 'Schema does not have a typename.');\n const echoSchema = new EchoSchema(makeObject(PersistentSchema, { typename, version, jsonSchema }));\n\n // TODO(burdon): Unsubscribe is never called.\n subscribe(echoSchema.persistentSchema, () => {\n echoSchema._invalidate();\n });\n\n return echoSchema;\n};\n\n/**\n * Converts AST to a format that can be compared with test matchers.\n */\nexport const prepareAstForCompare = (obj: SchemaAST.AST): any =>\n deepMapValues(obj, (value: any, recurse: any) => {\n if (typeof value === 'function') {\n return null;\n }\n\n if (value instanceof RegExp) {\n return value;\n }\n\n // Convert symbols to strings.\n if (typeof value === 'object') {\n const clone = { ...value };\n for (const sym of Object.getOwnPropertySymbols(clone as any)) {\n clone[sym.toString()] = clone[sym];\n delete clone[sym];\n }\n\n return recurse(clone);\n }\n\n return recurse(value);\n });\n\n/**\n * Creates an update counter that tracks changes to reactive objects.\n * @param objects - Reactive objects to subscribe to.\n * @returns An object with a count property and Symbol.dispose for cleanup.\n */\nexport const updateCounter = (...objects: object[]) => {\n let updateCount = 0;\n\n const unsubscribes = objects.map((obj) =>\n subscribe(obj, () => {\n updateCount++;\n }),\n );\n\n const unsubscribeAll = () => {\n for (const unsub of unsubscribes) {\n unsub();\n }\n };\n\n return {\n // https://github.com/tc39/proposal-explicit-resource-management\n [Symbol.dispose]: unsubscribeAll,\n get count() {\n return updateCount;\n },\n };\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,mBAAmBC,uBAAuB;AACnD,SAASC,KAAKC,UAAUC,iBAAiB;;;ACDzC,YAAYC,YAAY;UAMPC,aAAAA;cASFC,UAAiBC,cAAO,CAAC,GAAG;IAAEC,KAAYC;IAAQC,OAAcC;EAAI,CAAA,EAAGC,KAC7EC,OAAO;IACVC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;AASF,QAAMC,SAAgBT,cAAO;IAC3BU,OAAcR;EAChB,CAAA;EAEO,MAAMS,UAAAA;IACXD,QAAQ;IACRE,SAAS;AACP,aAAO;QAAEF,OAAO,KAAKA;MAAM;IAC7B;EACF;cALaC,YAAAA;cAQAE,gBAAuBb,cAAO;IACzCc,QAAeZ;IACfa,QAAeC;IACfC,SAAgBC;IAChBC,MAAaC;IACbC,WAAkBC;IAClBC,aAAoBC,aAAatB,aAAM;IACvCuB,mBAA0BD,aAAaA,aAAaR,aAAM,CAAA;IAC1DU,QAAQjB;IACRkB,aAAoBH,aAAMf,MAAAA;IAC1BmB,qBAA4BJ,aAAaK,aAAMpB,QAAeW,WAAI,CAAA;IAClEU,WAAkBC,eAAQ,MAAkCC,IAAGlC,YAACmC,OAAAA,CAAAA;IAChEC,gBAAuBV,aAAaO,eAAQ,MAAkCC,IAAGlC,YAACmC,OAAAA,CAAAA,CAAAA;IAClFE,eAAsBC,kBAAWzB,SAAAA;IACjC0B,OAAcjC;EAChB,CAAA,EAAGC,KAAYiC,cAAO;cAMTL,UAAUpB,YAAAA,cAAcR,KAC9BC,OAAO;IACVC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;cAWW+B,gBAAuBvC,cAAO;;;IAGzCwC,WAAkBtC,cAAOG,KAChBoC,0BACAC,8BAAuB,OAAM,oBAAIC,KAAAA,GAAOC,YAAW,CAAA,CAAA;EAE9D,CAAA;cAEaC,UAAUN,YAAAA,cAAclC,KAC9BC,OAAO;IACVC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;cASWsC,eAAsB9C,cAAO;IACxC+C,MAAa7C;IACb8C,YAAmBC,gBACVC,cAAO;MACZjD,KAAYC;MACZC,OAAcD;IAChB,CAAA,CAAA;EAEJ,CAAA,EAAGG,KACIC,OAAO;IACVC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;cASW2C,SAAgBnD,cAAO;IAClC+C,MAAa7C;IACbkD,UAAiBlD;IACjBmD,OAAcnD;IACdoD,KAAYtC,cAAOX,KAAY4C,eAAQ;IACvCM,OAAc/B,aAAaO,eAAQ,MAA+BC,IAAGlC,YAAC0D,IAAAA,CAAAA,CAAAA;IACtEC,UAAiBR,gBAAajB,IAAGlC,YAACgD,YAAAA,CAAAA;IAClCY,SAAgB1D,cAAO;MACrB2D,MAAaV,gBAAgB/C,aAAM;MACnC0D,OAAcX,gBAAgB/C,aAAM;MACpC2D,KAAYZ,gBAAgB/C,aAAM;MAClC4D,aAAoB9D,cAAO;QACzB+D,KAAYd,gBAAgBjC,aAAM;QAClCgD,KAAYf,gBAAgBjC,aAAM;MACpC,CAAA;IACF,CAAA;IACAiD,QAAejE,cAAO;MACpBkE,OAAchE;MACdC,OAAcD;IAChB,CAAA,EAAGG,KAAYmB,cAAcyB,eAAQ;EACvC,CAAA,EAAG5C,KACMiC,gBACFhC,OAAO;IACVC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;cASWgD,OAAcxD,cAAO;IAChCmE,OAAclB,gBAAgB/C,aAAM;IACpCkE,UAAiBnB,gBAAgB/C,aAAM;IACvCmE,WAAkBpB,gBAAgB/B,cAAO;IACzCoD,UAAiBrB,gBAAajB,IAAGlC,YAACqD,MAAAA,CAAAA;IAClCoB,UAAiBtB,gBAAgBlB,eAAQ,MAA+BC,IAAGlC,YAAC0D,IAAAA,CAAAA,CAAAA;IAC5EgB,UAAiBvB,gBAAgBzB,aAAaO,eAAQ,MAA+BC,IAAGlC,YAAC0D,IAAAA,CAAAA,CAAAA,CAAAA;IACzFiB,aAAoBxB,gBAAgB/C,aAAM;EAC5C,CAAA,EAAGG,KACMiC,gBACFhC,OAAO;IACVC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;cASWkE,aAAoB1E,cAAO,CAAC,CAAA,EAAGK,KACrCsE,SAAS;IACZpE,UAAU;IACVC,SAAS;IACToE,QAAM9E,YAAEqD;IACR0B,QAAM/E,YAAEqD;EACV,CAAA,CAAA;cASW2B,aAAoB9E,cAAO;IACtC+E,MAAa7E;IACb8E,OAAc/B,gBAAgB/C,aAAM;EACtC,CAAA,EAAGG,KACIsE,SAAS;IACZpE,UAAU;IACVC,SAAS;IACToE,QAAM9E,YAAEqD;IACR0B,QAAM/E,YAAEgD;EACV,CAAA,CAAA;YASUmC,YAAAA;;;;iBAAAA,eAAAA,YAAAA,aAAAA,CAAAA,EAAAA;cAMCC,YAAmBlF,cAAO;IACrCmF,SAAgB3D,aAAUQ,IAAQoD,OAAO,CAAA;IACzCC,SAAgB7D,aACPc,eACEtC,cAAO;MACZmE,OAAcjE;MACduE,aAAoBvE;MACpBoF,UAAiB9D,aAAUQ,IAAGlC,YAACqD,MAAAA,CAAAA;MAC/BoC,MAAaC,aAAK1F,YAACmF,UAAAA;IACrB,CAAA,CAAA,CAAA;EAGN,CAAA,EAAG5E,KACMiC,gBACFhC,OAAO;IACVC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;AAIJ,GArOiBV,eAAAA,aAAAA,CAAAA,EAAAA;;;;ADAjB,IAAM2F,WAAWC,UAAUC,OAAM;AAI1B,IAAMC,SAAS;EACpBC,OAAOC,kBAAkBC,KAAK;IAC5BN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAKC,OAAOC,WAAWC,MAAM,EAAGC,SAAQ;QAC9CC,MAAM;UACJC,MAAM;QACR;MACF,CAAA;IACF;EACF,CAAA;EACAC,KAAKf,kBAAkBC,KAAK;IAC1BN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAKC,OAAOC,WAAWC,MAAM,EAAGC,SAAQ;QAC9CC,MAAM;UACJC,MAAM;QACR;MACF,CAAA;IACF;EACF,CAAA;AACF;AAEO,IAAME,OAAO;EAClBC,MAAMjB,kBAAkBC,KAAK;IAC3BN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAKC,OAAOC,WAAWQ,YAAY,EAAGN,SAAQ;QACpDC,MAAM;UACJC,MAAM;UACNK,SAAS;QACX;MACF,CAAA;IACF;EACF,CAAA;EACAC,WAAWpB,kBAAkBC,KAAK;IAChCN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAKC,OAAOC,WAAWQ,YAAY,EAAGN,SAAQ;QACpDC,MAAM;UACJC,MAAM;UACNK,SAAS;QACX;MACF,CAAA;IACF;EACF,CAAA;AACF;AAEO,IAAME,YAAY;EACvBC,uBAAuBtB,kBAAkBC,KAAK;IAC5CN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBkB,aAAa;QAChDhB,MAAMC,aAAKC,OAAOC,WAAWc,UAAU,EAAGZ,SAAQ;QAClDa,QAAQ;UAAE,KAAKC,IAAIC,kBAAkBC,OAAOC,KAAK/B,OAAOiB,IAAIZ,OAAO,EAAG,CAAA,CAAE,EAAES,SAAQ;QAAG;QACrFkB,QAAQ;UAAE,KAAKJ,IAAIC,kBAAkBC,OAAOC,KAAKb,KAAKI,UAAUjB,OAAO,EAAG,CAAA,CAAE,EAAES,SAAQ;QAAG;QACzFC,MAAM;UACJkB,OAAO;UACPC,UAAU;QACZ;MACF,CAAA;IACF;EACF,CAAA;EACAC,uBAAuBjC,kBAAkBC,KAAK;IAC5CN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBkB,aAAa;QAChDhB,MAAMC,aAAKC,OAAOC,WAAWc,UAAU,EAAGZ,SAAQ;QAClDa,QAAQ;UAAE,KAAKC,IAAIC,kBAAkBC,OAAOC,KAAK/B,OAAOC,MAAMI,OAAO,EAAG,CAAA,CAAE,EAAES,SAAQ;QAAG;QACvFkB,QAAQ;UAAE,KAAKJ,IAAIC,kBAAkBC,OAAOC,KAAKb,KAAKC,KAAKd,OAAO,EAAG,CAAA,CAAE,EAAES,SAAQ;QAAG;QACpFC,MAAM;UACJkB,OAAO;UACPC,UAAU;QACZ;MACF,CAAA;IACF;EACF,CAAA;AACF;AAEO,IAAME,QAAQ;EACnBC,OAAOnC,kBAAkBC,KAAK;IAC5BN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAKC,OAAOC,WAAW0B,IAAI,EAAGxB,SAAQ;QAC5CC,MAAM;UACJwB,OAAO;UACPC,aAAa;UACbC,QAAQ;UACRC,SAAS;UACTC,UAAU;YAAE,KAAKf,IAAIC,kBAAkBC,OAAOC,KAAK/B,OAAOiB,IAAIZ,OAAO,EAAG,CAAA,CAAE,EAAES,SAAQ;UAAG;QACzF;MACF,CAAA;IACF;EACF,CAAA;EACA8B,OAAO1C,kBAAkBC,KAAK;IAC5BN,UAAUA,SAASO,MAAK;IACxBC,SAAS;MACP,CAACC,SAASP,OAAM,CAAA,GAAKQ,gBAAgBC,WAAW;QAC9CC,MAAMC,aAAKC,OAAOC,WAAW0B,IAAI,EAAGxB,SAAQ;QAC5CC,MAAM;UACJwB,OAAO;UACPC,aAAa;UACbC,QAAQ;UACRC,SAAS;UACTC,UAAU;YAAE,KAAKf,IAAIC,kBAAkBC,OAAOC,KAAK/B,OAAOC,MAAMI,OAAO,EAAG,CAAA,CAAE,EAAES,SAAQ;UAAG;QAC3F;MACF,CAAA;IACF;EACF,CAAA;AACF;;;AEzHA,SAAS+B,sBAAsB;AAC/B,SAASC,qBAAqB;AAQvB,IAAMC,mBAAmB,CAACC,QAAoCC,UAAU,YAAO;AACpF,QAAMC,aAAaC,aAAaH,MAAAA;AAChC,QAAMI,WAAWC,kBAAkBL,MAAAA;AACnCM,iBAAeF,UAAU,YAAY,kCAAA;AACrC,QAAMG,aAAa,IAAIC,WAAWC,WAAWC,kBAAkB;IAAEN;IAAUH;IAASC;EAAW,CAAA,CAAA;AAG/FS,YAAUJ,WAAWK,kBAAkB,MAAA;AACrCL,eAAWM,YAAW;EACxB,CAAA;AAEA,SAAON;AACT;AAKO,IAAMO,uBAAuB,CAACC,QACnCC,cAAcD,KAAK,CAACE,OAAYC,YAAAA;AAC9B,MAAI,OAAOD,UAAU,YAAY;AAC/B,WAAO;EACT;AAEA,MAAIA,iBAAiBE,QAAQ;AAC3B,WAAOF;EACT;AAGA,MAAI,OAAOA,UAAU,UAAU;AAC7B,UAAMG,QAAQ;MAAE,GAAGH;IAAM;AACzB,eAAWI,OAAOC,OAAOC,sBAAsBH,KAAAA,GAAe;AAC5DA,YAAMC,IAAIG,SAAQ,CAAA,IAAMJ,MAAMC,GAAAA;AAC9B,aAAOD,MAAMC,GAAAA;IACf;AAEA,WAAOH,QAAQE,KAAAA;EACjB;AAEA,SAAOF,QAAQD,KAAAA;AACjB,CAAA;AAOK,IAAMQ,gBAAgB,IAAIC,YAAAA;AAC/B,MAAIC,cAAc;AAElB,QAAMC,eAAeF,QAAQG,IAAI,CAACd,QAChCJ,UAAUI,KAAK,MAAA;AACbY;EACF,CAAA,CAAA;AAGF,QAAMG,iBAAiB,MAAA;AACrB,eAAWC,SAASH,cAAc;AAChCG,YAAAA;IACF;EACF;AAEA,SAAO;;IAEL,CAACC,OAAOC,OAAO,GAAGH;IAClB,IAAII,QAAQ;AACV,aAAOP;IACT;EACF;AACF;",
6
- "names": ["DatabaseDirectory", "ObjectStructure", "DXN", "ObjectId", "PublicKey", "Schema", "TestSchema", "Expando", "Struct", "key", "String", "value", "Any", "pipe", "object", "typename", "version", "Nested", "field", "TestClass", "toJSON", "ExampleSchema", "string", "number", "Number", "boolean", "Boolean", "null", "Null", "undefined", "Undefined", "stringArray", "Array", "twoDimNumberArray", "nested", "nestedArray", "nestedNullableArray", "Union", "reference", "suspend", "Ref", "Example", "referenceArray", "classInstance", "instanceOf", "other", "partial", "MessageStruct", "timestamp", "propertySignature", "withConstructorDefault", "Date", "toISOString", "Message", "Organization", "name", "properties", "optional", "Record", "Person", "username", "email", "age", "tasks", "Task", "employer", "address", "city", "state", "zip", "coordinates", "lat", "lng", "fields", "label", "title", "deadline", "completed", "assignee", "previous", "subTasks", "description", "HasManager", "relation", "source", "target", "EmployedBy", "role", "since", "RecordType", "Container", "objects", "Unknown", "records", "contacts", "type", "Enums", "spaceKey", "PublicKey", "random", "PEOPLE", "alice", "DatabaseDirectory", "make", "toHex", "objects", "ObjectId", "ObjectStructure", "makeObject", "type", "Type", "getDXN", "TestSchema", "Person", "toString", "data", "name", "bob", "ORGS", "dxos", "Organization", "founded", "cyberdyne", "WORKS_FOR", "fredWorksForCyberdyne", "makeRelation", "EmployedBy", "source", "DXN", "fromLocalObjectId", "Object", "keys", "target", "since", "position", "aliceWorksForAperture", "TASKS", "task1", "Task", "title", "description", "status", "dueDate", "assignee", "task2", "assertArgument", "deepMapValues", "createEchoSchema", "schema", "version", "jsonSchema", "toJsonSchema", "typename", "getSchemaTypename", "assertArgument", "echoSchema", "EchoSchema", "makeObject", "PersistentSchema", "subscribe", "persistentSchema", "_invalidate", "prepareAstForCompare", "obj", "deepMapValues", "value", "recurse", "RegExp", "clone", "sym", "Object", "getOwnPropertySymbols", "toString", "updateCounter", "objects", "updateCount", "unsubscribes", "map", "unsubscribeAll", "unsub", "Symbol", "dispose", "count"]
3
+ "sources": ["../../../../src/testing/registry.ts", "../../../../src/testing/test-data.ts", "../../../../src/testing/test-schema.ts", "../../../../src/testing/util.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Atom from '@effect-atom/atom/Atom';\nimport * as Layer from 'effect/Layer';\n\nimport { Event } from '@dxos/async';\n\nimport * as Registry from '../Registry';\n\n/**\n * Noop `Registry.Service` layer for testing — always returns empty query results.\n * Use this in test layer stacks that require `Registry.Service` but don't need\n * actual registry contents.\n */\nexport const registryLayerNoop: Layer.Layer<Registry.Service> = Layer.succeed(Registry.Service, {\n [Registry.TypeId]: Registry.TypeId,\n id: 'noop-registry',\n changed: new Event<void>(),\n local: [],\n add: () => {},\n remove: () => false,\n clear: () => {},\n get: () => undefined,\n getByURI: () => undefined,\n list: () => [],\n // QueryFn is an overloaded interface — a single generic function cannot satisfy both overload\n // signatures without a cast. This is the intentional type-system boundary.\n query: ((_queryOrFilter: unknown) => ({\n results: [],\n entries: [],\n run: async () => [],\n runEntries: async () => [],\n runSync: () => [],\n runSyncEntries: () => [],\n first: async (): Promise<never> => {\n throw new Error('registryLayerNoop: registry is empty');\n },\n firstOrUndefined: async () => undefined,\n subscribe: () => () => {},\n atom: Atom.make((): never[] => []),\n })) as Registry.Registry['query'],\n} satisfies Registry.Registry);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DatabaseDirectory, EntityStructure } from '@dxos/echo-protocol';\nimport { EID, EntityId, PublicKey } from '@dxos/keys';\n\nimport { Type } from '../index';\nimport { TestSchema } from './test-schema';\n\n// Lazy init: Cloudflare workers disallow non-determinism at module scope (e.g. random keys).\nlet cachedSpaceKeyHex: string | undefined;\nconst getSpaceKeyHex = (): string => {\n if (cachedSpaceKeyHex === undefined) {\n cachedSpaceKeyHex = PublicKey.random().toHex();\n }\n return cachedSpaceKeyHex;\n};\n\nlet cachedPeopleAlice: DatabaseDirectory | undefined;\nlet cachedPeopleBob: DatabaseDirectory | undefined;\nlet cachedOrgsDxos: DatabaseDirectory | undefined;\nlet cachedOrgsCyberdyne: DatabaseDirectory | undefined;\nlet cachedWorksFredCyberdyne: DatabaseDirectory | undefined;\nlet cachedWorksAliceAperture: DatabaseDirectory | undefined;\nlet cachedTasksTask1: DatabaseDirectory | undefined;\nlet cachedTasksTask2: DatabaseDirectory | undefined;\n\n// TODO(burdon): Use Obj.make.\n\nexport const PEOPLE = {\n get alice(): DatabaseDirectory {\n if (cachedPeopleAlice === undefined) {\n cachedPeopleAlice = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Person)!,\n data: {\n name: 'Alice',\n },\n }),\n },\n });\n }\n return cachedPeopleAlice;\n },\n\n get bob(): DatabaseDirectory {\n if (cachedPeopleBob === undefined) {\n cachedPeopleBob = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Person)!,\n data: {\n name: 'Bob',\n },\n }),\n },\n });\n }\n return cachedPeopleBob;\n },\n};\n\nexport const ORGS = {\n get dxos(): DatabaseDirectory {\n if (cachedOrgsDxos === undefined) {\n cachedOrgsDxos = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Organization)!,\n data: {\n name: 'DXOS',\n founded: '2023',\n },\n }),\n },\n });\n }\n return cachedOrgsDxos;\n },\n\n get cyberdyne(): DatabaseDirectory {\n if (cachedOrgsCyberdyne === undefined) {\n cachedOrgsCyberdyne = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Organization)!,\n data: {\n name: 'Cyberdyne Systems',\n founded: '1984',\n },\n }),\n },\n });\n }\n return cachedOrgsCyberdyne;\n },\n};\n\nexport const WORKS_FOR = {\n get fredWorksForCyberdyne(): DatabaseDirectory {\n if (cachedWorksFredCyberdyne === undefined) {\n cachedWorksFredCyberdyne = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeRelation({\n type: Type.getURI(TestSchema.EmployedBy)!,\n source: { '/': EID.make({ entityId: Object.keys(PEOPLE.bob.objects!)[0] }) },\n target: { '/': EID.make({ entityId: Object.keys(ORGS.cyberdyne.objects!)[0] }) },\n data: {\n since: '2020',\n position: 'Engineer',\n },\n }),\n },\n });\n }\n return cachedWorksFredCyberdyne;\n },\n\n get aliceWorksForAperture(): DatabaseDirectory {\n if (cachedWorksAliceAperture === undefined) {\n cachedWorksAliceAperture = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeRelation({\n type: Type.getURI(TestSchema.EmployedBy)!,\n source: { '/': EID.make({ entityId: Object.keys(PEOPLE.alice.objects!)[0] }) },\n target: { '/': EID.make({ entityId: Object.keys(ORGS.dxos.objects!)[0] }) },\n data: {\n since: '2018',\n position: 'Research Scientist',\n },\n }),\n },\n });\n }\n return cachedWorksAliceAperture;\n },\n};\n\nexport const TASKS = {\n get task1(): DatabaseDirectory {\n if (cachedTasksTask1 === undefined) {\n cachedTasksTask1 = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Task)!,\n data: {\n title: 'Complete project documentation',\n description: 'Write comprehensive documentation for the new system',\n status: 'in-progress',\n dueDate: '2023-12-31',\n assignee: { '/': EID.make({ entityId: Object.keys(PEOPLE.bob.objects!)[0] }) },\n },\n }),\n },\n });\n }\n return cachedTasksTask1;\n },\n\n get task2(): DatabaseDirectory {\n if (cachedTasksTask2 === undefined) {\n cachedTasksTask2 = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Task)!,\n data: {\n title: 'Run experiments',\n description: 'Conduct series of experiments on the portal device',\n status: 'pending',\n dueDate: '2023-11-15',\n assignee: { '/': EID.make({ entityId: Object.keys(PEOPLE.alice.objects!)[0] }) },\n },\n }),\n },\n });\n }\n return cachedTasksTask2;\n },\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { DXN } from '@dxos/keys';\n\nimport * as Obj from '../Obj';\nimport * as Ref from '../Ref';\nimport * as Type from '../Type';\n\nexport namespace TestSchema {\n //\n // Expando\n //\n\n /**\n * Expando object is an object with an arbitrary set of properties.\n * This is the test variant with example.com namespace.\n */\n export const Expando = Schema.Struct({}, { key: Schema.String, value: Schema.Any }).pipe(\n Type.makeObject(DXN.make('com.example.type.expando', '0.1.0')),\n );\n\n export type Expando = Type.InstanceType<typeof Expando>;\n\n //\n // Example\n //\n\n const Nested = Schema.Struct({\n field: Schema.String,\n });\n\n export class TestClass {\n field = 'value';\n toJSON() {\n return { field: this.field };\n }\n }\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const ExampleSchema = Schema.Struct({\n string: Schema.String,\n number: Schema.Number,\n boolean: Schema.Boolean,\n null: Schema.Null,\n undefined: Schema.Undefined,\n stringArray: Schema.Array(Schema.String),\n twoDimNumberArray: Schema.Array(Schema.Array(Schema.Number)),\n nested: Nested,\n nestedArray: Schema.Array(Nested),\n nestedNullableArray: Schema.Array(Schema.Union(Nested, Schema.Null)),\n reference: Schema.suspend((): Ref.RefSchema<Example> => Ref.Ref(Example)),\n referenceArray: Schema.Array(Schema.suspend((): Ref.RefSchema<Example> => Ref.Ref(Example))),\n classInstance: Schema.instanceOf(TestClass),\n other: Schema.Any,\n }).pipe(Schema.partial);\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface ExampleSchema extends Schema.Schema.Type<typeof ExampleSchema> {}\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const Example = ExampleSchema.pipe(Type.makeObject(DXN.make('com.example.type.example', '0.1.0')));\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface Example extends Type.InstanceType<typeof Example> {}\n\n //\n // Message\n //\n\n // TODO(burdon): Support defaults directly on Type: `make` is erased by `pipe(Type.Obj)`.\n export const MessageStruct = Schema.Struct({\n // TODO(burdon): Support S.Date; Custom Timestamp (with defaults).\n // TODO(burdon): Support defaults (update create and create).\n timestamp: Schema.String.pipe(\n Schema.propertySignature,\n Schema.withConstructorDefault(() => new Date().toISOString()),\n ),\n });\n\n export const Message = MessageStruct.pipe(Type.makeObject(DXN.make('com.example.type.message', '0.1.0')));\n\n export type Message = Type.InstanceType<typeof Message>;\n\n //\n // Organization\n //\n\n export const Organization = Schema.Struct({\n name: Schema.String,\n properties: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.String,\n }),\n ),\n }).pipe(Type.makeObject(DXN.make('com.example.type.organization', '0.1.0')));\n\n export type Organization = Type.InstanceType<typeof Organization>;\n\n //\n // Person\n //\n\n export const Person = Schema.Struct({\n name: Schema.String,\n username: Schema.String,\n email: Schema.String,\n age: Schema.Number.pipe(Schema.optional),\n tasks: Schema.Array(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task))),\n employer: Schema.optional(Ref.Ref(Organization)),\n address: Schema.Struct({\n city: Schema.optional(Schema.String),\n state: Schema.optional(Schema.String),\n zip: Schema.optional(Schema.String),\n coordinates: Schema.Struct({\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }),\n }),\n fields: Schema.Struct({\n label: Schema.String,\n value: Schema.String,\n }).pipe(Schema.Array, Schema.optional),\n }).pipe(Schema.partial, Type.makeObject(DXN.make('com.example.type.person', '0.1.0')));\n\n export interface Person extends Type.InstanceType<typeof Person> {}\n\n //\n // Task\n //\n\n export const Task = Schema.Struct({\n title: Schema.optional(Schema.String),\n deadline: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Ref.Ref(Person)),\n previous: Schema.optional(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task))),\n subTasks: Schema.optional(Schema.Array(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task)))),\n description: Schema.optional(Schema.String),\n }).pipe(Schema.partial, Type.makeObject(DXN.make('com.example.type.task', '0.1.0')));\n\n export interface Task extends Type.InstanceType<typeof Task> {}\n\n //\n // HasManager\n //\n\n export const HasManager = Schema.Struct({}).pipe(\n Type.makeRelation({\n dxn: DXN.make('com.example.type.hasManager', '0.1.0'),\n source: Person,\n target: Person,\n }),\n );\n\n export type HasManager = Type.InstanceType<typeof HasManager>;\n\n //\n // EmployedBy\n //\n\n export const EmployedBy = Schema.Struct({\n role: Schema.String,\n since: Schema.optional(Schema.String),\n }).pipe(\n Type.makeRelation({\n dxn: DXN.make('com.example.type.employedBy', '0.1.0'),\n source: Person,\n target: Organization,\n }),\n );\n\n export type EmployedBy = Type.InstanceType<typeof EmployedBy>;\n\n //\n // RecordType\n //\n\n export enum RecordType {\n UNDEFINED = 0,\n PERSONAL = 1,\n WORK = 2,\n }\n\n export const Container = Schema.Struct({\n objects: Schema.Array(Ref.Ref(Obj.Unknown)),\n records: Schema.Array(\n Schema.partial(\n Schema.Struct({\n title: Schema.String,\n description: Schema.String,\n contacts: Schema.Array(Ref.Ref(Person)),\n type: Schema.Enums(RecordType),\n }),\n ),\n ),\n }).pipe(Schema.partial, Type.makeObject(DXN.make('com.example.type.container', '0.1.0')));\n\n export type Container = Type.InstanceType<typeof Container>;\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type * as Schema from 'effect/Schema';\nimport type * as SchemaAST from 'effect/SchemaAST';\n\nimport { assertArgument } from '@dxos/invariant';\nimport { deepMapValues } from '@dxos/util';\n\nimport { TypeSchema, getSchemaTypename, getStaticTypeSchema, makeObject, subscribe, toJsonSchema } from '../internal';\nimport type * as Type from '../Type';\n\n/**\n * Create an in-memory `Type.Type` entity (a `TypeSchema` object) for tests.\n * Accepts a raw Effect Schema. Pass `Type.getSchema(entity)` to convert a\n * `Type.Type` entity to its underlying source schema first.\n */\n// TODO(dmaretskyi): Should be replaced by registration of typed object.\nexport const createEchoSchema = (schema: Schema.Schema.AnyNoContext, version = '0.1.0'): Type.Type => {\n const jsonSchema = toJsonSchema(schema);\n const typename = getSchemaTypename(schema);\n assertArgument(typename, 'typename', 'Schema does not have a typename.');\n // typename/version are routed via EntityMeta (the canonical registry-provenance\n // pair); they're no longer data fields on `TypeSchema`.\n return makeObject(\n getStaticTypeSchema(TypeSchema) as any,\n { jsonSchema },\n { keys: [], key: typename, version },\n TypeSchema,\n ) as unknown as Type.Type;\n};\n\n/**\n * Converts AST to a format that can be compared with test matchers.\n */\nexport const prepareAstForCompare = (obj: SchemaAST.AST): any =>\n deepMapValues(obj, (value: any, recurse: any) => {\n if (typeof value === 'function') {\n return null;\n }\n\n if (value instanceof RegExp) {\n return value;\n }\n\n // Convert symbols to strings.\n if (typeof value === 'object') {\n const clone = { ...value };\n for (const sym of Object.getOwnPropertySymbols(clone as any)) {\n clone[sym.toString()] = clone[sym];\n delete clone[sym];\n }\n\n return recurse(clone);\n }\n\n return recurse(value);\n });\n\n/**\n * Creates an update counter that tracks changes to reactive objects.\n * @param objects - Reactive objects to subscribe to.\n * @returns An object with a count property and Symbol.dispose for cleanup.\n */\nexport const updateCounter = (...objects: object[]) => {\n let updateCount = 0;\n\n const unsubscribes = objects.map((obj) =>\n subscribe(obj, () => {\n updateCount++;\n }),\n );\n\n const unsubscribeAll = () => {\n for (const unsub of unsubscribes) {\n unsub();\n }\n };\n\n return {\n // https://github.com/tc39/proposal-explicit-resource-management\n [Symbol.dispose]: unsubscribeAll,\n get count() {\n return updateCount;\n },\n };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Atom", "Layer", "Event", "registryLayerNoop", "succeed", "Service", "TypeId", "id", "changed", "Event", "local", "add", "remove", "clear", "get", "undefined", "getByURI", "list", "query", "_queryOrFilter", "results", "entries", "run", "runEntries", "runSync", "runSyncEntries", "first", "Error", "firstOrUndefined", "subscribe", "atom", "make", "DatabaseDirectory", "EntityStructure", "EID", "EntityId", "PublicKey", "Schema", "DXN", "TestSchema", "Expando", "Struct", "key", "String", "value", "Any", "pipe", "makeObject", "DXN", "make", "Nested", "field", "TestClass", "toJSON", "ExampleSchema", "string", "number", "Number", "boolean", "Boolean", "null", "Null", "undefined", "Undefined", "stringArray", "Array", "twoDimNumberArray", "nested", "nestedArray", "nestedNullableArray", "Union", "reference", "suspend", "Ref", "Example", "referenceArray", "classInstance", "instanceOf", "other", "partial", "MessageStruct", "timestamp", "propertySignature", "withConstructorDefault", "Date", "toISOString", "Message", "Organization", "name", "properties", "optional", "Record", "Person", "username", "email", "age", "tasks", "Task", "employer", "address", "city", "state", "zip", "coordinates", "lat", "lng", "fields", "label", "title", "deadline", "completed", "assignee", "previous", "subTasks", "description", "HasManager", "makeRelation", "dxn", "source", "target", "EmployedBy", "role", "since", "RecordType", "Container", "objects", "Unknown", "records", "contacts", "type", "Enums", "cachedSpaceKeyHex", "getSpaceKeyHex", "undefined", "PublicKey", "random", "toHex", "cachedPeopleAlice", "cachedPeopleBob", "cachedOrgsDxos", "cachedOrgsCyberdyne", "cachedWorksFredCyberdyne", "cachedWorksAliceAperture", "cachedTasksTask1", "cachedTasksTask2", "PEOPLE", "alice", "DatabaseDirectory", "make", "spaceKey", "objects", "EntityId", "EntityStructure", "makeObject", "type", "Type", "getURI", "TestSchema", "Person", "data", "name", "bob", "ORGS", "dxos", "Organization", "founded", "cyberdyne", "WORKS_FOR", "fredWorksForCyberdyne", "makeRelation", "EmployedBy", "source", "EID", "entityId", "Object", "keys", "target", "since", "position", "aliceWorksForAperture", "TASKS", "task1", "Task", "title", "description", "status", "dueDate", "assignee", "task2", "assertArgument", "deepMapValues", "createEchoSchema", "schema", "version", "jsonSchema", "toJsonSchema", "typename", "getSchemaTypename", "assertArgument", "makeObject", "getStaticTypeSchema", "TypeSchema", "keys", "key", "prepareAstForCompare", "obj", "deepMapValues", "value", "recurse", "RegExp", "clone", "sym", "Object", "getOwnPropertySymbols", "toString", "updateCounter", "objects", "updateCount", "unsubscribes", "map", "subscribe", "unsubscribeAll", "unsub", "Symbol", "dispose", "count"]
7
7
  }
@@ -1,6 +1,51 @@
1
- export { DescriptionAnnotation, FormInputAnnotation, GeneratorAnnotation, LabelAnnotation, ReferenceAnnotation, SystemTypeAnnotation, TypeAnnotation, getDescriptionWithSchema, getLabelWithSchema, getTypeAnnotation, setDescriptionWithSchema, setLabelWithSchema, IconAnnotation, } from './internal/Annotation';
2
- import type * as Schema from 'effect/Schema';
3
- import * as internalAnnotations from './internal/Annotation';
1
+ export { DescriptionAnnotation, FieldLookupAnnotationId, FormInputAnnotation, FormInlineAnnotation, GeneratorAnnotation, GeneratorAnnotationId, type GeneratorAnnotationValue, LabelAnnotation, ReferenceAnnotation, ReferenceAnnotationId, type ReferenceAnnotationValue, HiddenAnnotation, TypeAnnotation, getDescriptionWithSchema, getLabelWithSchema, getTypeAnnotation, getTypeIdentifierAnnotation, setDescriptionWithSchema, setLabelWithSchema, IconAnnotation, IconFromRefAnnotation, } from './internal/Annotation';
2
+ import * as Option from 'effect/Option';
3
+ import * as Schema from 'effect/Schema';
4
+ import * as SchemaAST from 'effect/SchemaAST';
5
+ import * as Types from 'effect/Types';
6
+ import * as Entity from './Entity';
7
+ export declare const TypeId: '~@dxos/echo/Annotation';
8
+ export type TypeId = typeof TypeId;
9
+ /**
10
+ * Annotation is a typed property that can be assigned to a schema or an entity instance.
11
+ */
12
+ export interface Annotation<T> {
13
+ [TypeId]: {
14
+ _Type: T;
15
+ };
16
+ /**
17
+ * Unique fully-qualified identifier for the annotation.
18
+ * @example "org.dxos.annotation.color"
19
+ */
20
+ readonly key: Key;
21
+ /**
22
+ * Schema of the annotation value.
23
+ */
24
+ readonly schema: Schema.Schema<T, unknown, never>;
25
+ /**
26
+ * Get the annotation value from an Effect schema.
27
+ *
28
+ * Only accepts `Schema.Schema.Any` — to read an annotation off a `Type.Type`
29
+ * entity, unwrap it first with `Type.getSchema(entity)`. This keeps the
30
+ * annotation pipeline single-shaped and forces annotations to live on the
31
+ * source schema, not on the post-construction Type entity.
32
+ */
33
+ get: (schema: Schema.Schema.Any) => Option.Option<T>;
34
+ /**
35
+ * Get the annotation value from the AST.
36
+ */
37
+ getFromAst: (ast: SchemaAST.AST) => Option.Option<T>;
38
+ /**
39
+ * Set the annotation on an Effect schema.
40
+ *
41
+ * Only accepts `Schema.Schema.Any` — annotations must be applied to the
42
+ * source schema BEFORE wrapping it with `Type.makeObject` / `Type.makeRelation`.
43
+ * In a pipe, place every `Annotation.X.set(...)` before the `Type.make...` step.
44
+ */
45
+ set: (value: T) => <S extends Schema.Schema.Any>(schema: S) => S;
46
+ }
47
+ export declare const Key: Schema.brand<typeof Schema.String, "~@dxos/echo/AnnotationKey">;
48
+ export type Key = Schema.Schema.Type<typeof Key>;
4
49
  interface MakeProps<T> {
5
50
  id: string;
6
51
  schema: Schema.Schema<T, any, never>;
@@ -20,5 +65,64 @@ interface MakeProps<T> {
20
65
  * const schema = Schema.String.annotations(ColorAnnotation.set('red'));
21
66
  * ```
22
67
  */
23
- export declare const make: <T>(props: MakeProps<T>) => internalAnnotations.AnnotationHelper<T>;
68
+ export declare const make: <T>(props: MakeProps<T>) => Annotation<T>;
69
+ /**
70
+ * Get the value of an annotation from an entity instance or snapshot.
71
+ * For schema-level reads use the annotation instance method (e.g. `ColorAnnotation.get(schema)`).
72
+ * For getting an annotation value from a dictionary, use `getDictionary`.
73
+ */
74
+ export declare const get: {
75
+ <T>(annotation: Annotation<T>): (target: Entity.Unknown | Entity.Snapshot) => Option.Option<T>;
76
+ <T>(target: Entity.Unknown | Entity.Snapshot, annotation: Annotation<T>): Option.Option<T>;
77
+ };
78
+ /**
79
+ * Set the value of an annotation on an entity instance.
80
+ * For schema-level writes use the annotation instance method (e.g. `ColorAnnotation.set('red')`).
81
+ * For setting an annotation value on a dictionary, use `setDictionary`.
82
+ */
83
+ export declare const set: {
84
+ <T>(annotation: Annotation<T>, value: T): (target: Entity.Mutable<Entity.Unknown>) => void;
85
+ <T>(target: Entity.Mutable<Entity.Unknown>, annotation: Annotation<T>, value: T): void;
86
+ };
87
+ export declare const getFromAst: {
88
+ <T>(annotation: Annotation<T>): (ast: SchemaAST.AST) => Option.Option<T>;
89
+ <T>(ast: SchemaAST.AST, annotation: Annotation<T>): Option.Option<T>;
90
+ };
91
+ /**
92
+ * Set of annotation values.
93
+ *
94
+ * Can be used inside an object/relation schema:
95
+ *
96
+ * ```ts
97
+ * const Person = Schema.Struct({
98
+ * name: Schema.String,
99
+ * extensions: Annotation.Dictionary,
100
+ * });
101
+ * ```
102
+ */
103
+ export declare const Dictionary: Schema.Record$<Schema.brand<typeof Schema.String, "~@dxos/echo/AnnotationKey">, typeof Schema.Unknown>;
104
+ export interface Dictionary extends Schema.Schema.Type<typeof Dictionary> {
105
+ }
106
+ /**
107
+ * Get the value of an annotation from a Dictionary.
108
+ */
109
+ export declare const getDictionary: {
110
+ <T>(annotation: Annotation<T>): (values: Dictionary) => Option.Option<T>;
111
+ <T>(values: Dictionary, annotation: Annotation<T>): Option.Option<T>;
112
+ };
113
+ /**
114
+ * Set the value of an annotation in a Dictionary.
115
+ *
116
+ * Can also be used within Obj.update callback:
117
+ *
118
+ * ```ts
119
+ * Obj.update(obj, (obj) => {
120
+ * Annotation.setDictionary(obj.annotations, ColorAnnotation, 'red');
121
+ * });
122
+ * ```
123
+ */
124
+ export declare const setDictionary: {
125
+ <T>(annotation: Annotation<T>, value: T): (values: Dictionary) => void;
126
+ <T>(values: Types.Mutable<Dictionary>, annotation: Annotation<T>, value: T): void;
127
+ };
24
128
  //# sourceMappingURL=Annotation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Annotation.d.ts","sourceRoot":"","sources":["../../../src/Annotation.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,mBAAmB,MAAM,uBAAuB,CAAC;AAE7D,UAAU,SAAS,CAAC,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;CACtC;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAC7C,CAAC"}
1
+ {"version":3,"file":"Annotation.d.ts","sourceRoot":"","sources":["../../../src/Annotation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Annotation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Annotation.test.d.ts","sourceRoot":"","sources":["../../../src/Annotation.test.ts"],"names":[],"mappings":""}
@@ -7,10 +7,9 @@ import * as Type from './Type';
7
7
  */
8
8
  export declare const Collection: Type.Obj<{
9
9
  readonly name?: string | undefined;
10
- readonly objects: readonly internal.Ref<import("./Entity").OfKind<internal.EntityKind.Object> & Obj.Unknown>[];
10
+ readonly objects: readonly internal.Ref<Obj.Unknown>[];
11
11
  }, Schema.Struct.Fields>;
12
- export interface Collection extends Schema.Schema.Type<typeof Collection> {
13
- }
12
+ export type Collection = Type.InstanceType<typeof Collection>;
14
13
  export declare const make: (props?: Partial<Obj.MakeProps<typeof Collection>>) => Collection;
15
14
  export declare const isCollection: (value: unknown) => value is Collection;
16
15
  //# sourceMappingURL=Collection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../../src/Collection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,UAAU;;;wBAYtB,CAAC;AAEF,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC;CAAG;AAE5E,eAAO,MAAM,IAAI,GAAI,QAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,UAAU,CAAC,CAAM,KAAG,UAC5B,CAAC;AAElD,eAAO,MAAM,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,UAAuC,CAAC"}
1
+ {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../../src/Collection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,UAAU;;;wBAMtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AAE9D,eAAO,MAAM,IAAI,WAAW,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,UAAU,CAAC,CAAC,KAAQ,UAC5B,CAAC;AAElD,eAAO,MAAM,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,UAAuC,CAAC"}
@@ -1,20 +1,18 @@
1
1
  import * as Context from 'effect/Context';
2
2
  import * as Effect from 'effect/Effect';
3
3
  import * as Layer from 'effect/Layer';
4
- import * as Option from 'effect/Option';
5
4
  import * as Schema from 'effect/Schema';
6
- import type * as Types from 'effect/Types';
7
- import { DXN, type SpaceId } from '@dxos/keys';
5
+ import { type SpaceId, type URI } from '@dxos/keys';
8
6
  import type * as Entity from './Entity';
9
7
  import * as Err from './Err';
10
8
  import type * as Filter from './Filter';
11
9
  import type * as Hypergraph from './Hypergraph';
12
- import { type AnyProperties } from './internal/common/types';
10
+ import { type AnyProperties, EntityKind, KindId } from './internal/common/types';
13
11
  import type { Ref } from './internal/Ref/ref';
14
12
  import type * as Obj from './Obj';
15
13
  import type * as Query from './Query';
16
14
  import type * as QueryResult from './QueryResult';
17
- import type * as SchemaRegistry from './SchemaRegistry';
15
+ import type * as Registry from './Registry';
18
16
  import type * as Type from './Type';
19
17
  /**
20
18
  * `query` API function declaration.
@@ -24,7 +22,7 @@ export interface QueryFn {
24
22
  <F extends Filter.Any>(filter: F): QueryResult.QueryResult<Filter.Type<F>>;
25
23
  }
26
24
  /**
27
- * Common interface for Database and Queue.
25
+ * Common interface for Database, Feed, and Hypergraph.
28
26
  */
29
27
  export interface Queryable {
30
28
  query: QueryFn;
@@ -44,6 +42,17 @@ export type AddOptions = {
44
42
  */
45
43
  placeIn?: ObjectPlacement;
46
44
  };
45
+ /**
46
+ * Rejects Type entities from {@link Database.add} at compile time via their `[KindId]` brand. Used
47
+ * as `T & RejectTypeEntity<T>` to preserve inference of `T`. Bounding `add` on
48
+ * `Obj.Unknown | Relation.Unknown` instead would reject broadly-typed instance adds (e.g.
49
+ * `Entity.Any`, `Obj.OfShape<T>`), forcing casts repo-wide.
50
+ */
51
+ export type RejectTypeEntity<T> = T extends {
52
+ readonly [KindId]: EntityKind.Type;
53
+ } ? {
54
+ __error: 'Type entities must be persisted via db.addType(), not db.add().';
55
+ } : T;
47
56
  export type FlushOptions = {
48
57
  /**
49
58
  * Write any pending changes to disk.
@@ -72,11 +81,17 @@ export type TypeId = typeof TypeId;
72
81
  export interface Database extends Queryable {
73
82
  readonly [TypeId]: TypeId;
74
83
  get spaceId(): SpaceId;
75
- get schemaRegistry(): SchemaRegistry.SchemaRegistry;
76
84
  get graph(): Hypergraph.Hypergraph;
85
+ /**
86
+ * Registry for this database. Delegates type lookups to the shared hypergraph registry.
87
+ * To persist a schema so it replicates to other clients, add the type entity with
88
+ * {@link addType} (e.g. `await db.addType(Type.makeObjectFromJsonSchema(...))`).
89
+ */
90
+ readonly registry: Registry.Registry;
77
91
  toJSON(): object;
78
92
  /**
79
93
  * Return object by local ID.
94
+ * @deprecated Use `db.query(Filter.id(id)).runSync()[0]` for a working-set lookup, or resolve via a {@link Ref}.
80
95
  */
81
96
  getObjectById<T extends Obj.Unknown = Obj.OfShape<AnyProperties>>(id: string, opts?: GetObjectByIdOptions): T | undefined;
82
97
  /**
@@ -87,15 +102,26 @@ export interface Database extends Queryable {
87
102
  * Creates a reference to an existing object in the database.
88
103
  *
89
104
  * NOTE: The reference may be dangling if the object is not present in the database.
90
- * NOTE: Difference from `Ref.fromDXN`
91
- * `Ref.fromDXN(dxn)` returns an unhydrated reference. The `.load` and `.target` APIs will not work.
105
+ * NOTE: Difference from `Ref.fromURI`
106
+ * `Ref.fromURI(dxn)` returns an unhydrated reference. The `.load` and `.target` APIs will not work.
92
107
  * `db.makeRef(dxn)` is preferable in cases with access to the database.
93
108
  */
94
- makeRef<T extends Entity.Unknown = Entity.Unknown>(dxn: DXN): Ref<T>;
109
+ makeRef<T extends Entity.Unknown = Entity.Unknown>(uri: URI.URI): Ref<T>;
95
110
  /**
96
- * Adds object to the database.
111
+ * Adds an object or relation to the database.
112
+ *
113
+ * Only Object and Relation entities are accepted. To persist a Type definition use
114
+ * {@link addType} — passing a Type entity is rejected at compile time (and at runtime).
97
115
  */
98
- add<T extends Entity.Unknown = Entity.Unknown>(obj: T, opts?: AddOptions): T;
116
+ add<T extends Entity.Unknown = Entity.Unknown>(obj: T & RejectTypeEntity<T>, opts?: AddOptions): T;
117
+ /**
118
+ * Persists a Type definition (clones/forks the entity) so it replicates to other peers.
119
+ *
120
+ * Runs a conflict query first: if a type with the same typename + version already exists in
121
+ * this space, the existing persisted entity is returned and no duplicate is created. This is
122
+ * the only supported way to add Type entities — {@link add} rejects them.
123
+ */
124
+ addType<T extends Type.AnyEntity>(type: T): Promise<T>;
99
125
  /**
100
126
  * Removes object from the database.
101
127
  */
@@ -137,22 +163,30 @@ export declare const spaceId: Effect.Effect<SpaceId, never, Service>;
137
163
  * Resolves an object by its DXN.
138
164
  */
139
165
  export declare const resolve: {
140
- (ref: DXN | Ref<any>): Effect.Effect<Entity.Unknown, never, Service>;
141
- <S extends Type.AnyEntity>(ref: DXN | Ref<any>, schema: S): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service>;
166
+ (ref: URI.URI | Ref<any>): Effect.Effect<Entity.Unknown, never, Service>;
167
+ <S extends Type.AnyEntity>(ref: URI.URI | Ref<any>, schema: S): Effect.Effect<Type.InstanceType<S>, Err.EntityNotFoundError, Service>;
142
168
  };
143
169
  /**
144
170
  * Loads an object reference.
171
+ *
172
+ * Catching not found error:
173
+ *
174
+ * ```ts
175
+ * yield* load(ref).pipe(Effect.catchTag('EntityNotFoundError', () => Effect.succeed(undefined)));
176
+ * ```
177
+ *
145
178
  */
146
- export declare const load: <T>(ref: Ref<T>) => Effect.Effect<T, Err.ObjectNotFoundError, never>;
179
+ export declare const load: <T>(ref: Ref<T>) => Effect.Effect<T, Err.EntityNotFoundError, never>;
147
180
  /**
148
- * Loads an object reference option.
181
+ * Adds an object or relation to the database.
182
+ * @see {@link Database.add}
149
183
  */
150
- export declare const loadOption: <T>(ref: Ref<T>) => Effect.Effect<Option.Option<T>, never, never>;
184
+ export declare const add: <T extends Entity.Unknown>(obj: T & RejectTypeEntity<T>) => Effect.Effect<T, never, Service>;
151
185
  /**
152
- * Adds an object to the database.
153
- * @see {@link Database.add}
186
+ * Persists a Type definition to the database.
187
+ * @see {@link Database.addType}
154
188
  */
155
- export declare const add: <T extends Entity.Unknown>(obj: T) => Effect.Effect<T, never, Service>;
189
+ export declare const addType: <T extends Type.AnyEntity>(type: T) => Effect.Effect<T, never, Service>;
156
190
  /**
157
191
  * Removes an object from the database.
158
192
  * @see {@link Database.remove}
@@ -167,35 +201,8 @@ export declare const flush: (opts?: FlushOptions) => Effect.Effect<void, never,
167
201
  * Creates a `QueryResult` object that can be subscribed to.
168
202
  */
169
203
  export declare const query: {
170
- <Q extends Query.Any>(query: Q): Effect.Effect<QueryResult.QueryResult<Query.Type<Q>>, never, Service>;
171
- <F extends Filter.Any>(filter: F): Effect.Effect<QueryResult.QueryResult<Filter.Type<F>>, never, Service>;
172
- };
173
- /**
174
- * Executes the query once and returns the results.
175
- */
176
- export declare const runQuery: {
177
- <Q extends Query.Any>(query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;
178
- <F extends Filter.Any>(filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;
179
- };
180
- /**
181
- * Executes the query once and returns the first result as or None.
182
- */
183
- export declare const runQueryFirst: {
184
- <Q extends Query.Any>(query: Q): Effect.Effect<Option.Option<Query.Type<Q>>, never, Service>;
185
- <F extends Filter.Any>(filter: F): Effect.Effect<Option.Option<Filter.Type<F>>, never, Service>;
204
+ <Q extends Query.Any>(query: Q): QueryResult.QueryResultEffect<Query.Type<Q>, never, Service>;
205
+ <F extends Filter.Any>(filter: F): QueryResult.QueryResultEffect<Filter.Type<F>, never, Service>;
186
206
  };
187
- /**
188
- * Persists schemas in the database so they replicate to other clients.
189
- * @see {@link SchemaRegistry.SchemaRegistry.register}
190
- */
191
- export declare const registerSchema: (input: SchemaRegistry.RegisterSchemaInput[]) => Effect.Effect<Type.RuntimeType[], never, Service>;
192
- /**
193
- * Creates a schema query result that can be subscribed to.
194
- */
195
- export declare const schemaQuery: <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(schemaQueryOptions?: Q & SchemaRegistry.Query) => Effect.Effect<QueryResult.QueryResult<SchemaRegistry.ExtractQueryResult<Q>>, never, Service>;
196
- /**
197
- * Executes a schema query once and returns the results.
198
- */
199
- export declare const runSchemaQuery: <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(schemaQueryOptions?: Q & SchemaRegistry.Query) => Effect.Effect<SchemaRegistry.ExtractQueryResult<Q>[], never, Service>;
200
207
  export {};
201
208
  //# sourceMappingURL=Database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../../src/Database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../../src/Database.ts"],"names":[],"mappings":"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"}
@@ -4,16 +4,26 @@ import * as Feed from './Feed';
4
4
  import * as Obj from './Obj';
5
5
  import * as View from './View';
6
6
  /**
7
- * Abstart set of objects, represented by a view, feed, or collection.
7
+ * Abstract set of objects, represented by a view, feed, or collection.
8
+ * Schema-level union of the underlying type entities (rebuilt via
9
+ * `Type.getSchema`) so this can still be consumed by Schema-side APIs such
10
+ * as `Filter.type(...)` on a union.
8
11
  */
9
- export declare const Dataset: Schema.Union<[import("./Type").Obj<{
12
+ export type Dataset = Feed.Feed | Collection.Collection | View.View;
13
+ export declare const Dataset: Schema.Union<[Schema.Schema<{
14
+ readonly name?: string | undefined;
10
15
  readonly kind?: string | undefined;
16
+ readonly namespace?: "data" | "trace" | undefined;
17
+ } & import("./Entity").OfKind<import("./internal").EntityKind.Object>, {
11
18
  readonly name?: string | undefined;
19
+ readonly kind?: string | undefined;
12
20
  readonly namespace?: "data" | "trace" | undefined;
13
- }, Schema.Struct.Fields>, import("./Type").Obj<{
21
+ } & import("./Entity").OfKind<import("./internal").EntityKind.Object>, never>, Schema.Schema<{
14
22
  readonly name?: string | undefined;
15
- readonly objects: readonly import("./internal").Ref<import("./Entity").OfKind<import("./internal").EntityKind.Object> & Obj.Unknown>[];
16
- }, Schema.Struct.Fields>, import("./Type").Obj<View.View, Schema.Struct.Fields>]>;
17
- export type Dataset = Feed.Feed | Collection.Collection | View.View;
23
+ readonly objects: readonly import("./internal").Ref<Obj.Unknown>[];
24
+ } & import("./Entity").OfKind<import("./internal").EntityKind.Object>, {
25
+ readonly name?: string | undefined;
26
+ readonly objects: readonly import("./internal").Ref<Obj.Unknown>[];
27
+ } & import("./Entity").OfKind<import("./internal").EntityKind.Object>, never>, Schema.Schema<View.View & import("./Entity").OfKind<import("./internal").EntityKind.Object>, View.View & import("./Entity").OfKind<import("./internal").EntityKind.Object>, never>]>;
18
28
  export declare const isDataset: (value: unknown) => value is Dataset;
19
29
  //# sourceMappingURL=Dataset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dataset.d.ts","sourceRoot":"","sources":["../../../src/Dataset.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;iFAA4D,CAAC;AACjF,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;AAEpE,eAAO,MAAM,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,OAIpD,CAAC"}
1
+ {"version":3,"file":"Dataset.d.ts","sourceRoot":"","sources":["../../../src/Dataset.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;AACpE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;mQAInB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,OAIpD,CAAC"}