@dxos/echo 0.8.4-main.bc674ce → 0.8.4-main.c351d160a8

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 (523) hide show
  1. package/README.md +2 -2
  2. package/dist/lib/neutral/Annotation.mjs +8 -3
  3. package/dist/lib/neutral/Database.mjs +34 -6
  4. package/dist/lib/neutral/Entity.mjs +18 -10
  5. package/dist/lib/neutral/Err.mjs +3 -1
  6. package/dist/lib/neutral/Feed.mjs +47 -0
  7. package/dist/lib/neutral/Feed.mjs.map +7 -0
  8. package/dist/lib/neutral/Filter.mjs +11 -8
  9. package/dist/lib/neutral/Format.mjs +3 -3
  10. package/dist/lib/neutral/JsonSchema.mjs +9 -9
  11. package/dist/lib/neutral/Obj.mjs +35 -15
  12. package/dist/lib/neutral/Order.mjs +1 -1
  13. package/dist/lib/neutral/Query.mjs +19 -9
  14. package/dist/lib/neutral/Ref.mjs +9 -7
  15. package/dist/lib/neutral/Relation.mjs +20 -11
  16. package/dist/lib/neutral/SchemaRegistry.mjs +1 -1
  17. package/dist/lib/neutral/Tag.mjs +13 -10
  18. package/dist/lib/neutral/Type.mjs +13 -23
  19. package/dist/lib/neutral/chunk-43Y5DOS6.mjs +396 -0
  20. package/dist/lib/neutral/chunk-43Y5DOS6.mjs.map +7 -0
  21. package/dist/lib/neutral/{chunk-2MTHJ5UW.mjs → chunk-4JRI2ZJI.mjs} +134 -24
  22. package/dist/lib/neutral/chunk-4JRI2ZJI.mjs.map +7 -0
  23. package/dist/lib/neutral/chunk-6DNYDXCV.mjs +159 -0
  24. package/dist/lib/neutral/chunk-6DNYDXCV.mjs.map +7 -0
  25. package/dist/lib/neutral/chunk-6GPU7XC3.mjs +283 -0
  26. package/dist/lib/neutral/chunk-6GPU7XC3.mjs.map +7 -0
  27. package/dist/lib/neutral/{chunk-IP2GHXWA.mjs → chunk-6K2MVI2O.mjs} +5 -5
  28. package/dist/lib/neutral/chunk-6K2MVI2O.mjs.map +7 -0
  29. package/dist/lib/neutral/chunk-7VNVH63N.mjs +106 -0
  30. package/dist/lib/neutral/chunk-7VNVH63N.mjs.map +7 -0
  31. package/dist/lib/neutral/{chunk-62DWJ6CE.mjs → chunk-B5OXLWZL.mjs} +14 -14
  32. package/dist/lib/neutral/chunk-B5OXLWZL.mjs.map +7 -0
  33. package/dist/lib/neutral/{chunk-4L6DOFXP.mjs → chunk-BNCCGLJN.mjs} +1 -1
  34. package/dist/lib/neutral/{chunk-4L6DOFXP.mjs.map → chunk-BNCCGLJN.mjs.map} +1 -1
  35. package/dist/lib/neutral/chunk-BOZZPUXE.mjs +787 -0
  36. package/dist/lib/neutral/chunk-BOZZPUXE.mjs.map +7 -0
  37. package/dist/lib/neutral/{chunk-SU2LVM7J.mjs → chunk-C4JZK4J7.mjs} +1596 -2730
  38. package/dist/lib/neutral/chunk-C4JZK4J7.mjs.map +7 -0
  39. package/dist/lib/neutral/{chunk-HMOXCO27.mjs → chunk-FXEG7EOK.mjs} +8 -3
  40. package/dist/lib/neutral/chunk-FXEG7EOK.mjs.map +7 -0
  41. package/dist/lib/neutral/{chunk-4TT624YA.mjs → chunk-FZO7LQO7.mjs} +2 -2
  42. package/dist/lib/neutral/{chunk-4TT624YA.mjs.map → chunk-FZO7LQO7.mjs.map} +1 -1
  43. package/dist/lib/neutral/chunk-NEGC54NE.mjs +130 -0
  44. package/dist/lib/neutral/chunk-NEGC54NE.mjs.map +7 -0
  45. package/dist/lib/neutral/{chunk-VB5HVDCA.mjs → chunk-NXMFBIT5.mjs} +16 -4
  46. package/dist/lib/neutral/chunk-NXMFBIT5.mjs.map +7 -0
  47. package/dist/lib/neutral/{chunk-NWUO5FKZ.mjs → chunk-OENWMTE6.mjs} +8 -2
  48. package/dist/lib/neutral/chunk-OENWMTE6.mjs.map +7 -0
  49. package/dist/lib/neutral/{chunk-6QPSGMEF.mjs → chunk-ROAGDPV7.mjs} +32 -8
  50. package/dist/lib/neutral/chunk-ROAGDPV7.mjs.map +7 -0
  51. package/dist/lib/neutral/{chunk-CUDIBUM4.mjs → chunk-SEMVAGBM.mjs} +97 -24
  52. package/dist/lib/neutral/chunk-SEMVAGBM.mjs.map +7 -0
  53. package/dist/lib/neutral/{chunk-RPB6V4BE.mjs → chunk-UBEZSGXY.mjs} +14 -1
  54. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  55. package/dist/lib/neutral/{chunk-ROKO4RKJ.mjs → chunk-UI6MWK5W.mjs} +2 -2
  56. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  57. package/dist/lib/neutral/{chunk-3ZEAZF7T.mjs → chunk-UTBRYVQC.mjs} +8 -4
  58. package/dist/lib/neutral/chunk-UTBRYVQC.mjs.map +7 -0
  59. package/dist/lib/neutral/{chunk-VR4A4WGG.mjs → chunk-W47JKR3X.mjs} +72 -23
  60. package/dist/lib/neutral/chunk-W47JKR3X.mjs.map +7 -0
  61. package/dist/lib/neutral/{chunk-YQYMWZAD.mjs → chunk-WYOKA6AE.mjs} +4 -4
  62. package/dist/lib/neutral/chunk-WYOKA6AE.mjs.map +7 -0
  63. package/dist/lib/neutral/{chunk-XMIDBDE6.mjs → chunk-YMNSMKKW.mjs} +11 -56
  64. package/dist/lib/neutral/chunk-YMNSMKKW.mjs.map +7 -0
  65. package/dist/lib/neutral/chunk-YWXWXIE5.mjs +34 -0
  66. package/dist/lib/neutral/chunk-YWXWXIE5.mjs.map +7 -0
  67. package/dist/lib/neutral/index.mjs +39 -26
  68. package/dist/lib/neutral/internal/index.mjs +52 -38
  69. package/dist/lib/neutral/meta.json +1 -1
  70. package/dist/lib/neutral/testing/index.mjs +41 -34
  71. package/dist/lib/neutral/testing/index.mjs.map +3 -3
  72. package/dist/types/src/Annotation.d.ts +23 -1
  73. package/dist/types/src/Annotation.d.ts.map +1 -1
  74. package/dist/types/src/Collection.d.ts +16 -0
  75. package/dist/types/src/Collection.d.ts.map +1 -0
  76. package/dist/types/src/Database.d.ts +79 -84
  77. package/dist/types/src/Database.d.ts.map +1 -1
  78. package/dist/types/src/Dataset.d.ts +18 -0
  79. package/dist/types/src/Dataset.d.ts.map +1 -0
  80. package/dist/types/src/Entity.d.ts +38 -12
  81. package/dist/types/src/Entity.d.ts.map +1 -1
  82. package/dist/types/src/Err.d.ts +43 -0
  83. package/dist/types/src/Err.d.ts.map +1 -1
  84. package/dist/types/src/Feed.d.ts +165 -0
  85. package/dist/types/src/Feed.d.ts.map +1 -0
  86. package/dist/types/src/Filter.d.ts +1 -1
  87. package/dist/types/src/Filter.d.ts.map +1 -1
  88. package/dist/types/src/Format.d.ts +3 -3
  89. package/dist/types/src/Format.d.ts.map +1 -1
  90. package/dist/types/src/Hypergraph.d.ts +8 -3
  91. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  92. package/dist/types/src/JsonSchema.d.ts +11 -4
  93. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  94. package/dist/types/src/Obj.d.ts +151 -36
  95. package/dist/types/src/Obj.d.ts.map +1 -1
  96. package/dist/types/src/Order.d.ts.map +1 -1
  97. package/dist/types/src/Query.d.ts +101 -14
  98. package/dist/types/src/Query.d.ts.map +1 -1
  99. package/dist/types/src/Ref.d.ts +58 -10
  100. package/dist/types/src/Ref.d.ts.map +1 -1
  101. package/dist/types/src/Relation.d.ts +73 -26
  102. package/dist/types/src/Relation.d.ts.map +1 -1
  103. package/dist/types/src/SchemaRegistry.d.ts +4 -4
  104. package/dist/types/src/SchemaRegistry.d.ts.map +1 -1
  105. package/dist/types/src/Tag.d.ts +4 -3
  106. package/dist/types/src/Tag.d.ts.map +1 -1
  107. package/dist/types/src/Type.d.ts +51 -180
  108. package/dist/types/src/Type.d.ts.map +1 -1
  109. package/dist/types/src/View.d.ts +68 -0
  110. package/dist/types/src/View.d.ts.map +1 -0
  111. package/dist/types/src/hierarchy.test.d.ts +2 -0
  112. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  113. package/dist/types/src/index.d.ts +4 -0
  114. package/dist/types/src/index.d.ts.map +1 -1
  115. package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +68 -8
  116. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  117. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  118. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  119. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  120. package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
  121. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  122. package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +13 -1
  123. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  124. package/dist/types/src/internal/{api/entity.d.ts → Entity/api.d.ts} +2 -2
  125. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  126. package/dist/types/src/internal/{entities → Entity}/entity.d.ts +3 -3
  127. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  128. package/dist/types/src/internal/{entities → Entity}/index.d.ts +2 -0
  129. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  130. package/dist/types/src/internal/{entities → Entity}/model.d.ts +4 -26
  131. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  132. package/dist/types/src/internal/{entities → Entity}/object.d.ts +2 -2
  133. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  134. package/dist/types/src/internal/{entities → Entity}/relation.d.ts +3 -30
  135. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  136. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  137. package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
  138. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  139. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  140. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  141. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  142. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  143. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  144. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  145. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  146. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  147. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  148. package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
  149. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  150. package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
  151. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  152. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  153. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  154. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  155. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +19 -19
  156. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  157. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  158. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  159. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  160. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  161. package/dist/types/src/internal/{object → Obj}/create-object.d.ts +2 -2
  162. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  163. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  164. package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
  165. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  166. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  167. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  168. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  169. package/dist/types/src/internal/{object → Obj}/json-serializer.d.ts +12 -5
  170. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  171. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  172. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  173. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  174. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  175. package/dist/types/src/internal/{object → Obj}/set-value.d.ts +1 -1
  176. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  177. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  178. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  179. package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +4 -4
  180. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  181. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  182. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  183. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
  184. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  185. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +16 -3
  186. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  187. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  188. package/dist/types/src/internal/{schema → Type}/compose.d.ts +1 -1
  189. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  190. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  191. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +8 -7
  192. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  193. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  194. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  195. package/dist/types/src/internal/{schema → Type}/persistent-schema.d.ts +2 -2
  196. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  197. package/dist/types/src/internal/{api → common/api}/index.d.ts +0 -4
  198. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  199. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  200. package/dist/types/src/internal/common/index.d.ts +4 -0
  201. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  202. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  203. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  204. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  205. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  206. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  207. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  208. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  209. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  210. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  211. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  212. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  213. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  214. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  215. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +1 -1
  216. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  217. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  218. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  219. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  220. package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +2 -1
  221. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  222. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  223. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  224. package/dist/types/src/internal/{types → common/types}/base.d.ts +1 -0
  225. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  226. package/dist/types/src/internal/{types → common/types}/entity.d.ts +2 -2
  227. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  228. package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
  229. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  230. package/dist/types/src/internal/{types → common/types}/meta.d.ts +2 -1
  231. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  232. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  233. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  234. package/dist/types/src/internal/{types → common/types}/typename.d.ts +8 -0
  235. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  236. package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
  237. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  238. package/dist/types/src/internal/index.d.ts +8 -10
  239. package/dist/types/src/internal/index.d.ts.map +1 -1
  240. package/dist/types/src/testing/test-schema.d.ts +19 -18
  241. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  242. package/dist/types/tsconfig.tsbuildinfo +1 -1
  243. package/package.json +19 -14
  244. package/src/Annotation.ts +31 -1
  245. package/src/Collection.ts +37 -0
  246. package/src/Database.ts +154 -173
  247. package/src/Dataset.ts +26 -0
  248. package/src/Entity.ts +71 -51
  249. package/src/Err.ts +22 -0
  250. package/src/Feed.ts +262 -0
  251. package/src/Filter.ts +19 -4
  252. package/src/Format.ts +3 -3
  253. package/src/Hypergraph.ts +9 -4
  254. package/src/JsonSchema.ts +14 -4
  255. package/src/Obj.test.ts +63 -2
  256. package/src/Obj.ts +278 -133
  257. package/src/Order.ts +3 -1
  258. package/src/Query.test.ts +181 -14
  259. package/src/Query.ts +249 -23
  260. package/src/Ref.ts +64 -11
  261. package/src/Relation.test.ts +8 -2
  262. package/src/Relation.ts +163 -129
  263. package/src/SchemaRegistry.ts +5 -4
  264. package/src/Tag.ts +6 -5
  265. package/src/Type.test.ts +10 -10
  266. package/src/Type.ts +70 -303
  267. package/src/View.ts +107 -0
  268. package/src/hierarchy.test.ts +33 -0
  269. package/src/index.ts +4 -0
  270. package/src/internal/{annotations → Annotation}/annotations.test.ts +6 -6
  271. package/src/internal/{annotations → Annotation}/annotations.ts +120 -9
  272. package/src/internal/{annotations → Annotation}/index.ts +1 -0
  273. package/src/internal/{api → Annotation}/sorting.ts +2 -3
  274. package/src/internal/{annotations → Annotation}/util.ts +14 -1
  275. package/src/internal/{api/entity.ts → Entity/api.ts} +4 -2
  276. package/src/internal/{entities → Entity}/entity.ts +6 -4
  277. package/src/internal/{entities → Entity}/index.ts +2 -0
  278. package/src/internal/{entities → Entity}/model.ts +17 -42
  279. package/src/internal/{entities → Entity}/object.ts +2 -2
  280. package/src/internal/{entities → Entity}/relation.ts +19 -36
  281. package/src/internal/{api → Entity}/version.ts +3 -2
  282. package/src/internal/{formats → Format}/date.test.ts +1 -1
  283. package/src/internal/{formats → Format}/format.test.ts +1 -1
  284. package/src/internal/{formats → Format}/types.ts +3 -3
  285. package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
  286. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +4 -4
  287. package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -48
  288. package/src/internal/{json-schema → JsonSchema}/json-schema.ts +6 -4
  289. package/src/internal/{object → Obj}/clone.ts +3 -3
  290. package/src/internal/{object → Obj}/common.ts +2 -2
  291. package/src/internal/{object → Obj}/create-object.test.ts +4 -4
  292. package/src/internal/{object → Obj}/create-object.ts +5 -5
  293. package/src/internal/{object → Obj}/deleted.ts +2 -2
  294. package/src/internal/{object → Obj}/inspect.ts +2 -2
  295. package/src/internal/{object → Obj}/json-serializer.test.ts +29 -6
  296. package/src/internal/{object → Obj}/json-serializer.ts +42 -15
  297. package/src/internal/{object → Obj}/schema-validator.ts +1 -1
  298. package/src/internal/{object → Obj}/set-value.ts +2 -2
  299. package/src/internal/Obj/snapshot.ts +105 -0
  300. package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
  301. package/src/internal/{object → Obj}/typed-object.ts +4 -4
  302. package/src/internal/{ref → Ref}/ref-array.ts +1 -1
  303. package/src/internal/{ref → Ref}/ref.test.ts +4 -4
  304. package/src/internal/{ref → Ref}/ref.ts +27 -4
  305. package/src/internal/{schema → Type}/compose.test.ts +5 -5
  306. package/src/internal/{schema → Type}/compose.ts +1 -1
  307. package/src/internal/{schema → Type}/echo-schema.ts +11 -10
  308. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  309. package/src/internal/{schema → Type}/persistent-schema.ts +10 -4
  310. package/src/internal/{README.md → common/README.md} +1 -1
  311. package/src/internal/{api → common/api}/index.ts +0 -4
  312. package/src/internal/common/index.ts +7 -0
  313. package/src/internal/{proxy → common/proxy}/change.test.ts +3 -3
  314. package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -2
  315. package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
  316. package/src/internal/{proxy → common/proxy}/make-object.ts +13 -3
  317. package/src/internal/{proxy → common/proxy}/reactive.ts +1 -1
  318. package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
  319. package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +6 -6
  320. package/src/internal/{proxy → common/proxy}/typed-handler.ts +10 -3
  321. package/src/internal/{proxy → common/proxy}/typed-object.test.ts +4 -4
  322. package/src/internal/{types → common/types}/base.ts +1 -1
  323. package/src/internal/{types → common/types}/entity.ts +2 -2
  324. package/src/internal/{types → common/types}/index.ts +1 -0
  325. package/src/internal/{types → common/types}/meta.ts +4 -1
  326. package/src/internal/common/types/model-symbols.ts +69 -0
  327. package/src/internal/{types → common/types}/typename.ts +10 -0
  328. package/src/internal/{types → common/types}/version.ts +2 -3
  329. package/src/internal/index.ts +8 -31
  330. package/src/testing/api.test.ts +4 -4
  331. package/src/testing/test-schema.ts +20 -18
  332. package/dist/lib/neutral/chunk-2MTHJ5UW.mjs.map +0 -7
  333. package/dist/lib/neutral/chunk-3ZEAZF7T.mjs.map +0 -7
  334. package/dist/lib/neutral/chunk-62DWJ6CE.mjs.map +0 -7
  335. package/dist/lib/neutral/chunk-6QPSGMEF.mjs.map +0 -7
  336. package/dist/lib/neutral/chunk-CUDIBUM4.mjs.map +0 -7
  337. package/dist/lib/neutral/chunk-HMOXCO27.mjs.map +0 -7
  338. package/dist/lib/neutral/chunk-IP2GHXWA.mjs.map +0 -7
  339. package/dist/lib/neutral/chunk-KRHDMXSU.mjs +0 -132
  340. package/dist/lib/neutral/chunk-KRHDMXSU.mjs.map +0 -7
  341. package/dist/lib/neutral/chunk-NWUO5FKZ.mjs.map +0 -7
  342. package/dist/lib/neutral/chunk-ROKO4RKJ.mjs.map +0 -7
  343. package/dist/lib/neutral/chunk-RPB6V4BE.mjs.map +0 -7
  344. package/dist/lib/neutral/chunk-SU2LVM7J.mjs.map +0 -7
  345. package/dist/lib/neutral/chunk-VB5HVDCA.mjs.map +0 -7
  346. package/dist/lib/neutral/chunk-VR4A4WGG.mjs.map +0 -7
  347. package/dist/lib/neutral/chunk-X2MPMYYN.mjs +0 -13
  348. package/dist/lib/neutral/chunk-X2MPMYYN.mjs.map +0 -7
  349. package/dist/lib/neutral/chunk-XK5OUUBY.mjs +0 -157
  350. package/dist/lib/neutral/chunk-XK5OUUBY.mjs.map +0 -7
  351. package/dist/lib/neutral/chunk-XMIDBDE6.mjs.map +0 -7
  352. package/dist/lib/neutral/chunk-YQYMWZAD.mjs.map +0 -7
  353. package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
  354. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
  355. package/dist/types/src/internal/annotations/index.d.ts +0 -3
  356. package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
  357. package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
  358. package/dist/types/src/internal/api/annotations.d.ts +0 -23
  359. package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
  360. package/dist/types/src/internal/api/entity.d.ts.map +0 -1
  361. package/dist/types/src/internal/api/index.d.ts.map +0 -1
  362. package/dist/types/src/internal/api/meta.d.ts.map +0 -1
  363. package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
  364. package/dist/types/src/internal/api/version.d.ts.map +0 -1
  365. package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
  366. package/dist/types/src/internal/entities/index.d.ts.map +0 -1
  367. package/dist/types/src/internal/entities/model.d.ts.map +0 -1
  368. package/dist/types/src/internal/entities/object.d.ts.map +0 -1
  369. package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
  370. package/dist/types/src/internal/entities/util.d.ts.map +0 -1
  371. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  372. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  373. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  374. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  375. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  376. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  377. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  378. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  379. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  380. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  381. package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
  382. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
  383. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  384. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  385. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  386. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
  387. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
  388. package/dist/types/src/internal/object/clone.d.ts.map +0 -1
  389. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  390. package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
  391. package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
  392. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  393. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  394. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  395. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  396. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  397. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  398. package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
  399. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  400. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  401. package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
  402. package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
  403. package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
  404. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  405. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  406. package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
  407. package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
  408. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
  409. package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
  410. package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
  411. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  412. package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
  413. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
  414. package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
  415. package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
  416. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
  417. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
  418. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
  419. package/dist/types/src/internal/proxy/reactive.d.ts.map +0 -1
  420. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
  421. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  422. package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
  423. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  424. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  425. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  426. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  427. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  428. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  429. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  430. package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
  431. package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
  432. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  433. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  434. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  435. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
  436. package/dist/types/src/internal/types/base.d.ts.map +0 -1
  437. package/dist/types/src/internal/types/entity.d.ts.map +0 -1
  438. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  439. package/dist/types/src/internal/types/meta.d.ts.map +0 -1
  440. package/dist/types/src/internal/types/typename.d.ts.map +0 -1
  441. package/dist/types/src/internal/types/version.d.ts.map +0 -1
  442. package/src/internal/api/annotations.ts +0 -60
  443. package/src/internal/object/snapshot.ts +0 -70
  444. /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
  445. /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
  446. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  447. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  448. /package/dist/types/src/internal/{formats → Format}/format.d.ts +0 -0
  449. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  450. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  451. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  452. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  453. /package/dist/types/src/internal/{formats → Format}/select.d.ts +0 -0
  454. /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
  455. /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
  456. /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
  457. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  458. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +0 -0
  459. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
  460. /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
  461. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  462. /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
  463. /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
  464. /package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -0
  465. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  466. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  467. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  468. /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
  469. /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
  470. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  471. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  472. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  473. /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
  474. /package/dist/types/src/internal/{schema → Type}/index.d.ts +0 -0
  475. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  476. /package/dist/types/src/internal/{api → common/api}/meta.d.ts +0 -0
  477. /package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +0 -0
  478. /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
  479. /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
  480. /package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +0 -0
  481. /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
  482. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  483. /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
  484. /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
  485. /package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +0 -0
  486. /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
  487. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
  488. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
  489. /package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +0 -0
  490. /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
  491. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  492. /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
  493. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  494. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  495. /package/src/internal/{entities → Entity}/util.ts +0 -0
  496. /package/src/internal/{formats → Format}/date.ts +0 -0
  497. /package/src/internal/{formats → Format}/format.ts +0 -0
  498. /package/src/internal/{formats → Format}/index.ts +0 -0
  499. /package/src/internal/{formats → Format}/number.ts +0 -0
  500. /package/src/internal/{formats → Format}/object.ts +0 -0
  501. /package/src/internal/{formats → Format}/select.ts +0 -0
  502. /package/src/internal/{formats → Format}/string.ts +0 -0
  503. /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
  504. /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
  505. /package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +0 -0
  506. /package/src/internal/{object → Obj}/ids.ts +0 -0
  507. /package/src/internal/{object → Obj}/index.ts +0 -0
  508. /package/src/internal/{object → Obj}/schema-validator.test.ts +0 -0
  509. /package/src/internal/{object → Obj}/set-value.test.ts +0 -0
  510. /package/src/internal/{ref → Ref}/index.ts +0 -0
  511. /package/src/internal/{schema → Type}/index.ts +0 -0
  512. /package/src/internal/{api → common/api}/meta.ts +0 -0
  513. /package/src/internal/{proxy → common/proxy}/change-context.ts +0 -0
  514. /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
  515. /package/src/internal/{proxy → common/proxy}/errors.ts +0 -0
  516. /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
  517. /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
  518. /package/src/internal/{proxy → common/proxy}/ownership.ts +0 -0
  519. /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
  520. /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
  521. /package/src/internal/{proxy → common/proxy}/reactive-array.ts +0 -0
  522. /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
  523. /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
