@dxos/echo 0.8.4-main.72ec0f3 → 0.8.4-main.7ace549

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 (332) hide show
  1. package/dist/lib/browser/{chunk-BIDAASFK.mjs → chunk-7GH6RXJ3.mjs} +2246 -2290
  2. package/dist/lib/browser/chunk-7GH6RXJ3.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-E4UTVJNF.mjs +1111 -0
  4. package/dist/lib/browser/chunk-E4UTVJNF.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +18 -8
  6. package/dist/lib/browser/internal/index.mjs +45 -45
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/testing/index.mjs +252 -191
  9. package/dist/lib/browser/testing/index.mjs.map +4 -4
  10. package/dist/lib/node-esm/chunk-JE5RXM2I.mjs +1111 -0
  11. package/dist/lib/node-esm/chunk-JE5RXM2I.mjs.map +7 -0
  12. package/dist/lib/node-esm/{chunk-3SVRRCUU.mjs → chunk-M4B6BMD2.mjs} +2246 -2290
  13. package/dist/lib/node-esm/chunk-M4B6BMD2.mjs.map +7 -0
  14. package/dist/lib/node-esm/index.mjs +18 -8
  15. package/dist/lib/node-esm/internal/index.mjs +45 -45
  16. package/dist/lib/node-esm/meta.json +1 -1
  17. package/dist/lib/node-esm/testing/index.mjs +252 -191
  18. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  19. package/dist/types/src/Annotation.d.ts +2 -0
  20. package/dist/types/src/Annotation.d.ts.map +1 -0
  21. package/dist/types/src/Database.d.ts +137 -0
  22. package/dist/types/src/Database.d.ts.map +1 -0
  23. package/dist/types/src/Entity.d.ts +36 -0
  24. package/dist/types/src/Entity.d.ts.map +1 -0
  25. package/dist/types/src/Format.d.ts +4 -0
  26. package/dist/types/src/Format.d.ts.map +1 -0
  27. package/dist/types/src/JsonSchema.d.ts +9 -0
  28. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  29. package/dist/types/src/Key.d.ts +1 -0
  30. package/dist/types/src/Key.d.ts.map +1 -1
  31. package/dist/types/src/Obj.d.ts +79 -70
  32. package/dist/types/src/Obj.d.ts.map +1 -1
  33. package/dist/types/src/Ref.d.ts +10 -10
  34. package/dist/types/src/Ref.d.ts.map +1 -1
  35. package/dist/types/src/Relation.d.ts +14 -11
  36. package/dist/types/src/Relation.d.ts.map +1 -1
  37. package/dist/types/src/Tag.d.ts +1 -1
  38. package/dist/types/src/Tag.d.ts.map +1 -1
  39. package/dist/types/src/Type.d.ts +39 -49
  40. package/dist/types/src/Type.d.ts.map +1 -1
  41. package/dist/types/src/index.d.ts +6 -3
  42. package/dist/types/src/index.d.ts.map +1 -1
  43. package/dist/types/src/internal/annotations/annotations.d.ts +174 -0
  44. package/dist/types/src/internal/annotations/annotations.d.ts.map +1 -0
  45. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +1 -0
  46. package/dist/types/src/internal/annotations/index.d.ts +3 -0
  47. package/dist/types/src/internal/annotations/index.d.ts.map +1 -0
  48. package/dist/types/src/internal/annotations/util.d.ts +26 -0
  49. package/dist/types/src/internal/annotations/util.d.ts.map +1 -0
  50. package/dist/types/src/internal/entities/entity.d.ts +10 -0
  51. package/dist/types/src/internal/entities/entity.d.ts.map +1 -0
  52. package/dist/types/src/internal/{object → entities}/expando.d.ts +3 -1
  53. package/dist/types/src/internal/entities/expando.d.ts.map +1 -0
  54. package/dist/types/src/internal/entities/index.d.ts +6 -0
  55. package/dist/types/src/internal/entities/index.d.ts.map +1 -0
  56. package/dist/types/src/internal/entities/model.d.ts +70 -0
  57. package/dist/types/src/internal/entities/model.d.ts.map +1 -0
  58. package/dist/types/src/internal/entities/object.d.ts +11 -0
  59. package/dist/types/src/internal/entities/object.d.ts.map +1 -0
  60. package/dist/types/src/internal/entities/relation.d.ts +55 -0
  61. package/dist/types/src/internal/entities/relation.d.ts.map +1 -0
  62. package/dist/types/src/internal/entities/util.d.ts +2 -0
  63. package/dist/types/src/internal/entities/util.d.ts.map +1 -0
  64. package/dist/types/src/internal/formats/format.d.ts +2 -0
  65. package/dist/types/src/internal/formats/format.d.ts.map +1 -1
  66. package/dist/types/src/internal/formats/types.d.ts +7 -7
  67. package/dist/types/src/internal/formats/types.d.ts.map +1 -1
  68. package/dist/types/src/internal/index.d.ts +6 -10
  69. package/dist/types/src/internal/index.d.ts.map +1 -1
  70. package/dist/types/src/internal/json-schema/annotations.d.ts.map +1 -0
  71. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +1 -0
  72. package/dist/types/src/internal/json-schema/index.d.ts +2 -0
  73. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -1
  74. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -1
  75. package/dist/types/src/internal/{json → json-schema}/json-schema.d.ts +2 -1
  76. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +1 -0
  77. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +1 -0
  78. package/dist/types/src/internal/object/common.d.ts.map +1 -1
  79. package/dist/types/src/internal/object/{create.d.ts → create-object.d.ts} +8 -9
  80. package/dist/types/src/internal/object/create-object.d.ts.map +1 -0
  81. package/dist/types/src/internal/object/create-object.test.d.ts +2 -0
  82. package/dist/types/src/internal/object/create-object.test.d.ts.map +1 -0
  83. package/dist/types/src/internal/object/deleted.d.ts +2 -2
  84. package/dist/types/src/internal/object/deleted.d.ts.map +1 -1
  85. package/dist/types/src/internal/object/ids.d.ts.map +1 -1
  86. package/dist/types/src/internal/object/index.d.ts +3 -11
  87. package/dist/types/src/internal/object/index.d.ts.map +1 -1
  88. package/dist/types/src/internal/object/json-serializer.d.ts +1 -2
  89. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -1
  90. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -1
  91. package/dist/types/src/internal/object/typed-object.d.ts +1 -1
  92. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -1
  93. package/dist/types/src/internal/proxy/index.d.ts +3 -0
  94. package/dist/types/src/internal/proxy/index.d.ts.map +1 -0
  95. package/dist/types/src/internal/proxy/make-object.d.ts +16 -0
  96. package/dist/types/src/internal/proxy/make-object.d.ts.map +1 -0
  97. package/dist/types/src/internal/proxy/typed-handler.d.ts +1 -1
  98. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -1
  99. package/dist/types/src/internal/ref/ref.d.ts +15 -12
  100. package/dist/types/src/internal/ref/ref.d.ts.map +1 -1
  101. package/dist/types/src/internal/schema/compose.d.ts.map +1 -0
  102. package/dist/types/src/internal/schema/compose.test.d.ts.map +1 -0
  103. package/dist/types/src/internal/schema/echo-schema.d.ts +9 -9
  104. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -1
  105. package/dist/types/src/internal/schema/index.d.ts +3 -4
  106. package/dist/types/src/internal/schema/index.d.ts.map +1 -1
  107. package/dist/types/src/internal/schema/persistent-schema.d.ts +18 -0
  108. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +1 -0
  109. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +1 -1
  110. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +1 -1
  111. package/dist/types/src/internal/types/base.d.ts +37 -0
  112. package/dist/types/src/internal/types/base.d.ts.map +1 -0
  113. package/dist/types/src/internal/{ast/entity-kind.d.ts → types/entity.d.ts} +3 -1
  114. package/dist/types/src/internal/types/entity.d.ts.map +1 -0
  115. package/dist/types/src/internal/types/index.d.ts +5 -2
  116. package/dist/types/src/internal/types/index.d.ts.map +1 -1
  117. package/dist/types/src/internal/{object → types}/meta.d.ts +20 -11
  118. package/dist/types/src/internal/types/meta.d.ts.map +1 -0
  119. package/dist/types/src/internal/types/typename.d.ts +13 -0
  120. package/dist/types/src/internal/types/typename.d.ts.map +1 -0
  121. package/dist/types/src/internal/{object → types}/version.d.ts +3 -2
  122. package/dist/types/src/internal/types/version.d.ts.map +1 -0
  123. package/dist/types/src/query/filter.d.ts +167 -0
  124. package/dist/types/src/query/filter.d.ts.map +1 -0
  125. package/dist/types/src/query/index.d.ts +3 -0
  126. package/dist/types/src/query/index.d.ts.map +1 -1
  127. package/dist/types/src/query/order.d.ts +12 -0
  128. package/dist/types/src/query/order.d.ts.map +1 -0
  129. package/dist/types/src/query/query.d.ts +9 -145
  130. package/dist/types/src/query/query.d.ts.map +1 -1
  131. package/dist/types/src/query/testing.d.ts +51 -0
  132. package/dist/types/src/query/testing.d.ts.map +1 -0
  133. package/dist/types/src/{internal/query/query.d.ts → query/types.d.ts} +1 -1
  134. package/dist/types/src/query/types.d.ts.map +1 -0
  135. package/dist/types/src/query/util.d.ts +8 -0
  136. package/dist/types/src/query/util.d.ts.map +1 -0
  137. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  138. package/dist/types/src/testing/index.d.ts +3 -3
  139. package/dist/types/src/testing/index.d.ts.map +1 -1
  140. package/dist/types/src/testing/test-data.d.ts +18 -0
  141. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  142. package/dist/types/src/testing/{types.d.ts → test-schema.d.ts} +166 -57
  143. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  144. package/dist/types/src/{internal/testing/utils.d.ts → testing/util.d.ts} +11 -5
  145. package/dist/types/src/testing/util.d.ts.map +1 -0
  146. package/dist/types/tsconfig.tsbuildinfo +1 -1
  147. package/package.json +46 -38
  148. package/src/Annotation.ts +17 -0
  149. package/src/Database.ts +189 -0
  150. package/src/Entity.ts +51 -0
  151. package/src/Format.ts +11 -0
  152. package/src/JsonSchema.ts +16 -0
  153. package/src/Key.ts +3 -0
  154. package/src/Obj.ts +248 -181
  155. package/src/Ref.ts +9 -9
  156. package/src/Relation.ts +58 -44
  157. package/src/Tag.ts +2 -1
  158. package/src/Type.ts +96 -83
  159. package/src/index.ts +9 -4
  160. package/src/internal/README.md +83 -0
  161. package/src/internal/{ast → annotations}/annotations.test.ts +13 -15
  162. package/src/internal/annotations/annotations.ts +463 -0
  163. package/src/internal/annotations/index.ts +6 -0
  164. package/src/internal/annotations/util.ts +70 -0
  165. package/src/internal/entities/entity.ts +109 -0
  166. package/src/internal/{object → entities}/expando.ts +7 -5
  167. package/src/internal/entities/index.ts +9 -0
  168. package/src/internal/{object → entities}/model.ts +49 -90
  169. package/src/internal/entities/object.ts +45 -0
  170. package/src/internal/entities/relation.ts +155 -0
  171. package/src/internal/entities/util.ts +33 -0
  172. package/src/internal/formats/date.test.ts +1 -1
  173. package/src/internal/formats/date.ts +5 -5
  174. package/src/internal/formats/format.test.ts +5 -5
  175. package/src/internal/formats/format.ts +3 -0
  176. package/src/internal/formats/number.ts +5 -5
  177. package/src/internal/formats/object.ts +2 -2
  178. package/src/internal/formats/string.ts +9 -9
  179. package/src/internal/formats/types.ts +44 -39
  180. package/src/internal/index.ts +29 -13
  181. package/src/internal/{json → json-schema}/annotations.ts +1 -1
  182. package/src/internal/json-schema/index.ts +2 -0
  183. package/src/internal/json-schema/json-schema-type.ts +4 -3
  184. package/src/internal/{json → json-schema}/json-schema.test.ts +48 -38
  185. package/src/internal/{json → json-schema}/json-schema.ts +16 -7
  186. package/src/internal/object/common.ts +3 -4
  187. package/src/internal/object/{create.test.ts → create-object.test.ts} +30 -32
  188. package/src/internal/object/{create.ts → create-object.ts} +33 -34
  189. package/src/internal/object/deleted.ts +6 -6
  190. package/src/internal/object/ids.ts +1 -1
  191. package/src/internal/object/index.ts +3 -11
  192. package/src/internal/object/inspect.ts +3 -5
  193. package/src/internal/object/json-serializer.test.ts +33 -38
  194. package/src/internal/object/json-serializer.ts +43 -38
  195. package/src/internal/object/schema-validator.ts +3 -2
  196. package/src/internal/object/typed-object.test.ts +1 -1
  197. package/src/internal/object/typed-object.ts +11 -5
  198. package/src/internal/proxy/handler.test.ts +30 -20
  199. package/src/internal/proxy/index.ts +6 -0
  200. package/src/internal/proxy/{reactive-object.ts → make-object.ts} +19 -14
  201. package/src/internal/proxy/schema.test.ts +5 -4
  202. package/src/internal/proxy/typed-handler.test.ts +28 -28
  203. package/src/internal/proxy/typed-handler.ts +8 -3
  204. package/src/internal/proxy/typed-object.test.ts +16 -11
  205. package/src/internal/ref/ref.test.ts +8 -7
  206. package/src/internal/ref/ref.ts +24 -20
  207. package/src/internal/{projection → schema}/compose.test.ts +5 -6
  208. package/src/internal/{projection → schema}/compose.ts +2 -1
  209. package/src/internal/schema/echo-schema.ts +30 -28
  210. package/src/internal/schema/index.ts +3 -4
  211. package/src/internal/schema/manipulation.ts +1 -1
  212. package/src/internal/schema/persistent-schema.ts +28 -0
  213. package/src/internal/schema/runtime-schema-registry.ts +4 -4
  214. package/src/internal/types/base.ts +58 -0
  215. package/src/internal/{ast/entity-kind.ts → types/entity.ts} +8 -0
  216. package/src/internal/types/index.ts +5 -2
  217. package/src/internal/{object → types}/meta.ts +32 -17
  218. package/src/internal/types/typename.ts +45 -0
  219. package/src/internal/types/version.ts +20 -0
  220. package/src/query/filter.ts +455 -0
  221. package/src/query/index.ts +4 -1
  222. package/src/query/order.ts +34 -0
  223. package/src/query/query.test.ts +48 -115
  224. package/src/query/query.ts +16 -502
  225. package/src/query/testing.ts +64 -0
  226. package/src/query/util.ts +25 -0
  227. package/src/testing/api.test.ts +100 -0
  228. package/src/testing/index.ts +3 -3
  229. package/src/testing/test-data.ts +130 -0
  230. package/src/testing/test-schema.ts +213 -0
  231. package/src/{internal/testing/utils.ts → testing/util.ts} +38 -14
  232. package/dist/lib/browser/chunk-BIDAASFK.mjs.map +0 -7
  233. package/dist/lib/browser/chunk-ZDLCWGEW.mjs +0 -410
  234. package/dist/lib/browser/chunk-ZDLCWGEW.mjs.map +0 -7
  235. package/dist/lib/browser/chunk-ZFRJKT4A.mjs +0 -585
  236. package/dist/lib/browser/chunk-ZFRJKT4A.mjs.map +0 -7
  237. package/dist/lib/browser/query/index.mjs +0 -13
  238. package/dist/lib/browser/query/index.mjs.map +0 -7
  239. package/dist/lib/node-esm/chunk-3SVRRCUU.mjs.map +0 -7
  240. package/dist/lib/node-esm/chunk-CGDHRZWH.mjs +0 -585
  241. package/dist/lib/node-esm/chunk-CGDHRZWH.mjs.map +0 -7
  242. package/dist/lib/node-esm/chunk-HWS6VBQC.mjs +0 -410
  243. package/dist/lib/node-esm/chunk-HWS6VBQC.mjs.map +0 -7
  244. package/dist/lib/node-esm/query/index.mjs +0 -13
  245. package/dist/lib/node-esm/query/index.mjs.map +0 -7
  246. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  247. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  248. package/dist/types/src/internal/ast/annotations.d.ts +0 -131
  249. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  250. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  251. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  252. package/dist/types/src/internal/ast/index.d.ts +0 -5
  253. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  254. package/dist/types/src/internal/ast/types.d.ts +0 -6
  255. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  256. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  257. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  258. package/dist/types/src/internal/json/index.d.ts +0 -2
  259. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  260. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  261. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  262. package/dist/types/src/internal/object/accessors.d.ts +0 -37
  263. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  264. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  265. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  266. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  267. package/dist/types/src/internal/object/entity.d.ts +0 -33
  268. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  269. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  270. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  271. package/dist/types/src/internal/object/model.d.ts +0 -117
  272. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  273. package/dist/types/src/internal/object/relation.d.ts +0 -17
  274. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  275. package/dist/types/src/internal/object/typename.d.ts +0 -15
  276. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  277. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  278. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  279. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  280. package/dist/types/src/internal/projection/index.d.ts +0 -2
  281. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  282. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  283. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  284. package/dist/types/src/internal/query/index.d.ts +0 -2
  285. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  286. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  287. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  288. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  289. package/dist/types/src/internal/testing/index.d.ts +0 -3
  290. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  291. package/dist/types/src/internal/testing/types.d.ts +0 -381
  292. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  293. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  294. package/dist/types/src/internal/types/types.d.ts +0 -79
  295. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  296. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  297. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  298. package/dist/types/src/internal/types/util.d.ts +0 -5
  299. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  300. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  301. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  302. package/dist/types/src/testing/types.d.ts.map +0 -1
  303. package/src/internal/ast/annotation-helper.ts +0 -22
  304. package/src/internal/ast/annotations.ts +0 -226
  305. package/src/internal/ast/index.ts +0 -8
  306. package/src/internal/ast/types.ts +0 -17
  307. package/src/internal/json/index.ts +0 -5
  308. package/src/internal/object/accessors.ts +0 -153
  309. package/src/internal/object/entity.ts +0 -248
  310. package/src/internal/object/relation.ts +0 -24
  311. package/src/internal/object/typename.ts +0 -61
  312. package/src/internal/object/version.ts +0 -22
  313. package/src/internal/projection/index.ts +0 -5
  314. package/src/internal/query/index.ts +0 -5
  315. package/src/internal/schema/stored-schema.ts +0 -26
  316. package/src/internal/testing/index.ts +0 -6
  317. package/src/internal/testing/types.ts +0 -144
  318. package/src/internal/types/types.test.ts +0 -48
  319. package/src/internal/types/types.ts +0 -176
  320. package/src/internal/types/util.ts +0 -9
  321. package/src/test/api.test.ts +0 -180
  322. package/src/testing/echo-schema.ts +0 -39
  323. package/src/testing/types.ts +0 -108
  324. /package/dist/types/src/internal/{ast → annotations}/annotations.test.d.ts +0 -0
  325. /package/dist/types/src/internal/{json → json-schema}/annotations.d.ts +0 -0
  326. /package/dist/types/src/internal/{json → json-schema}/effect-schema.test.d.ts +0 -0
  327. /package/dist/types/src/internal/{json → json-schema}/json-schema.test.d.ts +0 -0
  328. /package/dist/types/src/internal/{projection → schema}/compose.d.ts +0 -0
  329. /package/dist/types/src/internal/{projection → schema}/compose.test.d.ts +0 -0
  330. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  331. /package/src/internal/{json → json-schema}/effect-schema.test.ts +0 -0
  332. /package/src/{internal/query/query.ts → query/types.ts} +0 -0
