@dxos/echo 0.8.4-main.5ea62a8 → 0.8.4-main.66e292d

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 (328) hide show
  1. package/dist/lib/browser/chunk-7GH6RXJ3.mjs +3683 -0
  2. package/dist/lib/browser/chunk-7GH6RXJ3.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-E4UTVJNF.mjs +1111 -0
  4. package/dist/lib/browser/chunk-E4UTVJNF.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +24 -1
  6. package/dist/lib/browser/internal/index.mjs +336 -0
  7. package/dist/lib/browser/internal/index.mjs.map +7 -0
  8. package/dist/lib/browser/meta.json +1 -1
  9. package/dist/lib/browser/testing/index.mjs +289 -31
  10. package/dist/lib/browser/testing/index.mjs.map +4 -4
  11. package/dist/lib/node-esm/chunk-JE5RXM2I.mjs +1111 -0
  12. package/dist/lib/node-esm/chunk-JE5RXM2I.mjs.map +7 -0
  13. package/dist/lib/node-esm/chunk-M4B6BMD2.mjs +3683 -0
  14. package/dist/lib/node-esm/chunk-M4B6BMD2.mjs.map +7 -0
  15. package/dist/lib/node-esm/index.mjs +24 -1
  16. package/dist/lib/node-esm/internal/index.mjs +336 -0
  17. package/dist/lib/node-esm/internal/index.mjs.map +7 -0
  18. package/dist/lib/node-esm/meta.json +1 -1
  19. package/dist/lib/node-esm/testing/index.mjs +289 -31
  20. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  21. package/dist/types/src/Annotation.d.ts +2 -0
  22. package/dist/types/src/Annotation.d.ts.map +1 -0
  23. package/dist/types/src/Database.d.ts +137 -0
  24. package/dist/types/src/Database.d.ts.map +1 -0
  25. package/dist/types/src/Entity.d.ts +36 -0
  26. package/dist/types/src/Entity.d.ts.map +1 -0
  27. package/dist/types/src/Format.d.ts +4 -0
  28. package/dist/types/src/Format.d.ts.map +1 -0
  29. package/dist/types/src/JsonSchema.d.ts +9 -0
  30. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  31. package/dist/types/src/Key.d.ts +1 -0
  32. package/dist/types/src/Key.d.ts.map +1 -1
  33. package/dist/types/src/Obj.d.ts +121 -50
  34. package/dist/types/src/Obj.d.ts.map +1 -1
  35. package/dist/types/src/Ref.d.ts +10 -10
  36. package/dist/types/src/Ref.d.ts.map +1 -1
  37. package/dist/types/src/Relation.d.ts +18 -14
  38. package/dist/types/src/Relation.d.ts.map +1 -1
  39. package/dist/types/src/Tag.d.ts +17 -0
  40. package/dist/types/src/Tag.d.ts.map +1 -0
  41. package/dist/types/src/Type.d.ts +39 -50
  42. package/dist/types/src/Type.d.ts.map +1 -1
  43. package/dist/types/src/errors.d.ts +68 -0
  44. package/dist/types/src/errors.d.ts.map +1 -0
  45. package/dist/types/src/index.d.ts +9 -3
  46. package/dist/types/src/index.d.ts.map +1 -1
  47. package/dist/types/src/internal/annotations/annotations.d.ts +174 -0
  48. package/dist/types/src/internal/annotations/annotations.d.ts.map +1 -0
  49. package/dist/types/src/internal/annotations/annotations.test.d.ts +2 -0
  50. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +1 -0
  51. package/dist/types/src/internal/annotations/index.d.ts +3 -0
  52. package/dist/types/src/internal/annotations/index.d.ts.map +1 -0
  53. package/dist/types/src/internal/annotations/util.d.ts +26 -0
  54. package/dist/types/src/internal/annotations/util.d.ts.map +1 -0
  55. package/dist/types/src/internal/entities/entity.d.ts +10 -0
  56. package/dist/types/src/internal/entities/entity.d.ts.map +1 -0
  57. package/dist/types/src/internal/entities/expando.d.ts +16 -0
  58. package/dist/types/src/internal/entities/expando.d.ts.map +1 -0
  59. package/dist/types/src/internal/entities/index.d.ts +6 -0
  60. package/dist/types/src/internal/entities/index.d.ts.map +1 -0
  61. package/dist/types/src/internal/entities/model.d.ts +70 -0
  62. package/dist/types/src/internal/entities/model.d.ts.map +1 -0
  63. package/dist/types/src/internal/entities/object.d.ts +11 -0
  64. package/dist/types/src/internal/entities/object.d.ts.map +1 -0
  65. package/dist/types/src/internal/entities/relation.d.ts +55 -0
  66. package/dist/types/src/internal/entities/relation.d.ts.map +1 -0
  67. package/dist/types/src/internal/entities/util.d.ts +2 -0
  68. package/dist/types/src/internal/entities/util.d.ts.map +1 -0
  69. package/dist/types/src/internal/formats/date.d.ts +63 -0
  70. package/dist/types/src/internal/formats/date.d.ts.map +1 -0
  71. package/dist/types/src/internal/formats/date.test.d.ts +2 -0
  72. package/dist/types/src/internal/formats/date.test.d.ts.map +1 -0
  73. package/dist/types/src/internal/formats/format.d.ts +32 -0
  74. package/dist/types/src/internal/formats/format.d.ts.map +1 -0
  75. package/dist/types/src/internal/formats/format.test.d.ts +2 -0
  76. package/dist/types/src/internal/formats/format.test.d.ts.map +1 -0
  77. package/dist/types/src/internal/formats/index.d.ts +8 -0
  78. package/dist/types/src/internal/formats/index.d.ts.map +1 -0
  79. package/dist/types/src/internal/formats/number.d.ts +31 -0
  80. package/dist/types/src/internal/formats/number.d.ts.map +1 -0
  81. package/dist/types/src/internal/formats/object.d.ts +35 -0
  82. package/dist/types/src/internal/formats/object.d.ts.map +1 -0
  83. package/dist/types/src/internal/formats/select.d.ts +11 -0
  84. package/dist/types/src/internal/formats/select.d.ts.map +1 -0
  85. package/dist/types/src/internal/formats/string.d.ts +38 -0
  86. package/dist/types/src/internal/formats/string.d.ts.map +1 -0
  87. package/dist/types/src/internal/formats/types.d.ts +68 -0
  88. package/dist/types/src/internal/formats/types.d.ts.map +1 -0
  89. package/dist/types/src/internal/index.d.ts +11 -0
  90. package/dist/types/src/internal/index.d.ts.map +1 -0
  91. package/dist/types/src/internal/json-schema/annotations.d.ts +19 -0
  92. package/dist/types/src/internal/json-schema/annotations.d.ts.map +1 -0
  93. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts +2 -0
  94. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +1 -0
  95. package/dist/types/src/internal/json-schema/index.d.ts +5 -0
  96. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -0
  97. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts +7 -0
  98. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -0
  99. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +250 -0
  100. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -0
  101. package/dist/types/src/internal/json-schema/json-schema.d.ts +29 -0
  102. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +1 -0
  103. package/dist/types/src/internal/json-schema/json-schema.test.d.ts +2 -0
  104. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +1 -0
  105. package/dist/types/src/internal/object/common.d.ts +18 -0
  106. package/dist/types/src/internal/object/common.d.ts.map +1 -0
  107. package/dist/types/src/internal/object/create-object.d.ts +39 -0
  108. package/dist/types/src/internal/object/create-object.d.ts.map +1 -0
  109. package/dist/types/src/internal/object/create-object.test.d.ts +2 -0
  110. package/dist/types/src/internal/object/create-object.test.d.ts.map +1 -0
  111. package/dist/types/src/internal/object/deleted.d.ts +6 -0
  112. package/dist/types/src/internal/object/deleted.d.ts.map +1 -0
  113. package/dist/types/src/internal/object/ids.d.ts +6 -0
  114. package/dist/types/src/internal/object/ids.d.ts.map +1 -0
  115. package/dist/types/src/internal/object/index.d.ts +8 -0
  116. package/dist/types/src/internal/object/index.d.ts.map +1 -0
  117. package/dist/types/src/internal/object/inspect.d.ts +2 -0
  118. package/dist/types/src/internal/object/inspect.d.ts.map +1 -0
  119. package/dist/types/src/internal/object/json-serializer.d.ts +31 -0
  120. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -0
  121. package/dist/types/src/internal/object/json-serializer.test.d.ts +2 -0
  122. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +1 -0
  123. package/dist/types/src/internal/object/schema-validator.d.ts +15 -0
  124. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -0
  125. package/dist/types/src/internal/object/schema-validator.test.d.ts +2 -0
  126. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +1 -0
  127. package/dist/types/src/internal/object/typed-object.d.ts +31 -0
  128. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -0
  129. package/dist/types/src/internal/object/typed-object.test.d.ts +2 -0
  130. package/dist/types/src/internal/object/typed-object.test.d.ts.map +1 -0
  131. package/dist/types/src/internal/proxy/handler.test.d.ts +2 -0
  132. package/dist/types/src/internal/proxy/handler.test.d.ts.map +1 -0
  133. package/dist/types/src/internal/proxy/index.d.ts +3 -0
  134. package/dist/types/src/internal/proxy/index.d.ts.map +1 -0
  135. package/dist/types/src/internal/proxy/make-object.d.ts +16 -0
  136. package/dist/types/src/internal/proxy/make-object.d.ts.map +1 -0
  137. package/dist/types/src/internal/proxy/schema.test.d.ts +2 -0
  138. package/dist/types/src/internal/proxy/schema.test.d.ts.map +1 -0
  139. package/dist/types/src/internal/proxy/typed-handler.d.ts +44 -0
  140. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -0
  141. package/dist/types/src/internal/proxy/typed-handler.test.d.ts +2 -0
  142. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +1 -0
  143. package/dist/types/src/internal/proxy/typed-object.test.d.ts +2 -0
  144. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +1 -0
  145. package/dist/types/src/internal/ref/index.d.ts +3 -0
  146. package/dist/types/src/internal/ref/index.d.ts.map +1 -0
  147. package/dist/types/src/internal/ref/ref-array.d.ts +21 -0
  148. package/dist/types/src/internal/ref/ref-array.d.ts.map +1 -0
  149. package/dist/types/src/internal/ref/ref.d.ts +209 -0
  150. package/dist/types/src/internal/ref/ref.d.ts.map +1 -0
  151. package/dist/types/src/internal/ref/ref.test.d.ts +2 -0
  152. package/dist/types/src/internal/ref/ref.test.d.ts.map +1 -0
  153. package/dist/types/src/internal/schema/compose.d.ts +6 -0
  154. package/dist/types/src/internal/schema/compose.d.ts.map +1 -0
  155. package/dist/types/src/internal/schema/compose.test.d.ts +2 -0
  156. package/dist/types/src/internal/schema/compose.test.d.ts.map +1 -0
  157. package/dist/types/src/internal/schema/echo-schema.d.ts +168 -0
  158. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -0
  159. package/dist/types/src/internal/schema/index.d.ts +6 -0
  160. package/dist/types/src/internal/schema/index.d.ts.map +1 -0
  161. package/dist/types/src/internal/schema/manipulation.d.ts +10 -0
  162. package/dist/types/src/internal/schema/manipulation.d.ts.map +1 -0
  163. package/dist/types/src/internal/schema/persistent-schema.d.ts +18 -0
  164. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +1 -0
  165. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +18 -0
  166. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +1 -0
  167. package/dist/types/src/internal/schema/snapshot.d.ts +6 -0
  168. package/dist/types/src/internal/schema/snapshot.d.ts.map +1 -0
  169. package/dist/types/src/internal/types/base.d.ts +37 -0
  170. package/dist/types/src/internal/types/base.d.ts.map +1 -0
  171. package/dist/types/src/internal/types/entity.d.ts +12 -0
  172. package/dist/types/src/internal/types/entity.d.ts.map +1 -0
  173. package/dist/types/src/internal/types/index.d.ts +6 -0
  174. package/dist/types/src/internal/types/index.d.ts.map +1 -0
  175. package/dist/types/src/internal/types/meta.d.ts +40 -0
  176. package/dist/types/src/internal/types/meta.d.ts.map +1 -0
  177. package/dist/types/src/internal/types/typename.d.ts +13 -0
  178. package/dist/types/src/internal/types/typename.d.ts.map +1 -0
  179. package/dist/types/src/internal/types/version.d.ts +15 -0
  180. package/dist/types/src/internal/types/version.d.ts.map +1 -0
  181. package/dist/types/src/query/filter.d.ts +167 -0
  182. package/dist/types/src/query/filter.d.ts.map +1 -0
  183. package/dist/types/src/query/index.d.ts +4 -1
  184. package/dist/types/src/query/index.d.ts.map +1 -1
  185. package/dist/types/src/query/order.d.ts +12 -0
  186. package/dist/types/src/query/order.d.ts.map +1 -0
  187. package/dist/types/src/query/query.d.ts +112 -0
  188. package/dist/types/src/query/query.d.ts.map +1 -0
  189. package/dist/types/src/query/query.test.d.ts +2 -0
  190. package/dist/types/src/query/query.test.d.ts.map +1 -0
  191. package/dist/types/src/query/testing.d.ts +51 -0
  192. package/dist/types/src/query/testing.d.ts.map +1 -0
  193. package/dist/types/src/query/types.d.ts +17 -0
  194. package/dist/types/src/query/types.d.ts.map +1 -0
  195. package/dist/types/src/query/util.d.ts +8 -0
  196. package/dist/types/src/query/util.d.ts.map +1 -0
  197. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  198. package/dist/types/src/testing/index.d.ts +3 -1
  199. package/dist/types/src/testing/index.d.ts.map +1 -1
  200. package/dist/types/src/testing/test-data.d.ts +18 -0
  201. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  202. package/dist/types/src/testing/test-schema.d.ts +337 -0
  203. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  204. package/dist/types/src/testing/util.d.ts +16 -0
  205. package/dist/types/src/testing/util.d.ts.map +1 -0
  206. package/dist/types/tsconfig.tsbuildinfo +1 -1
  207. package/package.json +49 -29
  208. package/src/Annotation.ts +17 -0
  209. package/src/Database.ts +189 -0
  210. package/src/Entity.ts +51 -0
  211. package/src/Format.ts +11 -0
  212. package/src/JsonSchema.ts +16 -0
  213. package/src/Key.ts +3 -0
  214. package/src/Obj.ts +353 -107
  215. package/src/Ref.ts +9 -10
  216. package/src/Relation.ts +68 -43
  217. package/src/Tag.ts +40 -0
  218. package/src/Type.ts +97 -85
  219. package/src/errors.ts +18 -0
  220. package/src/index.ts +13 -4
  221. package/src/internal/README.md +83 -0
  222. package/src/internal/annotations/annotations.test.ts +96 -0
  223. package/src/internal/annotations/annotations.ts +463 -0
  224. package/src/internal/annotations/index.ts +6 -0
  225. package/src/internal/annotations/util.ts +70 -0
  226. package/src/internal/entities/entity.ts +109 -0
  227. package/src/internal/entities/expando.ts +23 -0
  228. package/src/internal/entities/index.ts +9 -0
  229. package/src/internal/entities/model.ts +129 -0
  230. package/src/internal/entities/object.ts +45 -0
  231. package/src/internal/entities/relation.ts +155 -0
  232. package/src/internal/entities/util.ts +33 -0
  233. package/src/internal/formats/date.test.ts +56 -0
  234. package/src/internal/formats/date.ts +217 -0
  235. package/src/internal/formats/format.test.ts +77 -0
  236. package/src/internal/formats/format.ts +55 -0
  237. package/src/internal/formats/index.ts +12 -0
  238. package/src/internal/formats/number.ts +89 -0
  239. package/src/internal/formats/object.ts +80 -0
  240. package/src/internal/formats/select.ts +16 -0
  241. package/src/internal/formats/string.ts +76 -0
  242. package/src/internal/formats/types.ts +180 -0
  243. package/src/internal/index.ts +38 -0
  244. package/src/internal/json-schema/annotations.ts +50 -0
  245. package/src/internal/json-schema/effect-schema.test.ts +143 -0
  246. package/src/internal/json-schema/index.ts +8 -0
  247. package/src/internal/json-schema/json-schema-normalize.ts +109 -0
  248. package/src/internal/json-schema/json-schema-type.ts +404 -0
  249. package/src/internal/json-schema/json-schema.test.ts +859 -0
  250. package/src/internal/json-schema/json-schema.ts +528 -0
  251. package/src/internal/object/common.ts +75 -0
  252. package/src/internal/object/create-object.test.ts +116 -0
  253. package/src/internal/object/create-object.ts +95 -0
  254. package/src/internal/object/deleted.ts +19 -0
  255. package/src/internal/object/ids.ts +12 -0
  256. package/src/internal/object/index.ts +11 -0
  257. package/src/internal/object/inspect.ts +46 -0
  258. package/src/internal/object/json-serializer.test.ts +94 -0
  259. package/src/internal/object/json-serializer.ts +230 -0
  260. package/src/internal/object/schema-validator.test.ts +186 -0
  261. package/src/internal/object/schema-validator.ts +242 -0
  262. package/src/internal/object/typed-object.test.ts +34 -0
  263. package/src/internal/object/typed-object.ts +94 -0
  264. package/src/internal/proxy/handler.test.ts +173 -0
  265. package/src/internal/proxy/index.ts +6 -0
  266. package/src/internal/proxy/make-object.ts +113 -0
  267. package/src/internal/proxy/schema.test.ts +137 -0
  268. package/src/internal/proxy/typed-handler.test.ts +102 -0
  269. package/src/internal/proxy/typed-handler.ts +233 -0
  270. package/src/internal/proxy/typed-object.test.ts +105 -0
  271. package/src/internal/ref/index.ts +6 -0
  272. package/src/internal/ref/ref-array.ts +39 -0
  273. package/src/internal/ref/ref.test.ts +101 -0
  274. package/src/internal/ref/ref.ts +525 -0
  275. package/src/internal/schema/compose.test.ts +42 -0
  276. package/src/internal/schema/compose.ts +37 -0
  277. package/src/internal/schema/echo-schema.ts +385 -0
  278. package/src/internal/schema/index.ts +9 -0
  279. package/src/internal/schema/manipulation.ts +92 -0
  280. package/src/internal/schema/persistent-schema.ts +28 -0
  281. package/src/internal/schema/runtime-schema-registry.ts +78 -0
  282. package/src/internal/schema/snapshot.ts +25 -0
  283. package/src/internal/types/base.ts +58 -0
  284. package/src/internal/types/entity.ts +23 -0
  285. package/src/internal/types/index.ts +9 -0
  286. package/src/internal/types/meta.ts +76 -0
  287. package/src/internal/types/typename.ts +45 -0
  288. package/src/internal/types/version.ts +20 -0
  289. package/src/query/filter.ts +455 -0
  290. package/src/query/index.ts +5 -1
  291. package/src/query/order.ts +34 -0
  292. package/src/query/query.test.ts +334 -0
  293. package/src/query/query.ts +303 -0
  294. package/src/query/testing.ts +64 -0
  295. package/src/query/types.ts +23 -0
  296. package/src/query/util.ts +25 -0
  297. package/src/testing/api.test.ts +100 -0
  298. package/src/testing/index.ts +3 -1
  299. package/src/testing/test-data.ts +130 -0
  300. package/src/testing/test-schema.ts +213 -0
  301. package/src/testing/util.ts +78 -0
  302. package/dist/lib/browser/chunk-2KNTYMIW.mjs +0 -697
  303. package/dist/lib/browser/chunk-2KNTYMIW.mjs.map +0 -7
  304. package/dist/lib/node-esm/chunk-EXNNC62J.mjs +0 -697
  305. package/dist/lib/node-esm/chunk-EXNNC62J.mjs.map +0 -7
  306. package/dist/types/src/experimental/database.d.ts +0 -8
  307. package/dist/types/src/experimental/database.d.ts.map +0 -1
  308. package/dist/types/src/experimental/index.d.ts +0 -1
  309. package/dist/types/src/experimental/index.d.ts.map +0 -1
  310. package/dist/types/src/experimental/queue.d.ts +0 -8
  311. package/dist/types/src/experimental/queue.d.ts.map +0 -1
  312. package/dist/types/src/experimental/space.d.ts +0 -8
  313. package/dist/types/src/experimental/space.d.ts.map +0 -1
  314. package/dist/types/src/query/dsl.d.ts +0 -218
  315. package/dist/types/src/query/dsl.d.ts.map +0 -1
  316. package/dist/types/src/query/dsl.test.d.ts +0 -2
  317. package/dist/types/src/query/dsl.test.d.ts.map +0 -1
  318. package/dist/types/src/testing/types.d.ts +0 -113
  319. package/dist/types/src/testing/types.d.ts.map +0 -1
  320. package/src/experimental/database.ts +0 -11
  321. package/src/experimental/index.ts +0 -7
  322. package/src/experimental/queue.ts +0 -11
  323. package/src/experimental/space.ts +0 -11
  324. package/src/query/dsl.test.ts +0 -324
  325. package/src/query/dsl.ts +0 -646
  326. package/src/test/api.test.ts +0 -173
  327. package/src/testing/types.ts +0 -91
  328. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
