@dxos/echo 0.8.4-main.70d3990 → 0.8.4-main.74a063c4e0

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 (609) hide show
  1. package/README.md +3 -4
  2. package/dist/lib/neutral/Annotation.mjs +37 -0
  3. package/dist/lib/neutral/Database.mjs +47 -0
  4. package/dist/lib/neutral/Entity.mjs +59 -0
  5. package/dist/lib/neutral/Err.mjs +12 -0
  6. package/dist/lib/neutral/Extension.mjs +18 -0
  7. package/dist/lib/neutral/Extension.mjs.map +7 -0
  8. package/dist/lib/neutral/Feed.mjs +48 -0
  9. package/dist/lib/neutral/Feed.mjs.map +7 -0
  10. package/dist/lib/neutral/Filter.mjs +70 -0
  11. package/dist/lib/neutral/Filter.mjs.map +7 -0
  12. package/dist/lib/neutral/Format.mjs +66 -0
  13. package/dist/lib/neutral/Format.mjs.map +7 -0
  14. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  15. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  16. package/dist/lib/neutral/Key.mjs +12 -0
  17. package/dist/lib/neutral/Key.mjs.map +7 -0
  18. package/dist/lib/neutral/Obj.mjs +113 -0
  19. package/dist/lib/neutral/Obj.mjs.map +7 -0
  20. package/dist/lib/neutral/Order.mjs +12 -0
  21. package/dist/lib/neutral/Order.mjs.map +7 -0
  22. package/dist/lib/neutral/Query.mjs +38 -0
  23. package/dist/lib/neutral/Query.mjs.map +7 -0
  24. package/dist/lib/neutral/QueryResult.mjs +2 -0
  25. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  26. package/dist/lib/neutral/Ref.mjs +24 -0
  27. package/dist/lib/neutral/Ref.mjs.map +7 -0
  28. package/dist/lib/neutral/Relation.mjs +94 -0
  29. package/dist/lib/neutral/Relation.mjs.map +7 -0
  30. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  31. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  32. package/dist/lib/neutral/Tag.mjs +29 -0
  33. package/dist/lib/neutral/Tag.mjs.map +7 -0
  34. package/dist/lib/neutral/Type.mjs +37 -0
  35. package/dist/lib/neutral/Type.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-2U2BZDLU.mjs +121 -0
  37. package/dist/lib/neutral/chunk-2U2BZDLU.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-46QNGNTY.mjs +45 -0
  39. package/dist/lib/neutral/chunk-46QNGNTY.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-66GBFH43.mjs +298 -0
  41. package/dist/lib/neutral/chunk-66GBFH43.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-6URFBQJH.mjs +361 -0
  43. package/dist/lib/neutral/chunk-6URFBQJH.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-7QQMUDE6.mjs +159 -0
  45. package/dist/lib/neutral/chunk-7QQMUDE6.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  47. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-BNCCGLJN.mjs +7 -0
  49. package/dist/lib/neutral/chunk-BNCCGLJN.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-DQYLD2RB.mjs +402 -0
  51. package/dist/lib/neutral/chunk-DQYLD2RB.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-E5PBQJWV.mjs +27 -0
  53. package/dist/lib/neutral/chunk-E5PBQJWV.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-EBVB5NOH.mjs +133 -0
  55. package/dist/lib/neutral/chunk-EBVB5NOH.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-FNEFSO2C.mjs +787 -0
  57. package/dist/lib/neutral/chunk-FNEFSO2C.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-GZQTCRJB.mjs +73 -0
  59. package/dist/lib/neutral/chunk-GZQTCRJB.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  61. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-KPY6FC5I.mjs +415 -0
  63. package/dist/lib/neutral/chunk-KPY6FC5I.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-MYMU4TWK.mjs +299 -0
  65. package/dist/lib/neutral/chunk-MYMU4TWK.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-MZXWVR3T.mjs +97 -0
  67. package/dist/lib/neutral/chunk-MZXWVR3T.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  69. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-QWAOTFCY.mjs +396 -0
  71. package/dist/lib/neutral/chunk-QWAOTFCY.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-R72KFH2X.mjs +34 -0
  73. package/dist/lib/neutral/chunk-R72KFH2X.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-TBKX6JQO.mjs +67 -0
  75. package/dist/lib/neutral/chunk-TBKX6JQO.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-UBEZSGXY.mjs +51 -0
  77. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  78. package/dist/lib/neutral/chunk-UI6MWK5W.mjs +42 -0
  79. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  80. package/dist/lib/neutral/chunk-VCAP4OOT.mjs +120 -0
  81. package/dist/lib/neutral/chunk-VCAP4OOT.mjs.map +7 -0
  82. package/dist/lib/neutral/chunk-WMFVS4KR.mjs +2830 -0
  83. package/dist/lib/neutral/chunk-WMFVS4KR.mjs.map +7 -0
  84. package/dist/lib/neutral/chunk-XZJUNTML.mjs +335 -0
  85. package/dist/lib/neutral/chunk-XZJUNTML.mjs.map +7 -0
  86. package/dist/lib/neutral/chunk-XZM7FERR.mjs +56 -0
  87. package/dist/lib/neutral/chunk-XZM7FERR.mjs.map +7 -0
  88. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs +50 -0
  89. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs.map +7 -0
  90. package/dist/lib/neutral/chunk-ZIXGDU6F.mjs +45 -0
  91. package/dist/lib/neutral/chunk-ZIXGDU6F.mjs.map +7 -0
  92. package/dist/lib/neutral/index.mjs +101 -0
  93. package/dist/lib/neutral/index.mjs.map +7 -0
  94. package/dist/lib/{node-esm → neutral}/internal/index.mjs +261 -123
  95. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  96. package/dist/lib/neutral/meta.json +1 -0
  97. package/dist/lib/{browser → neutral}/testing/index.mjs +98 -52
  98. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  99. package/dist/types/src/Annotation.d.ts +23 -1
  100. package/dist/types/src/Annotation.d.ts.map +1 -1
  101. package/dist/types/src/Collection.d.ts +16 -0
  102. package/dist/types/src/Collection.d.ts.map +1 -0
  103. package/dist/types/src/Database.d.ts +146 -87
  104. package/dist/types/src/Database.d.ts.map +1 -1
  105. package/dist/types/src/Dataset.d.ts +19 -0
  106. package/dist/types/src/Dataset.d.ts.map +1 -0
  107. package/dist/types/src/Entity.d.ts +141 -9
  108. package/dist/types/src/Entity.d.ts.map +1 -1
  109. package/dist/types/src/Entity.test.d.ts +2 -0
  110. package/dist/types/src/Entity.test.d.ts.map +1 -0
  111. package/dist/types/src/Err.d.ts +107 -0
  112. package/dist/types/src/Err.d.ts.map +1 -0
  113. package/dist/types/src/Extension.d.ts +80 -0
  114. package/dist/types/src/Extension.d.ts.map +1 -0
  115. package/dist/types/src/Extension.test.d.ts +2 -0
  116. package/dist/types/src/Extension.test.d.ts.map +1 -0
  117. package/dist/types/src/Feed.d.ts +171 -0
  118. package/dist/types/src/Feed.d.ts.map +1 -0
  119. package/dist/types/src/Filter.d.ts +136 -0
  120. package/dist/types/src/Filter.d.ts.map +1 -0
  121. package/dist/types/src/Filter.test.d.ts +2 -0
  122. package/dist/types/src/Filter.test.d.ts.map +1 -0
  123. package/dist/types/src/Format.d.ts +3 -3
  124. package/dist/types/src/Format.d.ts.map +1 -1
  125. package/dist/types/src/Hypergraph.d.ts +65 -0
  126. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  127. package/dist/types/src/JsonSchema.d.ts +11 -4
  128. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  129. package/dist/types/src/Obj.d.ts +403 -84
  130. package/dist/types/src/Obj.d.ts.map +1 -1
  131. package/dist/types/src/Obj.test.d.ts +2 -0
  132. package/dist/types/src/Obj.test.d.ts.map +1 -0
  133. package/dist/types/src/Order.d.ts +16 -0
  134. package/dist/types/src/Order.d.ts.map +1 -0
  135. package/dist/types/src/Query.d.ts +209 -0
  136. package/dist/types/src/Query.d.ts.map +1 -0
  137. package/dist/types/src/Query.test.d.ts +2 -0
  138. package/dist/types/src/Query.test.d.ts.map +1 -0
  139. package/dist/types/src/QueryResult.d.ts +80 -0
  140. package/dist/types/src/QueryResult.d.ts.map +1 -0
  141. package/dist/types/src/Ref.d.ts +61 -11
  142. package/dist/types/src/Ref.d.ts.map +1 -1
  143. package/dist/types/src/Relation.d.ts +281 -18
  144. package/dist/types/src/Relation.d.ts.map +1 -1
  145. package/dist/types/src/Relation.test.d.ts +2 -0
  146. package/dist/types/src/Relation.test.d.ts.map +1 -0
  147. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  148. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  149. package/dist/types/src/Tag.d.ts +8 -7
  150. package/dist/types/src/Tag.d.ts.map +1 -1
  151. package/dist/types/src/Type.d.ts +124 -90
  152. package/dist/types/src/Type.d.ts.map +1 -1
  153. package/dist/types/src/Type.test.d.ts +2 -0
  154. package/dist/types/src/Type.test.d.ts.map +1 -0
  155. package/dist/types/src/View.d.ts +68 -0
  156. package/dist/types/src/View.d.ts.map +1 -0
  157. package/dist/types/src/hierarchy.test.d.ts +2 -0
  158. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  159. package/dist/types/src/index.d.ts +13 -2
  160. package/dist/types/src/index.d.ts.map +1 -1
  161. package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +84 -27
  162. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  163. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  164. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  165. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  166. package/dist/types/src/internal/Annotation/sorting.d.ts +24 -0
  167. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  168. package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +14 -1
  169. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  170. package/dist/types/src/internal/Entity/api.d.ts +13 -0
  171. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  172. package/dist/types/src/internal/Entity/entity.d.ts +20 -0
  173. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  174. package/dist/types/src/internal/Entity/index.d.ts +8 -0
  175. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  176. package/dist/types/src/internal/{entities → Entity}/model.d.ts +14 -29
  177. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  178. package/dist/types/src/internal/Entity/object.d.ts +18 -0
  179. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  180. package/dist/types/src/internal/Entity/relation.d.ts +35 -0
  181. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  182. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  183. package/dist/types/src/internal/Entity/version.d.ts +42 -0
  184. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  185. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  186. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  187. package/dist/types/src/internal/{formats → Format}/format.d.ts +4 -4
  188. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  189. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  190. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  191. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  192. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  193. package/dist/types/src/internal/{formats → Format}/select.d.ts +6 -4
  194. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  195. package/dist/types/src/internal/{formats → Format}/string.d.ts +4 -0
  196. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  197. package/dist/types/src/internal/{formats → Format}/types.d.ts +7 -3
  198. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  199. package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
  200. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  201. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  202. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  203. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  204. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +131 -30
  205. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  206. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +2 -1
  207. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  208. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  209. package/dist/types/src/internal/Obj/clone.d.ts +8 -0
  210. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  211. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  212. package/dist/types/src/internal/{object → Obj}/create-object.d.ts +3 -3
  213. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  214. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  215. package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
  216. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  217. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  218. package/dist/types/src/internal/{object → Obj}/index.d.ts +3 -0
  219. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  220. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  221. package/dist/types/src/internal/Obj/json-serializer.d.ts +44 -0
  222. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  223. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  224. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  225. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  226. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  227. package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
  228. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  229. package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
  230. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  231. package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
  232. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  233. package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
  234. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  235. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  236. package/dist/types/src/internal/Query.d.ts +10 -0
  237. package/dist/types/src/internal/Query.d.ts.map +1 -0
  238. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  239. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +4 -4
  240. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  241. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +31 -9
  242. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  243. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  244. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  245. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  246. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  247. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +20 -7
  248. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  249. package/dist/types/src/internal/Type/index.d.ts +4 -0
  250. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  251. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  252. package/dist/types/src/internal/Type/persistent-schema.d.ts +20 -0
  253. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  254. package/dist/types/src/internal/common/api/index.d.ts +11 -0
  255. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  256. package/dist/types/src/internal/common/api/meta.d.ts +42 -0
  257. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  258. package/dist/types/src/internal/common/index.d.ts +4 -0
  259. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  260. package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
  261. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  262. package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -0
  263. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  264. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts +5 -0
  265. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  266. package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
  267. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  268. package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -0
  269. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  270. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  271. package/dist/types/src/internal/common/proxy/index.d.ts +14 -0
  272. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  273. package/dist/types/src/internal/common/proxy/json-serializer.d.ts +6 -0
  274. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  275. package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +2 -4
  276. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  277. package/dist/types/src/internal/common/proxy/ownership.d.ts +57 -0
  278. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  279. package/dist/types/src/internal/common/proxy/proxy-types.d.ts +18 -0
  280. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  281. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts +47 -0
  282. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  283. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
  284. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  285. package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
  286. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  287. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  288. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  289. package/dist/types/src/internal/common/proxy/symbols.d.ts +3 -0
  290. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  291. package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +16 -12
  292. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  293. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  294. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  295. package/dist/types/src/internal/{types → common/types}/base.d.ts +6 -16
  296. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  297. package/dist/types/src/internal/common/types/entity.d.ts +37 -0
  298. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  299. package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
  300. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  301. package/dist/types/src/internal/{types → common/types}/meta.d.ts +8 -15
  302. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  303. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  304. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  305. package/dist/types/src/internal/{types → common/types}/typename.d.ts +8 -0
  306. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  307. package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
  308. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  309. package/dist/types/src/internal/index.d.ts +10 -10
  310. package/dist/types/src/internal/index.d.ts.map +1 -1
  311. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  312. package/dist/types/src/testing/test-schema.d.ts +146 -179
  313. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  314. package/dist/types/src/testing/util.d.ts +6 -1
  315. package/dist/types/src/testing/util.d.ts.map +1 -1
  316. package/dist/types/tsconfig.tsbuildinfo +1 -1
  317. package/package.json +99 -61
  318. package/src/Annotation.ts +36 -5
  319. package/src/Collection.ts +37 -0
  320. package/src/Database.ts +263 -122
  321. package/src/Dataset.ts +26 -0
  322. package/src/Entity.test.ts +22 -0
  323. package/src/Entity.ts +196 -11
  324. package/src/Err.ts +40 -0
  325. package/src/Extension.test.ts +235 -0
  326. package/src/Extension.ts +122 -0
  327. package/src/Feed.ts +283 -0
  328. package/src/Filter.test.ts +90 -0
  329. package/src/Filter.ts +424 -0
  330. package/src/Format.ts +3 -5
  331. package/src/Hypergraph.ts +79 -0
  332. package/src/JsonSchema.ts +14 -4
  333. package/src/Obj.test.ts +539 -0
  334. package/src/Obj.ts +639 -289
  335. package/src/Order.ts +46 -0
  336. package/src/Query.test.ts +698 -0
  337. package/src/Query.ts +547 -0
  338. package/src/QueryResult.ts +106 -0
  339. package/src/Ref.ts +79 -9
  340. package/src/Relation.test.ts +88 -0
  341. package/src/Relation.ts +439 -68
  342. package/src/SchemaRegistry.ts +106 -0
  343. package/src/Tag.ts +7 -6
  344. package/src/Type.test.ts +52 -0
  345. package/src/Type.ts +167 -166
  346. package/src/View.ts +107 -0
  347. package/src/hierarchy.test.ts +33 -0
  348. package/src/index.ts +14 -5
  349. package/src/internal/{annotations → Annotation}/annotations.test.ts +62 -13
  350. package/src/internal/{annotations → Annotation}/annotations.ts +186 -71
  351. package/src/internal/{annotations → Annotation}/index.ts +1 -0
  352. package/src/internal/Annotation/sorting.ts +51 -0
  353. package/src/internal/{annotations → Annotation}/util.ts +16 -1
  354. package/src/internal/Entity/api.ts +30 -0
  355. package/src/internal/{entities → Entity}/entity.ts +39 -20
  356. package/src/internal/{entities → Entity}/index.ts +3 -1
  357. package/src/internal/{entities → Entity}/model.ts +29 -49
  358. package/src/internal/{entities → Entity}/object.ts +23 -11
  359. package/src/internal/{entities → Entity}/relation.ts +42 -43
  360. package/src/internal/Entity/version.ts +96 -0
  361. package/src/internal/{formats → Format}/date.test.ts +1 -2
  362. package/src/internal/{formats → Format}/format.test.ts +2 -3
  363. package/src/internal/{formats → Format}/format.ts +7 -8
  364. package/src/internal/{formats → Format}/object.ts +2 -2
  365. package/src/internal/{formats → Format}/select.ts +6 -4
  366. package/src/internal/{formats → Format}/string.ts +5 -0
  367. package/src/internal/{formats → Format}/types.ts +12 -6
  368. package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
  369. package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +4 -2
  370. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +34 -35
  371. package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +67 -66
  372. package/src/internal/{json-schema → JsonSchema}/json-schema.ts +18 -13
  373. package/src/internal/Obj/clone.ts +48 -0
  374. package/src/internal/{object → Obj}/common.ts +2 -2
  375. package/src/internal/{object → Obj}/create-object.test.ts +5 -7
  376. package/src/internal/{object → Obj}/create-object.ts +6 -7
  377. package/src/internal/{object → Obj}/deleted.ts +2 -2
  378. package/src/internal/{object → Obj}/index.ts +3 -0
  379. package/src/internal/{object → Obj}/inspect.ts +4 -4
  380. package/src/internal/{object → Obj}/json-serializer.test.ts +33 -7
  381. package/src/internal/{object → Obj}/json-serializer.ts +77 -92
  382. package/src/internal/{object → Obj}/schema-validator.test.ts +3 -7
  383. package/src/internal/Obj/schema-validator.ts +6 -0
  384. package/src/internal/Obj/set-value.test.ts +281 -0
  385. package/src/internal/Obj/set-value.ts +165 -0
  386. package/src/internal/Obj/snapshot.ts +105 -0
  387. package/src/internal/{object → Obj}/typed-object.test.ts +12 -12
  388. package/src/internal/Obj/typed-object.ts +30 -0
  389. package/src/internal/Query.ts +132 -0
  390. package/src/internal/{ref → Ref}/ref-array.ts +4 -5
  391. package/src/internal/{ref → Ref}/ref.test.ts +5 -6
  392. package/src/internal/{ref → Ref}/ref.ts +90 -43
  393. package/src/internal/{schema → Type}/compose.test.ts +6 -7
  394. package/src/internal/{schema → Type}/compose.ts +14 -10
  395. package/src/internal/{schema → Type}/echo-schema.ts +55 -17
  396. package/src/internal/{schema → Type}/index.ts +0 -2
  397. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  398. package/src/internal/Type/persistent-schema.ts +33 -0
  399. package/src/internal/{README.md → common/README.md} +36 -17
  400. package/src/internal/common/api/index.ts +15 -0
  401. package/src/internal/common/api/meta.ts +88 -0
  402. package/src/internal/common/index.ts +7 -0
  403. package/src/internal/common/proxy/change-context.ts +138 -0
  404. package/src/internal/common/proxy/change.test.ts +519 -0
  405. package/src/internal/common/proxy/define-hidden-property.ts +14 -0
  406. package/src/internal/common/proxy/errors.ts +42 -0
  407. package/src/internal/common/proxy/event-batch.ts +44 -0
  408. package/src/internal/{proxy → common/proxy}/handler.test.ts +32 -84
  409. package/src/internal/common/proxy/index.ts +17 -0
  410. package/src/internal/common/proxy/json-serializer.ts +90 -0
  411. package/src/internal/common/proxy/make-object.ts +105 -0
  412. package/src/internal/common/proxy/ownership.ts +252 -0
  413. package/src/internal/common/proxy/proxy-types.ts +23 -0
  414. package/src/internal/common/proxy/proxy-utils.ts +150 -0
  415. package/src/internal/common/proxy/reactive-array.ts +71 -0
  416. package/src/internal/common/proxy/reactive.ts +68 -0
  417. package/src/internal/{object → common/proxy}/schema-validator.ts +3 -1
  418. package/src/internal/{proxy → common/proxy}/schema.test.ts +29 -21
  419. package/src/internal/common/proxy/symbols.ts +7 -0
  420. package/src/internal/common/proxy/typed-handler.test.ts +313 -0
  421. package/src/internal/common/proxy/typed-handler.ts +447 -0
  422. package/src/internal/common/proxy/typed-object.test.ts +115 -0
  423. package/src/internal/{types → common/types}/base.ts +7 -22
  424. package/src/internal/common/types/entity.ts +54 -0
  425. package/src/internal/{types → common/types}/index.ts +1 -0
  426. package/src/internal/{types → common/types}/meta.ts +16 -25
  427. package/src/internal/common/types/model-symbols.ts +69 -0
  428. package/src/internal/{types → common/types}/typename.ts +10 -0
  429. package/src/internal/{types → common/types}/version.ts +2 -3
  430. package/src/internal/index.ts +10 -31
  431. package/src/testing/api.test.ts +32 -7
  432. package/src/testing/test-data.ts +0 -1
  433. package/src/testing/test-schema.ts +68 -41
  434. package/src/testing/util.ts +22 -15
  435. package/dist/lib/browser/chunk-7GH6RXJ3.mjs +0 -3683
  436. package/dist/lib/browser/chunk-7GH6RXJ3.mjs.map +0 -7
  437. package/dist/lib/browser/chunk-E4UTVJNF.mjs +0 -1111
  438. package/dist/lib/browser/chunk-E4UTVJNF.mjs.map +0 -7
  439. package/dist/lib/browser/index.mjs +0 -45
  440. package/dist/lib/browser/internal/index.mjs +0 -336
  441. package/dist/lib/browser/meta.json +0 -1
  442. package/dist/lib/browser/testing/index.mjs.map +0 -7
  443. package/dist/lib/node-esm/chunk-JE5RXM2I.mjs +0 -1111
  444. package/dist/lib/node-esm/chunk-JE5RXM2I.mjs.map +0 -7
  445. package/dist/lib/node-esm/chunk-M4B6BMD2.mjs +0 -3683
  446. package/dist/lib/node-esm/chunk-M4B6BMD2.mjs.map +0 -7
  447. package/dist/lib/node-esm/index.mjs +0 -45
  448. package/dist/lib/node-esm/meta.json +0 -1
  449. package/dist/lib/node-esm/testing/index.mjs +0 -328
  450. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  451. package/dist/types/src/errors.d.ts +0 -68
  452. package/dist/types/src/errors.d.ts.map +0 -1
  453. package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
  454. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
  455. package/dist/types/src/internal/annotations/index.d.ts +0 -3
  456. package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
  457. package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
  458. package/dist/types/src/internal/entities/entity.d.ts +0 -10
  459. package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
  460. package/dist/types/src/internal/entities/expando.d.ts +0 -16
  461. package/dist/types/src/internal/entities/expando.d.ts.map +0 -1
  462. package/dist/types/src/internal/entities/index.d.ts +0 -6
  463. package/dist/types/src/internal/entities/index.d.ts.map +0 -1
  464. package/dist/types/src/internal/entities/model.d.ts.map +0 -1
  465. package/dist/types/src/internal/entities/object.d.ts +0 -11
  466. package/dist/types/src/internal/entities/object.d.ts.map +0 -1
  467. package/dist/types/src/internal/entities/relation.d.ts +0 -55
  468. package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
  469. package/dist/types/src/internal/entities/util.d.ts.map +0 -1
  470. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  471. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  472. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  473. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  474. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  475. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  476. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  477. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  478. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  479. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  480. package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
  481. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
  482. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  483. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  484. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  485. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
  486. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
  487. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  488. package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
  489. package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
  490. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  491. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  492. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  493. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  494. package/dist/types/src/internal/object/json-serializer.d.ts +0 -31
  495. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  496. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  497. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  498. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  499. package/dist/types/src/internal/object/typed-object.d.ts +0 -31
  500. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  501. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  502. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  503. package/dist/types/src/internal/proxy/index.d.ts +0 -3
  504. package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
  505. package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
  506. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  507. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  508. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  509. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  510. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  511. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  512. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  513. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  514. package/dist/types/src/internal/schema/compose.d.ts +0 -6
  515. package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
  516. package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
  517. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  518. package/dist/types/src/internal/schema/index.d.ts +0 -6
  519. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  520. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  521. package/dist/types/src/internal/schema/persistent-schema.d.ts +0 -18
  522. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
  523. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  524. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  525. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  526. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  527. package/dist/types/src/internal/types/base.d.ts.map +0 -1
  528. package/dist/types/src/internal/types/entity.d.ts +0 -12
  529. package/dist/types/src/internal/types/entity.d.ts.map +0 -1
  530. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  531. package/dist/types/src/internal/types/meta.d.ts.map +0 -1
  532. package/dist/types/src/internal/types/typename.d.ts.map +0 -1
  533. package/dist/types/src/internal/types/version.d.ts.map +0 -1
  534. package/dist/types/src/query/filter.d.ts +0 -167
  535. package/dist/types/src/query/filter.d.ts.map +0 -1
  536. package/dist/types/src/query/index.d.ts +0 -5
  537. package/dist/types/src/query/index.d.ts.map +0 -1
  538. package/dist/types/src/query/order.d.ts +0 -12
  539. package/dist/types/src/query/order.d.ts.map +0 -1
  540. package/dist/types/src/query/query.d.ts +0 -112
  541. package/dist/types/src/query/query.d.ts.map +0 -1
  542. package/dist/types/src/query/query.test.d.ts +0 -2
  543. package/dist/types/src/query/query.test.d.ts.map +0 -1
  544. package/dist/types/src/query/testing.d.ts +0 -51
  545. package/dist/types/src/query/testing.d.ts.map +0 -1
  546. package/dist/types/src/query/types.d.ts +0 -17
  547. package/dist/types/src/query/types.d.ts.map +0 -1
  548. package/dist/types/src/query/util.d.ts +0 -8
  549. package/dist/types/src/query/util.d.ts.map +0 -1
  550. package/src/errors.ts +0 -18
  551. package/src/internal/entities/expando.ts +0 -23
  552. package/src/internal/object/typed-object.ts +0 -94
  553. package/src/internal/proxy/index.ts +0 -6
  554. package/src/internal/proxy/make-object.ts +0 -113
  555. package/src/internal/proxy/typed-handler.test.ts +0 -102
  556. package/src/internal/proxy/typed-handler.ts +0 -233
  557. package/src/internal/proxy/typed-object.test.ts +0 -105
  558. package/src/internal/schema/persistent-schema.ts +0 -28
  559. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  560. package/src/internal/schema/snapshot.ts +0 -25
  561. package/src/internal/types/entity.ts +0 -23
  562. package/src/query/filter.ts +0 -455
  563. package/src/query/index.ts +0 -9
  564. package/src/query/order.ts +0 -34
  565. package/src/query/query.test.ts +0 -334
  566. package/src/query/query.ts +0 -303
  567. package/src/query/testing.ts +0 -64
  568. package/src/query/types.ts +0 -23
  569. package/src/query/util.ts +0 -25
  570. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  571. /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
  572. /package/dist/lib/{node-esm/index.mjs.map → neutral/Entity.mjs.map} +0 -0
  573. /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Err.mjs.map} +0 -0
  574. /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
  575. /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
  576. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  577. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  578. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  579. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  580. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  581. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  582. /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
  583. /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
  584. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  585. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
  586. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  587. /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
  588. /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
  589. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  590. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  591. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  592. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  593. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  594. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  595. /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
  596. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  597. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  598. /package/dist/types/src/internal/{object → common/proxy}/schema-validator.d.ts +0 -0
  599. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  600. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  601. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  602. /package/src/internal/{entities → Entity}/util.ts +0 -0
  603. /package/src/internal/{formats → Format}/date.ts +0 -0
  604. /package/src/internal/{formats → Format}/index.ts +0 -0
  605. /package/src/internal/{formats → Format}/number.ts +0 -0
  606. /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
  607. /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
  608. /package/src/internal/{object → Obj}/ids.ts +0 -0
  609. /package/src/internal/{ref → Ref}/index.ts +0 -0