@@ -0,0 +1,1111 @@
1
+ import "@dxos/node-std/globals";
2
+ import {
3
+ ATTR_RELATION_SOURCE,
4
+ ATTR_RELATION_TARGET,
5
+ Currency,
6
+ CurrencyAnnotationId,
7
+ DecimalPrecision,
8
+ DescriptionAnnotation,
9
+ EchoObjectSchema,
10
+ EchoRelationSchema,
11
+ EchoSchema,
12
+ Email,
13
+ EntityKind,
14
+ EntityKindSchema,
15
+ Expando,
16
+ FormInputAnnotation,
17
+ Format,
18
+ FormatAnnotation,
19
+ FormatAnnotationId,
20
+ FormatEnums,
21
+ Formula,
22
+ GeneratorAnnotation,
23
+ GeoLocation,
24
+ GeoPoint,
25
+ Hostname,
26
+ JSON as JSON2,
27
+ JsonSchemaType,
28
+ KindId,
29
+ LabelAnnotation,
30
+ Markdown,
31
+ MetaId,
32
+ ObjectVersionId,
33
+ OptionsAnnotationId,
34
+ PersistentSchema,
35
+ PropertyKind,
36
+ Ref,
37
+ RefArray,
38
+ Regex,
39
+ RelationSourceDXNId,
40
+ RelationSourceId,
41
+ RelationTargetDXNId,
42
+ RelationTargetId,
43
+ SelectOptionSchema,
44
+ SystemTypeAnnotation,
45
+ TypeAnnotation,
46
+ TypeEnum,
47
+ TypeFormat,
48
+ URL,
49
+ UUID,
50
+ VersionTypeId,
51
+ __export,
52
+ formatToType,
53
+ getDescription,
54
+ getEntityKind,
55
+ getFormatAnnotation,
56
+ getLabel,
57
+ getMeta,
58
+ getObjectDXN,
59
+ getOptionsAnnotation,
60
+ getSchema,
61
+ getSchemaDXN,
62
+ getSchemaTypename,
63
+ getSchemaVersion,
64
+ getTypeAnnotation,
65
+ getTypeDXN,
66
+ getTypeEnum,
67
+ getTypeReference,
68
+ isDeleted,
69
+ isInstanceOf,
70
+ isMutable,
71
+ makeObject,
72
+ objectFromJSON,
73
+ objectToJSON,
74
+ setDescription,
75
+ setLabel,
76
+ toEffectSchema,
77
+ toJsonSchema,
78
+ typeToFormat
79
+ } from "./chunk-7GH6RXJ3.mjs";
80
+
81
+ // src/index.ts
82
+ import { DXN as DXN4 } from "@dxos/keys";
83
+
84
+ // src/errors.ts
85
+ import { BaseError } from "@dxos/errors";
86
+ var SchemaNotFoundError = class extends BaseError.extend("SCHEMA_NOT_FOUND", "Schema not found") {
87
+ constructor(schema, options) {
88
+ super({
89
+ context: {
90
+ schema
91
+ },
92
+ ...options
93
+ });
94
+ }
95
+ };
96
+ var ObjectNotFoundError = class extends BaseError.extend("OBJECT_NOT_FOUND", "Object not found") {
97
+ constructor(dxn, options) {
98
+ super({
99
+ context: {
100
+ dxn
101
+ },
102
+ ...options
103
+ });
104
+ }
105
+ };
106
+
107
+ // src/query/index.ts
108
+ import { QueryAST } from "@dxos/echo-protocol";
109
+
110
+ // src/query/filter.ts
111
+ import * as Match from "effect/Match";
112
+ import * as Schema2 from "effect/Schema";
113
+ import { assertArgument as assertArgument2 } from "@dxos/invariant";
114
+ import { DXN as DXN2, ObjectId } from "@dxos/keys";
115
+
116
+ // src/Ref.ts
117
+ var Ref_exports = {};
118
+ __export(Ref_exports, {
119
+ Array: () => Array2,
120
+ fromDXN: () => fromDXN,
121
+ isRef: () => isRef,
122
+ make: () => make
123
+ });
124
+ var Array2 = RefArray;
125
+ var isRef = Ref.isRef;
126
+ var make = Ref.make;
127
+ var fromDXN = Ref.fromDXN;
128
+
129
+ // src/query/util.ts
130
+ import * as Schema from "effect/Schema";
131
+ import { raise } from "@dxos/debug";
132
+ import { assertArgument } from "@dxos/invariant";
133
+ import { DXN } from "@dxos/keys";
134
+ var getTypeDXNFromSpecifier = (input) => {
135
+ if (Schema.isSchema(input)) {
136
+ return getTypeReference(input)?.toDXN() ?? raise(new TypeError("Schema has no DXN"));
137
+ } else {
138
+ assertArgument(typeof input === "string", "input");
139
+ assertArgument(!input.startsWith("dxn:"), "input");
140
+ return DXN.fromTypename(input);
141
+ }
142
+ };
143
+
144
+ // src/query/filter.ts
145
+ var FilterClass = class _FilterClass {
146
+ ast;
147
+ static variance = {};
148
+ static is(value2) {
149
+ return typeof value2 === "object" && value2 !== null && "~Filter" in value2;
150
+ }
151
+ static fromAst(ast) {
152
+ return new _FilterClass(ast);
153
+ }
154
+ static everything() {
155
+ return new _FilterClass({
156
+ type: "object",
157
+ typename: null,
158
+ props: {}
159
+ });
160
+ }
161
+ static nothing() {
162
+ return new _FilterClass({
163
+ type: "not",
164
+ filter: {
165
+ type: "object",
166
+ typename: null,
167
+ props: {}
168
+ }
169
+ });
170
+ }
171
+ static relation() {
172
+ return new _FilterClass({
173
+ type: "object",
174
+ typename: null,
175
+ props: {}
176
+ });
177
+ }
178
+ static ids(...ids) {
179
+ assertArgument2(ids.every((id) => ObjectId.isValid(id)), "ids", "ids must be valid");
180
+ if (ids.length === 0) {
181
+ return Filter.nothing();
182
+ }
183
+ return new _FilterClass({
184
+ type: "object",
185
+ typename: null,
186
+ id: ids,
187
+ props: {}
188
+ });
189
+ }
190
+ static type(schema, props) {
191
+ const dxn = getTypeDXNFromSpecifier(schema);
192
+ return new _FilterClass({
193
+ type: "object",
194
+ typename: dxn.toString(),
195
+ ...propsFilterToAst(props ?? {})
196
+ });
197
+ }
198
+ static typename(typename) {
199
+ assertArgument2(!typename.startsWith("dxn:"), "typename", "Typename must no be qualified");
200
+ return new _FilterClass({
201
+ type: "object",
202
+ typename: DXN2.fromTypename(typename).toString(),
203
+ props: {}
204
+ });
205
+ }
206
+ static typeDXN(dxn) {
207
+ return new _FilterClass({
208
+ type: "object",
209
+ typename: dxn.toString(),
210
+ props: {}
211
+ });
212
+ }
213
+ static tag(tag) {
214
+ return new _FilterClass({
215
+ type: "tag",
216
+ tag
217
+ });
218
+ }
219
+ static props(props) {
220
+ return new _FilterClass({
221
+ type: "object",
222
+ typename: null,
223
+ ...propsFilterToAst(props)
224
+ });
225
+ }
226
+ static text(text, options) {
227
+ return new _FilterClass({
228
+ type: "text-search",
229
+ text,
230
+ searchKind: options?.type
231
+ });
232
+ }
233
+ static foreignKeys(schema, keys) {
234
+ const dxn = getTypeDXNFromSpecifier(schema);
235
+ return new _FilterClass({
236
+ type: "object",
237
+ typename: dxn.toString(),
238
+ props: {},
239
+ foreignKeys: keys
240
+ });
241
+ }
242
+ static eq(value2) {
243
+ if (!isRef(value2) && typeof value2 === "object" && value2 !== null) {
244
+ throw new TypeError("Cannot use object as a value for eq filter");
245
+ }
246
+ return new _FilterClass({
247
+ type: "compare",
248
+ operator: "eq",
249
+ value: isRef(value2) ? value2.noInline().encode() : value2
250
+ });
251
+ }
252
+ static neq(value2) {
253
+ return new _FilterClass({
254
+ type: "compare",
255
+ operator: "neq",
256
+ value: value2
257
+ });
258
+ }
259
+ static gt(value2) {
260
+ return new _FilterClass({
261
+ type: "compare",
262
+ operator: "gt",
263
+ value: value2
264
+ });
265
+ }
266
+ static gte(value2) {
267
+ return new _FilterClass({
268
+ type: "compare",
269
+ operator: "gte",
270
+ value: value2
271
+ });
272
+ }
273
+ static lt(value2) {
274
+ return new _FilterClass({
275
+ type: "compare",
276
+ operator: "lt",
277
+ value: value2
278
+ });
279
+ }
280
+ static lte(value2) {
281
+ return new _FilterClass({
282
+ type: "compare",
283
+ operator: "lte",
284
+ value: value2
285
+ });
286
+ }
287
+ static in(...values) {
288
+ return new _FilterClass({
289
+ type: "in",
290
+ values
291
+ });
292
+ }
293
+ static contains(value2) {
294
+ return new _FilterClass({
295
+ type: "contains",
296
+ value: value2
297
+ });
298
+ }
299
+ static between(from, to) {
300
+ return new _FilterClass({
301
+ type: "range",
302
+ from,
303
+ to
304
+ });
305
+ }
306
+ static not(filter) {
307
+ return new _FilterClass({
308
+ type: "not",
309
+ filter: filter.ast
310
+ });
311
+ }
312
+ static and(...filters) {
313
+ return new _FilterClass({
314
+ type: "and",
315
+ filters: filters.map((f) => f.ast)
316
+ });
317
+ }
318
+ static or(...filters) {
319
+ return new _FilterClass({
320
+ type: "or",
321
+ filters: filters.map((f) => f.ast)
322
+ });
323
+ }
324
+ constructor(ast) {
325
+ this.ast = ast;
326
+ }
327
+ "~Filter" = _FilterClass.variance;
328
+ };
329
+ var Filter = FilterClass;
330
+ var propsFilterToAst = (predicates) => {
331
+ let idFilter;
332
+ if ("id" in predicates) {
333
+ assertArgument2(typeof predicates.id === "string" || Array.isArray(predicates.id), "predicates.id", "invalid id filter");
334
+ idFilter = typeof predicates.id === "string" ? [
335
+ predicates.id
336
+ ] : predicates.id;
337
+ Schema2.Array(ObjectId).pipe(Schema2.validateSync)(idFilter);
338
+ }
339
+ return {
340
+ id: idFilter,
341
+ props: Object.fromEntries(Object.entries(predicates).filter(([prop, _value]) => prop !== "id").map(([prop, predicate]) => [
342
+ prop,
343
+ processPredicate(predicate)
344
+ ]))
345
+ };
346
+ };
347
+ var processPredicate = (predicate) => {
348
+ return Match.value(predicate).pipe(
349
+ Match.withReturnType(),
350
+ Match.when(Filter.is, (predicate2) => predicate2.ast),
351
+ // TODO(wittjosiah): Add support for array predicates.
352
+ Match.when(Array.isArray, (_predicate) => {
353
+ throw new Error("Array predicates are not yet supported.");
354
+ }),
355
+ Match.when((predicate2) => !isRef(predicate2) && typeof predicate2 === "object" && predicate2 !== null, (predicate2) => {
356
+ const nestedProps = Object.fromEntries(Object.entries(predicate2).map(([key, value2]) => [
357
+ key,
358
+ processPredicate(value2)
359
+ ]));
360
+ return {
361
+ type: "object",
362
+ typename: null,
363
+ props: nestedProps
364
+ };
365
+ }),
366
+ Match.orElse((value2) => Filter.eq(value2).ast)
367
+ );
368
+ };
369
+
370
+ // src/query/order.ts
371
+ var OrderClass = class _OrderClass {
372
+ ast;
373
+ static variance = {};
374
+ static is(value2) {
375
+ return typeof value2 === "object" && value2 !== null && "~Order" in value2;
376
+ }
377
+ constructor(ast) {
378
+ this.ast = ast;
379
+ }
380
+ "~Order" = _OrderClass.variance;
381
+ };
382
+ (function(Order2) {
383
+ Order2.natural = new OrderClass({
384
+ kind: "natural"
385
+ });
386
+ Order2.property = (property, direction) => new OrderClass({
387
+ kind: "property",
388
+ property,
389
+ direction
390
+ });
391
+ })(Order || (Order = {}));
392
+ var Order;
393
+
394
+ // src/query/query.ts
395
+ var QueryClass = class _QueryClass {
396
+ ast;
397
+ static variance = {};
398
+ static is(value2) {
399
+ return typeof value2 === "object" && value2 !== null && "~Query" in value2;
400
+ }
401
+ static fromAst(ast) {
402
+ return new _QueryClass(ast);
403
+ }
404
+ static select(filter) {
405
+ return new _QueryClass({
406
+ type: "select",
407
+ filter: filter.ast
408
+ });
409
+ }
410
+ static type(schema, predicates) {
411
+ return new _QueryClass({
412
+ type: "select",
413
+ filter: FilterClass.type(schema, predicates).ast
414
+ });
415
+ }
416
+ static all(...queries) {
417
+ if (queries.length === 0) {
418
+ throw new TypeError("Query.all combines results of multiple queries, to query all objects use Query.select(Filter.everything())");
419
+ }
420
+ return new _QueryClass({
421
+ type: "union",
422
+ queries: queries.map((q) => q.ast)
423
+ });
424
+ }
425
+ static without(source, exclude) {
426
+ return new _QueryClass({
427
+ type: "set-difference",
428
+ source: source.ast,
429
+ exclude: exclude.ast
430
+ });
431
+ }
432
+ constructor(ast) {
433
+ this.ast = ast;
434
+ }
435
+ "~Query" = _QueryClass.variance;
436
+ select(filter) {
437
+ if (Filter.is(filter)) {
438
+ return new _QueryClass({
439
+ type: "filter",
440
+ selection: this.ast,
441
+ filter: filter.ast
442
+ });
443
+ } else {
444
+ return new _QueryClass({
445
+ type: "filter",
446
+ selection: this.ast,
447
+ filter: FilterClass.props(filter).ast
448
+ });
449
+ }
450
+ }
451
+ reference(key) {
452
+ return new _QueryClass({
453
+ type: "reference-traversal",
454
+ anchor: this.ast,
455
+ property: key
456
+ });
457
+ }
458
+ referencedBy(target, key) {
459
+ const dxn = getTypeDXNFromSpecifier(target);
460
+ return new _QueryClass({
461
+ type: "incoming-references",
462
+ anchor: this.ast,
463
+ property: key,
464
+ typename: dxn.toString()
465
+ });
466
+ }
467
+ sourceOf(relation, predicates) {
468
+ return new _QueryClass({
469
+ type: "relation",
470
+ anchor: this.ast,
471
+ direction: "outgoing",
472
+ filter: FilterClass.type(relation, predicates).ast
473
+ });
474
+ }
475
+ targetOf(relation, predicates) {
476
+ return new _QueryClass({
477
+ type: "relation",
478
+ anchor: this.ast,
479
+ direction: "incoming",
480
+ filter: FilterClass.type(relation, predicates).ast
481
+ });
482
+ }
483
+ source() {
484
+ return new _QueryClass({
485
+ type: "relation-traversal",
486
+ anchor: this.ast,
487
+ direction: "source"
488
+ });
489
+ }
490
+ target() {
491
+ return new _QueryClass({
492
+ type: "relation-traversal",
493
+ anchor: this.ast,
494
+ direction: "target"
495
+ });
496
+ }
497
+ orderBy(...order) {
498
+ return new _QueryClass({
499
+ type: "order",
500
+ query: this.ast,
501
+ order: order.map((o) => o.ast)
502
+ });
503
+ }
504
+ options(options) {
505
+ return new _QueryClass({
506
+ type: "options",
507
+ query: this.ast,
508
+ options
509
+ });
510
+ }
511
+ };
512
+ var Query = QueryClass;
513
+
514
+ // src/Annotation.ts
515
+ var Annotation_exports = {};
516
+ __export(Annotation_exports, {
517
+ DescriptionAnnotation: () => DescriptionAnnotation,
518
+ FormInputAnnotation: () => FormInputAnnotation,
519
+ GeneratorAnnotation: () => GeneratorAnnotation,
520
+ LabelAnnotation: () => LabelAnnotation,
521
+ SystemTypeAnnotation: () => SystemTypeAnnotation,
522
+ TypeAnnotation: () => TypeAnnotation,
523
+ getDescription: () => getDescription,
524
+ getLabel: () => getLabel,
525
+ getTypeAnnotation: () => getTypeAnnotation,
526
+ setDescription: () => setDescription,
527
+ setLabel: () => setLabel
528
+ });
529
+
530
+ // src/Database.ts
531
+ var Database_exports = {};
532
+
533
+ // src/Entity.ts
534
+ var Entity_exports = {};
535
+ __export(Entity_exports, {
536
+ Kind: () => Kind,
537
+ KindId: () => KindId,
538
+ KindSchema: () => KindSchema,
539
+ getKind: () => getKind
540
+ });
541
+ var Kind = EntityKind;
542
+ var KindSchema = EntityKindSchema;
543
+ var getKind = getEntityKind;
544
+
545
+ // src/Format.ts
546
+ var Format_exports = {};
547
+ __export(Format_exports, {
548
+ Currency: () => Currency,
549
+ CurrencyAnnotationId: () => CurrencyAnnotationId,
550
+ DecimalPrecision: () => DecimalPrecision,
551
+ Email: () => Email,
552
+ Format: () => Format,
553
+ FormatAnnotation: () => FormatAnnotation,
554
+ FormatAnnotationId: () => FormatAnnotationId,
555
+ FormatEnums: () => FormatEnums,
556
+ Formula: () => Formula,
557
+ GeoLocation: () => GeoLocation,
558
+ GeoPoint: () => GeoPoint,
559
+ Hostname: () => Hostname,
560
+ JSON: () => JSON2,
561
+ Markdown: () => Markdown,
562
+ OptionsAnnotationId: () => OptionsAnnotationId,
563
+ PropertyKind: () => PropertyKind,
564
+ Regex: () => Regex,
565
+ SelectOptionSchema: () => SelectOptionSchema,
566
+ TypeEnum: () => TypeEnum,
567
+ TypeFormat: () => TypeFormat,
568
+ URL: () => URL,
569
+ UUID: () => UUID,
570
+ formatToType: () => formatToType,
571
+ getFormatAnnotation: () => getFormatAnnotation,
572
+ getOptionsAnnotation: () => getOptionsAnnotation,
573
+ getTypeEnum: () => getTypeEnum,
574
+ typeToFormat: () => typeToFormat
575
+ });
576
+
577
+ // src/JsonSchema.ts
578
+ var JsonSchema_exports = {};
579
+ __export(JsonSchema_exports, {
580
+ JsonSchema: () => JsonSchema,
581
+ toEffectSchema: () => toEffectSchema,
582
+ toJsonSchema: () => toJsonSchema
583
+ });
584
+ var JsonSchema = JsonSchemaType;
585
+
586
+ // src/Key.ts
587
+ var Key_exports = {};
588
+ __export(Key_exports, {
589
+ ForeignKey: () => ForeignKey,
590
+ ObjectId: () => ObjectId2,
591
+ SpaceId: () => SpaceId
592
+ });
593
+ import { ForeignKey } from "@dxos/echo-protocol";
594
+ import { SpaceId, ObjectId as ObjectId2 } from "@dxos/keys";
595
+
596
+ // src/Obj.ts
597
+ var Obj_exports = {};
598
+ __export(Obj_exports, {
599
+ Any: () => Any,
600
+ ID: () => ID,
601
+ Meta: () => Meta,
602
+ VersionTypeId: () => VersionTypeId,
603
+ addTag: () => addTag,
604
+ clone: () => clone,
605
+ compareVersions: () => compareVersions,
606
+ decodeVersion: () => decodeVersion,
607
+ deleteKeys: () => deleteKeys,
608
+ encodeVersion: () => encodeVersion,
609
+ fromJSON: () => fromJSON,
610
+ getDXN: () => getDXN2,
611
+ getDescription: () => getDescription2,
612
+ getKeys: () => getKeys,
613
+ getLabel: () => getLabel2,
614
+ getMeta: () => getMeta3,
615
+ getSchema: () => getSchema2,
616
+ getSnapshot: () => getSnapshot,
617
+ getTypeDXN: () => getTypeDXN2,
618
+ getTypename: () => getTypename2,
619
+ instanceOf: () => instanceOf,
620
+ isDeleted: () => isDeleted2,
621
+ isObject: () => isObject,
622
+ isVersion: () => isVersion,
623
+ make: () => make2,
624
+ removeTag: () => removeTag,
625
+ setDescription: () => setDescription2,
626
+ setLabel: () => setLabel2,
627
+ sort: () => sort,
628
+ sortByLabel: () => sortByLabel,
629
+ sortByTypename: () => sortByTypename,
630
+ toJSON: () => toJSON,
631
+ version: () => version,
632
+ versionValid: () => versionValid
633
+ });
634
+ import * as Function from "effect/Function";
635
+ import * as Schema3 from "effect/Schema";
636
+ import { assertArgument as assertArgument3, invariant as invariant2 } from "@dxos/invariant";
637
+ import { ObjectId as ObjectId3 } from "@dxos/keys";
638
+ import { getSnapshot as getSnapshot$ } from "@dxos/live-object";
639
+ import { assumeType, deepMapValues } from "@dxos/util";
640
+
641
+ // src/Type.ts
642
+ var Type_exports = {};
643
+ __export(Type_exports, {
644
+ Expando: () => Expando2,
645
+ Obj: () => Obj,
646
+ PersistentType: () => PersistentType,
647
+ Ref: () => Ref2,
648
+ Relation: () => Relation,
649
+ RuntimeType: () => EchoSchema,
650
+ getDXN: () => getDXN,
651
+ getMeta: () => getMeta2,
652
+ getTypename: () => getTypename,
653
+ getVersion: () => getVersion,
654
+ isMutable: () => isMutable2,
655
+ toEffectSchema: () => toEffectSchema,
656
+ toJsonSchema: () => toJsonSchema
657
+ });
658
+ import { invariant } from "@dxos/invariant";
659
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
660
+ var Obj = EchoObjectSchema;
661
+ var Expando2 = Expando;
662
+ var PersistentType = PersistentSchema;
663
+ var Relation = EchoRelationSchema;
664
+ var Ref2 = Ref;
665
+ var getDXN = (schema) => {
666
+ return getSchemaDXN(schema);
667
+ };
668
+ var getTypename = (schema) => {
669
+ const typename = getSchemaTypename(schema);
670
+ invariant(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
671
+ F: __dxlog_file,
672
+ L: 229,
673
+ S: void 0,
674
+ A: [
675
+ "typeof typename === 'string' && !typename.startsWith('dxn:')",
676
+ "'Invalid typename'"
677
+ ]
678
+ });
679
+ return typename;
680
+ };
681
+ var getVersion = (schema) => {
682
+ const version2 = getSchemaVersion(schema);
683
+ invariant(typeof version2 === "string" && version2.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
684
+ F: __dxlog_file,
685
+ L: 239,
686
+ S: void 0,
687
+ A: [
688
+ "typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
689
+ "'Invalid version'"
690
+ ]
691
+ });
692
+ return version2;
693
+ };
694
+ var isMutable2 = isMutable;
695
+ var getMeta2 = (schema) => {
696
+ return getTypeAnnotation(schema);
697
+ };
698
+
699
+ // src/Obj.ts
700
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo/src/Obj.ts";
701
+ var Any = Schema3.Struct({}).pipe(Obj({
702
+ typename: "dxos.org/type/Any",
703
+ version: "0.1.0"
704
+ }));
705
+ var defaultMeta = {
706
+ keys: []
707
+ };
708
+ var make2 = (schema, props, meta) => {
709
+ assertArgument3(getTypeAnnotation(schema)?.kind === Kind.Object, "schema", "Expected an object schema");
710
+ if (props[MetaId] != null) {
711
+ meta = {
712
+ ...structuredClone(defaultMeta),
713
+ ...props[MetaId]
714
+ };
715
+ delete props[MetaId];
716
+ }
717
+ const filterUndefined = Object.fromEntries(Object.entries(props).filter(([_, v]) => v !== void 0));
718
+ return makeObject(schema, filterUndefined, {
719
+ ...defaultMeta,
720
+ ...meta
721
+ });
722
+ };
723
+ var isObject = (obj) => {
724
+ assumeType(obj);
725
+ return typeof obj === "object" && obj !== null && obj[KindId] === Kind.Object;
726
+ };
727
+ var getSnapshot = getSnapshot$;
728
+ var clone = (obj, opts) => {
729
+ const { id, ...data } = obj;
730
+ const schema = getSchema(obj);
731
+ invariant2(schema != null, "Object should have a schema", {
732
+ F: __dxlog_file2,
733
+ L: 157,
734
+ S: void 0,
735
+ A: [
736
+ "schema != null",
737
+ "'Object should have a schema'"
738
+ ]
739
+ });
740
+ const props = deepMapValues(data, (value2, recurse) => {
741
+ if (isRef(value2)) {
742
+ return value2;
743
+ }
744
+ return recurse(value2);
745
+ });
746
+ if (opts?.retainId) {
747
+ props.id = id;
748
+ }
749
+ const meta = getMeta3(obj);
750
+ props[MetaId] = deepMapValues(meta, (value2, recurse) => {
751
+ if (isRef(value2)) {
752
+ return value2;
753
+ }
754
+ return recurse(value2);
755
+ });
756
+ return make2(schema, props);
757
+ };
758
+ var ID = ObjectId3;
759
+ var instanceOf = (...args) => {
760
+ if (args.length === 1) {
761
+ return (entity) => isInstanceOf(args[0], entity);
762
+ }
763
+ return isInstanceOf(args[0], args[1]);
764
+ };
765
+ var getDXN2 = (entity) => {
766
+ assertArgument3(!Schema3.isSchema(entity), "obj", "Object should not be a schema.");
767
+ const dxn = getObjectDXN(entity);
768
+ invariant2(dxn != null, "Invalid object.", {
769
+ F: __dxlog_file2,
770
+ L: 213,
771
+ S: void 0,
772
+ A: [
773
+ "dxn != null",
774
+ "'Invalid object.'"
775
+ ]
776
+ });
777
+ return dxn;
778
+ };
779
+ var getTypeDXN2 = getTypeDXN;
780
+ var getSchema2 = getSchema;
781
+ var getTypename2 = (entity) => {
782
+ const schema = getSchema(entity);
783
+ if (schema == null) {
784
+ return getTypeDXN(entity)?.asTypeDXN()?.type;
785
+ }
786
+ return getSchemaTypename(schema);
787
+ };
788
+ var Meta = MetaId;
789
+ var getMeta3 = (entity) => {
790
+ const meta = getMeta(entity);
791
+ invariant2(meta != null, "Invalid object.", {
792
+ F: __dxlog_file2,
793
+ L: 253,
794
+ S: void 0,
795
+ A: [
796
+ "meta != null",
797
+ "'Invalid object.'"
798
+ ]
799
+ });
800
+ return meta;
801
+ };
802
+ var getKeys = Function.dual(2, (entity, source) => {
803
+ const meta = getMeta3(entity);
804
+ invariant2(meta != null, "Invalid object.", {
805
+ F: __dxlog_file2,
806
+ L: 265,
807
+ S: void 0,
808
+ A: [
809
+ "meta != null",
810
+ "'Invalid object.'"
811
+ ]
812
+ });
813
+ return meta.keys.filter((key) => key.source === source);
814
+ });
815
+ var deleteKeys = (entity, source) => {
816
+ const meta = getMeta3(entity);
817
+ for (let i = 0; i < meta.keys.length; i++) {
818
+ if (meta.keys[i].source === source) {
819
+ meta.keys.splice(i, 1);
820
+ i--;
821
+ }
822
+ }
823
+ };
824
+ var addTag = (entity, tag) => {
825
+ const meta = getMeta3(entity);
826
+ meta.tags ??= [];
827
+ meta.tags.push(tag);
828
+ };
829
+ var removeTag = (entity, tag) => {
830
+ const meta = getMeta3(entity);
831
+ if (!meta.tags) {
832
+ return;
833
+ }
834
+ for (let i = 0; i < meta.tags.length; i++) {
835
+ if (meta.tags[i] === tag) {
836
+ meta.tags.splice(i, 1);
837
+ i--;
838
+ }
839
+ }
840
+ };
841
+ var isDeleted2 = (entity) => {
842
+ const deleted = isDeleted(entity);
843
+ invariant2(typeof deleted === "boolean", "Invalid object.", {
844
+ F: __dxlog_file2,
845
+ L: 306,
846
+ S: void 0,
847
+ A: [
848
+ "typeof deleted === 'boolean'",
849
+ "'Invalid object.'"
850
+ ]
851
+ });
852
+ return deleted;
853
+ };
854
+ var getLabel2 = (entity) => {
855
+ const schema = getSchema(entity);
856
+ if (schema != null) {
857
+ return getLabel(schema, entity);
858
+ }
859
+ };
860
+ var setLabel2 = (entity, label) => {
861
+ const schema = getSchema(entity);
862
+ if (schema != null) {
863
+ setLabel(schema, entity, label);
864
+ }
865
+ };
866
+ var getDescription2 = (entity) => {
867
+ const schema = getSchema(entity);
868
+ if (schema != null) {
869
+ return getDescription(schema, entity);
870
+ }
871
+ };
872
+ var setDescription2 = (entity, description) => {
873
+ const schema = getSchema(entity);
874
+ if (schema != null) {
875
+ setDescription(schema, entity, description);
876
+ }
877
+ };
878
+ var toJSON = (entity) => objectToJSON(entity);
879
+ var fromJSON = objectFromJSON;
880
+ var compare = (a, b) => {
881
+ if (a == null) {
882
+ return b == null ? 0 : 1;
883
+ }
884
+ if (b == null) {
885
+ return -1;
886
+ }
887
+ return a.localeCompare(b);
888
+ };
889
+ var sortByLabel = (a, b) => compare(getLabel2(a), getLabel2(b));
890
+ var sortByTypename = (a, b) => compare(getTypename2(a), getTypename2(b));
891
+ var sort = (...comparators) => {
892
+ return (a, b) => {
893
+ for (const comparator of comparators) {
894
+ const result = comparator(a, b);
895
+ if (result !== 0) {
896
+ return result;
897
+ }
898
+ }
899
+ return 0;
900
+ };
901
+ };
902
+ var unversioned = {
903
+ [VersionTypeId]: {},
904
+ versioned: false
905
+ };
906
+ var isVersion = (entity) => {
907
+ return entity != null && typeof entity === "object" && VersionTypeId in entity;
908
+ };
909
+ var version = (entity) => {
910
+ const version2 = entity[ObjectVersionId];
911
+ if (version2 === void 0) {
912
+ return unversioned;
913
+ }
914
+ return version2;
915
+ };
916
+ var versionValid = (version2) => {
917
+ assertArgument3(isVersion(version2), "version", "Invalid version object");
918
+ return !!version2.versioned;
919
+ };
920
+ var compareVersions = (version1, version2) => {
921
+ assertArgument3(isVersion(version1), "version1", "Invalid version object");
922
+ assertArgument3(isVersion(version2), "version2", "Invalid version object");
923
+ if (!versionValid(version1) || !versionValid(version2)) {
924
+ return "unversioned";
925
+ }
926
+ if (version1.automergeHeads?.length !== version2.automergeHeads?.length) {
927
+ return "different";
928
+ }
929
+ if (version1.automergeHeads?.some((head) => !version2.automergeHeads?.includes(head))) {
930
+ return "different";
931
+ }
932
+ return "equal";
933
+ };
934
+ var encodeVersion = (version2) => {
935
+ return JSON.stringify(version2);
936
+ };
937
+ var decodeVersion = (version2) => {
938
+ const parsed = JSON.parse(version2);
939
+ parsed[VersionTypeId] = {};
940
+ return parsed;
941
+ };
942
+
943
+ // src/Relation.ts
944
+ var Relation_exports = {};
945
+ __export(Relation_exports, {
946
+ Any: () => Any2,
947
+ Source: () => Source,
948
+ Target: () => Target,
949
+ getSource: () => getSource,
950
+ getSourceDXN: () => getSourceDXN,
951
+ getTarget: () => getTarget,
952
+ getTargetDXN: () => getTargetDXN,
953
+ isRelation: () => isRelation,
954
+ make: () => make3
955
+ });
956
+ import * as Schema4 from "effect/Schema";
957
+ import { raise as raise2 } from "@dxos/debug";
958
+ import { assertArgument as assertArgument4, invariant as invariant3 } from "@dxos/invariant";
959
+ import { DXN as DXN3 } from "@dxos/keys";
960
+ import { assumeType as assumeType2 } from "@dxos/util";
961
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo/src/Relation.ts";
962
+ var Any2 = Schema4.Struct({}).pipe(Relation({
963
+ typename: "dxos.org/type/Any",
964
+ version: "0.1.0",
965
+ source: Any,
966
+ target: Any
967
+ }));
968
+ var Source = RelationSourceId;
969
+ var Target = RelationTargetId;
970
+ var make3 = (schema, props, meta) => {
971
+ assertArgument4(getTypeAnnotation(schema)?.kind === EntityKind.Relation, "schema", "Expected a relation schema");
972
+ if (props[MetaId] != null) {
973
+ meta = props[MetaId];
974
+ delete props[MetaId];
975
+ }
976
+ const sourceDXN = getObjectDXN(props[Source]) ?? raise2(new Error("Unresolved relation source"));
977
+ const targetDXN = getObjectDXN(props[Target]) ?? raise2(new Error("Unresolved relation target"));
978
+ props[RelationSourceDXNId] = sourceDXN;
979
+ props[RelationTargetDXNId] = targetDXN;
980
+ return makeObject(schema, props, meta);
981
+ };
982
+ var isRelation = (value2) => {
983
+ if (typeof value2 !== "object" || value2 === null) {
984
+ return false;
985
+ }
986
+ if (ATTR_RELATION_SOURCE in value2 || ATTR_RELATION_TARGET in value2) {
987
+ return true;
988
+ }
989
+ const kind = value2[KindId];
990
+ return kind === EntityKind.Relation;
991
+ };
992
+ var getSourceDXN = (value2) => {
993
+ assertArgument4(isRelation(value2), "Expected a relation");
994
+ assumeType2(value2);
995
+ const dxn = value2[RelationSourceDXNId];
996
+ invariant3(dxn instanceof DXN3, void 0, {
997
+ F: __dxlog_file3,
998
+ L: 124,
999
+ S: void 0,
1000
+ A: [
1001
+ "dxn instanceof DXN",
1002
+ ""
1003
+ ]
1004
+ });
1005
+ return dxn;
1006
+ };
1007
+ var getTargetDXN = (value2) => {
1008
+ assertArgument4(isRelation(value2), "Expected a relation");
1009
+ assumeType2(value2);
1010
+ const dxn = value2[RelationTargetDXNId];
1011
+ invariant3(dxn instanceof DXN3, void 0, {
1012
+ F: __dxlog_file3,
1013
+ L: 136,
1014
+ S: void 0,
1015
+ A: [
1016
+ "dxn instanceof DXN",
1017
+ ""
1018
+ ]
1019
+ });
1020
+ return dxn;
1021
+ };
1022
+ var getSource = (relation) => {
1023
+ assertArgument4(isRelation(relation), "Expected a relation");
1024
+ assumeType2(relation);
1025
+ const obj = relation[RelationSourceId];
1026
+ invariant3(obj !== void 0, `Invalid source: ${relation.id}`, {
1027
+ F: __dxlog_file3,
1028
+ L: 148,
1029
+ S: void 0,
1030
+ A: [
1031
+ "obj !== undefined",
1032
+ "`Invalid source: ${relation.id}`"
1033
+ ]
1034
+ });
1035
+ return obj;
1036
+ };
1037
+ var getTarget = (relation) => {
1038
+ assertArgument4(isRelation(relation), "Expected a relation");
1039
+ assumeType2(relation);
1040
+ const obj = relation[RelationTargetId];
1041
+ invariant3(obj !== void 0, `Invalid target: ${relation.id}`, {
1042
+ F: __dxlog_file3,
1043
+ L: 160,
1044
+ S: void 0,
1045
+ A: [
1046
+ "obj !== undefined",
1047
+ "`Invalid target: ${relation.id}`"
1048
+ ]
1049
+ });
1050
+ return obj;
1051
+ };
1052
+
1053
+ // src/Tag.ts
1054
+ var Tag_exports = {};
1055
+ __export(Tag_exports, {
1056
+ Tag: () => Tag,
1057
+ createTagList: () => createTagList,
1058
+ findTagByLabel: () => findTagByLabel,
1059
+ make: () => make4,
1060
+ sortTags: () => sortTags
1061
+ });
1062
+ import * as Schema5 from "effect/Schema";
1063
+ var Tag = Schema5.Struct({
1064
+ label: Schema5.String,
1065
+ hue: Schema5.optional(Schema5.String)
1066
+ }).pipe(Obj({
1067
+ typename: "dxos.org/type/Tag",
1068
+ version: "0.1.0"
1069
+ }), LabelAnnotation.set([
1070
+ "label"
1071
+ ]), SystemTypeAnnotation.set(true));
1072
+ var make4 = (props) => make2(Tag, props);
1073
+ var sortTags = ({ label: a }, { label: b }) => a.localeCompare(b);
1074
+ var createTagList = (tags) => Object.entries(tags).map(([id, tag]) => ({
1075
+ ...tag,
1076
+ id
1077
+ })).sort(sortTags);
1078
+ var findTagByLabel = (tags, name) => {
1079
+ const entry = Object.entries(tags ?? {}).find(([_, tag]) => tag.label.toLowerCase() === name.toLowerCase());
1080
+ return entry ? {
1081
+ ...entry[1],
1082
+ id: entry[0]
1083
+ } : void 0;
1084
+ };
1085
+
1086
+ export {
1087
+ SchemaNotFoundError,
1088
+ ObjectNotFoundError,
1089
+ Ref_exports,
1090
+ FilterClass,
1091
+ Filter,
1092
+ Order,
1093
+ Query,
1094
+ QueryAST,
1095
+ Annotation_exports,
1096
+ Database_exports,
1097
+ Entity_exports,
1098
+ Format_exports,
1099
+ JsonSchema_exports,
1100
+ Key_exports,
1101
+ Obj,
1102
+ Relation,
1103
+ Ref2 as Ref,
1104
+ Type_exports,
1105
+ Any,
1106
+ Obj_exports,
1107
+ Relation_exports,
1108
+ Tag_exports,
1109
+ DXN4 as DXN
1110
+ };
1111
+ //# sourceMappingURL=chunk-E4UTVJNF.mjs.map