@dxos/echo 0.8.4-main.c1de068 → 0.8.4-main.c4373fc

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 (315) hide show
  1. package/README.md +1 -1
  2. package/dist/lib/browser/chunk-MWLA34S5.mjs +3843 -0
  3. package/dist/lib/browser/chunk-MWLA34S5.mjs.map +7 -0
  4. package/dist/lib/browser/chunk-OAZJQHVO.mjs +453 -0
  5. package/dist/lib/browser/chunk-OAZJQHVO.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-ORIE2FMS.mjs +514 -0
  7. package/dist/lib/browser/chunk-ORIE2FMS.mjs.map +7 -0
  8. package/dist/lib/browser/index.mjs +26 -5
  9. package/dist/lib/browser/internal/index.mjs +326 -0
  10. package/dist/lib/browser/internal/index.mjs.map +7 -0
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/query/index.mjs +23 -0
  13. package/dist/lib/browser/query/index.mjs.map +7 -0
  14. package/dist/lib/browser/testing/index.mjs +260 -32
  15. package/dist/lib/browser/testing/index.mjs.map +4 -4
  16. package/dist/lib/node-esm/chunk-AXWVDOP7.mjs +453 -0
  17. package/dist/lib/node-esm/chunk-AXWVDOP7.mjs.map +7 -0
  18. package/dist/lib/node-esm/chunk-L4PBAJDP.mjs +514 -0
  19. package/dist/lib/node-esm/chunk-L4PBAJDP.mjs.map +7 -0
  20. package/dist/lib/node-esm/chunk-YTNLFBIK.mjs +3843 -0
  21. package/dist/lib/node-esm/chunk-YTNLFBIK.mjs.map +7 -0
  22. package/dist/lib/node-esm/index.mjs +26 -5
  23. package/dist/lib/node-esm/internal/index.mjs +326 -0
  24. package/dist/lib/node-esm/internal/index.mjs.map +7 -0
  25. package/dist/lib/node-esm/meta.json +1 -1
  26. package/dist/lib/node-esm/query/index.mjs +23 -0
  27. package/dist/lib/node-esm/query/index.mjs.map +7 -0
  28. package/dist/lib/node-esm/testing/index.mjs +260 -32
  29. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  30. package/dist/types/src/Obj.d.ts +111 -17
  31. package/dist/types/src/Obj.d.ts.map +1 -1
  32. package/dist/types/src/Ref.d.ts +1 -1
  33. package/dist/types/src/Ref.d.ts.map +1 -1
  34. package/dist/types/src/Relation.d.ts +11 -8
  35. package/dist/types/src/Relation.d.ts.map +1 -1
  36. package/dist/types/src/Type.d.ts +17 -18
  37. package/dist/types/src/Type.d.ts.map +1 -1
  38. package/dist/types/src/errors.d.ts +72 -0
  39. package/dist/types/src/errors.d.ts.map +1 -0
  40. package/dist/types/src/index.d.ts +3 -1
  41. package/dist/types/src/index.d.ts.map +1 -1
  42. package/dist/types/src/internal/ast/annotation-helper.d.ts +8 -0
  43. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +1 -0
  44. package/dist/types/src/internal/ast/annotations.d.ts +119 -0
  45. package/dist/types/src/internal/ast/annotations.d.ts.map +1 -0
  46. package/dist/types/src/internal/ast/annotations.test.d.ts +2 -0
  47. package/dist/types/src/internal/ast/annotations.test.d.ts.map +1 -0
  48. package/dist/types/src/internal/ast/entity-kind.d.ts +10 -0
  49. package/dist/types/src/internal/ast/entity-kind.d.ts.map +1 -0
  50. package/dist/types/src/internal/ast/index.d.ts +5 -0
  51. package/dist/types/src/internal/ast/index.d.ts.map +1 -0
  52. package/dist/types/src/internal/ast/types.d.ts +6 -0
  53. package/dist/types/src/internal/ast/types.d.ts.map +1 -0
  54. package/dist/types/src/internal/formats/date.d.ts +63 -0
  55. package/dist/types/src/internal/formats/date.d.ts.map +1 -0
  56. package/dist/types/src/internal/formats/date.test.d.ts +2 -0
  57. package/dist/types/src/internal/formats/date.test.d.ts.map +1 -0
  58. package/dist/types/src/internal/formats/format.d.ts +30 -0
  59. package/dist/types/src/internal/formats/format.d.ts.map +1 -0
  60. package/dist/types/src/internal/formats/format.test.d.ts +2 -0
  61. package/dist/types/src/internal/formats/format.test.d.ts.map +1 -0
  62. package/dist/types/src/internal/formats/index.d.ts +8 -0
  63. package/dist/types/src/internal/formats/index.d.ts.map +1 -0
  64. package/dist/types/src/internal/formats/number.d.ts +31 -0
  65. package/dist/types/src/internal/formats/number.d.ts.map +1 -0
  66. package/dist/types/src/internal/formats/object.d.ts +35 -0
  67. package/dist/types/src/internal/formats/object.d.ts.map +1 -0
  68. package/dist/types/src/internal/formats/select.d.ts +11 -0
  69. package/dist/types/src/internal/formats/select.d.ts.map +1 -0
  70. package/dist/types/src/internal/formats/string.d.ts +38 -0
  71. package/dist/types/src/internal/formats/string.d.ts.map +1 -0
  72. package/dist/types/src/internal/formats/types.d.ts +68 -0
  73. package/dist/types/src/internal/formats/types.d.ts.map +1 -0
  74. package/dist/types/src/internal/index.d.ts +15 -0
  75. package/dist/types/src/internal/index.d.ts.map +1 -0
  76. package/dist/types/src/internal/json/annotations.d.ts +19 -0
  77. package/dist/types/src/internal/json/annotations.d.ts.map +1 -0
  78. package/dist/types/src/internal/json/effect-schema.test.d.ts +2 -0
  79. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +1 -0
  80. package/dist/types/src/internal/json/index.d.ts +2 -0
  81. package/dist/types/src/internal/json/index.d.ts.map +1 -0
  82. package/dist/types/src/internal/json/json-schema.d.ts +32 -0
  83. package/dist/types/src/internal/json/json-schema.d.ts.map +1 -0
  84. package/dist/types/src/internal/json/json-schema.test.d.ts +2 -0
  85. package/dist/types/src/internal/json/json-schema.test.d.ts.map +1 -0
  86. package/dist/types/src/internal/json-schema/index.d.ts +3 -0
  87. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -0
  88. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts +7 -0
  89. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -0
  90. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +250 -0
  91. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -0
  92. package/dist/types/src/internal/object/accessors.d.ts +29 -0
  93. package/dist/types/src/internal/object/accessors.d.ts.map +1 -0
  94. package/dist/types/src/internal/object/common.d.ts +18 -0
  95. package/dist/types/src/internal/object/common.d.ts.map +1 -0
  96. package/dist/types/src/internal/object/create.d.ts +40 -0
  97. package/dist/types/src/internal/object/create.d.ts.map +1 -0
  98. package/dist/types/src/internal/object/create.test.d.ts +2 -0
  99. package/dist/types/src/internal/object/create.test.d.ts.map +1 -0
  100. package/dist/types/src/internal/object/deleted.d.ts +6 -0
  101. package/dist/types/src/internal/object/deleted.d.ts.map +1 -0
  102. package/dist/types/src/internal/object/entity.d.ts +22 -0
  103. package/dist/types/src/internal/object/entity.d.ts.map +1 -0
  104. package/dist/types/src/internal/object/expando.d.ts +14 -0
  105. package/dist/types/src/internal/object/expando.d.ts.map +1 -0
  106. package/dist/types/src/internal/object/ids.d.ts +6 -0
  107. package/dist/types/src/internal/object/ids.d.ts.map +1 -0
  108. package/dist/types/src/internal/object/index.d.ts +17 -0
  109. package/dist/types/src/internal/object/index.d.ts.map +1 -0
  110. package/dist/types/src/internal/object/inspect.d.ts +2 -0
  111. package/dist/types/src/internal/object/inspect.d.ts.map +1 -0
  112. package/dist/types/src/internal/object/json-serializer.d.ts +32 -0
  113. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -0
  114. package/dist/types/src/internal/object/json-serializer.test.d.ts +2 -0
  115. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +1 -0
  116. package/dist/types/src/internal/object/meta.d.ts +31 -0
  117. package/dist/types/src/internal/object/meta.d.ts.map +1 -0
  118. package/dist/types/src/internal/object/model.d.ts +117 -0
  119. package/dist/types/src/internal/object/model.d.ts.map +1 -0
  120. package/dist/types/src/internal/object/relation.d.ts +17 -0
  121. package/dist/types/src/internal/object/relation.d.ts.map +1 -0
  122. package/dist/types/src/internal/object/schema-validator.d.ts +15 -0
  123. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -0
  124. package/dist/types/src/internal/object/schema-validator.test.d.ts +2 -0
  125. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +1 -0
  126. package/dist/types/src/internal/object/typed-object.d.ts +31 -0
  127. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -0
  128. package/dist/types/src/internal/object/typed-object.test.d.ts +2 -0
  129. package/dist/types/src/internal/object/typed-object.test.d.ts.map +1 -0
  130. package/dist/types/src/internal/object/typed-relation.d.ts +32 -0
  131. package/dist/types/src/internal/object/typed-relation.d.ts.map +1 -0
  132. package/dist/types/src/internal/object/typename.d.ts +15 -0
  133. package/dist/types/src/internal/object/typename.d.ts.map +1 -0
  134. package/dist/types/src/internal/object/version.d.ts +14 -0
  135. package/dist/types/src/internal/object/version.d.ts.map +1 -0
  136. package/dist/types/src/internal/projection/compose.d.ts +6 -0
  137. package/dist/types/src/internal/projection/compose.d.ts.map +1 -0
  138. package/dist/types/src/internal/projection/compose.test.d.ts +2 -0
  139. package/dist/types/src/internal/projection/compose.test.d.ts.map +1 -0
  140. package/dist/types/src/internal/projection/index.d.ts +2 -0
  141. package/dist/types/src/internal/projection/index.d.ts.map +1 -0
  142. package/dist/types/src/internal/proxy/handler.test.d.ts +2 -0
  143. package/dist/types/src/internal/proxy/handler.test.d.ts.map +1 -0
  144. package/dist/types/src/internal/proxy/reactive-object.d.ts +15 -0
  145. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +1 -0
  146. package/dist/types/src/internal/proxy/schema.test.d.ts +2 -0
  147. package/dist/types/src/internal/proxy/schema.test.d.ts.map +1 -0
  148. package/dist/types/src/internal/proxy/typed-handler.d.ts +44 -0
  149. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -0
  150. package/dist/types/src/internal/proxy/typed-handler.test.d.ts +2 -0
  151. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +1 -0
  152. package/dist/types/src/internal/proxy/typed-object.test.d.ts +2 -0
  153. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +1 -0
  154. package/dist/types/src/internal/query/index.d.ts +2 -0
  155. package/dist/types/src/internal/query/index.d.ts.map +1 -0
  156. package/dist/types/src/internal/query/query.d.ts +17 -0
  157. package/dist/types/src/internal/query/query.d.ts.map +1 -0
  158. package/dist/types/src/internal/ref/index.d.ts +3 -0
  159. package/dist/types/src/internal/ref/index.d.ts.map +1 -0
  160. package/dist/types/src/internal/ref/ref-array.d.ts +21 -0
  161. package/dist/types/src/internal/ref/ref-array.d.ts.map +1 -0
  162. package/dist/types/src/internal/ref/ref.d.ts +206 -0
  163. package/dist/types/src/internal/ref/ref.d.ts.map +1 -0
  164. package/dist/types/src/internal/ref/ref.test.d.ts +2 -0
  165. package/dist/types/src/internal/ref/ref.test.d.ts.map +1 -0
  166. package/dist/types/src/internal/schema/echo-schema.d.ts +168 -0
  167. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -0
  168. package/dist/types/src/internal/schema/index.d.ts +7 -0
  169. package/dist/types/src/internal/schema/index.d.ts.map +1 -0
  170. package/dist/types/src/internal/schema/manipulation.d.ts +10 -0
  171. package/dist/types/src/internal/schema/manipulation.d.ts.map +1 -0
  172. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +18 -0
  173. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +1 -0
  174. package/dist/types/src/internal/schema/snapshot.d.ts +6 -0
  175. package/dist/types/src/internal/schema/snapshot.d.ts.map +1 -0
  176. package/dist/types/src/internal/schema/stored-schema.d.ts +13 -0
  177. package/dist/types/src/internal/schema/stored-schema.d.ts.map +1 -0
  178. package/dist/types/src/internal/testing/index.d.ts +3 -0
  179. package/dist/types/src/internal/testing/index.d.ts.map +1 -0
  180. package/dist/types/src/internal/testing/types.d.ts +455 -0
  181. package/dist/types/src/internal/testing/types.d.ts.map +1 -0
  182. package/dist/types/src/internal/testing/utils.d.ts +10 -0
  183. package/dist/types/src/internal/testing/utils.d.ts.map +1 -0
  184. package/dist/types/src/internal/types/index.d.ts +3 -0
  185. package/dist/types/src/internal/types/index.d.ts.map +1 -0
  186. package/dist/types/src/internal/types/types.d.ts +79 -0
  187. package/dist/types/src/internal/types/types.d.ts.map +1 -0
  188. package/dist/types/src/internal/types/types.test.d.ts +2 -0
  189. package/dist/types/src/internal/types/types.test.d.ts.map +1 -0
  190. package/dist/types/src/internal/types/util.d.ts +5 -0
  191. package/dist/types/src/internal/types/util.d.ts.map +1 -0
  192. package/dist/types/src/query/index.d.ts +2 -1
  193. package/dist/types/src/query/index.d.ts.map +1 -1
  194. package/dist/types/src/query/{dsl.d.ts → query.d.ts} +44 -15
  195. package/dist/types/src/query/query.d.ts.map +1 -0
  196. package/dist/types/src/query/query.test.d.ts +2 -0
  197. package/dist/types/src/query/query.test.d.ts.map +1 -0
  198. package/dist/types/src/query/tag.d.ts +18 -0
  199. package/dist/types/src/query/tag.d.ts.map +1 -0
  200. package/dist/types/src/testing/echo-schema.d.ts +7 -0
  201. package/dist/types/src/testing/echo-schema.d.ts.map +1 -0
  202. package/dist/types/src/testing/index.d.ts +2 -0
  203. package/dist/types/src/testing/index.d.ts.map +1 -1
  204. package/dist/types/src/testing/types.d.ts +18 -18
  205. package/dist/types/src/testing/types.d.ts.map +1 -1
  206. package/dist/types/tsconfig.tsbuildinfo +1 -1
  207. package/package.json +34 -16
  208. package/src/Obj.ts +250 -27
  209. package/src/Ref.ts +1 -2
  210. package/src/Relation.ts +25 -13
  211. package/src/Type.ts +32 -31
  212. package/src/errors.ts +18 -0
  213. package/src/index.ts +4 -1
  214. package/src/internal/ast/annotation-helper.ts +22 -0
  215. package/src/internal/ast/annotations.test.ts +98 -0
  216. package/src/internal/ast/annotations.ts +212 -0
  217. package/src/internal/ast/entity-kind.ts +15 -0
  218. package/src/internal/ast/index.ts +8 -0
  219. package/src/internal/ast/types.ts +17 -0
  220. package/src/internal/formats/date.test.ts +56 -0
  221. package/src/internal/formats/date.ts +217 -0
  222. package/src/internal/formats/format.test.ts +77 -0
  223. package/src/internal/formats/format.ts +52 -0
  224. package/src/internal/formats/index.ts +12 -0
  225. package/src/internal/formats/number.ts +89 -0
  226. package/src/internal/formats/object.ts +80 -0
  227. package/src/internal/formats/select.ts +16 -0
  228. package/src/internal/formats/string.ts +76 -0
  229. package/src/internal/formats/types.ts +175 -0
  230. package/src/internal/index.ts +22 -0
  231. package/src/internal/json/annotations.ts +50 -0
  232. package/src/internal/json/effect-schema.test.ts +143 -0
  233. package/src/internal/json/index.ts +5 -0
  234. package/src/internal/json/json-schema.test.ts +726 -0
  235. package/src/internal/json/json-schema.ts +548 -0
  236. package/src/internal/json-schema/index.ts +6 -0
  237. package/src/internal/json-schema/json-schema-normalize.ts +109 -0
  238. package/src/internal/json-schema/json-schema-type.ts +403 -0
  239. package/src/internal/object/accessors.ts +115 -0
  240. package/src/internal/object/common.ts +76 -0
  241. package/src/internal/object/create.test.ts +118 -0
  242. package/src/internal/object/create.ts +96 -0
  243. package/src/internal/object/deleted.ts +19 -0
  244. package/src/internal/object/entity.ts +204 -0
  245. package/src/internal/object/expando.ts +21 -0
  246. package/src/internal/object/ids.ts +12 -0
  247. package/src/internal/object/index.ts +20 -0
  248. package/src/internal/object/inspect.ts +48 -0
  249. package/src/internal/object/json-serializer.test.ts +99 -0
  250. package/src/internal/object/json-serializer.ts +225 -0
  251. package/src/internal/object/meta.ts +62 -0
  252. package/src/internal/object/model.ts +170 -0
  253. package/src/internal/object/relation.ts +24 -0
  254. package/src/internal/object/schema-validator.test.ts +186 -0
  255. package/src/internal/object/schema-validator.ts +241 -0
  256. package/src/internal/object/typed-object.test.ts +34 -0
  257. package/src/internal/object/typed-object.ts +81 -0
  258. package/src/internal/object/typed-relation.ts +85 -0
  259. package/src/internal/object/typename.ts +61 -0
  260. package/src/internal/object/version.ts +22 -0
  261. package/src/internal/projection/compose.test.ts +43 -0
  262. package/src/internal/projection/compose.ts +36 -0
  263. package/src/internal/projection/index.ts +5 -0
  264. package/src/internal/proxy/handler.test.ts +163 -0
  265. package/src/internal/proxy/reactive-object.ts +108 -0
  266. package/src/internal/proxy/schema.test.ts +136 -0
  267. package/src/internal/proxy/typed-handler.test.ts +102 -0
  268. package/src/internal/proxy/typed-handler.ts +228 -0
  269. package/src/internal/proxy/typed-object.test.ts +100 -0
  270. package/src/internal/query/index.ts +5 -0
  271. package/src/internal/query/query.ts +23 -0
  272. package/src/internal/ref/index.ts +6 -0
  273. package/src/internal/ref/ref-array.ts +39 -0
  274. package/src/internal/ref/ref.test.ts +100 -0
  275. package/src/internal/ref/ref.ts +521 -0
  276. package/src/internal/schema/echo-schema.ts +383 -0
  277. package/src/internal/schema/index.ts +10 -0
  278. package/src/internal/schema/manipulation.ts +86 -0
  279. package/src/internal/schema/runtime-schema-registry.ts +78 -0
  280. package/src/internal/schema/snapshot.ts +25 -0
  281. package/src/internal/schema/stored-schema.ts +26 -0
  282. package/src/internal/testing/index.ts +6 -0
  283. package/src/internal/testing/types.ts +211 -0
  284. package/src/internal/testing/utils.ts +54 -0
  285. package/src/internal/types/index.ts +6 -0
  286. package/src/internal/types/types.test.ts +48 -0
  287. package/src/internal/types/types.ts +176 -0
  288. package/src/internal/types/util.ts +9 -0
  289. package/src/query/index.ts +2 -1
  290. package/src/query/{dsl.test.ts → query.test.ts} +41 -2
  291. package/src/query/{dsl.ts → query.ts} +170 -32
  292. package/src/query/tag.ts +35 -0
  293. package/src/test/api.test.ts +17 -10
  294. package/src/testing/echo-schema.ts +39 -0
  295. package/src/testing/index.ts +2 -0
  296. package/src/testing/types.ts +1 -1
  297. package/dist/lib/browser/chunk-EUA7CM23.mjs +0 -619
  298. package/dist/lib/browser/chunk-EUA7CM23.mjs.map +0 -7
  299. package/dist/lib/node-esm/chunk-IV6BWGHK.mjs +0 -619
  300. package/dist/lib/node-esm/chunk-IV6BWGHK.mjs.map +0 -7
  301. package/dist/types/src/experimental/database.d.ts +0 -8
  302. package/dist/types/src/experimental/database.d.ts.map +0 -1
  303. package/dist/types/src/experimental/index.d.ts +0 -1
  304. package/dist/types/src/experimental/index.d.ts.map +0 -1
  305. package/dist/types/src/experimental/queue.d.ts +0 -8
  306. package/dist/types/src/experimental/queue.d.ts.map +0 -1
  307. package/dist/types/src/experimental/space.d.ts +0 -8
  308. package/dist/types/src/experimental/space.d.ts.map +0 -1
  309. package/dist/types/src/query/dsl.d.ts.map +0 -1
  310. package/dist/types/src/query/dsl.test.d.ts +0 -2
  311. package/dist/types/src/query/dsl.test.d.ts.map +0 -1
  312. package/src/experimental/database.ts +0 -11
  313. package/src/experimental/index.ts +0 -7
  314. package/src/experimental/queue.ts +0 -11
  315. package/src/experimental/space.ts +0 -11
