@dxos/echo 0.8.4-main.4a85c3132b → 0.8.4-main.4f23b4e393

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 (557) hide show
  1. package/README.md +2 -2
  2. package/dist/lib/neutral/Annotation.mjs +5 -3
  3. package/dist/lib/neutral/Database.mjs +8 -4
  4. package/dist/lib/neutral/Entity.mjs +16 -11
  5. package/dist/lib/neutral/Err.mjs +1 -1
  6. package/dist/lib/neutral/Extension.mjs +18 -0
  7. package/dist/lib/neutral/Extension.mjs.map +7 -0
  8. package/dist/lib/neutral/Feed.mjs +23 -14
  9. package/dist/lib/neutral/Filter.mjs +21 -10
  10. package/dist/lib/neutral/Format.mjs +3 -3
  11. package/dist/lib/neutral/JsonSchema.mjs +8 -7
  12. package/dist/lib/neutral/Key.mjs +1 -1
  13. package/dist/lib/neutral/Migration.mjs +17 -0
  14. package/dist/lib/neutral/Migration.mjs.map +7 -0
  15. package/dist/lib/neutral/Obj.mjs +16 -10
  16. package/dist/lib/neutral/Order.mjs +1 -1
  17. package/dist/lib/neutral/Query.mjs +19 -13
  18. package/dist/lib/neutral/QueryResult.mjs +1 -1
  19. package/dist/lib/neutral/Ref.mjs +9 -7
  20. package/dist/lib/neutral/Relation.mjs +15 -11
  21. package/dist/lib/neutral/SchemaRegistry.mjs +1 -1
  22. package/dist/lib/neutral/Tag.mjs +14 -10
  23. package/dist/lib/neutral/Type.mjs +10 -7
  24. package/dist/lib/neutral/{chunk-DZQSL6RW.mjs → chunk-44HT3MEC.mjs} +2 -2
  25. package/dist/lib/neutral/{chunk-DZQSL6RW.mjs.map → chunk-44HT3MEC.mjs.map} +1 -1
  26. package/dist/lib/neutral/{chunk-OVUBTQLT.mjs → chunk-5SL5LDLD.mjs} +4 -2
  27. package/dist/lib/neutral/chunk-5SL5LDLD.mjs.map +7 -0
  28. package/dist/lib/neutral/{chunk-ANHVGJI4.mjs → chunk-7RVZT53K.mjs} +1 -1
  29. package/dist/lib/neutral/{chunk-T4MPQJ7X.mjs → chunk-AHWSAJHU.mjs} +6 -22
  30. package/dist/lib/neutral/chunk-AHWSAJHU.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-APHSOTIX.mjs +34 -0
  32. package/dist/lib/neutral/chunk-APHSOTIX.mjs.map +7 -0
  33. package/dist/lib/neutral/{chunk-T6JEFNP6.mjs → chunk-BICZKPQG.mjs} +1 -1
  34. package/dist/lib/neutral/{chunk-T6JEFNP6.mjs.map → chunk-BICZKPQG.mjs.map} +1 -1
  35. package/dist/lib/neutral/chunk-BMB7IHGB.mjs +346 -0
  36. package/dist/lib/neutral/chunk-BMB7IHGB.mjs.map +7 -0
  37. package/dist/lib/neutral/{chunk-BRJSLACP.mjs → chunk-C6LDQTNO.mjs} +71 -17
  38. package/dist/lib/neutral/chunk-C6LDQTNO.mjs.map +7 -0
  39. package/dist/lib/neutral/{chunk-ZWKJ4LZJ.mjs → chunk-GKBXQFQK.mjs} +23 -51
  40. package/dist/lib/neutral/chunk-GKBXQFQK.mjs.map +7 -0
  41. package/dist/lib/neutral/chunk-GWFFC34K.mjs +50 -0
  42. package/dist/lib/neutral/chunk-GWFFC34K.mjs.map +7 -0
  43. package/dist/lib/neutral/{chunk-5ELDDYWE.mjs → chunk-I2DARWPX.mjs} +17 -19
  44. package/dist/lib/neutral/chunk-I2DARWPX.mjs.map +7 -0
  45. package/dist/lib/neutral/chunk-KBZ4RAXR.mjs +136 -0
  46. package/dist/lib/neutral/chunk-KBZ4RAXR.mjs.map +7 -0
  47. package/dist/lib/neutral/chunk-MLS7U7AT.mjs +734 -0
  48. package/dist/lib/neutral/chunk-MLS7U7AT.mjs.map +7 -0
  49. package/dist/lib/neutral/{chunk-4KG6IGL4.mjs → chunk-N4B7FHQT.mjs} +4 -4
  50. package/dist/lib/neutral/{chunk-4KG6IGL4.mjs.map → chunk-N4B7FHQT.mjs.map} +2 -2
  51. package/dist/lib/neutral/{chunk-QXF3LGN2.mjs → chunk-N7VOEPSV.mjs} +8 -3
  52. package/dist/lib/neutral/chunk-N7VOEPSV.mjs.map +7 -0
  53. package/dist/lib/neutral/{chunk-W7OP5HGZ.mjs → chunk-NWXJZVWD.mjs} +14 -10
  54. package/dist/lib/neutral/chunk-NWXJZVWD.mjs.map +7 -0
  55. package/dist/lib/neutral/{chunk-GAWKQ5DZ.mjs → chunk-OMJN6VCR.mjs} +5 -5
  56. package/dist/lib/neutral/chunk-OMJN6VCR.mjs.map +7 -0
  57. package/dist/lib/neutral/{chunk-ALOGSVBP.mjs → chunk-PHOHAIEE.mjs} +59 -4
  58. package/dist/lib/neutral/chunk-PHOHAIEE.mjs.map +7 -0
  59. package/dist/lib/neutral/{chunk-O3TZFQCT.mjs → chunk-QRZ2I3ZM.mjs} +2 -2
  60. package/dist/lib/neutral/chunk-QRZ2I3ZM.mjs.map +7 -0
  61. package/dist/lib/neutral/{chunk-AQP4QKYP.mjs → chunk-SRX3EZY3.mjs} +56 -19
  62. package/dist/lib/neutral/chunk-SRX3EZY3.mjs.map +7 -0
  63. package/dist/lib/neutral/chunk-SUZMWP3Y.mjs +36 -0
  64. package/dist/lib/neutral/chunk-SUZMWP3Y.mjs.map +7 -0
  65. package/dist/lib/neutral/{chunk-F7KMHDPJ.mjs → chunk-TNBK56IN.mjs} +54 -31
  66. package/dist/lib/neutral/chunk-TNBK56IN.mjs.map +7 -0
  67. package/dist/lib/neutral/{chunk-M2KVTHZM.mjs → chunk-TRPZU2HV.mjs} +10 -10
  68. package/dist/lib/neutral/chunk-TRPZU2HV.mjs.map +7 -0
  69. package/dist/lib/neutral/{chunk-ZTUBYOGB.mjs → chunk-TTCSATUD.mjs} +1 -1
  70. package/dist/lib/neutral/chunk-TTCSATUD.mjs.map +7 -0
  71. package/dist/lib/neutral/{chunk-OMUPQMLR.mjs → chunk-V72DY6LU.mjs} +1 -1
  72. package/dist/lib/neutral/{chunk-KGV3QIRX.mjs → chunk-W7U2XGZ3.mjs} +124 -17
  73. package/dist/lib/neutral/chunk-W7U2XGZ3.mjs.map +7 -0
  74. package/dist/lib/neutral/{chunk-MXQJZCPY.mjs → chunk-ZISMEVKD.mjs} +1 -1
  75. package/dist/lib/neutral/chunk-ZISMEVKD.mjs.map +7 -0
  76. package/dist/lib/neutral/{chunk-PP4DNUZU.mjs → chunk-ZVQ26DCR.mjs} +1403 -2886
  77. package/dist/lib/neutral/chunk-ZVQ26DCR.mjs.map +7 -0
  78. package/dist/lib/neutral/index.mjs +38 -25
  79. package/dist/lib/neutral/internal/index.mjs +50 -38
  80. package/dist/lib/neutral/meta.json +1 -1
  81. package/dist/lib/neutral/testing/index.mjs +196 -136
  82. package/dist/lib/neutral/testing/index.mjs.map +3 -3
  83. package/dist/types/src/Annotation.d.ts +3 -3
  84. package/dist/types/src/Annotation.d.ts.map +1 -1
  85. package/dist/types/src/Collection.d.ts.map +1 -1
  86. package/dist/types/src/Database.d.ts +16 -4
  87. package/dist/types/src/Database.d.ts.map +1 -1
  88. package/dist/types/src/Dataset.d.ts +2 -1
  89. package/dist/types/src/Dataset.d.ts.map +1 -1
  90. package/dist/types/src/Entity.d.ts +17 -11
  91. package/dist/types/src/Entity.d.ts.map +1 -1
  92. package/dist/types/src/Err.d.ts +18 -18
  93. package/dist/types/src/Err.d.ts.map +1 -1
  94. package/dist/types/src/Extension.d.ts +80 -0
  95. package/dist/types/src/Extension.d.ts.map +1 -0
  96. package/dist/types/src/Extension.test.d.ts +2 -0
  97. package/dist/types/src/Extension.test.d.ts.map +1 -0
  98. package/dist/types/src/Feed.d.ts +65 -24
  99. package/dist/types/src/Feed.d.ts.map +1 -1
  100. package/dist/types/src/Filter.d.ts +33 -4
  101. package/dist/types/src/Filter.d.ts.map +1 -1
  102. package/dist/types/src/Filter.test.d.ts +2 -0
  103. package/dist/types/src/Filter.test.d.ts.map +1 -0
  104. package/dist/types/src/Format.d.ts +1 -1
  105. package/dist/types/src/Format.d.ts.map +1 -1
  106. package/dist/types/src/Hypergraph.d.ts +9 -4
  107. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  108. package/dist/types/src/Json.d.ts +33 -0
  109. package/dist/types/src/Json.d.ts.map +1 -0
  110. package/dist/types/src/Json.test.d.ts +2 -0
  111. package/dist/types/src/Json.test.d.ts.map +1 -0
  112. package/dist/types/src/JsonSchema.d.ts +5 -5
  113. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  114. package/dist/types/src/Migration.d.ts +57 -0
  115. package/dist/types/src/Migration.d.ts.map +1 -0
  116. package/dist/types/src/Obj.d.ts +45 -29
  117. package/dist/types/src/Obj.d.ts.map +1 -1
  118. package/dist/types/src/Order.d.ts.map +1 -1
  119. package/dist/types/src/Query.d.ts +13 -2
  120. package/dist/types/src/Query.d.ts.map +1 -1
  121. package/dist/types/src/Ref.d.ts +12 -11
  122. package/dist/types/src/Ref.d.ts.map +1 -1
  123. package/dist/types/src/Relation.d.ts +16 -16
  124. package/dist/types/src/Relation.d.ts.map +1 -1
  125. package/dist/types/src/SchemaRegistry.d.ts +1 -1
  126. package/dist/types/src/Tag.d.ts +2 -2
  127. package/dist/types/src/Tag.d.ts.map +1 -1
  128. package/dist/types/src/Type.d.ts +10 -9
  129. package/dist/types/src/Type.d.ts.map +1 -1
  130. package/dist/types/src/View.d.ts +1 -1
  131. package/dist/types/src/View.d.ts.map +1 -1
  132. package/dist/types/src/exemplars.test.d.ts +2 -0
  133. package/dist/types/src/exemplars.test.d.ts.map +1 -0
  134. package/dist/types/src/index.d.ts +3 -0
  135. package/dist/types/src/index.d.ts.map +1 -1
  136. package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +33 -2
  137. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  138. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  139. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  140. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  141. package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
  142. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  143. package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +2 -2
  144. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  145. package/dist/types/src/internal/{api/entity.d.ts → Entity/api.d.ts} +2 -2
  146. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  147. package/dist/types/src/internal/{entities → Entity}/entity.d.ts +2 -2
  148. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  149. package/dist/types/src/internal/{entities → Entity}/index.d.ts +2 -0
  150. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  151. package/dist/types/src/internal/{entities → Entity}/model.d.ts +2 -26
  152. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  153. package/dist/types/src/internal/{entities → Entity}/object.d.ts +2 -2
  154. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  155. package/dist/types/src/internal/{entities → Entity}/relation.d.ts +3 -30
  156. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  157. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  158. package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
  159. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  160. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  161. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  162. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  163. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  164. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  165. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  166. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  167. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  168. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  169. package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
  170. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  171. package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
  172. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  173. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  174. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  175. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  176. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +23 -23
  177. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  178. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +1 -1
  179. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  180. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  181. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  182. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  183. package/dist/types/src/internal/{object → Obj}/create-object.d.ts +2 -2
  184. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  185. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  186. package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
  187. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  188. package/dist/types/src/internal/{object → Obj}/ids.d.ts +1 -1
  189. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  190. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  191. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  192. package/dist/types/src/internal/{object → Obj}/json-serializer.d.ts +13 -5
  193. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  194. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  195. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  196. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  197. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  198. package/dist/types/src/internal/{object → Obj}/set-value.d.ts +2 -2
  199. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  200. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  201. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  202. package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +2 -2
  203. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  204. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  205. package/dist/types/src/internal/Query.d.ts +10 -0
  206. package/dist/types/src/internal/Query.d.ts.map +1 -0
  207. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  208. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
  209. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  210. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +15 -2
  211. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  212. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  213. package/dist/types/src/internal/{schema → Type}/compose.d.ts +1 -1
  214. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  215. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  216. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +6 -6
  217. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  218. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  219. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  220. package/dist/types/src/internal/{schema → Type}/persistent-schema.d.ts +2 -2
  221. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  222. package/dist/types/src/internal/{api → common/api}/index.d.ts +0 -4
  223. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  224. package/dist/types/src/internal/{api → common/api}/meta.d.ts +3 -3
  225. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  226. package/dist/types/src/internal/common/index.d.ts +4 -0
  227. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  228. package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +1 -1
  229. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  230. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  231. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  232. package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +1 -1
  233. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  234. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  235. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  236. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  237. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  238. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  239. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  240. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  241. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  242. package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +1 -1
  243. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  244. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +2 -2
  245. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts.map +1 -1
  246. package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
  247. package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
  248. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  249. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  250. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  251. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  252. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  253. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  254. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  255. package/dist/types/src/internal/{types → common/types}/entity.d.ts +4 -4
  256. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  257. package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
  258. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  259. package/dist/types/src/internal/{types → common/types}/meta.d.ts +3 -3
  260. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  261. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  262. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  263. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  264. package/dist/types/src/internal/{types → common/types}/version.d.ts +1 -1
  265. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  266. package/dist/types/src/internal/index.d.ts +9 -10
  267. package/dist/types/src/internal/index.d.ts.map +1 -1
  268. package/dist/types/src/testing/test-data.d.ts +8 -8
  269. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  270. package/dist/types/src/testing/test-schema.d.ts +53 -53
  271. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  272. package/dist/types/src/testing/util.d.ts.map +1 -1
  273. package/dist/types/tsconfig.tsbuildinfo +1 -1
  274. package/package.json +24 -14
  275. package/src/Annotation.ts +6 -3
  276. package/src/Collection.ts +8 -1
  277. package/src/Database.ts +55 -18
  278. package/src/Dataset.ts +2 -0
  279. package/src/Entity.ts +20 -11
  280. package/src/Err.ts +2 -0
  281. package/src/Extension.test.ts +235 -0
  282. package/src/Extension.ts +122 -0
  283. package/src/Feed.ts +118 -37
  284. package/src/Filter.test.ts +90 -0
  285. package/src/Filter.ts +68 -3
  286. package/src/Format.ts +1 -1
  287. package/src/Hypergraph.ts +10 -5
  288. package/src/Json.test.ts +175 -0
  289. package/src/Json.ts +102 -0
  290. package/src/JsonSchema.ts +7 -5
  291. package/src/Migration.ts +94 -0
  292. package/src/Obj.test.ts +107 -15
  293. package/src/Obj.ts +166 -40
  294. package/src/Order.ts +2 -0
  295. package/src/Query.test.ts +222 -32
  296. package/src/Query.ts +62 -10
  297. package/src/Ref.ts +16 -12
  298. package/src/Relation.test.ts +2 -2
  299. package/src/Relation.ts +28 -21
  300. package/src/SchemaRegistry.ts +1 -1
  301. package/src/Tag.ts +3 -1
  302. package/src/Type.ts +14 -11
  303. package/src/View.ts +9 -2
  304. package/src/exemplars.test.ts +21 -0
  305. package/src/index.ts +4 -0
  306. package/src/internal/{annotations → Annotation}/annotations.test.ts +56 -7
  307. package/src/internal/{annotations → Annotation}/annotations.ts +84 -20
  308. package/src/internal/{annotations → Annotation}/index.ts +1 -0
  309. package/src/internal/{api → Annotation}/sorting.ts +2 -4
  310. package/src/internal/{annotations → Annotation}/util.ts +1 -1
  311. package/src/internal/{api/entity.ts → Entity/api.ts} +3 -2
  312. package/src/internal/{entities → Entity}/entity.ts +2 -2
  313. package/src/internal/{entities → Entity}/index.ts +2 -0
  314. package/src/internal/{entities → Entity}/model.ts +13 -42
  315. package/src/internal/{entities → Entity}/object.ts +2 -3
  316. package/src/internal/{entities → Entity}/relation.ts +19 -36
  317. package/src/internal/{api → Entity}/version.ts +2 -2
  318. package/src/internal/{formats → Format}/date.test.ts +1 -2
  319. package/src/internal/{formats → Format}/format.test.ts +1 -2
  320. package/src/internal/{formats → Format}/types.ts +2 -2
  321. package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
  322. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +4 -4
  323. package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -49
  324. package/src/internal/{json-schema → JsonSchema}/json-schema.ts +3 -4
  325. package/src/internal/{object → Obj}/clone.ts +3 -3
  326. package/src/internal/{object → Obj}/common.ts +2 -2
  327. package/src/internal/{object → Obj}/create-object.test.ts +5 -7
  328. package/src/internal/{object → Obj}/create-object.ts +5 -6
  329. package/src/internal/{object → Obj}/deleted.ts +2 -2
  330. package/src/internal/{object → Obj}/ids.ts +1 -1
  331. package/src/internal/{object → Obj}/inspect.ts +2 -2
  332. package/src/internal/{object → Obj}/json-serializer.test.ts +8 -9
  333. package/src/internal/{object → Obj}/json-serializer.ts +44 -26
  334. package/src/internal/{object → Obj}/schema-validator.ts +1 -1
  335. package/src/internal/{object → Obj}/set-value.test.ts +24 -24
  336. package/src/internal/{object → Obj}/set-value.ts +3 -3
  337. package/src/internal/{object → Obj}/snapshot.ts +14 -5
  338. package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
  339. package/src/internal/{object → Obj}/typed-object.ts +2 -2
  340. package/src/internal/Query.ts +137 -0
  341. package/src/internal/{ref → Ref}/ref-array.ts +1 -2
  342. package/src/internal/{ref → Ref}/ref.test.ts +4 -5
  343. package/src/internal/{ref → Ref}/ref.ts +20 -3
  344. package/src/internal/{schema → Type}/compose.test.ts +5 -6
  345. package/src/internal/{schema → Type}/compose.ts +1 -1
  346. package/src/internal/{schema → Type}/echo-schema.ts +7 -8
  347. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  348. package/src/internal/{schema → Type}/persistent-schema.ts +7 -7
  349. package/src/internal/{README.md → common/README.md} +1 -1
  350. package/src/internal/{api → common/api}/index.ts +0 -4
  351. package/src/internal/{api → common/api}/meta.ts +3 -3
  352. package/src/internal/common/index.ts +7 -0
  353. package/src/internal/{proxy → common/proxy}/change-context.ts +1 -1
  354. package/src/internal/{proxy → common/proxy}/change.test.ts +97 -97
  355. package/src/internal/{proxy → common/proxy}/errors.ts +2 -2
  356. package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -4
  357. package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
  358. package/src/internal/{proxy → common/proxy}/make-object.ts +1 -2
  359. package/src/internal/{proxy → common/proxy}/ownership.ts +0 -1
  360. package/src/internal/{proxy → common/proxy}/reactive-array.ts +1 -1
  361. package/src/internal/common/proxy/reactive.test.ts +54 -0
  362. package/src/internal/{proxy → common/proxy}/reactive.ts +12 -4
  363. package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
  364. package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +6 -7
  365. package/src/internal/{proxy → common/proxy}/typed-handler.ts +10 -13
  366. package/src/internal/{proxy → common/proxy}/typed-object.test.ts +5 -6
  367. package/src/internal/{types → common/types}/entity.ts +1 -1
  368. package/src/internal/{types → common/types}/index.ts +1 -0
  369. package/src/internal/{types → common/types}/meta.ts +1 -2
  370. package/src/internal/common/types/model-symbols.ts +69 -0
  371. package/src/internal/index.ts +9 -31
  372. package/src/testing/api.test.ts +2 -3
  373. package/src/testing/test-data.ts +157 -98
  374. package/src/testing/test-schema.ts +9 -9
  375. package/dist/lib/neutral/chunk-5ELDDYWE.mjs.map +0 -7
  376. package/dist/lib/neutral/chunk-ALOGSVBP.mjs.map +0 -7
  377. package/dist/lib/neutral/chunk-AQP4QKYP.mjs.map +0 -7
  378. package/dist/lib/neutral/chunk-BRJSLACP.mjs.map +0 -7
  379. package/dist/lib/neutral/chunk-F7KMHDPJ.mjs.map +0 -7
  380. package/dist/lib/neutral/chunk-GAWKQ5DZ.mjs.map +0 -7
  381. package/dist/lib/neutral/chunk-GFNCSK7F.mjs +0 -101
  382. package/dist/lib/neutral/chunk-GFNCSK7F.mjs.map +0 -7
  383. package/dist/lib/neutral/chunk-KGV3QIRX.mjs.map +0 -7
  384. package/dist/lib/neutral/chunk-M2KVTHZM.mjs.map +0 -7
  385. package/dist/lib/neutral/chunk-MXQJZCPY.mjs.map +0 -7
  386. package/dist/lib/neutral/chunk-O3TZFQCT.mjs.map +0 -7
  387. package/dist/lib/neutral/chunk-OVUBTQLT.mjs.map +0 -7
  388. package/dist/lib/neutral/chunk-PP4DNUZU.mjs.map +0 -7
  389. package/dist/lib/neutral/chunk-QXF3LGN2.mjs.map +0 -7
  390. package/dist/lib/neutral/chunk-T4MPQJ7X.mjs.map +0 -7
  391. package/dist/lib/neutral/chunk-W7OP5HGZ.mjs.map +0 -7
  392. package/dist/lib/neutral/chunk-ZTUBYOGB.mjs.map +0 -7
  393. package/dist/lib/neutral/chunk-ZWKJ4LZJ.mjs.map +0 -7
  394. package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
  395. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
  396. package/dist/types/src/internal/annotations/index.d.ts +0 -3
  397. package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
  398. package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
  399. package/dist/types/src/internal/api/annotations.d.ts +0 -23
  400. package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
  401. package/dist/types/src/internal/api/entity.d.ts.map +0 -1
  402. package/dist/types/src/internal/api/index.d.ts.map +0 -1
  403. package/dist/types/src/internal/api/meta.d.ts.map +0 -1
  404. package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
  405. package/dist/types/src/internal/api/version.d.ts.map +0 -1
  406. package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
  407. package/dist/types/src/internal/entities/index.d.ts.map +0 -1
  408. package/dist/types/src/internal/entities/model.d.ts.map +0 -1
  409. package/dist/types/src/internal/entities/object.d.ts.map +0 -1
  410. package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
  411. package/dist/types/src/internal/entities/util.d.ts.map +0 -1
  412. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  413. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  414. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  415. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  416. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  417. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  418. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  419. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  420. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  421. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  422. package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
  423. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
  424. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  425. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  426. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  427. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
  428. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
  429. package/dist/types/src/internal/object/clone.d.ts.map +0 -1
  430. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  431. package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
  432. package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
  433. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  434. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  435. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  436. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  437. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  438. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  439. package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
  440. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  441. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  442. package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
  443. package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
  444. package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
  445. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  446. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  447. package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
  448. package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
  449. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
  450. package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
  451. package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
  452. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  453. package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
  454. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
  455. package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
  456. package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
  457. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
  458. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
  459. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
  460. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
  461. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  462. package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
  463. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  464. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  465. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  466. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  467. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  468. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  469. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  470. package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
  471. package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
  472. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  473. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  474. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  475. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
  476. package/dist/types/src/internal/types/base.d.ts.map +0 -1
  477. package/dist/types/src/internal/types/entity.d.ts.map +0 -1
  478. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  479. package/dist/types/src/internal/types/meta.d.ts.map +0 -1
  480. package/dist/types/src/internal/types/typename.d.ts.map +0 -1
  481. package/dist/types/src/internal/types/version.d.ts.map +0 -1
  482. package/src/internal/api/annotations.ts +0 -60
  483. /package/dist/lib/neutral/{chunk-ANHVGJI4.mjs.map → chunk-7RVZT53K.mjs.map} +0 -0
  484. /package/dist/lib/neutral/{chunk-OMUPQMLR.mjs.map → chunk-V72DY6LU.mjs.map} +0 -0
  485. /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
  486. /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
  487. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  488. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  489. /package/dist/types/src/internal/{formats → Format}/format.d.ts +0 -0
  490. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  491. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  492. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  493. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  494. /package/dist/types/src/internal/{formats → Format}/select.d.ts +0 -0
  495. /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
  496. /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
  497. /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
  498. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  499. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
  500. /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
  501. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  502. /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
  503. /package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -0
  504. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  505. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  506. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  507. /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
  508. /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
  509. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  510. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  511. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  512. /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
  513. /package/dist/types/src/internal/{schema → Type}/index.d.ts +0 -0
  514. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  515. /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
  516. /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
  517. /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
  518. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  519. /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
  520. /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
  521. /package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +0 -0
  522. /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
  523. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
  524. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
  525. /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
  526. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  527. /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
  528. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +0 -0
  529. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  530. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  531. /package/dist/types/src/internal/{types → common/types}/base.d.ts +0 -0
  532. /package/dist/types/src/internal/{types → common/types}/typename.d.ts +0 -0
  533. /package/src/internal/{entities → Entity}/util.ts +0 -0
  534. /package/src/internal/{formats → Format}/date.ts +0 -0
  535. /package/src/internal/{formats → Format}/format.ts +0 -0
  536. /package/src/internal/{formats → Format}/index.ts +0 -0
  537. /package/src/internal/{formats → Format}/number.ts +0 -0
  538. /package/src/internal/{formats → Format}/object.ts +0 -0
  539. /package/src/internal/{formats → Format}/select.ts +0 -0
  540. /package/src/internal/{formats → Format}/string.ts +0 -0
  541. /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
  542. /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
  543. /package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +0 -0
  544. /package/src/internal/{object → Obj}/index.ts +0 -0
  545. /package/src/internal/{object → Obj}/schema-validator.test.ts +0 -0
  546. /package/src/internal/{ref → Ref}/index.ts +0 -0
  547. /package/src/internal/{schema → Type}/index.ts +0 -0
  548. /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
  549. /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
  550. /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
  551. /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
  552. /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
  553. /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
  554. /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
  555. /package/src/internal/{types → common/types}/base.ts +0 -0
  556. /package/src/internal/{types → common/types}/typename.ts +0 -0
  557. /package/src/internal/{types → common/types}/version.ts +0 -0
