@dxos/echo 0.8.4-main.3f58842 → 0.8.4-main.548089c

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 (313) hide show
  1. package/README.md +1 -1
  2. package/dist/lib/browser/chunk-3FCPYTWA.mjs +585 -0
  3. package/dist/lib/browser/chunk-3FCPYTWA.mjs.map +7 -0
  4. package/dist/lib/browser/chunk-5BNXQE6S.mjs +3727 -0
  5. package/dist/lib/browser/chunk-5BNXQE6S.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-U43CXUCL.mjs +410 -0
  7. package/dist/lib/browser/chunk-U43CXUCL.mjs.map +7 -0
  8. package/dist/lib/browser/index.mjs +17 -4
  9. package/dist/lib/browser/internal/index.mjs +336 -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 +13 -0
  13. package/dist/lib/browser/query/index.mjs.map +7 -0
  14. package/dist/lib/browser/testing/index.mjs +231 -34
  15. package/dist/lib/browser/testing/index.mjs.map +4 -4
  16. package/dist/lib/node-esm/chunk-3FGSPSYN.mjs +3727 -0
  17. package/dist/lib/node-esm/chunk-3FGSPSYN.mjs.map +7 -0
  18. package/dist/lib/node-esm/chunk-C7LTTWRL.mjs +585 -0
  19. package/dist/lib/node-esm/chunk-C7LTTWRL.mjs.map +7 -0
  20. package/dist/lib/node-esm/chunk-OHJ5WBB6.mjs +410 -0
  21. package/dist/lib/node-esm/chunk-OHJ5WBB6.mjs.map +7 -0
  22. package/dist/lib/node-esm/index.mjs +17 -4
  23. package/dist/lib/node-esm/internal/index.mjs +336 -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 +13 -0
  27. package/dist/lib/node-esm/query/index.mjs.map +7 -0
  28. package/dist/lib/node-esm/testing/index.mjs +231 -34
  29. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  30. package/dist/types/src/Obj.d.ts +127 -19
  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/Tag.d.ts +17 -0
  37. package/dist/types/src/Tag.d.ts.map +1 -0
  38. package/dist/types/src/Type.d.ts +17 -18
  39. package/dist/types/src/Type.d.ts.map +1 -1
  40. package/dist/types/src/errors.d.ts +64 -0
  41. package/dist/types/src/errors.d.ts.map +1 -0
  42. package/dist/types/src/index.d.ts +4 -1
  43. package/dist/types/src/index.d.ts.map +1 -1
  44. package/dist/types/src/internal/ast/annotation-helper.d.ts +8 -0
  45. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +1 -0
  46. package/dist/types/src/internal/ast/annotations.d.ts +131 -0
  47. package/dist/types/src/internal/ast/annotations.d.ts.map +1 -0
  48. package/dist/types/src/internal/ast/annotations.test.d.ts +2 -0
  49. package/dist/types/src/internal/ast/annotations.test.d.ts.map +1 -0
  50. package/dist/types/src/internal/ast/entity-kind.d.ts +10 -0
  51. package/dist/types/src/internal/ast/entity-kind.d.ts.map +1 -0
  52. package/dist/types/src/internal/ast/index.d.ts +5 -0
  53. package/dist/types/src/internal/ast/index.d.ts.map +1 -0
  54. package/dist/types/src/internal/ast/types.d.ts +6 -0
  55. package/dist/types/src/internal/ast/types.d.ts.map +1 -0
  56. package/dist/types/src/internal/formats/date.d.ts +63 -0
  57. package/dist/types/src/internal/formats/date.d.ts.map +1 -0
  58. package/dist/types/src/internal/formats/date.test.d.ts +2 -0
  59. package/dist/types/src/internal/formats/date.test.d.ts.map +1 -0
  60. package/dist/types/src/internal/formats/format.d.ts +30 -0
  61. package/dist/types/src/internal/formats/format.d.ts.map +1 -0
  62. package/dist/types/src/internal/formats/format.test.d.ts +2 -0
  63. package/dist/types/src/internal/formats/format.test.d.ts.map +1 -0
  64. package/dist/types/src/internal/formats/index.d.ts +8 -0
  65. package/dist/types/src/internal/formats/index.d.ts.map +1 -0
  66. package/dist/types/src/internal/formats/number.d.ts +31 -0
  67. package/dist/types/src/internal/formats/number.d.ts.map +1 -0
  68. package/dist/types/src/internal/formats/object.d.ts +35 -0
  69. package/dist/types/src/internal/formats/object.d.ts.map +1 -0
  70. package/dist/types/src/internal/formats/select.d.ts +11 -0
  71. package/dist/types/src/internal/formats/select.d.ts.map +1 -0
  72. package/dist/types/src/internal/formats/string.d.ts +38 -0
  73. package/dist/types/src/internal/formats/string.d.ts.map +1 -0
  74. package/dist/types/src/internal/formats/types.d.ts +68 -0
  75. package/dist/types/src/internal/formats/types.d.ts.map +1 -0
  76. package/dist/types/src/internal/index.d.ts +15 -0
  77. package/dist/types/src/internal/index.d.ts.map +1 -0
  78. package/dist/types/src/internal/json/annotations.d.ts +19 -0
  79. package/dist/types/src/internal/json/annotations.d.ts.map +1 -0
  80. package/dist/types/src/internal/json/effect-schema.test.d.ts +2 -0
  81. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +1 -0
  82. package/dist/types/src/internal/json/index.d.ts +2 -0
  83. package/dist/types/src/internal/json/index.d.ts.map +1 -0
  84. package/dist/types/src/internal/json/json-schema.d.ts +28 -0
  85. package/dist/types/src/internal/json/json-schema.d.ts.map +1 -0
  86. package/dist/types/src/internal/json/json-schema.test.d.ts +2 -0
  87. package/dist/types/src/internal/json/json-schema.test.d.ts.map +1 -0
  88. package/dist/types/src/internal/json-schema/index.d.ts +3 -0
  89. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -0
  90. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts +7 -0
  91. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -0
  92. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +250 -0
  93. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -0
  94. package/dist/types/src/internal/object/accessors.d.ts +37 -0
  95. package/dist/types/src/internal/object/accessors.d.ts.map +1 -0
  96. package/dist/types/src/internal/object/common.d.ts +18 -0
  97. package/dist/types/src/internal/object/common.d.ts.map +1 -0
  98. package/dist/types/src/internal/object/create.d.ts +40 -0
  99. package/dist/types/src/internal/object/create.d.ts.map +1 -0
  100. package/dist/types/src/internal/object/create.test.d.ts +2 -0
  101. package/dist/types/src/internal/object/create.test.d.ts.map +1 -0
  102. package/dist/types/src/internal/object/deleted.d.ts +6 -0
  103. package/dist/types/src/internal/object/deleted.d.ts.map +1 -0
  104. package/dist/types/src/internal/object/entity.d.ts +33 -0
  105. package/dist/types/src/internal/object/entity.d.ts.map +1 -0
  106. package/dist/types/src/internal/object/expando.d.ts +14 -0
  107. package/dist/types/src/internal/object/expando.d.ts.map +1 -0
  108. package/dist/types/src/internal/object/ids.d.ts +6 -0
  109. package/dist/types/src/internal/object/ids.d.ts.map +1 -0
  110. package/dist/types/src/internal/object/index.d.ts +16 -0
  111. package/dist/types/src/internal/object/index.d.ts.map +1 -0
  112. package/dist/types/src/internal/object/inspect.d.ts +2 -0
  113. package/dist/types/src/internal/object/inspect.d.ts.map +1 -0
  114. package/dist/types/src/internal/object/json-serializer.d.ts +32 -0
  115. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -0
  116. package/dist/types/src/internal/object/json-serializer.test.d.ts +2 -0
  117. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +1 -0
  118. package/dist/types/src/internal/object/meta.d.ts +31 -0
  119. package/dist/types/src/internal/object/meta.d.ts.map +1 -0
  120. package/dist/types/src/internal/object/model.d.ts +117 -0
  121. package/dist/types/src/internal/object/model.d.ts.map +1 -0
  122. package/dist/types/src/internal/object/relation.d.ts +17 -0
  123. package/dist/types/src/internal/object/relation.d.ts.map +1 -0
  124. package/dist/types/src/internal/object/schema-validator.d.ts +15 -0
  125. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -0
  126. package/dist/types/src/internal/object/schema-validator.test.d.ts +2 -0
  127. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +1 -0
  128. package/dist/types/src/internal/object/typed-object.d.ts +31 -0
  129. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -0
  130. package/dist/types/src/internal/object/typed-object.test.d.ts +2 -0
  131. package/dist/types/src/internal/object/typed-object.test.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 +381 -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 +1 -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} +52 -22
  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/testing/echo-schema.d.ts +7 -0
  199. package/dist/types/src/testing/echo-schema.d.ts.map +1 -0
  200. package/dist/types/src/testing/index.d.ts +2 -0
  201. package/dist/types/src/testing/index.d.ts.map +1 -1
  202. package/dist/types/src/testing/types.d.ts +170 -55
  203. package/dist/types/src/testing/types.d.ts.map +1 -1
  204. package/dist/types/tsconfig.tsbuildinfo +1 -1
  205. package/package.json +34 -16
  206. package/src/Obj.ts +298 -29
  207. package/src/Ref.ts +1 -2
  208. package/src/Relation.ts +25 -13
  209. package/src/Tag.ts +39 -0
  210. package/src/Type.ts +32 -31
  211. package/src/errors.ts +18 -0
  212. package/src/index.ts +5 -1
  213. package/src/internal/ast/annotation-helper.ts +22 -0
  214. package/src/internal/ast/annotations.test.ts +98 -0
  215. package/src/internal/ast/annotations.ts +226 -0
  216. package/src/internal/ast/entity-kind.ts +15 -0
  217. package/src/internal/ast/index.ts +8 -0
  218. package/src/internal/ast/types.ts +17 -0
  219. package/src/internal/formats/date.test.ts +56 -0
  220. package/src/internal/formats/date.ts +217 -0
  221. package/src/internal/formats/format.test.ts +77 -0
  222. package/src/internal/formats/format.ts +52 -0
  223. package/src/internal/formats/index.ts +12 -0
  224. package/src/internal/formats/number.ts +89 -0
  225. package/src/internal/formats/object.ts +80 -0
  226. package/src/internal/formats/select.ts +16 -0
  227. package/src/internal/formats/string.ts +76 -0
  228. package/src/internal/formats/types.ts +175 -0
  229. package/src/internal/index.ts +22 -0
  230. package/src/internal/json/annotations.ts +50 -0
  231. package/src/internal/json/effect-schema.test.ts +143 -0
  232. package/src/internal/json/index.ts +5 -0
  233. package/src/internal/json/json-schema.test.ts +849 -0
  234. package/src/internal/json/json-schema.ts +519 -0
  235. package/src/internal/json-schema/index.ts +6 -0
  236. package/src/internal/json-schema/json-schema-normalize.ts +109 -0
  237. package/src/internal/json-schema/json-schema-type.ts +403 -0
  238. package/src/internal/object/accessors.ts +153 -0
  239. package/src/internal/object/common.ts +76 -0
  240. package/src/internal/object/create.test.ts +118 -0
  241. package/src/internal/object/create.ts +96 -0
  242. package/src/internal/object/deleted.ts +19 -0
  243. package/src/internal/object/entity.ts +248 -0
  244. package/src/internal/object/expando.ts +21 -0
  245. package/src/internal/object/ids.ts +12 -0
  246. package/src/internal/object/index.ts +19 -0
  247. package/src/internal/object/inspect.ts +48 -0
  248. package/src/internal/object/json-serializer.test.ts +99 -0
  249. package/src/internal/object/json-serializer.ts +225 -0
  250. package/src/internal/object/meta.ts +61 -0
  251. package/src/internal/object/model.ts +170 -0
  252. package/src/internal/object/relation.ts +24 -0
  253. package/src/internal/object/schema-validator.test.ts +186 -0
  254. package/src/internal/object/schema-validator.ts +241 -0
  255. package/src/internal/object/typed-object.test.ts +34 -0
  256. package/src/internal/object/typed-object.ts +88 -0
  257. package/src/internal/object/typename.ts +61 -0
  258. package/src/internal/object/version.ts +22 -0
  259. package/src/internal/projection/compose.test.ts +43 -0
  260. package/src/internal/projection/compose.ts +36 -0
  261. package/src/internal/projection/index.ts +5 -0
  262. package/src/internal/proxy/handler.test.ts +163 -0
  263. package/src/internal/proxy/reactive-object.ts +108 -0
  264. package/src/internal/proxy/schema.test.ts +136 -0
  265. package/src/internal/proxy/typed-handler.test.ts +102 -0
  266. package/src/internal/proxy/typed-handler.ts +228 -0
  267. package/src/internal/proxy/typed-object.test.ts +100 -0
  268. package/src/internal/query/index.ts +5 -0
  269. package/src/internal/query/query.ts +23 -0
  270. package/src/internal/ref/index.ts +6 -0
  271. package/src/internal/ref/ref-array.ts +39 -0
  272. package/src/internal/ref/ref.test.ts +100 -0
  273. package/src/internal/ref/ref.ts +521 -0
  274. package/src/internal/schema/echo-schema.ts +383 -0
  275. package/src/internal/schema/index.ts +10 -0
  276. package/src/internal/schema/manipulation.ts +92 -0
  277. package/src/internal/schema/runtime-schema-registry.ts +78 -0
  278. package/src/internal/schema/snapshot.ts +25 -0
  279. package/src/internal/schema/stored-schema.ts +26 -0
  280. package/src/internal/testing/index.ts +6 -0
  281. package/src/internal/testing/types.ts +144 -0
  282. package/src/internal/testing/utils.ts +54 -0
  283. package/src/internal/types/index.ts +6 -0
  284. package/src/internal/types/types.test.ts +48 -0
  285. package/src/internal/types/types.ts +176 -0
  286. package/src/internal/types/util.ts +9 -0
  287. package/src/query/index.ts +2 -1
  288. package/src/query/query.test.ts +401 -0
  289. package/src/query/{dsl.ts → query.ts} +188 -45
  290. package/src/test/api.test.ts +17 -10
  291. package/src/testing/echo-schema.ts +39 -0
  292. package/src/testing/index.ts +2 -0
  293. package/src/testing/types.ts +40 -23
  294. package/dist/lib/browser/chunk-EUA7CM23.mjs +0 -619
  295. package/dist/lib/browser/chunk-EUA7CM23.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-IV6BWGHK.mjs +0 -619
  297. package/dist/lib/node-esm/chunk-IV6BWGHK.mjs.map +0 -7
  298. package/dist/types/src/experimental/database.d.ts +0 -8
  299. package/dist/types/src/experimental/database.d.ts.map +0 -1
  300. package/dist/types/src/experimental/index.d.ts +0 -1
  301. package/dist/types/src/experimental/index.d.ts.map +0 -1
  302. package/dist/types/src/experimental/queue.d.ts +0 -8
  303. package/dist/types/src/experimental/queue.d.ts.map +0 -1
  304. package/dist/types/src/experimental/space.d.ts +0 -8
  305. package/dist/types/src/experimental/space.d.ts.map +0 -1
  306. package/dist/types/src/query/dsl.d.ts.map +0 -1
  307. package/dist/types/src/query/dsl.test.d.ts +0 -2
  308. package/dist/types/src/query/dsl.test.d.ts.map +0 -1
  309. package/src/experimental/database.ts +0 -11
  310. package/src/experimental/index.ts +0 -7
  311. package/src/experimental/queue.ts +0 -11
  312. package/src/experimental/space.ts +0 -11
  313. package/src/query/dsl.test.ts +0 -323