@@ -1,12 +1,14 @@
1
1
  import {
2
2
  EntityKind,
3
3
  createAnnotationHelper
4
- } from "./chunk-YQYMWZAD.mjs";
4
+ } from "./chunk-WYOKA6AE.mjs";
5
5
 
6
- // src/internal/types/typename.ts
6
+ // src/internal/common/types/typename.ts
7
7
  var ATTR_TYPE = "@type";
8
- var TypeId = Symbol.for("@dxos/echo/Type");
9
- var SchemaId = Symbol.for("@dxos/echo/Schema");
8
+ var TypeId = /* @__PURE__ */ Symbol.for("@dxos/echo/Type");
9
+ var SchemaId = /* @__PURE__ */ Symbol.for("@dxos/echo/Schema");
10
+ var ATTR_PARENT = "@parent";
11
+ var ParentId = /* @__PURE__ */ Symbol.for("@dxos/echo/Parent");
10
12
  var getSchema = (obj) => {
11
13
  if (obj) {
12
14
  return obj[SchemaId];
@@ -21,7 +23,7 @@ var setSchema = (obj, schema) => {
21
23
  });
22
24
  };
23
25
 
24
- // src/internal/annotations/annotations.ts
26
+ // src/internal/Annotation/annotations.ts
25
27
  import * as Function from "effect/Function";
