@dxos/echo 0.10.0 → 0.11.0

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 (274) hide show
  1. package/dist/lib/Annotation.mjs +3 -0
  2. package/dist/lib/Blob.mjs +160 -0
  3. package/dist/lib/Blob.mjs.map +1 -0
  4. package/dist/lib/Database.mjs +2 -0
  5. package/dist/lib/Entity.mjs +231 -0
  6. package/dist/lib/Entity.mjs.map +1 -0
  7. package/dist/lib/Err.mjs +105 -0
  8. package/dist/lib/Err.mjs.map +1 -0
  9. package/dist/lib/Feed.mjs +338 -0
  10. package/dist/lib/Feed.mjs.map +1 -0
  11. package/dist/lib/Filter.mjs +380 -0
  12. package/dist/lib/Filter.mjs.map +1 -0
  13. package/dist/lib/Format.mjs +47 -0
  14. package/dist/lib/Format.mjs.map +1 -0
  15. package/dist/lib/JsonSchema.mjs +21 -0
  16. package/dist/lib/JsonSchema.mjs.map +1 -0
  17. package/dist/lib/Key.mjs +15 -0
  18. package/dist/lib/Key.mjs.map +1 -0
  19. package/dist/lib/Migration.mjs +38 -0
  20. package/dist/lib/Migration.mjs.map +1 -0
  21. package/dist/lib/Obj.mjs +660 -0
  22. package/dist/lib/Obj.mjs.map +1 -0
  23. package/dist/lib/Order.mjs +65 -0
  24. package/dist/lib/Order.mjs.map +1 -0
  25. package/dist/lib/Query.mjs +336 -0
  26. package/dist/lib/Query.mjs.map +1 -0
  27. package/dist/lib/QueryResult.mjs +7 -0
  28. package/dist/lib/QueryResult.mjs.map +1 -0
  29. package/dist/lib/Ref.mjs +44 -0
  30. package/dist/lib/Ref.mjs.map +1 -0
  31. package/dist/lib/Registry.mjs +35 -0
  32. package/dist/lib/Registry.mjs.map +1 -0
  33. package/dist/lib/Relation.mjs +397 -0
  34. package/dist/lib/Relation.mjs.map +1 -0
  35. package/dist/lib/Scope.mjs +51 -0
  36. package/dist/lib/Scope.mjs.map +1 -0
  37. package/dist/lib/Tag.mjs +70 -0
  38. package/dist/lib/Tag.mjs.map +1 -0
  39. package/dist/lib/Text.mjs +82 -0
  40. package/dist/lib/Text.mjs.map +1 -0
  41. package/dist/lib/Type.mjs +371 -0
  42. package/dist/lib/Type.mjs.map +1 -0
  43. package/dist/lib/chunk-Annotation.mjs +221 -0
  44. package/dist/lib/chunk-Annotation.mjs.map +1 -0
  45. package/dist/lib/chunk-Database.mjs +918 -0
  46. package/dist/lib/chunk-Database.mjs.map +1 -0
  47. package/dist/lib/chunk-atom-snapshot.mjs +249 -0
  48. package/dist/lib/chunk-atom-snapshot.mjs.map +1 -0
  49. package/dist/lib/chunk-internal.mjs +2775 -0
  50. package/dist/lib/chunk-internal.mjs.map +1 -0
  51. package/dist/lib/chunk-json-schema.mjs +660 -0
  52. package/dist/lib/chunk-json-schema.mjs.map +1 -0
  53. package/dist/lib/chunk-number.mjs +164 -0
  54. package/dist/lib/chunk-number.mjs.map +1 -0
  55. package/dist/lib/chunk-ref-array.mjs +31 -0
  56. package/dist/lib/chunk-ref-array.mjs.map +1 -0
  57. package/dist/lib/chunk-ref.mjs +590 -0
  58. package/dist/lib/chunk-ref.mjs.map +1 -0
  59. package/dist/lib/chunk-rolldown-runtime.mjs +13 -0
  60. package/dist/lib/chunk-select.mjs +186 -0
  61. package/dist/lib/chunk-select.mjs.map +1 -0
  62. package/dist/lib/chunk-src.mjs +234 -0
  63. package/dist/lib/chunk-src.mjs.map +1 -0
  64. package/dist/lib/chunk-util.mjs +140 -0
  65. package/dist/lib/chunk-util.mjs.map +1 -0
  66. package/dist/lib/index.mjs +24 -0
  67. package/dist/lib/internal.mjs +10 -0
  68. package/dist/lib/testing.mjs +346 -0
  69. package/dist/lib/testing.mjs.map +1 -0
  70. package/dist/types/src/Aggregate.d.ts +86 -0
  71. package/dist/types/src/Aggregate.d.ts.map +1 -0
  72. package/dist/types/src/Blob.d.ts +153 -0
  73. package/dist/types/src/Blob.d.ts.map +1 -0
  74. package/dist/types/src/Blob.test.d.ts +2 -0
  75. package/dist/types/src/Blob.test.d.ts.map +1 -0
  76. package/dist/types/src/Database.d.ts +153 -4
  77. package/dist/types/src/Database.d.ts.map +1 -1
  78. package/dist/types/src/Err.d.ts +116 -0
  79. package/dist/types/src/Err.d.ts.map +1 -1
  80. package/dist/types/src/Feed.d.ts +116 -28
  81. package/dist/types/src/Feed.d.ts.map +1 -1
  82. package/dist/types/src/Feed.test.d.ts +2 -0
  83. package/dist/types/src/Feed.test.d.ts.map +1 -0
  84. package/dist/types/src/Filter.d.ts +14 -6
  85. package/dist/types/src/Filter.d.ts.map +1 -1
  86. package/dist/types/src/Hypergraph.d.ts +18 -0
  87. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  88. package/dist/types/src/Json.d.ts.map +1 -1
  89. package/dist/types/src/Obj.d.ts +14 -1
  90. package/dist/types/src/Obj.d.ts.map +1 -1
  91. package/dist/types/src/Order.d.ts +9 -3
  92. package/dist/types/src/Order.d.ts.map +1 -1
  93. package/dist/types/src/Query.d.ts +107 -26
  94. package/dist/types/src/Query.d.ts.map +1 -1
  95. package/dist/types/src/Relation.d.ts +6 -0
  96. package/dist/types/src/Relation.d.ts.map +1 -1
  97. package/dist/types/src/Type.d.ts.map +1 -1
  98. package/dist/types/src/View.d.ts +1 -1
  99. package/dist/types/src/index.d.ts +2 -0
  100. package/dist/types/src/index.d.ts.map +1 -1
  101. package/dist/types/src/internal/Entity/api.d.ts +6 -0
  102. package/dist/types/src/internal/Entity/api.d.ts.map +1 -1
  103. package/dist/types/src/internal/Entity/model.d.ts +3 -2
  104. package/dist/types/src/internal/Entity/model.d.ts.map +1 -1
  105. package/dist/types/src/internal/Filter/match.d.ts.map +1 -1
  106. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +34 -8
  107. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -1
  108. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -1
  109. package/dist/types/src/internal/Obj/atoms.d.ts.map +1 -1
  110. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -1
  111. package/dist/types/src/internal/Query/pretty.d.ts.map +1 -1
  112. package/dist/types/src/internal/Query/query-result-effect.d.ts.map +1 -1
  113. package/dist/types/src/internal/common/proxy/make-object.d.ts +13 -0
  114. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -1
  115. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -1
  116. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -1
  117. package/dist/types/src/internal/common/proxy/typed-handler.d.ts +12 -0
  118. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -1
  119. package/dist/types/src/internal/common/types/index.d.ts +1 -0
  120. package/dist/types/src/internal/common/types/index.d.ts.map +1 -1
  121. package/dist/types/src/internal/common/types/model-symbols.d.ts +5 -0
  122. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -1
  123. package/dist/types/src/internal/common/types/projection.d.ts +32 -0
  124. package/dist/types/src/internal/common/types/projection.d.ts.map +1 -0
  125. package/dist/types/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +40 -35
  127. package/src/Aggregate.ts +105 -0
  128. package/src/Blob.test.ts +45 -0
  129. package/src/Blob.ts +205 -0
  130. package/src/Database.ts +207 -17
  131. package/src/Err.ts +36 -0
  132. package/src/Feed.test.ts +188 -0
  133. package/src/Feed.ts +238 -62
  134. package/src/Filter.ts +28 -10
  135. package/src/Hypergraph.ts +18 -0
  136. package/src/Json.ts +1 -0
  137. package/src/Obj.test.ts +2 -2
  138. package/src/Obj.ts +21 -1
  139. package/src/Order.ts +16 -9
  140. package/src/Query.test.ts +319 -2
  141. package/src/Query.ts +165 -51
  142. package/src/Relation.ts +14 -0
  143. package/src/Type.ts +5 -6
  144. package/src/index.ts +2 -0
  145. package/src/internal/Entity/api.ts +11 -1
  146. package/src/internal/Entity/model.ts +3 -0
  147. package/src/internal/Filter/match.ts +30 -1
  148. package/src/internal/JsonSchema/json-schema-type.ts +14 -2
  149. package/src/internal/JsonSchema/json-schema.test.ts +28 -1
  150. package/src/internal/JsonSchema/json-schema.ts +33 -6
  151. package/src/internal/Obj/atoms.ts +4 -2
  152. package/src/internal/Obj/json-serializer.test.ts +162 -2
  153. package/src/internal/Obj/json-serializer.ts +6 -0
  154. package/src/internal/Query/pretty.ts +19 -1
  155. package/src/internal/Query/query-result-effect.ts +2 -4
  156. package/src/internal/Ref/atoms.ts +1 -1
  157. package/src/internal/common/proxy/change-context.ts +1 -1
  158. package/src/internal/common/proxy/make-object.ts +42 -3
  159. package/src/internal/common/proxy/reactive.ts +5 -0
  160. package/src/internal/common/proxy/symbols.ts +1 -0
  161. package/src/internal/common/proxy/typed-handler.ts +71 -29
  162. package/src/internal/common/types/index.ts +1 -0
  163. package/src/internal/common/types/model-symbols.ts +6 -0
  164. package/src/internal/common/types/projection.ts +45 -0
  165. package/src/testing/test-data.ts +14 -14
  166. package/dist/lib/neutral/Annotation.mjs +0 -90
  167. package/dist/lib/neutral/Annotation.mjs.map +0 -7
  168. package/dist/lib/neutral/Database.mjs +0 -42
  169. package/dist/lib/neutral/Database.mjs.map +0 -7
  170. package/dist/lib/neutral/Entity.mjs +0 -76
  171. package/dist/lib/neutral/Entity.mjs.map +0 -7
  172. package/dist/lib/neutral/Err.mjs +0 -16
  173. package/dist/lib/neutral/Err.mjs.map +0 -7
  174. package/dist/lib/neutral/Feed.mjs +0 -50
  175. package/dist/lib/neutral/Feed.mjs.map +0 -7
  176. package/dist/lib/neutral/Filter.mjs +0 -72
  177. package/dist/lib/neutral/Filter.mjs.map +0 -7
  178. package/dist/lib/neutral/Format.mjs +0 -82
  179. package/dist/lib/neutral/Format.mjs.map +0 -7
  180. package/dist/lib/neutral/JsonSchema.mjs +0 -18
  181. package/dist/lib/neutral/JsonSchema.mjs.map +0 -7
  182. package/dist/lib/neutral/Key.mjs +0 -16
  183. package/dist/lib/neutral/Key.mjs.map +0 -7
  184. package/dist/lib/neutral/Migration.mjs +0 -18
  185. package/dist/lib/neutral/Migration.mjs.map +0 -7
  186. package/dist/lib/neutral/Obj.mjs +0 -128
  187. package/dist/lib/neutral/Obj.mjs.map +0 -7
  188. package/dist/lib/neutral/Order.mjs +0 -16
  189. package/dist/lib/neutral/Order.mjs.map +0 -7
  190. package/dist/lib/neutral/Query.mjs +0 -38
  191. package/dist/lib/neutral/Query.mjs.map +0 -7
  192. package/dist/lib/neutral/QueryResult.mjs +0 -2
  193. package/dist/lib/neutral/QueryResult.mjs.map +0 -7
  194. package/dist/lib/neutral/Ref.mjs +0 -25
  195. package/dist/lib/neutral/Ref.mjs.map +0 -7
  196. package/dist/lib/neutral/Registry.mjs +0 -14
  197. package/dist/lib/neutral/Registry.mjs.map +0 -7
  198. package/dist/lib/neutral/Relation.mjs +0 -97
  199. package/dist/lib/neutral/Relation.mjs.map +0 -7
  200. package/dist/lib/neutral/Scope.mjs +0 -12
  201. package/dist/lib/neutral/Scope.mjs.map +0 -7
  202. package/dist/lib/neutral/Tag.mjs +0 -32
  203. package/dist/lib/neutral/Tag.mjs.map +0 -7
  204. package/dist/lib/neutral/Text.mjs +0 -25
  205. package/dist/lib/neutral/Text.mjs.map +0 -7
  206. package/dist/lib/neutral/Type.mjs +0 -65
  207. package/dist/lib/neutral/Type.mjs.map +0 -7
  208. package/dist/lib/neutral/chunk-2HKGAQM4.mjs +0 -1394
  209. package/dist/lib/neutral/chunk-2HKGAQM4.mjs.map +0 -7
  210. package/dist/lib/neutral/chunk-2ZHECXUR.mjs +0 -95
  211. package/dist/lib/neutral/chunk-2ZHECXUR.mjs.map +0 -7
  212. package/dist/lib/neutral/chunk-3KTE2Y7Q.mjs +0 -336
  213. package/dist/lib/neutral/chunk-3KTE2Y7Q.mjs.map +0 -7
  214. package/dist/lib/neutral/chunk-3TN2VMI4.mjs +0 -714
  215. package/dist/lib/neutral/chunk-3TN2VMI4.mjs.map +0 -7
  216. package/dist/lib/neutral/chunk-42L4HJ3Z.mjs +0 -104
  217. package/dist/lib/neutral/chunk-42L4HJ3Z.mjs.map +0 -7
  218. package/dist/lib/neutral/chunk-4A2NWKRJ.mjs +0 -747
  219. package/dist/lib/neutral/chunk-4A2NWKRJ.mjs.map +0 -7
  220. package/dist/lib/neutral/chunk-7LOUAPYZ.mjs +0 -25
  221. package/dist/lib/neutral/chunk-7LOUAPYZ.mjs.map +0 -7
  222. package/dist/lib/neutral/chunk-ACFAOTKJ.mjs +0 -1531
  223. package/dist/lib/neutral/chunk-ACFAOTKJ.mjs.map +0 -7
  224. package/dist/lib/neutral/chunk-BEFR7LEA.mjs +0 -170
  225. package/dist/lib/neutral/chunk-BEFR7LEA.mjs.map +0 -7
  226. package/dist/lib/neutral/chunk-BXIKXT7Q.mjs +0 -89
  227. package/dist/lib/neutral/chunk-BXIKXT7Q.mjs.map +0 -7
  228. package/dist/lib/neutral/chunk-C57XMMBY.mjs +0 -206
  229. package/dist/lib/neutral/chunk-C57XMMBY.mjs.map +0 -7
  230. package/dist/lib/neutral/chunk-C62JYFAD.mjs +0 -183
  231. package/dist/lib/neutral/chunk-C62JYFAD.mjs.map +0 -7
  232. package/dist/lib/neutral/chunk-FSGX2R62.mjs +0 -48
  233. package/dist/lib/neutral/chunk-FSGX2R62.mjs.map +0 -7
  234. package/dist/lib/neutral/chunk-HBXT3GSB.mjs +0 -459
  235. package/dist/lib/neutral/chunk-HBXT3GSB.mjs.map +0 -7
  236. package/dist/lib/neutral/chunk-IQR45HAD.mjs +0 -31
  237. package/dist/lib/neutral/chunk-IQR45HAD.mjs.map +0 -7
  238. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  239. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  240. package/dist/lib/neutral/chunk-KCBW4BR6.mjs +0 -424
  241. package/dist/lib/neutral/chunk-KCBW4BR6.mjs.map +0 -7
  242. package/dist/lib/neutral/chunk-L3E5IXAE.mjs +0 -575
  243. package/dist/lib/neutral/chunk-L3E5IXAE.mjs.map +0 -7
  244. package/dist/lib/neutral/chunk-PRC4FEKJ.mjs +0 -56
  245. package/dist/lib/neutral/chunk-PRC4FEKJ.mjs.map +0 -7
  246. package/dist/lib/neutral/chunk-SCT6FFCR.mjs +0 -351
  247. package/dist/lib/neutral/chunk-SCT6FFCR.mjs.map +0 -7
  248. package/dist/lib/neutral/chunk-TOCVVFK2.mjs +0 -75
  249. package/dist/lib/neutral/chunk-TOCVVFK2.mjs.map +0 -7
  250. package/dist/lib/neutral/chunk-U53LSQQA.mjs +0 -41
  251. package/dist/lib/neutral/chunk-U53LSQQA.mjs.map +0 -7
  252. package/dist/lib/neutral/chunk-UGFFV2FR.mjs +0 -27
  253. package/dist/lib/neutral/chunk-UGFFV2FR.mjs.map +0 -7
  254. package/dist/lib/neutral/chunk-UWLP4RFM.mjs +0 -7
  255. package/dist/lib/neutral/chunk-UWLP4RFM.mjs.map +0 -7
  256. package/dist/lib/neutral/chunk-UZHCQ6NI.mjs +0 -283
  257. package/dist/lib/neutral/chunk-UZHCQ6NI.mjs.map +0 -7
  258. package/dist/lib/neutral/chunk-WISOH2XH.mjs +0 -36
  259. package/dist/lib/neutral/chunk-WISOH2XH.mjs.map +0 -7
  260. package/dist/lib/neutral/chunk-WKIT2YY5.mjs +0 -34
  261. package/dist/lib/neutral/chunk-WKIT2YY5.mjs.map +0 -7
  262. package/dist/lib/neutral/chunk-XB6ISRAO.mjs +0 -271
  263. package/dist/lib/neutral/chunk-XB6ISRAO.mjs.map +0 -7
  264. package/dist/lib/neutral/chunk-XXL42WCB.mjs +0 -84
  265. package/dist/lib/neutral/chunk-XXL42WCB.mjs.map +0 -7
  266. package/dist/lib/neutral/chunk-XXWK4J53.mjs +0 -117
  267. package/dist/lib/neutral/chunk-XXWK4J53.mjs.map +0 -7
  268. package/dist/lib/neutral/index.mjs +0 -115
  269. package/dist/lib/neutral/index.mjs.map +0 -7
  270. package/dist/lib/neutral/internal/index.mjs +0 -581
  271. package/dist/lib/neutral/internal/index.mjs.map +0 -7
  272. package/dist/lib/neutral/meta.json +0 -1
  273. package/dist/lib/neutral/testing/index.mjs +0 -477
  274. package/dist/lib/neutral/testing/index.mjs.map +0 -7