package/README.md CHANGED
@@ -122,7 +122,7 @@ Defines attributes and encoding placed on objects.
122
122
  | | Optional | Runtime prop | Runtime type | JSON prop | JSON type | Description |
123
123
  | ------------------- | ----------------------- | -------------------------------------- | ---------------------- | --------------------------- | ---------- | ------------------------------ |
124
124
  | Id | No | `id` | `ObjectID` ULID string | `id` | string | Unique object ID |
125
- | Self DXN | Yes | `Symbol(@dxos/echo/Self)` | `DXN` | `@self` | string | DXN to the object itself |
125
+ | Self DXN | Yes | `Symbol(@dxos/echo/DXN)` | `DXN` | `@dxn` | string | DXN to the object itself |
126
126
  | Type | No | `Symbol(@dxos/echo/Type)` | `DXN` | `@type` | string | DXN to the object type |
127
127
  | Schema | Yes | `Symbol(@dxos/echo/Schema)` | Effect-Schema | - | | Reference to the object schema |
128
128
  | Tombstone marker | Yes | `Symbol(@dxos/echo/Deleted)` | `boolean` | `@deleted` | boolean | Deletion marker |
@@ -0,0 +1,585 @@
1
+ import "@dxos/node-std/globals";
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
+ LabelAnnotation,
13
+ MetaId,
14
+ ObjectVersionId,
15
+ Ref,
16
+ RelationSourceDXNId,
17
+ RelationSourceId,
18
+ RelationTargetDXNId,
19
+ RelationTargetId,
20
+ VersionTypeId,
21
+ __export,
22
+ getDescription,
23
+ getLabel,
24
+ getMeta,
25
+ getObjectDXN,
26
+ getSchema,
27
+ getSchemaDXN,
28
+ getSchemaTypename,
29
+ getSchemaVersion,
30
+ getType,
31
+ getTypeAnnotation,
32
+ isDeleted,
33
+ isInstanceOf,
34
+ isMutable,
35
+ live,
36
+ objectFromJSON,
37
+ objectToJSON,
38
+ setDescription,
39
+ setLabel,
40
+ toEffectSchema,
41
+ toJsonSchema
42
+ } from "./chunk-5BNXQE6S.mjs";
43
+
44
+ // src/errors.ts
45
+ import { BaseError } from "@dxos/errors";
46
+ var SchemaNotFoundError = class extends BaseError.extend("SCHEMA_NOT_FOUND", "Schema not found") {
47
+ constructor(schema, options) {
48
+ super({
49
+ context: {
50
+ schema
51
+ },
52
+ ...options
53
+ });
54
+ }
55
+ };
56
+ var ObjectNotFoundError = class extends BaseError.extend("OBJECT_NOT_FOUND", "Object not found") {
57
+ constructor(dxn, options) {
58
+ super({
59
+ context: {
60
+ dxn
61
+ },
62
+ ...options
63
+ });
64
+ }
65
+ };
66
+
67
+ // src/Key.ts
68
+ var Key_exports = {};
69
+ __export(Key_exports, {
70
+ ObjectId: () => ObjectId,
71
+ SpaceId: () => SpaceId
72
+ });
73
+ import { SpaceId, ObjectId } from "@dxos/keys";
74
+
75
+ // src/Obj.ts
76
+ var Obj_exports = {};
77
+ __export(Obj_exports, {
78
+ Any: () => Any,
79
+ Meta: () => Meta,
80
+ VersionTypeId: () => VersionTypeId2,
81
+ addTag: () => addTag,
82
+ clone: () => clone,
83
+ compareVersions: () => compareVersions,
84
+ decodeVersion: () => decodeVersion,
85
+ deleteKeys: () => deleteKeys,
86
+ encodeVersion: () => encodeVersion,
87
+ fromJSON: () => fromJSON,
88
+ getDXN: () => getDXN2,
89
+ getDescription: () => getDescription2,
90
+ getKeys: () => getKeys,
91
+ getLabel: () => getLabel2,
92
+ getMeta: () => getMeta3,
93
+ getSchema: () => getSchema2,
94
+ getSnapshot: () => getSnapshot2,
95
+ getTypeDXN: () => getTypeDXN,
96
+ getTypename: () => getTypename2,
97
+ instanceOf: () => instanceOf,
98
+ isDeleted: () => isDeleted2,
99
+ isObject: () => isObject,
100
+ isVersion: () => isVersion,
101
+ make: () => make,
102
+ removeTag: () => removeTag,
103
+ setDescription: () => setDescription2,
104
+ setLabel: () => setLabel2,
105
+ sort: () => sort,
106
+ sortByLabel: () => sortByLabel,
107
+ sortByTypename: () => sortByTypename,
108
+ toJSON: () => toJSON,
109
+ version: () => version,
110
+ versionValid: () => versionValid
111
+ });
112
+ import * as Function from "effect/Function";
113
+ import * as Schema from "effect/Schema";
114
+ import { assertArgument, invariant as invariant2 } from "@dxos/invariant";
115
+ import * as LiveObject from "@dxos/live-object";
116
+ import { assumeType, deepMapValues } from "@dxos/util";
117
+
118
+ // src/Type.ts
119
+ var Type_exports = {};
120
+ __export(Type_exports, {
121
+ DXN: () => DXN,
122
+ Expando: () => Expando2,
123
+ Format: () => Format,
124
+ JsonSchema: () => JsonSchemaType,
125
+ Kind: () => Kind,
126
+ KindId: () => KindId,
127
+ Obj: () => Obj,
128
+ ObjectId: () => ObjectId2,
129
+ Ref: () => Ref2,
130
+ Relation: () => Relation,
131
+ SpaceId: () => SpaceId2,
132
+ getDXN: () => getDXN,
133
+ getMeta: () => getMeta2,
134
+ getTypename: () => getTypename,
135
+ getVersion: () => getVersion,
136
+ isMutable: () => isMutable2,
137
+ toEffectSchema: () => toEffectSchema,
138
+ toJsonSchema: () => toJsonSchema
139
+ });
140
+ import { invariant } from "@dxos/invariant";
141
+ import { SpaceId as SpaceId2, ObjectId as ObjectId2, DXN } from "@dxos/keys";
142
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
143
+ var KindId = EntityKindId;
144
+ var Kind = EntityKind;
145
+ var Obj = EchoObject;
146
+ var Expando2 = Expando;
147
+ var Relation = EchoRelation;
148
+ var Ref2 = Ref;
149
+ var getDXN = (schema) => {
150
+ return getSchemaDXN(schema);
151
+ };
152
+ var getTypename = (schema) => {
153
+ const typename = getSchemaTypename(schema);
154
+ invariant(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
155
+ F: __dxlog_file,
156
+ L: 211,
157
+ S: void 0,
158
+ A: [
159
+ "typeof typename === 'string' && !typename.startsWith('dxn:')",
160
+ "'Invalid typename'"
161
+ ]
162
+ });
163
+ return typename;
164
+ };
165
+ var getVersion = (schema) => {
166
+ const version2 = getSchemaVersion(schema);
167
+ invariant(typeof version2 === "string" && version2.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
168
+ F: __dxlog_file,
169
+ L: 221,
170
+ S: void 0,
171
+ A: [
172
+ "typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
173
+ "'Invalid version'"
174
+ ]
175
+ });
176
+ return version2;
177
+ };
178
+ var isMutable2 = isMutable;
179
+ var getMeta2 = (schema) => {
180
+ return getTypeAnnotation(schema);
181
+ };
182
+
183
+ // src/Obj.ts
184
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo/src/Obj.ts";
185
+ var Any = Schema.Struct({}).pipe(Obj({
186
+ typename: "dxos.org/types/Any",
187
+ version: "0.1.0"
188
+ }));
189
+ var Meta = MetaId;
190
+ var DEFAULT_META = {
191
+ keys: []
192
+ };
193
+ var make = (schema, props, meta) => {
194
+ assertArgument(getTypeAnnotation(schema)?.kind === EntityKind.Object, "schema", "Expected an object schema");
195
+ if (props[MetaId] != null) {
196
+ meta = {
197
+ ...structuredClone(DEFAULT_META),
198
+ ...props[MetaId]
199
+ };
200
+ delete props[MetaId];
201
+ }
202
+ const filterUndefined = Object.fromEntries(Object.entries(props).filter(([_, v]) => v !== void 0));
203
+ return live(schema, filterUndefined, {
204
+ keys: [],
205
+ ...meta
206
+ });
207
+ };
208
+ var isObject = (obj) => {
209
+ assumeType(obj);
210
+ return typeof obj === "object" && obj !== null && obj[EntityKindId] === EntityKind.Object;
211
+ };
212
+ var instanceOf = (...args) => {
213
+ if (args.length === 1) {
214
+ return (obj) => isInstanceOf(args[0], obj);
215
+ }
216
+ return isInstanceOf(args[0], args[1]);
217
+ };
218
+ var getSchema2 = getSchema;
219
+ var getDXN2 = (obj) => {
220
+ assertArgument(!Schema.isSchema(obj), "obj", "Object should not be a schema.");
221
+ const dxn = getObjectDXN(obj);
222
+ invariant2(dxn != null, "Invalid object.", {
223
+ F: __dxlog_file2,
224
+ L: 136,
225
+ S: void 0,
226
+ A: [
227
+ "dxn != null",
228
+ "'Invalid object.'"
229
+ ]
230
+ });
231
+ return dxn;
232
+ };
233
+ var getTypeDXN = getType;
234
+ var getTypename2 = (obj) => {
235
+ const schema = getSchema2(obj);
236
+ if (schema == null) {
237
+ return getType(obj)?.asTypeDXN()?.type;
238
+ }
239
+ return getSchemaTypename(schema);
240
+ };
241
+ var getMeta3 = (obj) => {
242
+ const meta = getMeta(obj);
243
+ invariant2(meta != null, "Invalid object.", {
244
+ F: __dxlog_file2,
245
+ L: 164,
246
+ S: void 0,
247
+ A: [
248
+ "meta != null",
249
+ "'Invalid object.'"
250
+ ]
251
+ });
252
+ return meta;
253
+ };
254
+ var getKeys = Function.dual(2, (obj, source) => {
255
+ const meta = getMeta(obj);
256
+ invariant2(meta != null, "Invalid object.", {
257
+ F: __dxlog_file2,
258
+ L: 176,
259
+ S: void 0,
260
+ A: [
261
+ "meta != null",
262
+ "'Invalid object.'"
263
+ ]
264
+ });
265
+ return meta.keys.filter((key) => key.source === source);
266
+ });
267
+ var deleteKeys = (obj, source) => {
268
+ const meta = getMeta(obj);
269
+ for (let i = 0; i < meta.keys.length; i++) {
270
+ if (meta.keys[i].source === source) {
271
+ meta.keys.splice(i, 1);
272
+ i--;
273
+ }
274
+ }
275
+ };
276
+ var isDeleted2 = (obj) => {
277
+ const deleted = isDeleted(obj);
278
+ invariant2(typeof deleted === "boolean", "Invalid object.", {
279
+ F: __dxlog_file2,
280
+ L: 198,
281
+ S: void 0,
282
+ A: [
283
+ "typeof deleted === 'boolean'",
284
+ "'Invalid object.'"
285
+ ]
286
+ });
287
+ return deleted;
288
+ };
289
+ var getLabel2 = (obj) => {
290
+ const schema = getSchema2(obj);
291
+ if (schema != null) {
292
+ return getLabel(schema, obj);
293
+ }
294
+ };
295
+ var setLabel2 = (obj, label) => {
296
+ const schema = getSchema2(obj);
297
+ if (schema != null) {
298
+ setLabel(schema, obj, label);
299
+ }
300
+ };
301
+ var getDescription2 = (obj) => {
302
+ const schema = getSchema2(obj);
303
+ if (schema != null) {
304
+ return getDescription(schema, obj);
305
+ }
306
+ };
307
+ var setDescription2 = (obj, description) => {
308
+ const schema = getSchema2(obj);
309
+ if (schema != null) {
310
+ setDescription(schema, obj, description);
311
+ }
312
+ };
313
+ var addTag = (obj, tag) => {
314
+ const meta = getMeta3(obj);
315
+ meta.tags ??= [];
316
+ meta.tags.push(tag);
317
+ };
318
+ var removeTag = (obj, tag) => {
319
+ const meta = getMeta3(obj);
320
+ if (!meta.tags) {
321
+ return;
322
+ }
323
+ for (let i = 0; i < meta.tags.length; i++) {
324
+ if (meta.tags[i] === tag) {
325
+ meta.tags.splice(i, 1);
326
+ i--;
327
+ }
328
+ }
329
+ };
330
+ var compare = (a, b) => {
331
+ if (a == null) {
332
+ return b == null ? 0 : 1;
333
+ }
334
+ if (b == null) {
335
+ return -1;
336
+ }
337
+ return a.localeCompare(b);
338
+ };
339
+ var sortByLabel = (a, b) => compare(getLabel2(a), getLabel2(b));
340
+ var sortByTypename = (a, b) => compare(getTypename2(a), getTypename2(b));
341
+ var sort = (...comparators) => {
342
+ return (a, b) => {
343
+ for (const comparator of comparators) {
344
+ const result = comparator(a, b);
345
+ if (result !== 0) {
346
+ return result;
347
+ }
348
+ }
349
+ return 0;
350
+ };
351
+ };
352
+ var toJSON = (obj) => objectToJSON(obj);
353
+ var fromJSON = objectFromJSON;
354
+ var getSnapshot2 = LiveObject.getSnapshot;
355
+ var clone = (obj, opts) => {
356
+ const { id, ...data } = obj;
357
+ const schema = getSchema2(obj);
358
+ invariant2(schema != null, "Object should have a schema", {
359
+ F: __dxlog_file2,
360
+ L: 324,
361
+ S: void 0,
362
+ A: [
363
+ "schema != null",
364
+ "'Object should have a schema'"
365
+ ]
366
+ });
367
+ const props = deepMapValues(data, (value, recurse) => {
368
+ if (Ref.isRef(value)) {
369
+ return value;
370
+ }
371
+ return recurse(value);
372
+ });
373
+ if (opts?.retainId) {
374
+ props.id = id;
375
+ }
376
+ const meta = getMeta3(obj);
377
+ props[MetaId] = deepMapValues(meta, (value, recurse) => {
378
+ if (Ref.isRef(value)) {
379
+ return value;
380
+ }
381
+ return recurse(value);
382
+ });
383
+ return make(schema, props);
384
+ };
385
+ var VersionTypeId2 = VersionTypeId;
386
+ var unversioned = {
387
+ [VersionTypeId2]: {},
388
+ versioned: false
389
+ };
390
+ var isVersion = (obj) => {
391
+ return obj != null && typeof obj === "object" && VersionTypeId2 in obj;
392
+ };
393
+ var version = (obj) => {
394
+ const version2 = obj[ObjectVersionId];
395
+ if (version2 === void 0) {
396
+ return unversioned;
397
+ }
398
+ return version2;
399
+ };
400
+ var versionValid = (version2) => {
401
+ assertArgument(isVersion(version2), "version", "Invalid version object");
402
+ return !!version2.versioned;
403
+ };
404
+ var compareVersions = (version1, version2) => {
405
+ assertArgument(isVersion(version1), "version1", "Invalid version object");
406
+ assertArgument(isVersion(version2), "version2", "Invalid version object");
407
+ if (!versionValid(version1) || !versionValid(version2)) {
408
+ return "unversioned";
409
+ }
410
+ if (version1.automergeHeads?.length !== version2.automergeHeads?.length) {
411
+ return "different";
412
+ }
413
+ if (version1.automergeHeads?.some((head) => !version2.automergeHeads?.includes(head))) {
414
+ return "different";
415
+ }
416
+ return "equal";
417
+ };
418
+ var encodeVersion = (version2) => {
419
+ return JSON.stringify(version2);
420
+ };
421
+ var decodeVersion = (version2) => {
422
+ const parsed = JSON.parse(version2);
423
+ parsed[VersionTypeId2] = {};
424
+ return parsed;
425
+ };
426
+
427
+ // src/Relation.ts
428
+ var Relation_exports = {};
429
+ __export(Relation_exports, {
430
+ Any: () => Any2,
431
+ Source: () => Source,
432
+ Target: () => Target,
433
+ getSource: () => getSource,
434
+ getSourceDXN: () => getSourceDXN,
435
+ getTarget: () => getTarget,
436
+ getTargetDXN: () => getTargetDXN,
437
+ isRelation: () => isRelation,
438
+ make: () => make2
439
+ });
440
+ import * as Schema2 from "effect/Schema";
441
+ import { raise } from "@dxos/debug";
442
+ import { assertArgument as assertArgument2, invariant as invariant3 } from "@dxos/invariant";
443
+ import { DXN as DXN2 } from "@dxos/keys";
444
+ import { assumeType as assumeType2 } from "@dxos/util";
445
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo/src/Relation.ts";
446
+ var Any2 = Schema2.Struct({}).pipe(Relation({
447
+ typename: "dxos.org/types/Any",
448
+ version: "0.1.0",
449
+ source: Any,
450
+ target: Any
451
+ }));
452
+ var Source = RelationSourceId;
453
+ var Target = RelationTargetId;
454
+ var make2 = (schema, props, meta) => {
455
+ assertArgument2(getTypeAnnotation(schema)?.kind === EntityKind.Relation, "schema", "Expected a relation schema");
456
+ if (props[MetaId] != null) {
457
+ meta = props[MetaId];
458
+ delete props[MetaId];
459
+ }
460
+ const sourceDXN = getObjectDXN(props[Source]) ?? raise(new Error("Unresolved relation source"));
461
+ const targetDXN = getObjectDXN(props[Target]) ?? raise(new Error("Unresolved relation target"));
462
+ props[RelationSourceDXNId] = sourceDXN;
463
+ props[RelationTargetDXNId] = targetDXN;
464
+ return live(schema, props, meta);
465
+ };
466
+ var isRelation = (value) => {
467
+ if (typeof value !== "object" || value === null) {
468
+ return false;
469
+ }
470
+ if (ATTR_RELATION_SOURCE in value || ATTR_RELATION_TARGET in value) {
471
+ return true;
472
+ }
473
+ const kind = value[EntityKindId];
474
+ return kind === EntityKind.Relation;
475
+ };
476
+ var getSourceDXN = (value) => {
477
+ assertArgument2(isRelation(value), "Expected a relation");
478
+ assumeType2(value);
479
+ const dxn = value[RelationSourceDXNId];
480
+ invariant3(dxn instanceof DXN2, void 0, {
481
+ F: __dxlog_file3,
482
+ L: 110,
483
+ S: void 0,
484
+ A: [
485
+ "dxn instanceof DXN",
486
+ ""
487
+ ]
488
+ });
489
+ return dxn;
490
+ };
491
+ var getTargetDXN = (value) => {
492
+ assertArgument2(isRelation(value), "Expected a relation");
493
+ assumeType2(value);
494
+ const dxn = value[RelationTargetDXNId];
495
+ invariant3(dxn instanceof DXN2, void 0, {
496
+ F: __dxlog_file3,
497
+ L: 122,
498
+ S: void 0,
499
+ A: [
500
+ "dxn instanceof DXN",
501
+ ""
502
+ ]
503
+ });
504
+ return dxn;
505
+ };
506
+ var getSource = (relation) => {
507
+ assertArgument2(isRelation(relation), "Expected a relation");
508
+ assumeType2(relation);
509
+ const obj = relation[RelationSourceId];
510
+ invariant3(obj !== void 0, `Invalid source: ${relation.id}`, {
511
+ F: __dxlog_file3,
512
+ L: 134,
513
+ S: void 0,
514
+ A: [
515
+ "obj !== undefined",
516
+ "`Invalid source: ${relation.id}`"
517
+ ]
518
+ });
519
+ return obj;
520
+ };
521
+ var getTarget = (relation) => {
522
+ assertArgument2(isRelation(relation), "Expected a relation");
523
+ assumeType2(relation);
524
+ const obj = relation[RelationTargetId];
525
+ invariant3(obj !== void 0, `Invalid target: ${relation.id}`, {
526
+ F: __dxlog_file3,
527
+ L: 146,
528
+ S: void 0,
529
+ A: [
530
+ "obj !== undefined",
531
+ "`Invalid target: ${relation.id}`"
532
+ ]
533
+ });
534
+ return obj;
535
+ };
536
+
537
+ // src/Tag.ts
538
+ var Tag_exports = {};
539
+ __export(Tag_exports, {
540
+ Tag: () => Tag,
541
+ createTagList: () => createTagList,
542
+ findTagByLabel: () => findTagByLabel,
543
+ make: () => make3,
544
+ sortTags: () => sortTags
545
+ });
546
+ import * as Schema3 from "effect/Schema";
547
+ var Tag = Schema3.Struct({
548
+ label: Schema3.String,
549
+ hue: Schema3.optional(Schema3.String)
550
+ }).pipe(Obj({
551
+ typename: "dxos.org/type/Tag",
552
+ version: "0.1.0"
553
+ }), LabelAnnotation.set([
554
+ "label"
555
+ ]));
556
+ var make3 = (props) => make(Tag, props);
557
+ var sortTags = ({ label: a }, { label: b }) => a.localeCompare(b);
558
+ var createTagList = (tags) => Object.entries(tags).map(([id, tag]) => ({
559
+ ...tag,
560
+ id
561
+ })).sort(sortTags);
562
+ var findTagByLabel = (tags, name) => {
563
+ const entry = Object.entries(tags ?? {}).find(([_, tag]) => tag.label.toLowerCase() === name.toLowerCase());
564
+ return entry ? {
565
+ ...entry[1],
566
+ id: entry[0]
567
+ } : void 0;
568
+ };
569
+
570
+ // src/index.ts
571
+ import { QueryAST } from "@dxos/echo-protocol";
572
+ import { DXN as DXN3 } from "@dxos/keys";
573
+
574
+ export {
575
+ SchemaNotFoundError,
576
+ ObjectNotFoundError,
577
+ Key_exports,
578
+ Type_exports,
579
+ Obj_exports,
580
+ Relation_exports,
581
+ Tag_exports,
582
+ QueryAST,
583
+ DXN3 as DXN
584
+ };
585
+ //# sourceMappingURL=chunk-3FCPYTWA.mjs.map