26
28
  import * as Option from "effect/Option";
27
29
  import * as Schema from "effect/Schema";
@@ -30,10 +32,10 @@ import { raise } from "@dxos/debug";
30
32
  import { getField } from "@dxos/effect";
31
33
  import { assertArgument, invariant } from "@dxos/invariant";
32
34
  import { DXN } from "@dxos/keys";
33
- var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/annotations/annotations.ts";
35
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Annotation/annotations.ts";
34
36
  var FIELD_PATH_ANNOTATION = "path";
35
37
  var FieldPath = (path) => PropertyMeta(FIELD_PATH_ANNOTATION, path);
36
- var TypeIdentifierAnnotationId = Symbol.for("@dxos/schema/annotation/TypeIdentifier");
38
+ var TypeIdentifierAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/TypeIdentifier");
37
39
  var getTypeIdentifierAnnotation = (schema) => Function.flow(SchemaAST.getAnnotation(TypeIdentifierAnnotationId), Option.getOrElse(() => void 0))(schema.ast);
38
40
  var getSchemaDXN = (schema) => {
39
41
  assertArgument(Schema.isSchema(schema), "schema", "invalid schema");
@@ -56,9 +58,9 @@ var getTypeDXNFromSpecifier = (input) => {
56
58
  return DXN.fromTypename(input);
57
59
  }
58
60
  };
