@dxos/echo 0.8.4-main.c4373fc → 0.8.4-main.c85a9c8dae

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 (559) hide show
  1. package/README.md +3 -4
  2. package/dist/lib/neutral/Annotation.mjs +37 -0
  3. package/dist/lib/neutral/Database.mjs +45 -0
  4. package/dist/lib/neutral/Entity.mjs +56 -0
  5. package/dist/lib/neutral/Err.mjs +12 -0
  6. package/dist/lib/neutral/Feed.mjs +43 -0
  7. package/dist/lib/neutral/Filter.mjs +61 -0
  8. package/dist/lib/neutral/Format.mjs +66 -0
  9. package/dist/lib/neutral/Format.mjs.map +7 -0
  10. package/dist/lib/neutral/JsonSchema.mjs +18 -0
  11. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  12. package/dist/lib/neutral/Key.mjs +12 -0
  13. package/dist/lib/neutral/Key.mjs.map +7 -0
  14. package/dist/lib/neutral/Obj.mjs +107 -0
  15. package/dist/lib/neutral/Obj.mjs.map +7 -0
  16. package/dist/lib/neutral/Order.mjs +12 -0
  17. package/dist/lib/neutral/Order.mjs.map +7 -0
  18. package/dist/lib/neutral/Query.mjs +32 -0
  19. package/dist/lib/neutral/Query.mjs.map +7 -0
  20. package/dist/lib/neutral/QueryResult.mjs +2 -0
  21. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  22. package/dist/lib/neutral/Ref.mjs +24 -0
  23. package/dist/lib/neutral/Ref.mjs.map +7 -0
  24. package/dist/lib/neutral/Relation.mjs +90 -0
  25. package/dist/lib/neutral/Relation.mjs.map +7 -0
  26. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  27. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  28. package/dist/lib/neutral/Tag.mjs +25 -0
  29. package/dist/lib/neutral/Tag.mjs.map +7 -0
  30. package/dist/lib/neutral/Type.mjs +34 -0
  31. package/dist/lib/neutral/Type.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-4KG6IGL4.mjs +67 -0
  33. package/dist/lib/neutral/chunk-4KG6IGL4.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-5ELDDYWE.mjs +130 -0
  35. package/dist/lib/neutral/chunk-5ELDDYWE.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-ALOGSVBP.mjs +299 -0
  37. package/dist/lib/neutral/chunk-ALOGSVBP.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  39. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-AQP4QKYP.mjs +283 -0
  41. package/dist/lib/neutral/chunk-AQP4QKYP.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-BRJSLACP.mjs +152 -0
  43. package/dist/lib/neutral/chunk-BRJSLACP.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-DZQSL6RW.mjs +73 -0
  45. package/dist/lib/neutral/chunk-DZQSL6RW.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-F7KMHDPJ.mjs +327 -0
  47. package/dist/lib/neutral/chunk-F7KMHDPJ.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-GAWKQ5DZ.mjs +56 -0
  49. package/dist/lib/neutral/chunk-GAWKQ5DZ.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-GFNCSK7F.mjs +101 -0
  51. package/dist/lib/neutral/chunk-GFNCSK7F.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  53. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-KGV3QIRX.mjs +313 -0
  55. package/dist/lib/neutral/chunk-KGV3QIRX.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-M2KVTHZM.mjs +402 -0
  57. package/dist/lib/neutral/chunk-M2KVTHZM.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-MXQJZCPY.mjs +51 -0
  59. package/dist/lib/neutral/chunk-MXQJZCPY.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-O3TZFQCT.mjs +27 -0
  61. package/dist/lib/neutral/chunk-O3TZFQCT.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  63. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-OVUBTQLT.mjs +45 -0
  65. package/dist/lib/neutral/chunk-OVUBTQLT.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-PP4DNUZU.mjs +3919 -0
  67. package/dist/lib/neutral/chunk-PP4DNUZU.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-QXF3LGN2.mjs +43 -0
  69. package/dist/lib/neutral/chunk-QXF3LGN2.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-T4MPQJ7X.mjs +97 -0
  71. package/dist/lib/neutral/chunk-T4MPQJ7X.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-T6JEFNP6.mjs +7 -0
  73. package/dist/lib/neutral/chunk-T6JEFNP6.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-W7OP5HGZ.mjs +121 -0
  75. package/dist/lib/neutral/chunk-W7OP5HGZ.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-ZTUBYOGB.mjs +42 -0
  77. package/dist/lib/neutral/chunk-ZTUBYOGB.mjs.map +7 -0
  78. package/dist/lib/neutral/chunk-ZWKJ4LZJ.mjs +298 -0
  79. package/dist/lib/neutral/chunk-ZWKJ4LZJ.mjs.map +7 -0
  80. package/dist/lib/neutral/index.mjs +94 -0
  81. package/dist/lib/neutral/index.mjs.map +7 -0
  82. package/dist/lib/{node-esm → neutral}/internal/index.mjs +260 -122
  83. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  84. package/dist/lib/neutral/meta.json +1 -0
  85. package/dist/lib/neutral/testing/index.mjs +369 -0
  86. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  87. package/dist/types/src/Annotation.d.ts +24 -0
  88. package/dist/types/src/Annotation.d.ts.map +1 -0
  89. package/dist/types/src/Collection.d.ts +16 -0
  90. package/dist/types/src/Collection.d.ts.map +1 -0
  91. package/dist/types/src/Database.d.ts +189 -0
  92. package/dist/types/src/Database.d.ts.map +1 -0
  93. package/dist/types/src/Dataset.d.ts +18 -0
  94. package/dist/types/src/Dataset.d.ts.map +1 -0
  95. package/dist/types/src/Entity.d.ts +168 -0
  96. package/dist/types/src/Entity.d.ts.map +1 -0
  97. package/dist/types/src/Entity.test.d.ts +2 -0
  98. package/dist/types/src/Entity.test.d.ts.map +1 -0
  99. package/dist/types/src/Err.d.ts +107 -0
  100. package/dist/types/src/Err.d.ts.map +1 -0
  101. package/dist/types/src/Feed.d.ts +165 -0
  102. package/dist/types/src/Feed.d.ts.map +1 -0
  103. package/dist/types/src/Filter.d.ts +120 -0
  104. package/dist/types/src/Filter.d.ts.map +1 -0
  105. package/dist/types/src/Format.d.ts +4 -0
  106. package/dist/types/src/Format.d.ts.map +1 -0
  107. package/dist/types/src/Hypergraph.d.ts +60 -0
  108. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  109. package/dist/types/src/JsonSchema.d.ts +16 -0
  110. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  111. package/dist/types/src/Key.d.ts +1 -0
  112. package/dist/types/src/Key.d.ts.map +1 -1
  113. package/dist/types/src/Obj.d.ts +423 -95
  114. package/dist/types/src/Obj.d.ts.map +1 -1
  115. package/dist/types/src/Obj.test.d.ts +2 -0
  116. package/dist/types/src/Obj.test.d.ts.map +1 -0
  117. package/dist/types/src/Order.d.ts +16 -0
  118. package/dist/types/src/Order.d.ts.map +1 -0
  119. package/dist/types/src/Query.d.ts +202 -0
  120. package/dist/types/src/Query.d.ts.map +1 -0
  121. package/dist/types/src/Query.test.d.ts +2 -0
  122. package/dist/types/src/Query.test.d.ts.map +1 -0
  123. package/dist/types/src/QueryResult.d.ts +80 -0
  124. package/dist/types/src/QueryResult.d.ts.map +1 -0
  125. package/dist/types/src/Ref.d.ts +61 -11
  126. package/dist/types/src/Ref.d.ts.map +1 -1
  127. package/dist/types/src/Relation.d.ts +287 -21
  128. package/dist/types/src/Relation.d.ts.map +1 -1
  129. package/dist/types/src/Relation.test.d.ts +2 -0
  130. package/dist/types/src/Relation.test.d.ts.map +1 -0
  131. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  132. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  133. package/dist/types/src/Tag.d.ts +18 -0
  134. package/dist/types/src/Tag.d.ts.map +1 -0
  135. package/dist/types/src/Type.d.ts +120 -97
  136. package/dist/types/src/Type.d.ts.map +1 -1
  137. package/dist/types/src/Type.test.d.ts +2 -0
  138. package/dist/types/src/Type.test.d.ts.map +1 -0
  139. package/dist/types/src/View.d.ts +68 -0
  140. package/dist/types/src/View.d.ts.map +1 -0
  141. package/dist/types/src/hierarchy.test.d.ts +2 -0
  142. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  143. package/dist/types/src/index.d.ts +19 -5
  144. package/dist/types/src/index.d.ts.map +1 -1
  145. package/dist/types/src/internal/annotations/annotations.d.ts +209 -0
  146. package/dist/types/src/internal/annotations/annotations.d.ts.map +1 -0
  147. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +1 -0
  148. package/dist/types/src/internal/annotations/index.d.ts +3 -0
  149. package/dist/types/src/internal/annotations/index.d.ts.map +1 -0
  150. package/dist/types/src/internal/annotations/util.d.ts +39 -0
  151. package/dist/types/src/internal/annotations/util.d.ts.map +1 -0
  152. package/dist/types/src/internal/api/annotations.d.ts +23 -0
  153. package/dist/types/src/internal/api/annotations.d.ts.map +1 -0
  154. package/dist/types/src/internal/api/entity.d.ts +13 -0
  155. package/dist/types/src/internal/api/entity.d.ts.map +1 -0
  156. package/dist/types/src/internal/api/index.d.ts +15 -0
  157. package/dist/types/src/internal/api/index.d.ts.map +1 -0
  158. package/dist/types/src/internal/api/meta.d.ts +42 -0
  159. package/dist/types/src/internal/api/meta.d.ts.map +1 -0
  160. package/dist/types/src/internal/api/sorting.d.ts +24 -0
  161. package/dist/types/src/internal/api/sorting.d.ts.map +1 -0
  162. package/dist/types/src/internal/api/version.d.ts +42 -0
  163. package/dist/types/src/internal/api/version.d.ts.map +1 -0
  164. package/dist/types/src/internal/entities/entity.d.ts +20 -0
  165. package/dist/types/src/internal/entities/entity.d.ts.map +1 -0
  166. package/dist/types/src/internal/entities/index.d.ts +6 -0
  167. package/dist/types/src/internal/entities/index.d.ts.map +1 -0
  168. package/dist/types/src/internal/entities/model.d.ts +79 -0
  169. package/dist/types/src/internal/entities/model.d.ts.map +1 -0
  170. package/dist/types/src/internal/entities/object.d.ts +18 -0
  171. package/dist/types/src/internal/entities/object.d.ts.map +1 -0
  172. package/dist/types/src/internal/entities/relation.d.ts +62 -0
  173. package/dist/types/src/internal/entities/relation.d.ts.map +1 -0
  174. package/dist/types/src/internal/entities/util.d.ts +2 -0
  175. package/dist/types/src/internal/entities/util.d.ts.map +1 -0
  176. package/dist/types/src/internal/formats/format.d.ts +4 -2
  177. package/dist/types/src/internal/formats/format.d.ts.map +1 -1
  178. package/dist/types/src/internal/formats/select.d.ts +6 -4
  179. package/dist/types/src/internal/formats/select.d.ts.map +1 -1
  180. package/dist/types/src/internal/formats/string.d.ts +4 -0
  181. package/dist/types/src/internal/formats/string.d.ts.map +1 -1
  182. package/dist/types/src/internal/formats/types.d.ts +13 -9
  183. package/dist/types/src/internal/formats/types.d.ts.map +1 -1
  184. package/dist/types/src/internal/index.d.ts +7 -10
  185. package/dist/types/src/internal/index.d.ts.map +1 -1
  186. package/dist/types/src/internal/json-schema/annotations.d.ts.map +1 -0
  187. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +1 -0
  188. package/dist/types/src/internal/json-schema/index.d.ts +2 -0
  189. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -1
  190. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -1
  191. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +130 -29
  192. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -1
  193. package/dist/types/src/internal/{json → json-schema}/json-schema.d.ts +4 -6
  194. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +1 -0
  195. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +1 -0
  196. package/dist/types/src/internal/object/clone.d.ts +8 -0
  197. package/dist/types/src/internal/object/clone.d.ts.map +1 -0
  198. package/dist/types/src/internal/object/common.d.ts.map +1 -1
  199. package/dist/types/src/internal/object/{create.d.ts → create-object.d.ts} +10 -11
  200. package/dist/types/src/internal/object/create-object.d.ts.map +1 -0
  201. package/dist/types/src/internal/object/create-object.test.d.ts +2 -0
  202. package/dist/types/src/internal/object/create-object.test.d.ts.map +1 -0
  203. package/dist/types/src/internal/object/deleted.d.ts +2 -2
  204. package/dist/types/src/internal/object/deleted.d.ts.map +1 -1
  205. package/dist/types/src/internal/object/ids.d.ts.map +1 -1
  206. package/dist/types/src/internal/object/index.d.ts +6 -12
  207. package/dist/types/src/internal/object/index.d.ts.map +1 -1
  208. package/dist/types/src/internal/object/json-serializer.d.ts +14 -9
  209. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -1
  210. package/dist/types/src/internal/object/schema-validator.d.ts +1 -14
  211. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -1
  212. package/dist/types/src/internal/object/set-value.d.ts +7 -0
  213. package/dist/types/src/internal/object/set-value.d.ts.map +1 -0
  214. package/dist/types/src/internal/object/set-value.test.d.ts +2 -0
  215. package/dist/types/src/internal/object/set-value.test.d.ts.map +1 -0
  216. package/dist/types/src/internal/object/snapshot.d.ts +6 -0
  217. package/dist/types/src/internal/object/snapshot.d.ts.map +1 -0
  218. package/dist/types/src/internal/object/typed-object.d.ts +8 -14
  219. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -1
  220. package/dist/types/src/internal/proxy/change-context.d.ts +55 -0
  221. package/dist/types/src/internal/proxy/change-context.d.ts.map +1 -0
  222. package/dist/types/src/internal/proxy/change.test.d.ts +2 -0
  223. package/dist/types/src/internal/proxy/change.test.d.ts.map +1 -0
  224. package/dist/types/src/internal/proxy/define-hidden-property.d.ts +5 -0
  225. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +1 -0
  226. package/dist/types/src/internal/proxy/errors.d.ts +19 -0
  227. package/dist/types/src/internal/proxy/errors.d.ts.map +1 -0
  228. package/dist/types/src/internal/proxy/event-batch.d.ts +10 -0
  229. package/dist/types/src/internal/proxy/event-batch.d.ts.map +1 -0
  230. package/dist/types/src/internal/proxy/index.d.ts +14 -0
  231. package/dist/types/src/internal/proxy/index.d.ts.map +1 -0
  232. package/dist/types/src/internal/proxy/json-serializer.d.ts +6 -0
  233. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +1 -0
  234. package/dist/types/src/internal/proxy/make-object.d.ts +14 -0
  235. package/dist/types/src/internal/proxy/make-object.d.ts.map +1 -0
  236. package/dist/types/src/internal/proxy/ownership.d.ts +57 -0
  237. package/dist/types/src/internal/proxy/ownership.d.ts.map +1 -0
  238. package/dist/types/src/internal/proxy/proxy-types.d.ts +18 -0
  239. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +1 -0
  240. package/dist/types/src/internal/proxy/proxy-utils.d.ts +47 -0
  241. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +1 -0
  242. package/dist/types/src/internal/proxy/reactive-array.d.ts +8 -0
  243. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +1 -0
  244. package/dist/types/src/internal/proxy/reactive.d.ts +39 -0
  245. package/dist/types/src/internal/proxy/reactive.d.ts.map +1 -0
  246. package/dist/types/src/internal/proxy/schema-validator.d.ts +15 -0
  247. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +1 -0
  248. package/dist/types/src/internal/proxy/symbols.d.ts +3 -0
  249. package/dist/types/src/internal/proxy/symbols.d.ts.map +1 -0
  250. package/dist/types/src/internal/proxy/typed-handler.d.ts +16 -12
  251. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -1
  252. package/dist/types/src/internal/ref/ref-array.d.ts +4 -4
  253. package/dist/types/src/internal/ref/ref-array.d.ts.map +1 -1
  254. package/dist/types/src/internal/ref/ref.d.ts +43 -18
  255. package/dist/types/src/internal/ref/ref.d.ts.map +1 -1
  256. package/dist/types/src/internal/schema/compose.d.ts +7 -0
  257. package/dist/types/src/internal/schema/compose.d.ts.map +1 -0
  258. package/dist/types/src/internal/schema/compose.test.d.ts.map +1 -0
  259. package/dist/types/src/internal/schema/echo-schema.d.ts +25 -12
  260. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -1
  261. package/dist/types/src/internal/schema/index.d.ts +1 -4
  262. package/dist/types/src/internal/schema/index.d.ts.map +1 -1
  263. package/dist/types/src/internal/schema/manipulation.d.ts.map +1 -1
  264. package/dist/types/src/internal/schema/persistent-schema.d.ts +20 -0
  265. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +1 -0
  266. package/dist/types/src/internal/types/base.d.ts +27 -0
  267. package/dist/types/src/internal/types/base.d.ts.map +1 -0
  268. package/dist/types/src/internal/types/entity.d.ts +37 -0
  269. package/dist/types/src/internal/types/entity.d.ts.map +1 -0
  270. package/dist/types/src/internal/types/index.d.ts +5 -2
  271. package/dist/types/src/internal/types/index.d.ts.map +1 -1
  272. package/dist/types/src/internal/{object → types}/meta.d.ts +16 -14
  273. package/dist/types/src/internal/types/meta.d.ts.map +1 -0
  274. package/dist/types/src/internal/types/typename.d.ts +21 -0
  275. package/dist/types/src/internal/types/typename.d.ts.map +1 -0
  276. package/dist/types/src/internal/types/version.d.ts +15 -0
  277. package/dist/types/src/internal/types/version.d.ts.map +1 -0
  278. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  279. package/dist/types/src/testing/index.d.ts +3 -3
  280. package/dist/types/src/testing/index.d.ts.map +1 -1
  281. package/dist/types/src/testing/test-data.d.ts +18 -0
  282. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  283. package/dist/types/src/testing/test-schema.d.ts +304 -0
  284. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  285. package/dist/types/src/testing/util.d.ts +21 -0
  286. package/dist/types/src/testing/util.d.ts.map +1 -0
  287. package/dist/types/tsconfig.tsbuildinfo +1 -1
  288. package/package.json +106 -65
  289. package/src/Annotation.ts +46 -0
  290. package/src/Collection.ts +30 -0
  291. package/src/Database.ts +315 -0
  292. package/src/Dataset.ts +24 -0
  293. package/src/Entity.test.ts +22 -0
  294. package/src/Entity.ts +234 -0
  295. package/src/Err.ts +38 -0
  296. package/src/Feed.ts +254 -0
  297. package/src/Filter.ts +389 -0
  298. package/src/Format.ts +9 -0
  299. package/src/Hypergraph.ts +74 -0
  300. package/src/JsonSchema.ts +24 -0
  301. package/src/Key.ts +3 -0
  302. package/src/Obj.test.ts +447 -0
  303. package/src/Obj.ts +588 -248
  304. package/src/Order.ts +44 -0
  305. package/src/Query.test.ts +632 -0
  306. package/src/Query.ts +520 -0
  307. package/src/QueryResult.ts +106 -0
  308. package/src/Ref.ts +77 -9
  309. package/src/Relation.test.ts +88 -0
  310. package/src/Relation.ts +440 -58
  311. package/src/SchemaRegistry.ts +106 -0
  312. package/src/Tag.ts +39 -0
  313. package/src/Type.test.ts +52 -0
  314. package/src/Type.ts +162 -151
  315. package/src/View.ts +100 -0
  316. package/src/hierarchy.test.ts +33 -0
  317. package/src/index.ts +20 -6
  318. package/src/internal/README.md +102 -0
  319. package/src/internal/{ast → annotations}/annotations.test.ts +18 -20
  320. package/src/internal/annotations/annotations.ts +526 -0
  321. package/src/internal/annotations/index.ts +6 -0
  322. package/src/internal/annotations/util.ts +85 -0
  323. package/src/internal/api/annotations.ts +60 -0
  324. package/src/internal/api/entity.ts +29 -0
  325. package/src/internal/api/index.ts +19 -0
  326. package/src/internal/api/meta.ts +88 -0
  327. package/src/internal/api/sorting.ts +53 -0
  328. package/src/internal/api/version.ts +96 -0
  329. package/src/internal/entities/entity.ts +128 -0
  330. package/src/internal/entities/index.ts +9 -0
  331. package/src/internal/entities/model.ts +138 -0
  332. package/src/internal/entities/object.ts +58 -0
  333. package/src/internal/entities/relation.ts +171 -0
  334. package/src/internal/entities/util.ts +33 -0
  335. package/src/internal/formats/date.test.ts +1 -1
  336. package/src/internal/formats/date.ts +5 -5
  337. package/src/internal/formats/format.test.ts +6 -6
  338. package/src/internal/formats/format.ts +8 -6
  339. package/src/internal/formats/number.ts +5 -5
  340. package/src/internal/formats/object.ts +4 -4
  341. package/src/internal/formats/select.ts +6 -4
  342. package/src/internal/formats/string.ts +14 -9
  343. package/src/internal/formats/types.ts +53 -42
  344. package/src/internal/index.ts +30 -13
  345. package/src/internal/{json → json-schema}/annotations.ts +1 -1
  346. package/src/internal/json-schema/index.ts +2 -0
  347. package/src/internal/json-schema/json-schema-normalize.ts +4 -2
  348. package/src/internal/json-schema/json-schema-type.ts +35 -35
  349. package/src/internal/{json → json-schema}/json-schema.test.ts +232 -97
  350. package/src/internal/{json → json-schema}/json-schema.ts +79 -93
  351. package/src/internal/object/clone.ts +48 -0
  352. package/src/internal/object/common.ts +3 -4
  353. package/src/internal/object/{create.test.ts → create-object.test.ts} +31 -33
  354. package/src/internal/object/{create.ts → create-object.ts} +36 -37
  355. package/src/internal/object/deleted.ts +6 -6
  356. package/src/internal/object/ids.ts +1 -1
  357. package/src/internal/object/index.ts +6 -12
  358. package/src/internal/object/inspect.ts +5 -7
  359. package/src/internal/object/json-serializer.test.ts +59 -37
  360. package/src/internal/object/json-serializer.ts +87 -108
  361. package/src/internal/object/schema-validator.test.ts +3 -7
  362. package/src/internal/object/schema-validator.ts +2 -237
  363. package/src/internal/object/set-value.test.ts +281 -0
  364. package/src/internal/object/set-value.ts +165 -0
  365. package/src/internal/object/snapshot.ts +96 -0
  366. package/src/internal/object/typed-object.test.ts +11 -11
  367. package/src/internal/object/typed-object.ts +8 -59
  368. package/src/internal/proxy/change-context.ts +138 -0
  369. package/src/internal/proxy/change.test.ts +519 -0
  370. package/src/internal/proxy/define-hidden-property.ts +14 -0
  371. package/src/internal/proxy/errors.ts +42 -0
  372. package/src/internal/proxy/event-batch.ts +44 -0
  373. package/src/internal/proxy/handler.test.ts +51 -91
  374. package/src/internal/proxy/index.ts +17 -0
  375. package/src/internal/proxy/json-serializer.ts +87 -0
  376. package/src/internal/proxy/make-object.ts +106 -0
  377. package/src/internal/proxy/ownership.ts +253 -0
  378. package/src/internal/proxy/proxy-types.ts +23 -0
  379. package/src/internal/proxy/proxy-utils.ts +150 -0
  380. package/src/internal/proxy/reactive-array.ts +71 -0
  381. package/src/internal/proxy/reactive.ts +69 -0
  382. package/src/internal/proxy/schema-validator.ts +244 -0
  383. package/src/internal/proxy/schema.test.ts +27 -18
  384. package/src/internal/proxy/symbols.ts +7 -0
  385. package/src/internal/proxy/typed-handler.test.ts +260 -48
  386. package/src/internal/proxy/typed-handler.ts +283 -61
  387. package/src/internal/proxy/typed-object.test.ts +54 -38
  388. package/src/internal/ref/ref-array.ts +4 -4
  389. package/src/internal/ref/ref.test.ts +10 -9
  390. package/src/internal/ref/ref.ts +107 -56
  391. package/src/internal/{projection → schema}/compose.test.ts +8 -9
  392. package/src/internal/{projection → schema}/compose.ts +13 -8
  393. package/src/internal/schema/echo-schema.ts +74 -33
  394. package/src/internal/schema/index.ts +1 -4
  395. package/src/internal/schema/manipulation.ts +7 -1
  396. package/src/internal/schema/persistent-schema.ts +33 -0
  397. package/src/internal/types/base.ts +43 -0
  398. package/src/internal/types/entity.ts +54 -0
  399. package/src/internal/types/index.ts +5 -2
  400. package/src/internal/types/meta.ts +68 -0
  401. package/src/internal/types/typename.ts +55 -0
  402. package/src/internal/types/version.ts +19 -0
  403. package/src/testing/api.test.ts +126 -0
  404. package/src/testing/index.ts +3 -3
  405. package/src/testing/test-data.ts +130 -0
  406. package/src/testing/test-schema.ts +240 -0
  407. package/src/testing/util.ts +85 -0
  408. package/dist/lib/browser/chunk-MWLA34S5.mjs +0 -3843
  409. package/dist/lib/browser/chunk-MWLA34S5.mjs.map +0 -7
  410. package/dist/lib/browser/chunk-OAZJQHVO.mjs +0 -453
  411. package/dist/lib/browser/chunk-OAZJQHVO.mjs.map +0 -7
  412. package/dist/lib/browser/chunk-ORIE2FMS.mjs +0 -514
  413. package/dist/lib/browser/chunk-ORIE2FMS.mjs.map +0 -7
  414. package/dist/lib/browser/index.mjs +0 -43
  415. package/dist/lib/browser/internal/index.mjs +0 -326
  416. package/dist/lib/browser/meta.json +0 -1
  417. package/dist/lib/browser/query/index.mjs +0 -23
  418. package/dist/lib/browser/testing/index.mjs +0 -298
  419. package/dist/lib/browser/testing/index.mjs.map +0 -7
  420. package/dist/lib/node-esm/chunk-AXWVDOP7.mjs +0 -453
  421. package/dist/lib/node-esm/chunk-AXWVDOP7.mjs.map +0 -7
  422. package/dist/lib/node-esm/chunk-L4PBAJDP.mjs +0 -514
  423. package/dist/lib/node-esm/chunk-L4PBAJDP.mjs.map +0 -7
  424. package/dist/lib/node-esm/chunk-YTNLFBIK.mjs +0 -3843
  425. package/dist/lib/node-esm/chunk-YTNLFBIK.mjs.map +0 -7
  426. package/dist/lib/node-esm/index.mjs +0 -43
  427. package/dist/lib/node-esm/meta.json +0 -1
  428. package/dist/lib/node-esm/query/index.mjs +0 -23
  429. package/dist/lib/node-esm/testing/index.mjs +0 -298
  430. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  431. package/dist/types/src/errors.d.ts +0 -72
  432. package/dist/types/src/errors.d.ts.map +0 -1
  433. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  434. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  435. package/dist/types/src/internal/ast/annotations.d.ts +0 -119
  436. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  437. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  438. package/dist/types/src/internal/ast/entity-kind.d.ts +0 -10
  439. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  440. package/dist/types/src/internal/ast/index.d.ts +0 -5
  441. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  442. package/dist/types/src/internal/ast/types.d.ts +0 -6
  443. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  444. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  445. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  446. package/dist/types/src/internal/json/index.d.ts +0 -2
  447. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  448. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  449. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  450. package/dist/types/src/internal/object/accessors.d.ts +0 -29
  451. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  452. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  453. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  454. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  455. package/dist/types/src/internal/object/entity.d.ts +0 -22
  456. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  457. package/dist/types/src/internal/object/expando.d.ts +0 -14
  458. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  459. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  460. package/dist/types/src/internal/object/model.d.ts +0 -117
  461. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  462. package/dist/types/src/internal/object/relation.d.ts +0 -17
  463. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  464. package/dist/types/src/internal/object/typed-relation.d.ts +0 -32
  465. package/dist/types/src/internal/object/typed-relation.d.ts.map +0 -1
  466. package/dist/types/src/internal/object/typename.d.ts +0 -15
  467. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  468. package/dist/types/src/internal/object/version.d.ts +0 -14
  469. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  470. package/dist/types/src/internal/projection/compose.d.ts +0 -6
  471. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  472. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  473. package/dist/types/src/internal/projection/index.d.ts +0 -2
  474. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  475. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  476. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  477. package/dist/types/src/internal/query/index.d.ts +0 -2
  478. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  479. package/dist/types/src/internal/query/query.d.ts +0 -17
  480. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  481. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  482. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  483. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  484. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  485. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  486. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  487. package/dist/types/src/internal/testing/index.d.ts +0 -3
  488. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  489. package/dist/types/src/internal/testing/types.d.ts +0 -455
  490. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  491. package/dist/types/src/internal/testing/utils.d.ts +0 -10
  492. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  493. package/dist/types/src/internal/types/types.d.ts +0 -79
  494. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  495. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  496. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  497. package/dist/types/src/internal/types/util.d.ts +0 -5
  498. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  499. package/dist/types/src/query/index.d.ts +0 -3
  500. package/dist/types/src/query/index.d.ts.map +0 -1
  501. package/dist/types/src/query/query.d.ts +0 -247
  502. package/dist/types/src/query/query.d.ts.map +0 -1
  503. package/dist/types/src/query/query.test.d.ts +0 -2
  504. package/dist/types/src/query/query.test.d.ts.map +0 -1
  505. package/dist/types/src/query/tag.d.ts +0 -18
  506. package/dist/types/src/query/tag.d.ts.map +0 -1
  507. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  508. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  509. package/dist/types/src/testing/types.d.ts +0 -113
  510. package/dist/types/src/testing/types.d.ts.map +0 -1
  511. package/src/errors.ts +0 -18
  512. package/src/internal/ast/annotation-helper.ts +0 -22
  513. package/src/internal/ast/annotations.ts +0 -212
  514. package/src/internal/ast/entity-kind.ts +0 -15
  515. package/src/internal/ast/index.ts +0 -8
  516. package/src/internal/ast/types.ts +0 -17
  517. package/src/internal/json/index.ts +0 -5
  518. package/src/internal/object/accessors.ts +0 -115
  519. package/src/internal/object/entity.ts +0 -204
  520. package/src/internal/object/expando.ts +0 -21
  521. package/src/internal/object/meta.ts +0 -62
  522. package/src/internal/object/model.ts +0 -170
  523. package/src/internal/object/relation.ts +0 -24
  524. package/src/internal/object/typed-relation.ts +0 -85
  525. package/src/internal/object/typename.ts +0 -61
  526. package/src/internal/object/version.ts +0 -22
  527. package/src/internal/projection/index.ts +0 -5
  528. package/src/internal/proxy/reactive-object.ts +0 -108
  529. package/src/internal/query/index.ts +0 -5
  530. package/src/internal/query/query.ts +0 -23
  531. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  532. package/src/internal/schema/snapshot.ts +0 -25
  533. package/src/internal/schema/stored-schema.ts +0 -26
  534. package/src/internal/testing/index.ts +0 -6
  535. package/src/internal/testing/types.ts +0 -211
  536. package/src/internal/testing/utils.ts +0 -54
  537. package/src/internal/types/types.test.ts +0 -48
  538. package/src/internal/types/types.ts +0 -176
  539. package/src/internal/types/util.ts +0 -9
  540. package/src/query/index.ts +0 -6
  541. package/src/query/query.test.ts +0 -362
  542. package/src/query/query.ts +0 -784
  543. package/src/query/tag.ts +0 -35
  544. package/src/test/api.test.ts +0 -180
  545. package/src/testing/echo-schema.ts +0 -39
  546. package/src/testing/types.ts +0 -91
  547. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  548. /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
  549. /package/dist/lib/{browser/query/index.mjs.map → neutral/Entity.mjs.map} +0 -0
  550. /package/dist/lib/{node-esm/index.mjs.map → neutral/Err.mjs.map} +0 -0
  551. /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Feed.mjs.map} +0 -0
  552. /package/dist/lib/{node-esm/query/index.mjs.map → neutral/Filter.mjs.map} +0 -0
  553. /package/dist/types/src/internal/{ast → annotations}/annotations.test.d.ts +0 -0
  554. /package/dist/types/src/internal/{json → json-schema}/annotations.d.ts +0 -0
  555. /package/dist/types/src/internal/{json → json-schema}/effect-schema.test.d.ts +0 -0
  556. /package/dist/types/src/internal/{json → json-schema}/json-schema.test.d.ts +0 -0
  557. /package/dist/types/src/internal/{projection → schema}/compose.test.d.ts +0 -0
  558. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  559. /package/src/internal/{json → json-schema}/effect-schema.test.ts +0 -0