@@ -1,21 +1,27 @@
1
1
  import {
2
+ Feed,
2
3
  getQueueDxn
3
- } from "./chunk-GFNCSK7F.mjs";
4
+ } from "./chunk-KBZ4RAXR.mjs";
4
5
  import {
5
6
  everything,
6
7
  is,
7
8
  props,
8
9
  type
9
- } from "./chunk-ALOGSVBP.mjs";
10
+ } from "./chunk-PHOHAIEE.mjs";
10
11
  import {
11
- getTypename
12
- } from "./chunk-KGV3QIRX.mjs";
12
+ getDXN,
13
+ getTypename,
14
+ instanceOf
15
+ } from "./chunk-W7U2XGZ3.mjs";
16
+ import {
17
+ prettyQuery
18
+ } from "./chunk-ZVQ26DCR.mjs";
13
19
  import {
14
20
  isDatabase
15
- } from "./chunk-5ELDDYWE.mjs";
21
+ } from "./chunk-I2DARWPX.mjs";
16
22
  import {
17
23
  getTypeDXNFromSpecifier
18
- } from "./chunk-F7KMHDPJ.mjs";
24
+ } from "./chunk-TNBK56IN.mjs";
19
25
  import {
20
26
  __export
21
27
  } from "./chunk-J5LGTIGS.mjs";