59
- var TypenameSchema = Schema.String.pipe(Schema.pattern(/^[a-zA-Z]\w+\.[a-zA-Z]\w{1,}\/[\w/_-]+$/)).annotations({
60
- description: "Fully qualified globally unique typename",
61
- example: "dxos.org/type/Message"
61
+ var TypenameSchema = Schema.String.pipe(Schema.pattern(/^[a-z][a-z0-9]*(\.[a-z][a-z0-9-]*){2,}$/)).annotations({
62
+ description: "Fully qualified globally unique typename in lowercase reverse-DNS form.",
63
+ example: "org.dxos.type.message"
62
64
  });
63
65
  var VersionSchema = Schema.String.pipe(Schema.pattern(/^\d+.\d+.\d+$/)).annotations({
64
66
  description: "Semantic version format: `major.minor.patch`",
@@ -68,7 +70,7 @@ var TypeMeta = Schema.Struct({
68
70
  typename: TypenameSchema,
69
71
  version: VersionSchema
70
72
  });
71
- var TypeAnnotationId = Symbol.for("@dxos/schema/annotation/Type");
73
+ var TypeAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/Type");
72
74
  var TypeAnnotation = Schema.extend(TypeMeta, Schema.Struct({
73
75
  kind: Schema.Enums(EntityKind),
74
76
  /**
@@ -101,7 +103,7 @@ var getTypename = (obj) => {
101
103
  var setTypename = (obj, typename) => {
102
104
  invariant(typename instanceof DXN, "Invalid type.", {
103
105
  F: __dxlog_file,
104
- L: 198,
106
+ L: 199,
105
107
  S: void 0,
106
108
  A: [
107
109
  "typename instanceof DXN",
@@ -125,7 +127,7 @@ var getTypeDXN = (obj) => {
125
127
  }
126
128
  invariant(type instanceof DXN, "Invalid object.", {
127
129
  F: __dxlog_file,
128
- L: 225,
130
+ L: 226,
129
131
  S: void 0,
130
132
  A: [
131
133
  "type instanceof DXN",
@@ -156,7 +158,7 @@ var isInstanceOf = (schema, object) => {
156
158
  }
157
159
  return typeDXN.type === typename;
158
160
  };
159
- var PropertyMetaAnnotationId = Symbol.for("@dxos/schema/annotation/PropertyMeta");
161
+ var PropertyMetaAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/PropertyMeta");
160
162
  var PropertyMeta = (name, value) => {
161
163
  return (self) => {
162
164
  const existingMeta = self.ast.annotations[PropertyMetaAnnotationId];
@@ -169,12 +171,12 @@ var PropertyMeta = (name, value) => {
169
171
  };
170
172
  };
171
173
  var getPropertyMetaAnnotation = (prop, name) => Function.pipe(SchemaAST.getAnnotation(PropertyMetaAnnotationId)(prop.type), Option.map((meta) => meta[name]), Option.getOrElse(() => void 0));
172
- var ReferenceAnnotationId = Symbol.for("@dxos/schema/annotation/Reference");
174
+ var ReferenceAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/Reference");
173
175
  var ReferenceAnnotation = createAnnotationHelper(ReferenceAnnotationId);
174
- var SchemaMetaSymbol = Symbol.for("@dxos/schema/SchemaMeta");
175
- var SystemTypeAnnotationId = Symbol.for("@dxos/schema/annotation/SystemType");
176
+ var SchemaMetaSymbol = /* @__PURE__ */ Symbol.for("@dxos/schema/SchemaMeta");
177
+ var SystemTypeAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/SystemType");
176
178
  var SystemTypeAnnotation = createAnnotationHelper(SystemTypeAnnotationId);
177
- var LabelAnnotationId = Symbol.for("@dxos/schema/annotation/Label");
179
+ var LabelAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/Label");
178
180
  var LabelAnnotation = createAnnotationHelper(LabelAnnotationId);
179
181
  var getLabelWithSchema = (schema, object) => {
180
182
  const annotation = LabelAnnotation.get(schema).pipe(Option.getOrElse(() => [
@@ -202,7 +204,7 @@ var setLabelWithSchema = (schema, object, label) => {
202
204
  const annotation = LabelAnnotation.get(schema).pipe(Option.map((field) => field[0]), Option.getOrElse(() => "name"));
203
205
  object[annotation] = label;
204
206
  };
205
- var DescriptionAnnotationId = Symbol.for("@dxos/schema/annotation/Description");
207
+ var DescriptionAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/Description");
206
208
  var DescriptionAnnotation = createAnnotationHelper(DescriptionAnnotationId);
207
209
  var getDescriptionWithSchema = (schema, object) => {
208
210
  const accessor = DescriptionAnnotation.get(schema).pipe(Option.getOrElse(() => "description"));
@@ -226,16 +228,81 @@ var setDescriptionWithSchema = (schema, object, description) => {
226
228
  const accessor = DescriptionAnnotation.get(schema).pipe(Option.getOrElse(() => "description"));
227
229
  object[accessor] = description;
228
230
  };
229
- var FormInputAnnotationId = Symbol.for("@dxos/schema/annotation/FormInput");
231
+ var FormInputAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/FormInput");
230
232
  var FormInputAnnotation = createAnnotationHelper(FormInputAnnotationId);
231
- var FieldLookupAnnotationId = Symbol.for("@dxos/schema/annotation/FieldLookup");
232
- var GeneratorAnnotationId = Symbol.for("@dxos/schema/annotation/Generator");
233
+ var FieldLookupAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/FieldLookup");
234
+ var GeneratorAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/Generator");
233
235
  var GeneratorAnnotation = createAnnotationHelper(GeneratorAnnotationId);
236
+ var makeUserAnnotation = (props) => {
237
+ assertArgument(/^[a-z][a-z0-9]*(\.[a-z][a-z0-9-]*){2,}$/.test(props.id), "id", "Annotation id must be in the FQN format (org.dxos.annotation.example).");
238
+ const getFromAst = (ast) => SchemaAST.getAnnotation(PropertyMetaAnnotationId)(ast).pipe(Option.map((meta) => meta[props.id]), Option.map(Schema.decodeUnknownSync(props.schema)));
239
+ return {
240
+ get: (schema) => getFromAst(schema.ast),
241
+ getFromAst: (ast) => getFromAst(ast),
242
+ set: (value) => PropertyMeta(props.id, Schema.encodeSync(props.schema)(value))
243
+ };
244
+ };
245
+ var IconAnnotationSchema = Schema.Struct({
246
+ /**
247
+ * Phosphor icon name (e.g., 'ph--user--regular', 'ph--cube--regular', 'ph--link--regular ', etc.)
248
+ */
249
+ icon: Schema.String.pipe(Schema.pattern(/^ph--[a-z-]+--[a-z]+$/)),
250
+ /**
251
+ * Color name.
252
+ *
253
+ * List of colors:
254
+ * - 'red'
255
+ * - 'orange'
256
+ * - 'amber'
257
+ * - 'yellow'
258
+ * - 'lime'
259
+ * - 'green'
260
+ * - 'emerald'
261
+ * - 'teal'
262
+ * - 'cyan'
263
+ * - 'violet'
264
+ * - 'purple'
265
+ * - 'fuchsia'
266
+ * - 'pink'
267
+ * - 'rose'
268
+ */
269
+ hue: Schema.optional(Schema.String)
270
+ });
271
+ var IconAnnotation = makeUserAnnotation({
272
+ id: "org.dxos.annotation.icon",
273
+ schema: IconAnnotationSchema
274
+ });
275
+ var getLabel = (entity) => {
276
+ const schema = getSchema(entity);
277
+ if (schema != null) {
278
+ return getLabelWithSchema(schema, entity);
279
+ }
280
+ };
281
+ var setLabel = (entity, label) => {
282
+ const schema = getSchema(entity);
283
+ if (schema != null) {
284
+ setLabelWithSchema(schema, entity, label);
285
+ }
286
+ };
287
+ var getDescription = (entity) => {
288
+ const schema = getSchema(entity);
289
+ if (schema != null) {
290
+ return getDescriptionWithSchema(schema, entity);
291
+ }
292
+ };
293
+ var setDescription = (entity, description) => {
294
+ const schema = getSchema(entity);
295
+ if (schema != null) {
296
+ setDescriptionWithSchema(schema, entity, description);
297
+ }
298
+ };
234
299
 
235
300
  export {
236
301
  ATTR_TYPE,
237
302
  TypeId,
238
303
  SchemaId,
304
+ ATTR_PARENT,
305
+ ParentId,
239
306
  getSchema,
240
307
  setSchema,
241
308
  FIELD_PATH_ANNOTATION,
@@ -277,6 +344,12 @@ export {
277
344
  FormInputAnnotation,
278
345
  FieldLookupAnnotationId,
279
346
  GeneratorAnnotationId,
280
- GeneratorAnnotation
347
+ GeneratorAnnotation,
348
+ makeUserAnnotation,
349
+ IconAnnotation,
350
+ getLabel,
351
+ setLabel,
352
+ getDescription,
353
+ setDescription
281
354
  };
282
- //# sourceMappingURL=chunk-CUDIBUM4.mjs.map
355
+ //# sourceMappingURL=chunk-SEMVAGBM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/common/types/typename.ts", "../../../src/internal/Annotation/annotations.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport type * as Schema from 'effect/Schema';\n\n/**\n * Property name for typename when object is serialized to JSON.\n */\nexport const ATTR_TYPE = '@type';\n\n/**\n * DXN to the object type.\n */\nexport const TypeId = Symbol.for('@dxos/echo/Type');\n\n/**\n * Reference to the object schema.\n */\nexport const SchemaId = Symbol.for('@dxos/echo/Schema');\n\n/**\n * Property name for parent when object is serialized to JSON.\n */\nexport const ATTR_PARENT = '@parent';\n\n/**\n * Reference to the object parent.\n */\nexport const ParentId = Symbol.for('@dxos/echo/Parent');\n\n/**\n * Returns the schema for the given object if one is defined.\n *\n * @internal (Use Obj.getSchema)\n */\n// TODO(burdon): Narrow type.\n// TODO(dmaretskyi): For echo objects, this always returns the root schema.\nexport const getSchema = (obj: unknown | undefined): Schema.Schema.AnyNoContext | undefined => {\n if (obj) {\n return (obj as any)[SchemaId];\n }\n};\n\n/**\n * @internal\n */\nexport const setSchema = (obj: any, schema: Schema.Schema.AnyNoContext): void => {\n Object.defineProperty(obj, SchemaId, {\n value: schema,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { raise } from '@dxos/debug';\nimport { type JsonPath, getField } from '@dxos/effect';\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { DXN } from '@dxos/keys';\nimport { type Primitive } from '@dxos/util';\n\nimport { type Mutable } from '../common/proxy';\nimport { type AnyProperties, EntityKind, TypeId, getSchema } from '../common/types';\n\nimport { type AnnotationHelper, createAnnotationHelper } from './util';\n\n/**\n * @internal\n */\nexport const FIELD_PATH_ANNOTATION = 'path';\n\n/**\n * Sets the path for the field.\n * @param path Data source path in the json path format. This is the field path in the source object.\n */\n// TODO(burdon): Field, vs. path vs. property.\nexport const FieldPath = (path: string) => PropertyMeta(FIELD_PATH_ANNOTATION, path);\n\n//\n// Type\n//\n\n/**\n * ECHO identifier (for a stored schema).\n * Must be a `dxn:echo:` URI.\n */\nexport const TypeIdentifierAnnotationId = Symbol.for('@dxos/schema/annotation/TypeIdentifier');\n\nexport const getTypeIdentifierAnnotation = (schema: Schema.Schema.All) =>\n Function.flow(\n SchemaAST.getAnnotation<string>(TypeIdentifierAnnotationId),\n Option.getOrElse(() => undefined),\n )(schema.ast);\n\n/**\n * @returns DXN of the schema.\n *\n * For non-stored schema returns `dxn:type:`.\n * For stored schema returns `dxn:echo:`.\n */\nexport const getSchemaDXN = (schema: Schema.Schema.All): DXN | undefined => {\n assertArgument(Schema.isSchema(schema), 'schema', 'invalid schema');\n const id = getTypeIdentifierAnnotation(schema);\n if (id) {\n return DXN.parse(id);\n }\n\n // TODO(dmaretskyi): Add support for dynamic schema.\n const objectAnnotation = getTypeAnnotation(schema);\n if (!objectAnnotation) {\n return undefined;\n }\n\n return DXN.fromTypenameAndVersion(objectAnnotation.typename, objectAnnotation.version);\n};\n\n/**\n * @param input schema or a typename string.\n * @return type DXN.\n */\nexport const getTypeDXNFromSpecifier = (input: Schema.Schema.All | string): DXN => {\n if (Schema.isSchema(input)) {\n return getSchemaDXN(input) ?? raise(new TypeError('Schema has no DXN'));\n } else {\n assertArgument(typeof input === 'string', 'input');\n assertArgument(!input.startsWith('dxn:'), 'input');\n return DXN.fromTypename(input);\n }\n};\n\n//\n// TypeAnnotation\n//\n\n/**\n * Fully qualified globally unique typename.\n * Example: `org.dxos.type.message`\n */\n// TODO(burdon): Reconcile with short DXN format.\n// TODO(burdon): Change \"type\" => \"schema\" throughout.\nexport const TypenameSchema = Schema.String.pipe(Schema.pattern(/^[a-z][a-z0-9]*(\\.[a-z][a-z0-9-]*){2,}$/)).annotations(\n {\n description: 'Fully qualified globally unique typename in lowercase reverse-DNS form.',\n example: 'org.dxos.type.message',\n },\n);\n\n/**\n * Semantic version format: `major.minor.patch`\n * Example: `1.0.0`\n */\nexport const VersionSchema = Schema.String.pipe(Schema.pattern(/^\\d+.\\d+.\\d+$/)).annotations({\n description: 'Semantic version format: `major.minor.patch`',\n example: '1.0.0',\n});\n\nexport const TypeMeta = Schema.Struct({\n typename: TypenameSchema,\n version: VersionSchema,\n});\n\nexport interface TypeMeta extends Schema.Schema.Type<typeof TypeMeta> {}\n\n/**\n * Entity type.\n */\nexport const TypeAnnotationId = Symbol.for('@dxos/schema/annotation/Type');\n\n/**\n * Payload stored under {@link TypeAnnotationId}.\n */\nexport const TypeAnnotation = Schema.extend(\n TypeMeta,\n Schema.Struct({\n kind: Schema.Enums(EntityKind),\n\n /**\n * If this is a relation, the schema of the source object.\n * Must be present if entity kind is {@link EntityKind.Relation}.\n */\n sourceSchema: Schema.optional(DXN.Schema),\n\n /**\n * If this is a relation, the schema of the target object.\n * Must be present if entity kind is {@link EntityKind.Relation}.\n */\n targetSchema: Schema.optional(DXN.Schema),\n }),\n);\n\nexport interface TypeAnnotation extends Schema.Schema.Type<typeof TypeAnnotation> {}\n\n/**\n * @returns {@link TypeAnnotation} from a schema.\n * Schema must have been created with {@link TypedObject} or {@link TypedLink} or manually assigned an appropriate annotation.\n */\nexport const getTypeAnnotation = (schema: Schema.Schema.All): TypeAnnotation | undefined => {\n assertArgument(schema != null && schema.ast != null, 'schema', 'invalid schema');\n return Function.flow(\n SchemaAST.getAnnotation<TypeAnnotation>(TypeAnnotationId),\n Option.getOrElse(() => undefined),\n )(schema.ast);\n};\n\n/**\n * @returns {@link EntityKind} from a schema.\n */\nexport const getEntityKind = (schema: Schema.Schema.All): EntityKind | undefined => getTypeAnnotation(schema)?.kind;\n\n/**\n * @internal\n * @returns Schema typename (without dxn: prefix or version number).\n */\nexport const getSchemaTypename = (schema: Schema.Schema.All): string | undefined => getTypeAnnotation(schema)?.typename;\n\n/**\n * @internal\n * @returns Schema version in semver format.\n */\nexport const getSchemaVersion = (schema: Schema.Schema.All): string | undefined => getTypeAnnotation(schema)?.version;\n\n/**\n * Gets the typename of the object without the version.\n * Returns only the name portion, not the DXN.\n * @example \"org.example.type.contact\"\n *\n * @internal (use Obj.getTypename)\n */\nexport const getTypename = (obj: AnyProperties): string | undefined => {\n const schema = getSchema(obj);\n if (schema != null) {\n // Try to extract typename from DXN.\n return getSchemaTypename(schema);\n } else {\n const type = getTypeDXN(obj);\n return type?.asTypeDXN()?.type;\n }\n};\n\n/**\n * @internal (use Type.setTypename)\n */\n// TODO(dmaretskyi): Rename setTypeDXN.\nexport const setTypename = (obj: any, typename: DXN): void => {\n invariant(typename instanceof DXN, 'Invalid type.');\n Object.defineProperty(obj, TypeId, {\n value: typename,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n};\n\n/**\n * @returns Object type as {@link DXN}.\n * @returns undefined if the object doesn't have a type.\n * @example `dxn:com.example.type.person:1.0.0`\n *\n * @internal (use Obj.getTypeDXN)\n */\n// TODO(burdon): Narrow type.\nexport const getTypeDXN = (obj: AnyProperties): DXN | undefined => {\n if (!obj) {\n return undefined;\n }\n\n const type = (obj as any)[TypeId];\n if (!type) {\n return undefined;\n }\n\n invariant(type instanceof DXN, 'Invalid object.');\n return type;\n};\n\n/**\n * Checks if the object is an instance of the schema.\n * Only typename is compared, the schema version is ignored.\n *\n * The following cases are considered to mean that the object is an instance of the schema:\n * - Object was created with this exact schema.\n * - Object was created with a different version of this schema.\n * - Object was created with a different schema (maybe dynamic) that has the same typename.\n */\n// TODO(burdon): Can we use `Schema.is`?\nexport const isInstanceOf = <Schema extends Schema.Schema.AnyNoContext>(\n schema: Schema,\n object: any,\n): object is Schema.Schema.Type<Schema> => {\n if (object == null) {\n return false;\n }\n\n const schemaDXN = getSchemaDXN(schema);\n if (!schemaDXN) {\n throw new Error('Schema must have an object annotation.');\n }\n\n const type = getTypeDXN(object);\n if (type && DXN.equals(type, schemaDXN)) {\n return true;\n }\n\n const typename = getTypename(object);\n if (!typename) {\n return false;\n }\n\n const typeDXN = schemaDXN.asTypeDXN();\n if (!typeDXN) {\n return false;\n }\n\n return typeDXN.type === typename;\n};\n\n//\n// PropertyMeta\n//\n\n/**\n * PropertyMeta (metadata for dynamic schema properties).\n * For user-defined annotations.\n */\nexport const PropertyMetaAnnotationId = Symbol.for('@dxos/schema/annotation/PropertyMeta');\n\nexport type PropertyMetaValue = Primitive | Record<string, Primitive> | Primitive[];\n\nexport type PropertyMetaAnnotation = {\n [name: string]: PropertyMetaValue;\n};\n\n// TODO(wittjosiah): Align with other annotations.\n// TODO(wittjosiah): Why is this separate from FormatAnnotation?\nexport const PropertyMeta = (name: string, value: PropertyMetaValue) => {\n return <A, I, R>(self: Schema.Schema<A, I, R>): Schema.Schema<A, I, R> => {\n const existingMeta = self.ast.annotations[PropertyMetaAnnotationId] as PropertyMetaAnnotation;\n return self.annotations({\n [PropertyMetaAnnotationId]: {\n ...existingMeta,\n [name]: value,\n },\n });\n };\n};\n\nexport const getPropertyMetaAnnotation = <T>(prop: SchemaAST.PropertySignature, name: string) =>\n Function.pipe(\n SchemaAST.getAnnotation<PropertyMetaAnnotation>(PropertyMetaAnnotationId)(prop.type),\n Option.map((meta) => meta[name] as T),\n Option.getOrElse(() => undefined),\n );\n\n//\n// Reference\n//\n\n/**\n * Schema reference.\n */\nexport const ReferenceAnnotationId = Symbol.for('@dxos/schema/annotation/Reference');\nexport type ReferenceAnnotationValue = TypeAnnotation;\nexport const ReferenceAnnotation = createAnnotationHelper<ReferenceAnnotationValue>(ReferenceAnnotationId);\n\n/**\n * SchemaMeta.\n */\nexport const SchemaMetaSymbol = Symbol.for('@dxos/schema/SchemaMeta');\nexport type SchemaMeta = TypeMeta & { id: string };\n\n/**\n * Identifies a schema as a schema for a hidden system type.\n */\nexport const SystemTypeAnnotationId = Symbol.for('@dxos/schema/annotation/SystemType');\nexport const SystemTypeAnnotation = createAnnotationHelper<boolean>(SystemTypeAnnotationId);\n\n/**\n * Identifies label property or JSON path expression.\n * Either a string or an array of strings representing field accessors each matched in priority order.\n */\nexport const LabelAnnotationId = Symbol.for('@dxos/schema/annotation/Label');\nexport const LabelAnnotation = createAnnotationHelper<string[]>(LabelAnnotationId);\n\n/**\n * Returns the label for a given object based on {@link LabelAnnotationId}.\n * Lower-level version that requires explicit schema parameter.\n */\n// TODO(burdon): Convert to JsonPath?\nexport const getLabelWithSchema = <S extends Schema.Schema.Any>(\n schema: S,\n object: Schema.Schema.Type<S>,\n): string | undefined => {\n const annotation = LabelAnnotation.get(schema).pipe(Option.getOrElse(() => ['name']));\n for (const accessor of annotation) {\n assertArgument(\n typeof accessor === 'string',\n 'accessor',\n 'Label annotation must be a string or an array of strings',\n );\n const value = getField(object, accessor as JsonPath);\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean':\n case 'bigint':\n case 'symbol':\n return value.toString();\n case 'undefined':\n case 'object':\n case 'function':\n continue;\n }\n }\n\n return undefined;\n};\n\n/**\n * Sets the label for a given object based on {@link LabelAnnotationId}.\n * Lower-level version that requires explicit schema parameter.\n */\nexport const setLabelWithSchema = <S extends Schema.Schema.Any>(\n schema: S,\n object: Schema.Schema.Type<S>,\n label: string,\n) => {\n const annotation = LabelAnnotation.get(schema).pipe(\n Option.map((field) => field[0]),\n Option.getOrElse(() => 'name'),\n );\n object[annotation] = label;\n};\n\n/**\n * Identifies description property or JSON path expression.\n * A string representing field accessor.\n */\nexport const DescriptionAnnotationId = Symbol.for('@dxos/schema/annotation/Description');\nexport const DescriptionAnnotation = createAnnotationHelper<string>(DescriptionAnnotationId);\n\n/**\n * Returns the description for a given object based on {@link DescriptionAnnotationId}.\n * Lower-level version that requires explicit schema parameter.\n */\n// TODO(burdon): Convert to JsonPath?\nexport const getDescriptionWithSchema = <S extends Schema.Schema.Any>(\n schema: S,\n object: Schema.Schema.Type<S>,\n): string | undefined => {\n const accessor = DescriptionAnnotation.get(schema).pipe(Option.getOrElse(() => 'description'));\n assertArgument(typeof accessor === 'string', 'accessor', 'Description annotation must be a string');\n const value = getField(object, accessor as JsonPath);\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean':\n case 'bigint':\n case 'symbol':\n return value.toString();\n case 'undefined':\n case 'object':\n case 'function':\n default:\n return undefined;\n }\n};\n\n/**\n * Sets the description for a given object based on {@link DescriptionAnnotationId}.\n * Lower-level version that requires explicit schema parameter.\n */\nexport const setDescriptionWithSchema = <S extends Schema.Schema.Any>(\n schema: S,\n object: Schema.Schema.Type<S>,\n description: string,\n) => {\n const accessor = DescriptionAnnotation.get(schema).pipe(Option.getOrElse(() => 'description'));\n object[accessor] = description;\n};\n\n/**\n * Identifies if a property should be included in a form or not.\n * By default, all properties are included in forms, so this is opt-out.\n */\n// TODO(burdon): UI concern.\nexport const FormInputAnnotationId = Symbol.for('@dxos/schema/annotation/FormInput');\nexport const FormInputAnnotation = createAnnotationHelper<boolean>(FormInputAnnotationId);\n\n/**\n * Default field to be used on referenced schema to lookup the value.\n */\nexport const FieldLookupAnnotationId = Symbol.for('@dxos/schema/annotation/FieldLookup');\n\n/**\n * Generate test data.\n */\nexport const GeneratorAnnotationId = Symbol.for('@dxos/schema/annotation/Generator');\n\nexport type GeneratorAnnotationValue =\n | string\n | {\n generator: string;\n args?: any[];\n probability?: number;\n };\n\nexport const GeneratorAnnotation = createAnnotationHelper<GeneratorAnnotationValue>(GeneratorAnnotationId);\n\ninterface MakeAnnoationsProps<T> {\n id: string;\n schema: Schema.Schema<T, any, never>;\n}\n\n// TODO(wittjosiah): Comment.\nexport const makeUserAnnotation = <T>(props: MakeAnnoationsProps<T>): AnnotationHelper<T> => {\n assertArgument(\n /^[a-z][a-z0-9]*(\\.[a-z][a-z0-9-]*){2,}$/.test(props.id),\n 'id',\n 'Annotation id must be in the FQN format (org.dxos.annotation.example).',\n );\n\n const getFromAst = (ast: SchemaAST.AST) =>\n SchemaAST.getAnnotation<PropertyMetaAnnotation>(PropertyMetaAnnotationId)(ast).pipe(\n Option.map((meta) => meta[props.id] as unknown),\n Option.map(Schema.decodeUnknownSync(props.schema)),\n );\n\n return {\n get: (schema) => getFromAst(schema.ast),\n getFromAst: (ast) => getFromAst(ast),\n set: (value) =>\n PropertyMeta(props.id, Schema.encodeSync(props.schema)(value)) as <S extends Schema.Schema.Any>(schema: S) => S,\n };\n};\n\nconst IconAnnotationSchema = Schema.Struct({\n /**\n * Phosphor icon name (e.g., 'ph--user--regular', 'ph--cube--regular', 'ph--link--regular ', etc.)\n */\n icon: Schema.String.pipe(Schema.pattern(/^ph--[a-z-]+--[a-z]+$/)),\n\n /**\n * Color name.\n *\n * List of colors:\n * - 'red'\n * - 'orange'\n * - 'amber'\n * - 'yellow'\n * - 'lime'\n * - 'green'\n * - 'emerald'\n * - 'teal'\n * - 'cyan'\n * - 'violet'\n * - 'purple'\n * - 'fuchsia'\n * - 'pink'\n * - 'rose'\n */\n\n hue: Schema.optional(Schema.String),\n});\n\nexport interface IconAnnotation extends Schema.Schema.Type<typeof IconAnnotationSchema> {}\n\n/**\n * Icon to render in the UI.\n */\nexport const IconAnnotation = makeUserAnnotation<IconAnnotation>({\n id: 'org.dxos.annotation.icon',\n schema: IconAnnotationSchema,\n});\n\n/**\n * Get the label of an entity.\n * Accepts both reactive entities and snapshots.\n */\nexport const getLabel = (entity: AnyProperties): string | undefined => {\n const schema = getSchema(entity);\n if (schema != null) {\n return getLabelWithSchema(schema, entity);\n }\n};\n\n/**\n * Set the label of an entity.\n * Must be called within an Obj.change or Relation.change callback.\n */\nexport const setLabel = (entity: Mutable<AnyProperties>, label: string) => {\n const schema = getSchema(entity);\n if (schema != null) {\n setLabelWithSchema(schema, entity, label);\n }\n};\n\n/**\n * Get the description of an entity.\n * Accepts both reactive entities and snapshots.\n */\nexport const getDescription = (entity: AnyProperties): string | undefined => {\n const schema = getSchema(entity);\n if (schema != null) {\n return getDescriptionWithSchema(schema, entity);\n }\n};\n\n/**\n * Set the description of an entity.\n * Must be called within an Obj.change or Relation.change callback.\n */\nexport const setDescription = (entity: Mutable<AnyProperties>, description: string) => {\n const schema = getSchema(entity);\n if (schema != null) {\n setDescriptionWithSchema(schema, entity, description);\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["ATTR_TYPE", "TypeId", "Symbol", "for", "SchemaId", "ATTR_PARENT", "ParentId", "getSchema", "obj", "setSchema", "schema", "Object", "defineProperty", "value", "writable", "enumerable", "configurable", "Function", "Option", "Schema", "SchemaAST", "raise", "getField", "assertArgument", "invariant", "DXN", "FIELD_PATH_ANNOTATION", "FieldPath", "path", "PropertyMeta", "TypeIdentifierAnnotationId", "Symbol", "for", "getTypeIdentifierAnnotation", "schema", "flow", "getAnnotation", "getOrElse", "undefined", "ast", "getSchemaDXN", "assertArgument", "isSchema", "id", "DXN", "parse", "objectAnnotation", "getTypeAnnotation", "fromTypenameAndVersion", "typename", "version", "getTypeDXNFromSpecifier", "input", "raise", "TypeError", "startsWith", "fromTypename", "TypenameSchema", "String", "pipe", "pattern", "annotations", "description", "example", "VersionSchema", "TypeMeta", "Struct", "TypeAnnotationId", "TypeAnnotation", "extend", "kind", "Enums", "EntityKind", "sourceSchema", "optional", "Schema", "targetSchema", "getEntityKind", "getSchemaTypename", "getSchemaVersion", "getTypename", "obj", "getSchema", "type", "getTypeDXN", "asTypeDXN", "setTypename", "invariant", "Object", "defineProperty", "TypeId", "value", "writable", "enumerable", "configurable", "isInstanceOf", "object", "schemaDXN", "Error", "equals", "typeDXN", "PropertyMetaAnnotationId", "name", "self", "existingMeta", "getPropertyMetaAnnotation", "prop", "map", "meta", "ReferenceAnnotationId", "ReferenceAnnotation", "createAnnotationHelper", "SchemaMetaSymbol", "SystemTypeAnnotationId", "SystemTypeAnnotation", "LabelAnnotationId", "LabelAnnotation", "getLabelWithSchema", "annotation", "get", "accessor", "getField", "toString", "setLabelWithSchema", "label", "field", "DescriptionAnnotationId", "DescriptionAnnotation", "getDescriptionWithSchema", "setDescriptionWithSchema", "FormInputAnnotationId", "FormInputAnnotation", "FieldLookupAnnotationId", "GeneratorAnnotationId", "GeneratorAnnotation", "makeUserAnnotation", "props", "test", "getFromAst", "decodeUnknownSync", "set", "encodeSync", "IconAnnotationSchema", "icon", "hue", "IconAnnotation", "getLabel", "entity", "setLabel", "getDescription", "setDescription"]
7
+ }
@@ -5,6 +5,7 @@ import {
5
5
  // src/Err.ts
6
6
  var Err_exports = {};
7
7
  __export(Err_exports, {
8
+ GetReactiveError: () => GetReactiveError,
8
9
  ObjectNotFoundError: () => ObjectNotFoundError,
9
10
  SchemaNotFoundError: () => SchemaNotFoundError
10
11
  });
@@ -29,10 +30,22 @@ var ObjectNotFoundError = class extends BaseError.extend("ObjectNotFoundError",
29
30
  });
30
31
  }
31
32
  };
33
+ var GetReactiveError = class extends BaseError.extend("GetReactiveError", "Failed to get reactive object from snapshot") {
34
+ constructor(options) {
35
+ super({
36
+ context: {
37
+ reason: options.reason,
38
+ snapshotId: options.snapshotId
39
+ },
40
+ ...options
41
+ });
42
+ }
43
+ };
32
44
 
33
45
  export {
34
46
  SchemaNotFoundError,
35
47
  ObjectNotFoundError,
48
+ GetReactiveError,
36
49
  Err_exports
37
50
  };
38
- //# sourceMappingURL=chunk-RPB6V4BE.mjs.map
51
+ //# sourceMappingURL=chunk-UBEZSGXY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Err.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { BaseError, type BaseErrorOptions } from '@dxos/errors';\nimport { type DXN } from '@dxos/keys';\n\nexport class SchemaNotFoundError extends BaseError.extend('SchemaNotFoundError', 'Schema not found') {\n constructor(schema: string, options?: BaseErrorOptions) {\n super({ context: { schema }, ...options });\n }\n}\n\nexport class ObjectNotFoundError extends BaseError.extend('ObjectNotFoundError', 'Object not found') {\n constructor(dxn: DXN, options?: BaseErrorOptions) {\n super({ context: { dxn }, ...options });\n }\n}\n\n/**\n * Reason why getting a reactive object from a snapshot failed.\n * - `no-database`: The snapshot is not associated with a database.\n * - `object-not-found`: The object was removed or does not exist in the database.\n */\nexport type GetReactiveErrorReason = 'no-database' | 'object-not-found';\n\n/**\n * Error thrown when a reactive object cannot be resolved from a snapshot.\n * Extends `BaseError` with a `reason` and optional `snapshotId` in its context.\n */\nexport class GetReactiveError extends BaseError.extend(\n 'GetReactiveError',\n 'Failed to get reactive object from snapshot',\n) {\n constructor(options: { reason: GetReactiveErrorReason; snapshotId?: string } & BaseErrorOptions) {\n super({ context: { reason: options.reason, snapshotId: options.snapshotId }, ...options });\n }\n}\n"],
5
+ "mappings": ";;;;;AAAA;;;;;;AAMA,SAASA,iBAAwC;AAG1C,IAAMC,sBAAN,cAAkCC,UAAUC,OAAO,uBAAuB,kBAAA,EAAA;EAC/E,YAAYC,QAAgBC,SAA4B;AACtD,UAAM;MAAEC,SAAS;QAAEF;MAAO;MAAG,GAAGC;IAAQ,CAAA;EAC1C;AACF;AAEO,IAAME,sBAAN,cAAkCL,UAAUC,OAAO,uBAAuB,kBAAA,EAAA;EAC/E,YAAYK,KAAUH,SAA4B;AAChD,UAAM;MAAEC,SAAS;QAAEE;MAAI;MAAG,GAAGH;IAAQ,CAAA;EACvC;AACF;AAaO,IAAMI,mBAAN,cAA+BP,UAAUC,OAC9C,oBACA,6CAAA,EAAA;EAEA,YAAYE,SAAqF;AAC/F,UAAM;MAAEC,SAAS;QAAEI,QAAQL,QAAQK;QAAQC,YAAYN,QAAQM;MAAW;MAAG,GAAGN;IAAQ,CAAA;EAC1F;AACF;",
6
+ "names": ["BaseError", "SchemaNotFoundError", "BaseError", "extend", "schema", "options", "context", "ObjectNotFoundError", "dxn", "GetReactiveError", "reason", "snapshotId"]
7
+ }
@@ -11,7 +11,7 @@ __export(Order_exports, {
11
11
  });
12
12
  var OrderClass = class _OrderClass {
13
13
  ast;
14
- static variance = {};
14
+ static "variance" = {};
15
15
  static is(value) {
16
16
  return typeof value === "object" && value !== null && "~Order" in value;
17
17
  }
@@ -39,4 +39,4 @@ export {
39
39
  rank,
40
40
  Order_exports
41
41
  };
42
- //# sourceMappingURL=chunk-ROKO4RKJ.mjs.map
42
+ //# sourceMappingURL=chunk-UI6MWK5W.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Order.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type QueryAST } from '@dxos/echo-protocol';\n\nexport interface Order<T> {\n // TODO(dmaretskyi): See new effect-schema approach to variance.\n '~Order': { value: T };\n\n ast: QueryAST.Order;\n}\n\nexport type Any = Order<any>;\n\nclass OrderClass implements Order<any> {\n private static 'variance': Order<any>['~Order'] = {} as Order<any>['~Order'];\n\n static is(value: unknown): value is Order<any> {\n return typeof value === 'object' && value !== null && '~Order' in value;\n }\n\n constructor(public readonly ast: QueryAST.Order) {}\n\n '~Order' = OrderClass.variance;\n}\n\nexport const natural: Order<any> = new OrderClass({ kind: 'natural' });\nexport const property = <T>(property: keyof T & string, direction: QueryAST.OrderDirection): Order<T> =>\n new OrderClass({\n kind: 'property',\n property,\n direction,\n });\n\n/**\n * Order by relevance rank (for FTS/vector search results).\n * Higher rank = better match. Default direction is 'desc' (best matches first).\n */\nexport const rank = <T>(direction: QueryAST.OrderDirection = 'desc'): Order<T> =>\n new OrderClass({\n kind: 'rank',\n direction,\n });\n"],
5
+ "mappings": ";;;;;AAAA;;;;;;AAiBA,IAAMA,aAAN,MAAMA,YAAAA;;EACJ,OAAe,aAAmC,CAAC;EAEnD,OAAOC,GAAGC,OAAqC;AAC7C,WAAO,OAAOA,UAAU,YAAYA,UAAU,QAAQ,YAAYA;EACpE;EAEA,YAA4BC,KAAqB;SAArBA,MAAAA;EAAsB;EAElD,WAAWH,YAAWI;AACxB;AAEO,IAAMC,UAAsB,IAAIL,WAAW;EAAEM,MAAM;AAAU,CAAA;AAC7D,IAAMC,WAAW,CAAIA,WAA4BC,cACtD,IAAIR,WAAW;EACbM,MAAM;EACNC,UAAAA;EACAC;AACF,CAAA;AAMK,IAAMC,OAAO,CAAID,YAAqC,WAC3D,IAAIR,WAAW;EACbM,MAAM;EACNE;AACF,CAAA;",
6
+ "names": ["OrderClass", "is", "value", "ast", "variance", "natural", "kind", "property", "direction", "rank"]
7
+ }
@@ -2,7 +2,7 @@ import {
2
2
  JsonSchemaType,
3
3
  toEffectSchema,
4
4
  toJsonSchema
5
- } from "./chunk-SU2LVM7J.mjs";
5
+ } from "./chunk-BOZZPUXE.mjs";
6
6
  import {
7
7
  __export
8
8
  } from "./chunk-J5LGTIGS.mjs";
@@ -11,13 +11,17 @@ import {
11
11
  var JsonSchema_exports = {};
12
12
  __export(JsonSchema_exports, {
13
13
  JsonSchema: () => JsonSchema,
14
- toEffectSchema: () => toEffectSchema,
15
- toJsonSchema: () => toJsonSchema
14
+ toEffectSchema: () => toEffectSchema2,
15
+ toJsonSchema: () => toJsonSchema2
16
16
  });
17
+ var toEffectSchema2 = toEffectSchema;
18
+ var toJsonSchema2 = toJsonSchema;
17
19
  var JsonSchema = JsonSchemaType;
18
20
 
19
21
  export {
22
+ toEffectSchema2 as toEffectSchema,
23
+ toJsonSchema2 as toJsonSchema,
20
24
  JsonSchema,
21
25
  JsonSchema_exports
22
26
  };
23
- //# sourceMappingURL=chunk-3ZEAZF7T.mjs.map
27
+ //# sourceMappingURL=chunk-UTBRYVQC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/JsonSchema.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type * as Schema from 'effect/Schema';\n\nimport * as jsonSchemaInternal from './internal/JsonSchema';\n\n/**\n * Decode JSON Schema to Effect Schema.\n */\nexport const toEffectSchema = jsonSchemaInternal.toEffectSchema;\n\n/**\n * Encode Effect Schema to JSON Schema.\n */\nexport const toJsonSchema = jsonSchemaInternal.toJsonSchema;\n\n/**\n * Serializable JsonSchema type definition.\n */\nexport type JsonSchema = jsonSchemaInternal.JsonSchemaType;\n\nexport const JsonSchema: Schema.Schema<jsonSchemaInternal.JsonSchemaType> = jsonSchemaInternal.JsonSchemaType;\n"],
5
+ "mappings": ";;;;;;;;;;AAAA;;;wBAAAA;EAAA,oBAAAC;;AAaO,IAAMC,kBAAoCA;AAK1C,IAAMC,gBAAkCA;AAOxC,IAAMC,aAAkFC;",
6
+ "names": ["toEffectSchema", "toJsonSchema", "toEffectSchema", "toJsonSchema", "JsonSchema", "JsonSchemaType"]
7
+ }
@@ -1,6 +1,14 @@
1
+ import {
2
+ Unknown
3
+ } from "./chunk-4JRI2ZJI.mjs";
4
+ import {
5
+ KindId,
6
+ SnapshotKindId
7
+ } from "./chunk-ROAGDPV7.mjs";
1
8
  import {
2
9
  ATTR_RELATION_SOURCE,
3
10
  ATTR_RELATION_TARGET,
11
+ EchoRelationSchema,
4
12
  MetaId,
5
13
  RelationSourceDXNId,
6
14
  RelationSourceId,
@@ -12,37 +20,38 @@ import {
12
20
  deleteKeys,
13
21
  getDXN,
14
22
  getDatabase,
15
- getDescription,
16
23
  getKeys,
17
- getLabel,
18
24
  getMetaChecked,
19
25
  getObjectDXN,
20
26
  getSnapshot,
27
+ getValue,
21
28
  isDeleted,
22
29
  isVersion,
23
30
  makeObject,
24
31
  objectToJSON,
25
32
  removeTag,
26
- setDescription,
27
- setLabel,
28
33
  setValue,
29
34
  sort,
30
35
  sortByLabel,
31
36
  sortByTypename,
32
37
  subscribe,
33
38
  version
34
- } from "./chunk-SU2LVM7J.mjs";
39
+ } from "./chunk-C4JZK4J7.mjs";
35
40
  import {
41
+ ParentId,
42
+ getDescription,
43
+ getLabel,
36
44
  getSchema,
37
45
  getTypeAnnotation,
38
46
  getTypeDXN,
39
- getTypename
40
- } from "./chunk-CUDIBUM4.mjs";
47
+ getTypename,
48
+ setDescription,
49
+ setLabel
50
+ } from "./chunk-SEMVAGBM.mjs";
41
51
  import {
42
52
  EntityKind,
43
- KindId,
44
- SnapshotKindId
45
- } from "./chunk-YQYMWZAD.mjs";
53
+ SchemaKindId
54
+ } from "./chunk-WYOKA6AE.mjs";
46
55
  import {
47
56
  __export
48
57
  } from "./chunk-J5LGTIGS.mjs";
@@ -50,9 +59,11 @@ import {
50
59
  // src/Relation.ts
51
60
  var Relation_exports = {};
52
61
  __export(Relation_exports, {
62
+ Meta: () => Meta,
53
63
  Source: () => Source,
54
64
  Target: () => Target,
55
- VersionTypeId: () => VersionTypeId,
65
+ Unknown: () => Unknown3,
66
+ VersionTypeId: () => VersionTypeId2,
56
67
  addTag: () => addTag2,
57
68
  change: () => change2,
58
69
  deleteKeys: () => deleteKeys2,
@@ -70,10 +81,11 @@ __export(Relation_exports, {
70
81
  getTargetDXN: () => getTargetDXN,
71
82
  getTypeDXN: () => getTypeDXN2,
72
83
  getTypename: () => getTypename2,
73
- getValue: () => getValue,
84
+ getValue: () => getValue2,
74
85
  isDeleted: () => isDeleted2,
75
86
  isRelation: () => isRelation,
76
- isVersion: () => isVersion,
87
+ isSnapshot: () => isSnapshot,
88
+ isVersion: () => isVersion2,
77
89
  make: () => make,
78
90
  removeTag: () => removeTag2,
79
91
  setDescription: () => setDescription2,
@@ -86,16 +98,39 @@ __export(Relation_exports, {
86
98
  toJSON: () => toJSON,
87
99
  version: () => version2
88
100
  });
101
+ import * as Schema from "effect/Schema";
89
102
  import { raise } from "@dxos/debug";
90
- import { createJsonPath, getValue as getValue$ } from "@dxos/effect";
103
+ import { createJsonPath } from "@dxos/effect";
91
104
  import { assertArgument, invariant } from "@dxos/invariant";
92
105
  import { DXN } from "@dxos/keys";
93
106
  import { assumeType } from "@dxos/util";
94
107
  var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Relation.ts";
108
+ var Unknown3 = Schema.Struct({
109
+ id: Schema.String
110
+ }).pipe(
111
+ Schema.extend(Schema.Record({
112
+ key: Schema.String,
113
+ value: Schema.Unknown
114
+ })),
115
+ // TODO(dmaretskyi): Clean this up.
116
+ // NOTE: The EchoRelationSchema annotation is required for Ref.Ref(Relation.Unknown) to work.
117
+ // The typename/version/source/target only satisfy ECHO schema machinery for reference targets.
118
+ EchoRelationSchema({
119
+ typename: "org.dxos.schema.any-relation",
120
+ version: "0.0.0",
121
+ source: Unknown,
122
+ target: Unknown
123
+ }),
124
+ (schema) => Object.assign(schema, {
125
+ [SchemaKindId]: schema[SchemaKindId]
126
+ })
127
+ );
95
128
  var Source = RelationSourceId;
96
129
  var Target = RelationTargetId;
97
- var make = (schema, props, meta) => {
130
+ var make = (schema, props) => {
98
131
  assertArgument(getTypeAnnotation(schema)?.kind === EntityKind.Relation, "schema", "Expected a relation schema");
132
+ assertArgument(props[ParentId] === void 0, "props", "Parent is not allowed for relations");
133
+ let meta = void 0;
99
134
  if (props[MetaId] != null) {
100
135
  meta = props[MetaId];
101
136
  delete props[MetaId];
@@ -116,13 +151,19 @@ var isRelation = (value) => {
116
151
  const kind = value[KindId] ?? value[SnapshotKindId];
117
152
  return kind === EntityKind.Relation;
118
153
  };
154
+ var isSnapshot = (value) => {
155
+ if (typeof value !== "object" || value === null) {
156
+ return false;
157
+ }
158
+ return value[SnapshotKindId] === EntityKind.Relation;
159
+ };
119
160
  var getSourceDXN = (value) => {
120
161
  assertArgument(isRelation(value), "Expected a relation");
121
162
  assumeType(value);
122
163
  const dxn = value[RelationSourceDXNId];
123
164
  invariant(dxn instanceof DXN, void 0, {
124
165
  F: __dxlog_file,
125
- L: 188,
166
+ L: 214,
126
167
  S: void 0,
127
168
  A: [
128
169
  "dxn instanceof DXN",
@@ -137,7 +178,7 @@ var getTargetDXN = (value) => {
137
178
  const dxn = value[RelationTargetDXNId];
138
179
  invariant(dxn instanceof DXN, void 0, {
139
180
  F: __dxlog_file,
140
- L: 201,
181
+ L: 227,
141
182
  S: void 0,
142
183
  A: [
143
184
  "dxn instanceof DXN",
@@ -152,7 +193,7 @@ var getSource = (relation) => {
152
193
  const obj = relation[RelationSourceId];
153
194
  invariant(obj !== void 0, `Invalid source: ${relation.id}`, {
154
195
  F: __dxlog_file,
155
- L: 214,
196
+ L: 240,
156
197
  S: void 0,
157
198
  A: [
158
199
  "obj !== undefined",
@@ -167,7 +208,7 @@ var getTarget = (relation) => {
167
208
  const obj = relation[RelationTargetId];
168
209
  invariant(obj !== void 0, `Invalid target: ${relation.id}`, {
169
210
  F: __dxlog_file,
170
- L: 227,
211
+ L: 253,
171
212
  S: void 0,
172
213
  A: [
173
214
  "obj !== undefined",
@@ -183,8 +224,8 @@ var getSnapshot2 = getSnapshot;
183
224
  var subscribe2 = (rel, callback) => {
184
225
  return subscribe(rel, callback);
185
226
  };
186
- var getValue = (rel, path) => {
187
- return getValue$(rel, createJsonPath(path));
227
+ var getValue2 = (rel, path) => {
228
+ return getValue(rel, createJsonPath(path));
188
229
  };
189
230
  var setValue2 = setValue;
190
231
  var getDXN2 = (entity) => getDXN(entity);
@@ -192,6 +233,7 @@ var getTypeDXN2 = getTypeDXN;
192
233
  var getSchema2 = getSchema;
193
234
  var getTypename2 = (entity) => getTypename(entity);
194
235
  var getDatabase2 = (entity) => getDatabase(entity);
236
+ var Meta = MetaId;
195
237
  function getMeta(entity) {
196
238
  return getMetaChecked(entity);
197
239
  }
@@ -208,13 +250,17 @@ var toJSON = (entity) => objectToJSON(entity);
208
250
  var sortByLabel2 = sortByLabel;
209
251
  var sortByTypename2 = sortByTypename;
210
252
  var sort2 = (...comparators) => sort(...comparators);
253
+ var VersionTypeId2 = VersionTypeId;
254
+ var isVersion2 = isVersion;
211
255
  var version2 = (entity) => version(entity);
212
256
 
213
257
  export {
258
+ Unknown3 as Unknown,
214
259
  Source,
215
260
  Target,
216
261
  make,
217
262
  isRelation,
263
+ isSnapshot,
218
264
  getSourceDXN,
219
265
  getTargetDXN,
220
266
  getSource,
@@ -222,13 +268,14 @@ export {
222
268
  change2 as change,
223
269
  getSnapshot2 as getSnapshot,
224
270
  subscribe2 as subscribe,
225
- getValue,
271
+ getValue2 as getValue,
226
272
  setValue2 as setValue,
227
273
  getDXN2 as getDXN,
228
274
  getTypeDXN2 as getTypeDXN,
229
275
  getSchema2 as getSchema,
230
276
  getTypename2 as getTypename,
231
277
  getDatabase2 as getDatabase,
278
+ Meta,
232
279
  getMeta,
233
280
  getKeys2 as getKeys,
234
281
  deleteKeys2 as deleteKeys,
@@ -243,7 +290,9 @@ export {
243
290
  sortByLabel2 as sortByLabel,
244
291
  sortByTypename2 as sortByTypename,
245
292
  sort2 as sort,
293
+ VersionTypeId2 as VersionTypeId,
294
+ isVersion2 as isVersion,
246
295
  version2 as version,
247
296
  Relation_exports
248
297
  };
249
- //# sourceMappingURL=chunk-VR4A4WGG.mjs.map
298
+ //# sourceMappingURL=chunk-W47JKR3X.mjs.map