@@ -1,16 +1,79 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
+ Any,
4
+ Obj,
5
+ Ref,
6
+ Relation,
3
7
  Type_exports
4
- } from "../chunk-EXNNC62J.mjs";
8
+ } from "../chunk-JE5RXM2I.mjs";
9
+ import {
10
+ EchoSchema,
11
+ PersistentSchema,
12
+ getSchemaTypename,
13
+ makeObject,
14
+ toJsonSchema
15
+ } from "../chunk-M4B6BMD2.mjs";
16
+
17
+ // src/testing/test-data.ts
18
+ import { DatabaseDirectory, ObjectStructure } from "@dxos/echo-protocol";
19
+ import { DXN, ObjectId, PublicKey } from "@dxos/keys";
5
20
 
6
- // src/testing/types.ts
7
- import { Schema } from "effect";
8
- (function(Testing2) {
9
- const _Contact = Schema.Struct({
21
+ // src/testing/test-schema.ts
22
+ import * as Schema from "effect/Schema";
23
+ (function(TestSchema2) {
24
+ const Nested = Schema.Struct({
25
+ field: Schema.String
26
+ }).pipe(Schema.mutable);
27
+ class TestClass {
28
+ field = "value";
29
+ toJSON() {
30
+ return {
31
+ field: this.field
32
+ };
33
+ }
34
+ }
35
+ TestSchema2.TestClass = TestClass;
36
+ TestSchema2.ExampleSchema = Schema.Struct({
37
+ string: Schema.String,
38
+ number: Schema.Number,
39
+ boolean: Schema.Boolean,
40
+ null: Schema.Null,
41
+ undefined: Schema.Undefined,
42
+ stringArray: Schema.mutable(Schema.Array(Schema.String)),
43
+ twoDimNumberArray: Schema.mutable(Schema.Array(Schema.mutable(Schema.Array(Schema.Number)))),
44
+ nested: Schema.mutable(Nested),
45
+ nestedArray: Schema.mutable(Schema.Array(Nested)),
46
+ nestedNullableArray: Schema.mutable(Schema.Array(Schema.Union(Nested, Schema.Null))),
47
+ reference: Schema.suspend(() => Ref(TestSchema2.Example)),
48
+ referenceArray: Schema.mutable(Schema.Array(Schema.suspend(() => Ref(TestSchema2.Example)))),
49
+ classInstance: Schema.instanceOf(TestClass),
50
+ other: Schema.Any
51
+ }).pipe(Schema.partial, Schema.mutable);
52
+ TestSchema2.Example = TestSchema2.ExampleSchema.pipe(Obj({
53
+ typename: "example.com/type/Example",
54
+ version: "0.1.0"
55
+ }));
56
+ TestSchema2.MessageStruct = Schema.Struct({
57
+ // TODO(burdon): Support S.Date; Custom Timestamp (with defaults).
58
+ // TODO(burdon): Support defaults (update create and create).
59
+ timestamp: Schema.String.pipe(Schema.propertySignature, Schema.withConstructorDefault(() => (/* @__PURE__ */ new Date()).toISOString()))
60
+ });
61
+ TestSchema2.Message = TestSchema2.MessageStruct.pipe(Obj({
62
+ typename: "example.com/type/Message",
63
+ version: "0.1.0"
64
+ }));
65
+ TestSchema2.Organization = Schema.Struct({
66
+ name: Schema.String
67
+ }).pipe(Obj({
68
+ typename: "example.com/type/Organization",
69
+ version: "0.1.0"
70
+ }));
71
+ TestSchema2.Person = Schema.Struct({
10
72
  name: Schema.String,
11
73
  username: Schema.String,
12
74
  email: Schema.String,
13
- tasks: Schema.mutable(Schema.Array(Schema.suspend(() => Type_exports.Ref(Testing2.Task)))),
75
+ tasks: Schema.mutable(Schema.Array(Schema.suspend(() => Ref(TestSchema2.Task)))),
76
+ employer: Schema.optional(Ref(TestSchema2.Organization)),
14
77
  address: Schema.Struct({
15
78
  city: Schema.optional(Schema.String),
16
79
  state: Schema.optional(Schema.String),
@@ -20,51 +83,246 @@ import { Schema } from "effect";
20
83
  lng: Schema.optional(Schema.Number)
21
84
  })
22
85
  })
23
- }).pipe(Schema.partial, Type_exports.Obj({
24
- typename: "example.com/type/Contact",
86
+ }).pipe(Schema.partial, Obj({
87
+ typename: "example.com/type/Person",
25
88
  version: "0.1.0"
26
89
  }));
27
- Testing2.Contact = _Contact;
28
- const _Task = Schema.Struct({
90
+ TestSchema2.Task = Schema.Struct({
29
91
  title: Schema.optional(Schema.String),
92
+ deadline: Schema.optional(Schema.String),
30
93
  completed: Schema.optional(Schema.Boolean),
31
- assignee: Schema.optional(Type_exports.Ref(Testing2.Contact)),
32
- previous: Schema.optional(Schema.suspend(() => Type_exports.Ref(Testing2.Task))),
33
- subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend(() => Type_exports.Ref(Testing2.Task))))),
94
+ assignee: Schema.optional(Ref(TestSchema2.Person)),
95
+ previous: Schema.optional(Schema.suspend(() => Ref(TestSchema2.Task))),
96
+ subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend(() => Ref(TestSchema2.Task))))),
34
97
  description: Schema.optional(Schema.String)
35
- }).pipe(Schema.partial, Type_exports.Obj({
98
+ }).pipe(Schema.partial, Obj({
36
99
  typename: "example.com/type/Task",
37
100
  version: "0.1.0"
38
101
  }));
39
- Testing2.Task = _Task;
102
+ TestSchema2.HasManager = Schema.Struct({}).pipe(Relation({
103
+ typename: "example.com/type/HasManager",
104
+ version: "0.1.0",
105
+ source: TestSchema2.Person,
106
+ target: TestSchema2.Person
107
+ }));
108
+ TestSchema2.EmployedBy = Schema.Struct({
109
+ role: Schema.String,
110
+ since: Schema.optional(Schema.String)
111
+ }).pipe(Relation({
112
+ typename: "example.com/type/EmployedBy",
113
+ version: "0.1.0",
114
+ source: TestSchema2.Person,
115
+ target: TestSchema2.Organization
116
+ }));
40
117
  (function(RecordType) {
41
118
  RecordType[RecordType["UNDEFINED"] = 0] = "UNDEFINED";
42
119
  RecordType[RecordType["PERSONAL"] = 1] = "PERSONAL";
43
120
  RecordType[RecordType["WORK"] = 2] = "WORK";
44
- })(Testing2.RecordType || (Testing2.RecordType = {}));
45
- Testing2.Container = Schema.Struct({
46
- objects: Schema.mutable(Schema.Array(Type_exports.Ref(Type_exports.Expando))),
121
+ })(TestSchema2.RecordType || (TestSchema2.RecordType = {}));
122
+ TestSchema2.Container = Schema.Struct({
123
+ objects: Schema.mutable(Schema.Array(Ref(Any))),
47
124
  records: Schema.mutable(Schema.Array(Schema.partial(Schema.Struct({
48
125
  title: Schema.String,
49
126
  description: Schema.String,
50
- contacts: Schema.mutable(Schema.Array(Type_exports.Ref(Testing2.Contact))),
51
- type: Schema.Enums(Testing2.RecordType)
127
+ contacts: Schema.mutable(Schema.Array(Ref(TestSchema2.Person))),
128
+ type: Schema.Enums(TestSchema2.RecordType)
52
129
  }))))
53
- }).pipe(Schema.partial, Type_exports.Obj({
130
+ }).pipe(Schema.partial, Obj({
54
131
  typename: "example.com/type/Container",
55
132
  version: "0.1.0"
56
133
  }));
57
- Testing2.WorksFor = Schema.Struct({
58
- since: Schema.optional(Schema.String)
59
- }).pipe(Type_exports.Relation({
60
- typename: "example.com/type/WorksFor",
61
- version: "0.1.0",
62
- source: Testing2.Contact,
63
- target: Testing2.Contact
134
+ })(TestSchema || (TestSchema = {}));
135
+ var TestSchema;
136
+
137
+ // src/testing/test-data.ts
138
+ var spaceKey = PublicKey.random();
139
+ var PEOPLE = {
140
+ alice: DatabaseDirectory.make({
141
+ spaceKey: spaceKey.toHex(),
142
+ objects: {
143
+ [ObjectId.random()]: ObjectStructure.makeObject({
144
+ type: Type_exports.getDXN(TestSchema.Person).toString(),
145
+ data: {
146
+ name: "Alice"
147
+ }
148
+ })
149
+ }
150
+ }),
151
+ bob: DatabaseDirectory.make({
152
+ spaceKey: spaceKey.toHex(),
153
+ objects: {
154
+ [ObjectId.random()]: ObjectStructure.makeObject({
155
+ type: Type_exports.getDXN(TestSchema.Person).toString(),
156
+ data: {
157
+ name: "Bob"
158
+ }
159
+ })
160
+ }
161
+ })
162
+ };
163
+ var ORGS = {
164
+ dxos: DatabaseDirectory.make({
165
+ spaceKey: spaceKey.toHex(),
166
+ objects: {
167
+ [ObjectId.random()]: ObjectStructure.makeObject({
168
+ type: Type_exports.getDXN(TestSchema.Organization).toString(),
169
+ data: {
170
+ name: "DXOS",
171
+ founded: "2023"
172
+ }
173
+ })
174
+ }
175
+ }),
176
+ cyberdyne: DatabaseDirectory.make({
177
+ spaceKey: spaceKey.toHex(),
178
+ objects: {
179
+ [ObjectId.random()]: ObjectStructure.makeObject({
180
+ type: Type_exports.getDXN(TestSchema.Organization).toString(),
181
+ data: {
182
+ name: "Cyberdyne Systems",
183
+ founded: "1984"
184
+ }
185
+ })
186
+ }
187
+ })
188
+ };
189
+ var WORKS_FOR = {
190
+ fredWorksForCyberdyne: DatabaseDirectory.make({
191
+ spaceKey: spaceKey.toHex(),
192
+ objects: {
193
+ [ObjectId.random()]: ObjectStructure.makeRelation({
194
+ type: Type_exports.getDXN(TestSchema.EmployedBy).toString(),
195
+ source: {
196
+ "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects)[0]).toString()
197
+ },
198
+ target: {
199
+ "/": DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects)[0]).toString()
200
+ },
201
+ data: {
202
+ since: "2020",
203
+ position: "Engineer"
204
+ }
205
+ })
206
+ }
207
+ }),
208
+ aliceWorksForAperture: DatabaseDirectory.make({
209
+ spaceKey: spaceKey.toHex(),
210
+ objects: {
211
+ [ObjectId.random()]: ObjectStructure.makeRelation({
212
+ type: Type_exports.getDXN(TestSchema.EmployedBy).toString(),
213
+ source: {
214
+ "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
215
+ },
216
+ target: {
217
+ "/": DXN.fromLocalObjectId(Object.keys(ORGS.dxos.objects)[0]).toString()
218
+ },
219
+ data: {
220
+ since: "2018",
221
+ position: "Research Scientist"
222
+ }
223
+ })
224
+ }
225
+ })
226
+ };
227
+ var TASKS = {
228
+ task1: DatabaseDirectory.make({
229
+ spaceKey: spaceKey.toHex(),
230
+ objects: {
231
+ [ObjectId.random()]: ObjectStructure.makeObject({
232
+ type: Type_exports.getDXN(TestSchema.Task).toString(),
233
+ data: {
234
+ title: "Complete project documentation",
235
+ description: "Write comprehensive documentation for the new system",
236
+ status: "in-progress",
237
+ dueDate: "2023-12-31",
238
+ assignee: {
239
+ "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects)[0]).toString()
240
+ }
241
+ }
242
+ })
243
+ }
244
+ }),
245
+ task2: DatabaseDirectory.make({
246
+ spaceKey: spaceKey.toHex(),
247
+ objects: {
248
+ [ObjectId.random()]: ObjectStructure.makeObject({
249
+ type: Type_exports.getDXN(TestSchema.Task).toString(),
250
+ data: {
251
+ title: "Run experiments",
252
+ description: "Conduct series of experiments on the portal device",
253
+ status: "pending",
254
+ dueDate: "2023-11-15",
255
+ assignee: {
256
+ "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
257
+ }
258
+ }
259
+ })
260
+ }
261
+ })
262
+ };
263
+
264
+ // src/testing/util.ts
265
+ import { effect } from "@preact/signals-core";
266
+ import { registerSignalsRuntime } from "@dxos/echo-signals";
267
+ import { assertArgument } from "@dxos/invariant";
268
+ import { deepMapValues } from "@dxos/util";
269
+ registerSignalsRuntime();
270
+ var createEchoSchema = (schema, version = "0.1.0") => {
271
+ const jsonSchema = toJsonSchema(schema);
272
+ const typename = getSchemaTypename(schema);
273
+ assertArgument(typename, "typename", "Schema does not have a typename.");
274
+ const echoSchema = new EchoSchema(makeObject(PersistentSchema, {
275
+ typename,
276
+ version,
277
+ jsonSchema
64
278
  }));
65
- })(Testing || (Testing = {}));
66
- var Testing;
279
+ effect(() => {
280
+ const _ = echoSchema.jsonSchema;
281
+ echoSchema._invalidate();
282
+ });
283
+ return echoSchema;
284
+ };
285
+ var prepareAstForCompare = (obj) => deepMapValues(obj, (value, recurse) => {
286
+ if (typeof value === "function") {
287
+ return null;
288
+ }
289
+ if (value instanceof RegExp) {
290
+ return value;
291
+ }
292
+ if (typeof value === "object") {
293
+ const clone = {
294
+ ...value
295
+ };
296
+ for (const sym of Object.getOwnPropertySymbols(clone)) {
297
+ clone[sym.toString()] = clone[sym];
298
+ delete clone[sym];
299
+ }
300
+ return recurse(clone);
301
+ }
302
+ return recurse(value);
303
+ });
304
+ var updateCounter = (touch) => {
305
+ let updateCount = -1;
306
+ const unsubscribe = effect(() => {
307
+ touch();
308
+ updateCount++;
309
+ });
310
+ return {
311
+ // https://github.com/tc39/proposal-explicit-resource-management
312
+ [Symbol.dispose]: unsubscribe,
313
+ get count() {
314
+ return updateCount;
315
+ }
316
+ };
317
+ };
67
318
  export {
68
- Testing
319
+ ORGS,
320
+ PEOPLE,
321
+ TASKS,
322
+ TestSchema,
323
+ WORKS_FOR,
324
+ createEchoSchema,
325
+ prepareAstForCompare,
326
+ updateCounter
69
327
  };
