@dxos/echo 0.8.4-main.67995b8 → 0.8.4-main.6fa680abb7

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 (504) hide show
  1. package/README.md +4 -5
  2. package/dist/lib/neutral/Annotation.mjs +37 -0
  3. package/dist/lib/neutral/Database.mjs +45 -0
  4. package/dist/lib/neutral/Entity.mjs +59 -0
  5. package/dist/lib/neutral/Entity.mjs.map +7 -0
  6. package/dist/lib/neutral/Err.mjs +12 -0
  7. package/dist/lib/neutral/Err.mjs.map +7 -0
  8. package/dist/lib/neutral/Feed.mjs +46 -0
  9. package/dist/lib/neutral/Feed.mjs.map +7 -0
  10. package/dist/lib/neutral/Filter.mjs +64 -0
  11. package/dist/lib/neutral/Filter.mjs.map +7 -0
  12. package/dist/lib/neutral/Format.mjs +66 -0
  13. package/dist/lib/neutral/Format.mjs.map +7 -0
  14. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  15. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  16. package/dist/lib/neutral/Key.mjs +12 -0
  17. package/dist/lib/neutral/Key.mjs.map +7 -0
  18. package/dist/lib/neutral/Obj.mjs +110 -0
  19. package/dist/lib/neutral/Obj.mjs.map +7 -0
  20. package/dist/lib/neutral/Order.mjs +12 -0
  21. package/dist/lib/neutral/Order.mjs.map +7 -0
  22. package/dist/lib/neutral/Query.mjs +35 -0
  23. package/dist/lib/neutral/Query.mjs.map +7 -0
  24. package/dist/lib/neutral/QueryResult.mjs +2 -0
  25. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  26. package/dist/lib/neutral/Ref.mjs +24 -0
  27. package/dist/lib/neutral/Ref.mjs.map +7 -0
  28. package/dist/lib/neutral/Relation.mjs +93 -0
  29. package/dist/lib/neutral/Relation.mjs.map +7 -0
  30. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  31. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  32. package/dist/lib/neutral/Tag.mjs +28 -0
  33. package/dist/lib/neutral/Tag.mjs.map +7 -0
  34. package/dist/lib/neutral/Type.mjs +37 -0
  35. package/dist/lib/neutral/Type.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-2FK7XCDV.mjs +56 -0
  37. package/dist/lib/neutral/chunk-2FK7XCDV.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-2Z72D23W.mjs +787 -0
  39. package/dist/lib/neutral/chunk-2Z72D23W.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-35FDO7WH.mjs +396 -0
  41. package/dist/lib/neutral/chunk-35FDO7WH.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-4HWWKURH.mjs +34 -0
  43. package/dist/lib/neutral/chunk-4HWWKURH.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-7VLKWC6T.mjs +121 -0
  45. package/dist/lib/neutral/chunk-7VLKWC6T.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  47. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-B5OXLWZL.mjs +402 -0
  49. package/dist/lib/neutral/chunk-B5OXLWZL.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-BESZGRPL.mjs +299 -0
  51. package/dist/lib/neutral/chunk-BESZGRPL.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-BNCCGLJN.mjs +7 -0
  53. package/dist/lib/neutral/chunk-BNCCGLJN.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-EK7UOJ3R.mjs +45 -0
  55. package/dist/lib/neutral/chunk-EK7UOJ3R.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-ETOQXZHC.mjs +130 -0
  57. package/dist/lib/neutral/chunk-ETOQXZHC.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-EV3A23AS.mjs +283 -0
  59. package/dist/lib/neutral/chunk-EV3A23AS.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-FUGL645K.mjs +313 -0
  61. package/dist/lib/neutral/chunk-FUGL645K.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-FZO7LQO7.mjs +73 -0
  63. package/dist/lib/neutral/chunk-FZO7LQO7.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  65. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-LDHKQDXR.mjs +27 -0
  67. package/dist/lib/neutral/chunk-LDHKQDXR.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-MFJPOZDU.mjs +2709 -0
  69. package/dist/lib/neutral/chunk-MFJPOZDU.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-OENWMTE6.mjs +45 -0
  71. package/dist/lib/neutral/chunk-OENWMTE6.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  73. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-PH5RST5U.mjs +298 -0
  75. package/dist/lib/neutral/chunk-PH5RST5U.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-PKD2L7XO.mjs +152 -0
  77. package/dist/lib/neutral/chunk-PKD2L7XO.mjs.map +7 -0
  78. package/dist/lib/neutral/chunk-QLALBCSA.mjs +97 -0
  79. package/dist/lib/neutral/chunk-QLALBCSA.mjs.map +7 -0
  80. package/dist/lib/neutral/chunk-QTUBE4DR.mjs +102 -0
  81. package/dist/lib/neutral/chunk-QTUBE4DR.mjs.map +7 -0
  82. package/dist/lib/neutral/chunk-SEMVAGBM.mjs +355 -0
  83. package/dist/lib/neutral/chunk-SEMVAGBM.mjs.map +7 -0
  84. package/dist/lib/neutral/chunk-UBEZSGXY.mjs +51 -0
  85. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  86. package/dist/lib/neutral/chunk-UI6MWK5W.mjs +42 -0
  87. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  88. package/dist/lib/neutral/chunk-WYOKA6AE.mjs +67 -0
  89. package/dist/lib/neutral/chunk-WYOKA6AE.mjs.map +7 -0
  90. package/dist/lib/neutral/index.mjs +97 -0
  91. package/dist/lib/neutral/index.mjs.map +7 -0
  92. package/dist/lib/neutral/internal/index.mjs +470 -0
  93. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  94. package/dist/lib/neutral/meta.json +1 -0
  95. package/dist/lib/neutral/testing/index.mjs +373 -0
  96. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  97. package/dist/types/src/Annotation.d.ts +24 -0
  98. package/dist/types/src/Annotation.d.ts.map +1 -0
  99. package/dist/types/src/Collection.d.ts +16 -0
  100. package/dist/types/src/Collection.d.ts.map +1 -0
  101. package/dist/types/src/Database.d.ts +189 -0
  102. package/dist/types/src/Database.d.ts.map +1 -0
  103. package/dist/types/src/Dataset.d.ts +18 -0
  104. package/dist/types/src/Dataset.d.ts.map +1 -0
  105. package/dist/types/src/Entity.d.ts +168 -0
  106. package/dist/types/src/Entity.d.ts.map +1 -0
  107. package/dist/types/src/Entity.test.d.ts +2 -0
  108. package/dist/types/src/Entity.test.d.ts.map +1 -0
  109. package/dist/types/src/Err.d.ts +107 -0
  110. package/dist/types/src/Err.d.ts.map +1 -0
  111. package/dist/types/src/Feed.d.ts +165 -0
  112. package/dist/types/src/Feed.d.ts.map +1 -0
  113. package/dist/types/src/Filter.d.ts +120 -0
  114. package/dist/types/src/Filter.d.ts.map +1 -0
  115. package/dist/types/src/Format.d.ts +4 -0
  116. package/dist/types/src/Format.d.ts.map +1 -0
  117. package/dist/types/src/Hypergraph.d.ts +60 -0
  118. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  119. package/dist/types/src/JsonSchema.d.ts +16 -0
  120. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  121. package/dist/types/src/Key.d.ts +1 -0
  122. package/dist/types/src/Key.d.ts.map +1 -1
  123. package/dist/types/src/Obj.d.ts +457 -35
  124. package/dist/types/src/Obj.d.ts.map +1 -1
  125. package/dist/types/src/Obj.test.d.ts +2 -0
  126. package/dist/types/src/Obj.test.d.ts.map +1 -0
  127. package/dist/types/src/Order.d.ts +16 -0
  128. package/dist/types/src/Order.d.ts.map +1 -0
  129. package/dist/types/src/Query.d.ts +202 -0
  130. package/dist/types/src/Query.d.ts.map +1 -0
  131. package/dist/types/src/Query.test.d.ts +2 -0
  132. package/dist/types/src/Query.test.d.ts.map +1 -0
  133. package/dist/types/src/QueryResult.d.ts +80 -0
  134. package/dist/types/src/QueryResult.d.ts.map +1 -0
  135. package/dist/types/src/Ref.d.ts +61 -11
  136. package/dist/types/src/Ref.d.ts.map +1 -1
  137. package/dist/types/src/Relation.d.ts +291 -21
  138. package/dist/types/src/Relation.d.ts.map +1 -1
  139. package/dist/types/src/Relation.test.d.ts +2 -0
  140. package/dist/types/src/Relation.test.d.ts.map +1 -0
  141. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  142. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  143. package/dist/types/src/Tag.d.ts +18 -0
  144. package/dist/types/src/Tag.d.ts.map +1 -0
  145. package/dist/types/src/Type.d.ts +123 -100
  146. package/dist/types/src/Type.d.ts.map +1 -1
  147. package/dist/types/src/Type.test.d.ts +2 -0
  148. package/dist/types/src/Type.test.d.ts.map +1 -0
  149. package/dist/types/src/View.d.ts +68 -0
  150. package/dist/types/src/View.d.ts.map +1 -0
  151. package/dist/types/src/hierarchy.test.d.ts +2 -0
  152. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  153. package/dist/types/src/index.d.ts +19 -3
  154. package/dist/types/src/index.d.ts.map +1 -1
  155. package/dist/types/src/internal/Annotation/annotations.d.ts +230 -0
  156. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  157. package/dist/types/src/internal/Annotation/annotations.test.d.ts +2 -0
  158. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  159. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  160. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  161. package/dist/types/src/internal/Annotation/sorting.d.ts +24 -0
  162. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  163. package/dist/types/src/internal/Annotation/util.d.ts +39 -0
  164. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  165. package/dist/types/src/internal/Entity/api.d.ts +13 -0
  166. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  167. package/dist/types/src/internal/Entity/entity.d.ts +20 -0
  168. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  169. package/dist/types/src/internal/Entity/index.d.ts +8 -0
  170. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  171. package/dist/types/src/internal/Entity/model.d.ts +55 -0
  172. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  173. package/dist/types/src/internal/Entity/object.d.ts +18 -0
  174. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  175. package/dist/types/src/internal/Entity/relation.d.ts +35 -0
  176. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  177. package/dist/types/src/internal/Entity/util.d.ts +2 -0
  178. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  179. package/dist/types/src/internal/Entity/version.d.ts +42 -0
  180. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  181. package/dist/types/src/internal/Format/date.d.ts +63 -0
  182. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  183. package/dist/types/src/internal/Format/date.test.d.ts +2 -0
  184. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  185. package/dist/types/src/internal/Format/format.d.ts +32 -0
  186. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  187. package/dist/types/src/internal/Format/format.test.d.ts +2 -0
  188. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  189. package/dist/types/src/internal/Format/index.d.ts +8 -0
  190. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  191. package/dist/types/src/internal/Format/number.d.ts +31 -0
  192. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  193. package/dist/types/src/internal/Format/object.d.ts +35 -0
  194. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  195. package/dist/types/src/internal/Format/select.d.ts +13 -0
  196. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  197. package/dist/types/src/internal/Format/string.d.ts +42 -0
  198. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  199. package/dist/types/src/internal/Format/types.d.ts +72 -0
  200. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  201. package/dist/types/src/internal/JsonSchema/annotations.d.ts +19 -0
  202. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  203. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts +2 -0
  204. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  205. package/dist/types/src/internal/JsonSchema/index.d.ts +5 -0
  206. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  207. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts +7 -0
  208. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  209. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +351 -0
  210. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  211. package/dist/types/src/internal/JsonSchema/json-schema.d.ts +30 -0
  212. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  213. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts +2 -0
  214. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  215. package/dist/types/src/internal/Obj/clone.d.ts +8 -0
  216. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  217. package/dist/types/src/internal/Obj/common.d.ts +18 -0
  218. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  219. package/dist/types/src/internal/Obj/create-object.d.ts +39 -0
  220. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  221. package/dist/types/src/internal/Obj/create-object.test.d.ts +2 -0
  222. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  223. package/dist/types/src/internal/Obj/deleted.d.ts +6 -0
  224. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  225. package/dist/types/src/internal/Obj/ids.d.ts +6 -0
  226. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  227. package/dist/types/src/internal/Obj/index.d.ts +11 -0
  228. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  229. package/dist/types/src/internal/Obj/inspect.d.ts +2 -0
  230. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  231. package/dist/types/src/internal/Obj/json-serializer.d.ts +37 -0
  232. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  233. package/dist/types/src/internal/Obj/json-serializer.test.d.ts +2 -0
  234. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  235. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  236. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  237. package/dist/types/src/internal/Obj/schema-validator.test.d.ts +2 -0
  238. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  239. package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
  240. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  241. package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
  242. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  243. package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
  244. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  245. package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
  246. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  247. package/dist/types/src/internal/Obj/typed-object.test.d.ts +2 -0
  248. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  249. package/dist/types/src/internal/Ref/index.d.ts +3 -0
  250. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  251. package/dist/types/src/internal/Ref/ref-array.d.ts +21 -0
  252. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  253. package/dist/types/src/internal/Ref/ref.d.ts +231 -0
  254. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  255. package/dist/types/src/internal/Ref/ref.test.d.ts +2 -0
  256. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  257. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  258. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  259. package/dist/types/src/internal/Type/compose.test.d.ts +2 -0
  260. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  261. package/dist/types/src/internal/Type/echo-schema.d.ts +181 -0
  262. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  263. package/dist/types/src/internal/Type/index.d.ts +4 -0
  264. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  265. package/dist/types/src/internal/Type/manipulation.d.ts +10 -0
  266. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  267. package/dist/types/src/internal/Type/persistent-schema.d.ts +20 -0
  268. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  269. package/dist/types/src/internal/common/api/index.d.ts +11 -0
  270. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  271. package/dist/types/src/internal/common/api/meta.d.ts +42 -0
  272. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  273. package/dist/types/src/internal/common/index.d.ts +4 -0
  274. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  275. package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
  276. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  277. package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -0
  278. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  279. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts +5 -0
  280. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  281. package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
  282. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  283. package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -0
  284. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  285. package/dist/types/src/internal/common/proxy/handler.test.d.ts +2 -0
  286. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  287. package/dist/types/src/internal/common/proxy/index.d.ts +14 -0
  288. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  289. package/dist/types/src/internal/common/proxy/json-serializer.d.ts +6 -0
  290. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  291. package/dist/types/src/internal/common/proxy/make-object.d.ts +14 -0
  292. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  293. package/dist/types/src/internal/common/proxy/ownership.d.ts +57 -0
  294. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  295. package/dist/types/src/internal/common/proxy/proxy-types.d.ts +18 -0
  296. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  297. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts +47 -0
  298. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  299. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
  300. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  301. package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
  302. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  303. package/dist/types/src/internal/common/proxy/schema-validator.d.ts +15 -0
  304. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  305. package/dist/types/src/internal/common/proxy/schema.test.d.ts +2 -0
  306. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  307. package/dist/types/src/internal/common/proxy/symbols.d.ts +3 -0
  308. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  309. package/dist/types/src/internal/common/proxy/typed-handler.d.ts +48 -0
  310. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  311. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts +2 -0
  312. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  313. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts +2 -0
  314. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  315. package/dist/types/src/internal/common/types/base.d.ts +27 -0
  316. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  317. package/dist/types/src/internal/common/types/entity.d.ts +37 -0
  318. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  319. package/dist/types/src/internal/common/types/index.d.ts +7 -0
  320. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  321. package/dist/types/src/internal/common/types/meta.d.ts +33 -0
  322. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  323. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  324. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  325. package/dist/types/src/internal/common/types/typename.d.ts +21 -0
  326. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  327. package/dist/types/src/internal/common/types/version.d.ts +15 -0
  328. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  329. package/dist/types/src/internal/index.d.ts +10 -0
  330. package/dist/types/src/internal/index.d.ts.map +1 -0
  331. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  332. package/dist/types/src/testing/index.d.ts +3 -1
  333. package/dist/types/src/testing/index.d.ts.map +1 -1
  334. package/dist/types/src/testing/test-data.d.ts +18 -0
  335. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  336. package/dist/types/src/testing/test-schema.d.ts +304 -0
  337. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  338. package/dist/types/src/testing/util.d.ts +21 -0
  339. package/dist/types/src/testing/util.d.ts.map +1 -0
  340. package/dist/types/tsconfig.tsbuildinfo +1 -1
  341. package/package.json +112 -59
  342. package/src/Annotation.ts +48 -0
  343. package/src/Collection.ts +32 -0
  344. package/src/Database.ts +317 -0
  345. package/src/Dataset.ts +26 -0
  346. package/src/Entity.test.ts +22 -0
  347. package/src/Entity.ts +237 -0
  348. package/src/Err.ts +40 -0
  349. package/src/Feed.ts +257 -0
  350. package/src/Filter.ts +391 -0
  351. package/src/Format.ts +9 -0
  352. package/src/Hypergraph.ts +74 -0
  353. package/src/JsonSchema.ts +26 -0
  354. package/src/Key.ts +3 -0
  355. package/src/Obj.test.ts +447 -0
  356. package/src/Obj.ts +644 -78
  357. package/src/Order.ts +46 -0
  358. package/src/Query.test.ts +632 -0
  359. package/src/Query.ts +522 -0
  360. package/src/QueryResult.ts +106 -0
  361. package/src/Ref.ts +78 -9
  362. package/src/Relation.test.ts +88 -0
  363. package/src/Relation.ts +449 -52
  364. package/src/SchemaRegistry.ts +106 -0
  365. package/src/Tag.ts +41 -0
  366. package/src/Type.test.ts +52 -0
  367. package/src/Type.ts +168 -153
  368. package/src/View.ts +102 -0
  369. package/src/hierarchy.test.ts +33 -0
  370. package/src/index.ts +21 -4
  371. package/src/internal/Annotation/annotations.test.ts +96 -0
  372. package/src/internal/Annotation/annotations.ts +571 -0
  373. package/src/internal/Annotation/index.ts +7 -0
  374. package/src/internal/Annotation/sorting.ts +52 -0
  375. package/src/internal/Annotation/util.ts +85 -0
  376. package/src/internal/Entity/api.ts +31 -0
  377. package/src/internal/Entity/entity.ts +128 -0
  378. package/src/internal/Entity/index.ts +11 -0
  379. package/src/internal/Entity/model.ts +109 -0
  380. package/src/internal/Entity/object.ts +58 -0
  381. package/src/internal/Entity/relation.ts +154 -0
  382. package/src/internal/Entity/util.ts +33 -0
  383. package/src/internal/Entity/version.ts +97 -0
  384. package/src/internal/Format/date.test.ts +56 -0
  385. package/src/internal/Format/date.ts +217 -0
  386. package/src/internal/Format/format.test.ts +77 -0
  387. package/src/internal/Format/format.ts +54 -0
  388. package/src/internal/Format/index.ts +12 -0
  389. package/src/internal/Format/number.ts +89 -0
  390. package/src/internal/Format/object.ts +80 -0
  391. package/src/internal/Format/select.ts +18 -0
  392. package/src/internal/Format/string.ts +81 -0
  393. package/src/internal/Format/types.ts +186 -0
  394. package/src/internal/JsonSchema/annotations.ts +50 -0
  395. package/src/internal/JsonSchema/effect-schema.test.ts +143 -0
  396. package/src/internal/JsonSchema/index.ts +8 -0
  397. package/src/internal/JsonSchema/json-schema-normalize.ts +111 -0
  398. package/src/internal/JsonSchema/json-schema-type.ts +403 -0
  399. package/src/internal/JsonSchema/json-schema.test.ts +861 -0
  400. package/src/internal/JsonSchema/json-schema.ts +534 -0
  401. package/src/internal/Obj/clone.ts +48 -0
  402. package/src/internal/Obj/common.ts +75 -0
  403. package/src/internal/Obj/create-object.test.ts +116 -0
  404. package/src/internal/Obj/create-object.ts +95 -0
  405. package/src/internal/Obj/deleted.ts +19 -0
  406. package/src/internal/Obj/ids.ts +12 -0
  407. package/src/internal/Obj/index.ts +14 -0
  408. package/src/internal/Obj/inspect.ts +46 -0
  409. package/src/internal/Obj/json-serializer.test.ts +121 -0
  410. package/src/internal/Obj/json-serializer.ts +204 -0
  411. package/src/internal/Obj/schema-validator.test.ts +182 -0
  412. package/src/internal/Obj/schema-validator.ts +6 -0
  413. package/src/internal/Obj/set-value.test.ts +281 -0
  414. package/src/internal/Obj/set-value.ts +165 -0
  415. package/src/internal/Obj/snapshot.ts +105 -0
  416. package/src/internal/Obj/typed-object.test.ts +34 -0
  417. package/src/internal/Obj/typed-object.ts +30 -0
  418. package/src/internal/Ref/index.ts +6 -0
  419. package/src/internal/Ref/ref-array.ts +39 -0
  420. package/src/internal/Ref/ref.test.ts +101 -0
  421. package/src/internal/Ref/ref.ts +572 -0
  422. package/src/internal/Type/compose.test.ts +42 -0
  423. package/src/internal/Type/compose.ts +41 -0
  424. package/src/internal/Type/echo-schema.ts +424 -0
  425. package/src/internal/Type/index.ts +7 -0
  426. package/src/internal/Type/manipulation.ts +92 -0
  427. package/src/internal/Type/persistent-schema.ts +33 -0
  428. package/src/internal/common/README.md +102 -0
  429. package/src/internal/common/api/index.ts +15 -0
  430. package/src/internal/common/api/meta.ts +88 -0
  431. package/src/internal/common/index.ts +7 -0
  432. package/src/internal/common/proxy/change-context.ts +138 -0
  433. package/src/internal/common/proxy/change.test.ts +519 -0
  434. package/src/internal/common/proxy/define-hidden-property.ts +14 -0
  435. package/src/internal/common/proxy/errors.ts +42 -0
  436. package/src/internal/common/proxy/event-batch.ts +44 -0
  437. package/src/internal/common/proxy/handler.test.ts +123 -0
  438. package/src/internal/common/proxy/index.ts +17 -0
  439. package/src/internal/common/proxy/json-serializer.ts +90 -0
  440. package/src/internal/common/proxy/make-object.ts +106 -0
  441. package/src/internal/common/proxy/ownership.ts +253 -0
  442. package/src/internal/common/proxy/proxy-types.ts +23 -0
  443. package/src/internal/common/proxy/proxy-utils.ts +150 -0
  444. package/src/internal/common/proxy/reactive-array.ts +71 -0
  445. package/src/internal/common/proxy/reactive.ts +69 -0
  446. package/src/internal/common/proxy/schema-validator.ts +244 -0
  447. package/src/internal/common/proxy/schema.test.ts +145 -0
  448. package/src/internal/common/proxy/symbols.ts +7 -0
  449. package/src/internal/common/proxy/typed-handler.test.ts +314 -0
  450. package/src/internal/common/proxy/typed-handler.ts +449 -0
  451. package/src/internal/common/proxy/typed-object.test.ts +116 -0
  452. package/src/internal/common/types/base.ts +43 -0
  453. package/src/internal/common/types/entity.ts +54 -0
  454. package/src/internal/common/types/index.ts +10 -0
  455. package/src/internal/common/types/meta.ts +68 -0
  456. package/src/internal/common/types/model-symbols.ts +69 -0
  457. package/src/internal/common/types/typename.ts +55 -0
  458. package/src/internal/common/types/version.ts +19 -0
  459. package/src/internal/index.ts +16 -0
  460. package/src/testing/api.test.ts +126 -0
  461. package/src/testing/index.ts +3 -1
  462. package/src/testing/test-data.ts +130 -0
  463. package/src/testing/test-schema.ts +240 -0
  464. package/src/testing/util.ts +85 -0
  465. package/dist/lib/browser/chunk-EUA7CM23.mjs +0 -619
  466. package/dist/lib/browser/chunk-EUA7CM23.mjs.map +0 -7
  467. package/dist/lib/browser/index.mjs +0 -22
  468. package/dist/lib/browser/meta.json +0 -1
  469. package/dist/lib/browser/testing/index.mjs +0 -70
  470. package/dist/lib/browser/testing/index.mjs.map +0 -7
  471. package/dist/lib/node-esm/chunk-IV6BWGHK.mjs +0 -619
  472. package/dist/lib/node-esm/chunk-IV6BWGHK.mjs.map +0 -7
  473. package/dist/lib/node-esm/index.mjs +0 -22
  474. package/dist/lib/node-esm/meta.json +0 -1
  475. package/dist/lib/node-esm/testing/index.mjs +0 -70
  476. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  477. package/dist/types/src/experimental/database.d.ts +0 -8
  478. package/dist/types/src/experimental/database.d.ts.map +0 -1
  479. package/dist/types/src/experimental/index.d.ts +0 -1
  480. package/dist/types/src/experimental/index.d.ts.map +0 -1
  481. package/dist/types/src/experimental/queue.d.ts +0 -8
  482. package/dist/types/src/experimental/queue.d.ts.map +0 -1
  483. package/dist/types/src/experimental/space.d.ts +0 -8
  484. package/dist/types/src/experimental/space.d.ts.map +0 -1
  485. package/dist/types/src/query/dsl.d.ts +0 -218
  486. package/dist/types/src/query/dsl.d.ts.map +0 -1
  487. package/dist/types/src/query/dsl.test.d.ts +0 -2
  488. package/dist/types/src/query/dsl.test.d.ts.map +0 -1
  489. package/dist/types/src/query/index.d.ts +0 -2
  490. package/dist/types/src/query/index.d.ts.map +0 -1
  491. package/dist/types/src/testing/types.d.ts +0 -113
  492. package/dist/types/src/testing/types.d.ts.map +0 -1
  493. package/src/experimental/database.ts +0 -11
  494. package/src/experimental/index.ts +0 -7
  495. package/src/experimental/queue.ts +0 -11
  496. package/src/experimental/space.ts +0 -11
  497. package/src/query/dsl.test.ts +0 -323
  498. package/src/query/dsl.ts +0 -646
  499. package/src/query/index.ts +0 -5
  500. package/src/test/api.test.ts +0 -173
  501. package/src/testing/types.ts +0 -91
  502. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  503. /package/dist/lib/{node-esm/index.mjs.map → neutral/Database.mjs.map} +0 -0
  504. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
@@ -0,0 +1,298 @@
1
+ import {
2
+ Unknown
3
+ } from "./chunk-FUGL645K.mjs";
4
+ import {
5
+ KindId,
6
+ SnapshotKindId
7
+ } from "./chunk-7VLKWC6T.mjs";
8
+ import {
9
+ ATTR_RELATION_SOURCE,
10
+ ATTR_RELATION_TARGET,
11
+ EchoRelationSchema,
12
+ MetaId,
13
+ RelationSourceDXNId,
14
+ RelationSourceId,
15
+ RelationTargetDXNId,
16
+ RelationTargetId,
17
+ VersionTypeId,
18
+ addTag,
19
+ change,
20
+ deleteKeys,
21
+ getDXN,
22
+ getDatabase,
23
+ getKeys,
24
+ getMetaChecked,
25
+ getObjectDXN,
26
+ getSnapshot,
27
+ getValue,
28
+ isDeleted,
29
+ isVersion,
30
+ makeObject,
31
+ objectToJSON,
32
+ removeTag,
33
+ setValue,
34
+ sort,
35
+ sortByLabel,
36
+ sortByTypename,
37
+ subscribe,
38
+ version
39
+ } from "./chunk-MFJPOZDU.mjs";
40
+ import {
41
+ ParentId,
42
+ getDescription,
43
+ getLabel,
44
+ getSchema,
45
+ getTypeAnnotation,
46
+ getTypeDXN,
47
+ getTypename,
48
+ setDescription,
49
+ setLabel
50
+ } from "./chunk-SEMVAGBM.mjs";
51
+ import {
52
+ EntityKind,
53
+ SchemaKindId
54
+ } from "./chunk-WYOKA6AE.mjs";
55
+ import {
56
+ __export
57
+ } from "./chunk-J5LGTIGS.mjs";
58
+
59
+ // src/Relation.ts
60
+ var Relation_exports = {};
61
+ __export(Relation_exports, {
62
+ Meta: () => Meta,
63
+ Source: () => Source,
64
+ Target: () => Target,
65
+ Unknown: () => Unknown3,
66
+ VersionTypeId: () => VersionTypeId2,
67
+ addTag: () => addTag2,
68
+ change: () => change2,
69
+ deleteKeys: () => deleteKeys2,
70
+ getDXN: () => getDXN2,
71
+ getDatabase: () => getDatabase2,
72
+ getDescription: () => getDescription2,
73
+ getKeys: () => getKeys2,
74
+ getLabel: () => getLabel2,
75
+ getMeta: () => getMeta,
76
+ getSchema: () => getSchema2,
77
+ getSnapshot: () => getSnapshot2,
78
+ getSource: () => getSource,
79
+ getSourceDXN: () => getSourceDXN,
80
+ getTarget: () => getTarget,
81
+ getTargetDXN: () => getTargetDXN,
82
+ getTypeDXN: () => getTypeDXN2,
83
+ getTypename: () => getTypename2,
84
+ getValue: () => getValue2,
85
+ isDeleted: () => isDeleted2,
86
+ isRelation: () => isRelation,
87
+ isSnapshot: () => isSnapshot,
88
+ isVersion: () => isVersion2,
89
+ make: () => make,
90
+ removeTag: () => removeTag2,
91
+ setDescription: () => setDescription2,
92
+ setLabel: () => setLabel2,
93
+ setValue: () => setValue2,
94
+ sort: () => sort2,
95
+ sortByLabel: () => sortByLabel2,
96
+ sortByTypename: () => sortByTypename2,
97
+ subscribe: () => subscribe2,
98
+ toJSON: () => toJSON,
99
+ version: () => version2
100
+ });
101
+ import * as Schema from "effect/Schema";
102
+ import { raise } from "@dxos/debug";
103
+ import { createJsonPath } from "@dxos/effect";
104
+ import { assertArgument, invariant } from "@dxos/invariant";
105
+ import { DXN } from "@dxos/keys";
106
+ import { assumeType } from "@dxos/util";
107
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Relation.ts";
108
+ var Unknown3 = Schema.Struct({
109
+ id: Schema.String
110
+ }).pipe(
111
+ Schema.extend(Schema.Record({
112
+ key: Schema.String,
113
+ value: Schema.Unknown
114
+ })),
115
+ // TODO(dmaretskyi): Clean this up.
116
+ // NOTE: The EchoRelationSchema annotation is required for Ref.Ref(Relation.Unknown) to work.
117
+ // The typename/version/source/target only satisfy ECHO schema machinery for reference targets.
118
+ EchoRelationSchema({
119
+ typename: "org.dxos.schema.any-relation",
120
+ version: "0.0.0",
121
+ source: Unknown,
122
+ target: Unknown
123
+ }),
124
+ (schema) => Object.assign(schema, {
125
+ [SchemaKindId]: schema[SchemaKindId]
126
+ })
127
+ );
128
+ var Source = RelationSourceId;
129
+ var Target = RelationTargetId;
130
+ var make = (schema, props) => {
131
+ assertArgument(getTypeAnnotation(schema)?.kind === EntityKind.Relation, "schema", "Expected a relation schema");
132
+ assertArgument(props[ParentId] === void 0, "props", "Parent is not allowed for relations");
133
+ let meta = void 0;
134
+ if (props[MetaId] != null) {
135
+ meta = props[MetaId];
136
+ delete props[MetaId];
137
+ }
138
+ const sourceDXN = getObjectDXN(props[Source]) ?? raise(new Error("Unresolved relation source"));
139
+ const targetDXN = getObjectDXN(props[Target]) ?? raise(new Error("Unresolved relation target"));
140
+ props[RelationSourceDXNId] = sourceDXN;
141
+ props[RelationTargetDXNId] = targetDXN;
142
+ return makeObject(schema, props, meta);
143
+ };
144
+ var isRelation = (value) => {
145
+ if (typeof value !== "object" || value === null) {
146
+ return false;
147
+ }
148
+ if (ATTR_RELATION_SOURCE in value || ATTR_RELATION_TARGET in value) {
149
+ return true;
150
+ }
151
+ const kind = value[KindId] ?? value[SnapshotKindId];
152
+ return kind === EntityKind.Relation;
153
+ };
154
+ var isSnapshot = (value) => {
155
+ if (typeof value !== "object" || value === null) {
156
+ return false;
157
+ }
158
+ return value[SnapshotKindId] === EntityKind.Relation;
159
+ };
160
+ var getSourceDXN = (value) => {
161
+ assertArgument(isRelation(value), "Expected a relation");
162
+ assumeType(value);
163
+ const dxn = value[RelationSourceDXNId];
164
+ invariant(dxn instanceof DXN, void 0, {
165
+ F: __dxlog_file,
166
+ L: 214,
167
+ S: void 0,
168
+ A: [
169
+ "dxn instanceof DXN",
170
+ ""
171
+ ]
172
+ });
173
+ return dxn;
174
+ };
175
+ var getTargetDXN = (value) => {
176
+ assertArgument(isRelation(value), "Expected a relation");
177
+ assumeType(value);
178
+ const dxn = value[RelationTargetDXNId];
179
+ invariant(dxn instanceof DXN, void 0, {
180
+ F: __dxlog_file,
181
+ L: 227,
182
+ S: void 0,
183
+ A: [
184
+ "dxn instanceof DXN",
185
+ ""
186
+ ]
187
+ });
188
+ return dxn;
189
+ };
190
+ var getSource = (relation) => {
191
+ assertArgument(isRelation(relation), "Expected a relation");
192
+ assumeType(relation);
193
+ const obj = relation[RelationSourceId];
194
+ invariant(obj !== void 0, `Invalid source: ${relation.id}`, {
195
+ F: __dxlog_file,
196
+ L: 240,
197
+ S: void 0,
198
+ A: [
199
+ "obj !== undefined",
200
+ "`Invalid source: ${relation.id}`"
201
+ ]
202
+ });
203
+ return obj;
204
+ };
205
+ var getTarget = (relation) => {
206
+ assertArgument(isRelation(relation), "Expected a relation");
207
+ assumeType(relation);
208
+ const obj = relation[RelationTargetId];
209
+ invariant(obj !== void 0, `Invalid target: ${relation.id}`, {
210
+ F: __dxlog_file,
211
+ L: 253,
212
+ S: void 0,
213
+ A: [
214
+ "obj !== undefined",
215
+ "`Invalid target: ${relation.id}`"
216
+ ]
217
+ });
218
+ return obj;
219
+ };
220
+ var change2 = (relation, callback) => {
221
+ change(relation, callback);
222
+ };
223
+ var getSnapshot2 = getSnapshot;
224
+ var subscribe2 = (rel, callback) => {
225
+ return subscribe(rel, callback);
226
+ };
227
+ var getValue2 = (rel, path) => {
228
+ return getValue(rel, createJsonPath(path));
229
+ };
230
+ var setValue2 = setValue;
231
+ var getDXN2 = (entity) => getDXN(entity);
232
+ var getTypeDXN2 = getTypeDXN;
233
+ var getSchema2 = getSchema;
234
+ var getTypename2 = (entity) => getTypename(entity);
235
+ var getDatabase2 = (entity) => getDatabase(entity);
236
+ var Meta = MetaId;
237
+ function getMeta(entity) {
238
+ return getMetaChecked(entity);
239
+ }
240
+ var getKeys2 = (entity, source) => getKeys(entity, source);
241
+ var deleteKeys2 = (entity, source) => deleteKeys(entity, source);
242
+ var addTag2 = (entity, tag) => addTag(entity, tag);
243
+ var removeTag2 = (entity, tag) => removeTag(entity, tag);
244
+ var isDeleted2 = (entity) => isDeleted(entity);
245
+ var getLabel2 = (entity) => getLabel(entity);
246
+ var setLabel2 = (entity, label) => setLabel(entity, label);
247
+ var getDescription2 = (entity) => getDescription(entity);
248
+ var setDescription2 = (entity, description) => setDescription(entity, description);
249
+ var toJSON = (entity) => objectToJSON(entity);
250
+ var sortByLabel2 = sortByLabel;
251
+ var sortByTypename2 = sortByTypename;
252
+ var sort2 = (...comparators) => sort(...comparators);
253
+ var VersionTypeId2 = VersionTypeId;
254
+ var isVersion2 = isVersion;
255
+ var version2 = (entity) => version(entity);
256
+
257
+ export {
258
+ Unknown3 as Unknown,
259
+ Source,
260
+ Target,
261
+ make,
262
+ isRelation,
263
+ isSnapshot,
264
+ getSourceDXN,
265
+ getTargetDXN,
266
+ getSource,
267
+ getTarget,
268
+ change2 as change,
269
+ getSnapshot2 as getSnapshot,
270
+ subscribe2 as subscribe,
271
+ getValue2 as getValue,
272
+ setValue2 as setValue,
273
+ getDXN2 as getDXN,
274
+ getTypeDXN2 as getTypeDXN,
275
+ getSchema2 as getSchema,
276
+ getTypename2 as getTypename,
277
+ getDatabase2 as getDatabase,
278
+ Meta,
279
+ getMeta,
280
+ getKeys2 as getKeys,
281
+ deleteKeys2 as deleteKeys,
282
+ addTag2 as addTag,
283
+ removeTag2 as removeTag,
284
+ isDeleted2 as isDeleted,
285
+ getLabel2 as getLabel,
286
+ setLabel2 as setLabel,
287
+ getDescription2 as getDescription,
288
+ setDescription2 as setDescription,
289
+ toJSON,
290
+ sortByLabel2 as sortByLabel,
291
+ sortByTypename2 as sortByTypename,
292
+ sort2 as sort,
293
+ VersionTypeId2 as VersionTypeId,
294
+ isVersion2 as isVersion,
295
+ version2 as version,
296
+ Relation_exports
297
+ };
298
+ //# sourceMappingURL=chunk-PH5RST5U.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Relation.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { raise } from '@dxos/debug';\nimport type { ForeignKey } from '@dxos/echo-protocol';\nimport { createJsonPath } from '@dxos/effect';\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { DXN, type ObjectId } from '@dxos/keys';\nimport { assumeType } from '@dxos/util';\n\nimport type * as Database from './Database';\nimport * as Entity from './Entity';\nimport * as entityInternal from './internal/Entity';\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport type * as Type from './Type';\n\nexport type Endpoints<Source, Target> = {\n [Source]: Source;\n [Target]: Target;\n};\n\n/**\n * Base type for all ECHO relations.\n * @private\n */\ninterface BaseRelation<Source, Target>\n extends internal.AnyEntity, Endpoints<Source, Target>, Entity.OfKind<internal.EntityKind.Relation> {}\n\n/**\n * Relation with no known properties beyond id, kind, source, and target.\n * Use this when the relation's schema/properties are not known.\n *\n * NOTE: This is a TypeScript type only, not a schema.\n * To validate that a value is an ECHO relation, use `Relation.isRelation`.\n */\nexport interface Unknown extends BaseRelation<Obj.Unknown, Obj.Unknown> {}\n\n/**\n * Runtime Effect schema for any ECHO relation.\n * Use for validation, parsing, or as a reference target for collections.\n * A relation has `id`, source, and target fields plus any additional properties.\n *\n * NOTE: `Schema.is(Type.Relation)` does STRUCTURAL validation only (checks for `id` field).\n * Use `Relation.isRelation()` for proper ECHO instance type guards that check the KindId brand.\n *\n * @example\n * ```ts\n * // Structural type guard (accepts any object with id field)\n * if (Schema.is(Type.Relation)(unknownValue)) { ... }\n *\n * // ECHO instance type guard (checks KindId brand)\n * if (Relation.isRelation(unknownValue)) { ... }\n * ```\n */\n// TODO(dmaretskyi): Change ObjModule.Any to ObjModule.Unknown to have stricter types.\nexport const Unknown: Type.Relation<Unknown, Obj.Any, Obj.Any> = Schema.Struct({\n id: Schema.String,\n}).pipe(\n Schema.extend(Schema.Record({ key: Schema.String, value: Schema.Unknown })),\n // TODO(dmaretskyi): Clean this up.\n // NOTE: The EchoRelationSchema annotation is required for Ref.Ref(Relation.Unknown) to work.\n // The typename/version/source/target only satisfy ECHO schema machinery for reference targets.\n internal.EchoRelationSchema({\n typename: 'org.dxos.schema.any-relation',\n version: '0.0.0',\n source: Obj.Unknown,\n target: Obj.Unknown,\n }),\n (schema) =>\n Object.assign(schema, {\n [internal.SchemaKindId]: (schema as any)[internal.SchemaKindId],\n }) as unknown as Type.Relation<Unknown, Obj.Any, Obj.Any>,\n);\n\n/**\n * Relation type with specific source and target types.\n */\nexport type OfShape<Source extends Obj.Unknown, Target extends Obj.Unknown, Props> = BaseRelation<Source, Target> &\n Props;\n\n/**\n * Base type for snapshot relations (has SnapshotKindId instead of KindId).\n */\ninterface BaseRelationSnapshot<Source, Target> extends internal.AnyEntity, Endpoints<Source, Target> {\n readonly [Entity.SnapshotKindId]: internal.EntityKind.Relation;\n readonly id: ObjectId;\n}\n\n/**\n * JSON-encoded properties for relations.\n */\nexport interface BaseRelationJson {\n id: string;\n [internal.ATTR_RELATION_SOURCE]: string;\n [internal.ATTR_RELATION_TARGET]: string;\n}\n\n/**\n * Immutable snapshot of an ECHO relation.\n * Branded with SnapshotKindId (not KindId).\n * Property values are frozen at the time the snapshot was created.\n * Returned by getSnapshot() and hooks.\n */\nexport type Snapshot<T extends Unknown = Unknown> = Omit<T, Entity.KindId> &\n BaseRelationSnapshot<Obj.Unknown, Obj.Unknown>;\n\nexport const Source: unique symbol = entityInternal.RelationSourceId as any;\nexport type Source = typeof Source;\n\nexport const Target: unique symbol = entityInternal.RelationTargetId as any;\nexport type Target = typeof Target;\n\n/**\n * Get relation source type.\n */\nexport type SourceOf<A> = A extends Endpoints<infer S, infer _T> ? S : never;\n\n/**\n * Get relation target type.\n */\nexport type TargetOf<A> = A extends Endpoints<infer _S, infer T> ? T : never;\n\n/**\n * Internal props type for relation instance creation.\n */\ntype MakePropsInternal<T extends Unknown> = {\n id?: ObjectId;\n [Meta]?: internal.ObjectMeta;\n [Source]: T[Source];\n [Target]: T[Target];\n} & Entity.Properties<T>;\n\n/**\n * Props type for relation creation with a given schema.\n * Takes a schema type (created with Type.Relation) and extracts the props type.\n */\nexport type MakeProps<S extends Type.AnyRelation> = MakePropsInternal<Schema.Schema.Type<S>>;\n\n/**\n * Creates new relation.\n * @param schema - Relation schema.\n * @param props - Relation properties. Endpoints are passed as [Relation.Source] and [Relation.Target] keys.\n * @param meta - Relation metadata. (deprecated; use [Obj.Meta] instead)\n * @returns\n */\n// NOTE: Writing the definition this way (with generic over schema) makes typescript perfer to infer the type from the first param (this schema) rather than the second param (the props).\n// TODO(dmaretskyi): Move meta into props.\nexport const make = <S extends Type.AnyRelation>(\n schema: S,\n props: NoInfer<MakeProps<S>>,\n): Schema.Schema.Type<S> & Entity.OfKind<typeof Entity.Kind.Relation> => {\n assertArgument(\n internal.getTypeAnnotation(schema)?.kind === internal.EntityKind.Relation,\n 'schema',\n 'Expected a relation schema',\n );\n assertArgument(props[internal.ParentId] === undefined, 'props', 'Parent is not allowed for relations');\n\n let meta: internal.ObjectMeta | undefined = undefined;\n\n if (props[internal.MetaId] != null) {\n meta = props[internal.MetaId] as any;\n delete props[internal.MetaId];\n }\n\n const sourceDXN = internal.getObjectDXN(props[Source]) ?? raise(new Error('Unresolved relation source'));\n const targetDXN = internal.getObjectDXN(props[Target]) ?? raise(new Error('Unresolved relation target'));\n\n (props as any)[internal.RelationSourceDXNId] = sourceDXN;\n (props as any)[internal.RelationTargetDXNId] = targetDXN;\n\n return internal.makeObject<Schema.Schema.Type<S>>(schema, props as any, meta);\n};\n\n/**\n * Type guard for relations.\n * Returns true for both reactive relations and relation snapshots.\n */\nexport const isRelation = (value: unknown): value is Unknown => {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n if (internal.ATTR_RELATION_SOURCE in value || internal.ATTR_RELATION_TARGET in value) {\n return true;\n }\n\n // Check for reactive relation (KindId) or snapshot (SnapshotKindId).\n const kind = (value as any)[Entity.KindId] ?? (value as any)[Entity.SnapshotKindId];\n return kind === internal.EntityKind.Relation;\n};\n\nexport const isSnapshot = (value: unknown): value is Snapshot => {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n return (value as any)[Entity.SnapshotKindId] === internal.EntityKind.Relation;\n};\n\n/**\n * @returns Relation source DXN.\n * Accepts both reactive relations and snapshots.\n * @throws If the object is not a relation.\n */\nexport const getSourceDXN = (value: Unknown | Snapshot): DXN => {\n assertArgument(isRelation(value), 'Expected a relation');\n assumeType<internal.InternalObjectProps>(value);\n const dxn = (value as internal.InternalObjectProps)[internal.RelationSourceDXNId];\n invariant(dxn instanceof DXN);\n return dxn;\n};\n\n/**\n * @returns Relation target DXN.\n * Accepts both reactive relations and snapshots.\n * @throws If the object is not a relation.\n */\nexport const getTargetDXN = (value: Unknown | Snapshot): DXN => {\n assertArgument(isRelation(value), 'Expected a relation');\n assumeType<internal.InternalObjectProps>(value);\n const dxn = (value as internal.InternalObjectProps)[internal.RelationTargetDXNId];\n invariant(dxn instanceof DXN);\n return dxn;\n};\n\n/**\n * @returns Relation source.\n * Accepts both reactive relations and snapshots.\n * @throws If the object is not a relation.\n */\nexport const getSource = <T extends Unknown | Snapshot>(relation: T): SourceOf<T> => {\n assertArgument(isRelation(relation), 'Expected a relation');\n assumeType<internal.InternalObjectProps>(relation);\n const obj = (relation as internal.InternalObjectProps)[internal.RelationSourceId];\n invariant(obj !== undefined, `Invalid source: ${relation.id}`);\n return obj as SourceOf<T>;\n};\n\n/**\n * @returns Relation target.\n * Accepts both reactive relations and snapshots.\n * @throws If the object is not a relation.\n */\nexport const getTarget = <T extends Unknown | Snapshot>(relation: T): TargetOf<T> => {\n assertArgument(isRelation(relation), 'Expected a relation');\n assumeType<internal.InternalObjectProps>(relation);\n const obj = (relation as internal.InternalObjectProps)[internal.RelationTargetId];\n invariant(obj !== undefined, `Invalid target: ${relation.id}`);\n return obj as TargetOf<T>;\n};\n\n//\n// Change\n//\n\n/**\n * Makes all properties mutable recursively.\n * Used to provide a mutable view of a relation within `Relation.change`.\n */\nexport type Mutable<T> = internal.Mutable<T>;\n\n/**\n * Perform mutations on an echo relation within a controlled context.\n *\n * All mutations within the callback are batched and trigger a single notification\n * when the callback completes. Direct mutations outside of `Relation.change` will throw\n * an error for echo relations.\n *\n * @param relation - The echo relation to mutate. Use `Obj.change` for objects.\n * @param callback - The callback that performs mutations on the relation.\n *\n * @example\n * ```ts\n * const worksFor = Relation.make(EmployedBy, {\n * [Relation.Source]: person,\n * [Relation.Target]: company,\n * role: 'Engineer',\n * });\n *\n * // Mutate within Relation.change\n * Relation.change(worksFor, (r) => {\n * r.role = 'Senior Engineer';\n * });\n * ```\n *\n * Note: Only accepts relations. Use `Obj.change` for objects.\n */\nexport const change = <T extends Unknown>(relation: T, callback: internal.ChangeCallback<T>): void => {\n internal.change(relation, callback);\n};\n\n//\n// Snapshot\n//\n\n/**\n * Returns an immutable snapshot of a relation.\n * The snapshot is branded with SnapshotKindId instead of KindId,\n * making it distinguishable from the reactive relation at the type level.\n */\nexport const getSnapshot: <T extends Unknown>(rel: T) => Snapshot<T> = internal.getSnapshot as any;\n\n//\n// Subscribe\n//\n\n/**\n * Subscribe to relation updates.\n * The callback is called synchronously when the relation is modified.\n * Only accepts reactive relations (not snapshots).\n * @returns Unsubscribe function.\n */\nexport const subscribe = (rel: Unknown, callback: () => void): (() => void) => {\n return internal.subscribe(rel, callback);\n};\n\n//\n// Property Access\n//\n\n/**\n * Get a deeply nested property from a relation.\n * Accepts both reactive relations and snapshots.\n */\nexport const getValue = (rel: Unknown | Snapshot, path: readonly (string | number)[]): any => {\n return internal.getValue(rel, createJsonPath(path));\n};\n\n/**\n * Set a deeply nested property on a relation.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const setValue: (rel: Mutable<Unknown>, path: readonly (string | number)[], value: any) => void =\n internal.setValue as any;\n\n//\n// Type\n//\n\n/**\n * Get the DXN of the relation.\n * Accepts both reactive relations and snapshots.\n */\nexport const getDXN = (entity: Unknown | Snapshot): DXN => internal.getDXN(entity);\n\n/**\n * @returns The DXN of the relation's type.\n */\nexport const getTypeDXN = internal.getTypeDXN;\n\n/**\n * Get the schema of the relation.\n * Returns the branded ECHO schema used to create the relation.\n */\nexport const getSchema: (rel: unknown | undefined) => Type.AnyEntity | undefined = internal.getSchema as any;\n\n/**\n * @returns The typename of the relation's type.\n * Accepts both reactive relations and snapshots.\n */\nexport const getTypename = (entity: Unknown | Snapshot): string | undefined => internal.getTypename(entity);\n\n//\n// Database\n//\n\n/**\n * Get the database the relation belongs to.\n * Accepts both reactive relations and snapshots.\n */\nexport const getDatabase = (entity: Unknown | Snapshot): Database.Database | undefined => internal.getDatabase(entity);\n\n//\n// Meta\n//\n\n/**\n * Property that accesses metadata for an entity.\n *\n * Alias for `Entity.Meta`.\n */\nexport const Meta = internal.MetaId;\n\n/**\n * Deeply read-only version of ObjectMeta.\n */\nexport type ReadonlyMeta = internal.ReadonlyMeta;\n\n/**\n * Mutable meta type returned by `Relation.getMeta` inside a `Relation.change` callback.\n */\nexport type Meta = internal.Meta;\n\n/**\n * Get the metadata for a relation.\n * Returns mutable meta when passed a mutable relation (inside `Relation.change` callback).\n * Returns read-only meta when passed a regular relation or snapshot.\n */\n// TODO(wittjosiah): When passed a Snapshot, should return a snapshot of meta, not the live meta proxy.\nexport function getMeta(entity: Mutable<Unknown>): Meta;\nexport function getMeta(entity: Unknown | Snapshot): ReadonlyMeta;\nexport function getMeta(entity: Unknown | Snapshot | Mutable<Unknown>): Meta | ReadonlyMeta {\n return internal.getMetaChecked(entity);\n}\n\n/**\n * @returns Foreign keys for the relation from the specified source.\n * Accepts both reactive relations and snapshots.\n */\nexport const getKeys = (entity: Unknown | Snapshot, source: string): ForeignKey[] => internal.getKeys(entity, source);\n\n/**\n * Delete all keys from the relation for the specified source.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const deleteKeys = (entity: Mutable<Unknown>, source: string): void => internal.deleteKeys(entity, source);\n\n/**\n * Add a tag to the relation.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const addTag = (entity: Mutable<Unknown>, tag: string): void => internal.addTag(entity, tag);\n\n/**\n * Remove a tag from the relation.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const removeTag = (entity: Mutable<Unknown>, tag: string): void => internal.removeTag(entity, tag);\n\n/**\n * Check if the relation is deleted.\n * Accepts both reactive relations and snapshots.\n */\nexport const isDeleted = (entity: Unknown | Snapshot): boolean => internal.isDeleted(entity);\n\n//\n// Annotations\n//\n\n/**\n * Get the label of the relation.\n * Accepts both reactive relations and snapshots.\n */\nexport const getLabel = (entity: Unknown | Snapshot): string | undefined => internal.getLabel(entity);\n\n/**\n * Set the label of the relation.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const setLabel = (entity: Mutable<Unknown>, label: string): void => internal.setLabel(entity, label);\n\n/**\n * Get the description of the relation.\n * Accepts both reactive relations and snapshots.\n */\nexport const getDescription = (entity: Unknown | Snapshot): string | undefined => internal.getDescription(entity);\n\n/**\n * Set the description of the relation.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const setDescription = (entity: Mutable<Unknown>, description: string): void =>\n internal.setDescription(entity, description);\n\n//\n// JSON\n//\n\n/**\n * JSON representation of a relation.\n */\nexport type JSON = internal.ObjectJSON;\n\n/**\n * Converts relation to its JSON representation.\n * Accepts both reactive relations and snapshots.\n */\nexport const toJSON = (entity: Unknown | Snapshot): JSON => internal.objectToJSON(entity);\n\n//\n// Sorting\n//\n\n/**\n * Comparator function type for sorting relations.\n * Accepts both reactive relations and snapshots.\n */\nexport type Comparator = internal.Comparator<Unknown | Snapshot>;\n\nexport const sortByLabel: Comparator = internal.sortByLabel as Comparator;\nexport const sortByTypename: Comparator = internal.sortByTypename as Comparator;\nexport const sort = (...comparators: Comparator[]): Comparator => internal.sort(...comparators) as Comparator;\n\n//\n// Version\n//\n\nexport const VersionTypeId = internal.VersionTypeId;\nexport const isVersion = internal.isVersion;\n\n/**\n * Represent relation version.\n */\nexport type Version = internal.EntityVersion;\n\n/**\n * Returns the version of the relation.\n * Accepts both reactive relations and snapshots.\n */\nexport const version = (entity: Unknown | Snapshot): Version => internal.version(entity);\n"],
5
+ "mappings": "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",
6
+ "names": ["Unknown", "VersionTypeId", "addTag", "change", "deleteKeys", "getDXN", "getDatabase", "getDescription", "getKeys", "getLabel", "getSchema", "getSnapshot", "getTypeDXN", "getTypename", "getValue", "isDeleted", "isVersion", "removeTag", "setDescription", "setLabel", "setValue", "sort", "sortByLabel", "sortByTypename", "subscribe", "version", "Schema", "raise", "createJsonPath", "assertArgument", "invariant", "DXN", "assumeType", "Unknown", "Struct", "id", "String", "pipe", "extend", "Record", "key", "value", "EchoRelationSchema", "typename", "version", "source", "target", "schema", "Object", "assign", "SchemaKindId", "Source", "RelationSourceId", "Target", "RelationTargetId", "make", "props", "assertArgument", "getTypeAnnotation", "kind", "EntityKind", "Relation", "ParentId", "undefined", "meta", "MetaId", "sourceDXN", "getObjectDXN", "raise", "Error", "targetDXN", "RelationSourceDXNId", "RelationTargetDXNId", "makeObject", "isRelation", "ATTR_RELATION_SOURCE", "ATTR_RELATION_TARGET", "KindId", "SnapshotKindId", "isSnapshot", "getSourceDXN", "assumeType", "dxn", "invariant", "DXN", "getTargetDXN", "getSource", "relation", "obj", "getTarget", "change", "callback", "internal", "getSnapshot", "subscribe", "rel", "getValue", "path", "createJsonPath", "setValue", "getDXN", "entity", "getTypeDXN", "getSchema", "getTypename", "getDatabase", "Meta", "getMeta", "getMetaChecked", "getKeys", "deleteKeys", "addTag", "tag", "removeTag", "isDeleted", "getLabel", "setLabel", "label", "getDescription", "setDescription", "description", "toJSON", "objectToJSON", "sortByLabel", "sortByTypename", "sort", "comparators", "VersionTypeId", "isVersion"]
7
+ }
@@ -0,0 +1,152 @@
1
+ import {
2
+ select
3
+ } from "./chunk-EV3A23AS.mjs";
4
+ import {
5
+ Feed
6
+ } from "./chunk-QTUBE4DR.mjs";
7
+ import {
8
+ object
9
+ } from "./chunk-QLALBCSA.mjs";
10
+ import {
11
+ nothing
12
+ } from "./chunk-BESZGRPL.mjs";
13
+ import {
14
+ Ref
15
+ } from "./chunk-EK7UOJ3R.mjs";
16
+ import {
17
+ Unknown,
18
+ instanceOf,
19
+ make
20
+ } from "./chunk-FUGL645K.mjs";
21
+ import {
22
+ JsonSchemaType
23
+ } from "./chunk-2Z72D23W.mjs";
24
+ import {
25
+ FormInputAnnotation,
26
+ SystemTypeAnnotation
27
+ } from "./chunk-SEMVAGBM.mjs";
28
+ import {
29
+ __export
30
+ } from "./chunk-J5LGTIGS.mjs";
31
+
32
+ // src/index.ts
33
+ import { QueryAST as QueryAST2 } from "@dxos/echo-protocol";
34
+ import { DXN } from "@dxos/keys";
35
+
36
+ // src/Hypergraph.ts
37
+ var Hypergraph_exports = {};
38
+
39
+ // src/Collection.ts
40
+ var Collection_exports = {};
41
+ __export(Collection_exports, {
42
+ Collection: () => Collection,
43
+ isCollection: () => isCollection,
44
+ make: () => make2
45
+ });
46
+ import * as Schema from "effect/Schema";
47
+ var Collection = Schema.Struct({
48
+ name: Schema.String.pipe(Schema.optional),
49
+ objects: Schema.Array(Ref(Unknown)).pipe(FormInputAnnotation.set(false))
50
+ }).pipe(object({
51
+ typename: "org.dxos.type.collection",
52
+ version: "0.1.0"
53
+ }));
54
+ var make2 = (props = {}) => make(Collection, {
55
+ objects: [],
56
+ ...props
57
+ });
58
+ var isCollection = instanceOf(Collection);
59
+
60
+ // src/View.ts
61
+ var View_exports = {};
62
+ __export(View_exports, {
63
+ FieldSchema: () => FieldSchema,
64
+ KeyValueProps: () => KeyValueProps,
65
+ Projection: () => Projection,
66
+ View: () => View,
67
+ createFieldId: () => createFieldId,
68
+ make: () => make3
69
+ });
70
+ import * as Schema2 from "effect/Schema";
71
+ import { QueryAST } from "@dxos/echo-protocol";
72
+ import { JsonPath } from "@dxos/effect";
73
+ import { PublicKey } from "@dxos/keys";
74
+ var FieldSchema = Schema2.Struct({
75
+ id: Schema2.String,
76
+ path: JsonPath,
77
+ visible: Schema2.optional(Schema2.Boolean),
78
+ // TODO(wittjosiah): Presentation-specific?
79
+ referencePath: Schema2.optional(JsonPath)
80
+ });
81
+ var KeyValueProps = Schema2.Record({
82
+ key: Schema2.String,
83
+ value: Schema2.Any
84
+ });
85
+ var createFieldId = () => PublicKey.random().truncate();
86
+ var Projection = Schema2.Struct({
87
+ /**
88
+ * Optional schema override used to customize the underlying schema.
89
+ */
90
+ schema: JsonSchemaType.pipe(Schema2.optional),
91
+ /**
92
+ * UX metadata associated with displayed fields (in table, form, etc.)
93
+ */
94
+ // TODO(wittjosiah): Should this just be an array of JsonPath?
95
+ fields: Schema2.Array(FieldSchema),
96
+ /**
97
+ * The id for the field used to pivot the view.
98
+ * E.g., the field to use for kanban columns or the field to use for map coordinates.
99
+ */
100
+ pivotFieldId: Schema2.String.pipe(Schema2.optional)
101
+ });
102
+ var ViewSchema = Schema2.Struct({
103
+ /**
104
+ * Query used to retrieve data.
105
+ * Can be a user-provided query grammar string or a query AST.
106
+ */
107
+ query: Schema2.Struct({
108
+ raw: Schema2.optional(Schema2.String),
109
+ ast: QueryAST.Query
110
+ }),
111
+ /**
112
+ * Projection of the data returned from the query.
113
+ */
114
+ projection: Projection
115
+ }).pipe(object({
116
+ typename: "org.dxos.type.view",
117
+ version: "0.1.0"
118
+ }), SystemTypeAnnotation.set(true));
119
+ var View = ViewSchema;
120
+ var make3 = (props) => {
121
+ return make(View, {
122
+ query: {
123
+ ast: select(nothing()).ast
124
+ },
125
+ projection: {
126
+ fields: []
127
+ },
128
+ ...props
129
+ });
130
+ };
131
+
132
+ // src/Dataset.ts
133
+ var Dataset_exports = {};
134
+ __export(Dataset_exports, {
135
+ Dataset: () => Dataset,
136
+ isDataset: () => isDataset
137
+ });
138
+ import { pipe } from "effect/Function";
139
+ import * as Predicate from "effect/Predicate";
140
+ import * as Schema3 from "effect/Schema";
141
+ var Dataset = Schema3.Union(Feed, Collection, View);
142
+ var isDataset = pipe(instanceOf(Feed), Predicate.or(instanceOf(Collection)), Predicate.or(instanceOf(View)));
143
+
144
+ export {
145
+ Hypergraph_exports,
146
+ Collection_exports,
147
+ View_exports,
148
+ Dataset_exports,
149
+ QueryAST2 as QueryAST,
150
+ DXN
151
+ };
152
+ //# sourceMappingURL=chunk-PKD2L7XO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/index.ts", "../../../src/Hypergraph.ts", "../../../src/Collection.ts", "../../../src/View.ts", "../../../src/Dataset.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nexport { QueryAST } from '@dxos/echo-protocol';\n// TODO(wittjosiah): Refactor DXN to not use statics similar to Query.\nexport { DXN } from '@dxos/keys';\n\nexport * as Annotation from './Annotation';\nexport * as Database from './Database';\nexport * as Entity from './Entity';\nexport * as Err from './Err';\nexport * as Feed from './Feed';\nexport * as Filter from './Filter';\nexport * as Format from './Format';\nexport * as Hypergraph from './Hypergraph';\nexport * as JsonSchema from './JsonSchema';\nexport * as Key from './Key';\nexport * as Obj from './Obj';\nexport * as Order from './Order';\nexport * as Query from './Query';\nexport * as QueryResult from './QueryResult';\nexport * as Ref from './Ref';\nexport * as Relation from './Relation';\nexport * as SchemaRegistry from './SchemaRegistry';\nexport * as Tag from './Tag';\nexport * as Type from './Type';\nexport * as Collection from './Collection';\nexport * as View from './View';\nexport * as Dataset from './Dataset';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type DXN } from '@dxos/keys';\n\nimport type * as Database from './Database';\nimport type * as Entity from './Entity';\nimport type * as internal from './internal';\nimport type * as Key from './Key';\nimport type * as Ref from './Ref';\nimport type * as SchemaRegistry from './SchemaRegistry';\n\n/**\n * Resolution context.\n * Affects how non-absolute DXNs are resolved.\n */\nexport interface RefResolutionContext {\n /**\n * Space that the resolution is happening from.\n */\n space?: Key.SpaceId;\n\n /**\n * Queue that the resolution is happening from.\n * This queue will be searched first, and then the space it belongs to.\n */\n queue?: DXN;\n}\n\nexport interface RefResolverOptions {\n /**\n * Resolution context.\n * Affects how non-absolute DXNs are resolved.\n */\n context?: RefResolutionContext;\n\n /**\n * Middleware to change the resolved object before returning it.\n * @deprecated On track to be removed.\n */\n middleware?: (obj: internal.AnyProperties) => internal.AnyProperties;\n}\n\n/**\n *\n */\n// TODO(burdon): Comment required.\nexport interface Hypergraph extends Database.Queryable {\n get schemaRegistry(): SchemaRegistry.SchemaRegistry;\n\n /**\n * Query objects.\n */\n query: Database.QueryFn;\n\n /**\n * Creates a reference to an existing object in the database.\n *\n * NOTE: The reference may be dangling if the object is not present in the database.\n * NOTE: Difference from `Ref.fromDXN`\n * `Ref.fromDXN(dxn)` returns an unhydrated reference. The `.load` and `.target` APIs will not work.\n * `db.makeRef(dxn)` is preferable in cases with access to the database.\n */\n makeRef<T extends Entity.Unknown = Entity.Unknown>(dxn: DXN): Ref.Ref<T>;\n\n /**\n * @param hostDb Host database for reference resolution.\n * @param middleware Called with the loaded object. The caller may change the object.\n * @returns Result of `onLoad`.\n */\n // TODO(dmaretskyi): Restructure API: Remove middleware.\n createRefResolver(options: RefResolverOptions): Ref.Resolver;\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport * as Ref from './Ref';\nimport * as Type from './Type';\n\n/**\n * A an ordered set of objects.\n */\nexport const Collection = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n objects: Schema.Array(Ref.Ref(Obj.Unknown)).pipe(internal.FormInputAnnotation.set(false)),\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.collection',\n version: '0.1.0',\n }),\n);\n\nexport interface Collection extends Schema.Schema.Type<typeof Collection> {}\n\nexport const make = (props: Partial<Obj.MakeProps<typeof Collection>> = {}): Collection =>\n Obj.make(Collection, { objects: [], ...props });\n\nexport const isCollection: (value: unknown) => value is Collection = Obj.instanceOf(Collection);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { QueryAST } from '@dxos/echo-protocol';\nimport { JsonPath } from '@dxos/effect';\nimport { PublicKey } from '@dxos/keys';\n\nimport * as Filter from './Filter';\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport * as Query from './Query';\nimport * as Type from './Type';\n\n/**\n * Stored field metadata (e.g., for UX).\n */\nexport const FieldSchema = Schema.Struct({\n id: Schema.String,\n path: JsonPath,\n visible: Schema.optional(Schema.Boolean),\n\n // TODO(wittjosiah): Presentation-specific?\n referencePath: Schema.optional(JsonPath),\n});\n\nexport type FieldType = Schema.Schema.Type<typeof FieldSchema>;\n\nexport const KeyValueProps = Schema.Record({ key: Schema.String, value: Schema.Any });\n\nexport const createFieldId = () => PublicKey.random().truncate();\n\nexport const Projection = Schema.Struct({\n /**\n * Optional schema override used to customize the underlying schema.\n */\n schema: internal.JsonSchemaType.pipe(Schema.optional),\n\n /**\n * UX metadata associated with displayed fields (in table, form, etc.)\n */\n // TODO(wittjosiah): Should this just be an array of JsonPath?\n fields: Schema.Array(FieldSchema),\n\n /**\n * The id for the field used to pivot the view.\n * E.g., the field to use for kanban columns or the field to use for map coordinates.\n */\n pivotFieldId: Schema.String.pipe(Schema.optional),\n});\n\nexport type Projection = Schema.Schema.Type<typeof Projection>;\n\n/**\n * Views are generated or user-defined projections of a schema's properties.\n * They are used to configure the visual representation of the data.\n */\nconst ViewSchema = Schema.Struct({\n /**\n * Query used to retrieve data.\n * Can be a user-provided query grammar string or a query AST.\n */\n query: Schema.Struct({\n raw: Schema.optional(Schema.String),\n ast: QueryAST.Query,\n }),\n\n /**\n * Projection of the data returned from the query.\n */\n projection: Projection,\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.view',\n version: '0.1.0',\n }),\n internal.SystemTypeAnnotation.set(true),\n);\n\nexport interface View extends Schema.Schema.Type<typeof ViewSchema> {}\n\n/**\n * View instance type.\n */\n// NOTE: This interface is explicitly defined rather than derived from the schema to avoid\n// TypeScript \"cannot be named\" portability errors. The schema contains QueryAST.Query which\n// references internal @dxos/echo-protocol module paths. Without this explicit interface,\n// any schema using Ref.Ref(View) would inherit the non-portable type and fail to compile.\n// TODO(wittjosiah): Find a better solution that doesn't require manually keeping the interface in sync.\nexport const View: Type.Obj<View> = ViewSchema as any;\n\nexport const make = (props: Partial<Obj.MakeProps<typeof View>>): View => {\n return Obj.make(View, {\n query: { ast: Query.select(Filter.nothing()).ast },\n projection: { fields: [] },\n ...props,\n });\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { pipe } from 'effect/Function';\nimport * as Predicate from 'effect/Predicate';\nimport * as Schema from 'effect/Schema';\n\nimport * as Collection from './Collection';\nimport * as Feed from './Feed';\nimport * as Obj from './Obj';\nimport * as View from './View';\n\n/**\n * Abstart set of objects, represented by a view, feed, or collection.\n */\nexport const Dataset = Schema.Union(Feed.Feed, Collection.Collection, View.View);\nexport type Dataset = Feed.Feed | Collection.Collection | View.View;\n\nexport const isDataset: (value: unknown) => value is Dataset = pipe(\n Obj.instanceOf(Feed.Feed),\n Predicate.or(Obj.instanceOf(Collection.Collection)),\n Predicate.or(Obj.instanceOf(View.View)),\n);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,YAAAA,iBAAgB;AAEzB,SAASC,WAAW;;;ACNpB;;;ACAA;;;;cAAAC;;AAMA,YAAYC,YAAY;AAUjB,IAAMC,aAAoBC,cAAO;EACtCC,MAAaC,cAAOC,KAAYC,eAAQ;EACxCC,SAAgBC,aAAUC,IAAQC,OAAO,CAAA,EAAGL,KAAcM,oBAAoBC,IAAI,KAAA,CAAA;AACpF,CAAA,EAAGP,KACIQ,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,CAAA;AAKK,IAAMC,QAAO,CAACC,QAAmD,CAAC,MACnED,KAAKf,YAAY;EAAEM,SAAS,CAAA;EAAI,GAAGU;AAAM,CAAA;AAExC,IAAMC,eAA4DC,WAAWlB,UAAAA;;;AC/BpF;;;;;;;cAAAmB;;AAMA,YAAYC,aAAY;AAExB,SAASC,gBAAgB;AACzB,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAWnB,IAAMC,cAAqBC,eAAO;EACvCC,IAAWC;EACXC,MAAMC;EACNC,SAAgBC,iBAAgBC,eAAO;;EAGvCC,eAAsBF,iBAASF,QAAAA;AACjC,CAAA;AAIO,IAAMK,gBAAuBC,eAAO;EAAEC,KAAYT;EAAQU,OAAcC;AAAI,CAAA;AAE5E,IAAMC,gBAAgB,MAAMC,UAAUC,OAAM,EAAGC,SAAQ;AAEvD,IAAMC,aAAoBlB,eAAO;;;;EAItCmB,QAAiBC,eAAeC,KAAYf,gBAAQ;;;;;EAMpDgB,QAAeC,cAAMxB,WAAAA;;;;;EAMrByB,cAAqBtB,eAAOmB,KAAYf,gBAAQ;AAClD,CAAA;AAQA,IAAMmB,aAAoBzB,eAAO;;;;;EAK/B0B,OAAc1B,eAAO;IACnB2B,KAAYrB,iBAAgBJ,cAAM;IAClC0B,KAAKC,SAASC;EAChB,CAAA;;;;EAKAC,YAAYb;AACd,CAAA,EAAGG,KACIW,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACSC,qBAAqBC,IAAI,IAAA,CAAA;AAa7B,IAAMC,OAAuBZ;AAE7B,IAAMa,QAAO,CAACC,UAAAA;AACnB,SAAWD,KAAKD,MAAM;IACpBX,OAAO;MAAEE,KAAWY,OAAcC,QAAO,CAAA,EAAIb;IAAI;IACjDG,YAAY;MAAET,QAAQ,CAAA;IAAG;IACzB,GAAGiB;EACL,CAAA;AACF;;;ACrGA;;;;;AAMA,SAASG,YAAY;AACrB,YAAYC,eAAe;AAC3B,YAAYC,aAAY;AAUjB,IAAMC,UAAiBC,cAAWC,MAAiBC,YAAiBC,IAAI;AAGxE,IAAMC,YAAkDC,KACzDC,WAAgBL,IAAI,GACdM,aAAOD,WAAsBJ,UAAU,CAAA,GACvCK,aAAOD,WAAgBH,IAAI,CAAA,CAAA;",
6
+ "names": ["QueryAST", "DXN", "make", "Schema", "Collection", "Struct", "name", "String", "pipe", "optional", "objects", "Array", "Ref", "Unknown", "FormInputAnnotation", "set", "object", "typename", "version", "make", "props", "isCollection", "instanceOf", "make", "Schema", "QueryAST", "JsonPath", "PublicKey", "FieldSchema", "Struct", "id", "String", "path", "JsonPath", "visible", "optional", "Boolean", "referencePath", "KeyValueProps", "Record", "key", "value", "Any", "createFieldId", "PublicKey", "random", "truncate", "Projection", "schema", "JsonSchemaType", "pipe", "fields", "Array", "pivotFieldId", "ViewSchema", "query", "raw", "ast", "QueryAST", "Query", "projection", "object", "typename", "version", "SystemTypeAnnotation", "set", "View", "make", "props", "select", "nothing", "pipe", "Predicate", "Schema", "Dataset", "Union", "Feed", "Collection", "View", "isDataset", "pipe", "instanceOf", "or"]
7
+ }
@@ -0,0 +1,97 @@
1
+ import {
2
+ EchoObjectSchema,
3
+ EchoRelationSchema,
4
+ EchoSchema,
5
+ PersistentSchema,
6
+ isMutable
7
+ } from "./chunk-MFJPOZDU.mjs";
8
+ import {
9
+ getSchemaDXN,
10
+ getSchemaTypename,
11
+ getSchemaVersion,
12
+ getTypeAnnotation
13
+ } from "./chunk-SEMVAGBM.mjs";
14
+ import {
15
+ EntityKind,
16
+ SchemaKindId
17
+ } from "./chunk-WYOKA6AE.mjs";
18
+ import {
19
+ __export
20
+ } from "./chunk-J5LGTIGS.mjs";
21
+
22
+ // src/Type.ts
23
+ var Type_exports = {};
24
+ __export(Type_exports, {
25
+ PersistentType: () => PersistentType,
26
+ RuntimeType: () => RuntimeType,
27
+ getDXN: () => getDXN,
28
+ getMeta: () => getMeta,
29
+ getTypename: () => getTypename,
30
+ getVersion: () => getVersion,
31
+ isMutable: () => isMutable2,
32
+ isObjectSchema: () => isObjectSchema,
33
+ isRelationSchema: () => isRelationSchema,
34
+ object: () => object,
35
+ relation: () => relation
36
+ });
37
+ import { invariant } from "@dxos/invariant";
38
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
39
+ var RuntimeType = EchoSchema;
40
+ var object = EchoObjectSchema;
41
+ var PersistentType = PersistentSchema;
42
+ var relation = EchoRelationSchema;
43
+ var isObjectSchema = (schema) => {
44
+ return schema[SchemaKindId] === EntityKind.Object;
45
+ };
46
+ var isRelationSchema = (schema) => {
47
+ return schema[SchemaKindId] === EntityKind.Relation;
48
+ };
49
+ var getDXN = (schema) => {
50
+ return getSchemaDXN(schema);
51
+ };
52
+ var getTypename = (schema) => {
53
+ const typename = getSchemaTypename(schema);
54
+ invariant(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
55
+ F: __dxlog_file,
56
+ L: 230,
57
+ S: void 0,
58
+ A: [
59
+ "typeof typename === 'string' && !typename.startsWith('dxn:')",
60
+ "'Invalid typename'"
61
+ ]
62
+ });
63
+ return typename;
64
+ };
65
+ var getVersion = (schema) => {
66
+ const version = getSchemaVersion(schema);
67
+ invariant(typeof version === "string" && version.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
68
+ F: __dxlog_file,
69
+ L: 240,
70
+ S: void 0,
71
+ A: [
72
+ "typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
73
+ "'Invalid version'"
74
+ ]
75
+ });
76
+ return version;
77
+ };
78
+ var isMutable2 = isMutable;
79
+ var getMeta = (schema) => {
80
+ return getTypeAnnotation(schema);
81
+ };
82
+
83
+ export {
84
+ RuntimeType,
85
+ object,
86
+ PersistentType,
87
+ relation,
88
+ isObjectSchema,
89
+ isRelationSchema,
90
+ getDXN,
91
+ getTypename,
92
+ getVersion,
93
+ isMutable2 as isMutable,
94
+ getMeta,
95
+ Type_exports
96
+ };
97
+ //# sourceMappingURL=chunk-QLALBCSA.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Type.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type * as Schema from 'effect/Schema';\n\nimport { type EncodedReference } from '@dxos/echo-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { type DXN } from '@dxos/keys';\nimport { type ToMutable } from '@dxos/util';\n\nimport type * as Entity from './Entity';\nimport * as typeInternal from './internal/Type';\nimport * as internal from './internal';\nimport type * as ObjModule from './Obj';\nimport type * as RelationModule from './Relation';\n\n/**\n * Dynamic type that can be constructed, mutated, and persisted in the ECHO database.\n */\nexport const RuntimeType = typeInternal.EchoSchema;\n\n/**\n * Dynamic type that can be constructed, mutated, and persisted in the ECHO database.\n */\nexport type RuntimeType = typeInternal.EchoSchema;\n\n//\n// Internal types (not exported)\n//\n\n/**\n * Type that marks a schema as an ECHO schema.\n * The value indicates the entity kind (Object or Relation).\n */\ntype EchoSchemaKind<K extends internal.EntityKind = internal.EntityKind> = {\n readonly [internal.SchemaKindId]: K;\n};\n\n//\n// Obj - Runtime schema for any ECHO object\n//\n\n/**\n * TypeScript type for an ECHO object schema.\n * `T` is the instance type produced by the schema.\n * `Fields` is the optional struct fields type for introspection.\n *\n * @example\n * ```ts\n * const PersonSchema: Type.Obj<Person> = Schema.Struct({\n * name: Schema.String,\n * }).pipe(Type.object({ typename: 'Person', version: '0.1.0' }));\n *\n * // Access fields for introspection:\n * Object.keys(PersonSchema.fields); // ['name']\n * ```\n */\nexport interface Obj<T, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>\n extends\n internal.TypeMeta,\n EchoSchemaKind<internal.EntityKind.Object>,\n Schema.AnnotableClass<\n Obj<T, Fields>,\n Entity.OfKind<typeof Entity.Kind.Object> & T,\n Schema.Simplify<ObjModule.BaseObjJson & ToMutable<T>>,\n never\n > {\n /**\n * The fields defined in the original struct schema.\n * Allows accessing field definitions for introspection.\n */\n readonly fields: Fields;\n}\n\n/**\n * Structural base type for any ECHO object schema.\n * Accepts both static schemas (created with Type.object()) and EchoSchema.\n * NOTE: Does not include the brand symbol to avoid TS4053 declaration portability issues.\n * Use Type.isObjectSchema() for runtime type guards.\n */\ntype ObjectSchemaBase = Schema.Schema.AnyNoContext & {\n readonly typename: string;\n readonly version: string;\n};\n\n/**\n * Type that represents any ECHO object schema.\n * Accepts both static schemas (Type.object()) and mutable schemas (EchoSchema).\n */\nexport type AnyObj = ObjectSchemaBase;\n\n/**\n * Factory function to create an ECHO object schema.\n * Adds object metadata annotations to an Effect schema.\n *\n * @example\n * ```ts\n * const Person = Schema.Struct({\n * name: Schema.String,\n * }).pipe(Type.object({ typename: 'com.example.type.person', version: '0.1.0' }));\n * ```\n */\nexport const object: {\n (opts: internal.TypeMeta): <Self extends Schema.Schema.Any>(self: Self) => Obj<Schema.Schema.Type<Self>>;\n} = internal.EchoObjectSchema as any;\n\n//\n// PersistentType (Schema stored in database)\n//\n\nexport const PersistentType: Obj<typeInternal.PersistentSchema> = typeInternal.PersistentSchema as any;\n\nexport interface PersistentType extends Schema.Schema.Type<typeof PersistentType> {}\n\n/**\n * TypeScript type for an ECHO relation schema.\n * `T` is the instance type produced by the schema (excluding source/target).\n * `Source` and `Target` are the endpoint types.\n * `Fields` is the optional struct fields type for introspection.\n */\nexport interface Relation<T, Source, Target, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>\n extends\n internal.TypeMeta,\n EchoSchemaKind<internal.EntityKind.Relation>,\n Schema.AnnotableClass<\n Relation<T, Source, Target, Fields>,\n Entity.OfKind<typeof Entity.Kind.Relation> & RelationModule.Endpoints<Source, Target> & T,\n Schema.Simplify<RelationModule.BaseRelationJson & ToMutable<T>>,\n never\n > {\n /**\n * The fields defined in the original struct schema.\n * Allows accessing field definitions for introspection.\n */\n readonly fields: Fields;\n}\n\n/**\n * Structural base type for any ECHO relation schema.\n * Accepts static schemas (created with Type.relation()).\n * NOTE: Does not include the brand symbol to avoid TS4053 declaration portability issues.\n * Use Type.isRelationSchema() for runtime type guards.\n */\ntype RelationSchemaBase = Schema.Schema.AnyNoContext & {\n readonly typename: string;\n readonly version: string;\n};\n\n/**\n * Type that represents any ECHO relation schema.\n * Accepts static schemas (Type.relation()).\n */\nexport type AnyRelation = RelationSchemaBase;\n\n/**\n * Factory function to create an ECHO relation schema.\n * Adds relation metadata annotations to an Effect schema.\n *\n * @example\n * ```ts\n * const WorksFor = Schema.Struct({\n * role: Schema.String,\n * }).pipe(Type.relation({\n * typename: 'com.example.type.works-for',\n * version: '0.1.0',\n * source: Person,\n * target: Company,\n * }));\n * ```\n */\nexport const relation: {\n <SourceSchema extends Schema.Schema.AnyNoContext, TargetSchema extends Schema.Schema.AnyNoContext>(\n opts: internal.EchoRelationSchemaOptions<SourceSchema, TargetSchema>,\n ): <Self extends Schema.Schema.Any>(\n self: Self,\n ) => Relation<Schema.Schema.Type<Self>, Schema.Schema.Type<SourceSchema>, Schema.Schema.Type<TargetSchema>>;\n} = internal.EchoRelationSchema as any;\n\n/**\n * Type alias for any ECHO entity schema (object or relation).\n * Use this in type annotations for schema parameters.\n */\nexport type AnyEntity = AnyObj | AnyRelation;\n\n/**\n * Type guard to check if a schema is an object schema.\n * NOTE: This checks SCHEMAS, not instances. Use Obj.isObject for instances.\n */\nexport const isObjectSchema = (schema: AnyEntity): schema is AnyObj => {\n return (schema as any)[internal.SchemaKindId] === internal.EntityKind.Object;\n};\n\n/**\n * Type guard to check if a schema is a relation schema.\n * NOTE: This checks SCHEMAS, not instances. Use Relation.isRelation for instances.\n */\nexport const isRelationSchema = (schema: AnyEntity): schema is AnyRelation => {\n return (schema as any)[internal.SchemaKindId] === internal.EntityKind.Relation;\n};\n\n/**\n * Type that represents any Ref schema (with unknown target type).\n * This is a schema type, not an instance type.\n */\nexport type AnyRef = Schema.Schema<internal.Ref<any>, EncodedReference>;\n\n//\n// Schema utility functions\n//\n\n/**\n * Gets the full DXN of the schema.\n * Will include the version if it's a `type` DXN.\n * @example \"dxn:com.example.type.person:0.1.0\"\n * @example \"dxn:echo:SSSSSSSSSS:XXXXXXXXXXXXX\"\n */\nexport const getDXN = (schema: AnyEntity): DXN | undefined => {\n return internal.getSchemaDXN(schema);\n};\n\n/**\n * @param schema - Schema to get the typename from.\n * @returns The typename of the schema. Example: `com.example.type.person`.\n */\nexport const getTypename = (schema: AnyEntity): string => {\n const typename = internal.getSchemaTypename(schema);\n invariant(typeof typename === 'string' && !typename.startsWith('dxn:'), 'Invalid typename');\n return typename;\n};\n\n/**\n * Gets the version of the schema.\n * @example 0.1.0\n */\nexport const getVersion = (schema: AnyEntity): string => {\n const version = internal.getSchemaVersion(schema);\n invariant(typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/), 'Invalid version');\n return version;\n};\n\n/**\n * @returns True if the schema is mutable.\n */\nexport const isMutable = typeInternal.isMutable;\n\n/**\n * ECHO type metadata.\n */\nexport type Meta = internal.TypeAnnotation;\n\n/**\n * Gets the meta data of the schema.\n */\nexport const getMeta = (schema: AnyEntity): Meta | undefined => {\n return internal.getTypeAnnotation(schema);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;mBAAAA;EAAA;;;;;AASA,SAASC,iBAAiB;;AAanB,IAAMC,cAA2BC;AAmFjC,IAAMC,SAEAC;AAMN,IAAMC,iBAAkEC;AA4DxE,IAAMC,WAMAC;AAYN,IAAMC,iBAAiB,CAACC,WAAAA;AAC7B,SAAQA,OAAwBC,YAAY,MAAeC,WAAWC;AACxE;AAMO,IAAMC,mBAAmB,CAACJ,WAAAA;AAC/B,SAAQA,OAAwBC,YAAY,MAAeC,WAAWG;AACxE;AAkBO,IAAMC,SAAS,CAACN,WAAAA;AACrB,SAAgBO,aAAaP,MAAAA;AAC/B;AAMO,IAAMQ,cAAc,CAACR,WAAAA;AAC1B,QAAMS,WAAoBC,kBAAkBV,MAAAA;AAC5CW,YAAU,OAAOF,aAAa,YAAY,CAACA,SAASG,WAAW,MAAA,GAAS,oBAAA;;;;;;;;;AACxE,SAAOH;AACT;AAMO,IAAMI,aAAa,CAACb,WAAAA;AACzB,QAAMc,UAAmBC,iBAAiBf,MAAAA;AAC1CW,YAAU,OAAOG,YAAY,YAAYA,QAAQE,MAAM,iBAAA,GAAoB,mBAAA;;;;;;;;;AAC3E,SAAOF;AACT;AAKO,IAAMG,aAAyBA;AAU/B,IAAMC,UAAU,CAAClB,WAAAA;AACtB,SAAgBmB,kBAAkBnB,MAAAA;AACpC;",
6
+ "names": ["isMutable", "invariant", "RuntimeType", "EchoSchema", "object", "EchoObjectSchema", "PersistentType", "PersistentSchema", "relation", "EchoRelationSchema", "isObjectSchema", "schema", "SchemaKindId", "EntityKind", "Object", "isRelationSchema", "Relation", "getDXN", "getSchemaDXN", "getTypename", "typename", "getSchemaTypename", "invariant", "startsWith", "getVersion", "version", "getSchemaVersion", "match", "isMutable", "getMeta", "getTypeAnnotation"]
7
+ }