@@ -0,0 +1,86 @@
1
+ import type * as EffectTypes from 'effect/Types';
2
+ import type { QueryAST } from '@dxos/echo-protocol';
3
+ import type * as Order from './Order';
4
+ import type * as Query from './Query';
5
+ /**
6
+ * The aggregate spec sans name; the name is supplied by the `Query.aggregate` record key. A tagged
7
+ * union per kind so `property`/`limit`/`order` are present exactly when the kind uses them (no
8
+ * unused optional fields to guard against at read sites).
9
+ */
10
+ export type Spec = {
11
+ kind: 'group';
12
+ property: string;
13
+ } | {
14
+ kind: 'max';
15
+ property: string;
16
+ } | {
17
+ kind: 'min';
18
+ property: string;
19
+ } | {
20
+ kind: 'items';
21
+ limit?: number;
22
+ order?: readonly QueryAST.Order[];
23
+ } | {
24
+ kind: 'count';
25
+ };
26
+ export declare const AggregateTypeId: '~@dxos/echo/Aggregate';
27
+ export type AggregateTypeId = typeof AggregateTypeId;
28
+ /**
29
+ * A per-group aggregate declaration, materialised as a top-level field on the flat result record
30
+ * `Query.aggregate` produces and orderable via a following `orderBy(Order.property(name))`. Name it
31
+ * via the record passed to `Query.aggregate({ name: Aggregate.max('created') })`.
32
+ *
33
+ * `T` is the query's element type (so a reduced/grouped property is checked against it); `V` is the
34
+ * value the aggregate produces. {@link group} entries define the grouping keys; a record with no
35
+ * `group` entries aggregates the entire input into a single row.
36
+ */
37
+ export interface Aggregate<T, V> {
38
+ readonly [AggregateTypeId]: {
39
+ element: T;
40
+ value: V;
41
+ };
42
+ spec: Spec;
43
+ }
44
+ export type Any = Aggregate<any, any>;
45
+ /** Extracts the value type a {@link Aggregate} produces. */
46
+ export type ValueOf<A> = A extends Aggregate<any, infer V> ? V : never;
47
+ /** Computes the flat result type of `Query.aggregate(aggregates)` for a given aggregate record `A`. */
48
+ export type AggregationResult<A extends Record<string, Any>> = EffectTypes.Simplify<Query.AggregateResult & {
49
+ readonly [N in keyof A]: ValueOf<A[N]>;
50
+ }>;
51
+ /**
52
+ * Group members by a scalar property. The record key names the result field carrying the coerced
53
+ * group-key value; multiple `group` entries form a composite key. Members whose property is missing,
54
+ * `null`, `undefined`, or non-scalar group under the `null` key, so the field value is `T[K] | null`.
55
+ */
56
+ export declare const group: <T, K extends keyof T & string>(property: K) => Aggregate<T, T[K] | null>;
57
+ /**
58
+ * Aggregate the maximum of a scalar property across the group's members.
59
+ * `T` is inferred from the `Query.aggregate` context, so `property` is checked against the query's
60
+ * element type (like {@link Order.property}).
61
+ */
62
+ export declare const max: <T, K extends keyof T & string>(property: K) => Aggregate<T, T[K] | null>;
63
+ /**
64
+ * Aggregate the minimum of a scalar property across the group's members.
65
+ */
66
+ export declare const min: <T, K extends keyof T & string>(property: K) => Aggregate<T, T[K] | null>;
67
+ /**
68
+ * Collect the group's members, optionally ordered by `order` and capped to `limit` per group.
69
+ * Opt-in — groups carry no members unless this aggregate is declared.
70
+ *
71
+ * `order` is this aggregate's own per-group ordering — independent of any `orderBy` elsewhere in
72
+ * the query, which orders the whole input stream (and, following `aggregate`, the resulting
73
+ * groups), not this aggregate's member selection. Without `order`, members keep whatever order
74
+ * they arrived in from a preceding `orderBy` (unspecified if there is none), so a per-group
75
+ * top-`limit` moved position in the chain would silently change; declaring `order` here makes the
76
+ * ordering explicit and local to this aggregate regardless of where it sits.
77
+ */
78
+ export declare const items: <T>(options?: {
79
+ limit?: number;
80
+ order?: Order.Any[];
81
+ }) => Aggregate<T, T[]>;
82
+ /**
83
+ * Count the group's members. Opt-in — groups carry no count unless this aggregate is declared.
84
+ */
85
+ export declare const count: <T>() => Aggregate<T, number>;
86
+ //# sourceMappingURL=Aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Aggregate.d.ts","sourceRoot":"","sources":["../../../src/Aggregate.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,WAAW,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AAEtC;;;;GAIG;AACH,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB,eAAO,MAAM,eAAe,EAAG,uBAAgC,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,EAAE,CAAC;IAC7B,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC;IAErD,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAEtC,4DAA4D;AAC5D,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEvE,uGAAuG;AACvG,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CACjF,KAAK,CAAC,eAAe,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CACnE,CAAC;AAcF;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,KAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAC1C,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,KAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAC1C,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,KAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAC1C,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,YAAY;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAA;CAAE,KAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CACmB,CAAC;AAEjH;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,OAAK,SAAS,CAAC,CAAC,EAAE,MAAM,CAA0C,CAAC"}
@@ -0,0 +1,153 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import * as Option from 'effect/Option';
3
+ import * as Schema from 'effect/Schema';
4
+ import * as Database from './Database';
5
+ import * as Err from './Err';
6
+ import * as Obj from './Obj';
7
+ import * as Type from './Type';
8
+ /**
9
+ * Inline blob data: bytes stored directly on the ECHO object.
10
+ */
11
+ export declare const InlineData: Schema.TaggedStruct<"inline", {
12
+ bytes: Schema.declare<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, readonly [], never>;
13
+ }>;
14
+ /**
15
+ * External blob data: bytes stored by a registered blob backend, addressed by `uri`.
16
+ */
17
+ export declare const ExternalData: Schema.TaggedStruct<"external", {
18
+ /**
19
+ * URI locating the bytes. The scheme selects the backend at read time (e.g. `ni:///sha-256;…` for
20
+ * the edge backend — an RFC 6920 content digest, not a backend name — or `wnfs://…` for the
21
+ * plugin-wnfs extension), resolved via the scheme→backend map built from `registerBlobBackend`
22
+ * calls. Core code never parses or constructs backend-specific URIs beyond reading the scheme.
23
+ *
24
+ * @see {@link https://www.rfc-editor.org/rfc/rfc6920 RFC 6920} for the `ni:` URI format.
25
+ */
26
+ uri: typeof Schema.String;
27
+ }>;
28
+ export declare const BlobData: Schema.Union<[Schema.TaggedStruct<"inline", {
29
+ bytes: Schema.declare<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, readonly [], never>;
30
+ }>, Schema.TaggedStruct<"external", {
31
+ /**
32
+ * URI locating the bytes. The scheme selects the backend at read time (e.g. `ni:///sha-256;…` for
33
+ * the edge backend — an RFC 6920 content digest, not a backend name — or `wnfs://…` for the
34
+ * plugin-wnfs extension), resolved via the scheme→backend map built from `registerBlobBackend`
35
+ * calls. Core code never parses or constructs backend-specific URIs beyond reading the scheme.
36
+ *
37
+ * @see {@link https://www.rfc-editor.org/rfc/rfc6920 RFC 6920} for the `ni:` URI format.
38
+ */
39
+ uri: typeof Schema.String;
40
+ }>]>;
41
+ export type BlobData = Schema.Schema.Type<typeof BlobData>;
42
+ declare const Blob_base: Type.ObjClass<Blob, {
43
+ readonly type?: string | undefined;
44
+ readonly size: number;
45
+ readonly data: {
46
+ readonly _tag: "inline";
47
+ readonly bytes: Uint8Array<ArrayBufferLike>;
48
+ } | {
49
+ readonly _tag: "external";
50
+ readonly uri: string;
51
+ };
52
+ }, {}>;
53
+ /**
54
+ * Runtime schema for a Blob object.
55
+ *
56
+ * NOTE: This export shadows the DOM `Blob` global within modules that import it as a namespace.
57
+ * Code that needs the DOM class should use `globalThis.Blob` explicitly.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const blob = yield* Blob.fromBytes(bytes, { type: 'image/png' });
62
+ * ```
63
+ */
64
+ export declare class Blob extends Blob_base {
65
+ }
66
+ /**
67
+ * Storage backend names, selected at write time via {@link FromBytesOptions.storage}. Call sites
68
+ * always use these constants, never raw string literals. Extensions (e.g. plugin-wnfs) define
69
+ * their own storage names in their own package — core code knows nothing of them.
70
+ *
71
+ * Distinct from {@link Scheme}: a storage name picks *where* to write, a URI scheme describes
72
+ * *what the identifier is* at read time. They coincide for backends with no content-addressing
73
+ * (e.g. wnfs uses `'wnfs'` for both), but the edge backend's storage name (`'edge'`) differs from
74
+ * its URI scheme (`Scheme.ni`) because the identifier it produces is a content hash, not an
75
+ * edge-specific address.
76
+ */
77
+ export declare const Storage: {
78
+ readonly inline: 'inline';
79
+ readonly edge: 'edge';
80
+ };
81
+ export type Storage = (typeof Storage)[keyof typeof Storage];
82
+ /**
83
+ * URI schemes claimed by core backends (see `BlobBackend.schemes` in `@dxos/echo-protocol`).
84
+ *
85
+ * `ni` marks an {@link https://www.rfc-editor.org/rfc/rfc6920 RFC 6920} Named Information URI whose
86
+ * authority is empty and whose path carries a registered hash-algorithm name plus a base64url-encoded
87
+ * digest (e.g. `ni:///sha-256;UyaQNQIUxQKgg1jVMKMbg1Yr8Rrb2Y3RaOx2N0mVJhc`, produced by the edge
88
+ * backend). The scheme names *what the identifier is* — a content digest over the complete blob —
89
+ * not which backend wrote it, so any backend or cache that can resolve that digest may claim it.
90
+ * The URI is an identity claim, not a retrievability promise; transport is selected by the registered
91
+ * backend at read time.
92
+ *
93
+ * Extensions (e.g. plugin-wnfs) define their own schemes in their own package.
94
+ */
95
+ export declare const Scheme: {
96
+ readonly ni: 'ni';
97
+ };
98
+ export type Scheme = (typeof Scheme)[keyof typeof Scheme];
99
+ export declare const MAX_INLINE_SIZE: number;
100
+ /**
101
+ * Creates a new blob object. Does not add it to the database — see {@link fromBytes}.
102
+ */
103
+ export declare const make: (props: Obj.MakeProps<typeof Blob>) => Blob;
104
+ /**
105
+ * Creates an inline {@link BlobData} variant that embeds raw bytes on the ECHO object.
106
+ */
107
+ export declare const inlineData: (bytes: Uint8Array) => BlobData;
108
+ /**
109
+ * Creates an external {@link BlobData} variant that references bytes held by a registered backend.
110
+ * @param uri - Backend-scoped URI, e.g. as returned by a `BlobBackend.put` call.
111
+ */
112
+ export declare const externalData: (uri: string) => BlobData;
113
+ export interface FromBytesOptions {
114
+ /** MIME type. */
115
+ type?: string;
116
+ /**
117
+ * Storage backend name. Defaults to the registry's configured default (initially `'inline'`;
118
+ * `@dxos/client` marks `'edge'` as the default when configured).
119
+ */
120
+ storage?: Storage | (string & {});
121
+ }
122
+ /**
123
+ * Hashes and uploads `bytes` via the chosen storage backend (a no-op for `inline`), returning an
124
+ * un-added Blob object. The caller is responsible for adding it to the database.
125
+ *
126
+ * @example
127
+ * ```ts
128
+ * const blob = yield* Blob.fromBytes(bytes, { type: 'image/png' });
129
+ * yield* Database.add(blob);
130
+ * ```
131
+ */
132
+ export declare const fromBytes: (bytes: Uint8Array, options?: FromBytesOptions) => Effect.Effect<Blob, Err.BlobTooLargeError | Err.BlobWriteError, Database.Service>;
133
+ /**
134
+ * Loads a blob's bytes. Inline: read directly off the object. External: dispatched to the
135
+ * registered backend for the URI's scheme.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * const bytes = yield* Blob.read(blob);
140
+ * ```
141
+ */
142
+ export declare const read: (blob: Blob) => Effect.Effect<Uint8Array, Err.BlobNotAvailableError, Database.Service>;
143
+ /**
144
+ * Checks whether a blob's bytes are currently available.
145
+ */
146
+ export declare const exists: (blob: Blob) => Effect.Effect<boolean, never, Database.Service>;
147
+ /**
148
+ * Returns a renderable URL for the blob: inline blobs resolve to a `data:` URL; external blobs
149
+ * are resolved by the registered backend's `getUrl`, if it implements one.
150
+ */
151
+ export declare const url: (blob: Blob) => Effect.Effect<Option.Option<string>, never, Database.Service>;
152
+ export {};
153
+ //# sourceMappingURL=Blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blob.d.ts","sourceRoot":"","sources":["../../../src/Blob.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,UAAU;;EAErB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB;;;;;;;OAOG;;EAEH,CAAC;AAEH,eAAO,MAAM,QAAQ;;;IAXnB;;;;;;;OAOG;;IAIyD,CAAC;AAC/D,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,CAAC;;;;;;;;;;;;AAE3D;;;;;;;;;;GAUG;AACH,qBAAa,IAAK,SAAQ,SAUzB;CAAG;AAMJ;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO;aAAK,MAAM,EAAE,QAAQ;aAAE,IAAI,EAAE,MAAM;CAAW,CAAC;AACnE,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM;aAAK,EAAE,EAAE,IAAI;CAAW,CAAC;AAC5C,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AAM1D,eAAO,MAAM,eAAe,QAAkB,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,IAAI,UAAW,GAAG,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,KAAG,IAA6B,CAAC;AAEvF;;GAEG;AACH,eAAO,MAAM,UAAU,UAAW,UAAU,KAAG,QAAuC,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAS,MAAM,KAAG,QAAuC,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;CACnC;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,UACb,UAAU,YACP,gBAAgB,KACzB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,OAAO,CAWxC,CAAC;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,SAAU,IAAI,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,OAAO,CAcjE,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,MAAM,SAAU,IAAI,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAG/E,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,GAAG,SAAU,IAAI,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAIxD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Blob.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blob.test.d.ts","sourceRoot":"","sources":["../../../src/Blob.test.ts"],"names":[],"mappings":""}
@@ -2,7 +2,10 @@ import * as Context from 'effect/Context';
2
2
  import * as Effect from 'effect/Effect';
