@dxos/echo 0.8.4-main.fd6878d → 0.8.4-staging.60fe92afc8

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 (567) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +10 -11
  3. package/dist/lib/neutral/Annotation.mjs +68 -0
  4. package/dist/lib/neutral/Database.mjs +38 -0
  5. package/dist/lib/neutral/Entity.mjs +72 -0
  6. package/dist/lib/neutral/Entity.mjs.map +7 -0
  7. package/dist/lib/neutral/Err.mjs +12 -0
  8. package/dist/lib/neutral/Err.mjs.map +7 -0
  9. package/dist/lib/neutral/Feed.mjs +54 -0
  10. package/dist/lib/neutral/Feed.mjs.map +7 -0
  11. package/dist/lib/neutral/Filter.mjs +70 -0
  12. package/dist/lib/neutral/Filter.mjs.map +7 -0
  13. package/dist/lib/neutral/Format.mjs +86 -0
  14. package/dist/lib/neutral/Format.mjs.map +7 -0
  15. package/dist/lib/neutral/JsonSchema.mjs +18 -0
  16. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  17. package/dist/lib/neutral/Key.mjs +16 -0
  18. package/dist/lib/neutral/Key.mjs.map +7 -0
  19. package/dist/lib/neutral/Migration.mjs +18 -0
  20. package/dist/lib/neutral/Migration.mjs.map +7 -0
  21. package/dist/lib/neutral/Obj.mjs +122 -0
  22. package/dist/lib/neutral/Obj.mjs.map +7 -0
  23. package/dist/lib/neutral/Order.mjs +16 -0
  24. package/dist/lib/neutral/Order.mjs.map +7 -0
  25. package/dist/lib/neutral/Query.mjs +38 -0
  26. package/dist/lib/neutral/Query.mjs.map +7 -0
  27. package/dist/lib/neutral/QueryResult.mjs +2 -0
  28. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  29. package/dist/lib/neutral/Ref.mjs +25 -0
  30. package/dist/lib/neutral/Ref.mjs.map +7 -0
  31. package/dist/lib/neutral/Registry.mjs +14 -0
  32. package/dist/lib/neutral/Registry.mjs.map +7 -0
  33. package/dist/lib/neutral/Relation.mjs +97 -0
  34. package/dist/lib/neutral/Relation.mjs.map +7 -0
  35. package/dist/lib/neutral/Scope.mjs +12 -0
  36. package/dist/lib/neutral/Scope.mjs.map +7 -0
  37. package/dist/lib/neutral/Tag.mjs +32 -0
  38. package/dist/lib/neutral/Tag.mjs.map +7 -0
  39. package/dist/lib/neutral/Type.mjs +65 -0
  40. package/dist/lib/neutral/Type.mjs.map +7 -0
  41. package/dist/lib/neutral/chunk-35INCYOE.mjs +7 -0
  42. package/dist/lib/neutral/chunk-35INCYOE.mjs.map +7 -0
  43. package/dist/lib/neutral/chunk-3PBP4V4O.mjs +101 -0
  44. package/dist/lib/neutral/chunk-3PBP4V4O.mjs.map +7 -0
  45. package/dist/lib/neutral/chunk-4ZUHOTCG.mjs +184 -0
  46. package/dist/lib/neutral/chunk-4ZUHOTCG.mjs.map +7 -0
  47. package/dist/lib/neutral/chunk-5SMDBFVB.mjs +108 -0
  48. package/dist/lib/neutral/chunk-5SMDBFVB.mjs.map +7 -0
  49. package/dist/lib/neutral/chunk-5SUJPHAE.mjs +34 -0
  50. package/dist/lib/neutral/chunk-5SUJPHAE.mjs.map +7 -0
  51. package/dist/lib/neutral/chunk-6M2Z6WBH.mjs +93 -0
  52. package/dist/lib/neutral/chunk-6M2Z6WBH.mjs.map +7 -0
  53. package/dist/lib/neutral/chunk-6YDI3J37.mjs +346 -0
  54. package/dist/lib/neutral/chunk-6YDI3J37.mjs.map +7 -0
  55. package/dist/lib/neutral/chunk-7FPIAJIV.mjs +2279 -0
  56. package/dist/lib/neutral/chunk-7FPIAJIV.mjs.map +7 -0
  57. package/dist/lib/neutral/chunk-7LOUAPYZ.mjs +25 -0
  58. package/dist/lib/neutral/chunk-7LOUAPYZ.mjs.map +7 -0
  59. package/dist/lib/neutral/chunk-7PI7C4EF.mjs +747 -0
  60. package/dist/lib/neutral/chunk-7PI7C4EF.mjs.map +7 -0
  61. package/dist/lib/neutral/chunk-BBFJWWAV.mjs +51 -0
  62. package/dist/lib/neutral/chunk-BBFJWWAV.mjs.map +7 -0
  63. package/dist/lib/neutral/chunk-EVK6XBXO.mjs +56 -0
  64. package/dist/lib/neutral/chunk-EVK6XBXO.mjs.map +7 -0
  65. package/dist/lib/neutral/chunk-IGK6FN65.mjs +27 -0
  66. package/dist/lib/neutral/chunk-IGK6FN65.mjs.map +7 -0
  67. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  68. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  69. package/dist/lib/neutral/chunk-LWXVKPPW.mjs +281 -0
  70. package/dist/lib/neutral/chunk-LWXVKPPW.mjs.map +7 -0
  71. package/dist/lib/neutral/chunk-MZ7K3MLL.mjs +48 -0
  72. package/dist/lib/neutral/chunk-MZ7K3MLL.mjs.map +7 -0
  73. package/dist/lib/neutral/chunk-O6BH7EPN.mjs +94 -0
  74. package/dist/lib/neutral/chunk-O6BH7EPN.mjs.map +7 -0
  75. package/dist/lib/neutral/chunk-QQIYS74I.mjs +336 -0
  76. package/dist/lib/neutral/chunk-QQIYS74I.mjs.map +7 -0
  77. package/dist/lib/neutral/chunk-R5W6DXR4.mjs +678 -0
  78. package/dist/lib/neutral/chunk-R5W6DXR4.mjs.map +7 -0
  79. package/dist/lib/neutral/chunk-RIVWNMSF.mjs +41 -0
  80. package/dist/lib/neutral/chunk-RIVWNMSF.mjs.map +7 -0
  81. package/dist/lib/neutral/chunk-SBVFRTST.mjs +160 -0
  82. package/dist/lib/neutral/chunk-SBVFRTST.mjs.map +7 -0
  83. package/dist/lib/neutral/chunk-T6E37YIP.mjs +251 -0
  84. package/dist/lib/neutral/chunk-T6E37YIP.mjs.map +7 -0
  85. package/dist/lib/neutral/chunk-TFEWTY5A.mjs +428 -0
  86. package/dist/lib/neutral/chunk-TFEWTY5A.mjs.map +7 -0
  87. package/dist/lib/neutral/chunk-TYGKCRMK.mjs +437 -0
  88. package/dist/lib/neutral/chunk-TYGKCRMK.mjs.map +7 -0
  89. package/dist/lib/neutral/chunk-UUP46KUQ.mjs +205 -0
  90. package/dist/lib/neutral/chunk-UUP46KUQ.mjs.map +7 -0
  91. package/dist/lib/neutral/chunk-WISOH2XH.mjs +36 -0
  92. package/dist/lib/neutral/chunk-WISOH2XH.mjs.map +7 -0
  93. package/dist/lib/neutral/chunk-WTQJHC75.mjs +395 -0
  94. package/dist/lib/neutral/chunk-WTQJHC75.mjs.map +7 -0
  95. package/dist/lib/neutral/chunk-WU3GIANS.mjs +31 -0
  96. package/dist/lib/neutral/chunk-WU3GIANS.mjs.map +7 -0
  97. package/dist/lib/neutral/chunk-ZGNNFYHS.mjs +132 -0
  98. package/dist/lib/neutral/chunk-ZGNNFYHS.mjs.map +7 -0
  99. package/dist/lib/neutral/index.mjs +111 -0
  100. package/dist/lib/neutral/index.mjs.map +7 -0
  101. package/dist/lib/neutral/internal/index.mjs +539 -0
  102. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  103. package/dist/lib/neutral/meta.json +1 -0
  104. package/dist/lib/neutral/testing/index.mjs +458 -0
  105. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  106. package/dist/types/src/Annotation.d.ts +128 -0
  107. package/dist/types/src/Annotation.d.ts.map +1 -0
  108. package/dist/types/src/Annotation.test.d.ts +2 -0
  109. package/dist/types/src/Annotation.test.d.ts.map +1 -0
  110. package/dist/types/src/Collection.d.ts +15 -0
  111. package/dist/types/src/Collection.d.ts.map +1 -0
  112. package/dist/types/src/Database.d.ts +208 -0
  113. package/dist/types/src/Database.d.ts.map +1 -0
  114. package/dist/types/src/Dataset.d.ts +29 -0
  115. package/dist/types/src/Dataset.d.ts.map +1 -0
  116. package/dist/types/src/Entity.d.ts +247 -0
  117. package/dist/types/src/Entity.d.ts.map +1 -0
  118. package/dist/types/src/Entity.test.d.ts +2 -0
  119. package/dist/types/src/Entity.test.d.ts.map +1 -0
  120. package/dist/types/src/Err.d.ts +107 -0
  121. package/dist/types/src/Err.d.ts.map +1 -0
  122. package/dist/types/src/Feed.d.ts +229 -0
  123. package/dist/types/src/Feed.d.ts.map +1 -0
  124. package/dist/types/src/Filter.d.ts +175 -0
  125. package/dist/types/src/Filter.d.ts.map +1 -0
  126. package/dist/types/src/Filter.test.d.ts +2 -0
  127. package/dist/types/src/Filter.test.d.ts.map +1 -0
  128. package/dist/types/src/Format.d.ts +2 -0
  129. package/dist/types/src/Format.d.ts.map +1 -0
  130. package/dist/types/src/Hypergraph.d.ts +70 -0
  131. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  132. package/dist/types/src/Json.d.ts +33 -0
  133. package/dist/types/src/Json.d.ts.map +1 -0
  134. package/dist/types/src/Json.test.d.ts +2 -0
  135. package/dist/types/src/Json.test.d.ts.map +1 -0
  136. package/dist/types/src/JsonSchema.d.ts +16 -0
  137. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  138. package/dist/types/src/Key.d.ts +2 -1
  139. package/dist/types/src/Key.d.ts.map +1 -1
  140. package/dist/types/src/Migration.d.ts +72 -0
  141. package/dist/types/src/Migration.d.ts.map +1 -0
  142. package/dist/types/src/Obj.d.ts +514 -53
  143. package/dist/types/src/Obj.d.ts.map +1 -1
  144. package/dist/types/src/Obj.test.d.ts +2 -0
  145. package/dist/types/src/Obj.test.d.ts.map +1 -0
  146. package/dist/types/src/Order.d.ts +26 -0
  147. package/dist/types/src/Order.d.ts.map +1 -0
  148. package/dist/types/src/Query.d.ts +231 -0
  149. package/dist/types/src/Query.d.ts.map +1 -0
  150. package/dist/types/src/Query.test.d.ts +2 -0
  151. package/dist/types/src/Query.test.d.ts.map +1 -0
  152. package/dist/types/src/QueryResult.d.ts +101 -0
  153. package/dist/types/src/QueryResult.d.ts.map +1 -0
  154. package/dist/types/src/Ref.d.ts +69 -11
  155. package/dist/types/src/Ref.d.ts.map +1 -1
  156. package/dist/types/src/Registry.d.ts +131 -0
  157. package/dist/types/src/Registry.d.ts.map +1 -0
  158. package/dist/types/src/Relation.d.ts +323 -24
  159. package/dist/types/src/Relation.d.ts.map +1 -1
  160. package/dist/types/src/Relation.test.d.ts +2 -0
  161. package/dist/types/src/Relation.test.d.ts.map +1 -0
  162. package/dist/types/src/Scope.d.ts +35 -0
  163. package/dist/types/src/Scope.d.ts.map +1 -0
  164. package/dist/types/src/Tag.d.ts +34 -0
  165. package/dist/types/src/Tag.d.ts.map +1 -0
  166. package/dist/types/src/Type.d.ts +397 -107
  167. package/dist/types/src/Type.d.ts.map +1 -1
  168. package/dist/types/src/Type.test.d.ts +2 -0
  169. package/dist/types/src/Type.test.d.ts.map +1 -0
  170. package/dist/types/src/View.d.ts +65 -0
  171. package/dist/types/src/View.d.ts.map +1 -0
  172. package/dist/types/src/exemplars.test.d.ts +2 -0
  173. package/dist/types/src/exemplars.test.d.ts.map +1 -0
  174. package/dist/types/src/hierarchy.test.d.ts +2 -0
  175. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  176. package/dist/types/src/index.d.ts +22 -3
  177. package/dist/types/src/index.d.ts.map +1 -1
  178. package/dist/types/src/internal/Annotation/annotations.d.ts +272 -0
  179. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  180. package/dist/types/src/internal/Annotation/annotations.test.d.ts +2 -0
  181. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  182. package/dist/types/src/internal/Annotation/dictionary.d.ts +24 -0
  183. package/dist/types/src/internal/Annotation/dictionary.d.ts.map +1 -0
  184. package/dist/types/src/internal/Annotation/entity-dictionary.d.ts +14 -0
  185. package/dist/types/src/internal/Annotation/entity-dictionary.d.ts.map +1 -0
  186. package/dist/types/src/internal/Annotation/index.d.ts +6 -0
  187. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  188. package/dist/types/src/internal/Annotation/sorting.d.ts +24 -0
  189. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  190. package/dist/types/src/internal/Annotation/util.d.ts +48 -0
  191. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  192. package/dist/types/src/internal/Entity/api.d.ts +27 -0
  193. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  194. package/dist/types/src/internal/Entity/entity.d.ts +84 -0
  195. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  196. package/dist/types/src/internal/Entity/guard.d.ts +10 -0
  197. package/dist/types/src/internal/Entity/guard.d.ts.map +1 -0
  198. package/dist/types/src/internal/Entity/index.d.ts +10 -0
  199. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  200. package/dist/types/src/internal/Entity/model.d.ts +59 -0
  201. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  202. package/dist/types/src/internal/Entity/object.d.ts +18 -0
  203. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  204. package/dist/types/src/internal/Entity/relation.d.ts +58 -0
  205. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  206. package/dist/types/src/internal/Entity/type-kind.d.ts +24 -0
  207. package/dist/types/src/internal/Entity/type-kind.d.ts.map +1 -0
  208. package/dist/types/src/internal/Entity/type-uri.d.ts +24 -0
  209. package/dist/types/src/internal/Entity/type-uri.d.ts.map +1 -0
  210. package/dist/types/src/internal/Entity/util.d.ts +2 -0
  211. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  212. package/dist/types/src/internal/Entity/version.d.ts +42 -0
  213. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  214. package/dist/types/src/internal/Format/date.d.ts +63 -0
  215. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  216. package/dist/types/src/internal/Format/date.test.d.ts +2 -0
  217. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  218. package/dist/types/src/internal/Format/format.d.ts +33 -0
  219. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  220. package/dist/types/src/internal/Format/format.test.d.ts +2 -0
  221. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  222. package/dist/types/src/internal/Format/index.d.ts +8 -0
  223. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  224. package/dist/types/src/internal/Format/number.d.ts +31 -0
  225. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  226. package/dist/types/src/internal/Format/object.d.ts +37 -0
  227. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  228. package/dist/types/src/internal/Format/select.d.ts +13 -0
  229. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  230. package/dist/types/src/internal/Format/string.d.ts +42 -0
  231. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  232. package/dist/types/src/internal/Format/types.d.ts +72 -0
  233. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  234. package/dist/types/src/internal/JsonSchema/annotations.d.ts +19 -0
  235. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  236. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts +2 -0
  237. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  238. package/dist/types/src/internal/JsonSchema/index.d.ts +5 -0
  239. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  240. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts +7 -0
  241. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  242. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +351 -0
  243. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  244. package/dist/types/src/internal/JsonSchema/json-schema.d.ts +31 -0
  245. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  246. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts +2 -0
  247. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  248. package/dist/types/src/internal/Obj/atoms.d.ts +38 -0
  249. package/dist/types/src/internal/Obj/atoms.d.ts.map +1 -0
  250. package/dist/types/src/internal/Obj/clone.d.ts +8 -0
  251. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  252. package/dist/types/src/internal/Obj/common.d.ts +18 -0
  253. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  254. package/dist/types/src/internal/Obj/create-object.d.ts +39 -0
  255. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  256. package/dist/types/src/internal/Obj/create-object.test.d.ts +2 -0
  257. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  258. package/dist/types/src/internal/Obj/deleted.d.ts +6 -0
  259. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  260. package/dist/types/src/internal/Obj/index.d.ts +11 -0
  261. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  262. package/dist/types/src/internal/Obj/inspect.d.ts +2 -0
  263. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  264. package/dist/types/src/internal/Obj/json-serializer.d.ts +45 -0
  265. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  266. package/dist/types/src/internal/Obj/json-serializer.test.d.ts +2 -0
  267. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  268. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  269. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  270. package/dist/types/src/internal/Obj/schema-validator.test.d.ts +2 -0
  271. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  272. package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
  273. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  274. package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
  275. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  276. package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
  277. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  278. package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
  279. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  280. package/dist/types/src/internal/Obj/typed-object.test.d.ts +2 -0
  281. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  282. package/dist/types/src/internal/Query/index.d.ts +2 -0
  283. package/dist/types/src/internal/Query/index.d.ts.map +1 -0
  284. package/dist/types/src/internal/Query/pretty.d.ts +10 -0
  285. package/dist/types/src/internal/Query/pretty.d.ts.map +1 -0
  286. package/dist/types/src/internal/Ref/atoms.d.ts +10 -0
  287. package/dist/types/src/internal/Ref/atoms.d.ts.map +1 -0
  288. package/dist/types/src/internal/Ref/index.d.ts +3 -0
  289. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  290. package/dist/types/src/internal/Ref/ref-array.d.ts +21 -0
  291. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  292. package/dist/types/src/internal/Ref/ref.d.ts +262 -0
  293. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  294. package/dist/types/src/internal/Ref/ref.test.d.ts +2 -0
  295. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  296. package/dist/types/src/internal/Ref/utils.d.ts +8 -0
  297. package/dist/types/src/internal/Ref/utils.d.ts.map +1 -0
  298. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  299. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  300. package/dist/types/src/internal/Type/compose.test.d.ts +2 -0
  301. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  302. package/dist/types/src/internal/Type/index.d.ts +3 -0
  303. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  304. package/dist/types/src/internal/Type/manipulation.d.ts +9 -0
  305. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  306. package/dist/types/src/internal/Type/type-schema.d.ts +52 -0
  307. package/dist/types/src/internal/Type/type-schema.d.ts.map +1 -0
  308. package/dist/types/src/internal/common/api/index.d.ts +11 -0
  309. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  310. package/dist/types/src/internal/common/api/meta.d.ts +45 -0
  311. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  312. package/dist/types/src/internal/common/index.d.ts +4 -0
  313. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  314. package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
  315. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  316. package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -0
  317. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  318. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts +5 -0
  319. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  320. package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
  321. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  322. package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -0
  323. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  324. package/dist/types/src/internal/common/proxy/handler.test.d.ts +2 -0
  325. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  326. package/dist/types/src/internal/common/proxy/index.d.ts +14 -0
  327. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  328. package/dist/types/src/internal/common/proxy/json-serializer.d.ts +6 -0
  329. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  330. package/dist/types/src/internal/common/proxy/make-object.d.ts +20 -0
  331. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  332. package/dist/types/src/internal/common/proxy/ownership.d.ts +57 -0
  333. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  334. package/dist/types/src/internal/common/proxy/proxy-types.d.ts +18 -0
  335. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  336. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts +47 -0
  337. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  338. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
  339. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  340. package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
  341. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  342. package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
  343. package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
  344. package/dist/types/src/internal/common/proxy/schema-validator.d.ts +15 -0
  345. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  346. package/dist/types/src/internal/common/proxy/schema.test.d.ts +2 -0
  347. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  348. package/dist/types/src/internal/common/proxy/symbols.d.ts +3 -0
  349. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  350. package/dist/types/src/internal/common/proxy/typed-handler.d.ts +64 -0
  351. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  352. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts +2 -0
  353. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  354. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts +2 -0
  355. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  356. package/dist/types/src/internal/common/types/base.d.ts +27 -0
  357. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  358. package/dist/types/src/internal/common/types/entity.d.ts +94 -0
  359. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  360. package/dist/types/src/internal/common/types/index.d.ts +7 -0
  361. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  362. package/dist/types/src/internal/common/types/meta.d.ts +54 -0
  363. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  364. package/dist/types/src/internal/common/types/model-symbols.d.ts +65 -0
  365. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  366. package/dist/types/src/internal/common/types/typename.d.ts +28 -0
  367. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  368. package/dist/types/src/internal/common/types/version.d.ts +15 -0
  369. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  370. package/dist/types/src/internal/common/types/well-known-types.d.ts +11 -0
  371. package/dist/types/src/internal/common/types/well-known-types.d.ts.map +1 -0
  372. package/dist/types/src/internal/index.d.ts +11 -0
  373. package/dist/types/src/internal/index.d.ts.map +1 -0
  374. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  375. package/dist/types/src/testing/index.d.ts +4 -1
  376. package/dist/types/src/testing/index.d.ts.map +1 -1
  377. package/dist/types/src/testing/registry.d.ts +9 -0
  378. package/dist/types/src/testing/registry.d.ts.map +1 -0
  379. package/dist/types/src/testing/test-data.d.ts +18 -0
  380. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  381. package/dist/types/src/testing/test-schema.d.ts +298 -0
  382. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  383. package/dist/types/src/testing/util.d.ts +23 -0
  384. package/dist/types/src/testing/util.d.ts.map +1 -0
  385. package/dist/types/tsconfig.tsbuildinfo +1 -1
  386. package/package.json +122 -57
  387. package/src/Annotation.test.ts +439 -0
  388. package/src/Annotation.ts +202 -0
  389. package/src/Collection.ts +33 -0
  390. package/src/Database.ts +345 -0
  391. package/src/Dataset.ts +34 -0
  392. package/src/Entity.test.ts +132 -0
  393. package/src/Entity.ts +345 -0
  394. package/src/Err.ts +40 -0
  395. package/src/Feed.ts +352 -0
  396. package/src/Filter.test.ts +90 -0
  397. package/src/Filter.ts +484 -0
  398. package/src/Format.ts +5 -0
  399. package/src/Hypergraph.ts +84 -0
  400. package/src/Json.test.ts +175 -0
  401. package/src/Json.ts +103 -0
  402. package/src/JsonSchema.ts +26 -0
  403. package/src/Key.ts +4 -1
  404. package/src/Migration.ts +114 -0
  405. package/src/Obj.test.ts +641 -0
  406. package/src/Obj.ts +836 -105
  407. package/src/Order.ts +68 -0
  408. package/src/Query.test.ts +835 -0
  409. package/src/Query.ts +634 -0
  410. package/src/QueryResult.ts +132 -0
  411. package/src/Ref.ts +97 -10
  412. package/src/Registry.ts +155 -0
  413. package/src/Relation.test.ts +88 -0
  414. package/src/Relation.ts +508 -61
  415. package/src/Scope.ts +50 -0
  416. package/src/Tag.md +88 -0
  417. package/src/Tag.ts +84 -0
  418. package/src/Type.test.ts +257 -0
  419. package/src/Type.ts +643 -152
  420. package/src/View.ts +98 -0
  421. package/src/exemplars.test.ts +21 -0
  422. package/src/hierarchy.test.ts +33 -0
  423. package/src/index.ts +24 -4
  424. package/src/internal/Annotation/annotations.test.ts +165 -0
  425. package/src/internal/Annotation/annotations.ts +609 -0
  426. package/src/internal/Annotation/dictionary.ts +47 -0
  427. package/src/internal/Annotation/entity-dictionary.ts +74 -0
  428. package/src/internal/Annotation/index.ts +9 -0
  429. package/src/internal/Annotation/sorting.ts +51 -0
  430. package/src/internal/Annotation/util.ts +94 -0
  431. package/src/internal/Entity/api.ts +77 -0
  432. package/src/internal/Entity/entity.ts +277 -0
  433. package/src/internal/Entity/guard.ts +26 -0
  434. package/src/internal/Entity/index.ts +13 -0
  435. package/src/internal/Entity/model.ts +119 -0
  436. package/src/internal/Entity/object.ts +73 -0
  437. package/src/internal/Entity/relation.ts +188 -0
  438. package/src/internal/Entity/type-kind.ts +75 -0
  439. package/src/internal/Entity/type-uri.ts +92 -0
  440. package/src/internal/Entity/util.ts +33 -0
  441. package/src/internal/Entity/version.ts +96 -0
  442. package/src/internal/Format/date.test.ts +55 -0
  443. package/src/internal/Format/date.ts +213 -0
  444. package/src/internal/Format/format.test.ts +97 -0
  445. package/src/internal/Format/format.ts +54 -0
  446. package/src/internal/Format/index.ts +11 -0
  447. package/src/internal/Format/number.ts +89 -0
  448. package/src/internal/Format/object.ts +97 -0
  449. package/src/internal/Format/select.ts +18 -0
  450. package/src/internal/Format/string.ts +81 -0
  451. package/src/internal/Format/types.ts +186 -0
  452. package/src/internal/JsonSchema/annotations.ts +50 -0
  453. package/src/internal/JsonSchema/effect-schema.test.ts +143 -0
  454. package/src/internal/JsonSchema/index.ts +8 -0
  455. package/src/internal/JsonSchema/json-schema-normalize.ts +111 -0
  456. package/src/internal/JsonSchema/json-schema-type.ts +403 -0
  457. package/src/internal/JsonSchema/json-schema.test.ts +786 -0
  458. package/src/internal/JsonSchema/json-schema.ts +547 -0
  459. package/src/internal/Obj/atoms.ts +244 -0
  460. package/src/internal/Obj/clone.ts +53 -0
  461. package/src/internal/Obj/common.ts +75 -0
  462. package/src/internal/Obj/create-object.test.ts +116 -0
  463. package/src/internal/Obj/create-object.ts +140 -0
  464. package/src/internal/Obj/deleted.ts +19 -0
  465. package/src/internal/Obj/index.ts +14 -0
  466. package/src/internal/Obj/inspect.ts +48 -0
  467. package/src/internal/Obj/json-serializer.test.ts +199 -0
  468. package/src/internal/Obj/json-serializer.ts +278 -0
  469. package/src/internal/Obj/schema-validator.test.ts +182 -0
  470. package/src/internal/Obj/schema-validator.ts +6 -0
  471. package/src/internal/Obj/set-value.test.ts +258 -0
  472. package/src/internal/Obj/set-value.ts +158 -0
  473. package/src/internal/Obj/snapshot.ts +114 -0
  474. package/src/internal/Obj/typed-object.test.ts +32 -0
  475. package/src/internal/Obj/typed-object.ts +30 -0
  476. package/src/{query → internal/Query}/index.ts +1 -1
  477. package/src/internal/Query/pretty.ts +162 -0
  478. package/src/internal/Ref/atoms.ts +20 -0
  479. package/src/internal/Ref/index.ts +6 -0
  480. package/src/internal/Ref/ref-array.ts +38 -0
  481. package/src/internal/Ref/ref.test.ts +91 -0
  482. package/src/internal/Ref/ref.ts +650 -0
  483. package/src/internal/Ref/utils.ts +45 -0
  484. package/src/internal/Type/compose.test.ts +43 -0
  485. package/src/internal/Type/compose.ts +41 -0
  486. package/src/internal/Type/index.ts +6 -0
  487. package/src/internal/Type/manipulation.ts +67 -0
  488. package/src/internal/Type/type-schema.ts +60 -0
  489. package/src/internal/common/README.md +102 -0
  490. package/src/internal/common/api/index.ts +15 -0
  491. package/src/internal/common/api/meta.ts +90 -0
  492. package/src/internal/common/index.ts +7 -0
  493. package/src/internal/common/proxy/change-context.ts +138 -0
  494. package/src/internal/common/proxy/change.test.ts +527 -0
  495. package/src/internal/common/proxy/define-hidden-property.ts +14 -0
  496. package/src/internal/common/proxy/errors.ts +42 -0
  497. package/src/internal/common/proxy/event-batch.ts +44 -0
  498. package/src/internal/common/proxy/handler.test.ts +121 -0
  499. package/src/internal/common/proxy/index.ts +17 -0
  500. package/src/internal/common/proxy/json-serializer.ts +101 -0
  501. package/src/internal/common/proxy/make-object.ts +129 -0
  502. package/src/internal/common/proxy/ownership.ts +252 -0
  503. package/src/internal/common/proxy/proxy-types.ts +23 -0
  504. package/src/internal/common/proxy/proxy-utils.ts +150 -0
  505. package/src/internal/common/proxy/reactive-array.ts +71 -0
  506. package/src/internal/common/proxy/reactive.test.ts +54 -0
  507. package/src/internal/common/proxy/reactive.ts +77 -0
  508. package/src/internal/common/proxy/schema-validator.ts +244 -0
  509. package/src/internal/common/proxy/schema.test.ts +107 -0
  510. package/src/internal/common/proxy/symbols.ts +7 -0
  511. package/src/internal/common/proxy/typed-handler.test.ts +314 -0
  512. package/src/internal/common/proxy/typed-handler.ts +509 -0
  513. package/src/internal/common/proxy/typed-object.test.ts +103 -0
  514. package/src/internal/common/types/base.ts +43 -0
  515. package/src/internal/common/types/entity.ts +133 -0
  516. package/src/internal/common/types/index.ts +15 -0
  517. package/src/internal/common/types/meta.ts +109 -0
  518. package/src/internal/common/types/model-symbols.ts +89 -0
  519. package/src/internal/common/types/typename.ts +91 -0
  520. package/src/internal/common/types/version.ts +19 -0
  521. package/src/internal/common/types/well-known-types.ts +15 -0
  522. package/src/internal/index.ts +19 -0
  523. package/src/testing/api.test.ts +131 -0
  524. package/src/testing/index.ts +4 -1
  525. package/src/testing/registry.ts +44 -0
  526. package/src/testing/test-data.ts +189 -0
  527. package/src/testing/test-schema.ts +204 -0
  528. package/src/testing/util.ts +88 -0
  529. package/dist/lib/browser/chunk-NLPBTYZV.mjs +0 -647
  530. package/dist/lib/browser/chunk-NLPBTYZV.mjs.map +0 -7
  531. package/dist/lib/browser/index.mjs +0 -22
  532. package/dist/lib/browser/meta.json +0 -1
  533. package/dist/lib/browser/testing/index.mjs +0 -70
  534. package/dist/lib/browser/testing/index.mjs.map +0 -7
  535. package/dist/lib/node-esm/chunk-BQZZRMFX.mjs +0 -647
  536. package/dist/lib/node-esm/chunk-BQZZRMFX.mjs.map +0 -7
  537. package/dist/lib/node-esm/index.mjs +0 -22
  538. package/dist/lib/node-esm/meta.json +0 -1
  539. package/dist/lib/node-esm/testing/index.mjs +0 -70
  540. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  541. package/dist/types/src/experimental/database.d.ts +0 -8
  542. package/dist/types/src/experimental/database.d.ts.map +0 -1
  543. package/dist/types/src/experimental/index.d.ts +0 -1
  544. package/dist/types/src/experimental/index.d.ts.map +0 -1
  545. package/dist/types/src/experimental/queue.d.ts +0 -8
  546. package/dist/types/src/experimental/queue.d.ts.map +0 -1
  547. package/dist/types/src/experimental/space.d.ts +0 -8
  548. package/dist/types/src/experimental/space.d.ts.map +0 -1
  549. package/dist/types/src/query/dsl.d.ts +0 -218
  550. package/dist/types/src/query/dsl.d.ts.map +0 -1
  551. package/dist/types/src/query/dsl.test.d.ts +0 -2
  552. package/dist/types/src/query/dsl.test.d.ts.map +0 -1
  553. package/dist/types/src/query/index.d.ts +0 -2
  554. package/dist/types/src/query/index.d.ts.map +0 -1
  555. package/dist/types/src/testing/types.d.ts +0 -113
  556. package/dist/types/src/testing/types.d.ts.map +0 -1
  557. package/src/experimental/database.ts +0 -11
  558. package/src/experimental/index.ts +0 -7
  559. package/src/experimental/queue.ts +0 -11
  560. package/src/experimental/space.ts +0 -11
  561. package/src/query/dsl.test.ts +0 -324
  562. package/src/query/dsl.ts +0 -646
  563. package/src/test/api.test.ts +0 -173
  564. package/src/testing/types.ts +0 -91
  565. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  566. /package/dist/lib/{node-esm/index.mjs.map → neutral/Database.mjs.map} +0 -0
  567. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
