@dxos/echo 0.8.4-main.f9ba587 → 0.8.4-main.fcfe5033a5

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 (527) hide show
  1. package/README.md +4 -5
  2. package/dist/lib/neutral/Annotation.mjs +37 -0
  3. package/dist/lib/neutral/Database.mjs +49 -0
  4. package/dist/lib/neutral/Entity.mjs +59 -0
  5. package/dist/lib/neutral/Entity.mjs.map +7 -0
  6. package/dist/lib/neutral/Err.mjs +12 -0
  7. package/dist/lib/neutral/Err.mjs.map +7 -0
  8. package/dist/lib/neutral/Extension.mjs +18 -0
  9. package/dist/lib/neutral/Extension.mjs.map +7 -0
  10. package/dist/lib/neutral/Feed.mjs +50 -0
  11. package/dist/lib/neutral/Feed.mjs.map +7 -0
  12. package/dist/lib/neutral/Filter.mjs +72 -0
  13. package/dist/lib/neutral/Filter.mjs.map +7 -0
  14. package/dist/lib/neutral/Format.mjs +66 -0
  15. package/dist/lib/neutral/Format.mjs.map +7 -0
  16. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  17. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  18. package/dist/lib/neutral/Key.mjs +12 -0
  19. package/dist/lib/neutral/Key.mjs.map +7 -0
  20. package/dist/lib/neutral/Migration.mjs +17 -0
  21. package/dist/lib/neutral/Migration.mjs.map +7 -0
  22. package/dist/lib/neutral/Obj.mjs +113 -0
  23. package/dist/lib/neutral/Obj.mjs.map +7 -0
  24. package/dist/lib/neutral/Order.mjs +12 -0
  25. package/dist/lib/neutral/Order.mjs.map +7 -0
  26. package/dist/lib/neutral/Query.mjs +38 -0
  27. package/dist/lib/neutral/Query.mjs.map +7 -0
  28. package/dist/lib/neutral/QueryResult.mjs +2 -0
  29. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  30. package/dist/lib/neutral/Ref.mjs +24 -0
  31. package/dist/lib/neutral/Ref.mjs.map +7 -0
  32. package/dist/lib/neutral/Relation.mjs +94 -0
  33. package/dist/lib/neutral/Relation.mjs.map +7 -0
  34. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  35. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  36. package/dist/lib/neutral/Tag.mjs +29 -0
  37. package/dist/lib/neutral/Tag.mjs.map +7 -0
  38. package/dist/lib/neutral/Type.mjs +37 -0
  39. package/dist/lib/neutral/Type.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-2DJT26P7.mjs +286 -0
  41. package/dist/lib/neutral/chunk-2DJT26P7.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-3Y6LSSJR.mjs +132 -0
  43. package/dist/lib/neutral/chunk-3Y6LSSJR.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-4U7YKZUA.mjs +361 -0
  45. package/dist/lib/neutral/chunk-4U7YKZUA.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-6ZQHG2VX.mjs +27 -0
  47. package/dist/lib/neutral/chunk-6ZQHG2VX.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  49. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-B4NP3BY3.mjs +299 -0
  51. package/dist/lib/neutral/chunk-B4NP3BY3.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-BNCCGLJN.mjs +7 -0
  53. package/dist/lib/neutral/chunk-BNCCGLJN.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-DQYLD2RB.mjs +402 -0
  55. package/dist/lib/neutral/chunk-DQYLD2RB.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-F7EQRJWJ.mjs +56 -0
  57. package/dist/lib/neutral/chunk-F7EQRJWJ.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-GMAUO3CE.mjs +45 -0
  59. package/dist/lib/neutral/chunk-GMAUO3CE.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-GZQTCRJB.mjs +73 -0
  61. package/dist/lib/neutral/chunk-GZQTCRJB.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-HQSGCJPL.mjs +136 -0
  63. package/dist/lib/neutral/chunk-HQSGCJPL.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-IKAO54M4.mjs +121 -0
  65. package/dist/lib/neutral/chunk-IKAO54M4.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  67. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-LLK3YB3N.mjs +2834 -0
  69. package/dist/lib/neutral/chunk-LLK3YB3N.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-LSMJDE57.mjs +415 -0
  71. package/dist/lib/neutral/chunk-LSMJDE57.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-LZR62GOA.mjs +34 -0
  73. package/dist/lib/neutral/chunk-LZR62GOA.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  75. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-OX5WOJZ2.mjs +97 -0
  77. package/dist/lib/neutral/chunk-OX5WOJZ2.mjs.map +7 -0
  78. package/dist/lib/neutral/chunk-SRYQFSA4.mjs +396 -0
  79. package/dist/lib/neutral/chunk-SRYQFSA4.mjs.map +7 -0
  80. package/dist/lib/neutral/chunk-SZJKLCFE.mjs +787 -0
  81. package/dist/lib/neutral/chunk-SZJKLCFE.mjs.map +7 -0
  82. package/dist/lib/neutral/chunk-TBKX6JQO.mjs +67 -0
  83. package/dist/lib/neutral/chunk-TBKX6JQO.mjs.map +7 -0
  84. package/dist/lib/neutral/chunk-UBEZSGXY.mjs +51 -0
  85. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  86. package/dist/lib/neutral/chunk-UI6MWK5W.mjs +42 -0
  87. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  88. package/dist/lib/neutral/chunk-WABNQYKV.mjs +45 -0
  89. package/dist/lib/neutral/chunk-WABNQYKV.mjs.map +7 -0
  90. package/dist/lib/neutral/chunk-WOEEIQWU.mjs +159 -0
  91. package/dist/lib/neutral/chunk-WOEEIQWU.mjs.map +7 -0
  92. package/dist/lib/neutral/chunk-XL5OYQ4X.mjs +354 -0
  93. package/dist/lib/neutral/chunk-XL5OYQ4X.mjs.map +7 -0
  94. package/dist/lib/neutral/chunk-YP4SEMT6.mjs +36 -0
  95. package/dist/lib/neutral/chunk-YP4SEMT6.mjs.map +7 -0
  96. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs +50 -0
  97. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs.map +7 -0
  98. package/dist/lib/neutral/index.mjs +105 -0
  99. package/dist/lib/neutral/index.mjs.map +7 -0
  100. package/dist/lib/neutral/internal/index.mjs +474 -0
  101. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  102. package/dist/lib/neutral/meta.json +1 -0
  103. package/dist/lib/neutral/testing/index.mjs +375 -0
  104. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  105. package/dist/types/src/Annotation.d.ts +24 -0
  106. package/dist/types/src/Annotation.d.ts.map +1 -0
  107. package/dist/types/src/Collection.d.ts +16 -0
  108. package/dist/types/src/Collection.d.ts.map +1 -0
  109. package/dist/types/src/Database.d.ts +201 -0
  110. package/dist/types/src/Database.d.ts.map +1 -0
  111. package/dist/types/src/Dataset.d.ts +19 -0
  112. package/dist/types/src/Dataset.d.ts.map +1 -0
  113. package/dist/types/src/Entity.d.ts +168 -0
  114. package/dist/types/src/Entity.d.ts.map +1 -0
  115. package/dist/types/src/Entity.test.d.ts +2 -0
  116. package/dist/types/src/Entity.test.d.ts.map +1 -0
  117. package/dist/types/src/Err.d.ts +107 -0
  118. package/dist/types/src/Err.d.ts.map +1 -0
  119. package/dist/types/src/Extension.d.ts +80 -0
  120. package/dist/types/src/Extension.d.ts.map +1 -0
  121. package/dist/types/src/Extension.test.d.ts +2 -0
  122. package/dist/types/src/Extension.test.d.ts.map +1 -0
  123. package/dist/types/src/Feed.d.ts +182 -0
  124. package/dist/types/src/Feed.d.ts.map +1 -0
  125. package/dist/types/src/Filter.d.ts +149 -0
  126. package/dist/types/src/Filter.d.ts.map +1 -0
  127. package/dist/types/src/Filter.test.d.ts +2 -0
  128. package/dist/types/src/Filter.test.d.ts.map +1 -0
  129. package/dist/types/src/Format.d.ts +4 -0
  130. package/dist/types/src/Format.d.ts.map +1 -0
  131. package/dist/types/src/Hypergraph.d.ts +65 -0
  132. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  133. package/dist/types/src/JsonSchema.d.ts +16 -0
  134. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  135. package/dist/types/src/Key.d.ts +1 -0
  136. package/dist/types/src/Key.d.ts.map +1 -1
  137. package/dist/types/src/Migration.d.ts +57 -0
  138. package/dist/types/src/Migration.d.ts.map +1 -0
  139. package/dist/types/src/Obj.d.ts +473 -35
  140. package/dist/types/src/Obj.d.ts.map +1 -1
  141. package/dist/types/src/Obj.test.d.ts +2 -0
  142. package/dist/types/src/Obj.test.d.ts.map +1 -0
  143. package/dist/types/src/Order.d.ts +16 -0
  144. package/dist/types/src/Order.d.ts.map +1 -0
  145. package/dist/types/src/Query.d.ts +209 -0
  146. package/dist/types/src/Query.d.ts.map +1 -0
  147. package/dist/types/src/Query.test.d.ts +2 -0
  148. package/dist/types/src/Query.test.d.ts.map +1 -0
  149. package/dist/types/src/QueryResult.d.ts +80 -0
  150. package/dist/types/src/QueryResult.d.ts.map +1 -0
  151. package/dist/types/src/Ref.d.ts +61 -11
  152. package/dist/types/src/Ref.d.ts.map +1 -1
  153. package/dist/types/src/Relation.d.ts +290 -21
  154. package/dist/types/src/Relation.d.ts.map +1 -1
  155. package/dist/types/src/Relation.test.d.ts +2 -0
  156. package/dist/types/src/Relation.test.d.ts.map +1 -0
  157. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  158. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  159. package/dist/types/src/Tag.d.ts +18 -0
  160. package/dist/types/src/Tag.d.ts.map +1 -0
  161. package/dist/types/src/Type.d.ts +123 -100
  162. package/dist/types/src/Type.d.ts.map +1 -1
  163. package/dist/types/src/Type.test.d.ts +2 -0
  164. package/dist/types/src/Type.test.d.ts.map +1 -0
  165. package/dist/types/src/View.d.ts +68 -0
  166. package/dist/types/src/View.d.ts.map +1 -0
  167. package/dist/types/src/hierarchy.test.d.ts +2 -0
  168. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  169. package/dist/types/src/index.d.ts +21 -3
  170. package/dist/types/src/index.d.ts.map +1 -1
  171. package/dist/types/src/internal/Annotation/annotations.d.ts +231 -0
  172. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  173. package/dist/types/src/internal/Annotation/annotations.test.d.ts +2 -0
  174. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  175. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  176. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  177. package/dist/types/src/internal/Annotation/sorting.d.ts +24 -0
  178. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  179. package/dist/types/src/internal/Annotation/util.d.ts +39 -0
  180. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  181. package/dist/types/src/internal/Entity/api.d.ts +13 -0
  182. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  183. package/dist/types/src/internal/Entity/entity.d.ts +20 -0
  184. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  185. package/dist/types/src/internal/Entity/index.d.ts +8 -0
  186. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  187. package/dist/types/src/internal/Entity/model.d.ts +55 -0
  188. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  189. package/dist/types/src/internal/Entity/object.d.ts +18 -0
  190. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  191. package/dist/types/src/internal/Entity/relation.d.ts +35 -0
  192. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  193. package/dist/types/src/internal/Entity/util.d.ts +2 -0
  194. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  195. package/dist/types/src/internal/Entity/version.d.ts +42 -0
  196. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  197. package/dist/types/src/internal/Format/date.d.ts +63 -0
  198. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  199. package/dist/types/src/internal/Format/date.test.d.ts +2 -0
  200. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  201. package/dist/types/src/internal/Format/format.d.ts +32 -0
  202. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  203. package/dist/types/src/internal/Format/format.test.d.ts +2 -0
  204. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  205. package/dist/types/src/internal/Format/index.d.ts +8 -0
  206. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  207. package/dist/types/src/internal/Format/number.d.ts +31 -0
  208. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  209. package/dist/types/src/internal/Format/object.d.ts +35 -0
  210. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  211. package/dist/types/src/internal/Format/select.d.ts +13 -0
  212. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  213. package/dist/types/src/internal/Format/string.d.ts +42 -0
  214. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  215. package/dist/types/src/internal/Format/types.d.ts +72 -0
  216. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  217. package/dist/types/src/internal/JsonSchema/annotations.d.ts +19 -0
  218. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  219. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts +2 -0
  220. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  221. package/dist/types/src/internal/JsonSchema/index.d.ts +5 -0
  222. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  223. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts +7 -0
  224. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  225. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +351 -0
  226. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  227. package/dist/types/src/internal/JsonSchema/json-schema.d.ts +30 -0
  228. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  229. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts +2 -0
  230. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  231. package/dist/types/src/internal/Obj/clone.d.ts +8 -0
  232. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  233. package/dist/types/src/internal/Obj/common.d.ts +18 -0
  234. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  235. package/dist/types/src/internal/Obj/create-object.d.ts +39 -0
  236. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  237. package/dist/types/src/internal/Obj/create-object.test.d.ts +2 -0
  238. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  239. package/dist/types/src/internal/Obj/deleted.d.ts +6 -0
  240. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  241. package/dist/types/src/internal/Obj/ids.d.ts +6 -0
  242. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  243. package/dist/types/src/internal/Obj/index.d.ts +11 -0
  244. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  245. package/dist/types/src/internal/Obj/inspect.d.ts +2 -0
  246. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  247. package/dist/types/src/internal/Obj/json-serializer.d.ts +45 -0
  248. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  249. package/dist/types/src/internal/Obj/json-serializer.test.d.ts +2 -0
  250. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  251. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  252. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  253. package/dist/types/src/internal/Obj/schema-validator.test.d.ts +2 -0
  254. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  255. package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
  256. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  257. package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
  258. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  259. package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
  260. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  261. package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
  262. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  263. package/dist/types/src/internal/Obj/typed-object.test.d.ts +2 -0
  264. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  265. package/dist/types/src/internal/Query.d.ts +10 -0
  266. package/dist/types/src/internal/Query.d.ts.map +1 -0
  267. package/dist/types/src/internal/Ref/index.d.ts +3 -0
  268. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  269. package/dist/types/src/internal/Ref/ref-array.d.ts +21 -0
  270. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  271. package/dist/types/src/internal/Ref/ref.d.ts +231 -0
  272. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  273. package/dist/types/src/internal/Ref/ref.test.d.ts +2 -0
  274. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  275. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  276. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  277. package/dist/types/src/internal/Type/compose.test.d.ts +2 -0
  278. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  279. package/dist/types/src/internal/Type/echo-schema.d.ts +181 -0
  280. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  281. package/dist/types/src/internal/Type/index.d.ts +4 -0
  282. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  283. package/dist/types/src/internal/Type/manipulation.d.ts +10 -0
  284. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  285. package/dist/types/src/internal/Type/persistent-schema.d.ts +20 -0
  286. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  287. package/dist/types/src/internal/common/api/index.d.ts +11 -0
  288. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  289. package/dist/types/src/internal/common/api/meta.d.ts +42 -0
  290. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  291. package/dist/types/src/internal/common/index.d.ts +4 -0
  292. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  293. package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
  294. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  295. package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -0
  296. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  297. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts +5 -0
  298. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  299. package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
  300. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  301. package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -0
  302. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  303. package/dist/types/src/internal/common/proxy/handler.test.d.ts +2 -0
  304. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  305. package/dist/types/src/internal/common/proxy/index.d.ts +14 -0
  306. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  307. package/dist/types/src/internal/common/proxy/json-serializer.d.ts +6 -0
  308. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  309. package/dist/types/src/internal/common/proxy/make-object.d.ts +14 -0
  310. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  311. package/dist/types/src/internal/common/proxy/ownership.d.ts +57 -0
  312. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  313. package/dist/types/src/internal/common/proxy/proxy-types.d.ts +18 -0
  314. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  315. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts +47 -0
  316. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  317. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
  318. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  319. package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
  320. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  321. package/dist/types/src/internal/common/proxy/schema-validator.d.ts +15 -0
  322. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  323. package/dist/types/src/internal/common/proxy/schema.test.d.ts +2 -0
  324. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  325. package/dist/types/src/internal/common/proxy/symbols.d.ts +3 -0
  326. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  327. package/dist/types/src/internal/common/proxy/typed-handler.d.ts +48 -0
  328. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  329. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts +2 -0
  330. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  331. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts +2 -0
  332. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  333. package/dist/types/src/internal/common/types/base.d.ts +27 -0
  334. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  335. package/dist/types/src/internal/common/types/entity.d.ts +37 -0
  336. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  337. package/dist/types/src/internal/common/types/index.d.ts +7 -0
  338. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  339. package/dist/types/src/internal/common/types/meta.d.ts +33 -0
  340. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  341. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  342. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  343. package/dist/types/src/internal/common/types/typename.d.ts +21 -0
  344. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  345. package/dist/types/src/internal/common/types/version.d.ts +15 -0
  346. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  347. package/dist/types/src/internal/index.d.ts +11 -0
  348. package/dist/types/src/internal/index.d.ts.map +1 -0
  349. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  350. package/dist/types/src/testing/index.d.ts +3 -1
  351. package/dist/types/src/testing/index.d.ts.map +1 -1
  352. package/dist/types/src/testing/test-data.d.ts +18 -0
  353. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  354. package/dist/types/src/testing/test-schema.d.ts +304 -0
  355. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  356. package/dist/types/src/testing/util.d.ts +21 -0
  357. package/dist/types/src/testing/util.d.ts.map +1 -0
  358. package/dist/types/tsconfig.tsbuildinfo +1 -1
  359. package/package.json +122 -53
  360. package/src/Annotation.ts +48 -0
  361. package/src/Collection.ts +37 -0
  362. package/src/Database.ts +352 -0
  363. package/src/Dataset.ts +26 -0
  364. package/src/Entity.test.ts +22 -0
  365. package/src/Entity.ts +236 -0
  366. package/src/Err.ts +40 -0
  367. package/src/Extension.test.ts +235 -0
  368. package/src/Extension.ts +122 -0
  369. package/src/Feed.ts +304 -0
  370. package/src/Filter.test.ts +90 -0
  371. package/src/Filter.ts +454 -0
  372. package/src/Format.ts +9 -0
  373. package/src/Hypergraph.ts +79 -0
  374. package/src/JsonSchema.ts +26 -0
  375. package/src/Key.ts +3 -0
  376. package/src/Migration.ts +94 -0
  377. package/src/Obj.test.ts +539 -0
  378. package/src/Obj.ts +766 -80
  379. package/src/Order.ts +46 -0
  380. package/src/Query.test.ts +806 -0
  381. package/src/Query.ts +547 -0
  382. package/src/QueryResult.ts +106 -0
  383. package/src/Ref.ts +78 -9
  384. package/src/Relation.test.ts +88 -0
  385. package/src/Relation.ts +455 -54
  386. package/src/SchemaRegistry.ts +106 -0
  387. package/src/Tag.ts +41 -0
  388. package/src/Type.test.ts +52 -0
  389. package/src/Type.ts +168 -153
  390. package/src/View.ts +107 -0
  391. package/src/hierarchy.test.ts +33 -0
  392. package/src/index.ts +24 -4
  393. package/src/internal/Annotation/annotations.test.ts +145 -0
  394. package/src/internal/Annotation/annotations.ts +577 -0
  395. package/src/internal/Annotation/index.ts +7 -0
  396. package/src/internal/Annotation/sorting.ts +51 -0
  397. package/src/internal/Annotation/util.ts +85 -0
  398. package/src/internal/Entity/api.ts +30 -0
  399. package/src/internal/Entity/entity.ts +128 -0
  400. package/src/internal/Entity/index.ts +11 -0
  401. package/src/internal/Entity/model.ts +109 -0
  402. package/src/internal/Entity/object.ts +57 -0
  403. package/src/internal/Entity/relation.ts +154 -0
  404. package/src/internal/Entity/util.ts +33 -0
  405. package/src/internal/Entity/version.ts +96 -0
  406. package/src/internal/Format/date.test.ts +55 -0
  407. package/src/internal/Format/date.ts +217 -0
  408. package/src/internal/Format/format.test.ts +76 -0
  409. package/src/internal/Format/format.ts +54 -0
  410. package/src/internal/Format/index.ts +12 -0
  411. package/src/internal/Format/number.ts +89 -0
  412. package/src/internal/Format/object.ts +80 -0
  413. package/src/internal/Format/select.ts +18 -0
  414. package/src/internal/Format/string.ts +81 -0
  415. package/src/internal/Format/types.ts +186 -0
  416. package/src/internal/JsonSchema/annotations.ts +50 -0
  417. package/src/internal/JsonSchema/effect-schema.test.ts +143 -0
  418. package/src/internal/JsonSchema/index.ts +8 -0
  419. package/src/internal/JsonSchema/json-schema-normalize.ts +111 -0
  420. package/src/internal/JsonSchema/json-schema-type.ts +403 -0
  421. package/src/internal/JsonSchema/json-schema.test.ts +860 -0
  422. package/src/internal/JsonSchema/json-schema.ts +533 -0
  423. package/src/internal/Obj/clone.ts +48 -0
  424. package/src/internal/Obj/common.ts +75 -0
  425. package/src/internal/Obj/create-object.test.ts +114 -0
  426. package/src/internal/Obj/create-object.ts +94 -0
  427. package/src/internal/Obj/deleted.ts +19 -0
  428. package/src/internal/Obj/ids.ts +12 -0
  429. package/src/internal/Obj/index.ts +14 -0
  430. package/src/internal/Obj/inspect.ts +46 -0
  431. package/src/internal/Obj/json-serializer.test.ts +120 -0
  432. package/src/internal/Obj/json-serializer.ts +222 -0
  433. package/src/internal/Obj/schema-validator.test.ts +182 -0
  434. package/src/internal/Obj/schema-validator.ts +6 -0
  435. package/src/internal/Obj/set-value.test.ts +281 -0
  436. package/src/internal/Obj/set-value.ts +165 -0
  437. package/src/internal/Obj/snapshot.ts +105 -0
  438. package/src/internal/Obj/typed-object.test.ts +34 -0
  439. package/src/internal/Obj/typed-object.ts +30 -0
  440. package/src/internal/Query.ts +134 -0
  441. package/src/internal/Ref/index.ts +6 -0
  442. package/src/internal/Ref/ref-array.ts +38 -0
  443. package/src/internal/Ref/ref.test.ts +100 -0
  444. package/src/internal/Ref/ref.ts +572 -0
  445. package/src/internal/Type/compose.test.ts +41 -0
  446. package/src/internal/Type/compose.ts +41 -0
  447. package/src/internal/Type/echo-schema.ts +423 -0
  448. package/src/internal/Type/index.ts +7 -0
  449. package/src/internal/Type/manipulation.ts +92 -0
  450. package/src/internal/Type/persistent-schema.ts +33 -0
  451. package/src/internal/common/README.md +102 -0
  452. package/src/internal/common/api/index.ts +15 -0
  453. package/src/internal/common/api/meta.ts +88 -0
  454. package/src/internal/common/index.ts +7 -0
  455. package/src/internal/common/proxy/change-context.ts +138 -0
  456. package/src/internal/common/proxy/change.test.ts +519 -0
  457. package/src/internal/common/proxy/define-hidden-property.ts +14 -0
  458. package/src/internal/common/proxy/errors.ts +42 -0
  459. package/src/internal/common/proxy/event-batch.ts +44 -0
  460. package/src/internal/common/proxy/handler.test.ts +121 -0
  461. package/src/internal/common/proxy/index.ts +17 -0
  462. package/src/internal/common/proxy/json-serializer.ts +90 -0
  463. package/src/internal/common/proxy/make-object.ts +105 -0
  464. package/src/internal/common/proxy/ownership.ts +252 -0
  465. package/src/internal/common/proxy/proxy-types.ts +23 -0
  466. package/src/internal/common/proxy/proxy-utils.ts +150 -0
  467. package/src/internal/common/proxy/reactive-array.ts +71 -0
  468. package/src/internal/common/proxy/reactive.ts +68 -0
  469. package/src/internal/common/proxy/schema-validator.ts +244 -0
  470. package/src/internal/common/proxy/schema.test.ts +145 -0
  471. package/src/internal/common/proxy/symbols.ts +7 -0
  472. package/src/internal/common/proxy/typed-handler.test.ts +313 -0
  473. package/src/internal/common/proxy/typed-handler.ts +447 -0
  474. package/src/internal/common/proxy/typed-object.test.ts +115 -0
  475. package/src/internal/common/types/base.ts +43 -0
  476. package/src/internal/common/types/entity.ts +54 -0
  477. package/src/internal/common/types/index.ts +10 -0
  478. package/src/internal/common/types/meta.ts +67 -0
  479. package/src/internal/common/types/model-symbols.ts +69 -0
  480. package/src/internal/common/types/typename.ts +55 -0
  481. package/src/internal/common/types/version.ts +19 -0
  482. package/src/internal/index.ts +17 -0
  483. package/src/testing/api.test.ts +125 -0
  484. package/src/testing/index.ts +3 -1
  485. package/src/testing/test-data.ts +129 -0
  486. package/src/testing/test-schema.ts +240 -0
  487. package/src/testing/util.ts +85 -0
  488. package/dist/lib/browser/chunk-SVSJEELN.mjs +0 -619
  489. package/dist/lib/browser/chunk-SVSJEELN.mjs.map +0 -7
  490. package/dist/lib/browser/index.mjs +0 -22
  491. package/dist/lib/browser/meta.json +0 -1
  492. package/dist/lib/browser/testing/index.mjs +0 -70
  493. package/dist/lib/browser/testing/index.mjs.map +0 -7
  494. package/dist/lib/node-esm/chunk-53HXWYR6.mjs +0 -619
  495. package/dist/lib/node-esm/chunk-53HXWYR6.mjs.map +0 -7
  496. package/dist/lib/node-esm/index.mjs +0 -22
  497. package/dist/lib/node-esm/meta.json +0 -1
  498. package/dist/lib/node-esm/testing/index.mjs +0 -70
  499. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  500. package/dist/types/src/experimental/database.d.ts +0 -8
  501. package/dist/types/src/experimental/database.d.ts.map +0 -1
  502. package/dist/types/src/experimental/index.d.ts +0 -1
  503. package/dist/types/src/experimental/index.d.ts.map +0 -1
  504. package/dist/types/src/experimental/queue.d.ts +0 -8
  505. package/dist/types/src/experimental/queue.d.ts.map +0 -1
  506. package/dist/types/src/experimental/space.d.ts +0 -8
  507. package/dist/types/src/experimental/space.d.ts.map +0 -1
  508. package/dist/types/src/query/dsl.d.ts +0 -218
  509. package/dist/types/src/query/dsl.d.ts.map +0 -1
  510. package/dist/types/src/query/dsl.test.d.ts +0 -2
  511. package/dist/types/src/query/dsl.test.d.ts.map +0 -1
  512. package/dist/types/src/query/index.d.ts +0 -2
  513. package/dist/types/src/query/index.d.ts.map +0 -1
  514. package/dist/types/src/testing/types.d.ts +0 -113
  515. package/dist/types/src/testing/types.d.ts.map +0 -1
  516. package/src/experimental/database.ts +0 -11
  517. package/src/experimental/index.ts +0 -7
  518. package/src/experimental/queue.ts +0 -11
  519. package/src/experimental/space.ts +0 -11
  520. package/src/query/dsl.test.ts +0 -323
  521. package/src/query/dsl.ts +0 -646
  522. package/src/query/index.ts +0 -5
  523. package/src/test/api.test.ts +0 -173
  524. package/src/testing/types.ts +0 -91
  525. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  526. /package/dist/lib/{node-esm/index.mjs.map → neutral/Database.mjs.map} +0 -0
  527. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