3
3
  import * as Layer from 'effect/Layer';
4
4
  import * as Schema from 'effect/Schema';
5
+ import * as Stream from 'effect/Stream';
6
+ import type { CleanupFn } from '@dxos/async';
5
7
  import { type SpaceId, type URI } from '@dxos/keys';
8
+ import type * as Blob from './Blob';
6
9
  import type * as Entity from './Entity';
7
10
  import * as Err from './Err';
8
11
  import type * as Feed from './Feed';
@@ -42,6 +45,13 @@ export type AddOptions = {
42
45
  * @default 'linked-doc'
43
46
  */
44
47
  placeIn?: ObjectPlacement;
48
+ /**
49
+ * Append the object to this feed instead of the automerge-backed space database. The object is
50
+ * returned synchronously (a live feed object) and persisted in the background — confirm the write
51
+ * completed with {@link Database.flush}. Synchronous alternative to the async
52
+ * {@link Database.appendToFeed}; `placeIn` is ignored when set.
53
+ */
54
+ to?: Feed.Feed;
45
55
  };
46
56
  /**
47
57
  * Rejects Type entities from {@link Database.add} at compile time via their `[KindId]` brand. Used
@@ -71,6 +81,17 @@ export type FlushOptions = {
71
81
  */
72
82
  updates?: boolean;