@@ -0,0 +1,26 @@
1
+ import { type QueryAST } from '@dxos/echo-protocol';
2
+ export interface Order<T> {
3
+ '~Order': {
4
+ value: T;
5
+ };
6
+ ast: QueryAST.Order;
7
+ }
8
+ export type Any = Order<any>;
9
+ export declare const natural: Order<any>;
10
+ export declare const property: <T>(property: keyof T & string, direction: QueryAST.OrderDirection) => Order<T>;
11
+ /**
12
+ * Order by relevance rank (for FTS/vector search results).
13
+ * Higher rank = better match. Default direction is 'desc' (best matches first).
14
+ */
15
+ export declare const rank: <T>(direction?: QueryAST.OrderDirection) => Order<T>;
16
+ /**
17
+ * Order by the system `updatedAt` timestamp (last re-indexed). Default direction is 'desc'
18
+ * (most-recently-updated first). Mirrors {@link Filter.updated}.
19
+ */
20
+ export declare const updated: <T>(direction?: QueryAST.OrderDirection) => Order<T>;
21
+ /**
22
+ * Order by the system `createdAt` timestamp (first indexed). Default direction is 'desc'
23
+ * (most-recently-created first). Mirrors {@link Filter.created}.
24
+ */
25
+ export declare const created: <T>(direction?: QueryAST.OrderDirection) => Order<T>;
26
+ //# sourceMappingURL=Order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Order.d.ts","sourceRoot":"","sources":["../../../src/Order.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,WAAW,KAAK,CAAC,CAAC;IAEtB,QAAQ,EAAE;QAAE,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC;IAEvB,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;CACrB;AAED,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAc7B,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,GAAG,CAAuC,CAAC;AACvE,eAAO,MAAM,QAAQ,GAAI,CAAC,YAAY,MAAM,CAAC,GAAG,MAAM,aAAa,QAAQ,CAAC,cAAc,KAAG,KAAK,CAAC,CAAC,CAKhG,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,cAAa,QAAQ,CAAC,cAAc,KAAY,KAAK,CAAC,CAAC,CAIzE,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,cAAa,QAAQ,CAAC,cAAc,KAAY,KAAK,CAAC,CAAC,CAK5E,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,cAAa,QAAQ,CAAC,cAAc,KAAY,KAAK,CAAC,CAAC,CAK5E,CAAC"}
@@ -0,0 +1,231 @@
1
+ import type * as EffectArray from 'effect/Array';
2
+ import type * as Schema from 'effect/Schema';
3
+ import { type QueryAST } from '@dxos/echo-protocol';
4
+ import { type URI } from '@dxos/keys';
5
+ import * as Database from './Database';
6
+ import type * as Dataset from './Dataset';
7
+ import * as Feed from './Feed';
8
+ import * as Filter from './Filter';
9
+ import * as internal from './internal';
10
+ import type * as Order from './Order';
11
+ import type * as Ref from './Ref';
12
+ import type * as Relation from './Relation';
13
+ import type * as Type$ from './Type';
14
+ /**
15
+ * All property paths inside T that are references.
16
+ */
17
+ type RefPropKey<T> = keyof T & string;
18
+ type RefArrayElement<A> = A extends readonly (infer E)[] ? E : A extends (infer E)[] ? E : never;
19
+ /** Target entity when traversing an outgoing ref or array-of-refs property. */
20
+ type ReferenceTraversalTarget<P> = P extends Ref.Unknown ? Ref.Target<P> : P extends Ref.Unknown | undefined ? Ref.Target<Exclude<P, undefined>> : RefArrayElement<P> extends Ref.Unknown ? Ref.Target<RefArrayElement<P>> : never;
21
+ export interface Query<T> {
22
+ '~Query': {
23
+ value: T;
24
+ };
25
+ ast: QueryAST.Query;
26
+ /**
27
+ * Filter the current selection based on a filter.
28
+ * @param filter - Filter to select the objects.
29
+ * @returns Query for the selected objects.
30
+ */
31
+ 'select'(filter: Filter.Filter<T>): Query<T>;
32
+ 'select'(props: Filter.Props<T>): Query<T>;
33
+ /**
34
+ * Traverse an outgoing reference.
35
+ * @param key - Property path inside T that is a reference or optional reference.
36
+ * @returns Query for the target of the reference.
37
+ */
38
+ 'reference'<K extends RefPropKey<T>>(key: K): Query<ReferenceTraversalTarget<T[K]>>;
39
+ /**
40
+ * Find objects referencing this object.
41
+ * @param target - Schema of the referencing object. If not provided, matches any type.
42
+ * @param key - Property path inside the referencing object that is a reference. If not provided, matches any property.
43
+ * @returns Query for the referencing objects.
44
+ */
45
+ 'referencedBy'<S extends Type$.AnyEntity>(target: S | URI.URI, key: RefPropKey<Type$.InstanceType<S>>): Query<Type$.InstanceType<S>>;
46
+ 'referencedBy'<S extends Type$.AnyEntity>(target: S | URI.URI): Query<Type$.InstanceType<S>>;
47
+ 'referencedBy'(): Query<any>;
48
+ /**
49
+ * Find relations where this object is the source.
50
+ * @returns Query for the relation objects.
51
+ * @param relation - Schema of the relation.
52
+ * @param predicates - Predicates to filter the relation objects.
53
+ */
54
+ 'sourceOf'<R extends Type$.AnyRelation>(relation?: R | URI.URI, predicates?: Filter.Props<Type$.InstanceType<R>>): Query<Type$.InstanceType<R>>;
55
+ /**
56
+ * Find relations where this object is the target.
57
+ * @returns Query for the relation objects.
58
+ * @param relation - Type entity of the relation.
59
+ * @param predicates - Predicates to filter the relation objects.
60
+ */
61
+ 'targetOf'<R extends Type$.AnyRelation>(relation?: R | URI.URI, predicates?: Filter.Props<Type$.InstanceType<R>>): Query<Type$.InstanceType<R>>;
62
+ /**
63
+ * For a query for relations, get the source objects.
64
+ * @returns Query for the source objects.
65
+ */
66
+ 'source'(): Query<Relation.SourceOf<T>>;
67
+ /**
68
+ * For a query for relations, get the target objects.
69
+ * @returns Query for the target objects.
70
+ */
71
+ 'target'(): Query<Relation.TargetOf<T>>;
72
+ /**
73
+ * Get the parent object of the current selection.
74
+ * @returns Query for the parent objects.
75
+ */
76
+ 'parent'(): Query<any>;
77
+ /**
78
+ * Get all child objects of the current selection.
79
+ * @returns Query for the child objects.
80
+ */
81
+ 'children'(): Query<any>;
82
+ /**
83
+ * Order the query results.
84
+ * Orders are specified in priority order. The first order will be applied first, etc.
85
+ * @param order - Order to sort the results.
86
+ * @returns Query for the ordered results.
87
+ */
88
+ 'orderBy'(...order: EffectArray.NonEmptyArray<Order.Order<T>>): Query<T>;
89
+ /**
90
+ * Limit the number of results.
91
+ * @param limit - Maximum number of results to return.
92
+ * @returns Query for the limited results.
93
+ */
94
+ 'limit'(limit: number): Query<T>;
95
+ /**
96
+ * Query from selected databases only.
97
+ *
98
+ * Example:
99
+ *
100
+ * ```ts
101
+ * Query.select(Filter.type(Person)).from(db);
102
+ * ```
103
+ *
104
+ * @param options.includeFeeds [false] - Whether to include feeds in the query. Default is to query from automerge documents only.
105
+ */
106
+ 'from'(database: Database.Database | Database.Database[], options?: {
107
+ includeFeeds?: boolean;
108
+ }): Query<T>;
109
+ /**
110
+ * Query from selected feeds only.
111
+ *
112
+ * Example:
113
+ *
114
+ * ```ts
115
+ * Query.select(Filter.type(Person)).from(feed);
116
+ * ```
117
+ *
118
+ */
119
+ 'from'(feeds: Feed.Feed | Feed.Feed[]): Query<T>;
120
+ /**
121
+ * Query from all accessible spaces.
122
+ *
123
+ * Example:
124
+ *
125
+ * ```ts
126
+ * Query.select(Filter.type(Person)).from('all-accessible-spaces');
127
+ * ```
128
+ *
129
+ * @param options.includeFeeds [false] - Whether to include feeds in the query. Default is to query from automerge documents only.
130
+ */
131
+ 'from'(allSpaces: 'all-accessible-spaces', options?: {
132
+ includeFeeds?: boolean;
133
+ }): Query<T>;
134
+ /**
135
+ * Query from a dataset.
136
+ * Currently only feeds are supported.
137
+ *
138
+ * Example:
139
+ *
140
+ * ```ts
141
+ * Query.type(Person).from(feed);
142
+ * ```
143
+ */
144
+ 'from'(dataset: Dataset.Dataset): Query<T>;
145
+ /**
146
+ * Query from the results of another query.
147
+ *
148
+ * Example:
149
+ *
150
+ * ```ts
151
+ * Query.select(Filter.props({ foo: 'foo' })).from(Query.select(Filter.type(Contact)).reference('org'));
152
+ * ```
153
+ */
154
+ 'from'(query: Any): Query<T>;
155
+ /**
156
+ * Query from one or more raw scopes.
157
+ *
158
+ * Use the {@link Scope} constructors rather than raw tagged objects:
159
+ *
160
+ * ```ts
161
+ * Query.select(Filter.type(Type.Type)).from(Scope.space(), Scope.registry());
162
+ * ```
163
+ */
164
+ 'from'(...scopes: QueryAST.Scope[]): Query<T>;
165
+ /**
166
+ * Query from a raw scope or array of scopes.
167
+ */
168
+ 'from'(scope: QueryAST.Scope | QueryAST.Scope[]): Query<T>;
169
+ /**
170
+ * Add options to a query.
171
+ */
172
+ 'options'(options: QueryAST.QueryOptions): Query<T>;
173
+ /**
174
+ * Attach a diagnostic label for logs and tooling (execution semantics unchanged).
175
+ */
176
+ 'debugLabel'(label: string): Query<T>;
177
+ }
178
+ export type Any = Query<any>;
179
+ export type Type<Q extends Any> = Q extends Query<infer T> ? T : never;
180
+ export declare const is: (value: unknown) => value is Any;
181
+ /** Construct a query from an ast. */
182
+ export declare const fromAst: (ast: QueryAST.Query) => Any;
183
+ /**
184
+ * Select objects based on a filter.
185
+ * @param filter - Filter to select the objects.
186
+ * @returns Query for the selected objects.
187
+ */
188
+ export declare const select: <F extends Filter.Any>(filter: F) => Query<Filter.Type<F>>;
189
+ /**
190
+ * Query for objects of a given schema.
191
+ * @param schema - Schema of the objects.
192
+ * @param predicates - Predicates to filter the objects.
193
+ * @returns Query for the objects.
194
+ *
195
+ * Shorthand for: `Query.select(Filter.type(schema, predicates))`.
196
+ */
197
+ export declare const type: {
198
+ <T extends Type$.AnyEntity>(type: T, predicates?: Filter.Props<Type$.InstanceType<T>>): Query<Type$.InstanceType<T>>;
199
+ <S extends internal.UnknownTypeSchema<any, any>>(schema: S, predicates?: Filter.Props<Schema.Schema.Type<S>>): Query<Schema.Schema.Type<S>>;
200
+ <S extends Schema.Union<readonly Schema.Schema.AnyNoContext[]>>(union: S, predicates?: Filter.Props<Schema.Schema.Type<S>>): Query<Schema.Schema.Type<S>>;
201
+ (uri: URI.URI, predicates?: Filter.Props<unknown>): Query<any>;
202
+ };
203
+ /**
204
+ * Combine results of multiple queries.
205
+ * @param queries - Queries to combine.
206
+ * @returns Query for the combined results.
207
+ */
208
+ export declare const all: (...queries: Any[]) => Any;
209
+ /**
210
+ * Subtract one query from another.
211
+ * @param source - Query to subtract from.
212
+ * @param exclude - Query to subtract.
213
+ * @returns Query for the results of the source query minus the results of the exclude query.
214
+ */
215
+ export declare const without: <T>(source: Query<T>, exclude: Query<T>) => Query<T>;
216
+ /**
217
+ * Create a query scoped to a data source.
218
+ * The returned query selects everything from the source; chain `.select()` to narrow results.
219
+ *
220
+ * @param source - Data source: database, feed, 'all-accessible-spaces', or another query.
221
+ * @returns Query scoped to the given source.
222
+ */
223
+ export declare const from: (...args: [(Database.Database | Database.Database[] | Feed.Feed | Feed.Feed[] | Any | QueryAST.Scope | QueryAST.Scope[] | 'all-accessible-spaces'), {
224
+ includeFeeds?: boolean;
225
+ }?] | QueryAST.Scope[]) => Any;
226
+ /**
227
+ * Returns a human-readable string representation of a Query AST.
228
+ */
229
+ export declare const pretty: (query: Any) => string;
230
+ export {};
231
+ //# sourceMappingURL=Query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../../src/Query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Query.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Query.test.d.ts","sourceRoot":"","sources":["../../../src/Query.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ import type * as Atom from '@effect-atom/atom/Atom';
2
+ import * as Effect from 'effect/Effect';
3
+ import * as Option from 'effect/Option';
4
+ import { type CleanupFn } from '@dxos/async';
5
+ import type * as Entity from './Entity';
6
+ /**
7
+ * Individual query result entry.
8
+ */
9
+ export type Entry<T> = {
10
+ id: string;
11
+ /**
12
+ * May not be present for remote results.
13
+ */
14
+ result?: T;
15
+ match?: {
16
+ /**
17
+ * Higher means better match.
18
+ */
19
+ rank: number;
20
+ };
21
+ /**
22
+ * Query resolution metadata.
23
+ */
24
+ resolution?: {
25
+ source: 'remote' | 'local' | 'index';
26
+ /**
27
+ * Query resolution time in milliseconds.
28
+ */
29
+ time: number;
30
+ };
31
+ };
32
+ /**
33
+ * Invidual query result entry for a database Entity.
34
+ */
35
+ export type EntityEntry<T extends Entity.Unknown = Entity.Unknown> = Entry<T>;
36
+ export type RunOptions = {
37
+ timeout?: number;
38
+ };
39
+ export type SubscriptionOptions = {
40
+ /**
41
+ * Fire the callback immediately.
42
+ */
43
+ fire?: boolean;
44
+ };
45
+ export interface QueryResult<T> {
46
+ /**
47
+ * Currently available results along with their match metadata.
48
+ */
49
+ readonly entries: Entry<T>[];
50
+ /**
51
+ * Currently available results.
52
+ */
53
+ readonly results: T[];
54
+ /**
55
+ * Returns all known results.
56
+ */
57
+ run(opts?: RunOptions): Promise<T[]>;
58
+ /**
59
+ * Returns all known results along with their match metadata.
60
+ */
61
+ runEntries(opts?: RunOptions): Promise<Entry<T>[]>;
62
+ /**
63
+ * Returns currently available results synchronously.
64
+ */
65
+ runSync(): T[];
66
+ /**
67
+ * Returns currently available results synchronously along with their match metadata.
68
+ */
69
+ runSyncEntries(): Entry<T>[];
70
+ /**
71
+ * Returns first result.
72
+ */
73
+ first(opts?: RunOptions): Promise<T>;
74
+ /**
75
+ * Returns first result if there is one.
76
+ */
77
+ firstOrUndefined(opts?: RunOptions): Promise<T | undefined>;
78
+ /**
79
+ * Subscribes to changes in query results.
80
+ */
81
+ subscribe(callback?: (query: QueryResult<T>) => void, opts?: SubscriptionOptions): CleanupFn;
82
+ /**
83
+ * Self-updating atom. Updates automatically when query results change.
84
+ *
85
+ * Memoized per QueryResult instance — repeated accesses on the same instance return the same
86
+ * Atom. Safe only when the QueryResult is itself held stable across re-renders (e.g. behind a
87
+ * `useMemo`). It must NOT be used in graph-builder connectors/actions or other atom computes,
88
+ * where `db.query(...)` is called fresh on each re-evaluation: every run constructs a new
89
+ * QueryResult and so a new atom + subscription, leaking the previous ones. Use the memoized
90
+ * {@link atom} family there instead.
91
+ */
92
+ readonly atom: Atom.Atom<T[]>;
93
+ }
94
+ /**
95
+ * Effect that returns a QueryResult when evaluated, but also has shorthand methods for running the query or getting the first result.
96
+ */
97
+ export interface QueryResultEffect<T, E, R> extends Effect.Effect<QueryResult<T>, E, R> {
98
+ run: Effect.Effect<T[], E, R>;
99
+ first: Effect.Effect<Option.Option<T>, E, R>;
100
+ }
101
+ //# sourceMappingURL=QueryResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryResult.d.ts","sourceRoot":"","sources":["../../../src/QueryResult.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,IAAI,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,KAAK,MAAM,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC;IAEX,KAAK,CAAC,EAAE;QAGN;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;OAEG;IAEH,UAAU,CAAC,EAAE;QAEX,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;QAErC;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAGF,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAEtB;;OAEG;IACH,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAErC;;OAEG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEnD;;OAEG;IACH,OAAO,IAAI,CAAC,EAAE,CAAC;IAEf;;OAEG;IACH,cAAc,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7B;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAErC;;OAEG;IACH,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE5D;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAE7F;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,SAAQ,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrF,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAG9C"}
@@ -1,21 +1,79 @@
1
- import * as EchoSchema from '@dxos/echo-schema';
1
+ import type * as Schema from 'effect/Schema';
2
+ import * as SchemaAST from 'effect/SchemaAST';
3
+ import { type URI } from '@dxos/keys';
4
+ import type * as Entity from './Entity';
5
+ import type * as internal from './internal';
6
+ import * as refInternal from './internal/Ref';
2
7
  import type * as Obj from './Obj';