@@ -11,21 +11,22 @@ import { type JsonProp, findAnnotation } from '@dxos/effect';
11
11
  import { ObjectId } from '@dxos/keys';
12
12
  import { log } from '@dxos/log';
13
13
 
14
+ import { TestSchema, prepareAstForCompare } from '../../testing';
15
+ import * as Type from '../../Type';
14
16
  import {
15
- EntityKind,
16
17
  FieldLookupAnnotationId,
17
18
  GeneratorAnnotation,
18
19
  LabelAnnotation,
19
20
  PropertyMeta,
20
21
  getTypeAnnotation,
21
22
  getTypeIdentifierAnnotation,
22
- } from '../ast';
23
- import { Email, FormatAnnotation, FormatEnum } from '../formats';
23
+ } from '../annotations';
24
+ import { EchoObjectSchema } from '../entities';
25
+ import { Email, FormatAnnotation, TypeFormat } from '../formats';
24
26
  import { JsonSchemaType, getNormalizedEchoAnnotations, getSchemaProperty, setSchemaProperty } from '../json-schema';
25
- import { EchoObject, TypedObject } from '../object';
26
27
  import { Ref, createSchemaReference, getReferenceAst, getSchemaReference } from '../ref';
27
- import { StoredSchema } from '../schema';
28
- import { Testing, prepareAstForCompare } from '../testing';
28
+ import { PersistentSchema } from '../schema';
29
+ import { EntityKind } from '../types';
29
30
 