70
328
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/testing/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '..';\n\n// TODO(burdon): These are non-canonical test types, so we really shouldn't export and use in other classes (compare with @dxos/sdk/testing).\nexport namespace Testing {\n const _Contact = Schema.Struct({\n name: Schema.String,\n username: Schema.String,\n email: Schema.String,\n tasks: Schema.mutable(Schema.Array(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task)))),\n address: Schema.Struct({\n city: Schema.optional(Schema.String),\n state: Schema.optional(Schema.String),\n zip: Schema.optional(Schema.String),\n coordinates: Schema.Struct({\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }),\n }),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Contact',\n version: '0.1.0',\n }),\n );\n export interface Contact extends Schema.Schema.Type<typeof _Contact> {}\n export const Contact: Schema.Schema<Contact, Schema.Schema.Encoded<typeof _Contact>, never> = _Contact;\n\n const _Task = Schema.Struct({\n title: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Type.Ref(Contact)),\n previous: Schema.optional(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task))),\n subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task))))),\n description: Schema.optional(Schema.String),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Task',\n version: '0.1.0',\n }),\n );\n export interface Task extends Schema.Schema.Type<typeof _Task> {}\n export const Task: Schema.Schema<Task, Schema.Schema.Encoded<typeof _Task>, never> = _Task;\n\n export enum RecordType {\n UNDEFINED = 0,\n PERSONAL = 1,\n WORK = 2,\n }\n\n export const Container = Schema.Struct({\n objects: Schema.mutable(Schema.Array(Type.Ref(Type.Expando))),\n records: Schema.mutable(\n Schema.Array(\n Schema.partial(\n Schema.Struct({\n title: Schema.String,\n description: Schema.String,\n contacts: Schema.mutable(Schema.Array(Type.Ref(Contact))),\n type: Schema.Enums(RecordType),\n }),\n ),\n ),\n ),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Container',\n version: '0.1.0',\n }),\n );\n\n export const WorksFor = Schema.Struct({\n since: Schema.optional(Schema.String),\n }).pipe(\n Type.Relation({\n typename: 'example.com/type/WorksFor',\n version: '0.1.0',\n source: Contact,\n target: Contact,\n }),\n );\n export interface WorksFor extends Schema.Schema.Type<typeof WorksFor> {}\n}\n"],
5
- "mappings": ";;;;;;AAIA,SAASA,cAAc;UAKNC,UAAAA;AACf,QAAMC,WAAWC,OAAOC,OAAO;IAC7BC,MAAMF,OAAOG;IACbC,UAAUJ,OAAOG;IACjBE,OAAOL,OAAOG;IACdG,OAAON,OAAOO,QAAQP,OAAOQ,MAAMR,OAAOS,QAAQ,MAAsBC,aAAKC,IAAGb,SAACc,IAAAA,CAAAA,CAAAA,CAAAA;IACjFC,SAASb,OAAOC,OAAO;MACrBa,MAAMd,OAAOe,SAASf,OAAOG,MAAM;MACnCa,OAAOhB,OAAOe,SAASf,OAAOG,MAAM;MACpCc,KAAKjB,OAAOe,SAASf,OAAOG,MAAM;MAClCe,aAAalB,OAAOC,OAAO;QACzBkB,KAAKnB,OAAOe,SAASf,OAAOoB,MAAM;QAClCC,KAAKrB,OAAOe,SAASf,OAAOoB,MAAM;MACpC,CAAA;IACF,CAAA;EACF,CAAA,EAAGE,KACDtB,OAAOuB,SACPb,aAAKc,IAAI;IACPC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;WAGWC,UAAiF5B;AAE9F,QAAM6B,QAAQ5B,OAAOC,OAAO;IAC1B4B,OAAO7B,OAAOe,SAASf,OAAOG,MAAM;IACpC2B,WAAW9B,OAAOe,SAASf,OAAO+B,OAAO;IACzCC,UAAUhC,OAAOe,SAASL,aAAKC,IAAGb,SAAC6B,OAAAA,CAAAA;IACnCM,UAAUjC,OAAOe,SAASf,OAAOS,QAAQ,MAAsBC,aAAKC,IAAGb,SAACc,IAAAA,CAAAA,CAAAA;IACxEsB,UAAUlC,OAAOe,SAASf,OAAOO,QAAQP,OAAOQ,MAAMR,OAAOS,QAAQ,MAAsBC,aAAKC,IAAGb,SAACc,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;IACpGuB,aAAanC,OAAOe,SAASf,OAAOG,MAAM;EAC5C,CAAA,EAAGmB,KACDtB,OAAOuB,SACPb,aAAKc,IAAI;IACPC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;WAGWd,OAAwEgB;YAEzEQ,YAAAA;;;;cAAAA,eAAAA,SAAAA,aAAAA,CAAAA,EAAAA;WAMCC,YAAYrC,OAAOC,OAAO;IACrCqC,SAAStC,OAAOO,QAAQP,OAAOQ,MAAME,aAAKC,IAAID,aAAK6B,OAAO,CAAA,CAAA;IAC1DC,SAASxC,OAAOO,QACdP,OAAOQ,MACLR,OAAOuB,QACLvB,OAAOC,OAAO;MACZ4B,OAAO7B,OAAOG;MACdgC,aAAanC,OAAOG;MACpBsC,UAAUzC,OAAOO,QAAQP,OAAOQ,MAAME,aAAKC,IAAGb,SAAC6B,OAAAA,CAAAA,CAAAA;MAC/Ce,MAAM1C,OAAO2C,MAAK7C,SAACsC,UAAAA;IACrB,CAAA,CAAA,CAAA,CAAA;EAIR,CAAA,EAAGd,KACDtB,OAAOuB,SACPb,aAAKc,IAAI;IACPC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;WAGWkB,WAAW5C,OAAOC,OAAO;IACpC4C,OAAO7C,OAAOe,SAASf,OAAOG,MAAM;EACtC,CAAA,EAAGmB,KACDZ,aAAKoC,SAAS;IACZrB,UAAU;IACVC,SAAS;IACTqB,QAAMjD,SAAE6B;IACRqB,QAAMlD,SAAE6B;EACV,CAAA,CAAA;AAGJ,GAjFiB7B,YAAAA,UAAAA,CAAAA,EAAAA;;",
6
- "names": ["Schema", "Testing", "_Contact", "Schema", "Struct", "name", "String", "username", "email", "tasks", "mutable", "Array", "suspend", "Type", "Ref", "Task", "address", "city", "optional", "state", "zip", "coordinates", "lat", "Number", "lng", "pipe", "partial", "Obj", "typename", "version", "Contact", "_Task", "title", "completed", "Boolean", "assignee", "previous", "subTasks", "description", "RecordType", "Container", "objects", "Expando", "records", "contacts", "type", "Enums", "WorksFor", "since", "Relation", "source", "target"]
3
+ "sources": ["../../../../src/testing/test-data.ts", "../../../../src/testing/test-schema.ts", "../../../../src/testing/util.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { DatabaseDirectory, ObjectStructure } from '@dxos/echo-protocol';\nimport { DXN, ObjectId, PublicKey } from '@dxos/keys';\n\nimport { Type } from '../index';\n\nimport { TestSchema } from './test-schema';\n\nconst spaceKey = PublicKey.random();\n\n// TODO(burdon): Use Obj.make.\n\nexport const PEOPLE = {\n alice: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Alice',\n },\n }),\n },\n }),\n bob: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Bob',\n },\n }),\n },\n }),\n};\n\nexport const ORGS = {\n dxos: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'DXOS',\n founded: '2023',\n },\n }),\n },\n }),\n cyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'Cyberdyne Systems',\n founded: '1984',\n },\n }),\n },\n }),\n};\n\nexport const WORKS_FOR = {\n fredWorksForCyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: Type.getDXN(TestSchema.EmployedBy)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects!)[0]).toString() },\n data: {\n since: '2020',\n position: 'Engineer',\n },\n }),\n },\n }),\n aliceWorksForAperture: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: Type.getDXN(TestSchema.EmployedBy)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.dxos.objects!)[0]).toString() },\n data: {\n since: '2018',\n position: 'Research Scientist',\n },\n }),\n },\n }),\n};\n\nexport const TASKS = {\n task1: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Complete project documentation',\n description: 'Write comprehensive documentation for the new system',\n status: 'in-progress',\n dueDate: '2023-12-31',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects!)[0]).toString() },\n },\n }),\n },\n }),\n task2: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Run experiments',\n description: 'Conduct series of experiments on the portal device',\n status: 'pending',\n dueDate: '2023-11-15',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n },\n }),\n },\n }),\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport * as Obj from '../Obj';\nimport * as Type from '../Type';\n\nexport namespace TestSchema {\n //\n // Example\n //\n\n const Nested = Schema.Struct({\n field: Schema.String,\n }).pipe(Schema.mutable);\n\n export class TestClass {\n field = 'value';\n toJSON() {\n return { field: this.field };\n }\n }\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const ExampleSchema = Schema.Struct({\n string: Schema.String,\n number: Schema.Number,\n boolean: Schema.Boolean,\n null: Schema.Null,\n undefined: Schema.Undefined,\n stringArray: Schema.mutable(Schema.Array(Schema.String)),\n twoDimNumberArray: Schema.mutable(Schema.Array(Schema.mutable(Schema.Array(Schema.Number)))),\n nested: Schema.mutable(Nested),\n nestedArray: Schema.mutable(Schema.Array(Nested)),\n nestedNullableArray: Schema.mutable(Schema.Array(Schema.Union(Nested, Schema.Null))),\n reference: Schema.suspend((): Type.Ref<Example> => Type.Ref(Example)),\n referenceArray: Schema.mutable(Schema.Array(Schema.suspend((): Type.Ref<Example> => Type.Ref(Example)))),\n classInstance: Schema.instanceOf(TestClass),\n other: Schema.Any,\n }).pipe(Schema.partial, Schema.mutable);\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface ExampleSchema extends Schema.Schema.Type<typeof ExampleSchema> {}\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const Example = ExampleSchema.pipe(\n Type.Obj({\n typename: 'example.com/type/Example',\n version: '0.1.0',\n }),\n );\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface Example extends Schema.Schema.Type<typeof Example> {}\n\n //\n // Message\n //\n\n // TODO(burdon): Support defaults directly on Type: `make` is erased by `pipe(Type.Obj)`.\n export const MessageStruct = Schema.Struct({\n // TODO(burdon): Support S.Date; Custom Timestamp (with defaults).\n // TODO(burdon): Support defaults (update create and create).\n timestamp: Schema.String.pipe(\n Schema.propertySignature,\n Schema.withConstructorDefault(() => new Date().toISOString()),\n ),\n });\n\n export const Message = MessageStruct.pipe(\n Type.Obj({\n typename: 'example.com/type/Message',\n version: '0.1.0',\n }),\n );\n\n export interface Message extends Schema.Schema.Type<typeof Message> {}\n\n //\n // Organization\n //\n\n export const Organization = Schema.Struct({\n name: Schema.String,\n }).pipe(\n Type.Obj({\n typename: 'example.com/type/Organization',\n version: '0.1.0',\n }),\n );\n\n export interface Organization extends Schema.Schema.Type<typeof Organization> {}\n\n //\n // Person\n //\n\n export const Person = Schema.Struct({\n name: Schema.String,\n username: Schema.String,\n email: Schema.String,\n tasks: Schema.mutable(Schema.Array(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task)))),\n employer: Schema.optional(Type.Ref(Organization)),\n address: Schema.Struct({\n city: Schema.optional(Schema.String),\n state: Schema.optional(Schema.String),\n zip: Schema.optional(Schema.String),\n coordinates: Schema.Struct({\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }),\n }),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Person',\n version: '0.1.0',\n }),\n );\n\n export interface Person extends Schema.Schema.Type<typeof Person> {}\n\n //\n // Task\n //\n\n export const Task = Schema.Struct({\n title: Schema.optional(Schema.String),\n deadline: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Type.Ref(Person)),\n previous: Schema.optional(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task))),\n subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task))))),\n description: Schema.optional(Schema.String),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Task',\n version: '0.1.0',\n }),\n );\n\n export interface Task extends Schema.Schema.Type<typeof Task> {}\n\n //\n // HasManager\n //\n\n export const HasManager = Schema.Struct({}).pipe(\n Type.Relation({\n typename: 'example.com/type/HasManager',\n version: '0.1.0',\n source: Person,\n target: Person,\n }),\n );\n\n export interface HasManager extends Schema.Schema.Type<typeof HasManager> {}\n\n //\n // EmployedBy\n //\n\n export const EmployedBy = Schema.Struct({\n role: Schema.String,\n since: Schema.optional(Schema.String),\n }).pipe(\n Type.Relation({\n typename: 'example.com/type/EmployedBy',\n version: '0.1.0',\n source: Person,\n target: Organization,\n }),\n );\n\n export interface EmployedBy extends Schema.Schema.Type<typeof EmployedBy> {}\n\n //\n // RecordType\n //\n\n export enum RecordType {\n UNDEFINED = 0,\n PERSONAL = 1,\n WORK = 2,\n }\n\n export const Container = Schema.Struct({\n objects: Schema.mutable(Schema.Array(Type.Ref(Obj.Any))),\n records: Schema.mutable(\n Schema.Array(\n Schema.partial(\n Schema.Struct({\n title: Schema.String,\n description: Schema.String,\n contacts: Schema.mutable(Schema.Array(Type.Ref(Person))),\n type: Schema.Enums(RecordType),\n }),\n ),\n ),\n ),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Container',\n version: '0.1.0',\n }),\n );\n\n export interface Container extends Schema.Schema.Type<typeof Container> {}\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\nimport type * as Schema from 'effect/Schema';\nimport type * as SchemaAST from 'effect/SchemaAST';\n\nimport { registerSignalsRuntime } from '@dxos/echo-signals';\nimport { assertArgument } from '@dxos/invariant';\nimport { deepMapValues } from '@dxos/util';\n\nimport { EchoSchema, PersistentSchema, getSchemaTypename, makeObject, toJsonSchema } from '../internal';\n\nregisterSignalsRuntime();\n\n/**\n * Create a reactive mutable schema that updates when the JSON schema is updated.\n */\n// TODO(dmaretskyi): Should be replaced by registration of typed object.\nexport const createEchoSchema = (schema: Schema.Schema.AnyNoContext, version = '0.1.0'): EchoSchema => {\n const jsonSchema = toJsonSchema(schema);\n const typename = getSchemaTypename(schema);\n assertArgument(typename, 'typename', 'Schema does not have a typename.');\n const echoSchema = new EchoSchema(makeObject(PersistentSchema, { typename, version, jsonSchema }));\n\n // TODO(burdon): Unsubscribe is never called.\n effect(() => {\n const _ = echoSchema.jsonSchema;\n echoSchema._invalidate();\n });\n\n return echoSchema;\n};\n\n/**\n * Converts AST to a format that can be compared with test matchers.\n */\nexport const prepareAstForCompare = (obj: SchemaAST.AST): any =>\n deepMapValues(obj, (value: any, recurse: any) => {\n if (typeof value === 'function') {\n return null;\n }\n\n if (value instanceof RegExp) {\n return value;\n }\n\n // Convert symbols to strings.\n if (typeof value === 'object') {\n const clone = { ...value };\n for (const sym of Object.getOwnPropertySymbols(clone as any)) {\n clone[sym.toString()] = clone[sym];\n delete clone[sym];\n }\n\n return recurse(clone);\n }\n\n return recurse(value);\n });\n\n// TODO(burdon): Use @dxos/util.\nexport const updateCounter = (touch: () => void) => {\n let updateCount = -1;\n const unsubscribe = effect(() => {\n touch();\n updateCount++;\n });\n\n return {\n // https://github.com/tc39/proposal-explicit-resource-management\n [Symbol.dispose]: unsubscribe,\n get count() {\n return updateCount;\n },\n };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["DatabaseDirectory", "ObjectStructure", "DXN", "ObjectId", "PublicKey", "Schema", "TestSchema", "Nested", "Struct", "field", "String", "pipe", "mutable", "TestClass", "toJSON", "ExampleSchema", "string", "number", "Number", "boolean", "Boolean", "null", "Null", "undefined", "Undefined", "stringArray", "Array", "twoDimNumberArray", "nested", "nestedArray", "nestedNullableArray", "Union", "reference", "suspend", "Ref", "Example", "referenceArray", "classInstance", "instanceOf", "other", "Any", "partial", "Obj", "typename", "version", "MessageStruct", "timestamp", "propertySignature", "withConstructorDefault", "Date", "toISOString", "Message", "Organization", "name", "Person", "username", "email", "tasks", "Task", "employer", "optional", "address", "city", "state", "zip", "coordinates", "lat", "lng", "title", "deadline", "completed", "assignee", "previous", "subTasks", "description", "HasManager", "Relation", "source", "target", "EmployedBy", "role", "since", "RecordType", "Container", "objects", "records", "contacts", "type", "Enums", "spaceKey", "PublicKey", "random", "PEOPLE", "alice", "DatabaseDirectory", "make", "toHex", "objects", "ObjectId", "ObjectStructure", "makeObject", "type", "Type", "getDXN", "TestSchema", "Person", "toString", "data", "name", "bob", "ORGS", "dxos", "Organization", "founded", "cyberdyne", "WORKS_FOR", "fredWorksForCyberdyne", "makeRelation", "EmployedBy", "source", "DXN", "fromLocalObjectId", "Object", "keys", "target", "since", "position", "aliceWorksForAperture", "TASKS", "task1", "Task", "title", "description", "status", "dueDate", "assignee", "task2", "effect", "registerSignalsRuntime", "assertArgument", "deepMapValues", "registerSignalsRuntime", "createEchoSchema", "schema", "version", "jsonSchema", "toJsonSchema", "typename", "getSchemaTypename", "assertArgument", "echoSchema", "EchoSchema", "makeObject", "PersistentSchema", "effect", "_", "_invalidate", "prepareAstForCompare", "obj", "deepMapValues", "value", "recurse", "RegExp", "clone", "sym", "Object", "getOwnPropertySymbols", "toString", "updateCounter", "touch", "updateCount", "unsubscribe", "Symbol", "dispose", "count"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ export { DescriptionAnnotation, FormInputAnnotation, GeneratorAnnotation, LabelAnnotation, SystemTypeAnnotation, TypeAnnotation, getDescription, getLabel, getTypeAnnotation, setDescription, setLabel, } from './internal/annotations';
2
+ //# sourceMappingURL=Annotation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Annotation.d.ts","sourceRoot":"","sources":["../../../src/Annotation.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,QAAQ,GACT,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,137 @@
1
+ import { type CleanupFn } from '@dxos/async';
2
+ import { type QueryAST } from '@dxos/echo-protocol';
3
+ import { type DXN, type PublicKey, type SpaceId } from '@dxos/keys';
4
+ import { type QueryOptions as QueryOptionsProto } from '@dxos/protocols/proto/dxos/echo/filter';
5
+ import type * as Entity from './Entity';
6
+ import type { Filter, Query } from './query';
7
+ import type * as Ref from './Ref';
8
+ /**
9
+ * Individual query result entry.
10
+ */
11
+ export type QueryResultEntry<T extends Entity.Unknown = Entity.Unknown> = {
12
+ id: string;
13
+ spaceId: SpaceId;
14
+ /**
15
+ * May not be present for remote results.
16
+ */
17
+ object?: T;
18
+ match?: {
19
+ /**
20
+ * Higher means better match.
21
+ */
22
+ rank: number;
23
+ };
24
+ /**
25
+ * Query resolution metadata.
26
+ */
27
+ resolution?: {
28
+ source: 'remote' | 'local' | 'index';
29
+ /**
30
+ * Query resolution time in milliseconds.
31
+ */
32
+ time: number;
33
+ };
34
+ };
35
+ export type OneShotQueryResult<T extends Entity.Unknown = Entity.Unknown> = {
36
+ results: QueryResultEntry<T>[];
37
+ objects: T[];
38
+ };
39
+ export type QuerySubscriptionOptions = {
40
+ /**
41
+ * Fire the callback immediately.
42
+ */
43
+ fire?: boolean;
44
+ };
45
+ export interface QueryResult<T extends Entity.Unknown = Entity.Unknown> {
46
+ readonly query: Query<T>;
47
+ readonly results: QueryResultEntry<T>[];
48
+ readonly objects: T[];
49
+ run(opts?: QueryRunOptions): Promise<OneShotQueryResult<T>>;
50
+ runSync(): QueryResultEntry<T>[];
51
+ first(opts?: QueryRunOptions): Promise<T>;
52
+ subscribe(callback?: (query: QueryResult<T>) => void, opts?: QuerySubscriptionOptions): CleanupFn;
53
+ }
54
+ export type QueryRunOptions = {
55
+ timeout?: number;
56
+ };
57
+ /**
58
+ * @deprecated Use `QueryAST.QueryOptions` instead.
59
+ */
60
+ export type QueryOptions = {
61
+ /**
62
+ * @deprecated Use `spaceIds` instead.
63
+ */
64
+ spaces?: PublicKey[];
65
+ /**
66
+ * Query only in specific spaces.
67
+ */
68
+ spaceIds?: string[];
69
+ /**
70
+ * Return only the first `limit` results.
71
+ */
72
+ limit?: number;
73
+ /**
74
+ * Query only local spaces, or remote on agent.
75
+ * @default `QueryOptions.DataLocation.LOCAL`
76
+ *
77
+ * Options:
78
+ * - proto3_optional = true
79
+ */
80
+ dataLocation?: QueryOptionsProto.DataLocation;
81
+ };
82
+ /**
83
+ * `query` API function declaration.
84
+ */
85
+ export interface QueryFn {
86
+ <Q extends Query.Any>(query: Q, options?: (QueryAST.QueryOptions & QueryOptions) | undefined): QueryResult<Query.Type<Q>>;
87
+ <F extends Filter.Any>(filter: F, options?: (QueryAST.QueryOptions & QueryOptions) | undefined): QueryResult<Filter.Type<F>>;
88
+ }
89
+ /**
90
+ * Common interface for Database and Queue.
91
+ */
92
+ export interface Queryable {
93
+ query: QueryFn;
94
+ }
95
+ export type GetObjectByIdOptions = {
96
+ deleted?: boolean;
97
+ };
98
+ export type ObjectPlacement = 'root-doc' | 'linked-doc';
99
+ export type AddOptions = {
100
+ /**
101
+ * Where to place the object in the Automerge document tree.
102
+ * Root document is always loaded with the space.
103
+ * Linked documents are loaded lazily.
104
+ * Placing large number of objects in the root document may slow down the initial load.
105
+ *
106
+ * @default 'linked-doc'
107
+ */
108
+ placeIn?: ObjectPlacement;
109
+ };
110
+ /**
111
+ * ECHO Database interface.
112
+ */
113
+ export interface Database extends Queryable {
114
+ get spaceId(): SpaceId;
115
+ /**
116
+ * Creates a reference to an existing object in the database.
117
+ *
118
+ * NOTE: The reference may be dangling if the object is not present in the database.
119
+ * NOTE: Difference from `Ref.fromDXN`
120
+ * `Ref.fromDXN(dxn)` returns an unhydrated reference. The `.load` and `.target` APIs will not work.
121
+ * `db.makeRef(dxn)` is preferable in cases with access to the database.
122
+ */
123
+ makeRef<T extends Entity.Unknown = Entity.Unknown>(dxn: DXN): Ref.Ref<T>;
124
+ /**
125
+ * Query objects.
126
+ */
127
+ query: QueryFn;
128
+ /**
129
+ * Adds object to the database.
130
+ */
131
+ add<T extends Entity.Unknown = Entity.Unknown>(obj: T, opts?: AddOptions): T;
132
+ /**
133
+ * Removes object from the database.
134
+ */
135
+ remove(obj: Entity.Unknown): void;
136
+ }
137
+ //# sourceMappingURL=Database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../../src/Database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { ObjectId } from '@dxos/keys';
2
+ import { EntityKind, KindId } from './internal';
3
+ export { KindId };
4
+ export declare const Kind: typeof EntityKind;
5
+ export type Kind = EntityKind;
6
+ export declare const KindSchema: import("effect/Schema").Enums<typeof EntityKind>;
7
+ /**
8
+ * Assigns a kind to an Object or Relation instance.
9
+ */
10
+ export interface OfKind<K extends Kind> {
11
+ readonly [KindId]: K;
12
+ readonly id: ObjectId;
13
+ }
14
+ /**
15
+ * Obj or Relation with a specific set of properties.
16
+ */
17
+ export type Entity<Props> = OfKind<Kind> & Props;
18
+ /**
19
+ * Unknown Obj or Relation.
20
+ */
21
+ export interface Unknown extends OfKind<Kind> {
22
+ }
23
+ /**
24
+ * Object with arbitrary properties.
25
+ *
26
+ * NOTE: Due to how typescript works, this type is not assignable to a specific schema type.
27
+ * In that case, use `Obj.instanceOf` to check if an object is of a specific type.
28
+ *
29
+ * This type is very permissive and allows accessing any property on the object.
30
+ * We should move to Obj.Any that is not permissive and requires explicit instanceof checks..
31
+ */
32
+ export interface Any extends OfKind<Kind> {
33
+ [key: string]: unknown;
34
+ }
35
+ export declare const getKind: (schema: import("effect/Schema").Schema.All) => EntityKind | undefined;
36
+ //# sourceMappingURL=Entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../../src/Entity.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAoB,MAAM,EAAiB,MAAM,YAAY,CAAC;AAEjF,OAAO,EAAE,MAAM,EAAE,CAAC;AAMlB,eAAO,MAAM,IAAI,mBAAa,CAAC;AAC/B,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC;AAC9B,eAAO,MAAM,UAAU,kDAAmB,CAAC;AAE3C;;GAEG;AAEH,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,IAAI;IACpC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,OAAQ,SAAQ,MAAM,CAAC,IAAI,CAAC;CAAG;AAEhD;;;;;;;;GAQG;AACH,MAAM,WAAW,GAAI,SAAQ,MAAM,CAAC,IAAI,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,OAAO,wEAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type TypeFormat as Format } from './internal';
2
+ export * from './internal/formats';
3
+ export type { Format };
4
+ //# sourceMappingURL=Format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Format.d.ts","sourceRoot":"","sources":["../../../src/Format.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,IAAI,MAAM,EAAE,MAAM,YAAY,CAAC;AAIvD,cAAc,oBAAoB,CAAC;AAEnC,YAAY,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type * as Schema from 'effect/Schema';
2
+ import { JsonSchemaType } from './internal';
3
+ export { toEffectSchema, toJsonSchema } from './internal';
4
+ /**
5
+ * Serializable JsonSchema type definition.
6
+ */
7
+ export type JsonSchema = JsonSchemaType;
8
+ export declare const JsonSchema: Schema.Schema<JsonSchemaType>;
9
+ //# sourceMappingURL=JsonSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSchema.d.ts","sourceRoot":"","sources":["../../../src/JsonSchema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AAExC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAkB,CAAC"}