3
- export type Ref<T> = EchoSchema.Ref<T>;
4
- export type Any = EchoSchema.Ref<Obj.Any>;
8
+ import type * as TypeNs from './Type';
9
+ /**
10
+ * Instance type for a reference.
11
+ *
12
+ * Reference can point to any object or relation.
13
+ * References are lazy loaded.
14
+ *
15
+ * `ref.dxn` is the DXN of the referenced object.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * const taskRef: Ref<Task> = Ref.make(task);
20
+ *
21
+ * await taskRef.load(); // Returns Promise<Task>
22
+ * yield* Database.load(taskRef); // Effectful version.
23
+ *
24
+ * database.makeRef(dxn); // Create a ref from a DXN.
25
+ * ```
26
+ */
27
+ export type Ref<T> = refInternal.Ref<T>;
28
+ export type Unknown = refInternal.Ref<Obj.Unknown>;
29
+ /**
30
+ * Factory function to create a Ref schema for the given target schema.
31
+ * Use this in schema definitions to declare reference fields.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const Task = Schema.Struct({
36
+ * assignee: Ref.Ref(Person), // Creates a Ref schema
37
+ * }).pipe(Type.makeObject(DXN.make('com.example.type.task', '0.1.0')));
38
+ * ```
39
+ */
40
+ export declare const Ref: {
41
+ <S extends TypeNs.AnyObj | TypeNs.AnyRelation>(type: S): RefSchema<TypeNs.InstanceType<S> & Obj.Unknown>;
42
+ <T extends TypeNs.Type<any>>(type: T): RefSchema<TypeNs.InstanceType<T>>;
43
+ <S extends internal.UnknownTypeSchema<any, any>>(schema: S): RefSchema<Schema.Schema.Type<S> & Obj.Unknown>;
44
+ };
5
45
  export declare const Array: Readonly<{
6
- targets: <T extends EchoSchema.AnyEchoObject>(refs: readonly EchoSchema.Ref<T>[]) => T[];
7
- loadAll: <T extends EchoSchema.AnyEchoObject>(refs: readonly EchoSchema.Ref<T>[]) => Promise<T[]>;
8
- removeById: (refs: EchoSchema.Ref<EchoSchema.AnyEchoObject>[], id: EchoSchema.ObjectId) => void;
46
+ targets: <T extends internal.AnyEntity>(refs: readonly internal.Ref<T>[]) => T[];
47
+ loadAll: <T extends internal.AnyEntity>(refs: readonly internal.Ref<T>[]) => Promise<T[]>;
48
+ removeById: (refs: internal.Ref<internal.AnyEntity>[], id: import("@dxos/keys").EntityId) => void;
9
49
  }>;