30
31
  import { toEffectSchema, toJsonSchema } from './json-schema';
31
32
 
@@ -33,10 +34,12 @@ const EXAMPLE_NAMESPACE = '@example';
33
34
 
34
35
  describe('effect-to-json', () => {
35
36
  test('type annotation', () => {
36
- class Test extends TypedObject({
37
- typename: 'example.com/type/Test',
38
- version: '0.1.0',
39
- })({ name: Schema.String }) {}
37
+ const Test = Schema.Struct({ name: Schema.String }).pipe(
38
+ Type.object({
39
+ typename: 'example.com/type/Test',
40
+ version: '0.1.0',
41
+ }),
42
+ );
40
43
  const jsonSchema = toJsonSchema(Test);
41
44
  expect((jsonSchema as any).$id).toEqual('dxn:type:example.com/type/Test');
42
45
  expect((jsonSchema as any).version).toEqual('0.1.0');
@@ -44,23 +47,35 @@ describe('effect-to-json', () => {
44
47
 
45
48
  test('property meta annotation', () => {
46
49
  const meta = { maxLength: 0 };
47
- class Test extends TypedObject({
48
- typename: 'example.com/type/Test',
49
- version: '0.1.0',
50
- })({
50
+ const Test = Schema.Struct({
51
51
  name: Schema.String.pipe(PropertyMeta(EXAMPLE_NAMESPACE, meta)),
52
- }) {}
52
+ }).pipe(
53
+ Type.object({
54
+ typename: 'example.com/type/Test',
55
+ version: '0.1.0',
56
+ }),
57
+ );
53
58
  const jsonSchema = toJsonSchema(Test);
54
59
  expect(getNormalizedEchoAnnotations(jsonSchema.properties!.name!)!.meta![EXAMPLE_NAMESPACE]).to.deep.eq(meta);
55
60
  });
56
61
 
57
62
  test('reference annotation', () => {
58
- class Nested extends TypedObject({ typename: 'example.com/type/TestNested', version: '0.1.0' })({
63
+ const Nested = Schema.Struct({
59
64
  name: Schema.String,
60
- }) {}
61
- class Test extends TypedObject({ typename: 'example.com/type/Test', version: '0.1.0' })({
65
+ }).pipe(
66
+ Type.object({
67
+ typename: 'example.com/type/TestNested',
68
+ version: '0.1.0',
69
+ }),
70
+ );
71
+ const Test = Schema.Struct({
62
72
  name: Ref(Nested),
63
- }) {}
73
+ }).pipe(
74
+ Type.object({
75
+ typename: 'example.com/type/Test',
76
+ version: '0.1.0',
77
+ }),
78
+ );
64
79
  const jsonSchema = toJsonSchema(Test);
65
80
  // log.info('schema', { jsonSchema });
66
81
  const nested = jsonSchema.properties!.name;
@@ -70,12 +85,22 @@ describe('effect-to-json', () => {
70
85
  // TODO(ZaymonFC): @dmaretskyi we still need to fix this.
71
86
  // TODO(dmaretskyi): Remove FieldLookupAnnotationId.
72
87
  test.skip('reference annotation with lookup property', () => {
73
- class Nested extends TypedObject({ typename: 'example.com/type/TestNested', version: '0.1.0' })({
88
+ const Nested = Schema.Struct({
74
89
  name: Schema.String,
75
- }) {}
76
- class Test extends TypedObject({ typename: 'example.com/type/Test', version: '0.1.0' })({
90
+ }).pipe(
91
+ Type.object({
92
+ typename: 'example.com/type/TestNested',
93
+ version: '0.1.0',
94
+ }),
95
+ );
96
+ const Test = Schema.Struct({
77
97
  name: Ref(Nested).annotations({ [FieldLookupAnnotationId]: 'name' }),
78
- }) {}
98
+ }).pipe(
99
+ Type.object({
100
+ typename: 'example.com/type/Test',
101
+ version: '0.1.0',
102
+ }),
103
+ );
79
104
  const jsonSchema = toJsonSchema(Test);
80
105
  const effectSchema = toEffectSchema(jsonSchema);
81
106
 
@@ -84,24 +109,44 @@ describe('effect-to-json', () => {
84
109
  });
85
110
 
86
111
  test('array of references', () => {
87
- class Nested extends TypedObject({ typename: 'example.com/type/TestNested', version: '0.1.0' })({
112
+ const Nested = Schema.Struct({
88
113
  name: Schema.String,
89
- }) {}
90
- class Test extends TypedObject({ typename: 'example.com/type/Test', version: '0.1.0' })({
114
+ }).pipe(
115
+ Type.object({
116
+ typename: 'example.com/type/TestNested',
117
+ version: '0.1.0',
118
+ }),
119
+ );
120
+ const Test = Schema.Struct({
91
121
  name: Schema.Array(Ref(Nested)),
92
- }) {}
122
+ }).pipe(
123
+ Type.object({
124
+ typename: 'example.com/type/Test',
125
+ version: '0.1.0',
126
+ }),
127
+ );
93
128
 
94
129
  const jsonSchema = toJsonSchema(Test);
95
130
  expectReferenceAnnotation((jsonSchema.properties!.name as any).items);
96
131
  });
97
132
 
98
133
  test('optional references', () => {
99
- class Nested extends TypedObject({ typename: 'example.com/type/TestNested', version: '0.1.0' })({
134
+ const Nested = Schema.Struct({
100
135
  name: Schema.String,
101
- }) {}
102
- class Test extends TypedObject({ typename: 'example.com/type/Test', version: '0.1.0' })({
136
+ }).pipe(
137
+ Type.object({
138
+ typename: 'example.com/type/TestNested',
139
+ version: '0.1.0',
140
+ }),
141
+ );
142
+ const Test = Schema.Struct({
103
143
  name: Schema.optional(Ref(Nested)),
104
- }) {}
144
+ }).pipe(
145
+ Type.object({
146
+ typename: 'example.com/type/Test',
147
+ version: '0.1.0',
148
+ }),
149
+ );
105
150
  const jsonSchema = toJsonSchema(Test);
106
151
  expectReferenceAnnotation(jsonSchema.properties!.name);
107
152
  });
@@ -114,19 +159,25 @@ describe('effect-to-json', () => {
114
159
  });
115
160
 
116
161
  test('annotations', () => {
117
- class TestSchema extends TypedObject({ typename: 'example.com/type/Contact', version: '0.1.0' })({
162
+ const TempSchema = Schema.Struct({
118
163
  name: Schema.String.annotations({ description: 'Person name', title: 'Name' }),
119
- email: Schema.String.pipe(FormatAnnotation.set(FormatEnum.Email)).annotations({
164
+ email: Schema.String.pipe(FormatAnnotation.set(TypeFormat.Email)).annotations({
120
165
  description: 'Email address',
121
166
  }),
122
- }) {}
123
- const jsonSchema = toJsonSchema(TestSchema);
167
+ }).pipe(
168
+ Type.object({
169
+ typename: 'example.com/type/Person',
170
+ version: '0.1.0',
171
+ }),
172
+ );
173
+
174
+ const jsonSchema = toJsonSchema(TempSchema);
124
175
  expect(jsonSchema).to.deep.eq({
125
176
  $schema: 'http://json-schema.org/draft-07/schema#',
126
- $id: 'dxn:type:example.com/type/Contact',
177
+ $id: 'dxn:type:example.com/type/Person',
127
178
 
128
179
  entityKind: EntityKind.Object,
129
- typename: 'example.com/type/Contact',
180
+ typename: 'example.com/type/Person',
130
181
  version: '0.1.0',
131
182
 
132
183
  type: 'object',
@@ -147,37 +198,49 @@ describe('effect-to-json', () => {
147
198
  });
148
199
 
149
200
  test('handles suspend -- Contact schema serialization', () => {
150
- const schema = toJsonSchema(Testing.Contact);
201
+ const schema = toJsonSchema(TestSchema.Person);
151
202
  expect(Object.keys(schema.properties!)).toEqual([
152
203
  'id',
153
204
  'name',
154
205
  'username',
155
206
  'email',
156
- 'phoneNumbers',
207
+ 'age',
157
208
  'tasks',
209
+ 'employer',
158
210
  'address',
211
+ 'fields',
159
212
  ]);
160
213
  });
161
214
 
162
215
  test('reference property by ref', () => {
163
- class Organization extends TypedObject({ typename: 'example.com/type/Organization', version: '0.1.0' })({
216
+ const Organization = Schema.Struct({
164
217
  field: Schema.String,
165
- }) {}
218
+ }).pipe(
219
+ Type.object({
220
+ typename: 'example.com/type/Organization',
221
+ version: '0.1.0',
222
+ }),
223
+ );
166
224
 
167
- class Contact extends TypedObject({ typename: 'example.com/type/Contact', version: '0.1.0' })({
225
+ const Contact = Schema.Struct({
168
226
  name: Schema.String,
169
227
  organization: Ref(Organization).annotations({ description: 'Contact organization' }),
170
- }) {}
228
+ }).pipe(
229
+ Type.object({
230
+ typename: 'example.com/type/Person',
231
+ version: '0.1.0',
232
+ }),
233
+ );
171
234
 
172
235
  // log.info('Contact', { ast: Contact.ast });
173
236
 
174
237
  const jsonSchema = toJsonSchema(Contact);
175
238
  expect(jsonSchema).toEqual({
176
239
  $schema: 'http://json-schema.org/draft-07/schema#',
177
- $id: 'dxn:type:example.com/type/Contact',
240
+ $id: 'dxn:type:example.com/type/Person',
178
241
 
179
242
  entityKind: EntityKind.Object,
180
- typename: 'example.com/type/Contact',
243
+ typename: 'example.com/type/Person',
181
244
  version: '0.1.0',
182
245
 
183
246
  type: 'object',
@@ -212,14 +275,24 @@ describe('effect-to-json', () => {
212
275
  });
213
276
 
214
277
  test('add reference property', () => {
215
- class Organization extends TypedObject({ typename: 'example.com/type/Organization', version: '0.1.0' })({
278
+ const Organization = Schema.Struct({
216
279
  field: Schema.String,
217
- }) {}
280
+ }).pipe(
281
+ Type.object({
282
+ typename: 'example.com/type/Organization',
283
+ version: '0.1.0',
284
+ }),
285
+ );
218
286
 
219
- class Contact extends TypedObject({ typename: 'example.com/type/Contact', version: '0.1.0' })({
287
+ const Contact = Schema.Struct({
220
288
  name: Schema.String,
221
289
  organization: Ref(Organization).annotations({ description: 'Contact organization' }),
222
- }) {}
290
+ }).pipe(
291
+ Type.object({
292
+ typename: 'example.com/type/Person',
293
+ version: '0.1.0',
294
+ }),
295
+ );
223
296
 
224
297
  const jsonSchema = toJsonSchema(Contact);
225
298
  setSchemaProperty(jsonSchema, 'organization' as JsonProp, createSchemaReference(Organization.typename));
@@ -227,8 +300,8 @@ describe('effect-to-json', () => {
227
300
  expect(typename).to.eq(Organization.typename);
228
301
  });
229
302
 
230
- test('serialize circular schema (StoredSchema)', () => {
231
- const jsonSchema = toJsonSchema(StoredSchema);
303
+ test('serialize circular schema (PersistentSchema)', () => {
304
+ const jsonSchema = toJsonSchema(PersistentSchema);
232
305
  expect(Object.keys(jsonSchema.properties!).length).toBeGreaterThan(0);
233
306
 
234
307
  // TODO(dmaretskyi): Currently unable to deserialize.
@@ -251,7 +324,7 @@ describe('effect-to-json', () => {
251
324
 
252
325
  test('reference with title annotation', () => {
253
326
  const schema = Schema.Struct({
254
- contact: Ref(Testing.Contact).annotations({ title: 'Custom Title' }),
327
+ contact: Ref(TestSchema.Person).annotations({ title: 'Custom Title' }),
255
328
  });
256
329
 
257
330
  // log.info('schema before', { ast: schema.ast });
@@ -274,33 +347,36 @@ describe('effect-to-json', () => {
274
347
  });
275
348
 
276
349
  test('relation schema', () => {
277
- const schema = Testing.HasManager;
350
+ const schema = TestSchema.EmployedBy;
278
351
  const jsonSchema = toJsonSchema(schema);
279
352
  expect(jsonSchema).toEqual({
280
- $id: 'dxn:type:example.com/type/HasManager',
353
+ $id: 'dxn:type:example.com/type/EmployedBy',
281
354
  $schema: 'http://json-schema.org/draft-07/schema#',
282
355
  entityKind: 'relation',
283
- typename: 'example.com/type/HasManager',
356
+ typename: 'example.com/type/EmployedBy',
284
357
  version: '0.1.0',
285
358
  relationSource: {
286
359
  // TODO(dmaretskyi): Should those point to specific schema version?
287
- $ref: 'dxn:type:example.com/type/Contact',
360
+ $ref: 'dxn:type:example.com/type/Person',
288
361
  },
289
362
  relationTarget: {
290
363
  // TODO(dmaretskyi): Should those point to specific schema version?
291
- $ref: 'dxn:type:example.com/type/Contact',
364
+ $ref: 'dxn:type:example.com/type/Organization',
292
365
  },
293
366
  type: 'object',
294
367
  properties: {
295
368
  id: {
296
369
  type: 'string',
297
370
  },
371
+ role: {
372
+ type: 'string',
373
+ },
298
374
  since: {
299
375
  type: 'string',
300
376
  },
301
377
  },
302
- propertyOrder: ['since', 'id'],
303
- required: ['id'],
378
+ propertyOrder: ['role', 'since', 'id'],
379
+ required: ['role', 'id'],
304
380
  additionalProperties: false,
305
381
  });
306
382
  });
@@ -310,7 +386,7 @@ describe('effect-to-json', () => {
310
386
  id: ObjectId,
311
387
  name: Schema.String,
312
388
  }).pipe(
313
- EchoObject({
389
+ EchoObjectSchema({
314
390
  typename: 'example.com/type/Organization',
315
391
  version: '0.1.0',
316
392
  }),
@@ -417,26 +493,35 @@ describe('json-to-effect', () => {
417
493
 
418
494
  for (const partial of [false, true]) {
419
495
  test(`deserialized equals original ${partial ? 'with partial' : ''}`, () => {
420
- class Organization extends TypedObject({ typename: 'example.com/type/Organization', version: '0.1.0' })({
496
+ const Organization = Schema.Struct({
421
497
  field: Schema.String,
422
- }) {}
423
-
424
- class Test extends TypedObject({ typename: 'example.com/type/Test', version: '0.1.0' })(
425
- {
426
- string: Schema.String,
427
- number: Schema.Number.pipe(PropertyMeta(EXAMPLE_NAMESPACE, { is_date: true })),
428
- boolean: Schema.Boolean,
429
- array: Schema.Array(Schema.String),
430
- twoDArray: Schema.Array(Schema.Array(Schema.String)),
431
- record: Schema.Record({ key: Schema.String, value: Schema.Number }),
432
- object: Schema.Struct({ id: Schema.String, field: Ref(Organization) }),
433
- echoObject: Ref(Organization),
434
- echoObjectArray: Schema.Array(Ref(Organization)),
435
- email: Schema.String.pipe(FormatAnnotation.set(FormatEnum.Email)),
436
- null: Schema.Null,
437
- },
438
- partial ? { partial } : {},
439
- ) {}
498
+ }).pipe(
499
+ Type.object({
500
+ typename: 'example.com/type/Organization',
501
+ version: '0.1.0',
502
+ }),
503
+ );
504
+
505
+ const fields = {
506
+ string: Schema.String,
507
+ number: Schema.Number.pipe(PropertyMeta(EXAMPLE_NAMESPACE, { is_date: true })),
508
+ boolean: Schema.Boolean,
509
+ array: Schema.Array(Schema.String),
510
+ twoDArray: Schema.Array(Schema.Array(Schema.String)),
511
+ record: Schema.Record({ key: Schema.String, value: Schema.Number }),
512
+ object: Schema.Struct({ id: Schema.String, field: Ref(Organization) }),
513
+ echoObject: Ref(Organization),
514
+ echoObjectArray: Schema.Array(Ref(Organization)),
515
+ email: Schema.String.pipe(FormatAnnotation.set(TypeFormat.Email)),
516
+ null: Schema.Null,
517
+ } as const;
518
+
519
+ const Test = (partial ? Schema.partial(Schema.Struct(fields)) : Schema.Struct(fields)).pipe(
520
+ Type.object({
521
+ typename: 'example.com/type/Test',
522
+ version: '0.1.0',
523
+ }),
524
+ );
440
525
 
441
526
  const jsonSchema = toJsonSchema(Test);
442
527
  // log.info('schema', { jsonSchema });
@@ -499,8 +584,8 @@ describe('json-to-effect', () => {
499
584
  });
500
585
 
501
586
  test('symbol annotations get compared', () => {
502
- const schema1 = Schema.String.pipe(FormatAnnotation.set(FormatEnum.Email));
503
- const schema2 = Schema.String.pipe(FormatAnnotation.set(FormatEnum.Currency));
587
+ const schema1 = Schema.String.pipe(FormatAnnotation.set(TypeFormat.Email));
588
+ const schema2 = Schema.String.pipe(FormatAnnotation.set(TypeFormat.Currency));
504
589
  expect(prepareAstForCompare(schema1.ast)).not.to.deep.eq(prepareAstForCompare(schema2.ast));
505
590
  });
506
591
 
@@ -515,7 +600,7 @@ describe('json-to-effect', () => {
515
600
  });
516
601
 
517
602
  test('relation schema roundtrip', () => {
518
- const schema = Testing.HasManager;
603
+ const schema = TestSchema.HasManager;
519
604
  const jsonSchema = toJsonSchema(schema);
520
605
  const effectSchema = toEffectSchema(jsonSchema);
521
606
  expect(prepareAstForCompare(effectSchema.ast)).to.deep.eq(prepareAstForCompare(schema.ast));
@@ -618,10 +703,8 @@ describe('json-to-effect', () => {
618
703
  });
619
704
 
620
705
  test('schema with optional referece', () => {
621
- const TestSchema = Schema.Struct({
622
- contact: Schema.optional(Ref(Testing.Contact)),
623
- });
624
- const jsonSchema = toJsonSchema(TestSchema);
706
+ const TempSchema = Schema.Struct({ contact: Schema.optional(Ref(TestSchema.Person)) });
707
+ const jsonSchema = toJsonSchema(TempSchema);
625
708
  expect(jsonSchema).toMatchInlineSnapshot(`
626
709
  {
627
710
  "$schema": "http://json-schema.org/draft-07/schema#",
@@ -632,7 +715,7 @@ describe('json-to-effect', () => {
632
715
  "$ref": "/schemas/echo/ref",
633
716
  "reference": {
634
717
  "schema": {
635
- "$ref": "dxn:type:example.com/type/Contact",
718
+ "$ref": "dxn:type:example.com/type/Person",
636
719
  },
637
720
  "schemaVersion": "0.1.0",
638
721
  },
@@ -647,13 +730,65 @@ describe('json-to-effect', () => {
647
730
  `);
648
731
 
649
732
  const effectSchema = toEffectSchema(jsonSchema);
650
- expect(prepareAstForCompare(effectSchema.ast)).to.deep.eq(prepareAstForCompare(TestSchema.ast));
733
+ expect(prepareAstForCompare(effectSchema.ast)).to.deep.eq(prepareAstForCompare(TempSchema.ast));
734
+ });
735
+
736
+ test('object nested inside another struct', () => {
737
+ const Contact = Schema.Struct({
738
+ name: Schema.String,
739
+ }).pipe(EchoObjectSchema({ typename: 'example.com/type/Person', version: '0.1.0' }));
740
+ const input = Schema.Struct({
741
+ contact: Contact,
742
+ });
743
+ const jsonSchema = toJsonSchema(input);
744
+ expect(jsonSchema).toMatchInlineSnapshot(`
745
+ {
746
+ "$schema": "http://json-schema.org/draft-07/schema#",
747
+ "additionalProperties": false,
748
+ "properties": {
749
+ "contact": {
750
+ "$id": "dxn:type:example.com/type/Person",
751
+ "additionalProperties": false,
752
+ "entityKind": "object",
753
+ "properties": {
754
+ "id": {
755
+ "type": "string",
756
+ },
757
+ "name": {
758
+ "type": "string",
759
+ },
760
+ },
761
+ "propertyOrder": [
762
+ "name",
763
+ "id",
764
+ ],
765
+ "required": [
766
+ "name",
767
+ "id",
768
+ ],
769
+ "type": "object",
770
+ "typename": "example.com/type/Person",
771
+ "version": "0.1.0",
772
+ },
773
+ },
774
+ "propertyOrder": [
775
+ "contact",
776
+ ],
777
+ "required": [
778
+ "contact",
779
+ ],
780
+ "type": "object",
781
+ }
782
+ `);
783
+
784
+ const effectSchema = toEffectSchema(jsonSchema);
785
+ expect(prepareAstForCompare(effectSchema.ast)).to.deep.eq(prepareAstForCompare(input.ast));
651
786
  });
652
787
  });
653
788
 
654
789
  describe('reference', () => {
655
790
  test('reference annotation', () => {
656
- const schema = Ref(Testing.Contact);
791
+ const schema = Ref(TestSchema.Person);
657
792
  const jsonSchema = toJsonSchema(schema);
658
793
  expect(jsonSchema).toEqual({
659
794
  $id: '/schemas/echo/ref',
@@ -661,7 +796,7 @@ describe('reference', () => {
661
796
  $schema: 'http://json-schema.org/draft-07/schema#',
662
797
  reference: {
663
798
  schema: {
664
- $ref: 'dxn:type:example.com/type/Contact',
799
+ $ref: 'dxn:type:example.com/type/Person',
665
800
  },
666
801
  schemaVersion: '0.1.0',
667
802
  },
@@ -669,7 +804,7 @@ describe('reference', () => {
669
804
  });
670
805
 
671
806
  test('title annotation', () => {
672
- const schema = Ref(Testing.Contact).annotations({ title: 'My custom title' });
807
+ const schema = Ref(TestSchema.Person).annotations({ title: 'My custom title' });
673
808
  const jsonSchema = toJsonSchema(schema);
674
809
  expect(jsonSchema).toEqual({
675
810
  $schema: 'http://json-schema.org/draft-07/schema#',
@@ -679,7 +814,7 @@ describe('reference', () => {
679
814
  $ref: '/schemas/echo/ref',
680
815
  reference: {
681
816
  schema: {
682
- $ref: 'dxn:type:example.com/type/Contact',
817
+ $ref: 'dxn:type:example.com/type/Person',
683
818
  },
684
819
  schemaVersion: '0.1.0',
685
820
  },
@@ -690,7 +825,7 @@ describe('reference', () => {
690
825
  });
691
826
 
692
827
  test('description annotation', () => {
693
- const schema = Ref(Testing.Contact).annotations({ description: 'My custom description' });
828
+ const schema = Ref(TestSchema.Person).annotations({ description: 'My custom description' });
694
829
  const jsonSchema = toJsonSchema(schema);
695
830
  expect(jsonSchema).toEqual({
696
831
  $schema: 'http://json-schema.org/draft-07/schema#',
@@ -700,7 +835,7 @@ describe('reference', () => {
700
835
  $ref: '/schemas/echo/ref',
701
836
  reference: {
702
837
  schema: {
703
- $ref: 'dxn:type:example.com/type/Contact',
838
+ $ref: 'dxn:type:example.com/type/Person',
704
839
  },
705
840
  schemaVersion: '0.1.0',
706
841
  },
@@ -714,13 +849,13 @@ describe('reference', () => {
714
849
  });
715
850
 
716
851
  test('serialize and deserialize', () => {
717
- const schema = Ref(Testing.Contact);
852
+ const schema = Ref(TestSchema.Person);
718
853
  const jsonSchema = toJsonSchema(schema);
719
854
  const deserializedSchema = toEffectSchema(jsonSchema);
720
855
  const refAst = getReferenceAst(deserializedSchema.ast);
721
856
  expect(refAst).toEqual({
722
- typename: Testing.Contact.typename,
723
- version: Testing.Contact.version,
857
+ typename: TestSchema.Person.typename,
858
+ version: TestSchema.Person.version,
724
859
  });
725
860
  });
726
861
  });