@dxos/echo 0.8.4-main.a4bbb77 → 0.8.4-main.ae835ea

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 (307) hide show
  1. package/dist/lib/browser/chunk-JUTFUT73.mjs +175 -0
  2. package/dist/lib/browser/chunk-JUTFUT73.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-KEBVBR65.mjs +3727 -0
  4. package/dist/lib/browser/chunk-KEBVBR65.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-I4YEWYJA.mjs → chunk-WO76TDT6.mjs} +572 -640
  6. package/dist/lib/browser/chunk-WO76TDT6.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +12 -7
  8. package/dist/lib/browser/internal/index.mjs +336 -0
  9. package/dist/lib/browser/internal/index.mjs.map +7 -0
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/query/index.mjs +15 -0
  12. package/dist/lib/browser/query/index.mjs.map +7 -0
  13. package/dist/lib/browser/testing/index.mjs +245 -32
  14. package/dist/lib/browser/testing/index.mjs.map +4 -4
  15. package/dist/lib/node-esm/chunk-DWZYQ2UR.mjs +3727 -0
  16. package/dist/lib/node-esm/chunk-DWZYQ2UR.mjs.map +7 -0
  17. package/dist/lib/node-esm/chunk-KBD3A2I6.mjs +175 -0
  18. package/dist/lib/node-esm/chunk-KBD3A2I6.mjs.map +7 -0
  19. package/dist/lib/node-esm/{chunk-AWWFAF75.mjs → chunk-ZSSII3JW.mjs} +572 -640
  20. package/dist/lib/node-esm/chunk-ZSSII3JW.mjs.map +7 -0
  21. package/dist/lib/node-esm/index.mjs +12 -7
  22. package/dist/lib/node-esm/internal/index.mjs +336 -0
  23. package/dist/lib/node-esm/internal/index.mjs.map +7 -0
  24. package/dist/lib/node-esm/meta.json +1 -1
  25. package/dist/lib/node-esm/query/index.mjs +15 -0
  26. package/dist/lib/node-esm/query/index.mjs.map +7 -0
  27. package/dist/lib/node-esm/testing/index.mjs +245 -32
  28. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  29. package/dist/types/src/Obj.d.ts +16 -4
  30. package/dist/types/src/Obj.d.ts.map +1 -1
  31. package/dist/types/src/Ref.d.ts +1 -1
  32. package/dist/types/src/Ref.d.ts.map +1 -1
  33. package/dist/types/src/Relation.d.ts +2 -2
  34. package/dist/types/src/Relation.d.ts.map +1 -1
  35. package/dist/types/src/Type.d.ts +16 -17
  36. package/dist/types/src/Type.d.ts.map +1 -1
  37. package/dist/types/src/index.d.ts +2 -2
  38. package/dist/types/src/index.d.ts.map +1 -1
  39. package/dist/types/src/internal/ast/annotation-helper.d.ts +8 -0
  40. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +1 -0
  41. package/dist/types/src/internal/ast/annotations.d.ts +131 -0
  42. package/dist/types/src/internal/ast/annotations.d.ts.map +1 -0
  43. package/dist/types/src/internal/ast/annotations.test.d.ts +2 -0
  44. package/dist/types/src/internal/ast/annotations.test.d.ts.map +1 -0
  45. package/dist/types/src/internal/ast/entity-kind.d.ts +10 -0
  46. package/dist/types/src/internal/ast/entity-kind.d.ts.map +1 -0
  47. package/dist/types/src/internal/ast/index.d.ts +5 -0
  48. package/dist/types/src/internal/ast/index.d.ts.map +1 -0
  49. package/dist/types/src/internal/ast/types.d.ts +6 -0
  50. package/dist/types/src/internal/ast/types.d.ts.map +1 -0
  51. package/dist/types/src/internal/formats/date.d.ts +63 -0
  52. package/dist/types/src/internal/formats/date.d.ts.map +1 -0
  53. package/dist/types/src/internal/formats/date.test.d.ts +2 -0
  54. package/dist/types/src/internal/formats/date.test.d.ts.map +1 -0
  55. package/dist/types/src/internal/formats/format.d.ts +30 -0
  56. package/dist/types/src/internal/formats/format.d.ts.map +1 -0
  57. package/dist/types/src/internal/formats/format.test.d.ts +2 -0
  58. package/dist/types/src/internal/formats/format.test.d.ts.map +1 -0
  59. package/dist/types/src/internal/formats/index.d.ts +8 -0
  60. package/dist/types/src/internal/formats/index.d.ts.map +1 -0
  61. package/dist/types/src/internal/formats/number.d.ts +31 -0
  62. package/dist/types/src/internal/formats/number.d.ts.map +1 -0
  63. package/dist/types/src/internal/formats/object.d.ts +35 -0
  64. package/dist/types/src/internal/formats/object.d.ts.map +1 -0
  65. package/dist/types/src/internal/formats/select.d.ts +11 -0
  66. package/dist/types/src/internal/formats/select.d.ts.map +1 -0
  67. package/dist/types/src/internal/formats/string.d.ts +38 -0
  68. package/dist/types/src/internal/formats/string.d.ts.map +1 -0
  69. package/dist/types/src/internal/formats/types.d.ts +68 -0
  70. package/dist/types/src/internal/formats/types.d.ts.map +1 -0
  71. package/dist/types/src/internal/index.d.ts +15 -0
  72. package/dist/types/src/internal/index.d.ts.map +1 -0
  73. package/dist/types/src/internal/json/annotations.d.ts +19 -0
  74. package/dist/types/src/internal/json/annotations.d.ts.map +1 -0
  75. package/dist/types/src/internal/json/effect-schema.test.d.ts +2 -0
  76. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +1 -0
  77. package/dist/types/src/internal/json/index.d.ts +2 -0
  78. package/dist/types/src/internal/json/index.d.ts.map +1 -0
  79. package/dist/types/src/internal/json/json-schema.d.ts +28 -0
  80. package/dist/types/src/internal/json/json-schema.d.ts.map +1 -0
  81. package/dist/types/src/internal/json/json-schema.test.d.ts +2 -0
  82. package/dist/types/src/internal/json/json-schema.test.d.ts.map +1 -0
  83. package/dist/types/src/internal/json-schema/index.d.ts +3 -0
  84. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -0
  85. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts +7 -0
  86. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -0
  87. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +250 -0
  88. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -0
  89. package/dist/types/src/internal/object/accessors.d.ts +37 -0
  90. package/dist/types/src/internal/object/accessors.d.ts.map +1 -0
  91. package/dist/types/src/internal/object/common.d.ts +18 -0
  92. package/dist/types/src/internal/object/common.d.ts.map +1 -0
  93. package/dist/types/src/internal/object/create.d.ts +40 -0
  94. package/dist/types/src/internal/object/create.d.ts.map +1 -0
  95. package/dist/types/src/internal/object/create.test.d.ts +2 -0
  96. package/dist/types/src/internal/object/create.test.d.ts.map +1 -0
  97. package/dist/types/src/internal/object/deleted.d.ts +6 -0
  98. package/dist/types/src/internal/object/deleted.d.ts.map +1 -0
  99. package/dist/types/src/internal/object/entity.d.ts +33 -0
  100. package/dist/types/src/internal/object/entity.d.ts.map +1 -0
  101. package/dist/types/src/internal/object/expando.d.ts +14 -0
  102. package/dist/types/src/internal/object/expando.d.ts.map +1 -0
  103. package/dist/types/src/internal/object/ids.d.ts +6 -0
  104. package/dist/types/src/internal/object/ids.d.ts.map +1 -0
  105. package/dist/types/src/internal/object/index.d.ts +16 -0
  106. package/dist/types/src/internal/object/index.d.ts.map +1 -0
  107. package/dist/types/src/internal/object/inspect.d.ts +2 -0
  108. package/dist/types/src/internal/object/inspect.d.ts.map +1 -0
  109. package/dist/types/src/internal/object/json-serializer.d.ts +32 -0
  110. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -0
  111. package/dist/types/src/internal/object/json-serializer.test.d.ts +2 -0
  112. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +1 -0
  113. package/dist/types/src/internal/object/meta.d.ts +31 -0
  114. package/dist/types/src/internal/object/meta.d.ts.map +1 -0
  115. package/dist/types/src/internal/object/model.d.ts +117 -0
  116. package/dist/types/src/internal/object/model.d.ts.map +1 -0
  117. package/dist/types/src/internal/object/relation.d.ts +17 -0
  118. package/dist/types/src/internal/object/relation.d.ts.map +1 -0
  119. package/dist/types/src/internal/object/schema-validator.d.ts +15 -0
  120. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -0
  121. package/dist/types/src/internal/object/schema-validator.test.d.ts +2 -0
  122. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +1 -0
  123. package/dist/types/src/internal/object/typed-object.d.ts +31 -0
  124. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -0
  125. package/dist/types/src/internal/object/typed-object.test.d.ts +2 -0
  126. package/dist/types/src/internal/object/typed-object.test.d.ts.map +1 -0
  127. package/dist/types/src/internal/object/typename.d.ts +15 -0
  128. package/dist/types/src/internal/object/typename.d.ts.map +1 -0
  129. package/dist/types/src/internal/object/version.d.ts +14 -0
  130. package/dist/types/src/internal/object/version.d.ts.map +1 -0
  131. package/dist/types/src/internal/projection/compose.d.ts +6 -0
  132. package/dist/types/src/internal/projection/compose.d.ts.map +1 -0
  133. package/dist/types/src/internal/projection/compose.test.d.ts +2 -0
  134. package/dist/types/src/internal/projection/compose.test.d.ts.map +1 -0
  135. package/dist/types/src/internal/projection/index.d.ts +2 -0
  136. package/dist/types/src/internal/projection/index.d.ts.map +1 -0
  137. package/dist/types/src/internal/proxy/handler.test.d.ts +2 -0
  138. package/dist/types/src/internal/proxy/handler.test.d.ts.map +1 -0
  139. package/dist/types/src/internal/proxy/reactive-object.d.ts +15 -0
  140. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +1 -0
  141. package/dist/types/src/internal/proxy/schema.test.d.ts +2 -0
  142. package/dist/types/src/internal/proxy/schema.test.d.ts.map +1 -0
  143. package/dist/types/src/internal/proxy/typed-handler.d.ts +44 -0
  144. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -0
  145. package/dist/types/src/internal/proxy/typed-handler.test.d.ts +2 -0
  146. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +1 -0
  147. package/dist/types/src/internal/proxy/typed-object.test.d.ts +2 -0
  148. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +1 -0
  149. package/dist/types/src/internal/query/index.d.ts +2 -0
  150. package/dist/types/src/internal/query/index.d.ts.map +1 -0
  151. package/dist/types/src/internal/query/query.d.ts +17 -0
  152. package/dist/types/src/internal/query/query.d.ts.map +1 -0
  153. package/dist/types/src/internal/ref/index.d.ts +3 -0
  154. package/dist/types/src/internal/ref/index.d.ts.map +1 -0
  155. package/dist/types/src/internal/ref/ref-array.d.ts +21 -0
  156. package/dist/types/src/internal/ref/ref-array.d.ts.map +1 -0
  157. package/dist/types/src/internal/ref/ref.d.ts +206 -0
  158. package/dist/types/src/internal/ref/ref.d.ts.map +1 -0
  159. package/dist/types/src/internal/ref/ref.test.d.ts +2 -0
  160. package/dist/types/src/internal/ref/ref.test.d.ts.map +1 -0
  161. package/dist/types/src/internal/schema/echo-schema.d.ts +168 -0
  162. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -0
  163. package/dist/types/src/internal/schema/index.d.ts +7 -0
  164. package/dist/types/src/internal/schema/index.d.ts.map +1 -0
  165. package/dist/types/src/internal/schema/manipulation.d.ts +10 -0
  166. package/dist/types/src/internal/schema/manipulation.d.ts.map +1 -0
  167. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +18 -0
  168. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +1 -0
  169. package/dist/types/src/internal/schema/snapshot.d.ts +6 -0
  170. package/dist/types/src/internal/schema/snapshot.d.ts.map +1 -0
  171. package/dist/types/src/internal/schema/stored-schema.d.ts +13 -0
  172. package/dist/types/src/internal/schema/stored-schema.d.ts.map +1 -0
  173. package/dist/types/src/internal/testing/index.d.ts +3 -0
  174. package/dist/types/src/internal/testing/index.d.ts.map +1 -0
  175. package/dist/types/src/internal/testing/types.d.ts +455 -0
  176. package/dist/types/src/internal/testing/types.d.ts.map +1 -0
  177. package/dist/types/src/internal/testing/utils.d.ts +10 -0
  178. package/dist/types/src/internal/testing/utils.d.ts.map +1 -0
  179. package/dist/types/src/internal/types/index.d.ts +3 -0
  180. package/dist/types/src/internal/types/index.d.ts.map +1 -0
  181. package/dist/types/src/internal/types/types.d.ts +79 -0
  182. package/dist/types/src/internal/types/types.d.ts.map +1 -0
  183. package/dist/types/src/internal/types/types.test.d.ts +2 -0
  184. package/dist/types/src/internal/types/types.test.d.ts.map +1 -0
  185. package/dist/types/src/internal/types/util.d.ts +5 -0
  186. package/dist/types/src/internal/types/util.d.ts.map +1 -0
  187. package/dist/types/src/query/index.d.ts +2 -1
  188. package/dist/types/src/query/index.d.ts.map +1 -1
  189. package/dist/types/src/query/{dsl.d.ts → query.d.ts} +24 -21
  190. package/dist/types/src/query/query.d.ts.map +1 -0
  191. package/dist/types/src/query/query.test.d.ts +2 -0
  192. package/dist/types/src/query/query.test.d.ts.map +1 -0
  193. package/dist/types/src/query/tag.d.ts +17 -0
  194. package/dist/types/src/query/tag.d.ts.map +1 -0
  195. package/dist/types/src/testing/echo-schema.d.ts +7 -0
  196. package/dist/types/src/testing/echo-schema.d.ts.map +1 -0
  197. package/dist/types/src/testing/index.d.ts +2 -0
  198. package/dist/types/src/testing/index.d.ts.map +1 -1
  199. package/dist/types/src/testing/types.d.ts +18 -18
  200. package/dist/types/src/testing/types.d.ts.map +1 -1
  201. package/dist/types/tsconfig.tsbuildinfo +1 -1
  202. package/package.json +27 -16
  203. package/src/Obj.ts +40 -10
  204. package/src/Ref.ts +1 -2
  205. package/src/Relation.ts +4 -3
  206. package/src/Type.ts +28 -29
  207. package/src/index.ts +2 -2
  208. package/src/internal/ast/annotation-helper.ts +22 -0
  209. package/src/internal/ast/annotations.test.ts +98 -0
  210. package/src/internal/ast/annotations.ts +226 -0
  211. package/src/internal/ast/entity-kind.ts +15 -0
  212. package/src/internal/ast/index.ts +8 -0
  213. package/src/internal/ast/types.ts +17 -0
  214. package/src/internal/formats/date.test.ts +56 -0
  215. package/src/internal/formats/date.ts +217 -0
  216. package/src/internal/formats/format.test.ts +77 -0
  217. package/src/internal/formats/format.ts +52 -0
  218. package/src/internal/formats/index.ts +12 -0
  219. package/src/internal/formats/number.ts +89 -0
  220. package/src/internal/formats/object.ts +80 -0
  221. package/src/internal/formats/select.ts +16 -0
  222. package/src/internal/formats/string.ts +76 -0
  223. package/src/internal/formats/types.ts +175 -0
  224. package/src/internal/index.ts +22 -0
  225. package/src/internal/json/annotations.ts +50 -0
  226. package/src/internal/json/effect-schema.test.ts +143 -0
  227. package/src/internal/json/index.ts +5 -0
  228. package/src/internal/json/json-schema.test.ts +857 -0
  229. package/src/internal/json/json-schema.ts +519 -0
  230. package/src/internal/json-schema/index.ts +6 -0
  231. package/src/internal/json-schema/json-schema-normalize.ts +109 -0
  232. package/src/internal/json-schema/json-schema-type.ts +403 -0
  233. package/src/internal/object/accessors.ts +153 -0
  234. package/src/internal/object/common.ts +76 -0
  235. package/src/internal/object/create.test.ts +118 -0
  236. package/src/internal/object/create.ts +96 -0
  237. package/src/internal/object/deleted.ts +19 -0
  238. package/src/internal/object/entity.ts +248 -0
  239. package/src/internal/object/expando.ts +21 -0
  240. package/src/internal/object/ids.ts +12 -0
  241. package/src/internal/object/index.ts +19 -0
  242. package/src/internal/object/inspect.ts +48 -0
  243. package/src/internal/object/json-serializer.test.ts +99 -0
  244. package/src/internal/object/json-serializer.ts +225 -0
  245. package/src/internal/object/meta.ts +61 -0
  246. package/src/internal/object/model.ts +170 -0
  247. package/src/internal/object/relation.ts +24 -0
  248. package/src/internal/object/schema-validator.test.ts +186 -0
  249. package/src/internal/object/schema-validator.ts +241 -0
  250. package/src/internal/object/typed-object.test.ts +34 -0
  251. package/src/internal/object/typed-object.ts +88 -0
  252. package/src/internal/object/typename.ts +61 -0
  253. package/src/internal/object/version.ts +22 -0
  254. package/src/internal/projection/compose.test.ts +43 -0
  255. package/src/internal/projection/compose.ts +36 -0
  256. package/src/internal/projection/index.ts +5 -0
  257. package/src/internal/proxy/handler.test.ts +163 -0
  258. package/src/internal/proxy/reactive-object.ts +108 -0
  259. package/src/internal/proxy/schema.test.ts +136 -0
  260. package/src/internal/proxy/typed-handler.test.ts +102 -0
  261. package/src/internal/proxy/typed-handler.ts +228 -0
  262. package/src/internal/proxy/typed-object.test.ts +100 -0
  263. package/src/internal/query/index.ts +5 -0
  264. package/src/internal/query/query.ts +23 -0
  265. package/src/internal/ref/index.ts +6 -0
  266. package/src/internal/ref/ref-array.ts +39 -0
  267. package/src/internal/ref/ref.test.ts +100 -0
  268. package/src/internal/ref/ref.ts +521 -0
  269. package/src/internal/schema/echo-schema.ts +383 -0
  270. package/src/internal/schema/index.ts +10 -0
  271. package/src/internal/schema/manipulation.ts +92 -0
  272. package/src/internal/schema/runtime-schema-registry.ts +78 -0
  273. package/src/internal/schema/snapshot.ts +25 -0
  274. package/src/internal/schema/stored-schema.ts +26 -0
  275. package/src/internal/testing/index.ts +6 -0
  276. package/src/internal/testing/types.ts +211 -0
  277. package/src/internal/testing/utils.ts +54 -0
  278. package/src/internal/types/index.ts +6 -0
  279. package/src/internal/types/types.test.ts +48 -0
  280. package/src/internal/types/types.ts +176 -0
  281. package/src/internal/types/util.ts +9 -0
  282. package/src/query/index.ts +2 -1
  283. package/src/query/query.test.ts +401 -0
  284. package/src/query/{dsl.ts → query.ts} +68 -38
  285. package/src/query/tag.ts +37 -0
  286. package/src/test/api.test.ts +2 -2
  287. package/src/testing/echo-schema.ts +39 -0
  288. package/src/testing/index.ts +2 -0
  289. package/src/testing/types.ts +1 -1
  290. package/dist/lib/browser/chunk-I4YEWYJA.mjs.map +0 -7
  291. package/dist/lib/node-esm/chunk-AWWFAF75.mjs.map +0 -7
  292. package/dist/types/src/experimental/database.d.ts +0 -8
  293. package/dist/types/src/experimental/database.d.ts.map +0 -1
  294. package/dist/types/src/experimental/index.d.ts +0 -1
  295. package/dist/types/src/experimental/index.d.ts.map +0 -1
  296. package/dist/types/src/experimental/queue.d.ts +0 -8
  297. package/dist/types/src/experimental/queue.d.ts.map +0 -1
  298. package/dist/types/src/experimental/space.d.ts +0 -8
  299. package/dist/types/src/experimental/space.d.ts.map +0 -1
  300. package/dist/types/src/query/dsl.d.ts.map +0 -1
  301. package/dist/types/src/query/dsl.test.d.ts +0 -2
  302. package/dist/types/src/query/dsl.test.d.ts.map +0 -1
  303. package/src/experimental/database.ts +0 -11
  304. package/src/experimental/index.ts +0 -7
  305. package/src/experimental/queue.ts +0 -11
  306. package/src/experimental/space.ts +0 -11
  307. package/src/query/dsl.test.ts +0 -362