50
+ /**
51
+ * TypeScript type for a Ref schema.
52
+ * This is the type of the SCHEMA itself, not the runtime ref instance.
53
+ * For the instance type, use `Ref.Ref<T>` from the Ref module.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * // Schema type annotation (rarely needed, usually inferred):
58
+ * const refSchema: Ref.RefSchema<typeof Task> = Ref.Ref(Task);
59
+ *
60
+ * // Instance type annotation (use Ref.Ref instead):
61
+ * const refInstance: Ref.Ref<Task> = Ref.make(task);
62
+ * ```
63
+ */
64
+ export interface RefSchema<T extends Entity.Unknown> extends refInternal.RefSchema<T> {
65
+ }
10
66
  /**
11
67
  * Extract reference target.
12
68
  */
13
- export type Target<R extends Any> = R extends EchoSchema.Ref<infer T> ? T : never;
69
+ export type Target<R extends Unknown> = R extends refInternal.Ref<infer T> ? T : never;
14
70
  /**
15
71
  * Reference resolver.
16
72
  */
17
- export type Resolver = EchoSchema.RefResolver;
18
- export declare const isRef: (value: unknown) => value is Any;
19
- export declare const make: <T extends EchoSchema.WithId>(object: T) => EchoSchema.Ref<T>;
20
- export declare const fromDXN: (dxn: import("@dxos/keys").DXN) => EchoSchema.Ref<any>;
73
+ export type Resolver = refInternal.RefResolver;
74
+ export declare const isRef: (value: unknown) => value is Unknown;
75
+ export declare const make: <T extends internal.AnyEntity>(object: T) => internal.Ref<T>;
76
+ export declare const fromURI: (uri: URI.URI) => refInternal.Ref<any>;
77
+ export declare const hasEntityId: (id: import("@dxos/keys").EntityId) => (ref: internal.Ref<any>) => boolean;
78
+ export declare const isRefType: (ast: SchemaAST.AST) => boolean;
21
79
  //# sourceMappingURL=Ref.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../../src/Ref.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,KAAK,GAAG,MAAM,OAAO,CAAC;AAElC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE1C,eAAO,MAAM,KAAK;;;;EAAsB,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAElF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC;AAE9C,eAAO,MAAM,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,GAA0B,CAAC;AAE5E,eAAO,MAAM,IAAI,+DAAsB,CAAC;AAGxC,eAAO,MAAM,OAAO,wDAAyB,CAAC"}