@@ -27,6 +33,7 @@ __export(Query_exports, {
27
33
  from: () => from,
28
34
  fromAst: () => fromAst,
29
35
  is: () => is2,
36
+ pretty: () => pretty,
30
37
  select: () => select,
31
38
  type: () => type2,
32
39
  without: () => without
@@ -128,6 +135,9 @@ var QueryClass = class _QueryClass {
128
135
  });
129
136
  }
130
137
  from(arg, options) {
138
+ if (arg == null) {
139
+ throw new TypeError('Query.from() requires a valid data source argument (database, feed, query, scope, or "all-accessible-spaces").');
140
+ }
131
141
  if (is2(arg)) {
132
142
  return new _QueryClass({
133
143
  type: "from",
@@ -146,7 +156,7 @@ var QueryClass = class _QueryClass {
146
156
  _tag: "scope",
147
157
  scope: {
148
158
  ...options?.includeFeeds ? {
149
- allQueuesFromSpaces: true
159
+ allFeedsFromSpaces: true
150
160
  } : {}
151
161
  }
152
162
  }
@@ -175,7 +185,7 @@ var QueryClass = class _QueryClass {
175
185
  scope: {
176
186
  spaceIds: databases.map((db) => db.spaceId),
177
187
  ...options?.includeFeeds ? {
178
- allQueuesFromSpaces: true
188
+ allFeedsFromSpaces: true
179
189
  } : {}
180
190
  }
181
191
  }
@@ -183,19 +193,25 @@ var QueryClass = class _QueryClass {
183
193
  }
184
194
  if (items.length > 0) {
185
195
  const typename = getTypename(items[0]);
186
- if (typename === "dxos.org/type/View") {
196
+ if (typename === "org.dxos.type.view") {
187
197
  throw new Error("Query.from(view) is not yet supported.");
188
198
  }
189
- if (typename === "dxos.org/type/Collection") {
199
+ if (typename === "org.dxos.type.collection") {
190
200
  throw new Error("Query.from(collection) is not yet supported.");
191
201
  }
202
+ for (const item of items) {
203
+ if (!instanceOf(Feed, item)) {
204
+ throw new TypeError(`Query.from() expects Feed objects (org.dxos.type.feed), but received an object with typename '${typename ?? "unknown"}'.`);
205
+ }
206
+ }
192
207
  }
193
- const feeds = items;
194
- const queueDxns = feeds.flatMap((feed) => {
208
+ const feedItems = items;
209
+ const feedDXNs = feedItems.map((feed) => {
195
210
  const dxn = getQueueDxn(feed);
196
- return dxn ? [
197
- dxn.toString()
198
- ] : [];
211
+ if (!dxn) {
212
+ throw new TypeError(`Query.from() expects persisted Feed objects with a queue DXN; got feed without a space (id=${getDXN(feed).toString()}).`);
213
+ }
214
+ return dxn.toString();
199
215
  });
200
216
  return new _QueryClass({
201
217
  type: "from",
@@ -203,7 +219,7 @@ var QueryClass = class _QueryClass {
203
219
  from: {
204
220
  _tag: "scope",
205
221
  scope: {
206
- queues: queueDxns
222
+ feeds: feedDXNs
207
223
  }
208
224
  }
209
225
  });
@@ -215,6 +231,25 @@ var QueryClass = class _QueryClass {
215
231
  options
216
232
  });
217
233
  }
234
+ debugLabel(label) {
235
+ if (this.ast.type === "options") {
236
+ return new _QueryClass({
237
+ type: "options",
238
+ query: this.ast.query,
239
+ options: {
240
+ ...this.ast.options,
241
+ debugLabel: label
242
+ }
243
+ });
244
+ }
245
+ return new _QueryClass({
246
+ type: "options",
247
+ query: this.ast,
248
+ options: {
249
+ debugLabel: label
250
+ }
251
+ });
252
+ }
218
253
  };
219
254
  var is2 = (value) => {
220
255
  return typeof value === "object" && value !== null && "~Query" in value;
@@ -260,8 +295,8 @@ var from = (source, options) => {
260
295
  };
261
296
  var SCOPE_KEYS = /* @__PURE__ */ new Set([
262
297
  "spaceIds",
263
- "queues",
264
- "allQueuesFromSpaces"
298
+ "feeds",
299
+ "allFeedsFromSpaces"
265
300
  ]);
266
301
  var _isScope = (value) => {
267
302
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
@@ -269,6 +304,7 @@ var _isScope = (value) => {
269
304
  }
270
305
  return Object.keys(value).every((key) => SCOPE_KEYS.has(key));
271
306
  };
307
+ var pretty = (query) => prettyQuery(query.ast);
272
308
 
273
309
  export {
274
310
  is2 as is,
@@ -278,6 +314,7 @@ export {
278
314
  all,
279
315
  without,
280
316
  from,
317
+ pretty,
281
318
  Query_exports
282
319
  };
283
- //# sourceMappingURL=chunk-AQP4QKYP.mjs.map
320
+ //# sourceMappingURL=chunk-SRX3EZY3.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Query.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type * as EffectArray from 'effect/Array';\nimport type * as Schema from 'effect/Schema';\n\nimport { type QueryAST } from '@dxos/echo-protocol';\n\nimport type * as Collection from './Collection';\nimport * as Database from './Database';\nimport type * as Dataset from './Dataset';\nimport * as Feed from './Feed';\nimport * as Filter from './Filter';\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport type * as Order from './Order';\nimport type * as Ref from './Ref';\nimport type * as Relation from './Relation';\nimport type * as View from './View';\n\n// TODO(dmaretskyi): Split up into interfaces for objects and relations so they can have separate verbs.\n// TODO(dmaretskyi): Undirected relation traversals.\n// TODO(wittjosiah): Make Filter & Query pipeable.\n\n/**\n * All property paths inside T that are references.\n */\n// TODO(dmaretskyi): Filter only properties that are references (or optional references, or unions that include references).\ntype RefPropKey<T> = keyof T & string;\n\n// TODO(burdon): Narrow T to Entity.Unknown?\nexport interface Query<T> {\n // TODO(dmaretskyi): See new effect-schema approach to variance.\n '~Query': { value: T };\n\n ast: QueryAST.Query;\n\n /**\n * Filter the current selection based on a filter.\n * @param filter - Filter to select the objects.\n * @returns Query for the selected objects.\n */\n 'select'(filter: Filter.Filter<T>): Query<T>;\n 'select'(props: Filter.Props<T>): Query<T>;\n\n /**\n * Traverse an outgoing reference.\n * @param key - Property path inside T that is a reference or optional reference.\n * @returns Query for the target of the reference.\n */\n 'reference'<K extends RefPropKey<T>>(\n key: K,\n ): Query<\n T[K] extends Ref.Unknown\n ? Ref.Target<T[K]>\n : T[K] extends Ref.Unknown | undefined\n ? Ref.Target<Exclude<T[K], undefined>>\n : never\n >;\n\n /**\n * Find objects referencing this object.\n * @param target - Schema of the referencing object. If not provided, matches any type.\n * @param key - Property path inside the referencing object that is a reference. If not provided, matches any property.\n * @returns Query for the referencing objects.\n */\n // TODO(dmaretskyi): any way to enforce `Ref.Target<Schema.Schema.Type<S>[key]> == T`?\n // TODO(dmaretskyi): Ability to go through arrays of references.\n 'referencedBy'<S extends Schema.Schema.All>(\n target: S | string,\n key: RefPropKey<Schema.Schema.Type<S>>,\n ): Query<Schema.Schema.Type<S>>;\n 'referencedBy'<S extends Schema.Schema.All>(target: S | string): Query<Schema.Schema.Type<S>>;\n 'referencedBy'(): Query<any>;\n\n /**\n * Find relations where this object is the source.\n * @returns Query for the relation objects.\n * @param relation - Schema of the relation.\n * @param predicates - Predicates to filter the relation objects.\n */\n 'sourceOf'<S extends Schema.Schema.All>(\n relation?: S | string,\n predicates?: Filter.Props<Schema.Schema.Type<S>>,\n ): Query<Schema.Schema.Type<S>>;\n\n /**\n * Find relations where this object is the target.\n * @returns Query for the relation objects.\n * @param relation - Schema of the relation.\n * @param predicates - Predicates to filter the relation objects.\n */\n 'targetOf'<S extends Schema.Schema.All>(\n relation?: S | string,\n predicates?: Filter.Props<Schema.Schema.Type<S>>,\n ): Query<Schema.Schema.Type<S>>;\n\n /**\n * For a query for relations, get the source objects.\n * @returns Query for the source objects.\n */\n 'source'(): Query<Relation.SourceOf<T>>;\n\n /**\n * For a query for relations, get the target objects.\n * @returns Query for the target objects.\n */\n 'target'(): Query<Relation.TargetOf<T>>;\n\n /**\n * Get the parent object of the current selection.\n * @returns Query for the parent objects.\n */\n 'parent'(): Query<any>;\n\n /**\n * Get all child objects of the current selection.\n * @returns Query for the child objects.\n */\n 'children'(): Query<any>;\n\n /**\n * Order the query results.\n * Orders are specified in priority order. The first order will be applied first, etc.\n * @param order - Order to sort the results.\n * @returns Query for the ordered results.\n */\n 'orderBy'(...order: EffectArray.NonEmptyArray<Order.Order<T>>): Query<T>;\n\n /**\n * Limit the number of results.\n * @param limit - Maximum number of results to return.\n * @returns Query for the limited results.\n */\n 'limit'(limit: number): Query<T>;\n\n /**\n * Query from selected databases only.\n *\n * Example:\n *\n * ```ts\n * Query.select(Filter.type(Person)).from(db);\n * ```\n *\n * @param options.includeFeeds [false] - Whether to include feeds in the query. Default is to query from automerge documents only.\n */\n 'from'(database: Database.Database | Database.Database[], options?: { includeFeeds?: boolean }): Query<T>;\n\n /**\n * Query from selected feeds only.\n *\n * Example:\n *\n * ```ts\n * Query.select(Filter.type(Person)).from(feed);\n * ```\n *\n */\n 'from'(feeds: Feed.Feed | Feed.Feed[]): Query<T>;\n\n /**\n * Query from all accessible spaces.\n *\n * Example:\n *\n * ```ts\n * Query.select(Filter.type(Person)).from('all-accessible-spaces');\n * ```\n *\n * @param options.includeFeeds [false] - Whether to include feeds in the query. Default is to query from automerge documents only.\n */\n 'from'(allSpaces: 'all-accessible-spaces', options?: { includeFeeds?: boolean }): Query<T>;\n\n /**\n * Query from a dataset.\n * Currently only feeds are supported.\n *\n * Example:\n *\n * ```ts\n * Query.type(Person).from(feed);\n * ```\n */\n 'from'(dataset: Dataset.Dataset): Query<T>;\n\n /**\n * Query from the results of another query.\n *\n * Example:\n *\n * ```ts\n * Query.select(Filter.props({ foo: 'foo' })).from(Query.select(Filter.type(Contact)).reference('org'));\n * ```\n */\n 'from'(query: Any): Query<T>;\n\n /**\n * Query from a raw scope specification.\n */\n 'from'(scope: QueryAST.Scope): Query<T>;\n\n /**\n * Add options to a query.\n */\n 'options'(options: QueryAST.QueryOptions): Query<T>;\n\n /**\n * Attach a diagnostic label for logs and tooling (execution semantics unchanged).\n */\n 'debugLabel'(label: string): Query<T>;\n}\n\nexport type Any = Query<any>;\n\nexport type Type<Q extends Any> = Q extends Query<infer T> ? T : never;\n\nclass QueryClass implements Any {\n private static 'variance': Any['~Query'] = {} as Any['~Query'];\n\n constructor(public readonly ast: QueryAST.Query) {}\n\n '~Query' = QueryClass.variance;\n\n select(filter: Filter.Any | Filter.Props<any>): Any {\n if (Filter.is(filter)) {\n return new QueryClass({\n type: 'filter',\n selection: this.ast,\n filter: filter.ast,\n });\n } else {\n return new QueryClass({\n type: 'filter',\n selection: this.ast,\n filter: Filter.props(filter).ast,\n });\n }\n }\n\n reference(key: string): Any {\n return new QueryClass({\n type: 'reference-traversal',\n anchor: this.ast,\n property: key,\n });\n }\n\n referencedBy(target?: Schema.Schema.All | string, key?: string): Any {\n const dxn = target !== undefined ? internal.getTypeDXNFromSpecifier(target) : null;\n return new QueryClass({\n type: 'incoming-references',\n anchor: this.ast,\n property: key ?? null,\n typename: dxn?.toString() ?? null,\n });\n }\n\n sourceOf(relation?: Schema.Schema.All | string, predicates?: Filter.Props<unknown> | undefined): Any {\n return new QueryClass({\n type: 'relation',\n anchor: this.ast,\n direction: 'outgoing',\n filter: relation !== undefined ? Filter.type(relation, predicates).ast : undefined,\n });\n }\n\n targetOf(relation?: Schema.Schema.All | string, predicates?: Filter.Props<unknown> | undefined): Any {\n return new QueryClass({\n type: 'relation',\n anchor: this.ast,\n direction: 'incoming',\n filter: relation !== undefined ? Filter.type(relation, predicates).ast : undefined,\n });\n }\n\n source(): Any {\n return new QueryClass({\n type: 'relation-traversal',\n anchor: this.ast,\n direction: 'source',\n });\n }\n\n target(): Any {\n return new QueryClass({\n type: 'relation-traversal',\n anchor: this.ast,\n direction: 'target',\n });\n }\n\n parent(): Any {\n return new QueryClass({\n type: 'hierarchy-traversal',\n anchor: this.ast,\n direction: 'to-parent',\n });\n }\n\n children(): Any {\n return new QueryClass({\n type: 'hierarchy-traversal',\n anchor: this.ast,\n direction: 'to-children',\n });\n }\n\n orderBy(...order: Order.Order<any>[]): Any {\n return new QueryClass({\n type: 'order',\n query: this.ast,\n order: order.map((o) => o.ast),\n });\n }\n\n limit(limit: number): Any {\n return new QueryClass({\n type: 'limit',\n query: this.ast,\n limit,\n });\n }\n\n from(\n arg:\n | Database.Database\n | Database.Database[]\n | Feed.Feed\n | Feed.Feed[]\n | Collection.Collection\n | View.View\n | Any\n | QueryAST.Scope\n | 'all-accessible-spaces',\n options?: { includeFeeds?: boolean },\n ): Any {\n if (arg == null) {\n throw new TypeError(\n 'Query.from() requires a valid data source argument (database, feed, query, scope, or \"all-accessible-spaces\").',\n );\n }\n\n if (is(arg)) {\n return new QueryClass({\n type: 'from',\n query: this.ast,\n from: { _tag: 'query', query: arg.ast },\n });\n }\n\n if (arg === 'all-accessible-spaces') {\n return new QueryClass({\n type: 'from',\n query: this.ast,\n from: {\n _tag: 'scope',\n scope: {\n ...(options?.includeFeeds ? { allFeedsFromSpaces: true } : {}),\n },\n },\n });\n }\n\n if (_isScope(arg)) {\n return new QueryClass({\n type: 'from',\n query: this.ast,\n from: { _tag: 'scope', scope: arg },\n });\n }\n\n const items = Array.isArray(arg) ? arg : [arg];\n\n if (items.length > 0 && Database.isDatabase(items[0])) {\n const databases = items as Database.Database[];\n return new QueryClass({\n type: 'from',\n query: this.ast,\n from: {\n _tag: 'scope',\n scope: {\n spaceIds: databases.map((db) => db.spaceId),\n ...(options?.includeFeeds ? { allFeedsFromSpaces: true } : {}),\n },\n },\n });\n }\n\n if (items.length > 0) {\n const typename = Obj.getTypename(items[0] as Obj.Unknown);\n // TODO(dmaretskyi): Support querying from views.\n if (typename === 'org.dxos.type.view') {\n throw new Error('Query.from(view) is not yet supported.');\n }\n // TODO(dmaretskyi): Support querying from collections.\n if (typename === 'org.dxos.type.collection') {\n throw new Error('Query.from(collection) is not yet supported.');\n }\n // Validate that the items are Feed.Feed instances.\n for (const item of items) {\n if (!Obj.instanceOf(Feed.Feed, item)) {\n throw new TypeError(\n `Query.from() expects Feed objects (org.dxos.type.feed), but received an object with typename '${typename ?? 'unknown'}'.`,\n );\n }\n }\n }\n\n const feedItems = items as Feed.Feed[];\n const feedDXNs = feedItems.map((feed) => {\n const dxn = Feed.getQueueDxn(feed);\n if (!dxn) {\n throw new TypeError(\n `Query.from() expects persisted Feed objects with a queue DXN; got feed without a space (id=${Obj.getDXN(feed).toString()}).`,\n );\n }\n return dxn.toString();\n });\n return new QueryClass({\n type: 'from',\n query: this.ast,\n from: {\n _tag: 'scope',\n scope: {\n feeds: feedDXNs,\n },\n },\n });\n }\n\n options(options: QueryAST.QueryOptions): Any {\n return new QueryClass({\n type: 'options',\n query: this.ast,\n options,\n });\n }\n\n debugLabel(label: string): Any {\n if (this.ast.type === 'options') {\n return new QueryClass({\n type: 'options',\n query: this.ast.query,\n options: { ...this.ast.options, debugLabel: label },\n });\n }\n return new QueryClass({\n type: 'options',\n query: this.ast,\n options: { debugLabel: label },\n });\n }\n}\n\nexport const is = (value: unknown): value is Any => {\n return typeof value === 'object' && value !== null && '~Query' in value;\n};\n\n/** Construct a query from an ast. */\nexport const fromAst = (ast: QueryAST.Query): Any => {\n return new QueryClass(ast);\n};\n\n/**\n * Select objects based on a filter.\n * @param filter - Filter to select the objects.\n * @returns Query for the selected objects.\n */\nexport const select = <F extends Filter.Any>(filter: F): Query<Filter.Type<F>> => {\n return new QueryClass({\n type: 'select',\n filter: filter.ast,\n });\n};\n\n/**\n * Query for objects of a given schema.\n * @param schema - Schema of the objects.\n * @param predicates - Predicates to filter the objects.\n * @returns Query for the objects.\n *\n * Shorthand for: `Query.select(Filter.type(schema, predicates))`.\n */\nexport const type: {\n <S extends Schema.Schema.All>(\n schema: S,\n predicates?: Filter.Props<Schema.Schema.Type<S>>,\n ): Query<Schema.Schema.Type<S>>;\n (schema: string, predicates?: Filter.Props<unknown>): Query<any>;\n} = (schema: Schema.Schema.All | string, predicates?: Filter.Props<unknown>): Any => {\n return new QueryClass({\n type: 'select',\n filter: Filter.type(schema, predicates).ast,\n });\n};\n\n/**\n * Combine results of multiple queries.\n * @param queries - Queries to combine.\n * @returns Query for the combined results.\n */\n// TODO(dmaretskyi): Rename to `combine` or `union`.\nexport const all = (...queries: Any[]): Any => {\n if (queries.length === 0) {\n throw new TypeError(\n 'Query.all combines results of multiple queries, to query all objects use Query.select(Filter.everything())',\n );\n }\n return new QueryClass({\n type: 'union',\n queries: queries.map((q) => q.ast),\n });\n};\n\n/**\n * Subtract one query from another.\n * @param source - Query to subtract from.\n * @param exclude - Query to subtract.\n * @returns Query for the results of the source query minus the results of the exclude query.\n */\nexport const without = <T>(source: Query<T>, exclude: Query<T>): Query<T> => {\n return new QueryClass({\n type: 'set-difference',\n source: source.ast,\n exclude: exclude.ast,\n });\n};\n\n/**\n * Create a query scoped to a data source.\n * The returned query selects everything from the source; chain `.select()` to narrow results.\n *\n * @param source - Data source: database, feed, 'all-accessible-spaces', or another query.\n * @returns Query scoped to the given source.\n */\nexport const from = (\n source:\n | Database.Database\n | Database.Database[]\n | Feed.Feed\n | Feed.Feed[]\n | Any\n | QueryAST.Scope\n | 'all-accessible-spaces',\n options?: { includeFeeds?: boolean },\n): Any => {\n const baseQuery: QueryAST.Query = {\n type: 'select',\n filter: Filter.everything().ast,\n };\n const wrapper = new QueryClass(baseQuery);\n return wrapper.from(source as any, options);\n};\n\nconst SCOPE_KEYS = new Set(['spaceIds', 'feeds', 'allFeedsFromSpaces']);\n\n/** Detect a raw Scope object (plain object with only Scope-valid keys). */\nconst _isScope = (value: unknown): value is QueryAST.Scope => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return false;\n }\n return Object.keys(value).every((key) => SCOPE_KEYS.has(key));\n};\n\n/**\n * Returns a human-readable string representation of a Query AST.\n */\nexport const pretty = (query: Any): string => internal.prettyQuery(query.ast);\n"],
5
+ "mappings": "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",
6
+ "names": ["is", "type", "QueryClass", "ast", "variance", "select", "filter", "is", "type", "selection", "props", "reference", "key", "anchor", "property", "referencedBy", "target", "dxn", "undefined", "getTypeDXNFromSpecifier", "typename", "toString", "sourceOf", "relation", "predicates", "direction", "targetOf", "source", "parent", "children", "orderBy", "order", "query", "map", "o", "limit", "from", "arg", "options", "TypeError", "_tag", "scope", "includeFeeds", "allFeedsFromSpaces", "_isScope", "items", "Array", "isArray", "length", "isDatabase", "databases", "spaceIds", "db", "spaceId", "getTypename", "Error", "item", "instanceOf", "Feed", "feedItems", "feedDXNs", "feed", "getQueueDxn", "getDXN", "feeds", "debugLabel", "label", "value", "fromAst", "schema", "all", "queries", "q", "without", "exclude", "baseQuery", "everything", "wrapper", "SCOPE_KEYS", "Set", "Object", "keys", "every", "has", "pretty", "prettyQuery"]
7
+ }
@@ -0,0 +1,36 @@
1
+ import {
2
+ getSchemaDXN
3
+ } from "./chunk-TNBK56IN.mjs";
4
+ import {
5
+ __export
6
+ } from "./chunk-J5LGTIGS.mjs";
7
+
8
+ // src/Migration.ts
9
+ var Migration_exports = {};
10
+ __export(Migration_exports, {
11
+ define: () => define
12
+ });
13
+ var define = (options) => {
14
+ const fromType = getSchemaDXN(options.from);
15
+ if (!fromType) {
16
+ throw new Error("Invalid from schema");
17
+ }
18
+ const toType = getSchemaDXN(options.to);
19
+ if (!toType) {
20
+ throw new Error("Invalid to schema");
21
+ }
22
+ return {
23
+ fromType,
24
+ toType,
25
+ fromSchema: options.from,
26
+ toSchema: options.to,
27
+ transform: options.transform,
28
+ onMigration: options.onMigration
29
+ };
30
+ };
31
+
32
+ export {
33
+ define,
34
+ Migration_exports
35
+ };
36
+ //# sourceMappingURL=chunk-SUZMWP3Y.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Migration.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type * as Schema from 'effect/Schema';\n\nimport { type DXN } from '@dxos/keys';\n\nimport type * as Database from './Database';\nimport type * as Entity from './Entity';\nimport { getSchemaDXN } from './internal';\n\ntype DefineObjectMigrationOptions<From extends Schema.Schema.AnyNoContext, To extends Schema.Schema.AnyNoContext> = {\n from: From;\n to: To;\n /**\n * Pure function that converts the old object data to the new object data.\n */\n // TODO(dmaretskyi): `id` should not be a part of the schema.\n transform: (\n from: Schema.Schema.Type<From>,\n context: ObjectMigrationContext,\n ) => Promise<Omit<Schema.Schema.Type<To>, 'id' | Entity.KindId>>;\n\n /**\n * Callback that is called after the object is migrated. Called for every object that is migrated.\n *\n * NOTE: Database mutations performed in this callback are not guaranteed to be idempotent.\n * If multiple peers run the migration separately, the effects may be applied multiple times.\n */\n onMigration: (params: OnMigrateProps<From, To>) => Promise<void>;\n};\n\n/**\n * Context passed to object migration callbacks.\n */\nexport type ObjectMigrationContext = {\n db: Database.Database;\n};\n\ntype OnMigrateProps<From extends Schema.Schema.AnyNoContext, To extends Schema.Schema.AnyNoContext> = {\n before: Schema.Schema.Type<From>;\n object: Schema.Schema.Type<To>;\n db: Database.Database;\n};\n\n/**\n * Definition of a migration from one object schema version to another.\n */\nexport type ObjectMigration = {\n fromType: DXN;\n toType: DXN;\n fromSchema: Schema.Schema.AnyNoContext;\n toSchema: Schema.Schema.AnyNoContext;\n transform: (from: unknown, context: ObjectMigrationContext) => Promise<unknown>;\n onMigration: (params: OnMigrateProps<any, any>) => Promise<void>;\n};\n\n/**\n * Define a migration between two object schemas.\n *\n * @example\n * ```ts\n * const migration = Migration.define({\n * from: ContactV1,\n * to: ContactV2,\n * transform: async (from) => ({ name: `${from.firstName} ${from.lastName}` }),\n * onMigration: async () => {},\n * });\n * ```\n */\nexport const define = <From extends Schema.Schema.AnyNoContext, To extends Schema.Schema.AnyNoContext>(\n options: DefineObjectMigrationOptions<From, To>,\n): ObjectMigration => {\n const fromType = getSchemaDXN(options.from);\n if (!fromType) {\n throw new Error('Invalid from schema');\n }\n const toType = getSchemaDXN(options.to);\n if (!toType) {\n throw new Error('Invalid to schema');\n }\n\n return {\n fromType,\n toType,\n fromSchema: options.from,\n toSchema: options.to,\n transform: options.transform as any,\n onMigration: options.onMigration as any,\n };\n};\n"],
5
+ "mappings": ";;;;;;;;AAAA;;;;AAyEO,IAAMA,SAAS,CACpBC,YAAAA;AAEA,QAAMC,WAAWC,aAAaF,QAAQG,IAAI;AAC1C,MAAI,CAACF,UAAU;AACb,UAAM,IAAIG,MAAM,qBAAA;EAClB;AACA,QAAMC,SAASH,aAAaF,QAAQM,EAAE;AACtC,MAAI,CAACD,QAAQ;AACX,UAAM,IAAID,MAAM,mBAAA;EAClB;AAEA,SAAO;IACLH;IACAI;IACAE,YAAYP,QAAQG;IACpBK,UAAUR,QAAQM;IAClBG,WAAWT,QAAQS;IACnBC,aAAaV,QAAQU;EACvB;AACF;",
6
+ "names": ["define", "options", "fromType", "getSchemaDXN", "from", "Error", "toType", "to", "fromSchema", "toSchema", "transform", "onMigration"]
7
+ }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  EntityKind,
3
3
  createAnnotationHelper
4
- } from "./chunk-4KG6IGL4.mjs";
4
+ } from "./chunk-N4B7FHQT.mjs";
5
5
 
6
- // src/internal/types/typename.ts
6
+ // src/internal/common/types/typename.ts
7
7
  var ATTR_TYPE = "@type";
8
8
  var TypeId = /* @__PURE__ */ Symbol.for("@dxos/echo/Type");
9
9
  var SchemaId = /* @__PURE__ */ Symbol.for("@dxos/echo/Schema");
@@ -23,7 +23,7 @@ var setSchema = (obj, schema) => {
23
23
  });
24
24
  };
25
25
 
26
- // src/internal/annotations/annotations.ts
26
+ // src/internal/Annotation/annotations.ts
27
27
  import * as Function from "effect/Function";
28
28
  import * as Option from "effect/Option";
29
29
  import * as Schema from "effect/Schema";
@@ -32,7 +32,7 @@ import { raise } from "@dxos/debug";
32
32
  import { getField } from "@dxos/effect";
33
33
  import { assertArgument, invariant } from "@dxos/invariant";
34
34
  import { DXN } from "@dxos/keys";
35
- 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";
36
36
  var FIELD_PATH_ANNOTATION = "path";
37
37
  var FieldPath = (path) => PropertyMeta(FIELD_PATH_ANNOTATION, path);
38
38
  var TypeIdentifierAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/TypeIdentifier");
@@ -58,9 +58,9 @@ var getTypeDXNFromSpecifier = (input) => {
58
58
  return DXN.fromTypename(input);
59
59
  }
60
60
  };
61
- var TypenameSchema = Schema.String.pipe(Schema.pattern(/^[a-zA-Z]\w+\.[a-zA-Z]\w{1,}\/[\w/_-]+$/)).annotations({
62
- description: "Fully qualified globally unique typename",
63
- example: "dxos.org/type/Message"
61
+ var TypenameSchema = Schema.String.pipe(Schema.pattern(/^[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(\.[a-zA-Z]([a-zA-Z0-9]{0,62})?)$/)).annotations({
62
+ description: "Fully qualified globally unique typename in reverse-DNS form.",
63
+ example: "org.dxos.type.message"
64
64
  });
65
65
  var VersionSchema = Schema.String.pipe(Schema.pattern(/^\d+.\d+.\d+$/)).annotations({
66
66
  description: "Semantic version format: `major.minor.patch`",
@@ -101,15 +101,7 @@ var getTypename = (obj) => {
101
101
  }
102
102
  };
103
103
  var setTypename = (obj, typename) => {
104
- invariant(typename instanceof DXN, "Invalid type.", {
105
- F: __dxlog_file,
106
- L: 198,
107
- S: void 0,
108
- A: [
109
- "typename instanceof DXN",
110
- "'Invalid type.'"
111
- ]
112
- });
104
+ invariant(typename instanceof DXN, "Invalid type.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 136, S: void 0, A: ["typename instanceof DXN", "'Invalid type.'"] });
113
105
  Object.defineProperty(obj, TypeId, {
114
106
  value: typename,
115
107
  writable: false,
@@ -125,15 +117,7 @@ var getTypeDXN = (obj) => {
125
117
  if (!type) {
126
118
  return void 0;
127
119
  }
128
- invariant(type instanceof DXN, "Invalid object.", {
129
- F: __dxlog_file,
130
- L: 225,
131
- S: void 0,
132
- A: [
133
- "type instanceof DXN",
134
- "'Invalid object.'"
135
- ]
136
- });
120
+ invariant(type instanceof DXN, "Invalid object.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 159, S: void 0, A: ["type instanceof DXN", "'Invalid object.'"] });
137
121
  return type;
138
122
  };
139
123
  var isInstanceOf = (schema, object) => {
@@ -186,7 +170,13 @@ var getLabelWithSchema = (schema, object) => {
186
170
  assertArgument(typeof accessor === "string", "accessor", "Label annotation must be a string or an array of strings");
187
171
  const value = getField(object, accessor);
188
172
  switch (typeof value) {
189
- case "string":
173
+ case "string": {
174
+ const trimmed = value.trim();
175
+ if (trimmed.length > 0) {
176
+ return value;
177
+ }
178
+ continue;
179
+ }
190
180
  case "number":
191
181
  case "boolean":
192
182
  case "bigint":
@@ -234,8 +224,8 @@ var FieldLookupAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotatio
234
224
  var GeneratorAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/Generator");
235
225
  var GeneratorAnnotation = createAnnotationHelper(GeneratorAnnotationId);
236
226
  var makeUserAnnotation = (props) => {
237
- assertArgument(/[a-zA-Z0-9]+\.[a-zA-Z.]+\/[a-zA-Z/]+/.test(props.id), "id", "Annotation id must be in the FQN format (dxos.org/annotation/Example).");
238
- const getFromAst = (ast) => SchemaAST.getAnnotation(PropertyMetaAnnotationId)(ast).pipe(Option.map((meta) => meta[props.id]), Option.map(Schema.decodeUnknownSync(props.schema)));
227
+ 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).");
228
+ const getFromAst = (ast) => SchemaAST.getAnnotation(PropertyMetaAnnotationId)(ast).pipe(Option.flatMap((meta) => Option.fromNullable(meta[props.id])), Option.map(Schema.decodeUnknownSync(props.schema)));
239
229
  return {
240
230
  get: (schema) => getFromAst(schema.ast),
241
231
  getFromAst: (ast) => getFromAst(ast),
@@ -269,9 +259,37 @@ var IconAnnotationSchema = Schema.Struct({
269
259
  hue: Schema.optional(Schema.String)
270
260
  });
271
261
  var IconAnnotation = makeUserAnnotation({
272
- id: "dxos.org/annotation/Icon",
262
+ id: "org.dxos.annotation.icon",
273
263
  schema: IconAnnotationSchema
274
264
  });
265
+ var IconFromRefAnnotation = makeUserAnnotation({
266
+ id: "org.dxos.annotation.icon.from-ref",
267
+ schema: Schema.String
268
+ });
269
+ var getLabel = (entity) => {
270
+ const schema = getSchema(entity);
271
+ if (schema != null) {
272
+ return getLabelWithSchema(schema, entity);
273
+ }
274
+ };
275
+ var setLabel = (entity, label) => {
276
+ const schema = getSchema(entity);
277
+ if (schema != null) {
278
+ setLabelWithSchema(schema, entity, label);
279
+ }
280
+ };
281
+ var getDescription = (entity) => {
282
+ const schema = getSchema(entity);
283
+ if (schema != null) {
284
+ return getDescriptionWithSchema(schema, entity);
285
+ }
286
+ };
287
+ var setDescription = (entity, description) => {
288
+ const schema = getSchema(entity);
289
+ if (schema != null) {
290
+ setDescriptionWithSchema(schema, entity, description);
291
+ }
292
+ };
275
293
 
276
294
  export {
277
295
  ATTR_TYPE,
@@ -322,6 +340,11 @@ export {
322
340
  GeneratorAnnotationId,
323
341
  GeneratorAnnotation,
324
342
  makeUserAnnotation,
325
- IconAnnotation
343
+ IconAnnotation,
344
+ IconFromRefAnnotation,
345
+ getLabel,
346
+ setLabel,
347
+ getDescription,
348
+ setDescription
326
349
  };
327
- //# sourceMappingURL=chunk-F7KMHDPJ.mjs.map
350
+ //# sourceMappingURL=chunk-TNBK56IN.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';\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(wittjosiah): Factor out to DXN spec.\nexport const TypenameSchema = Schema.String.pipe(\n Schema.pattern(\n /^[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(\\.[a-zA-Z]([a-zA-Z0-9]{0,62})?)$/,\n ),\n).annotations({\n description: 'Fully qualified globally unique typename in reverse-DNS form.',\n example: 'org.dxos.type.message',\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 * Skips empty strings and whitespace-only strings, continuing to the next field.\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 const trimmed = value.trim();\n if (trimmed.length > 0) {\n return value;\n }\n continue;\n }\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 */\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.flatMap((meta) => Option.fromNullable(meta[props.id])),\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 * Indicates that this entity's icon should be resolved from a property whose value is a `Ref`\n * to another entity. Consumers (e.g. graph node builders) resolve the ref target and use that\n * target's schema `IconAnnotation` in place of the static one declared on this schema.\n *\n * Useful for wrapper schemas that delegate their visual identity to a referenced sub-entity\n * (e.g. a generic `Game` whose icon should come from its `variant` ref's typed state).\n */\nexport const IconFromRefAnnotation = makeUserAnnotation<string>({\n id: 'org.dxos.annotation.icon.from-ref',\n schema: Schema.String,\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.update or Relation.update 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.update or Relation.update 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", "id", "getTypeIdentifierAnnotation", "DXN", "undefined", "fromTypenameAndVersion", "getSchemaDXN", "raise", "TypeError", "assertArgument", "input", "fromTypename", "example", "TypeMeta", "version", "VersionSchema", "Function", "getAnnotation", "schema", "getSchemaTypename", "type", "obj", "Object", "defineProperty", "TypeId", "value", "typename", "writable", "enumerable", "configurable", "invariant", "schemaDXN", "Error", "getTypeDXN", "object", "typeDXN", "existingMeta", "self", "ast", "annotations", "PropertyMetaAnnotationId", "getField", "annotation", "label", "accessor", "description", "makeUserAnnotation", "props", "getFromAst", "SchemaAST", "get", "set", "PropertyMeta", "IconAnnotationSchema", "Schema", "getLabelWithSchema", "setLabelWithSchema", "entity", "getDescriptionWithSchema", "setDescriptionWithSchema"]
7
+ }
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  createAnnotationHelper
3
- } from "./chunk-4KG6IGL4.mjs";
3
+ } from "./chunk-N4B7FHQT.mjs";
4
4
 
5
- // src/internal/formats/types.ts
5
+ // src/internal/Format/types.ts
6
6
  import * as Function from "effect/Function";
7
7
  import * as Option from "effect/Option";
8
8
  import * as SchemaAST from "effect/SchemaAST";
@@ -107,7 +107,7 @@ var OptionsAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/Op
107
107
  var OptionsAnnotation = createAnnotationHelper(OptionsAnnotationId);
108
108
  var getOptionsAnnotation = (node) => Function.pipe(SchemaAST.getAnnotation(OptionsAnnotationId)(node), Option.getOrUndefined);
109
109
 
110
- // src/internal/formats/number.ts
110
+ // src/internal/Format/number.ts
111
111
  import * as Schema from "effect/Schema";
112
112
  var encodeMultipleOf = (divisor) => 1 / Math.pow(10, divisor);
113
113
  var encodeMultiple = (divisor) => (self) => divisor === void 0 || divisor === 0 ? self : self.pipe(Schema.multipleOf(encodeMultipleOf(divisor)));
@@ -143,7 +143,7 @@ var Timestamp = Schema.Number.pipe(FormatAnnotation.set(TypeFormat.Timestamp), S
143
143
  description: "Unix timestamp"
144
144
  }));
145
145
 
146
- // src/internal/formats/object.ts
146
+ // src/internal/Format/object.ts
147
147
  import * as Schema2 from "effect/Schema";
148
148
  import { clamp as clamp2 } from "@dxos/util";
149
149
  var GeoPoint = Schema2.Tuple(Schema2.Number.pipe(Schema2.annotations({
@@ -188,7 +188,7 @@ var GeoPoint = Schema2.Tuple(Schema2.Number.pipe(Schema2.annotations({
188
188
  })(GeoLocation || (GeoLocation = {}));
189
189
  var GeoLocation;
190
190
 
191
- // src/internal/formats/string.ts
191
+ // src/internal/Format/string.ts
192
192
  import * as Schema3 from "effect/Schema";
193
193
  import * as SchemaAST2 from "effect/SchemaAST";
194
194
  var Email = Schema3.String.pipe(Schema3.pattern(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/), FormatAnnotation.set(TypeFormat.Email), Schema3.annotations({
@@ -211,11 +211,11 @@ var UUID2 = Schema3.UUID.pipe(FormatAnnotation.set(TypeFormat.UUID), Schema3.ann
211
211
  ]
212
212
  }));
213
213
 
214
- // src/internal/formats/format.ts
214
+ // src/internal/Format/format.ts
215
215
  import * as Schema5 from "effect/Schema";
216
216
  import * as Keys from "@dxos/keys";
217
217
 
218
- // src/internal/formats/date.ts
218
+ // src/internal/Format/date.ts
219
219
  import * as Schema4 from "effect/Schema";
220
220
  import * as SchemaAST3 from "effect/SchemaAST";
221
221
  var SimpleDate = Schema4.Struct({
@@ -334,7 +334,7 @@ var Duration = Schema4.String.pipe(FormatAnnotation.set(TypeFormat.Duration), Sc
334
334
  ]
335
335
  }));
336
336
 
337
- // src/internal/formats/format.ts
337
+ // src/internal/Format/format.ts
338
338
  (function(Format2) {
339
339
  Format2.TypeFormat = TypeFormat;
340
340
  Format2.DXN = Keys.DXN.Schema;
@@ -358,7 +358,7 @@ var Duration = Schema4.String.pipe(FormatAnnotation.set(TypeFormat.Duration), Sc
358
358
  })(Format || (Format = {}));
359
359
  var Format;
360
360
 
361
- // src/internal/formats/select.ts
361
+ // src/internal/Format/select.ts
362
362
  import * as Schema6 from "effect/Schema";
363
363
  var SelectOption = Schema6.Struct({
364
364
  /** Stable identifier for the option. */
@@ -399,4 +399,4 @@ export {
399
399
  Format,
400
400
  SelectOption
401
401
  };
402
- //# sourceMappingURL=chunk-M2KVTHZM.mjs.map
402
+ //# sourceMappingURL=chunk-TRPZU2HV.mjs.map