@@ -6,8 +6,9 @@ import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { JsonPath, type JsonProp } from '@dxos/effect';
8
8
 
9
- import { FormatAnnotation, TypeFormat } from '../formats';
10
- import { EntityKindSchema } from '../types';
9
+ import { type Mutable } from '../common/proxy';
10
+ import { EntityKindSchema } from '../common/types';
11
+ import { FormatAnnotation, TypeFormat } from '../Format';
11
12
 
12
13
  //
13
14
  // JSON Schema
@@ -18,7 +19,7 @@ const SimpleTypes = Schema.Literal('array', 'boolean', 'integer', 'null', 'numbe
18
19
 
19
20
  const NonNegativeInteger = Schema.Number.pipe(Schema.greaterThanOrEqualTo(0));
20
21
 
21
- const StringArray = Schema.Array(Schema.String).pipe(Schema.mutable);
22
+ const StringArray = Schema.Array(Schema.String);
22
23
 
23
24
  const JsonSchemaOrBoolean = Schema.Union(
24
25
  Schema.suspend(() => JsonSchemaType),
@@ -48,13 +49,13 @@ export const JsonSchemaEchoAnnotations = Schema.Struct({
48
49
  Schema.Record({
49
50
  key: Schema.String,
50
51
  value: Schema.Any,
51
- }).pipe(Schema.mutable),
52
+ }),
52
53
  ),
53
54
 
54
55
  /**
55
56
  * @deprecated
56
57
  */
57
- // TODO(dmaretskyi): We risk old schema not passing validation due to the extra fields. Remove when we are sure this is safe
58
+ // TODO(dmaretskyi): We risk old schema not passing validation due to the extra fields. Remove when we are sure this is safe.
58
59
  type: Schema.optional(
59
60
  Schema.Struct({
60
61
  typename: Schema.String,
@@ -62,7 +63,7 @@ export const JsonSchemaEchoAnnotations = Schema.Struct({
62
63
 
63
64
  // Not used.
64
65
  schemaId: Schema.optional(Schema.String),
65
- }).pipe(Schema.mutable),
66
+ }),
66
67
  ),
67
68
 
68
69
  /**
@@ -72,9 +73,9 @@ export const JsonSchemaEchoAnnotations = Schema.Struct({
72
73
  Schema.Record({
73
74
  key: Schema.String,
74
75
  value: Schema.Any,
75
- }).pipe(Schema.mutable),
76
+ }),
76
77
  ),
77
- }).pipe(Schema.mutable);
78
+ });
78
79
  export type JsonSchemaEchoAnnotations = Schema.Schema.Type<typeof JsonSchemaEchoAnnotations>;
79
80
 
80
81
  /**
@@ -118,7 +119,7 @@ const _JsonSchemaType = Schema.Struct({
118
119
  * Typename of this schema.
119
120
  * Only on schema representing an ECHO object.
120
121
  *
121
- * @example 'example.com/type/MyType'
122
+ * @example 'com.example.type.my-type'
122
123
  */
123
124
  typename: Schema.optional(Schema.String),
124
125
 
@@ -257,23 +258,21 @@ const _JsonSchemaType = Schema.Struct({
257
258
  Schema.Record({
258
259
  key: Schema.String,
259
260
  value: Schema.suspend(() => JsonSchemaType),
260
- }).pipe(Schema.mutable),
261
+ }),
261
262
  ),
