@dxos/echo 0.8.4-main.2e9d522 → 0.8.4-main.3c1ae3b

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 (478) hide show
  1. package/README.md +1 -1
  2. package/dist/lib/browser/Annotation.mjs +31 -0
  3. package/dist/lib/browser/Annotation.mjs.map +7 -0
  4. package/dist/lib/browser/Database.mjs +14 -0
  5. package/dist/lib/browser/Database.mjs.map +7 -0
  6. package/dist/lib/browser/Entity.mjs +20 -0
  7. package/dist/lib/browser/Entity.mjs.map +7 -0
  8. package/dist/lib/browser/Err.mjs +11 -0
  9. package/dist/lib/browser/Err.mjs.map +7 -0
  10. package/dist/lib/browser/Filter.mjs +60 -0
  11. package/dist/lib/browser/Filter.mjs.map +7 -0
  12. package/dist/lib/browser/Format.mjs +67 -0
  13. package/dist/lib/browser/Format.mjs.map +7 -0
  14. package/dist/lib/browser/JsonSchema.mjs +18 -0
  15. package/dist/lib/browser/JsonSchema.mjs.map +7 -0
  16. package/dist/lib/browser/Key.mjs +13 -0
  17. package/dist/lib/browser/Key.mjs.map +7 -0
  18. package/dist/lib/browser/Obj.mjs +83 -0
  19. package/dist/lib/browser/Obj.mjs.map +7 -0
  20. package/dist/lib/browser/Order.mjs +11 -0
  21. package/dist/lib/browser/Order.mjs.map +7 -0
  22. package/dist/lib/browser/Query.mjs +25 -0
  23. package/dist/lib/browser/Query.mjs.map +7 -0
  24. package/dist/lib/browser/QueryResult.mjs +3 -0
  25. package/dist/lib/browser/QueryResult.mjs.map +7 -0
  26. package/dist/lib/browser/Ref.mjs +21 -0
  27. package/dist/lib/browser/Ref.mjs.map +7 -0
  28. package/dist/lib/browser/Relation.mjs +33 -0
  29. package/dist/lib/browser/Relation.mjs.map +7 -0
  30. package/dist/lib/browser/SchemaRegistry.mjs +3 -0
  31. package/dist/lib/browser/SchemaRegistry.mjs.map +7 -0
  32. package/dist/lib/browser/Tag.mjs +25 -0
  33. package/dist/lib/browser/Tag.mjs.map +7 -0
  34. package/dist/lib/browser/Type.mjs +38 -0
  35. package/dist/lib/browser/Type.mjs.map +7 -0
  36. package/dist/lib/browser/chunk-3B2G6BW4.mjs +74 -0
  37. package/dist/lib/browser/chunk-3B2G6BW4.mjs.map +7 -0
  38. package/dist/lib/browser/chunk-5IN7XBIQ.mjs +24 -0
  39. package/dist/lib/browser/chunk-5IN7XBIQ.mjs.map +7 -0
  40. package/dist/lib/browser/chunk-6XVZF5VJ.mjs +2924 -0
  41. package/dist/lib/browser/chunk-6XVZF5VJ.mjs.map +7 -0
  42. package/dist/lib/browser/chunk-AGOWBKY6.mjs +94 -0
  43. package/dist/lib/browser/chunk-AGOWBKY6.mjs.map +7 -0
  44. package/dist/lib/browser/chunk-BD6MRI4M.mjs +113 -0
  45. package/dist/lib/browser/chunk-BD6MRI4M.mjs.map +7 -0
  46. package/dist/lib/browser/chunk-CGS2ULMK.mjs +11 -0
  47. package/dist/lib/browser/chunk-CGS2ULMK.mjs.map +7 -0
  48. package/dist/lib/browser/chunk-DOPKE2FQ.mjs +32 -0
  49. package/dist/lib/browser/chunk-DOPKE2FQ.mjs.map +7 -0
  50. package/dist/lib/browser/chunk-ESLW4N7S.mjs +41 -0
  51. package/dist/lib/browser/chunk-ESLW4N7S.mjs.map +7 -0
  52. package/dist/lib/browser/chunk-F4YF6C3O.mjs +363 -0
  53. package/dist/lib/browser/chunk-F4YF6C3O.mjs.map +7 -0
  54. package/dist/lib/browser/chunk-FGFQWIZE.mjs +9 -0
  55. package/dist/lib/browser/chunk-FGFQWIZE.mjs.map +7 -0
  56. package/dist/lib/browser/chunk-INHXFXY5.mjs +22 -0
  57. package/dist/lib/browser/chunk-INHXFXY5.mjs.map +7 -0
  58. package/dist/lib/browser/chunk-JG4GH6LN.mjs +9 -0
  59. package/dist/lib/browser/chunk-JG4GH6LN.mjs.map +7 -0
  60. package/dist/lib/browser/chunk-MYCCGG2T.mjs +15 -0
  61. package/dist/lib/browser/chunk-MYCCGG2T.mjs.map +7 -0
  62. package/dist/lib/browser/chunk-NFH3POTD.mjs +37 -0
  63. package/dist/lib/browser/chunk-NFH3POTD.mjs.map +7 -0
  64. package/dist/lib/browser/chunk-O6FOICWT.mjs +57 -0
  65. package/dist/lib/browser/chunk-O6FOICWT.mjs.map +7 -0
  66. package/dist/lib/browser/chunk-P2B4BASR.mjs +288 -0
  67. package/dist/lib/browser/chunk-P2B4BASR.mjs.map +7 -0
  68. package/dist/lib/browser/chunk-QHC3ZYNC.mjs +152 -0
  69. package/dist/lib/browser/chunk-QHC3ZYNC.mjs.map +7 -0
  70. package/dist/lib/browser/chunk-QU7PWSZD.mjs +62 -0
  71. package/dist/lib/browser/chunk-QU7PWSZD.mjs.map +7 -0
  72. package/dist/lib/browser/chunk-RP4JV7FD.mjs +403 -0
  73. package/dist/lib/browser/chunk-RP4JV7FD.mjs.map +7 -0
  74. package/dist/lib/browser/chunk-V7TON6BX.mjs +151 -0
  75. package/dist/lib/browser/chunk-V7TON6BX.mjs.map +7 -0
  76. package/dist/lib/browser/chunk-WABSVOOX.mjs +303 -0
  77. package/dist/lib/browser/chunk-WABSVOOX.mjs.map +7 -0
  78. package/dist/lib/browser/chunk-XRHHSMHJ.mjs +39 -0
  79. package/dist/lib/browser/chunk-XRHHSMHJ.mjs.map +7 -0
  80. package/dist/lib/browser/chunk-ZIM3Y4ZK.mjs +38 -0
  81. package/dist/lib/browser/chunk-ZIM3Y4ZK.mjs.map +7 -0
  82. package/dist/lib/browser/index.mjs +72 -9
  83. package/dist/lib/browser/internal/index.mjs +347 -0
  84. package/dist/lib/browser/internal/index.mjs.map +7 -0
  85. package/dist/lib/browser/meta.json +1 -1
  86. package/dist/lib/browser/testing/index.mjs +322 -32
  87. package/dist/lib/browser/testing/index.mjs.map +4 -4
  88. package/dist/lib/node-esm/Annotation.mjs +31 -0
  89. package/dist/lib/node-esm/Annotation.mjs.map +7 -0
  90. package/dist/lib/node-esm/Database.mjs +14 -0
  91. package/dist/lib/node-esm/Database.mjs.map +7 -0
  92. package/dist/lib/node-esm/Entity.mjs +20 -0
  93. package/dist/lib/node-esm/Entity.mjs.map +7 -0
  94. package/dist/lib/node-esm/Err.mjs +11 -0
  95. package/dist/lib/node-esm/Err.mjs.map +7 -0
  96. package/dist/lib/node-esm/Filter.mjs +60 -0
  97. package/dist/lib/node-esm/Filter.mjs.map +7 -0
  98. package/dist/lib/node-esm/Format.mjs +67 -0
  99. package/dist/lib/node-esm/Format.mjs.map +7 -0
  100. package/dist/lib/node-esm/JsonSchema.mjs +18 -0
  101. package/dist/lib/node-esm/JsonSchema.mjs.map +7 -0
  102. package/dist/lib/node-esm/Key.mjs +13 -0
  103. package/dist/lib/node-esm/Key.mjs.map +7 -0
  104. package/dist/lib/node-esm/Obj.mjs +83 -0
  105. package/dist/lib/node-esm/Obj.mjs.map +7 -0
  106. package/dist/lib/node-esm/Order.mjs +11 -0
  107. package/dist/lib/node-esm/Order.mjs.map +7 -0
  108. package/dist/lib/node-esm/Query.mjs +25 -0
  109. package/dist/lib/node-esm/Query.mjs.map +7 -0
  110. package/dist/lib/node-esm/QueryResult.mjs +3 -0
  111. package/dist/lib/node-esm/QueryResult.mjs.map +7 -0
  112. package/dist/lib/node-esm/Ref.mjs +21 -0
  113. package/dist/lib/node-esm/Ref.mjs.map +7 -0
  114. package/dist/lib/node-esm/Relation.mjs +33 -0
  115. package/dist/lib/node-esm/Relation.mjs.map +7 -0
  116. package/dist/lib/node-esm/SchemaRegistry.mjs +3 -0
  117. package/dist/lib/node-esm/SchemaRegistry.mjs.map +7 -0
  118. package/dist/lib/node-esm/Tag.mjs +25 -0
  119. package/dist/lib/node-esm/Tag.mjs.map +7 -0
  120. package/dist/lib/node-esm/Type.mjs +38 -0
  121. package/dist/lib/node-esm/Type.mjs.map +7 -0
  122. package/dist/lib/node-esm/chunk-5M5P2DCR.mjs +32 -0
  123. package/dist/lib/node-esm/chunk-5M5P2DCR.mjs.map +7 -0
  124. package/dist/lib/node-esm/chunk-6OTQZKHX.mjs +303 -0
  125. package/dist/lib/node-esm/chunk-6OTQZKHX.mjs.map +7 -0
  126. package/dist/lib/node-esm/chunk-76LEDWHO.mjs +152 -0
  127. package/dist/lib/node-esm/chunk-76LEDWHO.mjs.map +7 -0
  128. package/dist/lib/node-esm/chunk-AGHZH33D.mjs +9 -0
  129. package/dist/lib/node-esm/chunk-AGHZH33D.mjs.map +7 -0
  130. package/dist/lib/node-esm/chunk-AJEMYSIR.mjs +22 -0
  131. package/dist/lib/node-esm/chunk-AJEMYSIR.mjs.map +7 -0
  132. package/dist/lib/node-esm/chunk-BJACR7QG.mjs +363 -0
  133. package/dist/lib/node-esm/chunk-BJACR7QG.mjs.map +7 -0
  134. package/dist/lib/node-esm/chunk-BYL2NPEA.mjs +37 -0
  135. package/dist/lib/node-esm/chunk-BYL2NPEA.mjs.map +7 -0
  136. package/dist/lib/node-esm/chunk-CCMFPJUT.mjs +74 -0
  137. package/dist/lib/node-esm/chunk-CCMFPJUT.mjs.map +7 -0
  138. package/dist/lib/node-esm/chunk-D5BW7KHR.mjs +39 -0
  139. package/dist/lib/node-esm/chunk-D5BW7KHR.mjs.map +7 -0
  140. package/dist/lib/node-esm/chunk-DJX53IQ3.mjs +2924 -0
  141. package/dist/lib/node-esm/chunk-DJX53IQ3.mjs.map +7 -0
  142. package/dist/lib/node-esm/chunk-FWTPV5QD.mjs +94 -0
  143. package/dist/lib/node-esm/chunk-FWTPV5QD.mjs.map +7 -0
  144. package/dist/lib/node-esm/chunk-HLUDHPFO.mjs +403 -0
  145. package/dist/lib/node-esm/chunk-HLUDHPFO.mjs.map +7 -0
  146. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  147. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  148. package/dist/lib/node-esm/chunk-JYZSF62S.mjs +113 -0
  149. package/dist/lib/node-esm/chunk-JYZSF62S.mjs.map +7 -0
  150. package/dist/lib/node-esm/chunk-KUX5JEL2.mjs +57 -0
  151. package/dist/lib/node-esm/chunk-KUX5JEL2.mjs.map +7 -0
  152. package/dist/lib/node-esm/chunk-LDXRA5TC.mjs +288 -0
  153. package/dist/lib/node-esm/chunk-LDXRA5TC.mjs.map +7 -0
  154. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs +15 -0
  155. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs.map +7 -0
  156. package/dist/lib/node-esm/chunk-NHYOREKX.mjs +62 -0
  157. package/dist/lib/node-esm/chunk-NHYOREKX.mjs.map +7 -0
  158. package/dist/lib/node-esm/chunk-QVZZHCDS.mjs +9 -0
  159. package/dist/lib/node-esm/chunk-QVZZHCDS.mjs.map +7 -0
  160. package/dist/lib/node-esm/chunk-W3OLV7MG.mjs +41 -0
  161. package/dist/lib/node-esm/chunk-W3OLV7MG.mjs.map +7 -0
  162. package/dist/lib/node-esm/chunk-W5AQXKVF.mjs +38 -0
  163. package/dist/lib/node-esm/chunk-W5AQXKVF.mjs.map +7 -0
  164. package/dist/lib/node-esm/chunk-YNBFXTDG.mjs +24 -0
  165. package/dist/lib/node-esm/chunk-YNBFXTDG.mjs.map +7 -0
  166. package/dist/lib/node-esm/chunk-Z53QIBP2.mjs +151 -0
  167. package/dist/lib/node-esm/chunk-Z53QIBP2.mjs.map +7 -0
  168. package/dist/lib/node-esm/index.mjs +72 -9
  169. package/dist/lib/node-esm/internal/index.mjs +347 -0
  170. package/dist/lib/node-esm/internal/index.mjs.map +7 -0
  171. package/dist/lib/node-esm/meta.json +1 -1
  172. package/dist/lib/node-esm/testing/index.mjs +322 -32
  173. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  174. package/dist/types/src/Annotation.d.ts +2 -0
  175. package/dist/types/src/Annotation.d.ts.map +1 -0
  176. package/dist/types/src/Database.d.ts +179 -0
  177. package/dist/types/src/Database.d.ts.map +1 -0
  178. package/dist/types/src/Entity.d.ts +36 -0
  179. package/dist/types/src/Entity.d.ts.map +1 -0
  180. package/dist/types/src/Err.d.ts +68 -0
  181. package/dist/types/src/Err.d.ts.map +1 -0
  182. package/dist/types/src/Filter.d.ts +120 -0
  183. package/dist/types/src/Filter.d.ts.map +1 -0
  184. package/dist/types/src/Format.d.ts +4 -0
  185. package/dist/types/src/Format.d.ts.map +1 -0
  186. package/dist/types/src/Hypergraph.d.ts +60 -0
  187. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  188. package/dist/types/src/JsonSchema.d.ts +9 -0
  189. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  190. package/dist/types/src/Key.d.ts +1 -0
  191. package/dist/types/src/Key.d.ts.map +1 -1
  192. package/dist/types/src/Obj.d.ts +152 -35
  193. package/dist/types/src/Obj.d.ts.map +1 -1
  194. package/dist/types/src/Order.d.ts +11 -0
  195. package/dist/types/src/Order.d.ts.map +1 -0
  196. package/dist/types/src/Query.d.ts +107 -0
  197. package/dist/types/src/Query.d.ts.map +1 -0
  198. package/dist/types/src/Query.test.d.ts +2 -0
  199. package/dist/types/src/Query.test.d.ts.map +1 -0
  200. package/dist/types/src/QueryResult.d.ts +84 -0
  201. package/dist/types/src/QueryResult.d.ts.map +1 -0
  202. package/dist/types/src/Ref.d.ts +12 -10
  203. package/dist/types/src/Ref.d.ts.map +1 -1
  204. package/dist/types/src/Relation.d.ts +20 -14
  205. package/dist/types/src/Relation.d.ts.map +1 -1
  206. package/dist/types/src/SchemaRegistry.d.ts +73 -0
  207. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  208. package/dist/types/src/Tag.d.ts +17 -0
  209. package/dist/types/src/Tag.d.ts.map +1 -0
  210. package/dist/types/src/Type.d.ts +39 -50
  211. package/dist/types/src/Type.d.ts.map +1 -1
  212. package/dist/types/src/index.d.ts +15 -3
  213. package/dist/types/src/index.d.ts.map +1 -1
  214. package/dist/types/src/internal/annotations/annotations.d.ts +179 -0
  215. package/dist/types/src/internal/annotations/annotations.d.ts.map +1 -0
  216. package/dist/types/src/internal/annotations/annotations.test.d.ts +2 -0
  217. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +1 -0
  218. package/dist/types/src/internal/annotations/index.d.ts +3 -0
  219. package/dist/types/src/internal/annotations/index.d.ts.map +1 -0
  220. package/dist/types/src/internal/annotations/util.d.ts +27 -0
  221. package/dist/types/src/internal/annotations/util.d.ts.map +1 -0
  222. package/dist/types/src/internal/entities/entity.d.ts +10 -0
  223. package/dist/types/src/internal/entities/entity.d.ts.map +1 -0
  224. package/dist/types/src/internal/entities/expando.d.ts +16 -0
  225. package/dist/types/src/internal/entities/expando.d.ts.map +1 -0
  226. package/dist/types/src/internal/entities/index.d.ts +6 -0
  227. package/dist/types/src/internal/entities/index.d.ts.map +1 -0
  228. package/dist/types/src/internal/entities/model.d.ts +70 -0
  229. package/dist/types/src/internal/entities/model.d.ts.map +1 -0
  230. package/dist/types/src/internal/entities/object.d.ts +11 -0
  231. package/dist/types/src/internal/entities/object.d.ts.map +1 -0
  232. package/dist/types/src/internal/entities/relation.d.ts +55 -0
  233. package/dist/types/src/internal/entities/relation.d.ts.map +1 -0
  234. package/dist/types/src/internal/entities/util.d.ts +2 -0
  235. package/dist/types/src/internal/entities/util.d.ts.map +1 -0
  236. package/dist/types/src/internal/formats/date.d.ts +63 -0
  237. package/dist/types/src/internal/formats/date.d.ts.map +1 -0
  238. package/dist/types/src/internal/formats/date.test.d.ts +2 -0
  239. package/dist/types/src/internal/formats/date.test.d.ts.map +1 -0
  240. package/dist/types/src/internal/formats/format.d.ts +32 -0
  241. package/dist/types/src/internal/formats/format.d.ts.map +1 -0
  242. package/dist/types/src/internal/formats/format.test.d.ts +2 -0
  243. package/dist/types/src/internal/formats/format.test.d.ts.map +1 -0
  244. package/dist/types/src/internal/formats/index.d.ts +8 -0
  245. package/dist/types/src/internal/formats/index.d.ts.map +1 -0
  246. package/dist/types/src/internal/formats/number.d.ts +31 -0
  247. package/dist/types/src/internal/formats/number.d.ts.map +1 -0
  248. package/dist/types/src/internal/formats/object.d.ts +35 -0
  249. package/dist/types/src/internal/formats/object.d.ts.map +1 -0
  250. package/dist/types/src/internal/formats/select.d.ts +13 -0
  251. package/dist/types/src/internal/formats/select.d.ts.map +1 -0
  252. package/dist/types/src/internal/formats/string.d.ts +42 -0
  253. package/dist/types/src/internal/formats/string.d.ts.map +1 -0
  254. package/dist/types/src/internal/formats/types.d.ts +72 -0
  255. package/dist/types/src/internal/formats/types.d.ts.map +1 -0
  256. package/dist/types/src/internal/index.d.ts +11 -0
  257. package/dist/types/src/internal/index.d.ts.map +1 -0
  258. package/dist/types/src/internal/json-schema/annotations.d.ts +19 -0
  259. package/dist/types/src/internal/json-schema/annotations.d.ts.map +1 -0
  260. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts +2 -0
  261. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +1 -0
  262. package/dist/types/src/internal/json-schema/index.d.ts +5 -0
  263. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -0
  264. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts +7 -0
  265. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -0
  266. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +250 -0
  267. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -0
  268. package/dist/types/src/internal/json-schema/json-schema.d.ts +29 -0
  269. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +1 -0
  270. package/dist/types/src/internal/json-schema/json-schema.test.d.ts +2 -0
  271. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +1 -0
  272. package/dist/types/src/internal/object/common.d.ts +18 -0
  273. package/dist/types/src/internal/object/common.d.ts.map +1 -0
  274. package/dist/types/src/internal/object/create-object.d.ts +39 -0
  275. package/dist/types/src/internal/object/create-object.d.ts.map +1 -0
  276. package/dist/types/src/internal/object/create-object.test.d.ts +2 -0
  277. package/dist/types/src/internal/object/create-object.test.d.ts.map +1 -0
  278. package/dist/types/src/internal/object/deleted.d.ts +6 -0
  279. package/dist/types/src/internal/object/deleted.d.ts.map +1 -0
  280. package/dist/types/src/internal/object/ids.d.ts +6 -0
  281. package/dist/types/src/internal/object/ids.d.ts.map +1 -0
  282. package/dist/types/src/internal/object/index.d.ts +8 -0
  283. package/dist/types/src/internal/object/index.d.ts.map +1 -0
  284. package/dist/types/src/internal/object/inspect.d.ts +2 -0
  285. package/dist/types/src/internal/object/inspect.d.ts.map +1 -0
  286. package/dist/types/src/internal/object/json-serializer.d.ts +31 -0
  287. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -0
  288. package/dist/types/src/internal/object/json-serializer.test.d.ts +2 -0
  289. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +1 -0
  290. package/dist/types/src/internal/object/schema-validator.d.ts +15 -0
  291. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -0
  292. package/dist/types/src/internal/object/schema-validator.test.d.ts +2 -0
  293. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +1 -0
  294. package/dist/types/src/internal/object/typed-object.d.ts +31 -0
  295. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -0
  296. package/dist/types/src/internal/object/typed-object.test.d.ts +2 -0
  297. package/dist/types/src/internal/object/typed-object.test.d.ts.map +1 -0
  298. package/dist/types/src/internal/proxy/handler.test.d.ts +2 -0
  299. package/dist/types/src/internal/proxy/handler.test.d.ts.map +1 -0
  300. package/dist/types/src/internal/proxy/index.d.ts +3 -0
  301. package/dist/types/src/internal/proxy/index.d.ts.map +1 -0
  302. package/dist/types/src/internal/proxy/make-object.d.ts +16 -0
  303. package/dist/types/src/internal/proxy/make-object.d.ts.map +1 -0
  304. package/dist/types/src/internal/proxy/schema.test.d.ts +2 -0
  305. package/dist/types/src/internal/proxy/schema.test.d.ts.map +1 -0
  306. package/dist/types/src/internal/proxy/typed-handler.d.ts +44 -0
  307. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -0
  308. package/dist/types/src/internal/proxy/typed-handler.test.d.ts +2 -0
  309. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +1 -0
  310. package/dist/types/src/internal/proxy/typed-object.test.d.ts +2 -0
  311. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +1 -0
  312. package/dist/types/src/internal/ref/index.d.ts +3 -0
  313. package/dist/types/src/internal/ref/index.d.ts.map +1 -0
  314. package/dist/types/src/internal/ref/ref-array.d.ts +21 -0
  315. package/dist/types/src/internal/ref/ref-array.d.ts.map +1 -0
  316. package/dist/types/src/internal/ref/ref.d.ts +209 -0
  317. package/dist/types/src/internal/ref/ref.d.ts.map +1 -0
  318. package/dist/types/src/internal/ref/ref.test.d.ts +2 -0
  319. package/dist/types/src/internal/ref/ref.test.d.ts.map +1 -0
  320. package/dist/types/src/internal/schema/compose.d.ts +6 -0
  321. package/dist/types/src/internal/schema/compose.d.ts.map +1 -0
  322. package/dist/types/src/internal/schema/compose.test.d.ts +2 -0
  323. package/dist/types/src/internal/schema/compose.test.d.ts.map +1 -0
  324. package/dist/types/src/internal/schema/echo-schema.d.ts +168 -0
  325. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -0
  326. package/dist/types/src/internal/schema/index.d.ts +5 -0
  327. package/dist/types/src/internal/schema/index.d.ts.map +1 -0
  328. package/dist/types/src/internal/schema/manipulation.d.ts +10 -0
  329. package/dist/types/src/internal/schema/manipulation.d.ts.map +1 -0
  330. package/dist/types/src/internal/schema/persistent-schema.d.ts +18 -0
  331. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +1 -0
  332. package/dist/types/src/internal/schema/snapshot.d.ts +6 -0
  333. package/dist/types/src/internal/schema/snapshot.d.ts.map +1 -0
  334. package/dist/types/src/internal/types/base.d.ts +37 -0
  335. package/dist/types/src/internal/types/base.d.ts.map +1 -0
  336. package/dist/types/src/internal/types/entity.d.ts +12 -0
  337. package/dist/types/src/internal/types/entity.d.ts.map +1 -0
  338. package/dist/types/src/internal/types/index.d.ts +6 -0
  339. package/dist/types/src/internal/types/index.d.ts.map +1 -0
  340. package/dist/types/src/internal/types/meta.d.ts +40 -0
  341. package/dist/types/src/internal/types/meta.d.ts.map +1 -0
  342. package/dist/types/src/internal/types/typename.d.ts +13 -0
  343. package/dist/types/src/internal/types/typename.d.ts.map +1 -0
  344. package/dist/types/src/internal/types/version.d.ts +15 -0
  345. package/dist/types/src/internal/types/version.d.ts.map +1 -0
  346. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  347. package/dist/types/src/testing/index.d.ts +3 -1
  348. package/dist/types/src/testing/index.d.ts.map +1 -1
  349. package/dist/types/src/testing/test-data.d.ts +18 -0
  350. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  351. package/dist/types/src/testing/test-schema.d.ts +407 -0
  352. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  353. package/dist/types/src/testing/util.d.ts +16 -0
  354. package/dist/types/src/testing/util.d.ts.map +1 -0
  355. package/dist/types/tsconfig.tsbuildinfo +1 -1
  356. package/package.json +164 -33
  357. package/src/Annotation.ts +17 -0
  358. package/src/Database.ts +308 -0
  359. package/src/Entity.ts +51 -0
  360. package/src/Err.ts +18 -0
  361. package/src/Filter.ts +376 -0
  362. package/src/Format.ts +9 -0
  363. package/src/Hypergraph.ts +74 -0
  364. package/src/JsonSchema.ts +16 -0
  365. package/src/Key.ts +3 -0
  366. package/src/Obj.ts +407 -71
  367. package/src/Order.ts +34 -0
  368. package/src/Query.test.ts +346 -0
  369. package/src/Query.ts +279 -0
  370. package/src/QueryResult.ts +109 -0
  371. package/src/Ref.ts +25 -9
  372. package/src/Relation.ts +72 -46
  373. package/src/SchemaRegistry.ts +92 -0
  374. package/src/Tag.ts +40 -0
  375. package/src/Type.ts +98 -84
  376. package/src/index.ts +17 -4
  377. package/src/internal/README.md +87 -0
  378. package/src/internal/annotations/annotations.test.ts +96 -0
  379. package/src/internal/annotations/annotations.ts +488 -0
  380. package/src/internal/annotations/index.ts +6 -0
  381. package/src/internal/annotations/util.ts +72 -0
  382. package/src/internal/entities/entity.ts +109 -0
  383. package/src/internal/entities/expando.ts +23 -0
  384. package/src/internal/entities/index.ts +9 -0
  385. package/src/internal/entities/model.ts +129 -0
  386. package/src/internal/entities/object.ts +45 -0
  387. package/src/internal/entities/relation.ts +155 -0
  388. package/src/internal/entities/util.ts +33 -0
  389. package/src/internal/formats/date.test.ts +56 -0
  390. package/src/internal/formats/date.ts +217 -0
  391. package/src/internal/formats/format.test.ts +77 -0
  392. package/src/internal/formats/format.ts +54 -0
  393. package/src/internal/formats/index.ts +12 -0
  394. package/src/internal/formats/number.ts +89 -0
  395. package/src/internal/formats/object.ts +80 -0
  396. package/src/internal/formats/select.ts +18 -0
  397. package/src/internal/formats/string.ts +81 -0
  398. package/src/internal/formats/types.ts +186 -0
  399. package/src/internal/index.ts +38 -0
  400. package/src/internal/json-schema/annotations.ts +50 -0
  401. package/src/internal/json-schema/effect-schema.test.ts +143 -0
  402. package/src/internal/json-schema/index.ts +8 -0
  403. package/src/internal/json-schema/json-schema-normalize.ts +109 -0
  404. package/src/internal/json-schema/json-schema-type.ts +404 -0
  405. package/src/internal/json-schema/json-schema.test.ts +861 -0
  406. package/src/internal/json-schema/json-schema.ts +528 -0
  407. package/src/internal/object/common.ts +75 -0
  408. package/src/internal/object/create-object.test.ts +116 -0
  409. package/src/internal/object/create-object.ts +95 -0
  410. package/src/internal/object/deleted.ts +19 -0
  411. package/src/internal/object/ids.ts +12 -0
  412. package/src/internal/object/index.ts +11 -0
  413. package/src/internal/object/inspect.ts +46 -0
  414. package/src/internal/object/json-serializer.test.ts +94 -0
  415. package/src/internal/object/json-serializer.ts +230 -0
  416. package/src/internal/object/schema-validator.test.ts +186 -0
  417. package/src/internal/object/schema-validator.ts +244 -0
  418. package/src/internal/object/typed-object.test.ts +34 -0
  419. package/src/internal/object/typed-object.ts +94 -0
  420. package/src/internal/proxy/handler.test.ts +173 -0
  421. package/src/internal/proxy/index.ts +6 -0
  422. package/src/internal/proxy/make-object.ts +113 -0
  423. package/src/internal/proxy/schema.test.ts +137 -0
  424. package/src/internal/proxy/typed-handler.test.ts +102 -0
  425. package/src/internal/proxy/typed-handler.ts +233 -0
  426. package/src/internal/proxy/typed-object.test.ts +105 -0
  427. package/src/internal/ref/index.ts +6 -0
  428. package/src/internal/ref/ref-array.ts +39 -0
  429. package/src/internal/ref/ref.test.ts +101 -0
  430. package/src/internal/ref/ref.ts +525 -0
  431. package/src/internal/schema/compose.test.ts +42 -0
  432. package/src/internal/schema/compose.ts +37 -0
  433. package/src/internal/schema/echo-schema.ts +385 -0
  434. package/src/internal/schema/index.ts +8 -0
  435. package/src/internal/schema/manipulation.ts +92 -0
  436. package/src/internal/schema/persistent-schema.ts +28 -0
  437. package/src/internal/schema/snapshot.ts +25 -0
  438. package/src/internal/types/base.ts +57 -0
  439. package/src/internal/types/entity.ts +23 -0
  440. package/src/internal/types/index.ts +9 -0
  441. package/src/internal/types/meta.ts +76 -0
  442. package/src/internal/types/typename.ts +45 -0
  443. package/src/internal/types/version.ts +20 -0
  444. package/src/testing/api.test.ts +100 -0
  445. package/src/testing/index.ts +3 -1
  446. package/src/testing/test-data.ts +130 -0
  447. package/src/testing/test-schema.ts +224 -0
  448. package/src/testing/util.ts +78 -0
  449. package/dist/lib/browser/chunk-EUA7CM23.mjs +0 -619
  450. package/dist/lib/browser/chunk-EUA7CM23.mjs.map +0 -7
  451. package/dist/lib/node-esm/chunk-IV6BWGHK.mjs +0 -619
  452. package/dist/lib/node-esm/chunk-IV6BWGHK.mjs.map +0 -7
  453. package/dist/types/src/experimental/database.d.ts +0 -8
  454. package/dist/types/src/experimental/database.d.ts.map +0 -1
  455. package/dist/types/src/experimental/index.d.ts +0 -1
  456. package/dist/types/src/experimental/index.d.ts.map +0 -1
  457. package/dist/types/src/experimental/queue.d.ts +0 -8
  458. package/dist/types/src/experimental/queue.d.ts.map +0 -1
  459. package/dist/types/src/experimental/space.d.ts +0 -8
  460. package/dist/types/src/experimental/space.d.ts.map +0 -1
  461. package/dist/types/src/query/dsl.d.ts +0 -218
  462. package/dist/types/src/query/dsl.d.ts.map +0 -1
  463. package/dist/types/src/query/dsl.test.d.ts +0 -2
  464. package/dist/types/src/query/dsl.test.d.ts.map +0 -1
  465. package/dist/types/src/query/index.d.ts +0 -2
  466. package/dist/types/src/query/index.d.ts.map +0 -1
  467. package/dist/types/src/testing/types.d.ts +0 -113
  468. package/dist/types/src/testing/types.d.ts.map +0 -1
  469. package/src/experimental/database.ts +0 -11
  470. package/src/experimental/index.ts +0 -7
  471. package/src/experimental/queue.ts +0 -11
  472. package/src/experimental/space.ts +0 -11
  473. package/src/query/dsl.test.ts +0 -323
  474. package/src/query/dsl.ts +0 -646
  475. package/src/query/index.ts +0 -5
  476. package/src/test/api.test.ts +0 -173
  477. package/src/testing/types.ts +0 -91
  478. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Type.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Schema$ from 'effect/Schema';\n\nimport { type EncodedReference } from '@dxos/echo-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { type DXN } from '@dxos/keys';\nimport { type ToMutable } from '@dxos/util';\n\nimport type * as Entity$ from './Entity';\nimport {\n type ATTR_RELATION_SOURCE,\n type ATTR_RELATION_TARGET,\n EchoObjectSchema,\n EchoRelationSchema,\n type EchoRelationSchemaOptions,\n EchoSchema,\n Expando as Expando$,\n type ExpandoEncoded,\n PersistentSchema,\n type PersistentSchemaEncoded,\n Ref as Ref$,\n type RefFn,\n type RefSchema,\n type TypeAnnotation,\n type TypeMeta,\n getSchemaDXN,\n getSchemaTypename,\n getSchemaVersion,\n getTypeAnnotation,\n isMutable as isMutable$,\n toEffectSchema,\n toJsonSchema,\n} from './internal';\nimport type * as Relation$ from './Relation';\n\n// TODO(burdon): Remove toEffectSchema, toJsonSchema (moved to JsonSchema export).\nexport { toEffectSchema, toJsonSchema };\n\n/**\n * Returns all properties of an object or relation except for the id and kind.\n */\nexport type Properties<T = any> = Omit<T, 'id' | Entity$.KindId | Relation$.Source | Relation$.Target>;\n\n//\n// Entity\n//\n\nexport namespace Entity {\n /**\n * Type.Obj.Any | Type.Relation.Any.\n */\n export type Any = Obj.Any | Relation.Any;\n}\n\n//\n// Obj\n//\n\ninterface ObjJsonProps {\n id: string;\n}\n\n/**\n * Return type of the `Obj` schema constructor.\n *\n * This typedef avoids `TS4023` error (name from external module cannot be used named).\n * See Effect's note on interface types.\n */\nexport interface obj<Self extends Schema$.Schema.Any>\n extends TypeMeta,\n Schema$.AnnotableClass<\n obj<Self>,\n Entity$.OfKind<typeof Entity$.Kind.Object> & ToMutable<Schema$.Schema.Type<Self>>,\n Schema$.Simplify<ObjJsonProps & ToMutable<Schema$.Schema.Encoded<Self>>>,\n Schema$.Schema.Context<Self>\n > {}\n\n/**\n * Object schema.\n */\nexport const Obj: {\n (opts: TypeMeta): <Self extends Schema$.Schema.Any>(self: Self) => obj<Self>;\n} = EchoObjectSchema as any;\n\n/**\n * Object schema type definitions.\n */\nexport declare namespace Obj {\n /**\n * Type that represents an arbitrary schema type of an object.\n * NOTE: This is not an instance type.\n */\n // TODO(dmaretskyi): If schema was covariant, we could specify props in here, like `id: ObjectId`.\n // TODO(burdon): This erases the ECHO type info (e.g., id, typename).\n export type Any = obj<Schema$.Schema.AnyNoContext>;\n}\n\n//\n// Expando\n//\n\nexport const Expando: obj<Schema$.Schema<Expando$, ExpandoEncoded>> = Expando$ as any;\nexport type Expando = obj<Schema$.Schema<Expando$, ExpandoEncoded>>;\n\n//\n// Schema\n//\n\nexport const PersistentType: obj<Schema$.Schema<PersistentSchema, PersistentSchemaEncoded>> = PersistentSchema as any;\nexport type PersistentType = obj<Schema$.Schema<PersistentSchema, PersistentSchemaEncoded>>;\n\nexport { EchoSchema as RuntimeType };\n\n//\n// Relation\n//\n\ninterface RelationJsonProps {\n id: string;\n [ATTR_RELATION_SOURCE]: string;\n [ATTR_RELATION_TARGET]: string;\n}\n\n/**\n * Return type of the `Relation` schema constructor.\n *\n * This typedef avoids `TS4023` error (name from external module cannot be used named).\n * See Effect's note on interface types.\n */\nexport interface relation<\n Self extends Schema$.Schema.Any,\n SourceSchema extends Schema$.Schema.Any,\n TargetSchema extends Schema$.Schema.Any,\n> extends TypeMeta,\n Schema$.AnnotableClass<\n relation<Self, SourceSchema, TargetSchema>,\n Entity$.OfKind<typeof Entity$.Kind.Relation> &\n Relation.Endpoints<Schema$.Schema.Type<SourceSchema>, Schema$.Schema.Type<TargetSchema>> &\n ToMutable<Schema$.Schema.Type<Self>>,\n Schema$.Simplify<RelationJsonProps & ToMutable<Schema$.Schema.Encoded<Self>>>,\n Schema$.Schema.Context<Self>\n > {}\n\n/**\n * Relation schema.\n */\n// TODO(dmaretskyi): I have to redefine the type here so that the definition uses symbols from @dxos/echo/Relation.\n// TODO(burdon): Remove?\nexport const Relation: {\n <Source extends Schema$.Schema.AnyNoContext, Target extends Schema$.Schema.AnyNoContext>(\n opts: EchoRelationSchemaOptions<Source, Target>,\n ): <Self extends Schema$.Schema.Any>(self: Self) => relation<Self, Source, Target>;\n} = EchoRelationSchema as any;\n\n/**\n * Relation schema type definitions.\n */\nexport namespace Relation {\n /**\n * Type that represents an arbitrary schema type of a relation.\n * NOTE: This is not an instance type.\n */\n // TODO(dmaretskyi): If schema was covariant, we could specify props in here, like `id: ObjectId`.\n export type Any = Schema$.Schema.AnyNoContext;\n\n /**\n * Get relation source type.\n */\n export type Source<A> = A extends Relation.Endpoints<infer S, infer _T> ? S : never;\n\n /**\n * Get relation target type.\n */\n export type Target<A> = A extends Relation.Endpoints<infer _S, infer T> ? T : never;\n\n export type Endpoints<Source, Target> = {\n [Relation$.Source]: Source;\n [Relation$.Target]: Target;\n };\n}\n\n//\n// Ref\n// TODO(burdon): Reconcile Type.Ref with Ref.Ref.\n//\n\n/**\n * Return type of the `Ref` schema constructor.\n *\n * This typedef avoids `TS4023` error (name from external module cannot be used named).\n * See Effect's note on interface types.\n */\nexport interface ref<TargetSchema extends Schema$.Schema.Any> extends RefSchema<Schema$.Schema.Type<TargetSchema>> {}\n\n/**\n * Ref schema.\n */\nexport const Ref: RefFn = Ref$;\n\nexport interface Ref<T> extends Schema$.SchemaClass<Ref$<T>, EncodedReference> {}\n\nexport namespace Ref {\n /**\n * Type that represents an arbitrary schema type of a reference.\n * NOTE: This is not an instance type.\n */\n export type Any = Schema$.Schema<Ref$<any>, EncodedReference>;\n}\n\n/**\n * Gets the full DXN of the schema.\n * Will include the version if it's a `type` DXN.\n * @example \"dxn:example.com/type/Person:0.1.0\"\n * @example \"dxn:echo:SSSSSSSSSS:XXXXXXXXXXXXX\"\n */\nexport const getDXN = (schema: Entity.Any): DXN | undefined => {\n return getSchemaDXN(schema);\n};\n\n/**\n * @param schema - Schema to get the typename from.\n * @returns The typename of the schema. Example: `example.com/type/Person`.\n */\nexport const getTypename = (schema: Entity.Any): string => {\n const typename = getSchemaTypename(schema);\n invariant(typeof typename === 'string' && !typename.startsWith('dxn:'), 'Invalid typename');\n return typename;\n};\n\n/**\n * Gets the version of the schema.\n * @example 0.1.0\n */\nexport const getVersion = (schema: Entity.Any): string => {\n const version = getSchemaVersion(schema);\n invariant(typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/), 'Invalid version');\n return version;\n};\n\n/**\n * @returns True if the schema is mutable.\n */\nexport const isMutable = isMutable$;\n\n/**\n * ECHO type metadata.\n */\nexport type Meta = TypeAnnotation;\n\n/**\n * Gets the meta data of the schema.\n */\nexport const getMeta = (schema: Entity.Any): Meta | undefined => {\n return getTypeAnnotation(schema);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;;iBAAAA;EAAA;;aAAAC;EAAA;;;;;;mBAAAC;EAAA;;;AAOA,SAASC,iBAAiB;A;AA4EnB,IAAMC,MAETC;AAmBG,IAAMC,WAAyDC;AAO/D,IAAMC,iBAAiFC;AAwCvF,IAAMC,WAITC;AA6CG,IAAMC,OAAaC;AAkBnB,IAAMC,SAAS,CAACC,WAAAA;AACrB,SAAOC,aAAaD,MAAAA;AACtB;AAMO,IAAME,cAAc,CAACF,WAAAA;AAC1B,QAAMG,WAAWC,kBAAkBJ,MAAAA;AACnCK,YAAU,OAAOF,aAAa,YAAY,CAACA,SAASG,WAAW,MAAA,GAAS,oBAAA;;;;;;;;;AACxE,SAAOH;AACT;AAMO,IAAMI,aAAa,CAACP,WAAAA;AACzB,QAAMQ,UAAUC,iBAAiBT,MAAAA;AACjCK,YAAU,OAAOG,YAAY,YAAYA,QAAQE,MAAM,iBAAA,GAAoB,mBAAA;;;;;;;;;AAC3E,SAAOF;AACT;AAKO,IAAMG,aAAYC;AAUlB,IAAMC,UAAU,CAACb,WAAAA;AACtB,SAAOc,kBAAkBd,MAAAA;AAC3B;",
6
+ "names": ["Expando", "Ref", "isMutable", "invariant", "Obj", "EchoObjectSchema", "Expando", "Expando$", "PersistentType", "PersistentSchema", "Relation", "EchoRelationSchema", "Ref", "Ref$", "getDXN", "schema", "getSchemaDXN", "getTypename", "typename", "getSchemaTypename", "invariant", "startsWith", "getVersion", "version", "getSchemaVersion", "match", "isMutable", "isMutable$", "getMeta", "getTypeAnnotation"]
7
+ }
@@ -0,0 +1,113 @@
1
+ import "@dxos/node-std/globals";
2
+ import {
3
+ isInstanceOf
4
+ } from "./chunk-WABSVOOX.mjs";
5
+ import {
6
+ ObjectNotFoundError
7
+ } from "./chunk-XRHHSMHJ.mjs";
8
+ import {
9
+ __export
10
+ } from "./chunk-CGS2ULMK.mjs";
11
+
12
+ // src/Database.ts
13
+ var Database_exports = {};
14
+ __export(Database_exports, {
15
+ Service: () => Service
16
+ });
17
+ import * as Context from "effect/Context";
18
+ import * as Effect from "effect/Effect";
19
+ import * as Layer from "effect/Layer";
20
+ import * as Option from "effect/Option";
21
+ import { promiseWithCauseCapture } from "@dxos/effect";
22
+ import { invariant } from "@dxos/invariant";
23
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Database.ts";
24
+ var Service = class _Service extends Context.Tag("@dxos/echo/Database/Service")() {
25
+ static notAvailable = Layer.succeed(_Service, {
26
+ get db() {
27
+ throw new Error("Database not available");
28
+ }
29
+ });
30
+ static make = (db) => {
31
+ return {
32
+ get db() {
33
+ return db;
34
+ }
35
+ };
36
+ };
37
+ static layer = (db) => {
38
+ return Layer.succeed(_Service, _Service.make(db));
39
+ };
40
+ /**
41
+ * Resolves an object by its DXN.
42
+ */
43
+ static resolve = (dxn, schema) => Effect.gen(function* () {
44
+ const { db } = yield* _Service;
45
+ const object = yield* promiseWithCauseCapture(() => db.graph.createRefResolver({
46
+ context: {
47
+ space: db.spaceId
48
+ }
49
+ }).resolve(dxn));
50
+ if (!object) {
51
+ return yield* Effect.fail(new ObjectNotFoundError(dxn));
52
+ }
53
+ invariant(!schema || isInstanceOf(schema, object), "Object type mismatch.", {
54
+ F: __dxlog_file,
55
+ L: 226,
56
+ S: this,
57
+ A: [
58
+ "!schema || isInstanceOf(schema, object)",
59
+ "'Object type mismatch.'"
60
+ ]
61
+ });
62
+ return object;
63
+ });
64
+ /**
65
+ * Loads an object reference.
66
+ */
67
+ static load = Effect.fn(function* (ref) {
68
+ const object = yield* promiseWithCauseCapture(() => ref.tryLoad());
69
+ if (!object) {
70
+ return yield* Effect.fail(new ObjectNotFoundError(ref.dxn));
71
+ }
72
+ return object;
73
+ });
74
+ /**
75
+ * Loads an object reference option.
76
+ */
77
+ // TODO(burdon): Option?
78
+ static loadOption = Effect.fn(function* (ref) {
79
+ const object = yield* _Service.load(ref).pipe(Effect.catchTag("OBJECT_NOT_FOUND", () => Effect.succeed(void 0)));
80
+ return Option.fromNullable(object);
81
+ });
82
+ // TODO(burdon): Can we create a proxy for the following methods on Database? Use @inheritDoc?
83
+ // TODO(burdon): Figure out how to chain query().run();
84
+ /**
85
+ * @link EchoDatabase.add
86
+ */
87
+ static add = (obj) => _Service.pipe(Effect.map(({ db }) => db.add(obj)));
88
+ /**
89
+ * @link EchoDatabase.remove
90
+ */
91
+ static remove = (obj) => _Service.pipe(Effect.map(({ db }) => db.remove(obj)));
92
+ /**
93
+ * @link EchoDatabase.flush
94
+ */
95
+ static flush = (opts) => _Service.pipe(Effect.flatMap(({ db }) => promiseWithCauseCapture(() => db.flush(opts))));
96
+ /**
97
+ * Creates a `QueryResult` object that can be subscribed to.
98
+ */
99
+ static query = (queryOrFilter) => _Service.pipe(Effect.map(({ db }) => db.query(queryOrFilter)), Effect.withSpan("Service.query"));
100
+ /**
101
+ * Executes the query once and returns the results.
102
+ */
103
+ static runQuery = (queryOrFilter) => _Service.query(queryOrFilter).pipe(Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())));
104
+ // TODO(dmaretskyi): Change API to `yield* Service.querySchema(...).first` and `yield* Service.querySchema(...).schema`.
105
+ static schemaQuery = (query) => _Service.pipe(Effect.map(({ db }) => db.schemaRegistry.query(query)), Effect.withSpan("Service.schemaQuery"));
106
+ static runSchemaQuery = (query) => _Service.schemaQuery(query).pipe(Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())));
107
+ };
108
+
109
+ export {
110
+ Service,
111
+ Database_exports
112
+ };
113
+ //# sourceMappingURL=chunk-BD6MRI4M.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Database.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\nimport type * as Types from 'effect/Types';\n\nimport { type QueryAST } from '@dxos/echo-protocol';\nimport { promiseWithCauseCapture } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { type DXN, type PublicKey, type SpaceId } from '@dxos/keys';\nimport { type Live } from '@dxos/live-object';\nimport { type QueryOptions as QueryOptionsProto } from '@dxos/protocols/proto/dxos/echo/filter';\n\nimport type * as Entity from './Entity';\nimport * as Err from './Err';\nimport type * as Filter from './Filter';\nimport type * as Hypergraph from './Hypergraph';\nimport { isInstanceOf } from './internal';\nimport type * as Query from './Query';\nimport type * as QueryResult from './QueryResult';\nimport type * as Ref from './Ref';\nimport type * as SchemaRegistry from './SchemaRegistry';\nimport type * as Type from './Type';\n\n/**\n * @deprecated Use `QueryAST.QueryOptions` instead.\n */\nexport type QueryOptions = {\n /**\n * @deprecated Use `spaceIds` instead.\n */\n spaces?: PublicKey[];\n\n /**\n * Query only in specific spaces.\n */\n // TODO(dmaretskyi): Change this to SpaceId.\n spaceIds?: string[];\n\n /**\n * Return only the first `limit` results.\n */\n limit?: number;\n\n /**\n * Query only local spaces, or remote on agent.\n * @default `QueryOptions.DataLocation.LOCAL`\n *\n * Options:\n * - proto3_optional = true\n */\n // TODO(burdon): Remove?\n dataLocation?: QueryOptionsProto.DataLocation;\n};\n\n/**\n * `query` API function declaration.\n */\n// TODO(burdon): Reconcile Query and Filter (should only have one root type).\n// TODO(dmaretskyi): Remove query options.\nexport interface QueryFn {\n <Q extends Query.Any>(\n query: Q,\n options?: (QueryAST.QueryOptions & QueryOptions) | undefined,\n ): QueryResult.QueryResult<Query.Type<Q>>;\n\n <F extends Filter.Any>(\n filter: F,\n options?: (QueryAST.QueryOptions & QueryOptions) | undefined,\n ): QueryResult.QueryResult<Filter.Type<F>>;\n}\n\n/**\n * Common interface for Database and Queue.\n */\nexport interface Queryable {\n query: QueryFn;\n}\n\nexport type GetObjectByIdOptions = {\n deleted?: boolean;\n};\n\nexport type ObjectPlacement = 'root-doc' | 'linked-doc';\n\nexport type AddOptions = {\n /**\n * Where to place the object in the Automerge document tree.\n * Root document is always loaded with the space.\n * Linked documents are loaded lazily.\n * Placing large number of objects in the root document may slow down the initial load.\n *\n * @default 'linked-doc'\n */\n placeIn?: ObjectPlacement;\n};\n\nexport type FlushOptions = {\n /**\n * Write any pending changes to disk.\n * @default true\n */\n disk?: boolean;\n\n /**\n * Wait for pending index updates.\n * @default false\n */\n indexes?: boolean;\n\n /**\n * Flush pending updates to objects and queries.\n * @default false\n */\n updates?: boolean;\n};\n\n/**\n * ECHO Database interface.\n */\nexport interface Database extends Queryable {\n get spaceId(): SpaceId;\n\n // TODO(burdon): Can we move this into graph?\n get schemaRegistry(): SchemaRegistry.SchemaRegistry;\n\n /**\n *\n */\n // TODO(burdon): Comment required.\n get graph(): Hypergraph.Hypergraph;\n\n /**\n * Query objects.\n */\n query: QueryFn;\n\n /**\n * Creates a reference to an existing object in the database.\n *\n * NOTE: The reference may be dangling if the object is not present in the database.\n * NOTE: Difference from `Ref.fromDXN`\n * `Ref.fromDXN(dxn)` returns an unhydrated reference. The `.load` and `.target` APIs will not work.\n * `db.makeRef(dxn)` is preferable in cases with access to the database.\n */\n makeRef<T extends Entity.Unknown = Entity.Unknown>(dxn: DXN): Ref.Ref<T>;\n\n /**\n * Adds object to the database.\n */\n // TODO(burdon): Add batch.\n add<T extends Entity.Unknown = Entity.Unknown>(obj: T, opts?: AddOptions): T;\n\n /**\n * Removes object from the database.\n */\n // TODO(burdon): Return true if removed (currently throws if not present).\n remove(obj: Entity.Unknown): void;\n\n /**\n * Wait for all pending changes to be saved to disk.\n * Optionaly waits for changes to be propagated to indexes and event handlers.\n */\n flush(opts?: FlushOptions): Promise<void>;\n}\n\nexport class Service extends Context.Tag('@dxos/echo/Database/Service')<\n Service,\n {\n readonly db: Database;\n }\n>() {\n static notAvailable = Layer.succeed(Service, {\n get db(): Database {\n throw new Error('Database not available');\n },\n });\n\n static make = (db: Database): Context.Tag.Service<Service> => {\n return {\n get db() {\n return db;\n },\n };\n };\n\n static layer = (db: Database): Layer.Layer<Service> => {\n return Layer.succeed(Service, Service.make(db));\n };\n\n /**\n * Resolves an object by its DXN.\n */\n static resolve: {\n // No type check.\n (dxn: DXN): Effect.Effect<Entity.Unknown, never, Service>;\n // Check matches schema.\n <S extends Type.Entity.Any>(\n dxn: DXN,\n schema: S,\n ): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service>;\n } = (<S extends Type.Entity.Any>(\n dxn: DXN,\n schema?: S,\n ): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service> =>\n Effect.gen(function* () {\n const { db } = yield* Service;\n const object = yield* promiseWithCauseCapture(() =>\n db.graph\n .createRefResolver({\n context: {\n space: db.spaceId,\n },\n })\n .resolve(dxn),\n );\n\n if (!object) {\n return yield* Effect.fail(new Err.ObjectNotFoundError(dxn));\n }\n invariant(!schema || isInstanceOf(schema, object), 'Object type mismatch.');\n return object as any;\n })) as any;\n\n /**\n * Loads an object reference.\n */\n static load: <T>(ref: Ref.Ref<T>) => Effect.Effect<T, Err.ObjectNotFoundError, never> = Effect.fn(function* (ref) {\n const object = yield* promiseWithCauseCapture(() => ref.tryLoad());\n if (!object) {\n return yield* Effect.fail(new Err.ObjectNotFoundError(ref.dxn));\n }\n return object;\n });\n\n /**\n * Loads an object reference option.\n */\n // TODO(burdon): Option?\n static loadOption: <T>(ref: Ref.Ref<T>) => Effect.Effect<Option.Option<T>, never, never> = Effect.fn(function* (ref) {\n const object = yield* Service.load(ref).pipe(Effect.catchTag('OBJECT_NOT_FOUND', () => Effect.succeed(undefined)));\n return Option.fromNullable(object);\n });\n\n // TODO(burdon): Can we create a proxy for the following methods on Database? Use @inheritDoc?\n // TODO(burdon): Figure out how to chain query().run();\n\n /**\n * @link EchoDatabase.add\n */\n static add = <T extends Entity.Unknown>(obj: T): Effect.Effect<T, never, Service> =>\n Service.pipe(Effect.map(({ db }) => db.add(obj)));\n\n /**\n * @link EchoDatabase.remove\n */\n static remove = <T extends Entity.Unknown>(obj: T): Effect.Effect<void, never, Service> =>\n Service.pipe(Effect.map(({ db }) => db.remove(obj)));\n\n /**\n * @link EchoDatabase.flush\n */\n static flush = (opts?: FlushOptions) =>\n Service.pipe(Effect.flatMap(({ db }) => promiseWithCauseCapture(() => db.flush(opts))));\n\n /**\n * Creates a `QueryResult` object that can be subscribed to.\n */\n static query: {\n <Q extends Query.Any>(query: Q): Effect.Effect<QueryResult.QueryResult<Live<Query.Type<Q>>>, never, Service>;\n <F extends Filter.Any>(filter: F): Effect.Effect<QueryResult.QueryResult<Live<Filter.Type<F>>>, never, Service>;\n } = (queryOrFilter: Query.Any | Filter.Any) =>\n Service.pipe(\n Effect.map(({ db }) => db.query(queryOrFilter as any) as QueryResult.QueryResult<Live<any>>),\n Effect.withSpan('Service.query'),\n );\n\n /**\n * Executes the query once and returns the results.\n */\n static runQuery: {\n <Q extends Query.Any>(query: Q): Effect.Effect<Live<Query.Type<Q>>[], never, Service>;\n <F extends Filter.Any>(filter: F): Effect.Effect<Live<Filter.Type<F>>[], never, Service>;\n } = (queryOrFilter: Query.Any | Filter.Any) =>\n Service.query(queryOrFilter as any).pipe(\n Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())),\n );\n\n // TODO(dmaretskyi): Change API to `yield* Service.querySchema(...).first` and `yield* Service.querySchema(...).schema`.\n\n static schemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(\n query?: Q & SchemaRegistry.Query,\n ): Effect.Effect<QueryResult.QueryResult<SchemaRegistry.ExtractQueryResult<Q>>, never, Service> =>\n Service.pipe(\n Effect.map(({ db }) => db.schemaRegistry.query(query)),\n Effect.withSpan('Service.schemaQuery'),\n );\n\n static runSchemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(\n query?: Q & SchemaRegistry.Query,\n ): Effect.Effect<SchemaRegistry.ExtractQueryResult<Q>[], never, Service> =>\n Service.schemaQuery(query).pipe(Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())));\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;AAAA;;;;AAIA,YAAYA,aAAa;AACzB,YAAYC,YAAY;AACxB,YAAYC,WAAW;AACvB,YAAYC,YAAY;AAKxB,SAASC,+BAA+B;AACxC,SAASC,iBAAiB;;AA8JnB,IAAMC,UAAN,MAAMA,iBAAwBC,YAAI,6BAAA,EAAA,EAAA;EAMvC,OAAOC,eAAqBC,cAAQH,UAAS;IAC3C,IAAII,KAAe;AACjB,YAAM,IAAIC,MAAM,wBAAA;IAClB;EACF,CAAA;EAEA,OAAOC,OAAO,CAACF,OAAAA;AACb,WAAO;MACL,IAAIA,KAAK;AACP,eAAOA;MACT;IACF;EACF;EAEA,OAAOG,QAAQ,CAACH,OAAAA;AACd,WAAaD,cAAQH,UAASA,SAAQM,KAAKF,EAAAA,CAAAA;EAC7C;;;;EAKA,OAAOI,UAQF,CACHC,KACAC,WAEOC,WAAI,aAAA;AACT,UAAM,EAAEP,GAAE,IAAK,OAAOJ;AACtB,UAAMY,SAAS,OAAOC,wBAAwB,MAC5CT,GAAGU,MACAC,kBAAkB;MACjBC,SAAS;QACPC,OAAOb,GAAGc;MACZ;IACF,CAAA,EACCV,QAAQC,GAAAA,CAAAA;AAGb,QAAI,CAACG,QAAQ;AACX,aAAO,OAAcO,YAAK,IAAQC,oBAAoBX,GAAAA,CAAAA;IACxD;AACAY,cAAU,CAACX,UAAUY,aAAaZ,QAAQE,MAAAA,GAAS,yBAAA;;;;;;;;;AACnD,WAAOA;EACT,CAAA;;;;EAKF,OAAOW,OAAwFC,UAAG,WAAWC,KAAG;AAC9G,UAAMb,SAAS,OAAOC,wBAAwB,MAAMY,IAAIC,QAAO,CAAA;AAC/D,QAAI,CAACd,QAAQ;AACX,aAAO,OAAcO,YAAK,IAAQC,oBAAoBK,IAAIhB,GAAG,CAAA;IAC/D;AACA,WAAOG;EACT,CAAA;;;;;EAMA,OAAOe,aAA2FH,UAAG,WAAWC,KAAG;AACjH,UAAMb,SAAS,OAAOZ,SAAQuB,KAAKE,GAAAA,EAAKG,KAAYC,gBAAS,oBAAoB,MAAa1B,eAAQ2B,MAAAA,CAAAA,CAAAA;AACtG,WAAcC,oBAAanB,MAAAA;EAC7B,CAAA;;;;;;EAQA,OAAOoB,MAAM,CAA2BC,QACtCjC,SAAQ4B,KAAYM,WAAI,CAAC,EAAE9B,GAAE,MAAOA,GAAG4B,IAAIC,GAAAA,CAAAA,CAAAA;;;;EAK7C,OAAOE,SAAS,CAA2BF,QACzCjC,SAAQ4B,KAAYM,WAAI,CAAC,EAAE9B,GAAE,MAAOA,GAAG+B,OAAOF,GAAAA,CAAAA,CAAAA;;;;EAKhD,OAAOG,QAAQ,CAACC,SACdrC,SAAQ4B,KAAYU,eAAQ,CAAC,EAAElC,GAAE,MAAOS,wBAAwB,MAAMT,GAAGgC,MAAMC,IAAAA,CAAAA,CAAAA,CAAAA;;;;EAKjF,OAAOE,QAGH,CAACC,kBACHxC,SAAQ4B,KACCM,WAAI,CAAC,EAAE9B,GAAE,MAAOA,GAAGmC,MAAMC,aAAAA,CAAAA,GACzBC,gBAAS,eAAA,CAAA;;;;EAMpB,OAAOC,WAGH,CAACF,kBACHxC,SAAQuC,MAAMC,aAAAA,EAAsBZ,KAC3BU,eAAQ,CAACK,gBAAgB9B,wBAAwB,MAAM8B,YAAYC,IAAG,CAAA,CAAA,CAAA;;EAKjF,OAAOC,cAAc,CACnBN,UAEAvC,SAAQ4B,KACCM,WAAI,CAAC,EAAE9B,GAAE,MAAOA,GAAG0C,eAAeP,MAAMA,KAAAA,CAAAA,GACxCE,gBAAS,qBAAA,CAAA;EAGpB,OAAOM,iBAAiB,CACtBR,UAEAvC,SAAQ6C,YAAYN,KAAAA,EAAOX,KAAYU,eAAQ,CAACK,gBAAgB9B,wBAAwB,MAAM8B,YAAYC,IAAG,CAAA,CAAA,CAAA;AACjH;",
6
+ "names": ["Context", "Effect", "Layer", "Option", "promiseWithCauseCapture", "invariant", "Service", "Tag", "notAvailable", "succeed", "db", "Error", "make", "layer", "resolve", "dxn", "schema", "gen", "object", "promiseWithCauseCapture", "graph", "createRefResolver", "context", "space", "spaceId", "fail", "ObjectNotFoundError", "invariant", "isInstanceOf", "load", "fn", "ref", "tryLoad", "loadOption", "pipe", "catchTag", "undefined", "fromNullable", "add", "obj", "map", "remove", "flush", "opts", "flatMap", "query", "queryOrFilter", "withSpan", "runQuery", "queryResult", "run", "schemaQuery", "schemaRegistry", "runSchemaQuery"]
7
+ }
@@ -0,0 +1,11 @@
1
+ import "@dxos/node-std/globals";
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, { get: all[name], enumerable: true });
6
+ };
7
+
8
+ export {
9
+ __export
10
+ };
11
+ //# sourceMappingURL=chunk-CGS2ULMK.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,32 @@
1
+ import "@dxos/node-std/globals";
2
+ import {
3
+ getEntityKind
4
+ } from "./chunk-WABSVOOX.mjs";
5
+ import {
6
+ EntityKind,
7
+ EntityKindSchema,
8
+ KindId
9
+ } from "./chunk-QU7PWSZD.mjs";
10
+ import {
11
+ __export
12
+ } from "./chunk-CGS2ULMK.mjs";
13
+
14
+ // src/Entity.ts
15
+ var Entity_exports = {};
16
+ __export(Entity_exports, {
17
+ Kind: () => Kind,
18
+ KindId: () => KindId,
19
+ KindSchema: () => KindSchema,
20
+ getKind: () => getKind
21
+ });
22
+ var Kind = EntityKind;
23
+ var KindSchema = EntityKindSchema;
24
+ var getKind = getEntityKind;
25
+
26
+ export {
27
+ Kind,
28
+ KindSchema,
29
+ getKind,
30
+ Entity_exports
31
+ };
32
+ //# sourceMappingURL=chunk-DOPKE2FQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Entity.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport type { ObjectId } from '@dxos/keys';\n\nimport { EntityKind, EntityKindSchema, KindId, getEntityKind } from './internal';\n\nexport { KindId };\n\n// NOTE: Relation does not extend Obj so that, for example, we can prevent Relations from being used as source and target objects.\n// However, we generally refer to Obj and Relation instances as \"objects\",\n// and many API methods accept both Obj.Any and Relation.Any (i.e., Entity.Unknown) instances.\n\nexport const Kind = EntityKind;\nexport type Kind = EntityKind;\nexport const KindSchema = EntityKindSchema;\n\n/**\n * Assigns a kind to an Object or Relation instance.\n */\n// NOTE: Needed to make `isRelation` and `isObject` checks work.\nexport interface OfKind<K extends Kind> {\n readonly [KindId]: K;\n readonly id: ObjectId;\n}\n\n/**\n * Obj or Relation with a specific set of properties.\n */\nexport type Entity<Props> = OfKind<Kind> & Props;\n\n/**\n * Unknown Obj or Relation.\n */\nexport interface Unknown extends OfKind<Kind> {}\n\n/**\n * Object with arbitrary properties.\n *\n * NOTE: Due to how typescript works, this type is not assignable to a specific schema type.\n * In that case, use `Obj.instanceOf` to check if an object is of a specific type.\n *\n * This type is very permissive and allows accessing any property on the object.\n * We should move to Obj.Any that is not permissive and requires explicit instanceof checks..\n */\nexport interface Any extends OfKind<Kind> {\n [key: string]: unknown;\n}\n\nexport const getKind = getEntityKind;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;;;;;;;AAcO,IAAMA,OAAOC;AAEb,IAAMC,aAAaC;AAkCnB,IAAMC,UAAUC;",
6
+ "names": ["Kind", "EntityKind", "KindSchema", "EntityKindSchema", "getKind", "getEntityKind"]
7
+ }
@@ -0,0 +1,41 @@
1
+ import "@dxos/node-std/globals";
2
+ import {
3
+ Ref,
4
+ RefArray,
5
+ getSchemaReference
6
+ } from "./chunk-6XVZF5VJ.mjs";
7
+ import {
8
+ __export
9
+ } from "./chunk-CGS2ULMK.mjs";
10
+
11
+ // src/Ref.ts
12
+ var Ref_exports = {};
13
+ __export(Ref_exports, {
14
+ Array: () => Array,
15
+ fromDXN: () => fromDXN,
16
+ isRef: () => isRef,
17
+ isRefType: () => isRefType,
18
+ make: () => make
19
+ });
20
+ import * as Option from "effect/Option";
21
+ import * as SchemaAST from "effect/SchemaAST";
22
+ var Array = RefArray;
23
+ var isRef = Ref.isRef;
24
+ var make = Ref.make;
25
+ var fromDXN = Ref.fromDXN;
26
+ var isRefType = (ast) => {
27
+ return SchemaAST.getAnnotation(ast, SchemaAST.JSONSchemaAnnotationId).pipe(Option.flatMap((jsonSchema) => "$id" in jsonSchema ? Option.some(jsonSchema) : Option.none()), Option.flatMap((jsonSchema) => {
28
+ const { typename } = getSchemaReference(jsonSchema) ?? {};
29
+ return typename ? Option.some(true) : Option.some(false);
30
+ }), Option.getOrElse(() => false));
31
+ };
32
+
33
+ export {
34
+ Array,
35
+ isRef,
36
+ make,
37
+ fromDXN,
38
+ isRefType,
39
+ Ref_exports
40
+ };
41
+ //# sourceMappingURL=chunk-ESLW4N7S.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Ref.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { Ref as Ref$, RefArray, type RefResolver } from './internal';\nimport { getSchemaReference } from './internal';\nimport type * as JsonSchema from './JsonSchema';\nimport type * as Obj from './Obj';\n\nexport type Ref<T> = Ref$<T>;\nexport type Any = Ref$<Obj.Any>;\n\nexport const Array = RefArray;\n\n/**\n * Extract reference target.\n */\nexport type Target<R extends Any> = R extends Ref$<infer T> ? T : never;\n\n/**\n * Reference resolver.\n */\nexport type Resolver = RefResolver;\n\nexport const isRef: (value: unknown) => value is Any = Ref$.isRef;\n\nexport const make = Ref$.make;\n\n// TODO(dmaretskyi): Consider just allowing `make` to accept DXN.\nexport const fromDXN = Ref$.fromDXN;\n\n// TODO(wittjosiah): Factor out?\nexport const isRefType = (ast: SchemaAST.AST): boolean => {\n return SchemaAST.getAnnotation<JsonSchema.JsonSchema>(ast, SchemaAST.JSONSchemaAnnotationId).pipe(\n Option.flatMap((jsonSchema) => ('$id' in jsonSchema ? Option.some(jsonSchema) : Option.none())),\n Option.flatMap((jsonSchema) => {\n const { typename } = getSchemaReference(jsonSchema) ?? {};\n return typename ? Option.some(true) : Option.some(false);\n }),\n Option.getOrElse(() => false),\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;AAAA;;;;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,eAAe;AAUpB,IAAMC,QAAQC;AAYd,IAAMC,QAA0CC,IAAKD;AAErD,IAAME,OAAOD,IAAKC;AAGlB,IAAMC,UAAUF,IAAKE;AAGrB,IAAMC,YAAY,CAACC,QAAAA;AACxB,SAAiBC,wBAAqCD,KAAeE,gCAAsB,EAAEC,KACpFC,eAAQ,CAACC,eAAgB,SAASA,aAAoBC,YAAKD,UAAAA,IAAqBE,YAAI,CAAA,GACpFH,eAAQ,CAACC,eAAAA;AACd,UAAM,EAAEG,SAAQ,IAAKC,mBAAmBJ,UAAAA,KAAe,CAAC;AACxD,WAAOG,WAAkBF,YAAK,IAAA,IAAeA,YAAK,KAAA;EACpD,CAAA,GACOI,iBAAU,MAAM,KAAA,CAAA;AAE3B;",
6
+ "names": ["Option", "SchemaAST", "Array", "RefArray", "isRef", "Ref$", "make", "fromDXN", "isRefType", "ast", "getAnnotation", "JSONSchemaAnnotationId", "pipe", "flatMap", "jsonSchema", "some", "none", "typename", "getSchemaReference", "getOrElse"]
7
+ }
@@ -0,0 +1,363 @@
1
+ import "@dxos/node-std/globals";
2
+ import {
3
+ Obj
4
+ } from "./chunk-AGOWBKY6.mjs";
5
+ import {
6
+ isRef
7
+ } from "./chunk-ESLW4N7S.mjs";
8
+ import {
9
+ Kind
10
+ } from "./chunk-DOPKE2FQ.mjs";
11
+ import {
12
+ MetaId,
13
+ ObjectVersionId,
14
+ VersionTypeId,
15
+ getMeta,
16
+ getObjectDXN,
17
+ isDeleted,
18
+ makeObject,
19
+ objectFromJSON,
20
+ objectToJSON
21
+ } from "./chunk-6XVZF5VJ.mjs";
22
+ import {
23
+ getDescription,
24
+ getLabel,
25
+ getSchema,
26
+ getSchemaTypename,
27
+ getTypeAnnotation,
28
+ getTypeDXN,
29
+ isInstanceOf,
30
+ setDescription,
31
+ setLabel
32
+ } from "./chunk-WABSVOOX.mjs";
33
+ import {
34
+ KindId
35
+ } from "./chunk-QU7PWSZD.mjs";
36
+ import {
37
+ __export
38
+ } from "./chunk-CGS2ULMK.mjs";
39
+
40
+ // src/Obj.ts
41
+ var Obj_exports = {};
42
+ __export(Obj_exports, {
43
+ Any: () => Any,
44
+ ID: () => ID,
45
+ Meta: () => Meta,
46
+ VersionTypeId: () => VersionTypeId,
47
+ addTag: () => addTag,
48
+ clone: () => clone,
49
+ compareVersions: () => compareVersions,
50
+ decodeVersion: () => decodeVersion,
51
+ deleteKeys: () => deleteKeys,
52
+ encodeVersion: () => encodeVersion,
53
+ fromJSON: () => fromJSON,
54
+ getDXN: () => getDXN,
55
+ getDescription: () => getDescription2,
56
+ getKeys: () => getKeys,
57
+ getLabel: () => getLabel2,
58
+ getMeta: () => getMeta2,
59
+ getSchema: () => getSchema2,
60
+ getSnapshot: () => getSnapshot,
61
+ getTypeDXN: () => getTypeDXN2,
62
+ getTypename: () => getTypename,
63
+ instanceOf: () => instanceOf,
64
+ isDeleted: () => isDeleted2,
65
+ isObject: () => isObject,
66
+ isVersion: () => isVersion,
67
+ make: () => make,
68
+ removeTag: () => removeTag,
69
+ setDescription: () => setDescription2,
70
+ setLabel: () => setLabel2,
71
+ sort: () => sort,
72
+ sortByLabel: () => sortByLabel,
73
+ sortByTypename: () => sortByTypename,
74
+ toJSON: () => toJSON,
75
+ version: () => version,
76
+ versionValid: () => versionValid
77
+ });
78
+ import * as Function from "effect/Function";
79
+ import * as Schema from "effect/Schema";
80
+ import { assertArgument, invariant } from "@dxos/invariant";
81
+ import { ObjectId } from "@dxos/keys";
82
+ import { getSnapshot as getSnapshot$ } from "@dxos/live-object";
83
+ import { assumeType, deepMapValues } from "@dxos/util";
84
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Obj.ts";
85
+ var Any = Schema.Struct({}).pipe(Obj({
86
+ typename: "dxos.org/type/Any",
87
+ version: "0.1.0"
88
+ }));
89
+ var defaultMeta = {
90
+ keys: []
91
+ };
92
+ var make = (schema, props, meta) => {
93
+ assertArgument(getTypeAnnotation(schema)?.kind === Kind.Object, "schema", "Expected an object schema");
94
+ if (props[MetaId] != null) {
95
+ meta = {
96
+ ...structuredClone(defaultMeta),
97
+ ...props[MetaId]
98
+ };
99
+ delete props[MetaId];
100
+ }
101
+ const filterUndefined = Object.fromEntries(Object.entries(props).filter(([_, v]) => v !== void 0));
102
+ return makeObject(schema, filterUndefined, {
103
+ ...defaultMeta,
104
+ ...meta
105
+ });
106
+ };
107
+ var isObject = (obj) => {
108
+ assumeType(obj);
109
+ return typeof obj === "object" && obj !== null && obj[KindId] === Kind.Object;
110
+ };
111
+ var getSnapshot = getSnapshot$;
112
+ var clone = (obj, opts) => {
113
+ const { id, ...data } = obj;
114
+ const schema = getSchema(obj);
115
+ invariant(schema != null, "Object should have a schema", {
116
+ F: __dxlog_file,
117
+ L: 157,
118
+ S: void 0,
119
+ A: [
120
+ "schema != null",
121
+ "'Object should have a schema'"
122
+ ]
123
+ });
124
+ const props = deepMapValues(data, (value, recurse) => {
125
+ if (isRef(value)) {
126
+ return value;
127
+ }
128
+ return recurse(value);
129
+ });
130
+ if (opts?.retainId) {
131
+ props.id = id;
132
+ }
133
+ const meta = getMeta2(obj);
134
+ props[MetaId] = deepMapValues(meta, (value, recurse) => {
135
+ if (isRef(value)) {
136
+ return value;
137
+ }
138
+ return recurse(value);
139
+ });
140
+ return make(schema, props);
141
+ };
142
+ var ID = ObjectId;
143
+ var instanceOf = (...args) => {
144
+ if (args.length === 1) {
145
+ return (entity) => isInstanceOf(args[0], entity);
146
+ }
147
+ return isInstanceOf(args[0], args[1]);
148
+ };
149
+ var getDXN = (entity) => {
150
+ assertArgument(!Schema.isSchema(entity), "obj", "Object should not be a schema.");
151
+ const dxn = getObjectDXN(entity);
152
+ invariant(dxn != null, "Invalid object.", {
153
+ F: __dxlog_file,
154
+ L: 213,
155
+ S: void 0,
156
+ A: [
157
+ "dxn != null",
158
+ "'Invalid object.'"
159
+ ]
160
+ });
161
+ return dxn;
162
+ };
163
+ var getTypeDXN2 = getTypeDXN;
164
+ var getSchema2 = getSchema;
165
+ var getTypename = (entity) => {
166
+ const schema = getSchema(entity);
167
+ if (schema == null) {
168
+ return getTypeDXN(entity)?.asTypeDXN()?.type;
169
+ }
170
+ return getSchemaTypename(schema);
171
+ };
172
+ var Meta = MetaId;
173
+ var getMeta2 = (entity) => {
174
+ const meta = getMeta(entity);
175
+ invariant(meta != null, "Invalid object.", {
176
+ F: __dxlog_file,
177
+ L: 253,
178
+ S: void 0,
179
+ A: [
180
+ "meta != null",
181
+ "'Invalid object.'"
182
+ ]
183
+ });
184
+ return meta;
185
+ };
186
+ var getKeys = Function.dual(2, (entity, source) => {
187
+ const meta = getMeta2(entity);
188
+ invariant(meta != null, "Invalid object.", {
189
+ F: __dxlog_file,
190
+ L: 265,
191
+ S: void 0,
192
+ A: [
193
+ "meta != null",
194
+ "'Invalid object.'"
195
+ ]
196
+ });
197
+ return meta.keys.filter((key) => key.source === source);
198
+ });
199
+ var deleteKeys = (entity, source) => {
200
+ const meta = getMeta2(entity);
201
+ for (let i = 0; i < meta.keys.length; i++) {
202
+ if (meta.keys[i].source === source) {
203
+ meta.keys.splice(i, 1);
204
+ i--;
205
+ }
206
+ }
207
+ };
208
+ var addTag = (entity, tag) => {
209
+ const meta = getMeta2(entity);
210
+ meta.tags ??= [];
211
+ meta.tags.push(tag);
212
+ };
213
+ var removeTag = (entity, tag) => {
214
+ const meta = getMeta2(entity);
215
+ if (!meta.tags) {
216
+ return;
217
+ }
218
+ for (let i = 0; i < meta.tags.length; i++) {
219
+ if (meta.tags[i] === tag) {
220
+ meta.tags.splice(i, 1);
221
+ i--;
222
+ }
223
+ }
224
+ };
225
+ var isDeleted2 = (entity) => {
226
+ const deleted = isDeleted(entity);
227
+ invariant(typeof deleted === "boolean", "Invalid object.", {
228
+ F: __dxlog_file,
229
+ L: 306,
230
+ S: void 0,
231
+ A: [
232
+ "typeof deleted === 'boolean'",
233
+ "'Invalid object.'"
234
+ ]
235
+ });
236
+ return deleted;
237
+ };
238
+ var getLabel2 = (entity) => {
239
+ const schema = getSchema(entity);
240
+ if (schema != null) {
241
+ return getLabel(schema, entity);
242
+ }
243
+ };
244
+ var setLabel2 = (entity, label) => {
245
+ const schema = getSchema(entity);
246
+ if (schema != null) {
247
+ setLabel(schema, entity, label);
248
+ }
249
+ };
250
+ var getDescription2 = (entity) => {
251
+ const schema = getSchema(entity);
252
+ if (schema != null) {
253
+ return getDescription(schema, entity);
254
+ }
255
+ };
256
+ var setDescription2 = (entity, description) => {
257
+ const schema = getSchema(entity);
258
+ if (schema != null) {
259
+ setDescription(schema, entity, description);
260
+ }
261
+ };
262
+ var toJSON = (entity) => objectToJSON(entity);
263
+ var fromJSON = objectFromJSON;
264
+ var compare = (a, b) => {
265
+ if (a == null) {
266
+ return b == null ? 0 : 1;
267
+ }
268
+ if (b == null) {
269
+ return -1;
270
+ }
271
+ return a.localeCompare(b);
272
+ };
273
+ var sortByLabel = (a, b) => compare(getLabel2(a), getLabel2(b));
274
+ var sortByTypename = (a, b) => compare(getTypename(a), getTypename(b));
275
+ var sort = (...comparators) => {
276
+ return (a, b) => {
277
+ for (const comparator of comparators) {
278
+ const result = comparator(a, b);
279
+ if (result !== 0) {
280
+ return result;
281
+ }
282
+ }
283
+ return 0;
284
+ };
285
+ };
286
+ var unversioned = {
287
+ [VersionTypeId]: {},
288
+ versioned: false
289
+ };
290
+ var isVersion = (entity) => {
291
+ return entity != null && typeof entity === "object" && VersionTypeId in entity;
292
+ };
293
+ var version = (entity) => {
294
+ const version2 = entity[ObjectVersionId];
295
+ if (version2 === void 0) {
296
+ return unversioned;
297
+ }
298
+ return version2;
299
+ };
300
+ var versionValid = (version2) => {
301
+ assertArgument(isVersion(version2), "version", "Invalid version object");
302
+ return !!version2.versioned;
303
+ };
304
+ var compareVersions = (version1, version2) => {
305
+ assertArgument(isVersion(version1), "version1", "Invalid version object");
306
+ assertArgument(isVersion(version2), "version2", "Invalid version object");
307
+ if (!versionValid(version1) || !versionValid(version2)) {
308
+ return "unversioned";
309
+ }
310
+ if (version1.automergeHeads?.length !== version2.automergeHeads?.length) {
311
+ return "different";
312
+ }
313
+ if (version1.automergeHeads?.some((head) => !version2.automergeHeads?.includes(head))) {
314
+ return "different";
315
+ }
316
+ return "equal";
317
+ };
318
+ var encodeVersion = (version2) => {
319
+ return JSON.stringify(version2);
320
+ };
321
+ var decodeVersion = (version2) => {
322
+ const parsed = JSON.parse(version2);
323
+ parsed[VersionTypeId] = {};
324
+ return parsed;
325
+ };
326
+
327
+ export {
328
+ Any,
329
+ make,
330
+ isObject,
331
+ getSnapshot,
332
+ clone,
333
+ ID,
334
+ instanceOf,
335
+ getDXN,
336
+ getTypeDXN2 as getTypeDXN,
337
+ getSchema2 as getSchema,
338
+ getTypename,
339
+ Meta,
340
+ getMeta2 as getMeta,
341
+ getKeys,
342
+ deleteKeys,
343
+ addTag,
344
+ removeTag,
345
+ isDeleted2 as isDeleted,
346
+ getLabel2 as getLabel,
347
+ setLabel2 as setLabel,
348
+ getDescription2 as getDescription,
349
+ setDescription2 as setDescription,
350
+ toJSON,
351
+ fromJSON,
352
+ sortByLabel,
353
+ sortByTypename,
354
+ sort,
355
+ isVersion,
356
+ version,
357
+ versionValid,
358
+ compareVersions,
359
+ encodeVersion,
360
+ decodeVersion,
361
+ Obj_exports
362
+ };
363
+ //# sourceMappingURL=chunk-F4YF6C3O.mjs.map