1
+ {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../../src/Ref.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,KAAK,MAAM,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,KAAK,QAAQ,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,KAAK,GAAG,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,GAAG,EAAE;IAChB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAIzG,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAKzE,CAAC,CAAC,SAAS,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;CACpF,CAAC;AAE3B,eAAO,MAAM,KAAK;;;;EAAuB,CAAC;AAE1C;;;;;;;;;;;;;GAaG;AAIH,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,OAAO,CAAE,SAAQ,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;CAAG;AAExF;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEvF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC;AAE/C,eAAO,MAAM,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,OAA+B,CAAC;AAEjF,eAAO,MAAM,IAAI,8DAAuB,CAAC;AAGzC,eAAO,MAAM,OAAO,QAAS,GAAG,CAAC,GAAG,KAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAiC,CAAC;AAE5F,eAAO,MAAM,WAAW,4EAA8B,CAAC;AAGvD,eAAO,MAAM,SAAS,QAAS,SAAS,CAAC,GAAG,KAAG,OAS9C,CAAC"}
@@ -0,0 +1,131 @@
1
+ import * as Context from 'effect/Context';
2
+ import * as Effect from 'effect/Effect';
3
+ import { type ReadOnlyEvent } from '@dxos/async';
4
+ import type * as Database from './Database';
5
+ import * as Entity from './Entity';
6
+ import type * as Filter from './Filter';
7
+ import type * as Query from './Query';
8
+ /**
9
+ * Identifier denoting an ECHO Registry.
10
+ */
11
+ export declare const TypeId: unique symbol;
12
+ export type TypeId = typeof TypeId;
13
+ /**
14
+ * Composable, in-memory registry of keyed ECHO entities.
15
+ *
16
+ * Entities are stored by id and queried via the standard ECHO Query API.
17
+ * A registry may delegate to an optional upstream registry: results from the local
18
+ * registry take precedence and upstream results fill in anything not found locally.
19
+ *
20
+ * Intended use cases include caches of schemas, operations, blueprints, routines, plugins,
21
+ * etc., sourced from 3rd-party plugins, local code, or local space objects.
22
+ *
23
+ * Types (schema-definition entities produced by `Type.makeObject` / `Type.makeRelation`) are
24
+ * stored the same way as any other entity — via `add()`. Use `list().filter(Type.isType)` to
25
+ * retrieve them.
26
+ *
27
+ * Scope: a Registry is independent of any ECHO space or Hypergraph — it is a process-local,
28
+ * in-memory cache. Wire one per space (e.g. as a Layer scoped to the space's Effect runtime)
29
+ * or share a single instance across spaces depending on the use case.
30
+ *
31
+ * The concrete implementation (and the `makeRegistry` / `registryLayer` factories) lives in
32
+ * `@dxos/echo-client`; this module declares only the interface so that the `@dxos/echo` API surface
33
+ * stays free of query-matching dependencies.
34
+ */
35
+ export interface Registry {
36
+ readonly [TypeId]: TypeId;
37
+ /**
38
+ * Stable per-instance identifier. Used to key process-local resources (e.g. memoized
39
+ * reactive atoms) to a specific registry instance, analogous to {@link Database.spaceId}.
40
+ */
41
+ readonly id: string;
42
+ /**
43
+ * Fires whenever local registry contents change (add, remove, or clear).
44
+ */
45
+ readonly changed: ReadOnlyEvent<void>;
46
+ /**
47
+ * All locally-stored entities.
48
+ * Does not include upstream entities — use {@link list} for that.
49
+ */
50
+ readonly local: readonly Entity.Unknown[];
51
+ /**
52
+ * Add or replace one or more entities in the local registry.
53
+ * Existing entries with the same id are replaced.
54
+ * Also indexes type entities by DXN for fast lookup.
55
+ */
56
+ add(entities: readonly Entity.Unknown[]): void;
57
+ /**
58
+ * Remove an entity by id from the local registry.
59
+ * @returns true if an entity was removed, false if it was not found.
60
+ */
61
+ remove(id: string): boolean;
62
+ /**
63
+ * Remove all locally-stored entities.
64
+ * Does not affect the upstream registry.
65
+ */
66
+ clear(): void;
67
+ /**
68
+ * Get an entity by id.
69
+ * Searches the local registry first, then falls back to the upstream registry.
70
+ */
71
+ get(id: string): Entity.Unknown | undefined;
72
+ /**
73
+ * Get an entity by one of its addressing URIs — a type entity by its typename DXN (or, when
74
+ * persisted, its identifier EID), a keyed entity by its `dxn:<key>[:<version>]`. Accepts legacy
75
+ * DXN forms (normalized internally). Searches the local registry first, then falls back to the
76
+ * upstream registry. Narrow the result with `Type.isType` when a type entity is required.
77
+ */
78
+ getByURI(uri: string): Entity.Unknown | undefined;
79
+ /**
80
+ * List all entities.
81
+ * Local entities take precedence over upstream entities with the same id.
82
+ */
83
+ list(): Entity.Unknown[];
84
+ /**
85
+ * Run an ECHO query against the registry's entities (implements {@link Database.Queryable}).
86
+ *
87
+ * Matching happens in-memory over {@link list}. Scope (`from`) clauses are unwrapped and
88
+ * ignored — a direct registry query always targets the registry's own entities. The primary
89
+ * way to query registry contents is still through the database (`db.query(...).from(Scope.registry())`),
90
+ * which fans the database and registry together; this method is for querying a registry directly.
91
+ *
92
+ * Only locally-evaluable AST nodes are supported: `select`, `filter`, `limit`, `from`, `options`,
93
+ * and boolean combinators. Server-side concerns (order, traversal, text/timestamp filters) throw.
94
+ */
95
+ query: Database.QueryFn;
96
+ }
97
+ /**
98
+ * Type guard for {@link Registry}.
99
+ */
100
+ export declare const isRegistry: (obj: unknown) => obj is Registry;
101
+ /**
102
+ * Options for the registry factory (`makeRegistry` in `@dxos/echo-client`).
103
+ */
104
+ export type Options = {
105
+ /**
106
+ * Optional upstream registry. Queries fall back to upstream when an entity
107
+ * is not present in the local registry.
108
+ */
109
+ upstream?: Registry;
110
+ /**
111
+ * Initial set of entities to seed the local registry with.
112
+ */
113
+ initial?: readonly Entity.Unknown[];
114
+ };
115
+ declare const Service_base: Context.TagClass<Service, "@dxos/echo/Registry/Service", Registry>;
116
+ /**
117
+ * Effect Context tag for {@link Registry}.
118
+ * Use this to inject a registry into Effect-based code.
119
+ */
120
+ export declare class Service extends Service_base {
121
+ }
122
+ /**
123
+ * Executes a query against the registry and returns the results.
124
+ * Analogous to {@link Database.query} `.run` for the in-process registry.
125
+ */
126
+ export declare const runQuery: {
127
+ <Q extends Query.Any>(query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;
128
+ <F extends Filter.Any>(filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;
129
+ };
130
+ export {};
131
+ //# sourceMappingURL=Registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../../../src/Registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,KAAK,QAAQ,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,MAAM,eAAoC,CAAC;AACxD,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,CAAC;IAE1C;;;;OAIG;IACH,GAAG,CAAC,QAAQ,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAE/C;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;OAGG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IAE5C;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IAElD;;;OAGG;IACH,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IAEzB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,QAAS,OAAO,KAAG,GAAG,IAAI,QAC8D,CAAC;AAEhH;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,CAAC;CACrC,CAAC;;AAEF;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,YAA+D;CAAG;AAE/F;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE;IACrB,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;CAKjF,CAAC"}