262
263
  patternProperties: Schema.optional(
263
264
  Schema.Record({
264
265
  key: Schema.String,
265
266
  value: Schema.suspend(() => JsonSchemaType),
266
- }).pipe(Schema.mutable),
267
+ }),
267
268
  ),
268
269
  propertyNames: Schema.optional(Schema.suspend(() => JsonSchemaType)),
269
270
 
270
271
  definitions: Schema.optional(
271
- Schema.mutable(
272
- Schema.Record({
273
- key: Schema.String,
274
- value: Schema.suspend(() => JsonSchemaType),
275
- }),
276
- ),
272
+ Schema.Record({
273
+ key: Schema.String,
274
+ value: Schema.suspend(() => JsonSchemaType),
275
+ }),
277
276
  ),
278
277
  dependencies: Schema.optional(
279
278
  Schema.Record({
@@ -296,12 +295,10 @@ const _JsonSchemaType = Schema.Struct({
296
295
  oneOf: Schema.optional(Schema.Array(Schema.suspend(() => JsonSchemaType))),
297
296
  not: Schema.optional(Schema.suspend(() => JsonSchemaType)),
298
297
  $defs: Schema.optional(
299
- Schema.mutable(
300
- Schema.Record({
301
- key: Schema.String,
302
- value: Schema.suspend(() => JsonSchemaType),
303
- }),
304
- ),
298
+ Schema.Record({
299
+ key: Schema.String,
300
+ value: Schema.suspend(() => JsonSchemaType),
301
+ }),
305
302
  ),
306
303
 
307
304
  //
@@ -311,25 +308,23 @@ const _JsonSchemaType = Schema.Struct({
311
308
  currency: Schema.optional(Schema.String),
312
309
 
313
310
  reference: Schema.optional(
314
- Schema.mutable(
315
- Schema.Struct({
316
- schema: Schema.suspend(() => JsonSchemaType),
317
- schemaVersion: Schema.optional(Schema.String),
318
- schemaObject: Schema.optional(Schema.String),
319
- }),
320
- ),
311
+ Schema.Struct({
312
+ schema: Schema.suspend(() => JsonSchemaType),
313
+ schemaVersion: Schema.optional(Schema.String),
314
+ schemaObject: Schema.optional(Schema.String),
315
+ }),
321
316
  ),
322
317
 
323
318
  /**
324
319
  * ECHO-specific annotations.
325
320
  */
326
321
  // TODO(dmaretskyi): Since we are adding a lot of new extensions to the JSON Schema, it is safer to namespace them here.
327
- annotations: Schema.optional(Schema.mutable(JsonSchemaEchoAnnotations)),
322
+ annotations: Schema.optional(JsonSchemaEchoAnnotations),
328
323
 
329
324
  /**
330
325
  * @deprecated Use `annotations` instead.
331
326
  */
332
- echo: Schema.optional(Schema.mutable(JsonSchemaEchoAnnotations)),
327
+ echo: Schema.optional(JsonSchemaEchoAnnotations),
333
328
  }).annotations({ identifier: 'jsonSchema', description: 'JSON Schema' });
334
329
 
335
330
  export const JsonSchemaFields = Object.keys(_JsonSchemaType.fields);
@@ -338,9 +333,9 @@ export const JsonSchemaFields = Object.keys(_JsonSchemaType.fields);
338
333
  * https://json-schema.org/draft-07/schema
339
334
  */
340
335
  // TODO(burdon): Reconcile with @effect/Schema/JSONSchema
341
- export interface JsonSchemaType extends Schema.Schema.Type<Schema.mutable<typeof _JsonSchemaType>> {}
336
+ export interface JsonSchemaType extends Schema.Schema.Type<typeof _JsonSchemaType> {}
342
337
 
343
- export const JsonSchemaType: Schema.Schema<JsonSchemaType> = _JsonSchemaType.pipe(Schema.mutable);
338
+ export const JsonSchemaType: Schema.Schema<JsonSchemaType> = _JsonSchemaType;
344
339
 
345
340
  // TODO(burdon): Factor out JSON schema utils.
346
341
 
@@ -349,7 +344,11 @@ export const getSchemaProperty = (schema: JsonSchemaType, property: JsonProp): J
349
344
  };
350
345
 
351
346
  // TODO(burdon): Properties should be ordered.
352
- export const setSchemaProperty = (schema: JsonSchemaType, property: JsonProp, value: JsonSchemaType) => {
347
+ export const setSchemaProperty = (
348
+ schema: Mutable<JsonSchemaType>,
349
+ property: JsonProp,
350
+ value: Mutable<JsonSchemaType>,
351
+ ) => {
353
352
  schema.properties ??= {};
354
353
  schema.properties[property] = value;
355
354
  return schema;
@@ -20,14 +20,13 @@ import {
20
20
  PropertyMeta,
21
21
  getTypeAnnotation,
22
22
  getTypeIdentifierAnnotation,
23
- } from '../annotations';
24
- import { EchoObjectSchema } from '../entities';
25
- import { Email, FormatAnnotation, TypeFormat } from '../formats';
26
- import { JsonSchemaType, getNormalizedEchoAnnotations, getSchemaProperty, setSchemaProperty } from '../json-schema';
27
- import { Ref, createSchemaReference, getReferenceAst, getSchemaReference } from '../ref';
28
- import { PersistentSchema } from '../schema';
29
- import { EntityKind } from '../types';
30
-
23
+ } from '../Annotation';
24
+ import { EntityKind } from '../common/types';
25
+ import { EchoObjectSchema } from '../Entity';
26
+ import { Email, FormatAnnotation, TypeFormat } from '../Format';
27
+ import { JsonSchemaType, getNormalizedEchoAnnotations, getSchemaProperty, setSchemaProperty } from '../JsonSchema';
28
+ import { Ref, createSchemaReference, getReferenceAst, getSchemaReference } from '../Ref';
29
+ import { PersistentSchema } from '../Type';
31
30
  import { toEffectSchema, toJsonSchema } from './json-schema';
32
31
 
33
32
  const EXAMPLE_NAMESPACE = '@example';
@@ -35,13 +34,13 @@ const EXAMPLE_NAMESPACE = '@example';
35
34
  describe('effect-to-json', () => {
36
35
  test('type annotation', () => {
37
36
  const Test = Schema.Struct({ name: Schema.String }).pipe(
38
- Type.Obj({
39
- typename: 'example.com/type/Test',
37
+ Type.object({
38
+ typename: 'com.example.type.test',
40
39
  version: '0.1.0',
41
40
  }),
42
41
  );
43
42
  const jsonSchema = toJsonSchema(Test);
44
- expect((jsonSchema as any).$id).toEqual('dxn:type:example.com/type/Test');
43
+ expect((jsonSchema as any).$id).toEqual('dxn:type:com.example.type.test');
45
44
  expect((jsonSchema as any).version).toEqual('0.1.0');
46
45
  });
47
46
 
@@ -50,8 +49,8 @@ describe('effect-to-json', () => {
50
49
  const Test = Schema.Struct({
51
50
  name: Schema.String.pipe(PropertyMeta(EXAMPLE_NAMESPACE, meta)),
52
51
  }).pipe(
53
- Type.Obj({
54
- typename: 'example.com/type/Test',
52
+ Type.object({
53
+ typename: 'com.example.type.test',
55
54
  version: '0.1.0',
56
55
  }),
57
56
  );
@@ -63,16 +62,16 @@ describe('effect-to-json', () => {
63
62
  const Nested = Schema.Struct({
64
63
  name: Schema.String,
65
64
  }).pipe(
66
- Type.Obj({
67
- typename: 'example.com/type/TestNested',
65
+ Type.object({
66
+ typename: 'com.example.type.testNested',
68
67
  version: '0.1.0',
69
68
  }),
70
69
  );
71
70
  const Test = Schema.Struct({
72
71
  name: Ref(Nested),
73
72
  }).pipe(
74
- Type.Obj({
75
- typename: 'example.com/type/Test',
73
+ Type.object({
74
+ typename: 'com.example.type.test',
76
75
  version: '0.1.0',
77
76
  }),
78
77
  );
@@ -88,16 +87,16 @@ describe('effect-to-json', () => {
88
87
  const Nested = Schema.Struct({
89
88
  name: Schema.String,
90
89
  }).pipe(
91
- Type.Obj({
92
- typename: 'example.com/type/TestNested',
90
+ Type.object({
91
+ typename: 'com.example.type.testNested',
93
92
  version: '0.1.0',
94
93
  }),
95
94
  );
96
95
  const Test = Schema.Struct({
97
96
  name: Ref(Nested).annotations({ [FieldLookupAnnotationId]: 'name' }),
98
97
  }).pipe(
99
- Type.Obj({
100
- typename: 'example.com/type/Test',
98
+ Type.object({
99
+ typename: 'com.example.type.test',
101
100
  version: '0.1.0',
102
101
  }),
103
102
  );
@@ -112,16 +111,16 @@ describe('effect-to-json', () => {
112
111
  const Nested = Schema.Struct({
113
112
  name: Schema.String,
114
113
  }).pipe(
115
- Type.Obj({
116
- typename: 'example.com/type/TestNested',
114
+ Type.object({
115
+ typename: 'com.example.type.testNested',
117
116
  version: '0.1.0',
118
117
  }),
119
118
  );
120
119
  const Test = Schema.Struct({
121
120
  name: Schema.Array(Ref(Nested)),
122
121
  }).pipe(
123
- Type.Obj({
124
- typename: 'example.com/type/Test',
122
+ Type.object({
123
+ typename: 'com.example.type.test',
125
124
  version: '0.1.0',
126
125
  }),
127
126
  );
@@ -134,16 +133,16 @@ describe('effect-to-json', () => {
134
133
  const Nested = Schema.Struct({
135
134
  name: Schema.String,
136
135
  }).pipe(
137
- Type.Obj({
138
- typename: 'example.com/type/TestNested',
136
+ Type.object({
137
+ typename: 'com.example.type.testNested',
139
138
  version: '0.1.0',
140
139
  }),
141
140
  );
142
141
  const Test = Schema.Struct({
143
142
  name: Schema.optional(Ref(Nested)),
144
143
  }).pipe(
145
- Type.Obj({
146
- typename: 'example.com/type/Test',
144
+ Type.object({
145
+ typename: 'com.example.type.test',
147
146
  version: '0.1.0',
148
147
  }),
149
148
  );
@@ -165,8 +164,8 @@ describe('effect-to-json', () => {
165
164
  description: 'Email address',
166
165
  }),
167
166
  }).pipe(
168
- Type.Obj({
169
- typename: 'example.com/type/Person',
167
+ Type.object({
168
+ typename: 'com.example.type.person',
170
169
  version: '0.1.0',
171
170
  }),
172
171
  );
@@ -174,10 +173,10 @@ describe('effect-to-json', () => {
174
173
  const jsonSchema = toJsonSchema(TempSchema);
175
174
  expect(jsonSchema).to.deep.eq({
176
175
  $schema: 'http://json-schema.org/draft-07/schema#',
177
- $id: 'dxn:type:example.com/type/Person',
176
+ $id: 'dxn:type:com.example.type.person',
178
177
 
179
178
  entityKind: EntityKind.Object,
180
- typename: 'example.com/type/Person',
179
+ typename: 'com.example.type.person',
181
180
  version: '0.1.0',
182
181
 
183
182
  type: 'object',
@@ -204,9 +203,11 @@ describe('effect-to-json', () => {
204
203
  'name',
205
204
  'username',
206
205
  'email',
206
+ 'age',
207
207
  'tasks',
208
208
  'employer',
209
209
  'address',
210
+ 'fields',
210
211
  ]);
211
212
  });
212
213
 
@@ -214,8 +215,8 @@ describe('effect-to-json', () => {
214
215
  const Organization = Schema.Struct({
215
216
  field: Schema.String,
216
217
  }).pipe(
217
- Type.Obj({
218
- typename: 'example.com/type/Organization',
218
+ Type.object({
219
+ typename: 'com.example.type.organization',
219
220
  version: '0.1.0',
220
221
  }),
221
222
  );
@@ -224,8 +225,8 @@ describe('effect-to-json', () => {
224
225
  name: Schema.String,
225
226
  organization: Ref(Organization).annotations({ description: 'Contact organization' }),
226
227
  }).pipe(
227
- Type.Obj({
228
- typename: 'example.com/type/Person',
228
+ Type.object({
229
+ typename: 'com.example.type.person',
229
230
  version: '0.1.0',
230
231
  }),
231
232
  );
@@ -235,10 +236,10 @@ describe('effect-to-json', () => {
235
236
  const jsonSchema = toJsonSchema(Contact);
236
237
  expect(jsonSchema).toEqual({
237
238
  $schema: 'http://json-schema.org/draft-07/schema#',
238
- $id: 'dxn:type:example.com/type/Person',
239
+ $id: 'dxn:type:com.example.type.person',
239
240
 
240
241
  entityKind: EntityKind.Object,
241
- typename: 'example.com/type/Person',
242
+ typename: 'com.example.type.person',
242
243
  version: '0.1.0',
243
244
 
244
245
  type: 'object',
@@ -258,7 +259,7 @@ describe('effect-to-json', () => {
258
259
  $ref: '/schemas/echo/ref',
259
260
  reference: {
260
261
  schema: {
261
- $ref: 'dxn:type:example.com/type/Organization',
262
+ $ref: 'dxn:type:com.example.type.organization',
262
263
  },
263
264
  schemaVersion: '0.1.0',
264
265
  },
@@ -276,8 +277,8 @@ describe('effect-to-json', () => {
276
277
  const Organization = Schema.Struct({
277
278
  field: Schema.String,
278
279
  }).pipe(
279
- Type.Obj({
280
- typename: 'example.com/type/Organization',
280
+ Type.object({
281
+ typename: 'com.example.type.organization',
281
282
  version: '0.1.0',
282
283
  }),
283
284
  );
@@ -286,8 +287,8 @@ describe('effect-to-json', () => {
286
287
  name: Schema.String,
287
288
  organization: Ref(Organization).annotations({ description: 'Contact organization' }),
288
289
  }).pipe(
289
- Type.Obj({
290
- typename: 'example.com/type/Person',
290
+ Type.object({
291
+ typename: 'com.example.type.person',
291
292
  version: '0.1.0',
292
293
  }),
293
294
  );
@@ -348,18 +349,18 @@ describe('effect-to-json', () => {
348
349
  const schema = TestSchema.EmployedBy;
349
350
  const jsonSchema = toJsonSchema(schema);
350
351
  expect(jsonSchema).toEqual({
351
- $id: 'dxn:type:example.com/type/EmployedBy',
352
+ $id: 'dxn:type:com.example.type.employed-by',
352
353
  $schema: 'http://json-schema.org/draft-07/schema#',
353
354
  entityKind: 'relation',
354
- typename: 'example.com/type/EmployedBy',
355
+ typename: 'com.example.type.employed-by',
355
356
  version: '0.1.0',
356
357
  relationSource: {
357
358
  // TODO(dmaretskyi): Should those point to specific schema version?
358
- $ref: 'dxn:type:example.com/type/Person',
359
+ $ref: 'dxn:type:com.example.type.person',
359
360
  },
360
361
  relationTarget: {
361
362
  // TODO(dmaretskyi): Should those point to specific schema version?
362
- $ref: 'dxn:type:example.com/type/Organization',
363
+ $ref: 'dxn:type:com.example.type.organization',
363
364
  },
364
365
  type: 'object',
365
366
  properties: {
@@ -385,7 +386,7 @@ describe('effect-to-json', () => {
385
386
  name: Schema.String,
386
387
  }).pipe(
387
388
  EchoObjectSchema({
388
- typename: 'example.com/type/Organization',
389
+ typename: 'com.example.type.organization',
389
390
  version: '0.1.0',
390
391
  }),
391
392
  LabelAnnotation.set(['name']),
@@ -393,9 +394,9 @@ describe('effect-to-json', () => {
393
394
 
394
395
  const jsonSchema = toJsonSchema(Organization);
395
396
  expect(jsonSchema).toEqual({
396
- $id: 'dxn:type:example.com/type/Organization',
397
+ $id: 'dxn:type:com.example.type.organization',
397
398
  $schema: 'http://json-schema.org/draft-07/schema#',
398
- typename: 'example.com/type/Organization',
399
+ typename: 'com.example.type.organization',
399
400
  version: '0.1.0',
400
401
  entityKind: 'object',
401
402
  type: 'object',
@@ -466,7 +467,7 @@ describe('effect-to-json', () => {
466
467
  const expectReferenceAnnotation = (object: JsonSchemaType) => {
467
468
  expect(object.reference).to.deep.eq({
468
469
  schema: {
469
- $ref: 'dxn:type:example.com/type/TestNested',
470
+ $ref: 'dxn:type:com.example.type.testNested',
470
471
  },
471
472
  schemaVersion: '0.1.0',
472
473
  });
@@ -494,8 +495,8 @@ describe('json-to-effect', () => {
494
495
  const Organization = Schema.Struct({
495
496
  field: Schema.String,
496
497
  }).pipe(
497
- Type.Obj({
498
- typename: 'example.com/type/Organization',
498
+ Type.object({
499
+ typename: 'com.example.type.organization',
499
500
  version: '0.1.0',
500
501
  }),
501
502
  );
@@ -515,8 +516,8 @@ describe('json-to-effect', () => {
515
516
  } as const;
516
517
 
517
518
  const Test = (partial ? Schema.partial(Schema.Struct(fields)) : Schema.Struct(fields)).pipe(
518
- Type.Obj({
519
- typename: 'example.com/type/Test',
519
+ Type.object({
520
+ typename: 'com.example.type.test',
520
521
  version: '0.1.0',
521
522
  }),
522
523
  );
@@ -543,13 +544,13 @@ describe('json-to-effect', () => {
543
544
 
544
545
  test('legacy schema with dxn:type $id gets decoded', () => {
545
546
  const jsonSchema: JsonSchemaType = {
546
- $id: 'dxn:type:example.com/type/Project',
547
+ $id: 'dxn:type:com.example.type.project',
547
548
  $schema: 'http://json-schema.org/draft-07/schema#',
548
549
  additionalProperties: false,
549
550
  echo: {
550
551
  type: {
551
552
  schemaId: '01JERV1HQCQZDQ4NVCJ42QB38F',
552
- typename: 'example.com/type/Project',
553
+ typename: 'com.example.type.project',
553
554
  version: '0.1.0',
554
555
  },
555
556
  },
@@ -575,7 +576,7 @@ describe('json-to-effect', () => {
575
576
  const schema = toEffectSchema(jsonSchema);
576
577
  expect(getTypeAnnotation(schema)).to.deep.eq({
577
578
  kind: EntityKind.Object,
578
- typename: 'example.com/type/Project',
579
+ typename: 'com.example.type.project',
579
580
  version: '0.1.0',
580
581
  });
581
582
  expect(getTypeIdentifierAnnotation(schema)).to.deep.eq('dxn:echo:@:01JERV1HQCQZDQ4NVCJ42QB38F');
@@ -713,7 +714,7 @@ describe('json-to-effect', () => {
713
714
  "$ref": "/schemas/echo/ref",
714
715
  "reference": {
715
716
  "schema": {
716
- "$ref": "dxn:type:example.com/type/Person",
717
+ "$ref": "dxn:type:com.example.type.person",
717
718
  },
718
719
  "schemaVersion": "0.1.0",
719
720
  },
@@ -734,7 +735,7 @@ describe('json-to-effect', () => {
734
735
  test('object nested inside another struct', () => {
735
736
  const Contact = Schema.Struct({
736
737
  name: Schema.String,
737
- }).pipe(EchoObjectSchema({ typename: 'example.com/type/Person', version: '0.1.0' }));
738
+ }).pipe(EchoObjectSchema({ typename: 'com.example.type.person', version: '0.1.0' }));
738
739
  const input = Schema.Struct({
739
740
  contact: Contact,
740
741
  });
@@ -745,7 +746,7 @@ describe('json-to-effect', () => {
745
746
  "additionalProperties": false,
746
747
  "properties": {
747
748
  "contact": {
748
- "$id": "dxn:type:example.com/type/Person",
749
+ "$id": "dxn:type:com.example.type.person",
749
750
  "additionalProperties": false,
750
751
  "entityKind": "object",
751
752
  "properties": {
@@ -765,7 +766,7 @@ describe('json-to-effect', () => {
765
766
  "id",
766
767
  ],
767
768
  "type": "object",
768
- "typename": "example.com/type/Person",
769
+ "typename": "com.example.type.person",
769
770
  "version": "0.1.0",
770
771
  },
771
772
  },
@@ -794,7 +795,7 @@ describe('reference', () => {
794
795
  $schema: 'http://json-schema.org/draft-07/schema#',
795
796
  reference: {
796
797
  schema: {
797
- $ref: 'dxn:type:example.com/type/Person',
798
+ $ref: 'dxn:type:com.example.type.person',
798
799
  },
799
800
  schemaVersion: '0.1.0',
800
801
  },
@@ -812,7 +813,7 @@ describe('reference', () => {
812
813
  $ref: '/schemas/echo/ref',
813
814
  reference: {
814
815
  schema: {
815
- $ref: 'dxn:type:example.com/type/Person',
816
+ $ref: 'dxn:type:com.example.type.person',
816
817
  },
817
818
  schemaVersion: '0.1.0',
818
819
  },
@@ -833,7 +834,7 @@ describe('reference', () => {
833
834
  $ref: '/schemas/echo/ref',
834
835
  reference: {
835
836
  schema: {
836
- $ref: 'dxn:type:example.com/type/Person',
837
+ $ref: 'dxn:type:com.example.type.person',
837
838
  },
838
839
  schemaVersion: '0.1.0',
839
840
  },
@@ -22,11 +22,9 @@ import {
22
22
  TypeAnnotationId,
23
23
  TypeIdentifierAnnotationId,
24
24
  makeTypeJsonSchemaAnnotation,
25
- } from '../annotations';
26
- import { Expando } from '../entities';
27
- import { type JsonSchemaReferenceInfo, Ref, createEchoReferenceSchema } from '../ref';
28
- import { EntityKind, EntityKindSchema } from '../types';
29
-
25
+ } from '../Annotation';
26
+ import { ANY_OBJECT_TYPENAME, ANY_OBJECT_VERSION, EntityKind, EntityKindSchema } from '../common/types';
27
+ import { type JsonSchemaReferenceInfo, createEchoReferenceSchema } from '../Ref';
30
28
  import { CustomAnnotations, DecodedAnnotations, EchoAnnotations } from './annotations';
31
29
  import {
32
30
  ECHO_ANNOTATIONS_NS_DEPRECATED_KEY,
@@ -81,7 +79,11 @@ export type JsonSchemaOptions = {
81
79
  */
82
80
  // TODO(burdon): Reconcile with possibly extending @effect/Schema/JSONSchema
83
81
  // We add additional propertyOrder (but the object properties ARE ordered); and type "string" for literals.
84
- export const toJsonSchema = (schema: Schema.Schema.All, options: JsonSchemaOptions = {}): JsonSchemaType => {
82
+ // TODO(wittjosiah): This is mutable because its a pojo, perhaps should be left as readonly at type level though?
83
+ export const toJsonSchema = (
84
+ schema: Schema.Schema.All,
85
+ options: JsonSchemaOptions = {},
86
+ ): Types.DeepMutable<JsonSchemaType> => {
85
87
  assertArgument(Schema.isSchema(schema), 'schema');
86
88
  let jsonSchema = _toJsonSchemaAST(schema.ast);
87
89
  if (options.strict) {
@@ -104,11 +106,11 @@ export const toJsonSchema = (schema: Schema.Schema.All, options: JsonSchemaOptio
104
106
  return jsonSchema;
105
107
  };
106
108
 
107
- const _toJsonSchemaAST = (ast: SchemaAST.AST): JsonSchemaType => {
109
+ const _toJsonSchemaAST = (ast: SchemaAST.AST): Types.DeepMutable<JsonSchemaType> => {
108
110
  const withRefinements = withEchoRefinements(ast, '#');
109
111
  const jsonSchema = JSONSchema.fromAST(withRefinements, {
110
112
  definitions: {},
111
- }) as JsonSchemaType;
113
+ }) as Types.DeepMutable<JsonSchemaType>;
112
114
 
113
115
  return normalizeJsonSchema(jsonSchema);
114
116
  };
@@ -327,7 +329,7 @@ const objectToEffectSchema = (root: JsonSchemaType, defs: JsonSchemaType['$defs'
327
329
  }
328
330
 
329
331
  if (immutableIdField) {
330
- schema = Schema.extend(Schema.mutable(schema), Schema.Struct({ id: immutableIdField }));
332
+ schema = Schema.extend(schema, Schema.Struct({ id: immutableIdField }));
331
333
  }
332
334
 
333
335
  const annotations = jsonSchemaFieldsToAnnotations(root);
@@ -352,7 +354,8 @@ const anyToEffectSchema = (root: JSONSchema.JsonSchema7Any): Schema.Schema.AnyNo
352
354
  // TODO(dmaretskyi): Types.
353
355
  const refToEffectSchema = (root: any): Schema.Schema.AnyNoContext => {
354
356
  if (!('reference' in root)) {
355
- return Ref(Expando);
357
+ // Fallback to generic object ref when no reference info is provided.
358
+ return createEchoReferenceSchema(undefined, ANY_OBJECT_TYPENAME, ANY_OBJECT_VERSION);
356
359
  }
357
360
 
358
361
  const reference: JsonSchemaReferenceInfo = root.reference;
@@ -377,7 +380,7 @@ const refToEffectSchema = (root: any): Schema.Schema.AnyNoContext => {
377
380
  const annotations_toJsonSchemaFields = (annotations: SchemaAST.Annotations): Record<symbol, any> => {
378
381
  const schemaFields: Record<string, any> = {};
379
382
 
380
- const echoAnnotations: JsonSchemaEchoAnnotations = {};
383
+ const echoAnnotations: Types.Mutable<JsonSchemaEchoAnnotations> = {};
381
384
  for (const [key, annotationId] of Object.entries(EchoAnnotations)) {
382
385
  if (annotations[annotationId] != null) {
383
386
  echoAnnotations[key as keyof JsonSchemaEchoAnnotations] = annotations[annotationId] as any;
@@ -461,11 +464,13 @@ const jsonSchemaFieldsToAnnotations = (schema: JsonSchemaType): SchemaAST.Annota
461
464
  }
462
465
  }
463
466
 
464
- annotations[TypeIdentifierAnnotationId] = decodeTypeIdentifierAnnotation(schema);
467
+ const typeIdentifier = decodeTypeIdentifierAnnotation(schema);
468
+ annotations[TypeIdentifierAnnotationId] = typeIdentifier;
465
469
  const typeAnnotation = decodeTypeAnnotation(schema);
466
470
  if (typeAnnotation) {
467
471
  annotations[TypeAnnotationId] = typeAnnotation;
468
472
  annotations[SchemaAST.JSONSchemaAnnotationId] = makeTypeJsonSchemaAnnotation({
473
+ identifier: typeIdentifier,
469
474
  kind: typeAnnotation.kind,
470
475
  typename: typeAnnotation.typename,
471
476
  version: typeAnnotation.version,
@@ -495,7 +500,7 @@ const addJsonSchemaFields = (ast: SchemaAST.AST, schema: JsonSchemaType): Schema
495
500
  * Fixes field order.
496
501
  * Sets `$schema` prop.
497
502
  */
498
- const normalizeJsonSchema = (jsonSchema: JsonSchemaType): JsonSchemaType => {
503
+ const normalizeJsonSchema = (jsonSchema: Types.DeepMutable<JsonSchemaType>): Types.DeepMutable<JsonSchemaType> => {
499
504
  if (jsonSchema.properties && 'id' in jsonSchema.properties) {
500
505
  jsonSchema.properties = orderKeys(jsonSchema.properties, ['id']); // Put id first.
501
506
  }