73
83
  };
84
+ /**
85
+ * A caller-owned, writable **independent instance** of one object bound to one branch: a distinct
86
+ * object instance (not a UI surface), separate from the device-global canonical object.
87
+ * @see Database.branch
88
+ */
89
+ export type BranchBinding<T extends Obj.Unknown = Obj.Unknown> = {
90
+ /** Live object bound to the branch document (`'main'` -> the canonical live object). */
91
+ readonly object: T;
92
+ /** Release the binding (drops the doc-handle listener; never deletes the branch document). */
93
+ dispose(): void;
94
+ };
74
95
  /**
75
96
  * Identifier denoting an ECHO Database.
76
97
  */
@@ -113,6 +134,8 @@ export interface Database extends Queryable {
113
134
  *
114
135
  * Only Object and Relation entities are accepted. To persist a Type definition use
115
136
  * {@link addType} — passing a Type entity is rejected at compile time (and at runtime).
137
+ *
138
+ * Pass `{ to: feed }` to append to a feed instead (synchronous; confirm with {@link flush}).
116
139
  */
117
140
  add<T extends Entity.Unknown = Entity.Unknown>(obj: T & RejectTypeEntity<T>, opts?: AddOptions): T;
118
141
  /**
@@ -144,13 +167,48 @@ export interface Database extends Queryable {
144
167
  */
145
168
  flush(opts?: FlushOptions): Promise<void>;
146
169
  /**
147
- * Removes feed items by ID.
170
+ * The device-global current branch for an object id (`'main'` by default).
171
+ * @deprecated Prefer `Obj.getBranch(obj)` — it takes the object and reports the branch of that
172
+ * specific instance (including `db.branch()` independent instances), not just the device selection.
148
173
  */
149
- removeFeedItemsByIds(feed: Feed.Feed, ids: string[]): Promise<void>;
174
+ getCurrentBranch(objectId: string): string;
175
+ /**
176
+ * An immutable snapshot of the object at the given historical heads — a detached instance, not a
177
+ * pin on the live object. Prefer `Obj.getVersion(obj, heads)`.
178
+ */
179
+ getVersion<T extends Obj.Unknown>(obj: T, heads: readonly string[]): Obj.Snapshot<T>;
180
+ /** All branch names available for an object, including the implicit `'main'` (always first). */
181
+ listBranches(objectId: string): string[];
182
+ /**
183
+ * Fork the object and its referenced subtree into a new branch (does not switch to it).
184
+ * @param opts.fromHeads Fork from a historical frontier instead of the tip (a bare heads array
185
+ * applies to the root only; a map forks each member from its own frontier).
186
+ */
187
+ createBranch(rootObjectId: string, name: string, opts?: {
188
+ fromHeads?: readonly string[] | Record<string, readonly string[]>;
189
+ }): Promise<void>;
190
+ /** Switch the object's subtree to a branch (or back to `'main'`). Device-local; cascades to children. */
191
+ switchBranch(rootObjectId: string, name: string): Promise<void>;
192
+ /** Merge a branch back into main across the subtree, then switch back to main. */
193
+ mergeBranch(rootObjectId: string, name: string, opts?: {
194
+ deleteAfter?: boolean;
195
+ }): Promise<void>;
196
+ /** Fold main's changes into a branch across the subtree (the reverse of {@link mergeBranch}). */
197
+ syncBranch(rootObjectId: string, name: string): Promise<void>;
198
+ /** Delete a branch (its documents lose their sync reference). Cannot delete `'main'`. */
199
+ deleteBranch(rootObjectId: string, name: string): void;
200
+ /**
201
+ * Create a caller-owned, writable binding to one branch of one object — a live object whose reads
202
+ * resolve the branch document and whose writes land on the branch document only. Multiple bindings
203
+ * to different branches of the same object may coexist; the device-global current branch and other
204
+ * bindings are unaffected. Binding to `'main'` returns the canonical live object. Bindings are
205
+ * ephemeral and never persisted — the caller must `dispose()`.
206
+ */
207
+ branch<T extends Obj.Unknown>(obj: T, name: string): Promise<BranchBinding<T>>;
150
208
  /**
151
- * Queries items in a feed associated with this database.
209
+ * Removes feed items by ID.
152
210
  */
153
- queryFeed(feed: Feed.Feed, queryOrFilter: Query.Any | Filter.Any): QueryResult.QueryResult<any>;
211
+ removeFeedItemsByIds(feed: Feed.Feed, ids: string[]): Promise<void>;
154
212
  /**
155
213
  * Syncs a feed with the server.
156
214
  */
@@ -159,6 +217,45 @@ export interface Database extends Queryable {
159
217
  * Returns queue replication backlog for the feed's namespace.
160
218
  */
161
219
  getFeedSyncState(feed: Feed.Feed): Promise<Feed.SyncState>;
220
+ /**
221
+ * Disposes and drops the in-memory handle (live working-set / core cache) for a feed, so the next
222
+ * access re-reads it cold. Advanced cache-control; primarily used by tests to model a spawned
223
+ * process reading the feed with an empty in-memory cache. Public (not `_`-prefixed) so it survives
224
+ * declaration stripping for cross-package test use.
225
+ */
226
+ evictFeedHandle(feed: Feed.Feed): Promise<void>;
227
+ /**
228
+ * Hashes and uploads `bytes` via the chosen storage backend, returning an un-added Blob object.
229
+ * Rejects with `Err.BlobTooLargeError` (over inline storage's fixed cap, or the backend's own
230
+ * `maxSize`), `Err.BlobWriteError` (backend upload failure), or `Err.BlobNotAvailableError`
231
+ * (`reason: 'backend-not-registered'` — the requested storage name has no registered backend).
232
+ */
233
+ createBlob(bytes: Uint8Array, options?: {
234
+ type?: string;
235
+ storage?: string;
236
+ }): Promise<Blob.Blob>;
237
+ /**
238
+ * Loads a blob's bytes. Rejects with `Err.BlobNotAvailableError` if the backend for the blob's
239
+ * storage scheme is not registered, offline, or cannot find the bytes.
240
+ */
241
+ readBlob(blob: Blob.Blob): Promise<Uint8Array>;
242
+ /**
243
+ * Checks whether a blob's bytes are currently available.
244
+ */
245
+ blobExists(blob: Blob.Blob): Promise<boolean>;
246
+ /**
247
+ * Returns a renderable URL for the blob, if one can be produced.
248
+ */
249
+ getBlobUrl(blob: Blob.Blob): Promise<string | undefined>;
250
+ /**
251
+ * Get the current combined (automerge documents + feed blocks) sync state, reported against a
252
+ * single remote peer.
253
+ */
254
+ getSyncState(options?: GetSyncStateOptions): Promise<SyncState>;
255
+ /**
256
+ * Subscribe to combined sync state changes.
257
+ */
258
+ subscribeToSyncState(cb: (state: SyncState) => void, options?: GetSyncStateOptions): CleanupFn;
162
259
  }
163
260
  export declare const isDatabase: (obj: unknown) => obj is Database;
164
261
  export declare const Database: Schema.Schema<Database>;
@@ -242,5 +339,57 @@ export declare const query: {
242
339
  <Q extends Query.Any>(query: Q): QueryResult.QueryResultEffect<Query.Type<Q>, never, Service>;
243
340
  <F extends Filter.Any>(filter: F): QueryResult.QueryResultEffect<Filter.Type<F>, never, Service>;
244
341
  };
342
+ /**
343
+ * Sync state of the database in relation to EDGE.
344
+ */
345
+ export interface SyncState {
346
+ /**
347
+ * Total number of documents locally.
348
+ */
349
+ readonly localDocumentCount: number;
350
+ /**
351
+ * Total number of documents on the remote peer.
352
+ */
353
+ readonly remoteDocumentCount: number;
354
+ /**
355
+ * Total number of documents across this peer and the remote peer.
356
+ */
357
+ readonly totalDocumentCount: number;
358
+ /**
359
+ * Total number of documents that are not synced.
360
+ * Includes documents that are present only locally, only on the remote peer, or whether the peers have different versions.
361
+ */
362
+ readonly unsyncedDocumentCount: number;
363
+ /**
364
+ * Blocks still to pull from remote. 0 when caught up.
365
+ */
366
+ readonly blocksToPull: string;
367
+ /**
368
+ * Unpositioned blocks still to push to remote. 0 when caught up.
369
+ */
370
+ readonly blocksToPush: string;
371
+ /**
372
+ * Total blocks stored locally for this namespace in the space.
373
+ */
374
+ readonly totalBlocks: string;
375
+ }
376
+ /**
377
+ * Options for reading combined sync state.
378
+ */
379
+ export interface GetSyncStateOptions {
380
+ /**
381
+ * Peer to report the automerge document backlog against. Defaults to the EDGE peer.
382
+ * Provide explicitly in local/test topologies where there is no EDGE peer.
383
+ */
384
+ readonly peerId?: string;
385
+ }
386
+ /**
387
+ * Get the current sync state.
388
+ */
389
+ export declare const getSyncState: (options?: GetSyncStateOptions) => Effect.Effect<SyncState, never, Service>;
390
+ /**
391
+ * Subscribe to sync state changes.
392
+ */
393
+ export declare const subscribeToSyncState: (options?: GetSyncStateOptions) => Stream.Stream<SyncState, never, Service>;
245
394
  export {};
246
395
  //# sourceMappingURL=Database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../../src/Database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../../src/Database.ts"],"names":[],"mappings":"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"}
@@ -127,6 +127,122 @@ declare const TextEditNotFoundError_base: {
127
127
  export declare class TextEditNotFoundError extends TextEditNotFoundError_base {
128
128
  constructor(oldString: string, options?: BaseErrorOptions);
129
129
  }
130
+ declare const BlobTooLargeError_base: {
131
+ new (options?: BaseErrorOptions): {
132
+ cause?: unknown;
133
+ stack?: string;
134
+ name: "BlobTooLargeError";
135
+ context: Record<string, unknown>;
136
+ readonly message: string;
137
+ readonly _tag: "BlobTooLargeError";
138
+ };
139
+ isError(error: unknown): error is Error;
140
+ name: "BlobTooLargeError";
141
+ is(error: unknown): error is BaseError;
142
+ wrap(options?: Omit<BaseErrorOptions, 'cause'> & {
143
+ ifTypeDiffers?: boolean;
144
+ }): (error: unknown) => {
145
+ cause?: unknown;
146
+ stack?: string;
147
+ name: "BlobTooLargeError";
148
+ context: Record<string, unknown>;
149
+ readonly message: string;
150
+ readonly _tag: "BlobTooLargeError";
151
+ };
152
+ extend<Name extends string = string>(name: Name, message?: string): any;
153
+ captureStackTrace(targetObject: object, constructorOpt?: Function): void;
154
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
155
+ stackTraceLimit: number;
156
+ };
157
+ /**
158
+ * Thrown when a blob's bytes exceed the size limit of the storage backend writing them (inline
159
+ * storage's fixed cap, or a registered backend's own `maxSize`).
160
+ */
161
+ export declare class BlobTooLargeError extends BlobTooLargeError_base {
162
+ constructor(context: {
163
+ size: number;
164
+ limit: number;
165
+ }, options?: BaseErrorOptions);
166
+ }
167
+ /**
168
+ * Reason why a blob's bytes could not be read.
169
+ * - `offline`: The backend's transport failed (e.g. network unavailable).
170
+ * - `not-found`: The backend could not locate the bytes for the given URI.
171
+ * - `backend-not-registered`: No backend is registered for the URI's scheme.
172
+ */
173
+ export type BlobNotAvailableReason = 'offline' | 'not-found' | 'backend-not-registered';
174
+ declare const BlobNotAvailableError_base: {
175
+ new (options?: BaseErrorOptions): {
176
+ cause?: unknown;
177
+ stack?: string;
178
+ name: "BlobNotAvailableError";
179
+ context: Record<string, unknown>;
180
+ readonly message: string;
181
+ readonly _tag: "BlobNotAvailableError";
182
+ };
183
+ isError(error: unknown): error is Error;
184
+ name: "BlobNotAvailableError";
185
+ is(error: unknown): error is BaseError;
186
+ wrap(options?: Omit<BaseErrorOptions, 'cause'> & {
187
+ ifTypeDiffers?: boolean;
188
+ }): (error: unknown) => {
189
+ cause?: unknown;
190
+ stack?: string;
191
+ name: "BlobNotAvailableError";
192
+ context: Record<string, unknown>;
193
+ readonly message: string;
194
+ readonly _tag: "BlobNotAvailableError";
195
+ };
196
+ extend<Name extends string = string>(name: Name, message?: string): any;
197
+ captureStackTrace(targetObject: object, constructorOpt?: Function): void;
198
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
199
+ stackTraceLimit: number;
200
+ };
201
+ /**
202
+ * Thrown when a blob's bytes cannot be read from its backend.
203
+ */
204
+ export declare class BlobNotAvailableError extends BlobNotAvailableError_base {
205
+ constructor(context: {
206
+ backend: string;
207
+ key: string;
208
+ reason: BlobNotAvailableReason;
209
+ }, options?: BaseErrorOptions);
210
+ }
211
+ declare const BlobWriteError_base: {
212
+ new (options?: BaseErrorOptions): {
213
+ cause?: unknown;
214
+ stack?: string;
215
+ name: "BlobWriteError";
216
+ context: Record<string, unknown>;
217
+ readonly message: string;
218
+ readonly _tag: "BlobWriteError";
219
+ };
220
+ isError(error: unknown): error is Error;
221
+ name: "BlobWriteError";
222
+ is(error: unknown): error is BaseError;
223
+ wrap(options?: Omit<BaseErrorOptions, 'cause'> & {
224
+ ifTypeDiffers?: boolean;
225
+ }): (error: unknown) => {
226
+ cause?: unknown;
227
+ stack?: string;
228
+ name: "BlobWriteError";
229
+ context: Record<string, unknown>;
230
+ readonly message: string;
231
+ readonly _tag: "BlobWriteError";
232
+ };
233
+ extend<Name extends string = string>(name: Name, message?: string): any;
234
+ captureStackTrace(targetObject: object, constructorOpt?: Function): void;
235
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
236
+ stackTraceLimit: number;
237
+ };
238
+ /**
239
+ * Thrown when a blob's bytes fail to upload to its backend.
240
+ */
241
+ export declare class BlobWriteError extends BlobWriteError_base {
242
+ constructor(context: {
243
+ backend: string;
244
+ }, options?: BaseErrorOptions);
245
+ }
130
246
  /**
131
247
  * Reason why getting a reactive object from a snapshot failed.
132
248
  * - `no-database`: The snapshot is not associated with a database.
@@ -1 +1 @@
1
- {"version":3,"file":"Err.d.ts","sourceRoot":"","sources":["../../../src/Err.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,qBAAa,mBAAoB,SAAQ,wBAA2D;IAClG,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAErD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,mBAAoB,SAAQ,wBAA2D;IAClG,YAAY,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAEnD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,0BAG1C;IACC,YAAY,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAExD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,0BAAgE;IACzG,YAAY,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAExD;CACF;AAED;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,kBAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExE;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAGrC;IACC,YAAY,OAAO,EAAE;QAAE,MAAM,EAAE,sBAAsB,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,EAE9F;CACF"}
1
+ {"version":3,"file":"Err.d.ts","sourceRoot":"","sources":["../../../src/Err.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,qBAAa,mBAAoB,SAAQ,wBAA2D;IAClG,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAErD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,mBAAoB,SAAQ,wBAA2D;IAClG,YAAY,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAEnD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,0BAG1C;IACC,YAAY,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAExD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,0BAAgE;IACzG,YAAY,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAExD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,sBAA0E;IAC/G,YAAY,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAE/E;CACF;AAED;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,WAAW,GAAG,wBAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExF;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,0BAAkE;IAC3G,YAAY,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,sBAAsB,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAEhH;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAA0D;IAC5F,YAAY,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAEnE;CACF;AAED;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,kBAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExE;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAGrC;IACC,YAAY,OAAO,EAAE;QAAE,MAAM,EAAE,sBAAsB,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,EAE9F;CACF"}