@@ -0,0 +1,354 @@
1
+ import {
2
+ isRef
3
+ } from "./chunk-GMAUO3CE.mjs";
4
+ import {
5
+ getDXN,
6
+ prettyFilter
7
+ } from "./chunk-LLK3YB3N.mjs";
8
+ import {
9
+ getTypeDXNFromSpecifier
10
+ } from "./chunk-4U7YKZUA.mjs";
11
+ import {
12
+ __export
13
+ } from "./chunk-J5LGTIGS.mjs";
14
+
15
+ // src/Filter.ts
16
+ var Filter_exports = {};
17
+ __export(Filter_exports, {
18
+ and: () => and,
19
+ between: () => between,
20
+ childOf: () => childOf,
21
+ contains: () => contains,
22
+ created: () => created,
23
+ eq: () => eq,
24
+ everything: () => everything,
25
+ foreignKeys: () => foreignKeys,
26
+ fromAst: () => fromAst,
27
+ gt: () => gt,
28
+ gte: () => gte,
29
+ id: () => id,
30
+ in: () => in$,
31
+ is: () => is,
32
+ lt: () => lt,
33
+ lte: () => lte,
34
+ neq: () => neq,
35
+ not: () => not,
36
+ nothing: () => nothing,
37
+ or: () => or,
38
+ pretty: () => pretty,
39
+ props: () => props,
40
+ tag: () => tag,
41
+ text: () => text,
42
+ type: () => type,
43
+ typeDXN: () => typeDXN,
44
+ typename: () => typename,
45
+ updated: () => updated
46
+ });
47
+ import * as Match from "effect/Match";
48
+ import * as Schema from "effect/Schema";
49
+ import * as SchemaAST from "effect/SchemaAST";
50
+ import { assertArgument } from "@dxos/invariant";
51
+ import { DXN, ObjectId } from "@dxos/keys";
52
+ var FilterClass = class _FilterClass {
53
+ ast;
54
+ static "variance" = {};
55
+ constructor(ast) {
56
+ this.ast = ast;
57
+ }
58
+ "~Filter" = _FilterClass.variance;
59
+ };
60
+ var is = (value2) => {
61
+ return typeof value2 === "object" && value2 !== null && "~Filter" in value2;
62
+ };
63
+ var fromAst = (ast) => {
64
+ return new FilterClass(ast);
65
+ };
66
+ var everything = () => {
67
+ return new FilterClass({
68
+ type: "object",
69
+ typename: null,
70
+ props: {}
71
+ });
72
+ };
73
+ var nothing = () => {
74
+ return new FilterClass({
75
+ type: "not",
76
+ filter: {
77
+ type: "object",
78
+ typename: null,
79
+ props: {}
80
+ }
81
+ });
82
+ };
83
+ var id = (...ids) => {
84
+ assertArgument(ids.every((id2) => ObjectId.isValid(id2)), "ids", "ids must be valid");
85
+ if (ids.length === 0) {
86
+ return nothing();
87
+ }
88
+ return new FilterClass({
89
+ type: "object",
90
+ typename: null,
91
+ id: ids,
92
+ props: {}
93
+ });
94
+ };
95
+ var type = (schema, props2) => {
96
+ if (Schema.isSchema(schema) && SchemaAST.isUnion(schema.ast)) {
97
+ const typenames = schema.ast.types.map((type2) => getTypeDXNFromSpecifier(Schema.make(type2)));
98
+ return new FilterClass({
99
+ type: "or",
100
+ filters: typenames.map((typename2) => ({
101
+ type: "object",
102
+ typename: typename2.toString(),
103
+ props: {}
104
+ }))
105
+ });
106
+ }
107
+ const dxn = getTypeDXNFromSpecifier(schema);
108
+ return new FilterClass({
109
+ type: "object",
110
+ typename: dxn.toString(),
111
+ ...propsFilterToAst(props2 ?? {})
112
+ });
113
+ };
114
+ var typename = (typename2) => {
115
+ assertArgument(!typename2.startsWith("dxn:"), "typename", "Typename must no be qualified");
116
+ return new FilterClass({
117
+ type: "object",
118
+ typename: DXN.fromTypename(typename2).toString(),
119
+ props: {}
120
+ });
121
+ };
122
+ var typeDXN = (dxn) => {
123
+ return new FilterClass({
124
+ type: "object",
125
+ typename: dxn.toString(),
126
+ props: {}
127
+ });
128
+ };
129
+ var tag = (tag2) => {
130
+ return new FilterClass({
131
+ type: "tag",
132
+ tag: tag2
133
+ });
134
+ };
135
+ var props = (props2) => {
136
+ return new FilterClass({
137
+ type: "object",
138
+ typename: null,
139
+ ...propsFilterToAst(props2)
140
+ });
141
+ };
142
+ var text = (text2, options) => {
143
+ return new FilterClass({
144
+ type: "text-search",
145
+ text: text2,
146
+ searchKind: options?.type
147
+ });
148
+ };
149
+ var foreignKeys = (schema, keys) => {
150
+ const dxn = getTypeDXNFromSpecifier(schema);
151
+ return new FilterClass({
152
+ type: "object",
153
+ typename: dxn.toString(),
154
+ props: {},
155
+ foreignKeys: keys
156
+ });
157
+ };
158
+ var eq = (value2) => {
159
+ if (!isRef(value2) && typeof value2 === "object" && value2 !== null) {
160
+ throw new TypeError("Cannot use object as a value for eq filter");
161
+ }
162
+ return new FilterClass({
163
+ type: "compare",
164
+ operator: "eq",
165
+ value: isRef(value2) ? value2.noInline().encode() : value2
166
+ });
167
+ };
168
+ var neq = (value2) => {
169
+ return new FilterClass({
170
+ type: "compare",
171
+ operator: "neq",
172
+ value: value2
173
+ });
174
+ };
175
+ var gt = (value2) => {
176
+ return new FilterClass({
177
+ type: "compare",
178
+ operator: "gt",
179
+ value: value2
180
+ });
181
+ };
182
+ var gte = (value2) => {
183
+ return new FilterClass({
184
+ type: "compare",
185
+ operator: "gte",
186
+ value: value2
187
+ });
188
+ };
189
+ var lt = (value2) => {
190
+ return new FilterClass({
191
+ type: "compare",
192
+ operator: "lt",
193
+ value: value2
194
+ });
195
+ };
196
+ var lte = (value2) => {
197
+ return new FilterClass({
198
+ type: "compare",
199
+ operator: "lte",
200
+ value: value2
201
+ });
202
+ };
203
+ var in$ = (...values) => {
204
+ return new FilterClass({
205
+ type: "in",
206
+ values
207
+ });
208
+ };
209
+ var contains = (value2) => {
210
+ return new FilterClass({
211
+ type: "contains",
212
+ value: value2
213
+ });
214
+ };
215
+ var between = (from, to) => {
216
+ return new FilterClass({
217
+ type: "range",
218
+ from,
219
+ to
220
+ });
221
+ };
222
+ var _toUnixMs = (date) => typeof date === "number" ? date : date.getTime();
223
+ var _timeRangeFilter = (field, range) => {
224
+ const filters = [];
225
+ if (range.after != null) {
226
+ filters.push(new FilterClass({
227
+ type: "timestamp",
228
+ field,
229
+ operator: "gte",
230
+ value: _toUnixMs(range.after)
231
+ }));
232
+ }
233
+ if (range.before != null) {
234
+ filters.push(new FilterClass({
235
+ type: "timestamp",
236
+ field,
237
+ operator: "lte",
238
+ value: _toUnixMs(range.before)
239
+ }));
240
+ }
241
+ if (filters.length === 0) {
242
+ return everything();
243
+ }
244
+ return filters.length === 1 ? filters[0] : and(...filters);
245
+ };
246
+ var updated = (range) => _timeRangeFilter("updatedAt", range);
247
+ var created = (range) => _timeRangeFilter("createdAt", range);
248
+ var childOf = (parents, options) => {
249
+ const items = Array.isArray(parents) ? parents : [
250
+ parents
251
+ ];
252
+ const dxns = items.map((item) => {
253
+ if (isRef(item)) {
254
+ return item.dxn.toString();
255
+ }
256
+ return getDXN(item).toString();
257
+ });
258
+ return new FilterClass({
259
+ type: "child-of",
260
+ parents: dxns,
261
+ transitive: options?.transitive ?? true
262
+ });
263
+ };
264
+ var not = (filter) => {
265
+ return new FilterClass({
266
+ type: "not",
267
+ filter: filter.ast
268
+ });
269
+ };
270
+ var and = (...filters) => {
271
+ return new FilterClass({
272
+ type: "and",
273
+ filters: filters.map((f) => f.ast)
274
+ });
275
+ };
276
+ var or = (...filters) => {
277
+ return new FilterClass({
278
+ type: "or",
279
+ filters: filters.map((f) => f.ast)
280
+ });
281
+ };
282
+ var propsFilterToAst = (predicates) => {
283
+ let idFilter;
284
+ if ("id" in predicates) {
285
+ assertArgument(typeof predicates.id === "string" || Array.isArray(predicates.id), "predicates.id", "invalid id filter");
286
+ idFilter = typeof predicates.id === "string" ? [
287
+ predicates.id
288
+ ] : predicates.id;
289
+ Schema.Array(ObjectId).pipe(Schema.validateSync)(idFilter);
290
+ }
291
+ return {
292
+ id: idFilter,
293
+ props: Object.fromEntries(Object.entries(predicates).filter(([prop, _value]) => prop !== "id").map(([prop, predicate]) => [
294
+ prop,
295
+ processPredicate(predicate)
296
+ ]))
297
+ };
298
+ };
299
+ var processPredicate = (predicate) => {
300
+ return Match.value(predicate).pipe(
301
+ Match.withReturnType(),
302
+ Match.when(is, (predicate2) => predicate2.ast),
303
+ // TODO(wittjosiah): Add support for array predicates.
304
+ Match.when(Array.isArray, (_predicate) => {
305
+ throw new Error("Array predicates are not yet supported.");
306
+ }),
307
+ Match.when((predicate2) => !isRef(predicate2) && typeof predicate2 === "object" && predicate2 !== null, (predicate2) => {
308
+ const nestedProps = Object.fromEntries(Object.entries(predicate2).map(([key, value2]) => [
309
+ key,
310
+ processPredicate(value2)
311
+ ]));
312
+ return {
313
+ type: "object",
314
+ typename: null,
315
+ props: nestedProps
316
+ };
317
+ }),
318
+ Match.orElse((value2) => eq(value2).ast)
319
+ );
320
+ };
321
+ var pretty = (filter) => prettyFilter(filter.ast);
322
+
323
+ export {
324
+ is,
325
+ fromAst,
326
+ everything,
327
+ nothing,
328
+ id,
329
+ type,
330
+ typename,
331
+ typeDXN,
332
+ tag,
333
+ props,
334
+ text,
335
+ foreignKeys,
336
+ eq,
337
+ neq,
338
+ gt,
339
+ gte,
340
+ lt,
341
+ lte,
342
+ in$,
343
+ contains,
344
+ between,
345
+ updated,
346
+ created,
347
+ childOf,
348
+ not,
349
+ and,
350
+ or,
351
+ pretty,
352
+ Filter_exports
353
+ };
354
+ //# sourceMappingURL=chunk-XL5OYQ4X.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Filter.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Match from 'effect/Match';\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\nimport type * as Types from 'effect/Types';\n\nimport { type ForeignKey, type QueryAST } from '@dxos/echo-protocol';\nimport { assertArgument } from '@dxos/invariant';\nimport { DXN, ObjectId } from '@dxos/keys';\n\nimport * as internal from './internal';\nimport type * as Obj from './Obj';\nimport * as Ref from './Ref';\n\nexport interface Filter<T> {\n // TODO(dmaretskyi): See new effect-schema approach to variance.\n '~Filter': { value: Types.Covariant<T> };\n\n ast: QueryAST.Filter;\n}\n\nexport type Props<T> = {\n // Predicate or a value as a shorthand for `eq`.\n [K in keyof T & string]?: Filter<T[K]> | T[K];\n};\n\nexport type Any = Filter<any>;\n\nexport type Type<F extends Any> = F extends Filter<infer T> ? T : never;\n\nclass FilterClass implements Any {\n private static 'variance': Any['~Filter'] = {} as Any['~Filter'];\n\n constructor(public readonly ast: QueryAST.Filter) {}\n\n '~Filter' = FilterClass.variance;\n}\n\nexport const is = (value: unknown): value is Any => {\n return typeof value === 'object' && value !== null && '~Filter' in value;\n};\n\n/** Construct a filter from an ast. */\nexport const fromAst = (ast: QueryAST.Filter): Any => {\n return new FilterClass(ast);\n};\n\n/**\n * Filter that matches all objects.\n */\n// TODO(dmaretskyi): `Entity.Any` would be more type-safe, but causes annoying errors in existing code\nexport const everything = (): FilterClass => {\n return new FilterClass({\n type: 'object',\n typename: null,\n props: {},\n });\n};\n\n/**\n * Filter that matches no objects.\n */\nexport const nothing = (): FilterClass => {\n return new FilterClass({\n type: 'not',\n filter: {\n type: 'object',\n typename: null,\n props: {},\n },\n });\n};\n\n/*\n * Filter by ObjectId.\n */\nexport const id = (...ids: ObjectId[]): Any => {\n assertArgument(\n ids.every((id) => ObjectId.isValid(id)),\n 'ids',\n 'ids must be valid',\n );\n\n if (ids.length === 0) {\n return nothing();\n }\n\n return new FilterClass({\n type: 'object',\n typename: null,\n id: ids,\n props: {},\n });\n};\n\n/**\n * Filter by type.\n */\nexport const type = <S extends Schema.Schema.All>(\n schema: S | string,\n props?: Props<Schema.Schema.Type<S>>,\n): Filter<Schema.Schema.Type<S>> => {\n if (Schema.isSchema(schema) && SchemaAST.isUnion(schema.ast)) {\n const typenames = schema.ast.types.map((type) => internal.getTypeDXNFromSpecifier(Schema.make(type)));\n return new FilterClass({\n type: 'or',\n filters: typenames.map((typename) => ({\n type: 'object',\n typename: typename.toString(),\n props: {},\n })),\n });\n }\n\n const dxn = internal.getTypeDXNFromSpecifier(schema);\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n ...propsFilterToAst(props ?? {}),\n });\n};\n\n/**\n * Filter by non-qualified typename.\n */\nexport const typename = (typename: string): Any => {\n assertArgument(!typename.startsWith('dxn:'), 'typename', 'Typename must no be qualified');\n return new FilterClass({\n type: 'object',\n typename: DXN.fromTypename(typename).toString(),\n props: {},\n });\n};\n\n/**\n * Filter by fully qualified type DXN.\n */\nexport const typeDXN = (dxn: DXN): Any => {\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n props: {},\n });\n};\n\n/**\n * Filter by tag.\n */\nexport const tag = (tag: string): Any => {\n return new FilterClass({\n type: 'tag',\n tag,\n });\n};\n\n/**\n * Filter by properties.\n */\nexport const props = <T>(props: Props<T>): Filter<T> => {\n return new FilterClass({\n type: 'object',\n typename: null,\n ...propsFilterToAst(props),\n });\n};\n\nexport type TextSearchOptions = {\n // TODO(dmaretskyi): Hybrid search.\n type?: 'full-text' | 'vector';\n};\n\n/**\n * Full-text or vector search.\n */\nexport const text = (\n // TODO(dmaretskyi): Consider passing a vector here, but really the embedding should be done on the query-executor side.\n text: string,\n options?: TextSearchOptions,\n): Any => {\n return new FilterClass({\n type: 'text-search',\n text,\n searchKind: options?.type,\n });\n};\n\n/**\n * Filter by foreign keys.\n */\nexport const foreignKeys = <S extends Schema.Schema.All>(\n schema: S | string,\n keys: ForeignKey[],\n): Filter<Schema.Schema.Type<S>> => {\n const dxn = internal.getTypeDXNFromSpecifier(schema);\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n props: {},\n foreignKeys: keys,\n });\n};\n\n/**\n * Predicate for property to be equal to the provided value.\n */\nexport const eq = <T>(value: T): Filter<T | undefined> => {\n if (!Ref.isRef(value) && typeof value === 'object' && value !== null) {\n throw new TypeError('Cannot use object as a value for eq filter');\n }\n\n return new FilterClass({\n type: 'compare',\n operator: 'eq',\n value: Ref.isRef(value) ? value.noInline().encode() : value,\n });\n};\n\n/**\n * Predicate for property to be not equal to the provided value.\n */\nexport const neq = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'neq',\n value,\n });\n};\n\n/**\n * Predicate for property to be greater than the provided value.\n */\nexport const gt = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'gt',\n value,\n });\n};\n\n/**\n * Predicate for property to be greater than or equal to the provided value.\n */\nexport const gte = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'gte',\n value,\n });\n};\n\n/**\n * Predicate for property to be less than the provided value.\n */\nexport const lt = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'lt',\n value,\n });\n};\n\n/**\n * Predicate for property to be less than or equal to the provided value.\n */\nexport const lte = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'lte',\n value,\n });\n};\n\n/**\n * Predicate for property to be in the provided array.\n * @param values - Values to check against.\n */\nconst in$ = <T>(...values: T[]): Filter<T> => {\n return new FilterClass({\n type: 'in',\n values,\n });\n};\nexport { in$ as in };\n\n/**\n * Predicate for an array property to contain the provided value.\n * @param value - Value to check against.\n */\nexport const contains = <T>(value: T): Filter<readonly T[] | undefined> => {\n return new FilterClass({\n type: 'contains',\n value,\n });\n};\n\n/**\n * Predicate for property to be in the provided range.\n * @param from - Start of the range (inclusive).\n * @param to - End of the range (exclusive).\n */\nexport const between = <T>(from: T, to: T): Filter<T> => {\n return new FilterClass({\n type: 'range',\n from,\n to,\n });\n};\n\ntype TimeRange = { after?: Date | number; before?: Date | number };\n\nconst _toUnixMs = (date: Date | number): number => (typeof date === 'number' ? date : date.getTime());\n\nconst _timeRangeFilter = (field: 'updatedAt' | 'createdAt', range: TimeRange): Any => {\n const filters: Any[] = [];\n if (range.after != null) {\n filters.push(new FilterClass({ type: 'timestamp', field, operator: 'gte', value: _toUnixMs(range.after) }));\n }\n if (range.before != null) {\n filters.push(new FilterClass({ type: 'timestamp', field, operator: 'lte', value: _toUnixMs(range.before) }));\n }\n if (filters.length === 0) {\n return everything();\n }\n return filters.length === 1 ? filters[0] : and(...filters);\n};\n\n/**\n * Filter objects by updatedAt timestamp.\n */\nexport const updated = (range: TimeRange): Any => _timeRangeFilter('updatedAt', range);\n\n/**\n * Filter objects by createdAt timestamp.\n */\nexport const created = (range: TimeRange): Any => _timeRangeFilter('createdAt', range);\n\nexport type ChildOfOptions = {\n /** Whether to match transitively (grandchildren, etc.). Defaults to true. */\n transitive?: boolean;\n};\n\n/**\n * Filter objects that are children of the specified parent(s).\n * Accepts ECHO objects, Refs, or arrays of either.\n * Refs are resolved to DXNs without loading; objects use {@link Obj.getDXN}.\n * With transitive=true (default), also matches grandchildren and beyond.\n */\nexport const childOf = (\n parents: Obj.Unknown | Ref.Unknown | readonly (Obj.Unknown | Ref.Unknown)[],\n options?: ChildOfOptions,\n): Any => {\n const items = Array.isArray(parents) ? parents : [parents];\n const dxns = items.map((item) => {\n if (Ref.isRef(item)) {\n return item.dxn.toString();\n }\n return internal.getDXN(item).toString();\n });\n return new FilterClass({\n type: 'child-of',\n parents: dxns,\n transitive: options?.transitive ?? true,\n });\n};\n\n/**\n * Negate the filter.\n */\nexport const not = <F extends Any>(filter: F): Filter<Type<F>> => {\n return new FilterClass({\n type: 'not',\n filter: filter.ast,\n });\n};\n\n/**\n * Combine filters with a logical AND.\n */\nexport const and = <Filters extends readonly Any[]>(...filters: Filters): Filter<Type<Filters[number]>> => {\n return new FilterClass({\n type: 'and',\n filters: filters.map((f) => f.ast),\n });\n};\n\n/**\n * Combine filters with a logical OR.\n */\nexport const or = <Filters extends readonly Any[]>(...filters: Filters): Filter<Type<Filters[number]>> => {\n return new FilterClass({\n type: 'or',\n filters: filters.map((f) => f.ast),\n });\n};\n\n// TODO(dmaretskyi): Add `Filter.match` to support pattern matching on string props.\n\nconst propsFilterToAst = (predicates: Props<any>): Pick<QueryAST.FilterObject, 'id' | 'props'> => {\n let idFilter: readonly ObjectId[] | undefined;\n if ('id' in predicates) {\n assertArgument(\n typeof predicates.id === 'string' || Array.isArray(predicates.id),\n 'predicates.id',\n 'invalid id filter',\n );\n idFilter = typeof predicates.id === 'string' ? [predicates.id] : predicates.id;\n Schema.Array(ObjectId).pipe(Schema.validateSync)(idFilter);\n }\n\n return {\n id: idFilter,\n props: Object.fromEntries(\n Object.entries(predicates)\n .filter(([prop, _value]) => prop !== 'id')\n .map(([prop, predicate]) => [prop, processPredicate(predicate)]),\n ) as Record<string, QueryAST.Filter>,\n };\n};\n\nconst processPredicate = (predicate: any): QueryAST.Filter => {\n return Match.value(predicate).pipe(\n Match.withReturnType<QueryAST.Filter>(),\n Match.when(is, (predicate) => predicate.ast),\n // TODO(wittjosiah): Add support for array predicates.\n Match.when(Array.isArray, (_predicate) => {\n throw new Error('Array predicates are not yet supported.');\n }),\n Match.when(\n (predicate: any) => !Ref.isRef(predicate) && typeof predicate === 'object' && predicate !== null,\n (predicate) => {\n const nestedProps = Object.fromEntries(\n Object.entries(predicate).map(([key, value]) => [key, processPredicate(value)]),\n );\n\n return {\n type: 'object',\n typename: null,\n props: nestedProps,\n };\n },\n ),\n Match.orElse((value) => eq(value).ast),\n );\n};\n\n/**\n * Returns a human-readable string representation of a Filter AST.\n */\nexport const pretty = (filter: Any): string => internal.prettyFilter(filter.ast);\n"],
5
+ "mappings": "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",
6
+ "names": ["Match", "Schema", "SchemaAST", "assertArgument", "DXN", "ObjectId", "FilterClass", "ast", "variance", "is", "value", "fromAst", "everything", "type", "typename", "props", "nothing", "filter", "id", "ids", "assertArgument", "every", "ObjectId", "isValid", "length", "schema", "isSchema", "isUnion", "typenames", "types", "map", "getTypeDXNFromSpecifier", "make", "filters", "toString", "dxn", "propsFilterToAst", "startsWith", "DXN", "fromTypename", "typeDXN", "tag", "text", "options", "searchKind", "foreignKeys", "keys", "eq", "isRef", "TypeError", "operator", "noInline", "encode", "neq", "gt", "gte", "lt", "lte", "in$", "values", "contains", "value", "FilterClass", "type", "between", "from", "to", "_toUnixMs", "date", "getTime", "_timeRangeFilter", "field", "range", "filters", "after", "push", "operator", "before", "length", "everything", "and", "updated", "created", "childOf", "parents", "options", "items", "Array", "isArray", "dxns", "map", "item", "isRef", "dxn", "toString", "getDXN", "transitive", "not", "filter", "ast", "f", "or", "propsFilterToAst", "predicates", "idFilter", "assertArgument", "id", "Schema", "ObjectId", "pipe", "validateSync", "props", "Object", "fromEntries", "entries", "prop", "_value", "predicate", "processPredicate", "withReturnType", "when", "is", "_predicate", "Error", "nestedProps", "key", "typename", "orElse", "eq", "pretty", "prettyFilter"]
7
+ }
@@ -0,0 +1,36 @@
1
+ import {
2
+ getSchemaDXN
3
+ } from "./chunk-4U7YKZUA.mjs";
4
+ import {
5
+ __export
6
+ } from "./chunk-J5LGTIGS.mjs";
7
+
8
+ // src/Migration.ts
9
+ var Migration_exports = {};
10
+ __export(Migration_exports, {
11
+ define: () => define
12
+ });
13
+ var define = (options) => {
14
+ const fromType = getSchemaDXN(options.from);
15
+ if (!fromType) {
16
+ throw new Error("Invalid from schema");
17
+ }
18
+ const toType = getSchemaDXN(options.to);
19
+ if (!toType) {
20
+ throw new Error("Invalid to schema");
21
+ }
22
+ return {
23
+ fromType,
24
+ toType,
25
+ fromSchema: options.from,
26
+ toSchema: options.to,
27
+ transform: options.transform,
28
+ onMigration: options.onMigration
29
+ };
30
+ };
31
+
32
+ export {
33
+ define,
34
+ Migration_exports
35
+ };
36
+ //# sourceMappingURL=chunk-YP4SEMT6.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Migration.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type * as Schema from 'effect/Schema';\n\nimport { type DXN } from '@dxos/keys';\n\nimport type * as Database from './Database';\nimport type * as Entity from './Entity';\nimport { getSchemaDXN } from './internal';\n\ntype DefineObjectMigrationOptions<From extends Schema.Schema.AnyNoContext, To extends Schema.Schema.AnyNoContext> = {\n from: From;\n to: To;\n /**\n * Pure function that converts the old object data to the new object data.\n */\n // TODO(dmaretskyi): `id` should not be a part of the schema.\n transform: (\n from: Schema.Schema.Type<From>,\n context: ObjectMigrationContext,\n ) => Promise<Omit<Schema.Schema.Type<To>, 'id' | Entity.KindId>>;\n\n /**\n * Callback that is called after the object is migrated. Called for every object that is migrated.\n *\n * NOTE: Database mutations performed in this callback are not guaranteed to be idempotent.\n * If multiple peers run the migration separately, the effects may be applied multiple times.\n */\n onMigration: (params: OnMigrateProps<From, To>) => Promise<void>;\n};\n\n/**\n * Context passed to object migration callbacks.\n */\nexport type ObjectMigrationContext = {\n db: Database.Database;\n};\n\ntype OnMigrateProps<From extends Schema.Schema.AnyNoContext, To extends Schema.Schema.AnyNoContext> = {\n before: Schema.Schema.Type<From>;\n object: Schema.Schema.Type<To>;\n db: Database.Database;\n};\n\n/**\n * Definition of a migration from one object schema version to another.\n */\nexport type ObjectMigration = {\n fromType: DXN;\n toType: DXN;\n fromSchema: Schema.Schema.AnyNoContext;\n toSchema: Schema.Schema.AnyNoContext;\n transform: (from: unknown, context: ObjectMigrationContext) => Promise<unknown>;\n onMigration: (params: OnMigrateProps<any, any>) => Promise<void>;\n};\n\n/**\n * Define a migration between two object schemas.\n *\n * @example\n * ```ts\n * const migration = Migration.define({\n * from: ContactV1,\n * to: ContactV2,\n * transform: async (from) => ({ name: `${from.firstName} ${from.lastName}` }),\n * onMigration: async () => {},\n * });\n * ```\n */\nexport const define = <From extends Schema.Schema.AnyNoContext, To extends Schema.Schema.AnyNoContext>(\n options: DefineObjectMigrationOptions<From, To>,\n): ObjectMigration => {\n const fromType = getSchemaDXN(options.from);\n if (!fromType) {\n throw new Error('Invalid from schema');\n }\n const toType = getSchemaDXN(options.to);\n if (!toType) {\n throw new Error('Invalid to schema');\n }\n\n return {\n fromType,\n toType,\n fromSchema: options.from,\n toSchema: options.to,\n transform: options.transform as any,\n onMigration: options.onMigration as any,\n };\n};\n"],
5
+ "mappings": ";;;;;;;;AAAA;;;;AAyEO,IAAMA,SAAS,CACpBC,YAAAA;AAEA,QAAMC,WAAWC,aAAaF,QAAQG,IAAI;AAC1C,MAAI,CAACF,UAAU;AACb,UAAM,IAAIG,MAAM,qBAAA;EAClB;AACA,QAAMC,SAASH,aAAaF,QAAQM,EAAE;AACtC,MAAI,CAACD,QAAQ;AACX,UAAM,IAAID,MAAM,mBAAA;EAClB;AAEA,SAAO;IACLH;IACAI;IACAE,YAAYP,QAAQG;IACpBK,UAAUR,QAAQM;IAClBG,WAAWT,QAAQS;IACnBC,aAAaV,QAAQU;EACvB;AACF;",
6
+ "names": ["define", "options", "fromType", "getSchemaDXN", "from", "Error", "toType", "to", "fromSchema", "toSchema", "transform", "onMigration"]
7
+ }
@@ -0,0 +1,50 @@
1
+ import {
2
+ __export
3
+ } from "./chunk-J5LGTIGS.mjs";
4
+
5
+ // src/Extension.ts
6
+ var Extension_exports = {};
7
+ __export(Extension_exports, {
8
+ Key: () => Key,
9
+ TypeId: () => TypeId,
10
+ Values: () => Values,
11
+ get: () => get,
12
+ make: () => make,
13
+ set: () => set
14
+ });
15
+ import * as Function from "effect/Function";
16
+ import * as Option from "effect/Option";
17
+ import * as Schema from "effect/Schema";
18
+ var TypeId = "~@dxos/echo/Extension";
19
+ var make = (key, valueSchema) => {
20
+ return {
21
+ [TypeId]: {},
22
+ key: Key.make(key),
23
+ valueSchema
24
+ };
25
+ };
26
+ var Key = Schema.String.pipe(Schema.brand("~@dxos/echo/ExtensionKey"));
27
+ var Values = Schema.Record({
28
+ key: Key,
29
+ value: Schema.Unknown
30
+ });
31
+ var get = Function.dual(2, (values, extension) => {
32
+ if (!(extension.key in values)) {
33
+ return Option.none();
34
+ }
35
+ return Function.pipe(values[extension.key], Schema.decodeUnknownSync(extension.valueSchema), Option.some);
36
+ });
37
+ var set = Function.dual(3, (values, extension, value) => {
38
+ values[extension.key] = Schema.encodeSync(extension.valueSchema)(value);
39
+ });
40
+
41
+ export {
42
+ TypeId,
43
+ make,
44
+ Key,
45
+ Values,
46
+ get,
47
+ set,
48
+ Extension_exports
49
+ };
50
+ //# sourceMappingURL=chunk-YS6Q3XAD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Extension.ts"],
4
+ "sourcesContent": ["// @import-as-namespace\n//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\nimport type * as Types from 'effect/Types';\n\n// @import-as-namespace\n\n/**\n * Extensions allow objects to contain typed properties that are not part of the schema.\n */\n\nexport const TypeId = '~@dxos/echo/Extension' as const;\nexport type TypeId = typeof TypeId;\n\nexport interface Extension<T> extends Record<\n TypeId,\n {\n _Type: T;\n }\n> {\n readonly [TypeId]: {\n _Type: T;\n };\n\n readonly key: Key;\n readonly valueSchema: Schema.Schema<T>;\n}\n\n/**\n * Create a new typed extension.\n *\n * ```ts\n * const ColorExtension = Extension.make('color', Schema.String);\n *\n * const obj = Obj.make(Person, {\n * [Obj.Meta]: { keys: [{ source: 'external', id: '123' }] },\n * name: 'John',\n * email: 'john@example.com',\n * });\n *\n * Obj.change(obj, (obj) => {\n * Extension.set(obj.extensions, ColorExtension, 'red');\n * });\n *\n * console.log(Extension.get(obj.extensions, ColorExtension)); // 'red'\n * ```\n */\nexport const make = <S extends Schema.Schema.AnyNoContext>(\n key: string,\n valueSchema: S,\n): Extension<Schema.Schema.Type<S>> => {\n return {\n [TypeId]: {} as any,\n key: Key.make(key),\n valueSchema,\n };\n};\n\n/**\n * Unique identifier for an extension.\n */\n// TODO(dmaretskyi): filter to be fully qualified: (e.g., org.dxos.extension.color)\nexport const Key = Schema.String.pipe(Schema.brand('~@dxos/echo/ExtensionKey'));\nexport type Key = Schema.Schema.Type<typeof Key>;\n\n/**\n * Set of extension values.\n *\n * Can be used inside an object/relation schema:\n *\n * ```ts\n * const Person = Schema.Struct({\n * name: Schema.String,\n * extensions: Extension.Values,\n * });\n * ```\n */\nexport const Values = Schema.Record({ key: Key, value: Schema.Unknown });\nexport interface Values extends Schema.Schema.Type<typeof Values> {}\n\n/**\n * Get the value of an extension from a set of values.\n */\nexport const get: {\n <T>(extension: Extension<T>): (values: Values) => Option.Option<T>;\n <T>(values: Values, extension: Extension<T>): Option.Option<T>;\n} = Function.dual<\n <T>(extension: Extension<T>) => (values: Values) => Option.Option<T>,\n <T>(values: Values, extension: Extension<T>) => Option.Option<T>\n>(2, (values, extension) => {\n if (!(extension.key in values)) {\n return Option.none();\n }\n\n return Function.pipe(values[extension.key], Schema.decodeUnknownSync(extension.valueSchema), Option.some);\n});\n\n/**\n * Set the value of an extension in a set of values.\n *\n * Can also be used within Obj.change callback:\n *\n * ```ts\n * Obj.change(obj, (obj) => {\n * Extension.set(obj.extensions, ColorExtension, 'red');\n * });\n * ```\n */\nexport const set: {\n <T>(extension: Extension<T>, value: T): (values: Values) => void;\n <T>(values: Types.Mutable<Values>, extension: Extension<T>, value: T): void;\n} = Function.dual<\n <T>(extension: Extension<T>, value: T) => (values: Values) => void,\n <T>(values: Types.Mutable<Values>, extension: Extension<T>, value: T) => void\n>(3, (values, extension, value) => {\n values[extension.key] = Schema.encodeSync(extension.valueSchema)(value);\n});\n"],
5
+ "mappings": ";;;;;AAAA;;;;;;;;;AAKA,YAAYA,cAAc;AAC1B,YAAYC,YAAY;AACxB,YAAYC,YAAY;AASjB,IAAMC,SAAS;AAoCf,IAAMC,OAAO,CAClBC,KACAC,gBAAAA;AAEA,SAAO;IACL,CAACH,MAAAA,GAAS,CAAC;IACXE,KAAKE,IAAIH,KAAKC,GAAAA;IACdC;EACF;AACF;AAMO,IAAMC,MAAaC,cAAOC,KAAYC,aAAM,0BAAA,CAAA;AAe5C,IAAMC,SAAgBC,cAAO;EAAEP,KAAKE;EAAKM,OAAcC;AAAQ,CAAA;AAM/D,IAAMC,MAGAC,cAGX,GAAG,CAACC,QAAQC,cAAAA;AACZ,MAAI,EAAEA,UAAUb,OAAOY,SAAS;AAC9B,WAAcE,YAAI;EACpB;AAEA,SAAgBV,cAAKQ,OAAOC,UAAUb,GAAG,GAAUe,yBAAkBF,UAAUZ,WAAW,GAAUe,WAAI;AAC1G,CAAA;AAaO,IAAMC,MAGAN,cAGX,GAAG,CAACC,QAAQC,WAAWL,UAAAA;AACvBI,SAAOC,UAAUb,GAAG,IAAWkB,kBAAWL,UAAUZ,WAAW,EAAEO,KAAAA;AACnE,CAAA;",
6
+ "names": ["Function", "Option", "Schema", "TypeId", "make", "key", "valueSchema", "Key", "String", "pipe", "brand", "Values", "Record", "value", "Unknown", "get", "dual", "values", "extension", "none", "decodeUnknownSync", "some", "set", "encodeSync"]
7
+ }
@@ -0,0 +1,105 @@
1
+ import {
2
+ Collection_exports,
3
+ DXN,
4
+ Dataset_exports,
5
+ Hypergraph_exports,
6
+ QueryAST,
7
+ View_exports
8
+ } from "./chunk-WOEEIQWU.mjs";
9
+ import {
10
+ SchemaRegistry_exports
11
+ } from "./chunk-BNCCGLJN.mjs";
12
+ import {
13
+ Tag_exports
14
+ } from "./chunk-F7EQRJWJ.mjs";
15
+ import {
16
+ Order_exports
17
+ } from "./chunk-UI6MWK5W.mjs";
18
+ import {
19
+ Key_exports
20
+ } from "./chunk-ANHVGJI4.mjs";
21
+ import {
22
+ Migration_exports
23
+ } from "./chunk-YP4SEMT6.mjs";
24
+ import {
25
+ Extension_exports
26
+ } from "./chunk-YS6Q3XAD.mjs";
27
+ import {
28
+ Format_exports
29
+ } from "./chunk-GZQTCRJB.mjs";
30
+ import {
31
+ Relation_exports
32
+ } from "./chunk-2DJT26P7.mjs";
33
+ import {
34
+ JsonSchema_exports
35
+ } from "./chunk-6ZQHG2VX.mjs";
36
+ import {
37
+ QueryResult_exports
38
+ } from "./chunk-OMUPQMLR.mjs";
39
+ import {
40
+ Query_exports
41
+ } from "./chunk-B4NP3BY3.mjs";
42
+ import {
43
+ Feed_exports
44
+ } from "./chunk-3Y6LSSJR.mjs";
45
+ import {
46
+ Type_exports
47
+ } from "./chunk-OX5WOJZ2.mjs";
48
+ import {
49
+ Filter_exports
50
+ } from "./chunk-XL5OYQ4X.mjs";
51
+ import {
52
+ Obj_exports
53
+ } from "./chunk-LSMJDE57.mjs";
54
+ import {
55
+ Ref_exports
56
+ } from "./chunk-GMAUO3CE.mjs";
57
+ import {
58
+ Entity_exports
59
+ } from "./chunk-IKAO54M4.mjs";
60
+ import "./chunk-LLK3YB3N.mjs";
61
+ import "./chunk-LZR62GOA.mjs";
62
+ import "./chunk-SZJKLCFE.mjs";
63
+ import "./chunk-DQYLD2RB.mjs";
64
+ import "./chunk-SRYQFSA4.mjs";
65
+ import {
66
+ Annotation_exports
67
+ } from "./chunk-WABNQYKV.mjs";
68
+ import {
69
+ Database_exports
70
+ } from "./chunk-HQSGCJPL.mjs";
71
+ import "./chunk-4U7YKZUA.mjs";
72
+ import "./chunk-TBKX6JQO.mjs";
73
+ import {
74
+ Err_exports
75
+ } from "./chunk-UBEZSGXY.mjs";
76
+ import "./chunk-J5LGTIGS.mjs";
77
+ export {
78
+ Annotation_exports as Annotation,
79
+ Collection_exports as Collection,
80
+ DXN,
81
+ Database_exports as Database,
82
+ Dataset_exports as Dataset,
83
+ Entity_exports as Entity,
84
+ Err_exports as Err,
85
+ Extension_exports as Extension,
86
+ Feed_exports as Feed,
87
+ Filter_exports as Filter,
88
+ Format_exports as Format,
89
+ Hypergraph_exports as Hypergraph,
90
+ JsonSchema_exports as JsonSchema,
91
+ Key_exports as Key,
92
+ Migration_exports as Migration,
93
+ Obj_exports as Obj,
94
+ Order_exports as Order,
95
+ Query_exports as Query,
96
+ QueryAST,
97
+ QueryResult_exports as QueryResult,
98
+ Ref_exports as Ref,
99
+ Relation_exports as Relation,
100
+ SchemaRegistry_exports as SchemaRegistry,
101
+ Tag_exports as Tag,
102
+ Type_exports as Type,
103
+ View_exports as View
104
+ };
105
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }