@dxos/echo 0.8.4-main.ead640a → 0.8.4-main.effb148878

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 (703) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +10 -11
  3. package/dist/lib/neutral/Annotation.mjs +39 -0
  4. package/dist/lib/neutral/Database.mjs +49 -0
  5. package/dist/lib/neutral/Entity.mjs +68 -0
  6. package/dist/lib/neutral/Err.mjs +12 -0
  7. package/dist/lib/neutral/Extension.mjs +18 -0
  8. package/dist/lib/neutral/Feed.mjs +54 -0
  9. package/dist/lib/neutral/Filter.mjs +74 -0
  10. package/dist/lib/neutral/Filter.mjs.map +7 -0
  11. package/dist/lib/neutral/Format.mjs +86 -0
  12. package/dist/lib/neutral/Format.mjs.map +7 -0
  13. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  14. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  15. package/dist/lib/neutral/Key.mjs +16 -0
  16. package/dist/lib/neutral/Key.mjs.map +7 -0
  17. package/dist/lib/neutral/Migration.mjs +18 -0
  18. package/dist/lib/neutral/Migration.mjs.map +7 -0
  19. package/dist/lib/neutral/Obj.mjs +114 -0
  20. package/dist/lib/neutral/Obj.mjs.map +7 -0
  21. package/dist/lib/neutral/Order.mjs +12 -0
  22. package/dist/lib/neutral/Order.mjs.map +7 -0
  23. package/dist/lib/neutral/Query.mjs +38 -0
  24. package/dist/lib/neutral/Query.mjs.map +7 -0
  25. package/dist/lib/neutral/QueryResult.mjs +2 -0
  26. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  27. package/dist/lib/neutral/Ref.mjs +26 -0
  28. package/dist/lib/neutral/Ref.mjs.map +7 -0
  29. package/dist/lib/neutral/Relation.mjs +95 -0
  30. package/dist/lib/neutral/Relation.mjs.map +7 -0
  31. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  32. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  33. package/dist/lib/neutral/Tag.mjs +29 -0
  34. package/dist/lib/neutral/Tag.mjs.map +7 -0
  35. package/dist/lib/neutral/Type.mjs +63 -0
  36. package/dist/lib/neutral/Type.mjs.map +7 -0
  37. package/dist/lib/neutral/chunk-4SYHDOQA.mjs +48 -0
  38. package/dist/lib/neutral/chunk-4SYHDOQA.mjs.map +7 -0
  39. package/dist/lib/neutral/chunk-4U7OD55H.mjs +47 -0
  40. package/dist/lib/neutral/chunk-4U7OD55H.mjs.map +7 -0
  41. package/dist/lib/neutral/chunk-52NG2XEE.mjs +34 -0
  42. package/dist/lib/neutral/chunk-52NG2XEE.mjs.map +7 -0
  43. package/dist/lib/neutral/chunk-A5HDDVKS.mjs +94 -0
  44. package/dist/lib/neutral/chunk-A5HDDVKS.mjs.map +7 -0
  45. package/dist/lib/neutral/chunk-EZ4XJFHJ.mjs +54 -0
  46. package/dist/lib/neutral/chunk-EZ4XJFHJ.mjs.map +7 -0
  47. package/dist/lib/neutral/chunk-F625JEZB.mjs +365 -0
  48. package/dist/lib/neutral/chunk-F625JEZB.mjs.map +7 -0
  49. package/dist/lib/neutral/chunk-FFCN66OF.mjs +420 -0
  50. package/dist/lib/neutral/chunk-FFCN66OF.mjs.map +7 -0
  51. package/dist/lib/neutral/chunk-GOHDOJE3.mjs +51 -0
  52. package/dist/lib/neutral/chunk-GOHDOJE3.mjs.map +7 -0
  53. package/dist/lib/neutral/chunk-GWFFC34K.mjs +50 -0
  54. package/dist/lib/neutral/chunk-GWFFC34K.mjs.map +7 -0
  55. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  56. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  57. package/dist/lib/neutral/chunk-J7QWJQQV.mjs +318 -0
  58. package/dist/lib/neutral/chunk-J7QWJQQV.mjs.map +7 -0
  59. package/dist/lib/neutral/chunk-JTHNDGAR.mjs +27 -0
  60. package/dist/lib/neutral/chunk-JTHNDGAR.mjs.map +7 -0
  61. package/dist/lib/neutral/chunk-K5RH2PBH.mjs +361 -0
  62. package/dist/lib/neutral/chunk-K5RH2PBH.mjs.map +7 -0
  63. package/dist/lib/neutral/chunk-KHRAQDYX.mjs +343 -0
  64. package/dist/lib/neutral/chunk-KHRAQDYX.mjs.map +7 -0
  65. package/dist/lib/neutral/chunk-L65CW5EI.mjs +156 -0
  66. package/dist/lib/neutral/chunk-L65CW5EI.mjs.map +7 -0
  67. package/dist/lib/neutral/chunk-LNZIPZX6.mjs +2186 -0
  68. package/dist/lib/neutral/chunk-LNZIPZX6.mjs.map +7 -0
  69. package/dist/lib/neutral/chunk-MPXUNTME.mjs +41 -0
  70. package/dist/lib/neutral/chunk-MPXUNTME.mjs.map +7 -0
  71. package/dist/lib/neutral/chunk-O2EOH7XQ.mjs +420 -0
  72. package/dist/lib/neutral/chunk-O2EOH7XQ.mjs.map +7 -0
  73. package/dist/lib/neutral/chunk-Q7ID37KF.mjs +278 -0
  74. package/dist/lib/neutral/chunk-Q7ID37KF.mjs.map +7 -0
  75. package/dist/lib/neutral/chunk-QLYEQ5VA.mjs +205 -0
  76. package/dist/lib/neutral/chunk-QLYEQ5VA.mjs.map +7 -0
  77. package/dist/lib/neutral/chunk-SSDGRJ3A.mjs +747 -0
  78. package/dist/lib/neutral/chunk-SSDGRJ3A.mjs.map +7 -0
  79. package/dist/lib/neutral/chunk-TTCSATUD.mjs +42 -0
  80. package/dist/lib/neutral/chunk-TTCSATUD.mjs.map +7 -0
  81. package/dist/lib/neutral/chunk-UEFRFUYC.mjs +25 -0
  82. package/dist/lib/neutral/chunk-UEFRFUYC.mjs.map +7 -0
  83. package/dist/lib/neutral/chunk-UN7K472Q.mjs +132 -0
  84. package/dist/lib/neutral/chunk-UN7K472Q.mjs.map +7 -0
  85. package/dist/lib/neutral/chunk-UQAMAXDU.mjs +243 -0
  86. package/dist/lib/neutral/chunk-UQAMAXDU.mjs.map +7 -0
  87. package/dist/lib/neutral/chunk-V5NE2X7Y.mjs +7 -0
  88. package/dist/lib/neutral/chunk-V5NE2X7Y.mjs.map +7 -0
  89. package/dist/lib/neutral/chunk-V72DY6LU.mjs +7 -0
  90. package/dist/lib/neutral/chunk-V72DY6LU.mjs.map +7 -0
  91. package/dist/lib/neutral/chunk-ZII2BGPM.mjs +269 -0
  92. package/dist/lib/neutral/chunk-ZII2BGPM.mjs.map +7 -0
  93. package/dist/lib/neutral/chunk-ZM7VFIS2.mjs +93 -0
  94. package/dist/lib/neutral/chunk-ZM7VFIS2.mjs.map +7 -0
  95. package/dist/lib/neutral/index.mjs +111 -0
  96. package/dist/lib/neutral/index.mjs.map +7 -0
  97. package/dist/lib/neutral/internal/index.mjs +513 -0
  98. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  99. package/dist/lib/neutral/meta.json +1 -0
  100. package/dist/lib/neutral/testing/index.mjs +418 -0
  101. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  102. package/dist/types/src/Annotation.d.ts +24 -0
  103. package/dist/types/src/Annotation.d.ts.map +1 -0
  104. package/dist/types/src/Collection.d.ts +15 -0
  105. package/dist/types/src/Collection.d.ts.map +1 -0
  106. package/dist/types/src/Database.d.ts +201 -0
  107. package/dist/types/src/Database.d.ts.map +1 -0
  108. package/dist/types/src/Dataset.d.ts +29 -0
  109. package/dist/types/src/Dataset.d.ts.map +1 -0
  110. package/dist/types/src/Entity.d.ts +236 -0
  111. package/dist/types/src/Entity.d.ts.map +1 -0
  112. package/dist/types/src/Entity.test.d.ts +2 -0
  113. package/dist/types/src/Entity.test.d.ts.map +1 -0
  114. package/dist/types/src/Err.d.ts +107 -0
  115. package/dist/types/src/Err.d.ts.map +1 -0
  116. package/dist/types/src/Extension.d.ts +80 -0
  117. package/dist/types/src/Extension.d.ts.map +1 -0
  118. package/dist/types/src/Extension.test.d.ts +2 -0
  119. package/dist/types/src/Extension.test.d.ts.map +1 -0
  120. package/dist/types/src/Feed.d.ts +229 -0
  121. package/dist/types/src/Feed.d.ts.map +1 -0
  122. package/dist/types/src/Filter.d.ts +183 -0
  123. package/dist/types/src/Filter.d.ts.map +1 -0
  124. package/dist/types/src/Filter.test.d.ts +2 -0
  125. package/dist/types/src/Filter.test.d.ts.map +1 -0
  126. package/dist/types/src/Format.d.ts +4 -0
  127. package/dist/types/src/Format.d.ts.map +1 -0
  128. package/dist/types/src/Hypergraph.d.ts +65 -0
  129. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  130. package/dist/types/src/Json.d.ts +33 -0
  131. package/dist/types/src/Json.d.ts.map +1 -0
  132. package/dist/types/src/Json.test.d.ts +2 -0
  133. package/dist/types/src/Json.test.d.ts.map +1 -0
  134. package/dist/types/src/JsonSchema.d.ts +16 -0
  135. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  136. package/dist/types/src/Key.d.ts +2 -1
  137. package/dist/types/src/Key.d.ts.map +1 -1
  138. package/dist/types/src/Migration.d.ts +72 -0
  139. package/dist/types/src/Migration.d.ts.map +1 -0
  140. package/dist/types/src/Obj.d.ts +459 -107
  141. package/dist/types/src/Obj.d.ts.map +1 -1
  142. package/dist/types/src/Obj.test.d.ts +2 -0
  143. package/dist/types/src/Obj.test.d.ts.map +1 -0
  144. package/dist/types/src/Order.d.ts +16 -0
  145. package/dist/types/src/Order.d.ts.map +1 -0
  146. package/dist/types/src/Query.d.ts +225 -0
  147. package/dist/types/src/Query.d.ts.map +1 -0
  148. package/dist/types/src/Query.test.d.ts +2 -0
  149. package/dist/types/src/Query.test.d.ts.map +1 -0
  150. package/dist/types/src/QueryResult.d.ts +80 -0
  151. package/dist/types/src/QueryResult.d.ts.map +1 -0
  152. package/dist/types/src/Ref.d.ts +69 -11
  153. package/dist/types/src/Ref.d.ts.map +1 -1
  154. package/dist/types/src/Relation.d.ts +316 -23
  155. package/dist/types/src/Relation.d.ts.map +1 -1
  156. package/dist/types/src/Relation.test.d.ts +2 -0
  157. package/dist/types/src/Relation.test.d.ts.map +1 -0
  158. package/dist/types/src/SchemaRegistry.d.ts +83 -0
  159. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  160. package/dist/types/src/Tag.d.ts +18 -0
  161. package/dist/types/src/Tag.d.ts.map +1 -0
  162. package/dist/types/src/Type.d.ts +378 -106
  163. package/dist/types/src/Type.d.ts.map +1 -1
  164. package/dist/types/src/Type.test.d.ts +2 -0
  165. package/dist/types/src/Type.test.d.ts.map +1 -0
  166. package/dist/types/src/View.d.ts +65 -0
  167. package/dist/types/src/View.d.ts.map +1 -0
  168. package/dist/types/src/exemplars.test.d.ts +2 -0
  169. package/dist/types/src/exemplars.test.d.ts.map +1 -0
  170. package/dist/types/src/hierarchy.test.d.ts +2 -0
  171. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  172. package/dist/types/src/index.d.ts +22 -5
  173. package/dist/types/src/index.d.ts.map +1 -1
  174. package/dist/types/src/internal/Annotation/annotations.d.ts +251 -0
  175. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  176. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  177. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  178. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  179. package/dist/types/src/internal/Annotation/sorting.d.ts +24 -0
  180. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  181. package/dist/types/src/internal/Annotation/util.d.ts +48 -0
  182. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  183. package/dist/types/src/internal/Entity/api.d.ts +13 -0
  184. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  185. package/dist/types/src/internal/Entity/entity.d.ts +67 -0
  186. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  187. package/dist/types/src/internal/Entity/index.d.ts +10 -0
  188. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  189. package/dist/types/src/internal/Entity/model.d.ts +57 -0
  190. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  191. package/dist/types/src/internal/Entity/object.d.ts +18 -0
  192. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  193. package/dist/types/src/internal/Entity/relation.d.ts +51 -0
  194. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  195. package/dist/types/src/internal/Entity/type-kind.d.ts +24 -0
  196. package/dist/types/src/internal/Entity/type-kind.d.ts.map +1 -0
  197. package/dist/types/src/internal/Entity/type-uri.d.ts +25 -0
  198. package/dist/types/src/internal/Entity/type-uri.d.ts.map +1 -0
  199. package/dist/types/src/internal/Entity/util.d.ts +2 -0
  200. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  201. package/dist/types/src/internal/Entity/version.d.ts +42 -0
  202. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  203. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  204. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  205. package/dist/types/src/internal/{formats → Format}/format.d.ts +6 -3
  206. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  207. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  208. package/dist/types/src/internal/{formats → Format}/index.d.ts +2 -2
  209. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  210. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  211. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  212. package/dist/types/src/internal/{formats → Format}/select.d.ts +6 -4
  213. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  214. package/dist/types/src/internal/{formats → Format}/string.d.ts +4 -0
  215. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  216. package/dist/types/src/internal/{formats → Format}/types.d.ts +14 -10
  217. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  218. package/dist/types/src/internal/{json → JsonSchema}/annotations.d.ts +1 -1
  219. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  220. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  221. package/dist/types/src/internal/JsonSchema/index.d.ts +5 -0
  222. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  223. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  224. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +131 -30
  225. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  226. package/dist/types/src/internal/{json → JsonSchema}/json-schema.d.ts +6 -3
  227. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  228. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  229. package/dist/types/src/internal/Obj/clone.d.ts +8 -0
  230. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  231. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  232. package/dist/types/src/internal/{object/create.d.ts → Obj/create-object.d.ts} +13 -16
  233. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  234. package/dist/types/src/internal/Obj/create-object.test.d.ts +2 -0
  235. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  236. package/dist/types/src/internal/Obj/deleted.d.ts +6 -0
  237. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  238. package/dist/types/src/internal/Obj/index.d.ts +10 -0
  239. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  240. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  241. package/dist/types/src/internal/Obj/json-serializer.d.ts +45 -0
  242. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  243. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  244. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  245. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  246. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  247. package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
  248. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  249. package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
  250. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  251. package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
  252. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  253. package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
  254. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  255. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  256. package/dist/types/src/internal/Query.d.ts +10 -0
  257. package/dist/types/src/internal/Query.d.ts.map +1 -0
  258. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  259. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +4 -4
  260. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  261. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +79 -31
  262. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  263. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  264. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  265. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  266. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  267. package/dist/types/src/internal/Type/index.d.ts +3 -0
  268. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  269. package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -1
  270. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  271. package/dist/types/src/internal/Type/type-schema.d.ts +52 -0
  272. package/dist/types/src/internal/Type/type-schema.d.ts.map +1 -0
  273. package/dist/types/src/internal/common/api/index.d.ts +11 -0
  274. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  275. package/dist/types/src/internal/common/api/meta.d.ts +42 -0
  276. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  277. package/dist/types/src/internal/common/index.d.ts +4 -0
  278. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  279. package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
  280. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  281. package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -0
  282. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  283. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts +5 -0
  284. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  285. package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
  286. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  287. package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -0
  288. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  289. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  290. package/dist/types/src/internal/common/proxy/index.d.ts +14 -0
  291. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  292. package/dist/types/src/internal/common/proxy/json-serializer.d.ts +6 -0
  293. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  294. package/dist/types/src/internal/common/proxy/make-object.d.ts +19 -0
  295. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  296. package/dist/types/src/internal/common/proxy/ownership.d.ts +57 -0
  297. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  298. package/dist/types/src/internal/common/proxy/proxy-types.d.ts +18 -0
  299. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  300. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts +47 -0
  301. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  302. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
  303. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  304. package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
  305. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  306. package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
  307. package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
  308. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  309. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  310. package/dist/types/src/internal/common/proxy/symbols.d.ts +3 -0
  311. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  312. package/dist/types/src/internal/common/proxy/typed-handler.d.ts +64 -0
  313. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  314. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  315. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  316. package/dist/types/src/internal/common/types/base.d.ts +27 -0
  317. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  318. package/dist/types/src/internal/common/types/entity.d.ts +94 -0
  319. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  320. package/dist/types/src/internal/common/types/index.d.ts +7 -0
  321. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  322. package/dist/types/src/internal/common/types/meta.d.ts +43 -0
  323. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  324. package/dist/types/src/internal/common/types/model-symbols.d.ts +58 -0
  325. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  326. package/dist/types/src/internal/common/types/typename.d.ts +28 -0
  327. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  328. package/dist/types/src/internal/common/types/version.d.ts +15 -0
  329. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  330. package/dist/types/src/internal/index.d.ts +10 -14
  331. package/dist/types/src/internal/index.d.ts.map +1 -1
  332. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  333. package/dist/types/src/testing/index.d.ts +3 -3
  334. package/dist/types/src/testing/index.d.ts.map +1 -1
  335. package/dist/types/src/testing/test-data.d.ts +18 -0
  336. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  337. package/dist/types/src/testing/test-schema.d.ts +298 -0
  338. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  339. package/dist/types/src/testing/util.d.ts +23 -0
  340. package/dist/types/src/testing/util.d.ts.map +1 -0
  341. package/dist/types/tsconfig.tsbuildinfo +1 -1
  342. package/package.json +117 -66
  343. package/src/Annotation.ts +49 -0
  344. package/src/Collection.ts +36 -0
  345. package/src/Database.ts +356 -0
  346. package/src/Dataset.ts +34 -0
  347. package/src/Entity.test.ts +132 -0
  348. package/src/Entity.ts +332 -0
  349. package/src/Err.ts +40 -0
  350. package/src/Extension.test.ts +235 -0
  351. package/src/Extension.ts +122 -0
  352. package/src/Feed.ts +356 -0
  353. package/src/Filter.test.ts +90 -0
  354. package/src/Filter.ts +507 -0
  355. package/src/Format.ts +9 -0
  356. package/src/Hypergraph.ts +79 -0
  357. package/src/Json.test.ts +175 -0
  358. package/src/Json.ts +103 -0
  359. package/src/JsonSchema.ts +26 -0
  360. package/src/Key.ts +4 -1
  361. package/src/Migration.ts +114 -0
  362. package/src/Obj.test.ts +550 -0
  363. package/src/Obj.ts +754 -267
  364. package/src/Order.ts +46 -0
  365. package/src/Query.test.ts +822 -0
  366. package/src/Query.ts +589 -0
  367. package/src/QueryResult.ts +106 -0
  368. package/src/Ref.ts +98 -10
  369. package/src/Relation.test.ts +88 -0
  370. package/src/Relation.ts +491 -67
  371. package/src/SchemaRegistry.ts +101 -0
  372. package/src/{query/tag.ts → Tag.ts} +15 -12
  373. package/src/Type.test.ts +197 -0
  374. package/src/Type.ts +605 -151
  375. package/src/View.ts +101 -0
  376. package/src/exemplars.test.ts +21 -0
  377. package/src/hierarchy.test.ts +33 -0
  378. package/src/index.ts +23 -6
  379. package/src/internal/Annotation/annotations.test.ts +165 -0
  380. package/src/internal/Annotation/annotations.ts +567 -0
  381. package/src/internal/Annotation/index.ts +7 -0
  382. package/src/internal/Annotation/sorting.ts +51 -0
  383. package/src/internal/Annotation/util.ts +93 -0
  384. package/src/internal/Entity/api.ts +30 -0
  385. package/src/internal/Entity/entity.ts +246 -0
  386. package/src/internal/Entity/index.ts +13 -0
  387. package/src/internal/Entity/model.ts +120 -0
  388. package/src/internal/Entity/object.ts +65 -0
  389. package/src/internal/Entity/relation.ts +179 -0
  390. package/src/internal/Entity/type-kind.ts +67 -0
  391. package/src/internal/Entity/type-uri.ts +87 -0
  392. package/src/internal/Entity/util.ts +34 -0
  393. package/src/internal/Entity/version.ts +96 -0
  394. package/src/internal/{formats → Format}/date.test.ts +1 -2
  395. package/src/internal/{formats → Format}/date.ts +5 -9
  396. package/src/internal/{formats → Format}/format.test.ts +6 -7
  397. package/src/internal/{formats → Format}/format.ts +8 -6
  398. package/src/internal/{formats → Format}/index.ts +2 -3
  399. package/src/internal/{formats → Format}/number.ts +5 -5
  400. package/src/internal/{formats → Format}/object.ts +4 -4
  401. package/src/internal/{formats → Format}/select.ts +6 -4
  402. package/src/internal/{formats → Format}/string.ts +14 -9
  403. package/src/internal/{formats → Format}/types.ts +54 -43
  404. package/src/internal/{json → JsonSchema}/annotations.ts +3 -3
  405. package/src/internal/{json-schema → JsonSchema}/index.ts +2 -0
  406. package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +4 -2
  407. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +36 -36
  408. package/src/internal/{json → JsonSchema}/json-schema.test.ts +92 -175
  409. package/src/internal/{json → JsonSchema}/json-schema.ts +69 -37
  410. package/src/internal/Obj/clone.ts +52 -0
  411. package/src/internal/{object → Obj}/common.ts +3 -4
  412. package/src/internal/{object/create.test.ts → Obj/create-object.test.ts} +34 -37
  413. package/src/internal/Obj/create-object.ts +135 -0
  414. package/src/internal/Obj/deleted.ts +19 -0
  415. package/src/internal/Obj/index.ts +13 -0
  416. package/src/internal/{object → Obj}/inspect.ts +5 -7
  417. package/src/internal/Obj/json-serializer.test.ts +185 -0
  418. package/src/internal/Obj/json-serializer.ts +260 -0
  419. package/src/internal/{object → Obj}/schema-validator.test.ts +3 -7
  420. package/src/internal/Obj/schema-validator.ts +6 -0
  421. package/src/internal/Obj/set-value.test.ts +258 -0
  422. package/src/internal/Obj/set-value.ts +165 -0
  423. package/src/internal/Obj/snapshot.ts +111 -0
  424. package/src/internal/Obj/typed-object.test.ts +32 -0
  425. package/src/internal/Obj/typed-object.ts +30 -0
  426. package/src/internal/Query.ts +156 -0
  427. package/src/internal/{ref → Ref}/ref-array.ts +4 -5
  428. package/src/internal/{ref → Ref}/ref.test.ts +21 -30
  429. package/src/internal/{ref → Ref}/ref.ts +209 -98
  430. package/src/internal/{projection → Type}/compose.test.ts +9 -9
  431. package/src/internal/{projection → Type}/compose.ts +14 -9
  432. package/src/internal/Type/index.ts +6 -0
  433. package/src/internal/{schema → Type}/manipulation.ts +0 -25
  434. package/src/internal/Type/type-schema.ts +60 -0
  435. package/src/internal/common/README.md +102 -0
  436. package/src/internal/common/api/index.ts +15 -0
  437. package/src/internal/common/api/meta.ts +88 -0
  438. package/src/internal/{testing → common}/index.ts +2 -1
  439. package/src/internal/common/proxy/change-context.ts +138 -0
  440. package/src/internal/common/proxy/change.test.ts +519 -0
  441. package/src/internal/common/proxy/define-hidden-property.ts +14 -0
  442. package/src/internal/common/proxy/errors.ts +42 -0
  443. package/src/internal/common/proxy/event-batch.ts +44 -0
  444. package/src/internal/common/proxy/handler.test.ts +121 -0
  445. package/src/internal/common/proxy/index.ts +17 -0
  446. package/src/internal/common/proxy/json-serializer.ts +93 -0
  447. package/src/internal/common/proxy/make-object.ts +128 -0
  448. package/src/internal/common/proxy/ownership.ts +252 -0
  449. package/src/internal/common/proxy/proxy-types.ts +23 -0
  450. package/src/internal/common/proxy/proxy-utils.ts +150 -0
  451. package/src/internal/common/proxy/reactive-array.ts +71 -0
  452. package/src/internal/common/proxy/reactive.test.ts +54 -0
  453. package/src/internal/common/proxy/reactive.ts +77 -0
  454. package/src/internal/{object → common/proxy}/schema-validator.ts +6 -3
  455. package/src/internal/common/proxy/schema.test.ts +107 -0
  456. package/src/internal/common/proxy/symbols.ts +7 -0
  457. package/src/internal/common/proxy/typed-handler.test.ts +314 -0
  458. package/src/internal/common/proxy/typed-handler.ts +507 -0
  459. package/src/internal/common/proxy/typed-object.test.ts +103 -0
  460. package/src/internal/common/types/base.ts +43 -0
  461. package/src/internal/common/types/entity.ts +133 -0
  462. package/src/internal/common/types/index.ts +10 -0
  463. package/src/internal/common/types/meta.ts +79 -0
  464. package/src/internal/common/types/model-symbols.ts +74 -0
  465. package/src/internal/common/types/typename.ts +91 -0
  466. package/src/internal/common/types/version.ts +19 -0
  467. package/src/internal/index.ts +12 -17
  468. package/src/testing/api.test.ts +129 -0
  469. package/src/testing/index.ts +3 -3
  470. package/src/testing/test-data.ts +189 -0
  471. package/src/testing/test-schema.ts +204 -0
  472. package/src/testing/util.ts +88 -0
  473. package/dist/lib/browser/chunk-HKFCK2GL.mjs +0 -175
  474. package/dist/lib/browser/chunk-HKFCK2GL.mjs.map +0 -7
  475. package/dist/lib/browser/chunk-MAAYELT7.mjs +0 -830
  476. package/dist/lib/browser/chunk-MAAYELT7.mjs.map +0 -7
  477. package/dist/lib/browser/chunk-MB6MMNFP.mjs +0 -3857
  478. package/dist/lib/browser/chunk-MB6MMNFP.mjs.map +0 -7
  479. package/dist/lib/browser/index.mjs +0 -35
  480. package/dist/lib/browser/internal/index.mjs +0 -332
  481. package/dist/lib/browser/meta.json +0 -1
  482. package/dist/lib/browser/query/index.mjs +0 -15
  483. package/dist/lib/browser/testing/index.mjs +0 -298
  484. package/dist/lib/browser/testing/index.mjs.map +0 -7
  485. package/dist/lib/node-esm/chunk-5NWDGIBT.mjs +0 -830
  486. package/dist/lib/node-esm/chunk-5NWDGIBT.mjs.map +0 -7
  487. package/dist/lib/node-esm/chunk-AUAH4E2J.mjs +0 -175
  488. package/dist/lib/node-esm/chunk-AUAH4E2J.mjs.map +0 -7
  489. package/dist/lib/node-esm/chunk-BQRA4VLX.mjs +0 -3857
  490. package/dist/lib/node-esm/chunk-BQRA4VLX.mjs.map +0 -7
  491. package/dist/lib/node-esm/index.mjs +0 -35
  492. package/dist/lib/node-esm/internal/index.mjs +0 -332
  493. package/dist/lib/node-esm/meta.json +0 -1
  494. package/dist/lib/node-esm/query/index.mjs +0 -15
  495. package/dist/lib/node-esm/testing/index.mjs +0 -298
  496. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  497. package/dist/types/src/errors.d.ts +0 -72
  498. package/dist/types/src/errors.d.ts.map +0 -1
  499. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  500. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  501. package/dist/types/src/internal/ast/annotations.d.ts +0 -125
  502. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  503. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  504. package/dist/types/src/internal/ast/entity-kind.d.ts +0 -10
  505. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  506. package/dist/types/src/internal/ast/index.d.ts +0 -5
  507. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  508. package/dist/types/src/internal/ast/types.d.ts +0 -6
  509. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  510. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  511. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  512. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  513. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  514. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  515. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  516. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  517. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  518. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  519. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  520. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  521. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  522. package/dist/types/src/internal/json/index.d.ts +0 -2
  523. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  524. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  525. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  526. package/dist/types/src/internal/json-schema/index.d.ts +0 -3
  527. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  528. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  529. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  530. package/dist/types/src/internal/object/accessors.d.ts +0 -37
  531. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  532. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  533. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  534. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  535. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  536. package/dist/types/src/internal/object/deleted.d.ts +0 -6
  537. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  538. package/dist/types/src/internal/object/entity.d.ts +0 -33
  539. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  540. package/dist/types/src/internal/object/expando.d.ts +0 -14
  541. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  542. package/dist/types/src/internal/object/ids.d.ts +0 -6
  543. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  544. package/dist/types/src/internal/object/index.d.ts +0 -16
  545. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  546. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  547. package/dist/types/src/internal/object/json-serializer.d.ts +0 -32
  548. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  549. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  550. package/dist/types/src/internal/object/meta.d.ts +0 -31
  551. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  552. package/dist/types/src/internal/object/model.d.ts +0 -117
  553. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  554. package/dist/types/src/internal/object/relation.d.ts +0 -17
  555. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  556. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  557. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  558. package/dist/types/src/internal/object/typed-object.d.ts +0 -31
  559. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  560. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  561. package/dist/types/src/internal/object/typename.d.ts +0 -15
  562. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  563. package/dist/types/src/internal/object/version.d.ts +0 -14
  564. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  565. package/dist/types/src/internal/projection/compose.d.ts +0 -6
  566. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  567. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  568. package/dist/types/src/internal/projection/index.d.ts +0 -2
  569. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  570. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  571. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  572. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  573. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  574. package/dist/types/src/internal/proxy/typed-handler.d.ts +0 -44
  575. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  576. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  577. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  578. package/dist/types/src/internal/query/index.d.ts +0 -2
  579. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  580. package/dist/types/src/internal/query/query.d.ts +0 -17
  581. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  582. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  583. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  584. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  585. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  586. package/dist/types/src/internal/schema/echo-schema.d.ts +0 -168
  587. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  588. package/dist/types/src/internal/schema/index.d.ts +0 -7
  589. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  590. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  591. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  592. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  593. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  594. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  595. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  596. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  597. package/dist/types/src/internal/testing/index.d.ts +0 -3
  598. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  599. package/dist/types/src/internal/testing/types.d.ts +0 -455
  600. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  601. package/dist/types/src/internal/testing/utils.d.ts +0 -10
  602. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  603. package/dist/types/src/internal/types/index.d.ts +0 -3
  604. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  605. package/dist/types/src/internal/types/types.d.ts +0 -79
  606. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  607. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  608. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  609. package/dist/types/src/internal/types/util.d.ts +0 -5
  610. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  611. package/dist/types/src/query/index.d.ts +0 -3
  612. package/dist/types/src/query/index.d.ts.map +0 -1
  613. package/dist/types/src/query/query.d.ts +0 -248
  614. package/dist/types/src/query/query.d.ts.map +0 -1
  615. package/dist/types/src/query/query.test.d.ts +0 -2
  616. package/dist/types/src/query/query.test.d.ts.map +0 -1
  617. package/dist/types/src/query/tag.d.ts +0 -17
  618. package/dist/types/src/query/tag.d.ts.map +0 -1
  619. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  620. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  621. package/dist/types/src/testing/types.d.ts +0 -113
  622. package/dist/types/src/testing/types.d.ts.map +0 -1
  623. package/src/errors.ts +0 -18
  624. package/src/internal/ast/annotation-helper.ts +0 -22
  625. package/src/internal/ast/annotations.test.ts +0 -98
  626. package/src/internal/ast/annotations.ts +0 -219
  627. package/src/internal/ast/entity-kind.ts +0 -15
  628. package/src/internal/ast/index.ts +0 -8
  629. package/src/internal/ast/types.ts +0 -17
  630. package/src/internal/json/index.ts +0 -5
  631. package/src/internal/object/accessors.ts +0 -153
  632. package/src/internal/object/create.ts +0 -96
  633. package/src/internal/object/deleted.ts +0 -19
  634. package/src/internal/object/entity.ts +0 -248
  635. package/src/internal/object/expando.ts +0 -21
  636. package/src/internal/object/ids.ts +0 -12
  637. package/src/internal/object/index.ts +0 -19
  638. package/src/internal/object/json-serializer.test.ts +0 -99
  639. package/src/internal/object/json-serializer.ts +0 -225
  640. package/src/internal/object/meta.ts +0 -61
  641. package/src/internal/object/model.ts +0 -170
  642. package/src/internal/object/relation.ts +0 -24
  643. package/src/internal/object/typed-object.test.ts +0 -34
  644. package/src/internal/object/typed-object.ts +0 -88
  645. package/src/internal/object/typename.ts +0 -61
  646. package/src/internal/object/version.ts +0 -22
  647. package/src/internal/projection/index.ts +0 -5
  648. package/src/internal/proxy/handler.test.ts +0 -163
  649. package/src/internal/proxy/reactive-object.ts +0 -108
  650. package/src/internal/proxy/schema.test.ts +0 -136
  651. package/src/internal/proxy/typed-handler.test.ts +0 -102
  652. package/src/internal/proxy/typed-handler.ts +0 -228
  653. package/src/internal/proxy/typed-object.test.ts +0 -100
  654. package/src/internal/query/index.ts +0 -5
  655. package/src/internal/query/query.ts +0 -23
  656. package/src/internal/schema/echo-schema.ts +0 -383
  657. package/src/internal/schema/index.ts +0 -10
  658. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  659. package/src/internal/schema/snapshot.ts +0 -25
  660. package/src/internal/schema/stored-schema.ts +0 -26
  661. package/src/internal/testing/types.ts +0 -211
  662. package/src/internal/testing/utils.ts +0 -54
  663. package/src/internal/types/index.ts +0 -6
  664. package/src/internal/types/types.test.ts +0 -48
  665. package/src/internal/types/types.ts +0 -176
  666. package/src/internal/types/util.ts +0 -9
  667. package/src/query/index.ts +0 -6
  668. package/src/query/query.test.ts +0 -401
  669. package/src/query/query.ts +0 -789
  670. package/src/test/api.test.ts +0 -180
  671. package/src/testing/echo-schema.ts +0 -39
  672. package/src/testing/types.ts +0 -91
  673. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  674. /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
  675. /package/dist/lib/{browser/query/index.mjs.map → neutral/Entity.mjs.map} +0 -0
  676. /package/dist/lib/{node-esm/index.mjs.map → neutral/Err.mjs.map} +0 -0
  677. /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Extension.mjs.map} +0 -0
  678. /package/dist/lib/{node-esm/query/index.mjs.map → neutral/Feed.mjs.map} +0 -0
  679. /package/dist/types/src/internal/{ast → Annotation}/annotations.test.d.ts +0 -0
  680. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  681. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  682. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  683. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  684. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  685. /package/dist/types/src/internal/{json → JsonSchema}/effect-schema.test.d.ts +0 -0
  686. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  687. /package/dist/types/src/internal/{json → JsonSchema}/json-schema.test.d.ts +0 -0
  688. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  689. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  690. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  691. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  692. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  693. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  694. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  695. /package/dist/types/src/internal/{projection → Type}/compose.test.d.ts +0 -0
  696. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  697. /package/dist/types/src/internal/{object → common/proxy}/schema-validator.d.ts +0 -0
  698. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  699. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  700. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  701. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  702. /package/src/internal/{json → JsonSchema}/effect-schema.test.ts +0 -0
  703. /package/src/internal/{ref → Ref}/index.ts +0 -0
@@ -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 * as Schema from 'effect/Schema';\nimport type * as Types from 'effect/Types';\n\nimport { raise } from '@dxos/debug';\nimport { type EncodedReference } from '@dxos/echo-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, EchoURI, type ObjectId, type URI } from '@dxos/keys';\n\nimport type * as Database from './Database';\nimport type * as EntityModule from './Entity';\nimport * as internal from './internal';\nimport * as typeInternal from './internal/Type';\nimport type * as RelationModule from './Relation';\n\n//\n// Internal types (not exported)\n//\n\n/**\n * Structural base shared by the three sibling type-entity interfaces\n * ({@link Obj}, {@link Relation}, {@link Type}). NOT exported — callers\n * should constrain on {@link AnyEntity} when they want \"any of the three\"\n * and on the specific kind interface otherwise.\n */\ninterface BaseTypeEntity<A> {\n /**\n * Entity-kind brand of the type-entity value itself — always `EntityKind.Type`.\n * The kind of instance the type *describes* lives on `[SchemaKindId]`\n * (Object / Relation / Type). Lets `Obj.isObject` / `Relation.isRelation`\n * reject type entities by a single `[KindId]` check.\n */\n readonly [internal.KindId]: internal.EntityKind.Type;\n\n /**\n * Object id. Like all ECHO entities, type entities always carry an id —\n * stamped at construction for in-memory (static) declarations and assigned by\n * the database once persisted. The id does NOT determine the entity's URI:\n * static types resolve to their typename DXN, persisted types to `echo:/<id>`\n * (see `getTypeURIFromSpecifier`).\n */\n readonly id: ObjectId;\n\n readonly name?: string;\n // NOTE: `typename` / `version` are intentionally NOT fields on any type-entity\n // interface. Both static and persisted entities carry them in `ObjectMeta`\n // (`key` / `version`); read them via `Type.getTypename(self)` /\n // `Type.getVersion(self)` — never as a direct property.\n readonly jsonSchema: internal.JsonSchemaType;\n readonly [InstancePhantomId]?: A;\n}\n\n//\n// Obj — `Type.Type` value for an ECHO object schema.\n//\n\n/**\n * TypeScript type for an ECHO object type — a `Type.Type<A>` entity.\n *\n * `T` is the instance type produced by `Obj.make(Foo, props)`. `Fields` is\n * retained as a structural hint (the runtime value still carries `.fields`),\n * but consumers should derive instance/encoded types via `Type.InstanceType`.\n *\n * **Not a `Schema.Schema`.** `Foo.ast` / `Schema.Schema.Type<typeof Foo>` /\n * `Schema.extend(Foo)` no longer typecheck — extract the Effect Schema via\n * `Type.getSchema(Foo)` first, or derive instance types via\n * `Type.InstanceType<typeof Foo>`.\n *\n * @example\n * ```ts\n * const Person = Schema.Struct({\n * name: Schema.String,\n * }).pipe(Type.makeObject(DXN.make('com.example.type.person', '0.1.0')));\n *\n * type Person = Type.InstanceType<typeof Person>;\n * ```\n */\nexport interface Obj<T, Fields extends Schema.Struct.Fields = Schema.Struct.Fields> extends BaseTypeEntity<\n T & EntityModule.OfKind<typeof EntityModule.Kind.Object>\n> {\n /** Schema-kind brand (object). */\n readonly [internal.SchemaKindId]: internal.EntityKind.Object;\n\n /** Source Effect Schema — used internally by `Type.getSchema(self)`. */\n readonly [internal.StaticTypeSchemaSlot]: Schema.Schema.AnyNoContext;\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 * Type that represents any ECHO object type — a `Type.Type` entity branded\n * with the object entity kind, i.e. what `Type.makeObject(dxn)` produces.\n */\nexport type AnyObj = Obj<unknown>;\n\n/**\n * Factory function to create an ECHO object type.\n *\n * Returns a `Type.Type` entity — a live, in-memory `TypeSchema` instance,\n * NOT a `Schema.Schema`. Use `Type.InstanceType<typeof Foo>` for the instance\n * type and `Type.getSchema(Foo)` to obtain the underlying Effect Schema.\n *\n * @example\n * ```ts\n * const Person = Schema.Struct({\n * name: Schema.String,\n * }).pipe(Type.makeObject(DXN.make('com.example.type.person', '0.1.0')));\n * ```\n */\nexport const makeObject: {\n (dxn: DXN.DXN): <Self extends Schema.Schema.Any>(self: Self) => Obj<Schema.Schema.Type<Self>>;\n} = internal.EchoObjectSchema as any;\n\n//\n// Type — the ECHO entity that holds a schema and metadata.\n// Persisted via `db.add()`; subscribed to via `Filter.type(Type.Type)`.\n//\n\n/**\n * ECHO meta-schema entity — stores `{ name?, typename, version, jsonSchema }`.\n * Type-kind sibling of `Type.makeObject(...)` / `Type.makeRelation(...)` outputs.\n * Stored types live under this entity; filter via `Filter.type(Type.Type)`.\n */\nexport const Type: Type<typeInternal.TypeSchema> = typeInternal.TypeSchema as any;\n\n/**\n * Default version stamped on draft (unnamed) types created via\n * {@link makeObjectFromJsonSchema} / {@link makeRelationFromJsonSchema} when\n * the caller does not supply one. Pure dynamic drafts surface as `'0.0.0'`\n * until they are persisted, at which point automerge-heads suffix the version.\n */\nconst DRAFT_VERSION = '0.0.0';\n\n/**\n * Common props shared by the type-kind factories. Typename and version are\n * optional — drafts omit typename and default version to {@link DRAFT_VERSION}.\n */\ntype MakeTypeProps = {\n jsonSchema: internal.JsonSchemaType;\n typename?: string;\n version?: string;\n name?: string;\n id?: ObjectId;\n};\n\n/**\n * Construct a new object-kind type entity from raw metadata — for cases where\n * an Effect Schema isn't available (e.g. JSON-Schema arriving over the network\n * or from a UI editor). Parallel to {@link makeObject} but takes pre-built\n * `jsonSchema` instead of piping through an Effect schema.\n *\n * The returned entity is in-memory; persist it with `db.add(entity)`.\n */\nexport const makeObjectFromJsonSchema = (props: MakeTypeProps): Type<typeInternal.TypeSchema> => {\n const { typename, version, ...data } = props;\n // `typename` / `version` are routed through `ObjectMeta` (`key` / `version`)\n // — the canonical registry-provenance pair — not data fields. Drafts default\n // to `'0.0.0'`; the version is omitted from meta entirely when the caller\n // doesn't supply one so the proxy projection can apply its own default.\n return internal.makeObject(\n internal.getStaticTypeSchema(typeInternal.TypeSchema) as any,\n data as any,\n {\n keys: [],\n key: typename,\n version: version ?? DRAFT_VERSION,\n },\n typeInternal.TypeSchema,\n ) as unknown as Type<typeInternal.TypeSchema>;\n};\n\n/**\n * Construct a new relation-kind type entity from raw metadata. Parallel to\n * {@link makeRelation} but takes pre-built `jsonSchema` instead of piping\n * through an Effect schema. `source` / `target` accept either a static\n * `Type.Obj` entity or the well-known `Obj.Unknown` schema.\n *\n * The returned entity is in-memory; persist it with `db.add(entity)`.\n */\nexport const makeRelationFromJsonSchema = (\n props: MakeTypeProps & {\n source: AnyObj | internal.UnknownTypeSchema<any, typeof EntityModule.Kind.Object>;\n target: AnyObj | internal.UnknownTypeSchema<any, typeof EntityModule.Kind.Object>;\n },\n): Type<typeInternal.TypeSchema> => {\n const { source, target, jsonSchema, typename, version, ...rest } = props;\n // Embed source/target DXNs + relation entity-kind into the jsonSchema so the\n // entity round-trips correctly through `toEffectSchema` / queries / refs.\n const sourceURI = internal.getTypeURIFromSpecifier(source);\n const targetURI = internal.getTypeURIFromSpecifier(target);\n const enrichedJsonSchema: internal.JsonSchemaType = {\n ...jsonSchema,\n entityKind: internal.EntityKind.Relation,\n relationSource: { $ref: sourceURI },\n relationTarget: { $ref: targetURI },\n };\n // `typename` / `version` route through `ObjectMeta` (see\n // {@link makeObjectFromJsonSchema}); drafts default version to `'0.0.0'`.\n return internal.makeObject(\n internal.getStaticTypeSchema(typeInternal.TypeSchema) as any,\n { ...rest, jsonSchema: enrichedJsonSchema } as any,\n {\n keys: [],\n key: typename,\n version: version ?? DRAFT_VERSION,\n },\n typeInternal.TypeSchema,\n ) as unknown as Type<typeInternal.TypeSchema>;\n};\n\n/**\n * TypeScript type for an ECHO relation type — a `Type.Type<A>` entity.\n *\n * `T` is the instance-property type produced by `Relation.make(...)` (excluding\n * source/target endpoints). `Source` and `Target` are the endpoint types.\n *\n * **Not a `Schema.Schema`.** See {@link Obj}'s note.\n */\nexport interface Relation<\n T,\n Source,\n Target,\n Fields extends Schema.Struct.Fields = Schema.Struct.Fields,\n> extends BaseTypeEntity<\n RelationModule.Endpoints<Source, Target> & T & EntityModule.OfKind<typeof EntityModule.Kind.Relation>\n> {\n /** Schema-kind brand (relation). */\n readonly [internal.SchemaKindId]: internal.EntityKind.Relation;\n\n /** Source Effect Schema — used internally by `Type.getSchema(self)`. */\n readonly [internal.StaticTypeSchemaSlot]: Schema.Schema.AnyNoContext;\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 * Type that represents any ECHO relation type — a `Type.Type` entity branded\n * with the relation entity kind, i.e. what `Type.makeRelation(...)` produces.\n */\nexport type AnyRelation = Relation<unknown, unknown, unknown>;\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.makeRelation({\n * dxn: DXN.make('com.example.type.worksFor', '0.1.0'),\n * source: Person,\n * target: Company,\n * }));\n * ```\n */\nexport const makeRelation: {\n <SourceInstance, TargetInstance>(opts: {\n dxn: DXN.DXN;\n source: Obj<SourceInstance, any> | internal.UnknownTypeSchema<SourceInstance, typeof EntityModule.Kind.Object>;\n target: Obj<TargetInstance, any> | internal.UnknownTypeSchema<TargetInstance, typeof EntityModule.Kind.Object>;\n }): <Self extends Schema.Schema.Any>(\n self: Self,\n ) => Relation<\n Schema.Schema.Type<Self>,\n SourceInstance & EntityModule.OfKind<typeof EntityModule.Kind.Object>,\n TargetInstance & EntityModule.OfKind<typeof EntityModule.Kind.Object>\n >;\n} = internal.EchoRelationSchema as any;\n\n/**\n * Type that represents any ECHO type-kind entity — a `Type.Type` meta-schema\n * value (static `Type.Type` or a persisted draft from `db.add(...)`).\n * Mirrors {@link AnyObj} / {@link AnyRelation} for the third sibling kind.\n */\nexport type AnyType = Type<unknown>;\n\n/**\n * Any ECHO type-entity — one of the three sibling kinds: object-kind, relation-kind,\n * or type-kind (the meta-schema). APIs that want \"any ECHO type\" use this union;\n * the underlying Effect Schema is retrieved via `Type.getSchema`.\n */\nexport type AnyEntity = AnyObj | AnyRelation | AnyType;\n\n/**\n * Type guard: narrows a `Type.AnyEntity` to an object-kind entity. Checks\n * ENTITIES, not instances — use `Obj.isObject` for instances. Raw\n * `Schema.Schema` values (including the branded `Obj.Unknown` companion)\n * are intentionally not accepted; inspect their `TypeAnnotation` directly.\n */\nexport const isObject = (entity: AnyEntity): entity is AnyObj => {\n return internal.getSchemaKind(entity) === internal.EntityKind.Object;\n};\n\n/**\n * Type guard: narrows a `Type.AnyEntity` to a relation-kind entity. Checks\n * ENTITIES, not instances — use `Relation.isRelation` for instances.\n */\nexport const isRelation = (entity: AnyEntity): entity is AnyRelation => {\n return internal.getSchemaKind(entity) === internal.EntityKind.Relation;\n};\n\n/**\n * Type guard: narrows a `Type.AnyEntity` to the type-kind meta-schema\n * (e.g. `Type.Type`). Mirrors {@link isObject} / {@link isRelation}.\n */\nexport const isTypeKindSchema = (entity: AnyEntity): entity is Type => {\n return internal.getSchemaKind(entity) === internal.EntityKind.Type;\n};\n\n/**\n * Narrow a `Type.AnyEntity` (e.g. one returned from `schemaRegistry.query(...)`)\n * to `AnyObj`, throwing if it describes a relation or the type-kind\n * meta-schema. Use at call sites that need to pass the value to `Obj.make`,\n * `Filter.type`, or other object-only APIs.\n */\nexport const assertObject = (entity: AnyEntity): AnyObj => {\n invariant(isObject(entity), 'Expected an object-kind Type entity.');\n return entity;\n};\n\n/** Narrow a `Type.AnyEntity` to `AnyRelation`, throwing otherwise. */\nexport const expectRelation = (entity: AnyEntity): AnyRelation => {\n invariant(isRelation(entity), 'Expected a relation-kind Type entity.');\n return entity;\n};\n\n/** Narrow a `Type.AnyEntity` to the `Type.Type` meta-schema, throwing otherwise. */\nexport const expectTypeKind = (entity: AnyEntity): Type => {\n invariant(isTypeKindSchema(entity), 'Expected a type-kind Type entity.');\n return entity;\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 * Returns the URI identifying a type entity. Always defined.\n *\n * - Static `Type.Obj` / `Type.Relation` → typename DXN (e.g. `dxn:com.example.type.person:0.1.0`).\n * - Persisted `Type.Type` instance (has `id`) → local `EchoURI` (`echo:/<objectId>`).\n * - In-memory `Type.Type` draft (has `id`, no typename) → local `EchoURI`.\n *\n * Only accepts `Type.AnyEntity` entities. Raw `Schema.Schema` values and the\n * branded `Obj.Unknown` / `Relation.Unknown` schemas are intentionally not\n * supported — use `internal.getSchemaURI` or the schema's typename annotation\n * directly when working at the schema level.\n */\nexport const getURI = (input: AnyEntity): URI.URI => {\n // For Type entities, route through `getTypeURIFromSpecifier` (id → EchoURI,\n // typename/version → DXN). For Obj/Relation entities, unwrap to the source\n // Effect Schema first and read its annotations.\n if (isType(input)) {\n return internal.getTypeURIFromSpecifier(input);\n }\n return internal.getSchemaURI(getSchema(input)) ?? raise(new TypeError('Type entity has no URI'));\n};\n\n/**\n * @returns The typename. Example: `com.example.type.person`.\n *\n * Persisted `Type.Type` entities carry typename in `ObjectMeta.key` (the\n * canonical registry-provenance field); unnamed drafts fall back to the\n * entity's object id so the helper always returns a string. Any `dxn:` or\n * `echo:/` prefix is stripped — typename is a bare identifier, not a URI.\n */\n// TODO(wittjosiah): For in-database types this should return the object id once the registry\n// has more robust options for shadowing types (so callers can disambiguate db-stored copies).\nexport const getTypename = (input: AnyEntity): string => {\n // Both in-memory and in-database entities carry typename in `ObjectMeta.key`\n // — the canonical registry-provenance field. In-memory entities attach meta\n // eagerly (see `makeEchoTypeSchema`), so a single meta-backed read covers\n // both forms. Unnamed drafts fall back to the entity id.\n const meta = internal.getMetaChecked(input);\n let typename: string = (meta.key as string | undefined) ?? (input.id as string);\n // Typename is a bare identifier — strip URI prefixes if a caller seeded\n // meta.key with one accidentally (or if a static entity carries a DXN-\n // style typename).\n typename = stripTypenamePrefix(typename);\n invariant(typeof typename === 'string' && typename.length > 0, 'Invalid typename');\n return typename;\n};\n\n/**\n * Gets the version.\n * @example 0.1.0\n * @example 0.1.0-<heads> (in-database, versioned by automerge heads)\n *\n * The registry-provenance semver lives in `ObjectMeta.version`; unversioned\n * drafts default to {@link DRAFT_VERSION} (`'0.0.0'`). In-database entities are\n * additionally versioned by their automerge heads, which are exposed as the\n * semver pre-release tag (`<semver>-<heads>`). In-memory declarations have no\n * heads and surface the bare semver. Read the registry semver alone via\n * `Type.getMeta(input).version`.\n */\nexport const getVersion = (input: AnyEntity): string => {\n const meta = internal.getMetaChecked(input);\n const semver = (meta.version as string | undefined) ?? DRAFT_VERSION;\n invariant(typeof semver === 'string' && semver.match(/^\\d+\\.\\d+\\.\\d+$/), 'Invalid version');\n // In-database entities are versioned by their automerge heads; expose them as\n // the semver pre-release tag. In-memory drafts carry no heads → bare semver.\n const heads = internal.version(input).automergeHeads;\n if (heads != null && heads.length > 0) {\n return `${semver}-${[...heads].sort().join('.')}`;\n }\n return semver;\n};\n\n/**\n * Strip URI prefixes (`dxn:`, `echo:/`, `echo://`) from a typename string.\n * Typename is a bare identifier — callers reading from meta or from a\n * caller-supplied seed value shouldn't propagate URI prefixes downstream.\n */\nconst stripTypenamePrefix = (value: string): string => {\n if (value.startsWith('dxn:')) {\n return value.slice('dxn:'.length);\n }\n if (value.startsWith('echo://')) {\n return value.slice('echo://'.length);\n }\n if (value.startsWith('echo:/')) {\n return value.slice('echo:/'.length);\n }\n return value;\n};\n\n/**\n * Type predicate: true iff the value is any type-kind ECHO entity — a static\n * `Type.Obj` / `Type.Relation` produced by `Type.makeObject` / `Type.makeRelation`, a\n * static meta `Type.Type`, or a persisted `Type.Type` returned by the database.\n *\n * All three branches stamp `[KindId] = Type`, so this is a single brand check.\n * Use {@link isObject} / {@link isRelation} / {@link isTypeKindSchema}\n * when you need to discriminate further; use {@link getDatabase} when you mean\n * \"is this a db-attached type\" (vs. an in-memory declaration).\n */\nexport const isType = (value: unknown): value is AnyEntity =>\n internal.getEntityKindBrand(value) === internal.EntityKind.Type;\n\n/**\n * Get the database the type entity belongs to, or `undefined` if it is an\n * in-memory declaration (`Type.makeObject` / `Type.makeRelation` result) not\n * yet attached to a database. Mirrors `Obj.getDatabase` / `Relation.getDatabase`.\n *\n * Database attachment is the canonical discriminator between in-memory and\n * in-database type entities — both are live reactive `TypeSchema` instances and\n * are otherwise indistinguishable.\n */\nexport const getDatabase = (input: AnyEntity): Database.Database | undefined => internal.getDatabase(input);\n\n/**\n * Mutable meta type returned by `Type.getMeta` inside a `Type.update` callback.\n * Mirrors `Obj.Meta` / `Relation.Meta` — `Type.Type` is an Entity like its\n * siblings, so its meta is the same `ObjectMeta` record:\n * `{ keys, tags?, key?, version? }`.\n *\n * `key` / `version` here are the canonical registry-provenance pair\n * (typename + semver) on persisted Type.Type entities; they are absent on\n * unnamed drafts. Use {@link getTypename} / {@link getVersion} when you want\n * a non-`undefined` value with id / {@link DRAFT_VERSION} fallbacks.\n */\nexport type Meta = internal.Meta;\n\n/**\n * Deeply read-only version of {@link Meta}.\n * Prevents mutation at all nesting levels (e.g., `meta.keys.push()` is a TS error).\n */\nexport type ReadonlyMeta = internal.ReadonlyMeta;\n\n/**\n * Returns the entity's `ObjectMeta`. Same semantics as `Obj.getMeta` /\n * `Relation.getMeta` — `Type.Type` is an Entity and carries the canonical\n * `ObjectMeta` directly. Returns mutable meta when passed a mutable type\n * (inside a `Type.update` callback), read-only meta otherwise.\n *\n * For persisted Type entities, `meta.key` holds the typename and\n * `meta.version` holds the semver. Use {@link getTypename} / {@link getVersion}\n * if you want the helpers' id / {@link DRAFT_VERSION} fallbacks for drafts.\n *\n * Both persisted and in-memory type entities (`Type.makeObject` /\n * `Type.makeRelation` results) carry their `ObjectMeta` via `[MetaId]`, so the\n * lookup is uniform.\n */\nexport function getMeta(entity: internal.Mutable<AnyEntity>): Meta;\nexport function getMeta(entity: Mutable): Meta;\nexport function getMeta(entity: AnyEntity): ReadonlyMeta;\nexport function getMeta(entity: AnyEntity | internal.Mutable<AnyEntity> | Mutable): ReadonlyMeta | Meta {\n // The `Mutable` overload accepts the narrowed view passed to `Type.update`\n // callbacks; at runtime that draft IS the underlying persisted Type entity,\n // so the same `MetaId` lookup works.\n invariant(isType(entity), 'Expected a Type entity.');\n // Both persisted and in-memory type entities carry runtime `ObjectMeta` via\n // `[MetaId]`, so the lookup is uniform.\n return internal.getMetaChecked(entity);\n}\n\n/**\n * String key used to phantom-carry the instance type produced by a `Type.Type`.\n * Used by `Type.InstanceType<typeof Foo>` to recover the schema instance type\n * since `Type.makeObject(dxn)` does not return a `Schema.Schema`.\n *\n * Re-exported from the internal types layer so both `Type.ts` and internal\n * helpers (`makeObject`, `createObject`) reference the same phantom key.\n */\nexport const InstancePhantomId = internal.InstancePhantomId;\nexport type InstancePhantomId = internal.InstancePhantomId;\n\n/**\n * Sibling of {@link Obj} / {@link Relation} for the third ECHO entity kind:\n * **type-kind** entities (meta-schemas). The singleton {@link Type} const is\n * the canonical example — it describes stored type definitions themselves.\n *\n * Not a `Schema.Schema`. Use `Type.getSchema(value)` to obtain the underlying\n * Effect Schema and `Type.update(value, draft => ...)` to mutate.\n *\n * `A` is the instance-type phantom — what `Obj.make(value, ...)` would produce.\n * Merged with the `Type` const value via TypeScript declaration merging.\n */\nexport interface Type<A = unknown> extends BaseTypeEntity<A & EntityModule.OfKind<typeof EntityModule.Kind.Type>> {\n /** Schema-kind brand (type — the meta-schema kind). */\n readonly [internal.SchemaKindId]: internal.EntityKind.Type;\n\n /** Source Effect Schema — used internally by `Type.getSchema(self)`. */\n readonly [internal.StaticTypeSchemaSlot]: Schema.Schema.AnyNoContext;\n}\n\n/**\n * Instance type produced by a Type entity.\n *\n * Accepts ONLY {@link AnyEntity} inputs — `Type.Obj`, `Type.Relation`, or\n * `Type.Type`. Raw Effect `Schema.Schema` values are rejected: for those, use\n * `Schema.Schema.Type<typeof Foo>` directly. This separation keeps the type\n * system honest about which values represent ECHO entities versus plain\n * Effect schemas.\n *\n * Dispatches on the entity kind:\n * - `Relation<Props, S, T>` → `Endpoints<S,T> & Props & OfKind<Relation>`\n * - `Obj<A>` → `A & OfKind<Object>`\n * - `Type<A>` → `A & OfKind<Type>`\n */\nexport type InstanceType<T extends AnyEntity> =\n T extends Relation<infer Props, infer Source, infer Target, any>\n ? RelationModule.Endpoints<Source, Target> & Props & EntityModule.OfKind<typeof EntityModule.Kind.Relation>\n : T extends Obj<infer A, any>\n ? A & EntityModule.OfKind<typeof EntityModule.Kind.Object>\n : T extends Type<infer A>\n ? A & EntityModule.OfKind<typeof EntityModule.Kind.Type>\n : never;\n\n/**\n * Returns the Effect Schema for a type entity.\n *\n * - For static `Type.Obj` / `Type.Relation` entities the source Effect Schema is\n * read from a hidden slot — these overloads preserve the instance type.\n * - For `Type.Type` entities (the meta-schema kind) the schema is rebuilt from\n * `type.jsonSchema`; the instance type isn't statically knowable so the wide\n * `AnyEntity` overload widens to `Schema.Schema.AnyNoContext`.\n *\n * Always call this when you need to interact with the Effect Schema API\n * (e.g. before passing to Effect.Schema functions). For ECHO-side APIs\n * (`Obj.make`, `Filter.type`, `Ref`) pass the type entity directly.\n *\n * Only accepts `Type.AnyEntity` — raw `Schema.Schema` values can be used\n * directly without unwrapping.\n */\nexport function getSchema<T extends AnyObj>(type: T): Schema.Schema<InstanceType<T>>;\nexport function getSchema<T extends AnyRelation>(type: T): Schema.Schema<InstanceType<T>>;\nexport function getSchema(type: AnyEntity): Schema.Schema.AnyNoContext;\nexport function getSchema(type: AnyEntity): Schema.Schema.AnyNoContext {\n // Static `Type.Type` entities carry the source Effect Schema on a hidden\n // slot so we can return it without round-tripping through JsonSchema.\n const staticSchema = internal.getStaticTypeSchema(type);\n if (staticSchema != null) {\n return staticSchema;\n }\n invariant(isType(type), 'Expected a Type entity.');\n // Persisted `Type.Type` entity — build the Effect Schema from its stored\n // jsonSchema and re-attach the TypeIdentifierAnnotation so the rebuilt\n // schema's URI (via getSchemaURI) matches the entity's local EchoURI.\n const rebuilt = internal.toEffectSchema(type.jsonSchema);\n if (typeof type.id === 'string') {\n return rebuilt.annotations({\n [internal.TypeIdentifierAnnotationId]: EchoURI.make({ objectId: type.id }),\n });\n }\n return rebuilt;\n}\n\n/**\n * Mutable view of a `Type.Type` — the shape passed to the `Type.update` callback.\n * Outside `Type.update`, `Type.Type` fields are read-only (both at the type level\n * and at runtime — direct assignment throws). Use this to constrain mutation to\n * the change context, analogous to `Obj.update(obj, (draft) => ...)`.\n *\n * NOTE: `typename` and `version` are intentionally absent — they live in\n * `ObjectMeta` (`key` / `version` — the canonical registry-provenance pair).\n * Read them via {@link getTypename} / {@link getVersion} / {@link getMeta};\n * `typename` is treated as immutable on persisted entities.\n *\n * Unlike `Obj.update` — whose mutable view is inferred as `Mutable<A>` over the\n * whole instance type because every data field is editable — a `Type.Type`\n * exposes only `name` and `jsonSchema` for mutation. The rest of its shape\n * (`id`, the `[KindId]` / `[SchemaKindId]` brands, and `typename` / `version`\n * in meta) is immutable, so this view is declared explicitly rather than\n * derived from `InstanceType<Type.Type>`.\n */\nexport interface Mutable {\n name?: string;\n // Deep-mutable within the change context — `Type.update`'s purpose is to allow\n // mutation, so the draft exposes `jsonSchema` as writable (the readonly\n // `JsonSchemaType` would force callers to cast).\n jsonSchema: Types.DeepMutable<internal.JsonSchemaType>;\n}\n\n/**\n * Perform mutations on a `Type.Type` within a change context.\n *\n * The callback receives a {@link Mutable} view of the type — direct mutation of\n * a `Type.Type` outside `Type.update` throws at runtime, mirroring `Obj.update`.\n * Delegates to the same automerge-transaction primitive `Obj.update(obj, cb)` uses.\n */\nexport const update = (type: AnyEntity, callback: (mutable: Mutable) => void): void => {\n // `Type.Type` is an ECHO object; the change machinery is the same as `Obj.update`.\n internal.change(type, callback as internal.ChangeCallback<AnyEntity>);\n};\n\n//\n// Field-level helpers for mutating persisted types.\n// These are thin wrappers over `Type.update` plus the JsonSchema manipulation\n// utilities. Callers pass a persisted `Type.Type` (e.g. one returned by\n// `DatabaseSchemaRegistry.register`) and the helper drives the change context.\n//\n\n/**\n * Add fields to a persisted type's schema.\n * @throws if the type is not persisted.\n */\nexport const addFields = (type: AnyEntity, fields: Schema.Struct.Fields): void => {\n const extended = typeInternal.addFieldsToSchema(getSchema(type), fields);\n update(type, (draft) => {\n draft.jsonSchema = internal.toJsonSchema(extended);\n });\n};\n\n/**\n * Replace existing fields on a persisted type's schema.\n * @throws if the type is not persisted.\n */\nexport const updateFields = (type: AnyEntity, fields: Schema.Struct.Fields): void => {\n const updated = typeInternal.updateFieldsInSchema(getSchema(type), fields);\n update(type, (draft) => {\n draft.jsonSchema = internal.toJsonSchema(updated);\n });\n};\n\n/**\n * Rename a field on a persisted type's schema.\n * @throws if the type is not persisted.\n */\nexport const updateFieldPropertyName = (\n type: Type,\n { before, after }: { before: PropertyKey; after: PropertyKey },\n): void => {\n const renamed = typeInternal.updateFieldNameInSchema(getSchema(type), { before, after });\n update(type, (draft) => {\n draft.jsonSchema = internal.toJsonSchema(renamed);\n });\n};\n\n/**\n * Remove fields from a persisted type's schema.\n * @throws if the type is not persisted.\n */\nexport const removeFields = (type: AnyEntity, fieldNames: string[]): void => {\n const removed = typeInternal.removeFieldsFromSchema(getSchema(type), fieldNames);\n update(type, (draft) => {\n draft.jsonSchema = internal.toJsonSchema(removed);\n });\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["InstancePhantomId", "getDatabase", "makeObject", "raise", "invariant", "EchoURI", "makeObject", "version", "typename", "typeInternal", "enrichedJsonSchema", "entityKind", "EntityKind", "relationSource", "sourceURI", "relationTarget", "keys", "entity", "getSchemaURI", "input", "semver", "DRAFT_VERSION", "invariant", "heads", "join", "value", "startsWith", "getDatabase", "InstancePhantomId", "staticSchema", "isType", "annotations", "internal", "TypeIdentifierAnnotationId", "objectId", "change", "callback", "type", "draft", "extended", "updated", "before", "after", "update", "removed"]
7
+ }
@@ -0,0 +1,7 @@
1
+ // src/SchemaRegistry.ts
2
+ var SchemaRegistry_exports = {};
3
+
4
+ export {
5
+ SchemaRegistry_exports
6
+ };
7
+ //# sourceMappingURL=chunk-V5NE2X7Y.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/SchemaRegistry.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Types from 'effect/Types';\n\nimport type * as JsonSchema from './JsonSchema';\nimport type * as Key from './Key';\nimport type * as QueryResult from './QueryResult';\nimport type * as Type from './Type';\n\n// TODO(wittjosiah): Replace w/ Query.Query.\nexport type Query = {\n /**\n * Filter by schema ID.\n * Schema id is a DXN with `echo` or `type` kind.\n */\n id?: string | string[];\n\n /**\n * Id of the backing ECHO object.\n */\n backingObjectId?: Key.ObjectId | Key.ObjectId[];\n\n /**\n * One or more typenames to filter by.\n */\n typename?: string | string[];\n\n /**\n * [Semver Range](https://docs.npmjs.com/cli/v6/using-npm/semver#ranges) for the schema version.\n */\n version?: string;\n\n /**\n * Where to look for the schema.\n *\n * Database schema are stored in the database of the current space.\n * Runtime schema are registered in the runtime.\n *\n * @default ['database']\n */\n location?: ('database' | 'runtime')[];\n\n /**\n * Include system schemas.\n * @default false\n *\n * The system schema include but are not limited to:\n * - org.dxos.type.schema\n */\n includeSystem?: boolean;\n};\n\n/**\n * Input for schema registration.\n * The typename, version and schema mutability metadata is read from the schema annotations.\n *\n * Accepts:\n * - Branded ECHO schemas created with Type.Obj() or Type.Relation()\n * - JSON schema with typename and version\n */\nexport type RegisterSchemaInput =\n | Type.AnyEntity\n | {\n typename: string;\n version: string;\n jsonSchema: JsonSchema.JsonSchema;\n /**\n * Display name of the schema.\n */\n name?: string;\n };\n\n// TODO(dmaretskyi): Rename TypeRegistry\nexport interface SchemaRegistry {\n /**\n * Checks if the provided schema is registered.\n */\n hasSchema(schema: Type.AnyEntity): boolean;\n\n /**\n * Registers the provided schema(s).\n *\n * @returns The persisted type entities. The entity kind of each input is\n * preserved (an object schema comes back as `Type.AnyObj`), so the result can\n * be chained into `Obj.make` / `Relation.make` without casts. Each stored\n * schema is also a `Type.Type` record, so its `Ref` targets a\n * `Ref(Type.Type)` field.\n *\n * The behavior of this method depends on the state of the database.\n * The general principle is that the schema will be upserted into the space.\n * If an equivalent schema with the same name and version already exists, the method does nothing.\n * If a different schema with the same name and version exists, the method throws an error.\n * If no schema with the same name and version exists, a new schema will be inserted based on semantic versioning rules.\n */\n register<T extends Type.AnyEntity>(input: T[]): Promise<T[]>;\n register(input: RegisterSchemaInput[]): Promise<Type.Type[]>;\n\n query<Q extends Types.NoExcessProperties<Query, Q>>(query?: Q & Query): QueryResult.QueryResult<Type.Type>;\n}\n"],
5
+ "mappings": ";AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ // src/QueryResult.ts
2
+ var QueryResult_exports = {};
3
+
4
+ export {
5
+ QueryResult_exports
6
+ };
7
+ //# sourceMappingURL=chunk-V72DY6LU.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/QueryResult.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type CleanupFn } from '@dxos/async';\n\nimport type * as Entity from './Entity';\n\n/**\n * Individual query result entry.\n */\nexport type Entry<T> = {\n id: string;\n\n /**\n * May not be present for remote results.\n */\n result?: T;\n\n match?: {\n // TODO(dmaretskyi): text positional info.\n\n /**\n * Higher means better match.\n */\n rank: number;\n };\n\n /**\n * Query resolution metadata.\n */\n // TODO(dmaretskyi): Rename to meta?\n resolution?: {\n // TODO(dmaretskyi): Make this more generic.\n source: 'remote' | 'local' | 'index';\n\n /**\n * Query resolution time in milliseconds.\n */\n time: number;\n };\n};\n\n/**\n * Invidual query result entry for a database Entity.\n */\nexport type EntityEntry<T extends Entity.Unknown = Entity.Unknown> = Entry<T>;\n\nexport type RunOptions = {\n timeout?: number;\n};\n\nexport type SubscriptionOptions = {\n /**\n * Fire the callback immediately.\n */\n fire?: boolean;\n};\n\n// TODO(burdon): Should T be constrained to Entity.Any?\nexport interface QueryResult<T> {\n /**\n * Currently available results along with their match metadata.\n */\n readonly entries: Entry<T>[];\n\n /**\n * Currently available results.\n */\n readonly results: T[];\n\n /**\n * Returns all known results.\n */\n run(opts?: RunOptions): Promise<T[]>;\n\n /**\n * Returns all known results along with their match metadata.\n */\n runEntries(opts?: RunOptions): Promise<Entry<T>[]>;\n\n /**\n * Returns currently available results synchronously.\n */\n runSync(): T[];\n\n /**\n * Returns currently available results synchronously along with their match metadata.\n */\n runSyncEntries(): Entry<T>[];\n\n /**\n * Returns first result.\n */\n first(opts?: RunOptions): Promise<T>;\n\n /**\n * Returns first result if there is one.\n */\n firstOrUndefined(opts?: RunOptions): Promise<T | undefined>;\n\n /**\n * Subscribes to changes in query results.\n */\n subscribe(callback?: (query: QueryResult<T>) => void, opts?: SubscriptionOptions): CleanupFn;\n}\n"],
5
+ "mappings": ";AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,269 @@
1
+ import {
2
+ TypeId,
3
+ getSchemaURI,
4
+ getTypename
5
+ } from "./chunk-KHRAQDYX.mjs";
6
+ import {
7
+ EntityKind,
8
+ KindId,
9
+ getStaticTypeSchema
10
+ } from "./chunk-A5HDDVKS.mjs";
11
+ import {
12
+ ObjectNotFoundError
13
+ } from "./chunk-GOHDOJE3.mjs";
14
+ import {
15
+ __export
16
+ } from "./chunk-J5LGTIGS.mjs";
17
+
18
+ // src/Database.ts
19
+ var Database_exports = {};
20
+ __export(Database_exports, {
21
+ Database: () => Database,
22
+ Service: () => Service,
23
+ TypeId: () => TypeId2,
24
+ add: () => add,
25
+ flush: () => flush,
26
+ isDatabase: () => isDatabase,
27
+ layer: () => layer,
28
+ load: () => load,
29
+ loadOption: () => loadOption,
30
+ makeService: () => makeService,
31
+ notAvailable: () => notAvailable,
32
+ query: () => query,
33
+ registerSchema: () => registerSchema,
34
+ remove: () => remove,
35
+ resolve: () => resolve,
36
+ runQuery: () => runQuery,
37
+ runQueryFirst: () => runQueryFirst,
38
+ runSchemaQuery: () => runSchemaQuery,
39
+ schemaQuery: () => schemaQuery,
40
+ spaceId: () => spaceId
41
+ });
42
+ import * as Context from "effect/Context";
43
+ import * as Effect from "effect/Effect";
44
+ import * as Layer from "effect/Layer";
45
+ import * as Option from "effect/Option";
46
+ import * as Schema3 from "effect/Schema";
47
+ import { promiseWithCauseCapture } from "@dxos/effect";
48
+ import { invariant as invariant4 } from "@dxos/invariant";
49
+
50
+ // src/internal/Entity/type-uri.ts
51
+ import * as Schema2 from "effect/Schema";
52
+ import { raise } from "@dxos/debug";
53
+ import { assertArgument as assertArgument2 } from "@dxos/invariant";
54
+ import { DXN, URI } from "@dxos/keys";
55
+
56
+ // src/internal/common/types/model-symbols.ts
57
+ var ATTR_SELF_URI = "@uri";
58
+ var ATTR_SELF_URI_LEGACY = "@dxn";
59
+ var SelfURIId = /* @__PURE__ */ Symbol.for("@dxos/echo/URI");
60
+ var ATTR_DELETED = "@deleted";
61
+ var ObjectDeletedId = /* @__PURE__ */ Symbol.for("@dxos/echo/Deleted");
62
+ var ObjectVersionId = /* @__PURE__ */ Symbol.for("@dxos/echo/Version");
63
+ var ObjectDatabaseId = /* @__PURE__ */ Symbol.for("@dxos/echo/Database");
64
+ var ATTR_RELATION_SOURCE = "@relationSource";
65
+ var RelationSourceId = /* @__PURE__ */ Symbol.for("@dxos/echo/RelationSource");
66
+ var RelationSourceDXNId = /* @__PURE__ */ Symbol.for("@dxos/echo/RelationSourceDXN");
67
+ var ATTR_RELATION_TARGET = "@relationTarget";
68
+ var RelationTargetId = /* @__PURE__ */ Symbol.for("@dxos/echo/RelationTarget");
69
+ var RelationTargetDXNId = /* @__PURE__ */ Symbol.for("@dxos/echo/RelationTargetDXN");
70
+
71
+ // src/internal/Entity/api.ts
72
+ import { invariant as invariant3 } from "@dxos/invariant";
73
+ import { assumeType as assumeType3 } from "@dxos/util";
74
+
75
+ // src/internal/Entity/model.ts
76
+ import { invariant } from "@dxos/invariant";
77
+ import { EchoURI, ObjectId } from "@dxos/keys";
78
+ import { assumeType } from "@dxos/util";
79
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/model.ts";
80
+ function assertObjectModel(obj) {
81
+ invariant(typeof obj === "object" && obj !== null, "Invalid object model: not an object", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 12, S: this, A: ["typeof obj === 'object' && obj !== null", "'Invalid object model: not an object'"] });
82
+ assumeType(obj);
83
+ invariant(ObjectId.isValid(obj.id), "Invalid object model: invalid id", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 14, S: this, A: ["ObjectId.isValid(obj.id)", "'Invalid object model: invalid id'"] });
84
+ invariant(obj[TypeId] === void 0 || typeof obj[TypeId] === "string", "Invalid object model: invalid type", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 15, S: this, A: ["obj[TypeId] === undefined || typeof obj[TypeId] === 'string'", "'Invalid object model: invalid type'"] });
85
+ invariant(obj[KindId] === EntityKind.Object || obj[KindId] === EntityKind.Relation || obj[KindId] === EntityKind.Type, "Invalid object model: invalid entity kind", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 16, S: this, A: ["obj[KindId] === EntityKind.Object || obj[KindId] === EntityKind.Relation || obj[KindId] === EntityKind.Type", "'Invalid object model: invalid entity kind'"] });
86
+ if (obj[KindId] === EntityKind.Relation) {
87
+ invariant(EchoURI.isEchoURI(obj[RelationSourceDXNId]), "Invalid object model: invalid relation source", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 18, S: this, A: ["EchoURI.isEchoURI(obj[RelationSourceDXNId])", "'Invalid object model: invalid relation source'"] });
88
+ invariant(EchoURI.isEchoURI(obj[RelationTargetDXNId]), "Invalid object model: invalid relation target", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 19, S: this, A: ["EchoURI.isEchoURI(obj[RelationTargetDXNId])", "'Invalid object model: invalid relation target'"] });
89
+ invariant(!EchoURI.isEchoURI(obj[RelationSourceId]), "Invalid object model: source pointer is a DXN", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 20, S: this, A: ["!EchoURI.isEchoURI(obj[RelationSourceId])", "'Invalid object model: source pointer is a DXN'"] });
90
+ invariant(!EchoURI.isEchoURI(obj[RelationTargetId]), "Invalid object model: target pointer is a DXN", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 21, S: this, A: ["!EchoURI.isEchoURI(obj[RelationTargetId])", "'Invalid object model: target pointer is a DXN'"] });
91
+ }
92
+ }
93
+
94
+ // src/internal/Entity/util.ts
95
+ import * as Schema from "effect/Schema";
96
+ import { assertArgument, invariant as invariant2 } from "@dxos/invariant";
97
+ import { EchoURI as EchoURI2, ObjectId as ObjectId2 } from "@dxos/keys";
98
+ import { assumeType as assumeType2 } from "@dxos/util";
99
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/util.ts";
100
+ var getObjectEchoUri = (object) => {
101
+ invariant2(!Schema.isSchema(object), "schema not allowed in this function", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 15, S: void 0, A: ["!Schema.isSchema(object)", "'schema not allowed in this function'"] });
102
+ assertArgument(typeof object === "object" && object != null, "object", "expected object");
103
+ assumeType2(object);
104
+ if (object[SelfURIId]) {
105
+ invariant2(EchoURI2.isEchoURI(object[SelfURIId]), "Invalid object model: invalid self dxn", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 19, S: void 0, A: ["EchoURI.isEchoURI(object[SelfURIId])", "'Invalid object model: invalid self dxn'"] });
106
+ return EchoURI2.parse(object[SelfURIId]);
107
+ }
108
+ if (!ObjectId2.isValid(object.id)) {
109
+ throw new TypeError("Object id is not valid.");
110
+ }
111
+ return EchoURI2.make({
112
+ objectId: object.id
113
+ });
114
+ };
115
+
116
+ // src/internal/Entity/api.ts
117
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/api.ts";
118
+ var getUri = (entity) => {
119
+ const uri = getObjectEchoUri(entity);
120
+ invariant3(uri != null, "Invalid entity.", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 13, S: void 0, A: ["uri != null", "'Invalid entity.'"] });
121
+ return uri;
122
+ };
123
+ var getDatabase = (entity) => {
124
+ assumeType3(entity);
125
+ return entity[ObjectDatabaseId];
126
+ };
127
+
128
+ // src/internal/Entity/type-uri.ts
129
+ var getTypeURIFromSpecifier = (input) => {
130
+ if (Schema2.isSchema(input)) {
131
+ return getSchemaURI(input) ?? raise(new TypeError("Schema has no URI"));
132
+ }
133
+ if (typeof input === "object" && input !== null && KindId in input) {
134
+ const schema = getStaticTypeSchema(input);
135
+ if (schema != null) {
136
+ return getSchemaURI(schema) ?? raise(new TypeError("Type entity has no URI"));
137
+ }
138
+ return getUri(input);
139
+ }
140
+ assertArgument2(typeof input === "string", "input");
141
+ assertArgument2(!input.startsWith("dxn:"), "input");
142
+ return DXN.make(input);
143
+ };
144
+ var isInstanceOf = (schemaOrType, object) => {
145
+ if (object == null) {
146
+ return false;
147
+ }
148
+ const schemaURI = getTypeURIFromSpecifier(schemaOrType);
149
+ const type = object[TypeId];
150
+ if (URI.isURI(type) && type === schemaURI) {
151
+ return true;
152
+ }
153
+ const typename = getTypename(object);
154
+ if (!typename) {
155
+ return false;
156
+ }
157
+ if (!DXN.isDXN(schemaURI)) {
158
+ return false;
159
+ }
160
+ const parsed = DXN.tryMake(schemaURI);
161
+ return parsed != null && DXN.getName(parsed) === typename;
162
+ };
163
+
164
+ // src/Database.ts
165
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/core/echo/echo/src/Database.ts";
166
+ var TypeId2 = /* @__PURE__ */ Symbol.for("@dxos/echo/Database");
167
+ var isDatabase = (obj) => {
168
+ return obj ? typeof obj === "object" && TypeId2 in obj && obj[TypeId2] === TypeId2 : false;
169
+ };
170
+ var Database = Schema3.Any.pipe(Schema3.filter((space) => isDatabase(space)));
171
+ var Service = class extends Context.Tag("@dxos/echo/Database/Service")() {
172
+ };
173
+ var notAvailable = Layer.succeed(Service, {
174
+ get db() {
175
+ throw new Error("Database not available");
176
+ }
177
+ });
178
+ var makeService = (db) => {
179
+ return {
180
+ get db() {
181
+ return db;
182
+ }
183
+ };
184
+ };
185
+ var layer = (db) => {
186
+ return Layer.succeed(Service, makeService(db));
187
+ };
188
+ var spaceId = Effect.gen(function* () {
189
+ const { db } = yield* Service;
190
+ return db.spaceId;
191
+ });
192
+ var resolve = (ref, schema) => Effect.gen(function* () {
193
+ const { db } = yield* Service;
194
+ const dxn = typeof ref === "string" ? ref : ref.uri;
195
+ const object = yield* promiseWithCauseCapture(() => db.graph.createRefResolver({
196
+ context: {
197
+ space: db.spaceId
198
+ }
199
+ }).resolve(dxn));
200
+ if (!object) {
201
+ return yield* Effect.fail(new ObjectNotFoundError(dxn));
202
+ }
203
+ invariant4(!schema || isInstanceOf(schema, object), "Object type mismatch.", { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 70, S: this, A: ["!schema || isInstanceOf(schema, object)", "'Object type mismatch.'"] });
204
+ return object;
205
+ }).pipe(Effect.withSpan("Database.resolve"));
206
+ var load = Effect.fn("Database.load")(function* (ref) {
207
+ const object = yield* promiseWithCauseCapture(() => ref.tryLoad());
208
+ if (!object) {
209
+ return yield* Effect.fail(new ObjectNotFoundError(ref.uri));
210
+ }
211
+ return object;
212
+ });
213
+ var loadOption = Effect.fn("Database.loadOption")(function* (ref) {
214
+ const object = yield* load(ref).pipe(Effect.catchTag("ObjectNotFoundError", () => Effect.succeed(void 0)));
215
+ return Option.fromNullable(object);
216
+ });
217
+ var add = (obj) => Service.pipe(Effect.map(({ db }) => db.add(obj))).pipe(Effect.withSpan("Database.add"));
218
+ var remove = (obj) => Service.pipe(Effect.map(({ db }) => db.remove(obj))).pipe(Effect.withSpan("Database.remove"));
219
+ var flush = (opts) => Service.pipe(Effect.flatMap(({ db }) => promiseWithCauseCapture(() => db.flush(opts)))).pipe(Effect.withSpan("Database.flush"));
220
+ var query = (queryOrFilter) => Service.pipe(Effect.map(({ db }) => db.query(queryOrFilter)), Effect.withSpan("Database.query"));
221
+ var runQuery = (queryOrFilter) => query(queryOrFilter).pipe(Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())), Effect.withSpan("Database.runQuery"));
222
+ var runQueryFirst = (queryOrFilter) => query(queryOrFilter).pipe(Effect.flatMap((queryResult) => promiseWithCauseCapture(async () => Option.fromNullable(await queryResult.firstOrUndefined()))), Effect.withSpan("Database.runQueryFirst"));
223
+ var registerSchema = (input) => Service.pipe(Effect.flatMap(({ db }) => promiseWithCauseCapture(() => db.schemaRegistry.register(input))), Effect.withSpan("Database.registerSchema"));
224
+ var schemaQuery = (schemaQueryOptions) => Service.pipe(Effect.map(({ db }) => db.schemaRegistry.query(schemaQueryOptions)), Effect.withSpan("Database.schemaQuery"));
225
+ var runSchemaQuery = (schemaQueryOptions) => schemaQuery(schemaQueryOptions).pipe(Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())));
226
+
227
+ export {
228
+ ATTR_SELF_URI,
229
+ ATTR_SELF_URI_LEGACY,
230
+ SelfURIId,
231
+ ATTR_DELETED,
232
+ ObjectDeletedId,
233
+ ObjectVersionId,
234
+ ObjectDatabaseId,
235
+ ATTR_RELATION_SOURCE,
236
+ RelationSourceId,
237
+ RelationSourceDXNId,
238
+ ATTR_RELATION_TARGET,
239
+ RelationTargetId,
240
+ RelationTargetDXNId,
241
+ assertObjectModel,
242
+ getObjectEchoUri,
243
+ getUri,
244
+ getDatabase,
245
+ getTypeURIFromSpecifier,
246
+ isInstanceOf,
247
+ TypeId2 as TypeId,
248
+ isDatabase,
249
+ Database,
250
+ Service,
251
+ notAvailable,
252
+ makeService,
253
+ layer,
254
+ spaceId,
255
+ resolve,
256
+ load,
257
+ loadOption,
258
+ add,
259
+ remove,
260
+ flush,
261
+ query,
262
+ runQuery,
263
+ runQueryFirst,
264
+ registerSchema,
265
+ schemaQuery,
266
+ runSchemaQuery,
267
+ Database_exports
268
+ };
269
+ //# sourceMappingURL=chunk-ZII2BGPM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Database.ts", "../../../src/internal/Entity/type-uri.ts", "../../../src/internal/common/types/model-symbols.ts", "../../../src/internal/Entity/api.ts", "../../../src/internal/Entity/model.ts", "../../../src/internal/Entity/util.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\nimport type * as Types from 'effect/Types';\n\nimport { promiseWithCauseCapture } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { type SpaceId, type URI } from '@dxos/keys';\n\nimport type * as Entity from './Entity';\nimport * as Err from './Err';\nimport type * as Filter from './Filter';\nimport type * as Hypergraph from './Hypergraph';\nimport { type AnyProperties } from './internal/common/types';\n// Deep import (not the `./internal/Entity` barrel) to avoid a cycle:\n// Database → internal/Entity → entity → JsonSchema → Ref → Database.\nimport { isInstanceOf } from './internal/Entity/type-uri';\nimport type { Ref } from './internal/Ref/ref';\nimport type * as Obj from './Obj';\nimport type * as Query from './Query';\nimport type * as QueryResult from './QueryResult';\nimport type * as SchemaRegistry from './SchemaRegistry';\nimport type * as Type from './Type';\n\n/**\n * `query` API function declaration.\n */\n// TODO(burdon): Reconcile Query and Filter (should only have one root type).\nexport interface QueryFn {\n <Q extends Query.Any>(query: Q): QueryResult.QueryResult<Query.Type<Q>>;\n <F extends Filter.Any>(filter: F): QueryResult.QueryResult<Filter.Type<F>>;\n}\n\n/**\n * Common interface for Database, Feed, and Hypergraph.\n */\nexport interface Queryable {\n query: QueryFn;\n}\n\nexport type GetObjectByIdOptions = {\n deleted?: boolean;\n};\n\nexport type ObjectPlacement = 'root-doc' | 'linked-doc';\n\nexport type AddOptions = {\n /**\n * Where to place the object in the Automerge document tree.\n * Root document is always loaded with the space.\n * Linked documents are loaded lazily.\n * Placing large number of objects in the root document may slow down the initial load.\n *\n * @default 'linked-doc'\n */\n placeIn?: ObjectPlacement;\n};\n\nexport type FlushOptions = {\n /**\n * Write any pending changes to disk.\n * @default true\n */\n disk?: boolean;\n\n /**\n * Wait for pending index updates.\n * @default true\n */\n indexes?: boolean;\n\n /**\n * Flush pending updates to objects and queries.\n * @default false\n */\n updates?: boolean;\n};\n\n/**\n * Identifier denoting an ECHO Database.\n */\nexport const TypeId = Symbol.for('@dxos/echo/Database');\nexport type TypeId = typeof TypeId;\n\n/**\n * ECHO Database interface.\n */\nexport interface Database extends Queryable {\n readonly [TypeId]: TypeId;\n\n get spaceId(): SpaceId;\n\n // TODO(burdon): Can we move this into graph?\n get schemaRegistry(): SchemaRegistry.SchemaRegistry;\n\n get graph(): Hypergraph.Hypergraph;\n\n toJSON(): object;\n\n /**\n * Return object by local ID.\n */\n getObjectById<T extends Obj.Unknown = Obj.OfShape<AnyProperties>>(\n id: string,\n opts?: GetObjectByIdOptions,\n ): T | undefined;\n\n /**\n * Query objects.\n */\n query: 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.fromURI`\n * `Ref.fromURI(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>(uri: URI.URI): Ref<T>;\n\n /**\n * Adds object to the database.\n */\n add<T extends Entity.Unknown = Entity.Unknown>(obj: T, opts?: AddOptions): T;\n\n /**\n * Removes object from the database.\n */\n // TODO(burdon): Return true if removed (currently throws if not present).\n remove(obj: Entity.Unknown): void;\n\n /**\n * Wait for all pending changes to be saved to disk.\n * Optionaly waits for changes to be propagated to indexes and event handlers.\n */\n flush(opts?: FlushOptions): Promise<void>;\n}\n\nexport const isDatabase = (obj: unknown): obj is Database => {\n return obj ? typeof obj === 'object' && TypeId in obj && obj[TypeId] === TypeId : false;\n};\n\nexport const Database: Schema.Schema<Database> = Schema.Any.pipe(Schema.filter((space) => isDatabase(space)));\n\n/**\n * Effect service tag for Database dependency injection.\n */\nexport class Service extends Context.Tag('@dxos/echo/Database/Service')<\n Service,\n {\n readonly db: Database;\n }\n>() {}\n\n/**\n * Layer that provides a Database service that throws when accessed.\n * Useful as a default layer when no database is available.\n */\nexport const notAvailable = Layer.succeed(Service, {\n get db(): Database {\n throw new Error('Database not available');\n },\n});\n\n/**\n * Creates a Database service instance from a Database.\n */\nexport const makeService = (db: Database): Context.Tag.Service<Service> => {\n return {\n get db() {\n return db;\n },\n };\n};\n\n/**\n * Creates a Layer that provides the Database service.\n */\nexport const layer = (db: Database): Layer.Layer<Service> => {\n return Layer.succeed(Service, makeService(db));\n};\n\n/**\n * Returns the space ID of the database.\n */\nexport const spaceId = Effect.gen(function* () {\n const { db } = yield* Service;\n return db.spaceId;\n});\n\n/**\n * Resolves an object by its DXN.\n */\nexport const resolve: {\n // No type check.\n (ref: URI.URI | Ref<any>): Effect.Effect<Entity.Unknown, never, Service>;\n // Check matches schema.\n <S extends Type.AnyEntity>(\n ref: URI.URI | Ref<any>,\n schema: S,\n ): Effect.Effect<Type.InstanceType<S>, Err.ObjectNotFoundError, Service>;\n} = (<S extends Type.AnyEntity>(\n ref: URI.URI | Ref<any>,\n schema?: S,\n): Effect.Effect<Type.InstanceType<S>, Err.ObjectNotFoundError, Service> =>\n Effect.gen(function* () {\n const { db } = yield* Service;\n const dxn = typeof ref === 'string' ? ref : ref.uri;\n const object = yield* promiseWithCauseCapture(() =>\n db.graph\n .createRefResolver({\n context: {\n space: db.spaceId,\n },\n })\n .resolve(dxn),\n );\n\n if (!object) {\n return yield* Effect.fail(new Err.ObjectNotFoundError(dxn));\n }\n // `isInstanceOf` uses a conditional generic that TS can't resolve through\n // the local `S extends Type.AnyEntity` parameter — runtime accepts it fine.\n invariant(!schema || isInstanceOf(schema as any, object), 'Object type mismatch.');\n return object as any;\n }).pipe(Effect.withSpan('Database.resolve'))) as any;\n\n/**\n * Loads an object reference.\n */\nexport const load: <T>(ref: Ref<T>) => Effect.Effect<T, Err.ObjectNotFoundError, never> = Effect.fn('Database.load')(\n function* (ref) {\n const object = yield* promiseWithCauseCapture(() => ref.tryLoad());\n if (!object) {\n return yield* Effect.fail(new Err.ObjectNotFoundError(ref.uri));\n }\n return object;\n },\n);\n\n/**\n * Loads an object reference option.\n */\n// TODO(dmaretskyi): Do we need this -- you can just use `Effect.catchTag` in calling code instead.\nexport const loadOption: <T>(ref: Ref<T>) => Effect.Effect<Option.Option<T>, never, never> = Effect.fn(\n 'Database.loadOption',\n)(function* (ref) {\n const object = yield* load(ref).pipe(Effect.catchTag('ObjectNotFoundError', () => Effect.succeed(undefined)));\n\n return Option.fromNullable(object);\n});\n\n/**\n * Adds an object to the database.\n * @see {@link Database.add}\n */\nexport const add = <T extends Entity.Unknown>(obj: T): Effect.Effect<T, never, Service> =>\n Service.pipe(Effect.map(({ db }) => db.add(obj))).pipe(Effect.withSpan('Database.add'));\n\n/**\n * Removes an object from the database.\n * @see {@link Database.remove}\n */\nexport const remove = <T extends Entity.Unknown>(obj: T): Effect.Effect<void, never, Service> =>\n Service.pipe(Effect.map(({ db }) => db.remove(obj))).pipe(Effect.withSpan('Database.remove'));\n\n/**\n * Flushes pending changes to disk.\n * @see {@link Database.flush}\n */\nexport const flush = (opts?: FlushOptions) =>\n Service.pipe(Effect.flatMap(({ db }) => promiseWithCauseCapture(() => db.flush(opts)))).pipe(\n Effect.withSpan('Database.flush'),\n );\n\n/**\n * Creates a `QueryResult` object that can be subscribed to.\n */\nexport const query: {\n <Q extends Query.Any>(query: Q): Effect.Effect<QueryResult.QueryResult<Query.Type<Q>>, never, Service>;\n <F extends Filter.Any>(filter: F): Effect.Effect<QueryResult.QueryResult<Filter.Type<F>>, never, Service>;\n} = (queryOrFilter: Query.Any | Filter.Any) =>\n Service.pipe(\n Effect.map(({ db }) => db.query(queryOrFilter as any) as QueryResult.QueryResult<any>),\n Effect.withSpan('Database.query'),\n );\n\n/**\n * Executes the query once and returns the results.\n */\nexport const runQuery: {\n <Q extends Query.Any>(query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;\n <F extends Filter.Any>(filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;\n} = (queryOrFilter: Query.Any | Filter.Any) =>\n query(queryOrFilter as any).pipe(\n Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())),\n Effect.withSpan('Database.runQuery'),\n );\n\n/**\n * Executes the query once and returns the first result as or None.\n */\nexport const runQueryFirst: {\n <Q extends Query.Any>(query: Q): Effect.Effect<Option.Option<Query.Type<Q>>, never, Service>;\n <F extends Filter.Any>(filter: F): Effect.Effect<Option.Option<Filter.Type<F>>, never, Service>;\n} = (queryOrFilter: Query.Any | Filter.Any) =>\n query(queryOrFilter as any).pipe(\n Effect.flatMap((queryResult) =>\n promiseWithCauseCapture(async () => Option.fromNullable(await queryResult.firstOrUndefined())),\n ),\n Effect.withSpan('Database.runQueryFirst'),\n );\n\n/**\n * Persists schemas in the database so they replicate to other clients.\n * @see {@link SchemaRegistry.SchemaRegistry.register}\n */\nexport const registerSchema = (\n input: SchemaRegistry.RegisterSchemaInput[],\n): Effect.Effect<Type.Type[], never, Service> =>\n Service.pipe(\n Effect.flatMap(({ db }) => promiseWithCauseCapture(() => db.schemaRegistry.register(input))),\n Effect.withSpan('Database.registerSchema'),\n );\n\n/**\n * Creates a schema query result that can be subscribed to.\n */\n// TODO(dmaretskyi): Change API to `yield* Database.querySchema(...).first` and `yield* Database.querySchema(...).schema`.\nexport const schemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(\n schemaQueryOptions?: Q & SchemaRegistry.Query,\n): Effect.Effect<QueryResult.QueryResult<Type.Type>, never, Service> =>\n Service.pipe(\n Effect.map(({ db }) => db.schemaRegistry.query(schemaQueryOptions)),\n Effect.withSpan('Database.schemaQuery'),\n );\n\n/**\n * Executes a schema query once and returns the results.\n */\nexport const runSchemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(\n schemaQueryOptions?: Q & SchemaRegistry.Query,\n): Effect.Effect<Type.Type[], never, Service> =>\n schemaQuery(schemaQueryOptions).pipe(\n Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())),\n );\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { raise } from '@dxos/debug';\nimport { assertArgument } from '@dxos/invariant';\nimport { DXN, URI } from '@dxos/keys';\n\nimport { getSchemaURI, getTypename } from '../Annotation';\nimport { type AnyEntity, InstancePhantomId, KindId, TypeId, getStaticTypeSchema } from '../common/types';\nimport { getUri as getUriFromEntity } from './api';\n\n/**\n * @param input schema, `Type.Type` entity, or a typename string.\n * @return type identifier URI — see {@link getSchemaURI}. For a typename string,\n * always a DXN. For a `Type.Type` entity, the URI of the schema it declares,\n * symmetric with what `Obj.make(typeEntity, ...)` stamps on `system.type`: a\n * static declaration resolves to its typename DXN, a persisted entity to its\n * local `echo:/<objectId>`.\n */\nexport const getTypeURIFromSpecifier = (input: Schema.Schema.All | AnyEntity | string): URI.URI => {\n if (Schema.isSchema(input)) {\n return getSchemaURI(input) ?? raise(new TypeError('Schema has no URI'));\n }\n if (typeof input === 'object' && input !== null && KindId in input) {\n // `Type.Type` entity. Both in-memory and persisted forms expose the schema\n // they declare via `StaticTypeSchemaSlot`, whose URI is exactly what\n // `Obj.make` stamps on `system.type` — a static declaration carries\n // `TypeAnnotation` (→ typename DXN), a persisted entity's rebuilt schema\n // carries `TypeIdentifierAnnotation` (→ local `echo:/<objectId>`).\n const schema = getStaticTypeSchema(input);\n if (schema != null) {\n return getSchemaURI(schema) ?? raise(new TypeError('Type entity has no URI'));\n }\n return getUriFromEntity(input as AnyEntity);\n }\n assertArgument(typeof input === 'string', 'input');\n assertArgument(!input.startsWith('dxn:'), 'input');\n return DXN.make(input);\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 = <S>(\n schemaOrType: S extends Schema.Schema.AnyNoContext ? S : Schema.Schema.AnyNoContext | AnyEntity,\n object: any,\n): object is S extends Schema.Schema.AnyNoContext\n ? Schema.Schema.Type<S>\n : S extends { readonly [InstancePhantomId]?: infer A }\n ? A\n : unknown => {\n if (object == null) {\n return false;\n }\n\n const schemaURI = getTypeURIFromSpecifier(schemaOrType);\n\n // `object` is arbitrary input — read TypeId directly (it may be missing on\n // non-entities) rather than via `getTypeURI` which asserts the URI is set.\n const type = (object as any)[TypeId];\n if (URI.isURI(type) && type === schemaURI) {\n return true;\n }\n\n const typename = getTypename(object);\n if (!typename) {\n return false;\n }\n\n if (!DXN.isDXN(schemaURI)) {\n // EchoURI-based schema URI — no typename match possible.\n return false;\n }\n\n const parsed = DXN.tryMake(schemaURI);\n return parsed != null && DXN.getName(parsed) === typename;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\n/**\n * Internal symbol/string constants for the echo object model.\n * Defined in common/ so proxy/ can use them without importing from Entity/.\n * Entity/ re-exports these for external consumers.\n */\n\n/**\n * Property name for the object's own URI when serialized to JSON.\n */\nexport const ATTR_SELF_URI = '@uri';\n\n/**\n * @deprecated Legacy JSON property name accepted on read for backward compat.\n */\nexport const ATTR_SELF_URI_LEGACY = '@dxn';\n\n/**\n * Symbol carrying the object's own URI on live entities.\n */\nexport const SelfURIId = Symbol.for('@dxos/echo/URI');\n\n/**\n * Property name for deleted when object is serialized to JSON.\n */\nexport const ATTR_DELETED = '@deleted';\n\n/**\n * Deletion marker.\n */\nexport const ObjectDeletedId = Symbol.for('@dxos/echo/Deleted');\n\n/**\n * Object version accessor symbol.\n */\nexport const ObjectVersionId: unique symbol = Symbol.for('@dxos/echo/Version');\n\n/**\n * Object database accessor symbol.\n */\nexport const ObjectDatabaseId = Symbol.for('@dxos/echo/Database');\n\n/**\n * Property name for relation source when object is serialized to JSON.\n */\nexport const ATTR_RELATION_SOURCE = '@relationSource';\n\n/**\n * Used to access relation source ref on live ECHO objects.\n */\nexport const RelationSourceId: unique symbol = Symbol.for('@dxos/echo/RelationSource');\n\n/**\n * Used to access relation source DXN on live ECHO objects.\n */\nexport const RelationSourceDXNId: unique symbol = Symbol.for('@dxos/echo/RelationSourceDXN');\n\n/**\n * Property name for relation target when object is serialized to JSON.\n */\nexport const ATTR_RELATION_TARGET = '@relationTarget';\n\n/**\n * Used to access relation target ref on live ECHO objects.\n */\nexport const RelationTargetId: unique symbol = Symbol.for('@dxos/echo/RelationTarget');\n\n/**\n * Used to access relation target DXN on live ECHO objects.\n */\nexport const RelationTargetDXNId: unique symbol = Symbol.for('@dxos/echo/RelationTargetDXN');\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { type EchoURI } from '@dxos/keys';\nimport { assumeType } from '@dxos/util';\n\nimport type { AnyEntity } from '../common/types';\nimport { type InternalObjectProps, ObjectDatabaseId } from './model';\nimport { getObjectEchoUri } from './util';\n\n/**\n * Get the canonical EchoURI of an entity.\n * Accepts both reactive entities and snapshots.\n */\nexport const getUri = (entity: AnyEntity): EchoURI.EchoURI => {\n const uri = getObjectEchoUri(entity);\n invariant(uri != null, 'Invalid entity.');\n return uri;\n};\n\n/**\n * Get the database the entity belongs to.\n * Accepts both reactive entities and snapshots.\n */\nexport const getDatabase = (entity: AnyEntity): any | undefined => {\n assumeType<InternalObjectProps>(entity);\n return entity[ObjectDatabaseId];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Schema from 'effect/Schema';\n\nimport { type ForeignKey } from '@dxos/echo-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { EchoURI, ObjectId, type URI } from '@dxos/keys';\nimport { assumeType } from '@dxos/util';\n\nimport type * as Database from '../../Database';\nimport {\n type ATTR_META,\n type ATTR_PARENT,\n type ATTR_TYPE,\n ATTR_DELETED,\n ATTR_RELATION_SOURCE,\n ATTR_RELATION_TARGET,\n ATTR_SELF_URI,\n ATTR_SELF_URI_LEGACY,\n EntityKind,\n KindId,\n type MetaId,\n ObjectDatabaseId,\n ObjectDeletedId,\n type ObjectMeta,\n ObjectVersionId,\n type ParentId,\n RelationSourceDXNId,\n RelationSourceId,\n RelationTargetDXNId,\n RelationTargetId,\n type SchemaId,\n SelfURIId,\n TypeId,\n type Version,\n} from '../common/types';\n\nexport {\n ATTR_DELETED,\n ATTR_SELF_URI,\n ATTR_SELF_URI_LEGACY,\n ObjectDatabaseId,\n ObjectDeletedId,\n ObjectVersionId,\n SelfURIId,\n};\n\n/**\n * Internal runtime representation of an object.\n * The fields are accessed through getter functions.\n */\n// NOTE: Each symbol has a jsdoc describing its purpose.\nexport interface InternalObjectProps {\n readonly id: ObjectId;\n readonly [SelfURIId]: EchoURI.EchoURI;\n readonly [KindId]: EntityKind;\n readonly [SchemaId]: Schema.Schema.AnyNoContext;\n readonly [TypeId]: URI.URI;\n readonly [MetaId]?: ObjectMeta;\n [ParentId]?: InternalObjectProps;\n readonly [ObjectDatabaseId]?: Database.Database;\n readonly [ObjectDeletedId]?: boolean;\n readonly [ObjectVersionId]?: Version;\n readonly [RelationSourceDXNId]?: EchoURI.EchoURI;\n readonly [RelationTargetDXNId]?: EchoURI.EchoURI;\n readonly [RelationSourceId]?: InternalObjectProps;\n readonly [RelationTargetId]?: InternalObjectProps;\n}\n\n/**\n * Entity metadata.\n */\nexport interface ObjectMetaJSON {\n keys: ForeignKey[];\n tags?: string[];\n key?: string;\n version?: string;\n}\n\n/**\n * JSON representation of an object or relation metadata.\n */\nexport interface ObjectJSON {\n id: ObjectId;\n [ATTR_TYPE]?: URI.URI;\n [ATTR_SELF_URI]?: EchoURI.EchoURI;\n [ATTR_PARENT]?: EchoURI.EchoURI; // Encoded reference\n [ATTR_DELETED]?: boolean;\n [ATTR_META]?: ObjectMetaJSON;\n [ATTR_RELATION_SOURCE]?: EchoURI.EchoURI;\n [ATTR_RELATION_TARGET]?: EchoURI.EchoURI;\n\n /**\n * Application-specific properties.\n */\n [key: string]: unknown;\n}\n\n/**\n * NOTE: Keep as `function` to avoid type inference issues.\n */\nexport function assertObjectModel(obj: unknown): asserts obj is InternalObjectProps {\n invariant(typeof obj === 'object' && obj !== null, 'Invalid object model: not an object');\n assumeType<InternalObjectProps>(obj);\n invariant(ObjectId.isValid(obj.id), 'Invalid object model: invalid id');\n invariant(obj[TypeId] === undefined || typeof obj[TypeId] === 'string', 'Invalid object model: invalid type');\n invariant(\n obj[KindId] === EntityKind.Object || obj[KindId] === EntityKind.Relation || obj[KindId] === EntityKind.Type,\n 'Invalid object model: invalid entity kind',\n );\n\n if (obj[KindId] === EntityKind.Relation) {\n invariant(EchoURI.isEchoURI(obj[RelationSourceDXNId]), 'Invalid object model: invalid relation source');\n invariant(EchoURI.isEchoURI(obj[RelationTargetDXNId]), 'Invalid object model: invalid relation target');\n invariant(!EchoURI.isEchoURI(obj[RelationSourceId]), 'Invalid object model: source pointer is a DXN');\n invariant(!EchoURI.isEchoURI(obj[RelationTargetId]), 'Invalid object model: target pointer is a DXN');\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { EchoURI, ObjectId } from '@dxos/keys';\nimport { assumeType } from '@dxos/util';\n\nimport { type InternalObjectProps, SelfURIId } from './model';\n\n/**\n * Returns the EchoURI of an object.\n * Normalizes any legacy `dxn:echo:` / `dxn:queue:` form stored in `SelfURIId`.\n *\n * @internal\n */\nexport const getObjectEchoUri = (object: any): EchoURI.EchoURI | undefined => {\n invariant(!Schema.isSchema(object), 'schema not allowed in this function');\n assertArgument(typeof object === 'object' && object != null, 'object', 'expected object');\n assumeType<InternalObjectProps>(object);\n\n if (object[SelfURIId]) {\n invariant(EchoURI.isEchoURI(object[SelfURIId]), 'Invalid object model: invalid self dxn');\n return EchoURI.parse(object[SelfURIId]);\n }\n\n if (!ObjectId.isValid(object.id)) {\n throw new TypeError('Object id is not valid.');\n }\n\n return EchoURI.make({ objectId: object.id });\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["TypeId", "Context", "Effect", "Layer", "Option", "Schema", "promiseWithCauseCapture", "invariant", "Schema", "raise", "assertArgument", "DXN", "URI", "ATTR_SELF_URI", "ATTR_SELF_URI_LEGACY", "SelfURIId", "Symbol", "for", "ATTR_DELETED", "ObjectDeletedId", "ObjectVersionId", "ObjectDatabaseId", "ATTR_RELATION_SOURCE", "RelationSourceId", "RelationSourceDXNId", "ATTR_RELATION_TARGET", "RelationTargetId", "RelationTargetDXNId", "invariant", "assumeType", "invariant", "EchoURI", "ObjectId", "assumeType", "ATTR_DELETED", "assumeType", "obj", "invariant", "ObjectId", "isValid", "TypeId", "KindId", "EntityKind", "Type", "EchoURI", "isEchoURI", "RelationSourceDXNId", "RelationTargetDXNId", "Schema", "assertArgument", "invariant", "EchoURI", "ObjectId", "assumeType", "__dxlog_file", "assertArgument", "object", "assumeType", "SelfURIId", "invariant", "EchoURI", "parse", "ObjectId", "isValid", "__dxlog_file", "invariant", "uri", "entity", "ObjectDatabaseId", "assumeType", "getTypeURIFromSpecifier", "input", "isSchema", "getSchemaURI", "raise", "TypeError", "KindId", "schema", "getStaticTypeSchema", "getUriFromEntity", "assertArgument", "startsWith", "DXN", "make", "isInstanceOf", "schemaOrType", "object", "schemaURI", "type", "TypeId", "URI", "isURI", "typename", "getTypename", "isDXN", "parsed", "tryMake", "getName", "__dxlog_file", "obj", "TypeId", "Database", "Schema", "Any", "space", "isDatabase", "db", "spaceId", "dxn", "ref", "object", "promiseWithCauseCapture", "context", "resolve", "Effect", "pipe", "withSpan", "ObjectNotFoundError", "uri", "Option"]
7
+ }
@@ -0,0 +1,93 @@
1
+ import {
2
+ Currency,
3
+ CurrencyAnnotationId,
4
+ DateOnly,
5
+ DateTime,
6
+ DecimalPrecision,
7
+ Duration,
8
+ Email,
9
+ Format,
10
+ FormatAnnotation,
11
+ FormatAnnotationId,
12
+ FormatEnums,
13
+ Formula,
14
+ GeoLocation,
15
+ GeoPoint,
16
+ Hostname,
17
+ JSON,
18
+ Markdown,
19
+ OptionsAnnotation,
20
+ OptionsAnnotationId,
21
+ PropertyKind,
22
+ Regex,
23
+ SelectOption,
24
+ SimpleDate,
25
+ SimpleDateTime,
26
+ SimpleTime,
27
+ Text,
28
+ TimeOnly,
29
+ TypeEnum,
30
+ TypeFormat,
31
+ URL,
32
+ UUID,
33
+ formatToType,
34
+ getFormatAnnotation,
35
+ getOptionsAnnotation,
36
+ getTypeEnum,
37
+ toSimpleDate,
38
+ toSimpleDateTime,
39
+ toSimpleTime,
40
+ typeToFormat
41
+ } from "./chunk-O2EOH7XQ.mjs";
42
+ import {
43
+ __export
44
+ } from "./chunk-J5LGTIGS.mjs";
45
+
46
+ // src/Format.ts
47
+ var Format_exports = {};
48
+ __export(Format_exports, {
49
+ Currency: () => Currency,
50
+ CurrencyAnnotationId: () => CurrencyAnnotationId,
51
+ DateOnly: () => DateOnly,
52
+ DateTime: () => DateTime,
53
+ DecimalPrecision: () => DecimalPrecision,
54
+ Duration: () => Duration,
55
+ Email: () => Email,
56
+ Format: () => Format,
57
+ FormatAnnotation: () => FormatAnnotation,
58
+ FormatAnnotationId: () => FormatAnnotationId,
59
+ FormatEnums: () => FormatEnums,
60
+ Formula: () => Formula,
61
+ GeoLocation: () => GeoLocation,
62
+ GeoPoint: () => GeoPoint,
63
+ Hostname: () => Hostname,
64
+ JSON: () => JSON,
65
+ Markdown: () => Markdown,
66
+ OptionsAnnotation: () => OptionsAnnotation,
67
+ OptionsAnnotationId: () => OptionsAnnotationId,
68
+ PropertyKind: () => PropertyKind,
69
+ Regex: () => Regex,
70
+ SelectOption: () => SelectOption,
71
+ SimpleDate: () => SimpleDate,
72
+ SimpleDateTime: () => SimpleDateTime,
73
+ SimpleTime: () => SimpleTime,
74
+ Text: () => Text,
75
+ TimeOnly: () => TimeOnly,
76
+ TypeEnum: () => TypeEnum,
77
+ TypeFormat: () => TypeFormat,
78
+ URL: () => URL,
79
+ UUID: () => UUID,
80
+ formatToType: () => formatToType,
81
+ getFormatAnnotation: () => getFormatAnnotation,
82
+ getOptionsAnnotation: () => getOptionsAnnotation,
83
+ getTypeEnum: () => getTypeEnum,
84
+ toSimpleDate: () => toSimpleDate,
85
+ toSimpleDateTime: () => toSimpleDateTime,
86
+ toSimpleTime: () => toSimpleTime,
87
+ typeToFormat: () => typeToFormat
88
+ });
89
+
90
+ export {
91
+ Format_exports
92
+ };
93
+ //# sourceMappingURL=chunk-ZM7VFIS2.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Format.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as internal from './internal';\n\nexport * from './internal/Format';\n\nexport type Format = internal.TypeFormat;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
6
+ "names": []
7
+ }