@@ -0,0 +1,514 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ ATTR_RELATION_SOURCE,
4
+ ATTR_RELATION_TARGET,
5
+ EchoObject,
6
+ EchoRelation,
7
+ EntityKind,
8
+ EntityKindId,
9
+ Expando,
10
+ Format,
11
+ JsonSchemaType,
12
+ MetaId,
13
+ ObjectVersionId,
14
+ Ref,
15
+ RelationSourceDXNId,
16
+ RelationSourceId,
17
+ RelationTargetDXNId,
18
+ RelationTargetId,
19
+ VersionTypeId,
20
+ __export,
21
+ getLabel,
22
+ getMeta,
23
+ getObjectDXN,
24
+ getSchema,
25
+ getSchemaDXN,
26
+ getSchemaTypename,
27
+ getSchemaVersion,
28
+ getType,
29
+ getTypeAnnotation,
30
+ isDeleted,
31
+ isInstanceOf,
32
+ isMutable,
33
+ live,
34
+ objectFromJSON,
35
+ objectToJSON,
36
+ setLabel,
37
+ toEffectSchema,
38
+ toJsonSchema
39
+ } from "./chunk-YTNLFBIK.mjs";
40
+
41
+ // src/errors.ts
42
+ import { BaseError } from "@dxos/errors";
43
+ var SchemaNotFoundError = class extends BaseError.extend("SCHEMA_NOT_FOUND", "Schema not found") {
44
+ constructor(schema, options) {
45
+ super({
46
+ context: {
47
+ schema
48
+ },
49
+ ...options
50
+ });
51
+ }
52
+ };
53
+ var ObjectNotFoundError = class extends BaseError.extend("OBJECT_NOT_FOUND", "Object not found") {
54
+ constructor(dxn, options) {
55
+ super({
56
+ context: {
57
+ dxn
58
+ },
59
+ ...options
60
+ });
61
+ }
62
+ };
63
+
64
+ // src/Key.ts
65
+ var Key_exports = {};
66
+ __export(Key_exports, {
67
+ ObjectId: () => ObjectId,
68
+ SpaceId: () => SpaceId
69
+ });
70
+ import { SpaceId, ObjectId } from "@dxos/keys";
71
+
72
+ // src/Obj.ts
73
+ var Obj_exports = {};
74
+ __export(Obj_exports, {
75
+ Any: () => Any,
76
+ Meta: () => Meta,
77
+ VersionTypeId: () => VersionTypeId2,
78
+ clone: () => clone,
79
+ compareVersions: () => compareVersions,
80
+ decodeVersion: () => decodeVersion,
81
+ deleteKeys: () => deleteKeys,
82
+ encodeVersion: () => encodeVersion,
83
+ fromJSON: () => fromJSON,
84
+ getDXN: () => getDXN2,
85
+ getKeys: () => getKeys,
86
+ getLabel: () => getLabel2,
87
+ getMeta: () => getMeta3,
88
+ getSchema: () => getSchema2,
89
+ getSnapshot: () => getSnapshot2,
90
+ getTypeDXN: () => getTypeDXN,
91
+ getTypename: () => getTypename2,
92
+ instanceOf: () => instanceOf,
93
+ isDeleted: () => isDeleted2,
94
+ isObject: () => isObject,
95
+ isVersion: () => isVersion,
96
+ make: () => make,
97
+ setLabel: () => setLabel2,
98
+ sort: () => sort,
99
+ sortByLabel: () => sortByLabel,
100
+ sortByTypename: () => sortByTypename,
101
+ toJSON: () => toJSON,
102
+ version: () => version,
103
+ versionValid: () => versionValid
104
+ });
105
+ import * as Function from "effect/Function";
106
+ import * as Schema from "effect/Schema";
107
+ import { assertArgument, invariant as invariant2 } from "@dxos/invariant";
108
+ import * as LiveObject from "@dxos/live-object";
109
+ import { assumeType, deepMapValues } from "@dxos/util";
110
+
111
+ // src/Type.ts
112
+ var Type_exports = {};
113
+ __export(Type_exports, {
114
+ DXN: () => DXN,
115
+ Expando: () => Expando2,
116
+ Format: () => Format,
117
+ JsonSchema: () => JsonSchemaType,
118
+ Kind: () => Kind,
119
+ KindId: () => KindId,
120
+ Obj: () => Obj,
121
+ ObjectId: () => ObjectId2,
122
+ Ref: () => Ref2,
123
+ Relation: () => Relation,
124
+ SpaceId: () => SpaceId2,
125
+ getDXN: () => getDXN,
126
+ getMeta: () => getMeta2,
127
+ getTypename: () => getTypename,
128
+ getVersion: () => getVersion,
129
+ isMutable: () => isMutable2,
130
+ toEffectSchema: () => toEffectSchema,
131
+ toJsonSchema: () => toJsonSchema
132
+ });
133
+ import { invariant } from "@dxos/invariant";
134
+ import { SpaceId as SpaceId2, ObjectId as ObjectId2, DXN } from "@dxos/keys";
135
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
136
+ var KindId = EntityKindId;
137
+ var Kind = EntityKind;
138
+ var Obj = EchoObject;
139
+ var Expando2 = Expando;
140
+ var Relation = EchoRelation;
141
+ var Ref2 = Ref;
142
+ var getDXN = (schema) => {
143
+ return getSchemaDXN(schema);
144
+ };
145
+ var getTypename = (schema) => {
146
+ const typename = getSchemaTypename(schema);
147
+ invariant(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
148
+ F: __dxlog_file,
149
+ L: 211,
150
+ S: void 0,
151
+ A: [
152
+ "typeof typename === 'string' && !typename.startsWith('dxn:')",
153
+ "'Invalid typename'"
154
+ ]
155
+ });
156
+ return typename;
157
+ };
158
+ var getVersion = (schema) => {
159
+ const version2 = getSchemaVersion(schema);
160
+ invariant(typeof version2 === "string" && version2.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
161
+ F: __dxlog_file,
162
+ L: 221,
163
+ S: void 0,
164
+ A: [
165
+ "typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
166
+ "'Invalid version'"
167
+ ]
168
+ });
169
+ return version2;
170
+ };
171
+ var isMutable2 = isMutable;
172
+ var getMeta2 = (schema) => {
173
+ return getTypeAnnotation(schema);
174
+ };
175
+
176
+ // src/Obj.ts
177
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo/src/Obj.ts";
178
+ var Any = Schema.Struct({}).pipe(Obj({
179
+ typename: "dxos.org/types/Any",
180
+ version: "0.1.0"
181
+ }));
182
+ var Meta = MetaId;
183
+ var DEFAULT_META = {
184
+ keys: []
185
+ };
186
+ var make = (schema, props, meta) => {
187
+ assertArgument(getTypeAnnotation(schema)?.kind === EntityKind.Object, "schema", "Expected an object schema");
188
+ if (props[MetaId] != null) {
189
+ meta = {
190
+ ...structuredClone(DEFAULT_META),
191
+ ...props[MetaId]
192
+ };
193
+ delete props[MetaId];
194
+ }
195
+ return live(schema, props, {
196
+ keys: [],
197
+ ...meta
198
+ });
199
+ };
200
+ var isObject = (obj) => {
201
+ assumeType(obj);
202
+ return typeof obj === "object" && obj !== null && obj[EntityKindId] === EntityKind.Object;
203
+ };
204
+ var instanceOf = (...args) => {
205
+ if (args.length === 1) {
206
+ return (obj) => isInstanceOf(args[0], obj);
207
+ }
208
+ return isInstanceOf(args[0], args[1]);
209
+ };
210
+ var getSchema2 = getSchema;
211
+ var getDXN2 = (obj) => {
212
+ assertArgument(!Schema.isSchema(obj), "obj", "Object should not be a schema.");
213
+ const dxn = getObjectDXN(obj);
214
+ invariant2(dxn != null, "Invalid object.", {
215
+ F: __dxlog_file2,
216
+ L: 123,
217
+ S: void 0,
218
+ A: [
219
+ "dxn != null",
220
+ "'Invalid object.'"
221
+ ]
222
+ });
223
+ return dxn;
224
+ };
225
+ var getTypeDXN = getType;
226
+ var getTypename2 = (obj) => {
227
+ const schema = getSchema2(obj);
228
+ if (schema == null) {
229
+ return getType(obj)?.asTypeDXN()?.type;
230
+ }
231
+ return getSchemaTypename(schema);
232
+ };
233
+ var getMeta3 = (obj) => {
234
+ const meta = getMeta(obj);
235
+ invariant2(meta != null, "Invalid object.", {
236
+ F: __dxlog_file2,
237
+ L: 151,
238
+ S: void 0,
239
+ A: [
240
+ "meta != null",
241
+ "'Invalid object.'"
242
+ ]
243
+ });
244
+ return meta;
245
+ };
246
+ var getKeys = Function.dual(2, (obj, source) => {
247
+ const meta = getMeta(obj);
248
+ invariant2(meta != null, "Invalid object.", {
249
+ F: __dxlog_file2,
250
+ L: 163,
251
+ S: void 0,
252
+ A: [
253
+ "meta != null",
254
+ "'Invalid object.'"
255
+ ]
256
+ });
257
+ return meta.keys.filter((key) => key.source === source);
258
+ });
259
+ var deleteKeys = (obj, source) => {
260
+ const meta = getMeta(obj);
261
+ for (let i = 0; i < meta.keys.length; i++) {
262
+ if (meta.keys[i].source === source) {
263
+ meta.keys.splice(i, 1);
264
+ i--;
265
+ }
266
+ }
267
+ };
268
+ var isDeleted2 = (obj) => {
269
+ const deleted = isDeleted(obj);
270
+ invariant2(typeof deleted === "boolean", "Invalid object.", {
271
+ F: __dxlog_file2,
272
+ L: 185,
273
+ S: void 0,
274
+ A: [
275
+ "typeof deleted === 'boolean'",
276
+ "'Invalid object.'"
277
+ ]
278
+ });
279
+ return deleted;
280
+ };
281
+ var getLabel2 = (obj) => {
282
+ const schema = getSchema2(obj);
283
+ if (schema != null) {
284
+ return getLabel(schema, obj);
285
+ }
286
+ };
287
+ var setLabel2 = (obj, label) => {
288
+ const schema = getSchema2(obj);
289
+ if (schema != null) {
290
+ setLabel(schema, obj, label);
291
+ }
292
+ };
293
+ var compare = (a, b) => {
294
+ if (a == null) {
295
+ return b == null ? 0 : 1;
296
+ }
297
+ if (b == null) {
298
+ return -1;
299
+ }
300
+ return a.localeCompare(b);
301
+ };
302
+ var sortByLabel = (a, b) => compare(getLabel2(a), getLabel2(b));
303
+ var sortByTypename = (a, b) => compare(getTypename2(a), getTypename2(b));
304
+ var sort = (...comparators) => {
305
+ return (a, b) => {
306
+ for (const comparator of comparators) {
307
+ const result = comparator(a, b);
308
+ if (result !== 0) {
309
+ return result;
310
+ }
311
+ }
312
+ return 0;
313
+ };
314
+ };
315
+ var toJSON = (obj) => objectToJSON(obj);
316
+ var fromJSON = objectFromJSON;
317
+ var getSnapshot2 = LiveObject.getSnapshot;
318
+ var clone = (obj, opts) => {
319
+ const { id, ...data } = obj;
320
+ const schema = getSchema2(obj);
321
+ invariant2(schema != null, "Object should have a schema", {
322
+ F: __dxlog_file2,
323
+ L: 278,
324
+ S: void 0,
325
+ A: [
326
+ "schema != null",
327
+ "'Object should have a schema'"
328
+ ]
329
+ });
330
+ const props = deepMapValues(data, (value, recurse) => {
331
+ if (Ref.isRef(value)) {
332
+ return value;
333
+ }
334
+ return recurse(value);
335
+ });
336
+ if (opts?.retainId) {
337
+ props.id = id;
338
+ }
339
+ const meta = getMeta3(obj);
340
+ props[MetaId] = deepMapValues(meta, (value, recurse) => {
341
+ if (Ref.isRef(value)) {
342
+ return value;
343
+ }
344
+ return recurse(value);
345
+ });
346
+ return make(schema, props);
347
+ };
348
+ var VersionTypeId2 = VersionTypeId;
349
+ var unversioned = {
350
+ [VersionTypeId2]: {},
351
+ versioned: false
352
+ };
353
+ var isVersion = (obj) => {
354
+ return obj != null && typeof obj === "object" && VersionTypeId2 in obj;
355
+ };
356
+ var version = (obj) => {
357
+ const version2 = obj[ObjectVersionId];
358
+ if (version2 === void 0) {
359
+ return unversioned;
360
+ }
361
+ return version2;
362
+ };
363
+ var versionValid = (version2) => {
364
+ assertArgument(isVersion(version2), "version", "Invalid version object");
365
+ return !!version2.versioned;
366
+ };
367
+ var compareVersions = (version1, version2) => {
368
+ assertArgument(isVersion(version1), "version1", "Invalid version object");
369
+ assertArgument(isVersion(version2), "version2", "Invalid version object");
370
+ if (!versionValid(version1) || !versionValid(version2)) {
371
+ return "unversioned";
372
+ }
373
+ if (version1.automergeHeads?.length !== version2.automergeHeads?.length) {
374
+ return "different";
375
+ }
376
+ if (version1.automergeHeads?.some((head) => !version2.automergeHeads?.includes(head))) {
377
+ return "different";
378
+ }
379
+ return "equal";
380
+ };
381
+ var encodeVersion = (version2) => {
382
+ return JSON.stringify(version2);
383
+ };
384
+ var decodeVersion = (version2) => {
385
+ const parsed = JSON.parse(version2);
386
+ parsed[VersionTypeId2] = {};
387
+ return parsed;
388
+ };
389
+
390
+ // src/Relation.ts
391
+ var Relation_exports = {};
392
+ __export(Relation_exports, {
393
+ Any: () => Any2,
394
+ Source: () => Source,
395
+ Target: () => Target,
396
+ getSource: () => getSource,
397
+ getSourceDXN: () => getSourceDXN,
398
+ getTarget: () => getTarget,
399
+ getTargetDXN: () => getTargetDXN,
400
+ isRelation: () => isRelation,
401
+ make: () => make2
402
+ });
403
+ import * as Schema2 from "effect/Schema";
404
+ import { raise } from "@dxos/debug";
405
+ import { assertArgument as assertArgument2, invariant as invariant3 } from "@dxos/invariant";
406
+ import { DXN as DXN2 } from "@dxos/keys";
407
+ import { assumeType as assumeType2 } from "@dxos/util";
408
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo/src/Relation.ts";
409
+ var Any2 = Schema2.Struct({}).pipe(Relation({
410
+ typename: "dxos.org/types/Any",
411
+ version: "0.1.0",
412
+ source: Any,
413
+ target: Any
414
+ }));
415
+ var Source = RelationSourceId;
416
+ var Target = RelationTargetId;
417
+ var make2 = (schema, props, meta) => {
418
+ assertArgument2(getTypeAnnotation(schema)?.kind === EntityKind.Relation, "schema", "Expected a relation schema");
419
+ if (props[MetaId] != null) {
420
+ meta = props[MetaId];
421
+ delete props[MetaId];
422
+ }
423
+ const sourceDXN = getObjectDXN(props[Source]) ?? raise(new Error("Unresolved relation source"));
424
+ const targetDXN = getObjectDXN(props[Target]) ?? raise(new Error("Unresolved relation target"));
425
+ props[RelationSourceDXNId] = sourceDXN;
426
+ props[RelationTargetDXNId] = targetDXN;
427
+ return live(schema, props, meta);
428
+ };
429
+ var isRelation = (value) => {
430
+ if (typeof value !== "object" || value === null) {
431
+ return false;
432
+ }
433
+ if (ATTR_RELATION_SOURCE in value || ATTR_RELATION_TARGET in value) {
434
+ return true;
435
+ }
436
+ const kind = value[EntityKindId];
437
+ return kind === EntityKind.Relation;
438
+ };
439
+ var getSourceDXN = (value) => {
440
+ assertArgument2(isRelation(value), "Expected a relation");
441
+ assumeType2(value);
442
+ const dxn = value[RelationSourceDXNId];
443
+ invariant3(dxn instanceof DXN2, void 0, {
444
+ F: __dxlog_file3,
445
+ L: 110,
446
+ S: void 0,
447
+ A: [
448
+ "dxn instanceof DXN",
449
+ ""
450
+ ]
451
+ });
452
+ return dxn;
453
+ };
454
+ var getTargetDXN = (value) => {
455
+ assertArgument2(isRelation(value), "Expected a relation");
456
+ assumeType2(value);
457
+ const dxn = value[RelationTargetDXNId];
458
+ invariant3(dxn instanceof DXN2, void 0, {
459
+ F: __dxlog_file3,
460
+ L: 122,
461
+ S: void 0,
462
+ A: [
463
+ "dxn instanceof DXN",
464
+ ""
465
+ ]
466
+ });
467
+ return dxn;
468
+ };
469
+ var getSource = (relation) => {
470
+ assertArgument2(isRelation(relation), "Expected a relation");
471
+ assumeType2(relation);
472
+ const obj = relation[RelationSourceId];
473
+ invariant3(obj !== void 0, `Invalid source: ${relation.id}`, {
474
+ F: __dxlog_file3,
475
+ L: 134,
476
+ S: void 0,
477
+ A: [
478
+ "obj !== undefined",
479
+ "`Invalid source: ${relation.id}`"
480
+ ]
481
+ });
482
+ return obj;
483
+ };
484
+ var getTarget = (relation) => {
485
+ assertArgument2(isRelation(relation), "Expected a relation");
486
+ assumeType2(relation);
487
+ const obj = relation[RelationTargetId];
488
+ invariant3(obj !== void 0, `Invalid target: ${relation.id}`, {
489
+ F: __dxlog_file3,
490
+ L: 146,
491
+ S: void 0,
492
+ A: [
493
+ "obj !== undefined",
494
+ "`Invalid target: ${relation.id}`"
495
+ ]
496
+ });
497
+ return obj;
498
+ };
499
+
500
+ // src/index.ts
501
+ import { QueryAST } from "@dxos/echo-protocol";
502
+ import { DXN as DXN3 } from "@dxos/keys";
503
+
504
+ export {
505
+ SchemaNotFoundError,
506
+ ObjectNotFoundError,
507
+ Key_exports,
508
+ Type_exports,
509
+ Obj_exports,
510
+ Relation_exports,
511
+ QueryAST,
512
+ DXN3 as DXN
513
+ };
514
+ //# sourceMappingURL=chunk-L4PBAJDP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/errors.ts", "../../../src/Key.ts", "../../../src/Obj.ts", "../../../src/Type.ts", "../../../src/Relation.ts", "../../../src/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { BaseError, type BaseErrorOptions } from '@dxos/errors';\nimport { type DXN } from '@dxos/keys';\n\nexport class SchemaNotFoundError extends BaseError.extend('SCHEMA_NOT_FOUND', 'Schema not found') {\n constructor(schema: string, options?: BaseErrorOptions) {\n super({ context: { schema }, ...options });\n }\n}\n\nexport class ObjectNotFoundError extends BaseError.extend('OBJECT_NOT_FOUND', 'Object not found') {\n constructor(dxn: DXN, options?: BaseErrorOptions) {\n super({ context: { dxn }, ...options });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport { SpaceId, ObjectId } from '@dxos/keys';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport * as Schema from 'effect/Schema';\n\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { type DXN } from '@dxos/keys';\nimport * as LiveObject from '@dxos/live-object';\nimport { assumeType, deepMapValues } from '@dxos/util';\n\nimport { live } from './internal';\nimport * as EchoSchema from './internal';\nimport type * as Ref from './Ref';\nimport type * as Relation from './Relation';\nimport * as Type from './Type';\n\n/**\n * NOTE: Don't export: Obj.Any and Obj.Obj form the public API.\n */\ninterface BaseObj extends EchoSchema.HasId, Type.OfKind<EchoSchema.EntityKind.Object> {}\n\n/**\n * Object type with specific properties.\n */\nexport type Obj<Props> = BaseObj & Props;\n\n/**\n * Base type for all ECHO objects.\n */\nexport interface Any extends BaseObj {}\n\nexport const Any = Schema.Struct({}).pipe(\n Type.Obj({\n typename: 'dxos.org/types/Any',\n version: '0.1.0',\n }),\n);\n\ntype Props<T = any> = { id?: EchoSchema.ObjectId } & Type.Properties<T>;\n\nexport type MakeProps<T extends Type.Obj.Any> = NoInfer<Props<Schema.Schema.Type<T>>> & {\n [Meta]?: Partial<EchoSchema.ObjectMeta>;\n};\n\nexport const Meta: unique symbol = EchoSchema.MetaId as any;\n\nconst DEFAULT_META: EchoSchema.ObjectMeta = {\n keys: [],\n};\n\n/**\n * Creates new object.\n * @param schema - Object schema.\n * @param props - Object properties.\n * @param meta - Object metadata (deprecated) -- pass with Obj.Meta.\n *\n * Meta can be passed as a symbol in `props`.\n *\n * Example:\n * ```ts\n * const obj = Obj.make(Person, { [Obj.Meta]: { keys: [...] }, name: 'John' });\n * ```\n */\nexport const make = <S extends Type.Obj.Any>(\n schema: S,\n props: MakeProps<S>,\n meta?: Partial<EchoSchema.ObjectMeta>,\n): LiveObject.Live<Schema.Schema.Type<S>> => {\n assertArgument(\n EchoSchema.getTypeAnnotation(schema)?.kind === EchoSchema.EntityKind.Object,\n 'schema',\n 'Expected an object schema',\n );\n\n if (props[EchoSchema.MetaId] != null) {\n // Set default fields on meta on creation.\n meta = { ...structuredClone(DEFAULT_META), ...props[EchoSchema.MetaId] };\n delete props[EchoSchema.MetaId];\n }\n\n return live<Schema.Schema.Type<S>>(schema, props as any, { keys: [], ...meta });\n};\n\nexport const isObject = (obj: unknown): obj is Any => {\n assumeType<EchoSchema.InternalObjectProps>(obj);\n return typeof obj === 'object' && obj !== null && obj[EchoSchema.EntityKindId] === EchoSchema.EntityKind.Object;\n};\n\n/**\n * Test if object or relation is an instance of a schema.\n * @example\n * ```ts\n * const john = Obj.make(Person, { name: 'John' });\n * const johnIsPerson = Obj.instanceOf(Person)(john);\n *\n * const isPerson = Obj.instanceOf(Person);\n * if (isPerson(john)) {\n * // john is Person\n * }\n * ```\n */\nexport const instanceOf: {\n <S extends Type.Relation.Any | Type.Obj.Any>(schema: S): (value: unknown) => value is Schema.Schema.Type<S>;\n <S extends Type.Relation.Any | Type.Obj.Any>(schema: S, value: unknown): value is Schema.Schema.Type<S>;\n} = ((\n ...args: [schema: Type.Relation.Any | Type.Obj.Any, value: unknown] | [schema: Type.Relation.Any | Type.Obj.Any]\n) => {\n if (args.length === 1) {\n return (obj: unknown) => EchoSchema.isInstanceOf(args[0], obj);\n }\n\n return EchoSchema.isInstanceOf(args[0], args[1]);\n}) as any;\n\nexport const getSchema = EchoSchema.getSchema;\n\n// TODO(dmaretskyi): Allow returning undefined.\nexport const getDXN = (obj: Any | Relation.Any): DXN => {\n assertArgument(!Schema.isSchema(obj), 'obj', 'Object should not be a schema.');\n const dxn = EchoSchema.getObjectDXN(obj);\n invariant(dxn != null, 'Invalid object.');\n return dxn;\n};\n\n/**\n * @returns The DXN of the object's type.\n * @example dxn:example.com/type/Contact:1.0.0\n */\n// TODO(burdon): Expando does not have a type.\nexport const getTypeDXN = EchoSchema.getType;\n\n/**\n * @returns The typename of the object's type.\n * @example `example.com/type/Contact`\n */\nexport const getTypename = (obj: Any | Relation.Any): string | undefined => {\n const schema = getSchema(obj);\n if (schema == null) {\n // Try to extract typename from DXN.\n return EchoSchema.getType(obj)?.asTypeDXN()?.type;\n }\n\n return EchoSchema.getSchemaTypename(schema);\n};\n\n// TODO(dmaretskyi): Allow returning undefined.\nexport const getMeta = (obj: Any | Relation.Any): EchoSchema.ObjectMeta => {\n const meta = EchoSchema.getMeta(obj);\n invariant(meta != null, 'Invalid object.');\n return meta;\n};\n\n/**\n * @returns Foreign keys for the object from the specified source.\n */\nexport const getKeys: {\n (obj: Any | Relation.Any, source: string): EchoSchema.ForeignKey[];\n (source: string): (obj: Any | Relation.Any) => EchoSchema.ForeignKey[];\n} = Function.dual(2, (obj: Any | Relation.Any, source?: string): EchoSchema.ForeignKey[] => {\n const meta = EchoSchema.getMeta(obj);\n invariant(meta != null, 'Invalid object.');\n return meta.keys.filter((key) => key.source === source);\n});\n\n/**\n * Delete all keys from the object for the specified source.\n * @param obj\n * @param source\n */\nexport const deleteKeys = (obj: Any | Relation.Any, source: string) => {\n const meta = EchoSchema.getMeta(obj);\n for (let i = 0; i < meta.keys.length; i++) {\n if (meta.keys[i].source === source) {\n meta.keys.splice(i, 1);\n i--;\n }\n }\n};\n\n// TODO(dmaretskyi): Default to `false`.\nexport const isDeleted = (obj: Any | Relation.Any): boolean => {\n const deleted = EchoSchema.isDeleted(obj);\n invariant(typeof deleted === 'boolean', 'Invalid object.');\n return deleted;\n};\n\nexport const getLabel = (obj: Any | Relation.Any): string | undefined => {\n const schema = getSchema(obj);\n if (schema != null) {\n return EchoSchema.getLabel(schema, obj);\n }\n};\n\nexport const setLabel = (obj: Any | Relation.Any, label: string) => {\n const schema = getSchema(obj);\n if (schema != null) {\n EchoSchema.setLabel(schema, obj, label);\n }\n};\n\nconst compare = (a?: string, b?: string) => {\n if (a == null) {\n return b == null ? 0 : 1;\n }\n\n if (b == null) {\n return -1;\n }\n\n return a.localeCompare(b);\n};\n\nexport type Comparator = (a: Any, b: Any) => number;\n\nexport const sortByLabel: Comparator = (a: Any, b: Any) => compare(getLabel(a), getLabel(b));\nexport const sortByTypename: Comparator = (a: Any, b: Any) => compare(getTypename(a), getTypename(b));\nexport const sort = (...comparators: Comparator[]): Comparator => {\n return (a: Any, b: Any) => {\n for (const comparator of comparators) {\n const result = comparator(a, b);\n if (result !== 0) {\n return result;\n }\n }\n\n return 0;\n };\n};\n\n/**\n * JSON representation of an object.\n */\nexport type JSON = EchoSchema.ObjectJSON;\n\n/**\n * Converts object to its JSON representation.\n *\n * The same algorithm is used when calling the standard `JSON.stringify(obj)` function.\n */\n// TODO(burdon): Base util type for Obj/Relation?\nexport const toJSON = (obj: Any | Relation.Any): JSON => EchoSchema.objectToJSON(obj);\n\n/**\n * Creates an object from its json representation, performing schema validation.\n * References and schemas will be resolvable if the `refResolver` is provided.\n *\n * The function need to be async to support resolving the schema as well as the relation endpoints.\n *\n * @param options.refResolver - Resolver for references. Produces hydrated references that can be resolved.\n * @param options.dxn - Override object DXN. Changes the result of `Obj.getDXN`.\n */\nexport const fromJSON: (json: unknown, options?: { refResolver?: Ref.Resolver; dxn?: DXN }) => Promise<Any> =\n EchoSchema.objectFromJSON as any;\n\n/**\n * Returns an immutable snapshot of an object.\n */\nexport const getSnapshot: <T extends Any>(obj: Obj<T>) => T = LiveObject.getSnapshot;\n\nexport type CloneOptions = {\n /**\n * Retain the original object's ID.\n * @default false\n */\n retainId?: boolean;\n};\n\n/**\n * Clones an object or relation.\n * This does not clone referenced objects, only the properties in the object.\n * @returns A new object with the same schema and properties.\n */\nexport const clone = <T extends Any | Relation.Any>(obj: T, opts?: CloneOptions): T => {\n const { id, ...data } = obj;\n const schema = getSchema(obj);\n invariant(schema != null, 'Object should have a schema');\n const props: any = deepMapValues(data, (value, recurse) => {\n if (EchoSchema.Ref.isRef(value)) {\n return value;\n }\n return recurse(value);\n });\n if (opts?.retainId) {\n props.id = id;\n }\n const meta = getMeta(obj);\n props[EchoSchema.MetaId] = deepMapValues(meta, (value, recurse) => {\n if (EchoSchema.Ref.isRef(value)) {\n return value;\n }\n return recurse(value);\n });\n return make(schema, props);\n};\n\nexport const VersionTypeId = EchoSchema.VersionTypeId;\nexport type VersionType = typeof VersionTypeId;\n\n/**\n * Represent object version.\n * May be backed by Automerge.\n * Objects with no history are not versioned.\n */\nexport interface Version {\n [VersionTypeId]: {};\n\n /**\n * Whether the object is versioned.\n */\n versioned: boolean;\n\n /**\n * Automerge heads.\n */\n automergeHeads?: string[];\n}\n\nconst unversioned: Version = {\n [VersionTypeId]: {},\n versioned: false,\n};\n\n/**\n * Checks that `obj` is a version object.\n */\nexport const isVersion = (obj: unknown): obj is Version => {\n return obj != null && typeof obj === 'object' && VersionTypeId in obj;\n};\n\n/**\n * Returns the version of the object.\n */\nexport const version = (obj: Any | Relation.Any): Version => {\n const version = (obj as any)[EchoSchema.ObjectVersionId];\n if (version === undefined) {\n return unversioned;\n }\n return version;\n};\n\n/**\n * Checks that `version` is a valid version object.\n */\nexport const versionValid = (version: Version): boolean => {\n assertArgument(isVersion(version), 'version', 'Invalid version object');\n return !!version.versioned;\n};\n\nexport type VersionCompareResult = 'unversioned' | 'equal' | 'different';\n\n/**\n * Compares two versions.\n * @param version1\n * @param version2\n * @returns 'unversioned' if either object is unversioned, 'equal' if the versions are equal, 'different' if the versions are different.\n */\nexport const compareVersions = (version1: Version, version2: Version): VersionCompareResult => {\n assertArgument(isVersion(version1), 'version1', 'Invalid version object');\n assertArgument(isVersion(version2), 'version2', 'Invalid version object');\n\n if (!versionValid(version1) || !versionValid(version2)) {\n return 'unversioned';\n }\n\n if (version1.automergeHeads?.length !== version2.automergeHeads?.length) {\n return 'different';\n }\n if (version1.automergeHeads?.some((head) => !version2.automergeHeads?.includes(head))) {\n return 'different';\n }\n\n return 'equal';\n};\n\nexport const encodeVersion = (version: Version): string => {\n return JSON.stringify(version);\n};\n\nexport const decodeVersion = (version: string): Version => {\n const parsed = JSON.parse(version);\n parsed[VersionTypeId] = {};\n return parsed;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as EffectSchema from 'effect/Schema';\n\nimport { type EncodedReference } from '@dxos/echo-protocol';\nimport { invariant } from '@dxos/invariant';\nimport type * as Keys from '@dxos/keys';\n\nimport { type ToMutable } from './internal';\nimport * as EchoSchema from './internal';\nimport type * as RelationModule from './Relation';\n\n//\n// Kind\n//\n\nexport const KindId: unique symbol = EchoSchema.EntityKindId as any;\nexport type KindId = typeof KindId;\n\nexport const Kind = EchoSchema.EntityKind;\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<Kind extends EchoSchema.EntityKind> {\n readonly id: Keys.ObjectId;\n readonly [KindId]: Kind;\n}\n\n/**\n * Base ECHO schema type.\n */\nexport type Schema = EchoSchema.EchoSchema;\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' | KindId | RelationModule.Source | RelationModule.Target>;\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 EffectSchema.Schema.Any>\n extends EchoSchema.TypeMeta,\n EffectSchema.AnnotableClass<\n obj<Self>,\n OfKind<EchoSchema.EntityKind.Object> & ToMutable<EffectSchema.Schema.Type<Self>>,\n EffectSchema.Simplify<ObjJsonProps & ToMutable<EffectSchema.Schema.Encoded<Self>>>,\n EffectSchema.Schema.Context<Self>\n > {}\n\n/**\n * Object schema.\n */\nexport const Obj: {\n (opts: EchoSchema.TypeMeta): <Self extends EffectSchema.Schema.Any>(self: Self) => obj<Self>;\n} = EchoSchema.EchoObject 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 = EffectSchema.Schema.AnyNoContext;\n}\n\n//\n// Expando\n//\n\n// TODO(burdon): We're using Expando in many places as a base type.\nexport interface Expando extends OfKind<EchoSchema.EntityKind.Object> {\n [key: string]: any;\n}\n\ntype ExpandoEncoded = EffectSchema.Simplify<ObjJsonProps & { [key: string]: any }>;\n\nexport const Expando: EffectSchema.Schema<Expando, ExpandoEncoded, never> = EchoSchema.Expando as any;\n\n//\n// Relation\n//\n\ninterface RelationJsonProps {\n id: string;\n [EchoSchema.ATTR_RELATION_SOURCE]: string;\n [EchoSchema.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 EffectSchema.Schema.Any,\n SourceSchema extends EffectSchema.Schema.Any,\n TargetSchema extends EffectSchema.Schema.Any,\n> extends EchoSchema.TypeMeta,\n EffectSchema.AnnotableClass<\n relation<Self, SourceSchema, TargetSchema>,\n OfKind<EchoSchema.EntityKind.Relation> &\n Relation.Endpoints<EffectSchema.Schema.Type<SourceSchema>, EffectSchema.Schema.Type<TargetSchema>> &\n ToMutable<EffectSchema.Schema.Type<Self>>,\n EffectSchema.Simplify<RelationJsonProps & ToMutable<EffectSchema.Schema.Encoded<Self>>>,\n EffectSchema.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.\nexport const Relation: {\n <Source extends EffectSchema.Schema.AnyNoContext, Target extends EffectSchema.Schema.AnyNoContext>(\n opts: EchoSchema.EchoRelationOptions<Source, Target>,\n ): <Self extends EffectSchema.Schema.Any>(self: Self) => relation<Self, Source, Target>;\n} = EchoSchema.EchoRelation 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 = EffectSchema.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 [RelationModule.Source]: Source;\n [RelationModule.Target]: Target;\n };\n}\n\n//\n// 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 EffectSchema.Schema.Any>\n extends EchoSchema.Ref$<EffectSchema.Schema.Type<TargetSchema>> {}\n\n/**\n * Ref schema.\n */\nexport const Ref: <S extends Obj.Any>(schema: S) => ref<S> = EchoSchema.Ref;\n\nexport interface Ref<T> extends EffectSchema.SchemaClass<EchoSchema.Ref<T>, EncodedReference> {}\n\n// TODO(buurdon): Move to Ref?\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 = EffectSchema.Schema<EchoSchema.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: Obj.Any | Relation.Any): Keys.DXN | undefined => {\n return EchoSchema.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: Obj.Any | Relation.Any): string => {\n const typename = EchoSchema.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: Obj.Any | Relation.Any): string => {\n const version = EchoSchema.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 = EchoSchema.isMutable;\n\n/**\n * ECHO type metadata.\n */\nexport type Meta = EchoSchema.TypeAnnotation;\n\n/**\n * Gets the meta data of the schema.\n */\nexport const getMeta = (schema: Obj.Any | Relation.Any): Meta | undefined => {\n return EchoSchema.getTypeAnnotation(schema);\n};\n\n// TODO(dmaretskyi): Remove re-exports.\nexport { SpaceId, ObjectId, DXN } from '@dxos/keys';\n\nexport { Format, JsonSchemaType as JsonSchema, toEffectSchema, toJsonSchema } from './internal';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { raise } from '@dxos/debug';\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { DXN } from '@dxos/keys';\nimport { type Live } from '@dxos/live-object';\nimport { assumeType } from '@dxos/util';\n\nimport { live } from './internal';\nimport * as EchoSchema from './internal';\nimport * as Obj from './Obj';\nimport * as Type from './Type';\n\n/**\n * NOTE: Don't export: Relation.Relation and Relation.Any form the public API.\n */\ninterface BaseRelation<Source, Target>\n extends EchoSchema.HasId,\n Type.Relation.Endpoints<Source, Target>,\n Type.OfKind<EchoSchema.EntityKind.Relation> {}\n\n/**\n * Relation type with specific properties.\n */\nexport type Relation<Source extends Obj.Any, Target extends Obj.Any, Props> = BaseRelation<Source, Target> & Props;\n\n/**\n * Base type for all ECHO relations.\n */\nexport interface Any extends BaseRelation<Obj.Any, Obj.Any> {}\n\nexport const Any = Schema.Struct({}).pipe(\n Type.Relation({\n typename: 'dxos.org/types/Any',\n version: '0.1.0',\n source: Obj.Any,\n target: Obj.Any,\n }),\n);\n\n// TODO(dmaretskyi): Has to be `unique symbol`.\nexport const Source: unique symbol = EchoSchema.RelationSourceId as any;\nexport type Source = typeof Source;\nexport const Target: unique symbol = EchoSchema.RelationTargetId as any;\nexport type Target = typeof Target;\n\ntype MakeProps<T extends Any> = {\n id?: EchoSchema.ObjectId;\n [Source]: T[Source];\n [Target]: T[Target];\n} & Type.Properties<T>;\n\n/**\n * Creates new relation.\n * @param schema - Relation schema.\n * @param props - Relation properties. Endpoints are passed as [Relation.Source] and [Relation.Target] keys.\n * @param meta - Relation metadata.\n * @returns\n */\n// NOTE: Writing the definition this way (with generic over schema) makes typescript perfer to infer the type from the first param (this schema) rather than the second param (the props).\n// TODO(dmaretskyi): Move meta into props.\nexport const make = <S extends Type.Relation.Any>(\n schema: S,\n props: NoInfer<MakeProps<Schema.Schema.Type<S>>>,\n meta?: EchoSchema.ObjectMeta,\n): Live<Schema.Schema.Type<S> & Type.OfKind<EchoSchema.EntityKind.Relation>> => {\n assertArgument(\n EchoSchema.getTypeAnnotation(schema)?.kind === EchoSchema.EntityKind.Relation,\n 'schema',\n 'Expected a relation schema',\n );\n\n if (props[EchoSchema.MetaId] != null) {\n meta = props[EchoSchema.MetaId] as any;\n delete props[EchoSchema.MetaId];\n }\n\n const sourceDXN = EchoSchema.getObjectDXN(props[Source]) ?? raise(new Error('Unresolved relation source'));\n const targetDXN = EchoSchema.getObjectDXN(props[Target]) ?? raise(new Error('Unresolved relation target'));\n (props as any)[EchoSchema.RelationSourceDXNId] = sourceDXN;\n (props as any)[EchoSchema.RelationTargetDXNId] = targetDXN;\n\n return live<Schema.Schema.Type<S>>(schema, props as any, meta);\n};\n\nexport const isRelation = (value: unknown): value is Any => {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n if (EchoSchema.ATTR_RELATION_SOURCE in value || EchoSchema.ATTR_RELATION_TARGET in value) {\n return true;\n }\n\n const kind = (value as any)[EchoSchema.EntityKindId];\n return kind === EchoSchema.EntityKind.Relation;\n};\n\n/**\n * @returns Relation source DXN.\n * @throws If the object is not a relation.\n */\nexport const getSourceDXN = (value: Any): DXN => {\n assertArgument(isRelation(value), 'Expected a relation');\n assumeType<EchoSchema.InternalObjectProps>(value);\n const dxn = (value as EchoSchema.InternalObjectProps)[EchoSchema.RelationSourceDXNId];\n invariant(dxn instanceof DXN);\n return dxn;\n};\n\n/**\n * @returns Relation target DXN.\n * @throws If the object is not a relation.\n */\nexport const getTargetDXN = (value: Any): DXN => {\n assertArgument(isRelation(value), 'Expected a relation');\n assumeType<EchoSchema.InternalObjectProps>(value);\n const dxn = (value as EchoSchema.InternalObjectProps)[EchoSchema.RelationTargetDXNId];\n invariant(dxn instanceof DXN);\n return dxn;\n};\n\n/**\n * @returns Relation source.\n * @throws If the object is not a relation.\n */\nexport const getSource = <T extends Any>(relation: T): Type.Relation.Source<T> => {\n assertArgument(isRelation(relation), 'Expected a relation');\n assumeType<EchoSchema.InternalObjectProps>(relation);\n const obj = (relation as EchoSchema.InternalObjectProps)[EchoSchema.RelationSourceId];\n invariant(obj !== undefined, `Invalid source: ${relation.id}`);\n return obj as Type.Relation.Source<T>;\n};\n\n/**\n * @returns Relation target.\n * @throws If the object is not a relation.\n */\nexport const getTarget = <T extends Any>(relation: T): Type.Relation.Target<T> => {\n assertArgument(isRelation(relation), 'Expected a relation');\n assumeType<EchoSchema.InternalObjectProps>(relation);\n const obj = (relation as EchoSchema.InternalObjectProps)[EchoSchema.RelationTargetId];\n invariant(obj !== undefined, `Invalid target: ${relation.id}`);\n return obj as Type.Relation.Target<T>;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport * from './errors';\nexport * from './query';\n\nexport * as Key from './Key';\nexport * as Obj from './Obj';\nexport * as Ref from './Ref';\nexport * as Relation from './Relation';\nexport * as Type from './Type';\n\nexport { QueryAST } from '@dxos/echo-protocol';\nexport { DXN } from '@dxos/keys';\nexport { type Live } from '@dxos/live-object';\n"],
5
+ "mappings": "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",
6
+ "names": ["BaseError", "SchemaNotFoundError", "BaseError", "extend", "schema", "options", "context", "ObjectNotFoundError", "dxn", "SpaceId", "ObjectId", "VersionTypeId", "getDXN", "getLabel", "getMeta", "getSchema", "getSnapshot", "getTypename", "isDeleted", "setLabel", "Function", "Schema", "assertArgument", "invariant", "LiveObject", "assumeType", "deepMapValues", "Expando", "ObjectId", "Ref", "SpaceId", "getMeta", "isMutable", "invariant", "SpaceId", "ObjectId", "DXN", "KindId", "EntityKindId", "Kind", "EntityKind", "Obj", "EchoObject", "Expando", "Relation", "EchoRelation", "Ref", "getDXN", "schema", "getSchemaDXN", "getTypename", "typename", "getSchemaTypename", "invariant", "startsWith", "getVersion", "version", "getSchemaVersion", "match", "isMutable", "getMeta", "getTypeAnnotation", "Any", "Struct", "pipe", "Obj", "typename", "version", "Meta", "MetaId", "DEFAULT_META", "keys", "make", "schema", "props", "meta", "assertArgument", "getTypeAnnotation", "kind", "EntityKind", "Object", "structuredClone", "live", "isObject", "obj", "assumeType", "EntityKindId", "instanceOf", "args", "length", "isInstanceOf", "getSchema", "getDXN", "isSchema", "dxn", "getObjectDXN", "invariant", "getTypeDXN", "getType", "getTypename", "asTypeDXN", "type", "getSchemaTypename", "getMeta", "getKeys", "dual", "source", "filter", "key", "deleteKeys", "i", "splice", "isDeleted", "deleted", "getLabel", "setLabel", "label", "EchoSchema", "compare", "a", "b", "localeCompare", "sortByLabel", "sortByTypename", "sort", "comparators", "comparator", "result", "toJSON", "objectToJSON", "fromJSON", "objectFromJSON", "getSnapshot", "clone", "opts", "id", "data", "deepMapValues", "value", "recurse", "Ref", "isRef", "retainId", "VersionTypeId", "unversioned", "versioned", "isVersion", "ObjectVersionId", "undefined", "versionValid", "compareVersions", "version1", "version2", "automergeHeads", "some", "head", "includes", "encodeVersion", "JSON", "stringify", "decodeVersion", "parsed", "parse", "Any", "make", "Schema", "raise", "assertArgument", "invariant", "DXN", "assumeType", "Any", "Struct", "pipe", "Relation", "typename", "version", "source", "target", "Source", "RelationSourceId", "Target", "RelationTargetId", "make", "schema", "props", "meta", "assertArgument", "getTypeAnnotation", "kind", "EntityKind", "MetaId", "sourceDXN", "getObjectDXN", "raise", "Error", "targetDXN", "RelationSourceDXNId", "RelationTargetDXNId", "live", "isRelation", "value", "ATTR_RELATION_SOURCE", "ATTR_RELATION_TARGET", "EntityKindId", "getSourceDXN", "assumeType", "dxn", "invariant", "DXN", "getTargetDXN", "getSource", "relation", "obj", "undefined", "id", "getTarget", "QueryAST", "DXN"]
7
+ }