@@ -0,0 +1,206 @@
1
+ import * as Schema from 'effect/Schema';
2
+ import * as SchemaAST from 'effect/SchemaAST';
3
+ import { type EncodedReference } from '@dxos/echo-protocol';
4
+ import { DXN, ObjectId } from '@dxos/keys';
5
+ import { type JsonSchemaType } from '../json-schema';
6
+ import type { BaseObject, WithId } from '../types';
7
+ /**
8
+ * The `$id` and `$ref` fields for an ECHO reference schema.
9
+ */
10
+ export declare const JSON_SCHEMA_ECHO_REF_ID = "/schemas/echo/ref";
11
+ export declare const getSchemaReference: (property: JsonSchemaType) => {
12
+ typename: string;
13
+ } | undefined;
14
+ export declare const createSchemaReference: (typename: string) => JsonSchemaType;
15
+ /**
16
+ * Runtime type-info for a reference extracted from effect AST.
17
+ */
18
+ export type RefereneAST = {
19
+ /**
20
+ * Typename of linked schema.
21
+ */
22
+ typename: string;
23
+ /**
24
+ * Version of linked schema.
25
+ */
26
+ version: string;
27
+ };
28
+ export declare const getReferenceAst: (ast: SchemaAST.AST) => RefereneAST | undefined;
29
+ export declare const RefTypeId: unique symbol;
30
+ /**
31
+ * Reference Schema.
32
+ */
33
+ export interface Ref$<T extends WithId> extends Schema.SchemaClass<Ref<T>, EncodedReference> {
34
+ }
35
+ export interface RefFn {
36
+ <S extends Schema.Schema.Any>(schema: S): Ref$<Schema.Schema.Type<S>>;
37
+ /**
38
+ * @returns True if the object is a reference.
39
+ */
40
+ isRef: (obj: any) => obj is Ref<any>;
41
+ /**
42
+ * @returns True if the reference points to the given object id.
43
+ */
44
+ hasObjectId: (id: ObjectId) => (ref: Ref<any>) => boolean;
45
+ /**
46
+ * @returns True if the schema is a reference schema.
47
+ */
48
+ isRefSchema: (schema: Schema.Schema<any, any>) => schema is Ref$<any>;
49
+ /**
50
+ * @returns True if the schema AST is a reference schema.
51
+ */
52
+ isRefSchemaAST: (ast: SchemaAST.AST) => boolean;
53
+ /**
54
+ * Constructs a reference that points to the given object.
55
+ */
56
+ make: <T extends WithId>(object: T) => Ref<T>;
57
+ /**
58
+ * Constructs a reference that points to the object specified by the provided DXN.
59
+ */
60
+ fromDXN: (dxn: DXN) => Ref<any>;
61
+ }
62
+ /**
63
+ * Schema builder for references.
64
+ */
65
+ export declare const Ref: RefFn;
66
+ /**
67
+ * Represents materialized reference to a target.
68
+ * This is the data type for the fields marked as ref.
69
+ */
70
+ export interface Ref<T> {
71
+ /**
72
+ * Target object DXN.
73
+ */
74
+ get dxn(): DXN;
75
+ /**
76
+ * @returns The reference target.
77
+ * May return `undefined` if the object is not loaded in the working set.
78
+ * Accessing this property, even if it returns `undefined` will trigger the object to be loaded to the working set.
79
+ *
80
+ * @reactive Supports signal subscriptions.
81
+ */
82
+ get target(): T | undefined;
83
+ /**
84
+ * @returns Promise that will resolves with the target object.
85
+ * Will load the object from disk if it is not present in the working set.
86
+ * @throws If the object is not available locally.
87
+ */
88
+ load(): Promise<T>;
89
+ /**
90
+ * @returns Promise that will resolves with the target object or undefined if the object is not loaded locally.
91
+ */
92
+ tryLoad(): Promise<T | undefined>;
93
+ /**
94
+ * Do not inline the target object in the reference.
95
+ * Makes .target unavailable unless the reference is connected to a database context.
96
+ *
97
+ * When serialized with toJSON, the difference is between:
98
+ * `{ "/": "dxn:..." }`
99
+ * and
100
+ * `{ "/": "dxn:...", "target": { ... } }`
101
+ *
102
+ * Clones the reference object.
103
+ */
104
+ noInline(): Ref<T>;
105
+ /**
106
+ * Serializes the reference to a JSON object.
107
+ * The serialization format is compatible with the IPLD-style encoded references.
108
+ * When a reference has a saved target (i.e. the target or object holding the reference is not in the database),
109
+ * the target is included in the serialized object.
110
+ *
111
+ * Examples:
112
+ * `{ "/": "dxn:..." }`
113
+ * `{ "/": "dxn:...", "target": { ... } }`
114
+ */
115
+ encode(): EncodedReference;
116
+ [RefTypeId]: {
117
+ _T: T;
118
+ };
119
+ }
120
+ export declare namespace Ref {
121
+ /**
122
+ * Target of the reference.
123
+ */
124
+ type Target<R> = R extends Ref<infer U> ? U : never;
125
+ }
126
+ /**
127
+ * `reference` field on the schema object.
128
+ */
129
+ export type JsonSchemaReferenceInfo = {
130
+ schema: {
131
+ $ref: string;
132
+ };
133
+ schemaVersion?: string;
134
+ };
135
+ export interface RefResolver {
136
+ /**
137
+ * Resolve ref synchronously from the objects in the working set.
138
+ *
139
+ * @param dxn
140
+ * @param load If true the resolver should attempt to load the object from disk.
141
+ * @param onLoad Callback to call when the object is loaded.
142
+ */
143
+ resolveSync(dxn: DXN, load: boolean, onLoad?: () => void): BaseObject | undefined;
144
+ /**
145
+ * Resolver ref asynchronously.
146
+ */
147
+ resolve(dxn: DXN): Promise<BaseObject | undefined>;
148
+ resolveSchema(dxn: DXN): Promise<Schema.Schema.AnyNoContext | undefined>;
149
+ }
150
+ export declare class RefImpl<T> implements Ref<T> {
151
+ #private;
152
+ constructor(dxn: DXN, target?: T);
153
+ /**
154
+ * @inheritdoc
155
+ */
156
+ get dxn(): DXN;
157
+ /**
158
+ * @inheritdoc
159
+ */
160
+ get target(): T | undefined;
161
+ /**
162
+ * @inheritdoc
163
+ */
164
+ load(): Promise<T>;
165
+ /**
166
+ * @inheritdoc
167
+ */
168
+ tryLoad(): Promise<T | undefined>;
169
+ /**
170
+ * Do not inline the target object in the reference.
171
+ * Makes .target unavailable unless the reference is connected to a database context.
172
+ * Clones the reference object.
173
+ */
174
+ noInline(): RefImpl<T>;
175
+ encode(): EncodedReference;
176
+ /**
177
+ * Serializes the reference to a JSON object.
178
+ * The serialization format is compatible with the IPLD-style encoded references.
179
+ * When a reference has a saved target (i.e. the target or object holding the reference is not in the database),
180
+ * the target is included in the serialized object.
181
+ */
182
+ toJSON(): EncodedReference;
183
+ toString(): string;
184
+ [RefTypeId]: {
185
+ _T: any;
186
+ };
187
+ }
188
+ /**
189
+ * Internal API for setting the reference resolver.
190
+ */
191
+ export declare const setRefResolver: (ref: Ref<any>, resolver: RefResolver) => void;
192
+ /**
193
+ * Internal API for getting the saved target on a reference.
194
+ */
195
+ export declare const getRefSavedTarget: (ref: Ref<any>) => BaseObject | undefined;
196
+ export declare const refFromEncodedReference: (encodedReference: EncodedReference, resolver?: RefResolver) => Ref<any>;
197
+ export declare class StaticRefResolver implements RefResolver {
198
+ objects: Map<string, BaseObject>;
199
+ schemas: Map<DXN.String, Schema.Schema.AnyNoContext>;
200
+ addObject(obj: BaseObject): this;
201
+ addSchema(schema: Schema.Schema.AnyNoContext): this;
202
+ resolveSync(dxn: DXN, _load: boolean, _onLoad?: () => void): BaseObject | undefined;
203
+ resolve(dxn: DXN): Promise<BaseObject | undefined>;
204
+ resolveSchema(dxn: DXN): Promise<Schema.Schema.AnyNoContext | undefined>;
205
+ }
206
+ //# sourceMappingURL=ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../../../../src/internal/ref/ref.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ref.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref.test.d.ts","sourceRoot":"","sources":["../../../../../src/internal/ref/ref.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,168 @@
1
+ import * as Schema from 'effect/Schema';
2
+ import * as SchemaAST from 'effect/SchemaAST';
3
+ import { type ObjectId } from '@dxos/keys';
4
+ import { type SchemaMeta, SchemaMetaSymbol } from '../ast';
5
+ import { type JsonSchemaType } from '../json-schema';
6
+ import { type TypedObject, type TypedObjectPrototype } from '../object';
7
+ import { StoredSchema } from './stored-schema';
8
+ /**
9
+ * Base schema type.
10
+ */
11
+ export interface BaseSchema<A = any, I = any> extends TypedObject<A, I> {
12
+ get readonly(): boolean;
13
+ get mutable(): EchoSchema<A, I>;
14
+ get snapshot(): Schema.Schema<A, I>;
15
+ get jsonSchema(): JsonSchemaType;
16
+ }
17
+ /**
18
+ * Immutable schema type.
19
+ * @deprecated Use `Schema.Schema.AnyNoContext` instead.
20
+ */
21
+ export declare class ImmutableSchema<A = any, I = any> implements BaseSchema<A, I> {
22
+ private readonly _schema;
23
+ private readonly _objectAnnotation;
24
+ constructor(_schema: Schema.Schema<A, I>);
25
+ get [Schema.TypeId](): {
26
+ _A: (_: any) => any;
27
+ _I: (_: any) => any;
28
+ _R: (_: never) => never;
29
+ };
30
+ get Type(): A;
31
+ get Encoded(): I;
32
+ get Context(): never;
33
+ get ast(): SchemaAST.AST;
34
+ get annotations(): (annotations: Schema.Annotations.GenericSchema<A>) => Schema.Schema<A, I, never>;
35
+ get pipe(): {
36
+ <A_1>(this: A_1): A_1;
37
+ <A_1, B = never>(this: A_1, ab: (_: A_1) => B): B;
38
+ <A_1, B = never, C = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C): C;
39
+ <A_1, B = never, C = never, D = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D): D;
40
+ <A_1, B = never, C = never, D = never, E = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E): E;
41
+ <A_1, B = never, C = never, D = never, E = never, F = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F): F;
42
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G): G;
43
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H): H;
44
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1): I_1;
45
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J): J;
46
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K): K;
47
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L): L;
48
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never, M = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M): M;
49
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never, M = never, N = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N): N;
50
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never, M = never, N = never, O = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O): O;
51
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P): P;
52
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q): Q;
53
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R): R;
54
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S): S;
55
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never, T = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T): T;
56
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never, T = never, U = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T, tu: (_: T) => U): U;
57
+ <A_1, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I_1 = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never, T = never, U = never>(this: A_1, ab: (_: A_1) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I_1, ij: (_: I_1) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T, tu: (_: T) => U): U;
58
+ };
59
+ get typename(): string;
60
+ get version(): string;
61
+ get readonly(): boolean;
62
+ get snapshot(): Schema.Schema.AnyNoContext;
63
+ get jsonSchema(): JsonSchemaType;
64
+ get mutable(): EchoSchema;
65
+ }
66
+ export declare const isMutable: (schema: Schema.Schema.AnyNoContext) => schema is EchoSchema;
67
+ declare const EchoSchema_base: TypedObjectPrototype<any, any>;
68
+ /**
69
+ * Represents a schema that is stored in the ECHO database.
70
+ * Schema can me mutable or readonly (specified by the {@link EchoSchema.readonly} field).
71
+ *
72
+ * Schema that can be modified at runtime via the API.
73
+ * Is an instance of effect-schema (`Schema.Schema.AnyNoContext`) so it can be used in the same way as a regular schema.
74
+ * IMPORTANT: The schema AST will change reactively when the schema is updated, including synced updates from remote peers.
75
+ *
76
+ * The class constructor is a schema instance itself, and can be used in the echo object definitions:
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * export class TableType extends Schema.Struct({...}).pipe(Type.Obj({ typename: 'example.org/type/Table', version: '0.1.0' })){
81
+ * title: Schema.String,
82
+ * schema: Schema.optional(ref(EchoSchema)),
83
+ * props: Schema.mutable(S.Array(TablePropSchema)),
84
+ * }) {}
85
+ * ```
86
+ *
87
+ * The ECHO API will translate any references to StoredSchema objects to be resolved as EchoSchema objects.
88
+ */
89
+ export declare class EchoSchema<A = any, I = any> extends EchoSchema_base implements BaseSchema<A, I> {
90
+ private readonly _storedSchema;
91
+ private _schema;
92
+ private _isDirty;
93
+ constructor(_storedSchema: StoredSchema);
94
+ get [Schema.TypeId](): {
95
+ _A: (_: any) => any;
96
+ _I: (_: any) => any;
97
+ _R: (_: never) => never;
98
+ };
99
+ get Type(): A;
100
+ get Encoded(): I;
101
+ get Context(): never;
102
+ get ast(): SchemaAST.AST;
103
+ get annotations(): (annotations: Schema.Annotations.GenericSchema<any>) => Schema.Schema<any, any, never>;
104
+ get pipe(): Schema.Schema.AnyNoContext['pipe'];
105
+ get typename(): string;
106
+ get version(): string;
107
+ get readonly(): boolean;
108
+ /**
109
+ * Returns an immutable schema snapshot of the current state of the schema.
110
+ */
111
+ get snapshot(): Schema.Schema.AnyNoContext;
112
+ /**
113
+ * @reactive
114
+ */
115
+ get jsonSchema(): JsonSchemaType;
116
+ /**
117
+ * Returns a mutable schema.
118
+ */
119
+ get mutable(): EchoSchema;
120
+ /**
121
+ * Id of the ECHO object containing the schema.
122
+ */
123
+ get id(): ObjectId;
124
+ /**
125
+ * Short name of the schema.
126
+ */
127
+ get name(): string | undefined;
128
+ get [SchemaMetaSymbol](): SchemaMeta;
129
+ /**
130
+ * Reference to the underlying stored schema object.
131
+ */
132
+ get storedSchema(): StoredSchema;
133
+ getProperties(): SchemaAST.PropertySignature[];
134
+ /**
135
+ * @throws Error if the schema is readonly.
136
+ */
137
+ updateTypename(typename: string): void;
138
+ /**
139
+ * @throws Error if the schema is readonly.
140
+ */
141
+ addFields(fields: Schema.Struct.Fields): void;
142
+ /**
143
+ * @throws Error if the schema is readonly.
144
+ */
145
+ updateFields(fields: Schema.Struct.Fields): void;
146
+ /**
147
+ * @throws Error if the schema is readonly.
148
+ */
149
+ updateFieldPropertyName({ before, after }: {
150
+ before: PropertyKey;
151
+ after: PropertyKey;
152
+ }): void;
153
+ /**
154
+ * @throws Error if the schema is readonly.
155
+ */
156
+ removeFields(fieldNames: string[]): void;
157
+ /**
158
+ * Called by EchoSchemaRegistry on update.
159
+ */
160
+ _invalidate(): void;
161
+ /**
162
+ * Rebuilds this schema if it is dirty.
163
+ */
164
+ _rebuild(): void;
165
+ private _getSchema;
166
+ }
167
+ export {};
168
+ //# sourceMappingURL=echo-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"echo-schema.d.ts","sourceRoot":"","sources":["../../../../../src/internal/schema/echo-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from './echo-schema';
2
+ export * from './snapshot';
3
+ export * from './stored-schema';
4
+ export * from './runtime-schema-registry';
5
+ export * from './manipulation';
6
+ export * from './echo-schema';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/schema/index.ts"],"names":[],"mappings":"AAIA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ import * as Schema from 'effect/Schema';
2
+ export declare const addFieldsToSchema: (schema: Schema.Schema.AnyNoContext, fields: Schema.Struct.Fields) => Schema.Schema.AnyNoContext;
3
+ export declare const updateFieldsInSchema: (schema: Schema.Schema.AnyNoContext, fields: Schema.Struct.Fields) => Schema.Schema.AnyNoContext;
4
+ export declare const removeFieldsFromSchema: (schema: Schema.Schema.AnyNoContext, fieldNames: string[]) => Schema.Schema.AnyNoContext;
5
+ export declare const updateFieldNameInSchema: (schema: Schema.Schema.AnyNoContext, { before, after }: {
6
+ before: PropertyKey;
7
+ after: PropertyKey;
8
+ }) => Schema.Schema.AnyNoContext;
9
+ export declare const setTypenameInSchema: (schema: Schema.Schema.AnyNoContext, typename: string) => Schema.Schema.AnyNoContext;
10
+ //# sourceMappingURL=manipulation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manipulation.d.ts","sourceRoot":"","sources":["../../../../../src/internal/schema/manipulation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AASxC,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,EAClC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,KAC3B,MAAM,CAAC,MAAM,CAAC,YAKhB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,EAClC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,KAC3B,MAAM,CAAC,MAAM,CAAC,YAgBhB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,EAClC,YAAY,MAAM,EAAE,KACnB,MAAM,CAAC,MAAM,CAAC,YAEhB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,EAClC,mBAAmB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,KAC7D,MAAM,CAAC,MAAM,CAAC,YAehB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,EAClC,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,YAiBhB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type * as Schema from 'effect/Schema';
2
+ import { type DXN } from '@dxos/keys';
3
+ /**
4
+ * Runtime registry of static schema objects (i.e., not Dynamic .
5
+ */
6
+ export declare class RuntimeSchemaRegistry {
7
+ private readonly _registry;
8
+ constructor();
9
+ get schemas(): Schema.Schema.AnyNoContext[];
10
+ hasSchema<S extends Schema.Schema.AnyNoContext>(schema: S): boolean;
11
+ getSchemaByDXN(dxn: DXN): Schema.Schema.AnyNoContext | undefined;
12
+ /**
13
+ * @deprecated Use getSchemaByDXN.
14
+ */
15
+ getSchema(typename: string): Schema.Schema.AnyNoContext | undefined;
16
+ addSchema(types: Schema.Schema.AnyNoContext[]): void;
17
+ }
18
+ //# sourceMappingURL=runtime-schema-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-schema-registry.d.ts","sourceRoot":"","sources":["../../../../../src/internal/schema/runtime-schema-registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAI7C,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAOtC;;GAEG;AAEH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmD;;IAM7E,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAE1C;IAED,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO;IASnE,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS;IAmBhE;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS;IAInE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI;CAYrD"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Returns a non-reactive snapshot of the given live object.
3
+ * @deprecated Use `getSnapshot` from `@dxos/live-object` instead.
4
+ */
5
+ export declare const getSnapshot: (object: any) => any;
6
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../../../src/internal/schema/snapshot.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,eAAO,MAAM,WAAW,GAAI,QAAQ,GAAG,KAAG,GAezC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import * as Schema from 'effect/Schema';
2
+ import { JsonSchemaType } from '../json-schema';
3
+ /**
4
+ * Persistent representation of a schema.
5
+ */
6
+ export declare const StoredSchema: import("..").EchoTypeSchema<Schema.Struct<{
7
+ name: Schema.optional<typeof Schema.String>;
8
+ typename: Schema.filter<typeof Schema.String>;
9
+ version: Schema.filter<typeof Schema.String>;
10
+ jsonSchema: Schema.Schema<JsonSchemaType, JsonSchemaType, never>;
11
+ }>, {}>;
12
+ export type StoredSchema = Schema.Schema.Type<typeof StoredSchema>;
13
+ //# sourceMappingURL=stored-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stored-schema.d.ts","sourceRoot":"","sources":["../../../../../src/internal/schema/stored-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;OAUxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './utils';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/testing/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}