@haverstack/core 0.41.0 → 0.43.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 (317) hide show
  1. package/README.md +124 -64
  2. package/dist/access.d.ts +43 -47
  3. package/dist/access.d.ts.map +1 -1
  4. package/dist/access.js +66 -101
  5. package/dist/access.js.map +1 -1
  6. package/dist/{combine.d.ts → adapter/combine.d.ts} +8 -1
  7. package/dist/adapter/combine.d.ts.map +1 -0
  8. package/dist/{combine.js → adapter/combine.js} +18 -3
  9. package/dist/adapter/combine.js.map +1 -0
  10. package/dist/adapter/index.d.ts +19 -0
  11. package/dist/adapter/index.d.ts.map +1 -0
  12. package/dist/adapter/index.js +16 -0
  13. package/dist/adapter/index.js.map +1 -0
  14. package/dist/adapter/reach.d.ts +14 -0
  15. package/dist/adapter/reach.d.ts.map +1 -0
  16. package/dist/adapter/reach.js +31 -0
  17. package/dist/adapter/reach.js.map +1 -0
  18. package/dist/{sort.d.ts → adapter/sort.d.ts} +20 -20
  19. package/dist/adapter/sort.d.ts.map +1 -0
  20. package/dist/{sort.js → adapter/sort.js} +37 -27
  21. package/dist/adapter/sort.js.map +1 -0
  22. package/dist/associations/identity.d.ts +69 -0
  23. package/dist/associations/identity.d.ts.map +1 -0
  24. package/dist/associations/identity.js +174 -0
  25. package/dist/associations/identity.js.map +1 -0
  26. package/dist/associations/validation.d.ts +83 -0
  27. package/dist/associations/validation.d.ts.map +1 -0
  28. package/dist/associations/validation.js +312 -0
  29. package/dist/associations/validation.js.map +1 -0
  30. package/dist/attachment-records.d.ts +48 -0
  31. package/dist/attachment-records.d.ts.map +1 -0
  32. package/dist/attachment-records.js +52 -0
  33. package/dist/attachment-records.js.map +1 -0
  34. package/dist/collection.d.ts +178 -0
  35. package/dist/collection.d.ts.map +1 -0
  36. package/dist/collection.js +397 -0
  37. package/dist/collection.js.map +1 -0
  38. package/dist/content-match.d.ts +25 -0
  39. package/dist/content-match.d.ts.map +1 -0
  40. package/dist/content-match.js +51 -0
  41. package/dist/content-match.js.map +1 -0
  42. package/dist/content-translation.d.ts +42 -0
  43. package/dist/content-translation.d.ts.map +1 -0
  44. package/dist/content-translation.js +108 -0
  45. package/dist/content-translation.js.map +1 -0
  46. package/dist/did/did.d.ts.map +1 -0
  47. package/dist/{did.js → did/did.js} +3 -4
  48. package/dist/did/did.js.map +1 -0
  49. package/dist/{did-entry.d.ts → did/index.d.ts} +1 -1
  50. package/dist/did/index.d.ts.map +1 -0
  51. package/dist/{did-entry.js → did/index.js} +3 -3
  52. package/dist/did/index.js.map +1 -0
  53. package/dist/errors.d.ts +54 -66
  54. package/dist/errors.d.ts.map +1 -1
  55. package/dist/errors.js +58 -62
  56. package/dist/errors.js.map +1 -1
  57. package/dist/grants.d.ts +20 -44
  58. package/dist/grants.d.ts.map +1 -1
  59. package/dist/grants.js +69 -151
  60. package/dist/grants.js.map +1 -1
  61. package/dist/id.d.ts +13 -31
  62. package/dist/id.d.ts.map +1 -1
  63. package/dist/id.js +13 -31
  64. package/dist/id.js.map +1 -1
  65. package/dist/index.d.ts +13 -9
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +9 -6
  68. package/dist/index.js.map +1 -1
  69. package/dist/install.d.ts +3 -6
  70. package/dist/install.d.ts.map +1 -1
  71. package/dist/install.js +6 -10
  72. package/dist/install.js.map +1 -1
  73. package/dist/lazy.d.ts +13 -0
  74. package/dist/lazy.d.ts.map +1 -0
  75. package/dist/lazy.js +27 -0
  76. package/dist/lazy.js.map +1 -0
  77. package/dist/merge.d.ts +1 -1
  78. package/dist/merge.d.ts.map +1 -1
  79. package/dist/merge.js +6 -12
  80. package/dist/merge.js.map +1 -1
  81. package/dist/migration-steps.d.ts +102 -0
  82. package/dist/migration-steps.d.ts.map +1 -0
  83. package/dist/migration-steps.js +293 -0
  84. package/dist/migration-steps.js.map +1 -0
  85. package/dist/query-validation.d.ts +68 -121
  86. package/dist/query-validation.d.ts.map +1 -1
  87. package/dist/query-validation.js +214 -380
  88. package/dist/query-validation.js.map +1 -1
  89. package/dist/record-changes.d.ts +11 -150
  90. package/dist/record-changes.d.ts.map +1 -1
  91. package/dist/record-changes.js +14 -305
  92. package/dist/record-changes.js.map +1 -1
  93. package/dist/schema.d.ts +18 -7
  94. package/dist/schema.d.ts.map +1 -1
  95. package/dist/schema.js +59 -30
  96. package/dist/schema.js.map +1 -1
  97. package/dist/scoped-stack/authority-snapshot.d.ts +37 -0
  98. package/dist/scoped-stack/authority-snapshot.d.ts.map +1 -0
  99. package/dist/scoped-stack/authority-snapshot.js +49 -0
  100. package/dist/scoped-stack/authority-snapshot.js.map +1 -0
  101. package/dist/scoped-stack/authority.d.ts +169 -0
  102. package/dist/scoped-stack/authority.d.ts.map +1 -0
  103. package/dist/scoped-stack/authority.js +408 -0
  104. package/dist/scoped-stack/authority.js.map +1 -0
  105. package/dist/scoped-stack/family-policy.d.ts +59 -0
  106. package/dist/scoped-stack/family-policy.d.ts.map +1 -0
  107. package/dist/scoped-stack/family-policy.js +68 -0
  108. package/dist/scoped-stack/family-policy.js.map +1 -0
  109. package/dist/scoped-stack/scoped-stack.d.ts +318 -0
  110. package/dist/scoped-stack/scoped-stack.d.ts.map +1 -0
  111. package/dist/scoped-stack/scoped-stack.js +695 -0
  112. package/dist/scoped-stack/scoped-stack.js.map +1 -0
  113. package/dist/scoped-stack/subscription.d.ts +36 -0
  114. package/dist/scoped-stack/subscription.d.ts.map +1 -0
  115. package/dist/scoped-stack/subscription.js +69 -0
  116. package/dist/scoped-stack/subscription.js.map +1 -0
  117. package/dist/stack/arguments.d.ts +27 -0
  118. package/dist/stack/arguments.d.ts.map +1 -0
  119. package/dist/stack/arguments.js +53 -0
  120. package/dist/stack/arguments.js.map +1 -0
  121. package/dist/stack/attachments.d.ts +24 -0
  122. package/dist/stack/attachments.d.ts.map +1 -0
  123. package/dist/stack/attachments.js +113 -0
  124. package/dist/stack/attachments.js.map +1 -0
  125. package/dist/{changes.d.ts → stack/changes.d.ts} +30 -72
  126. package/dist/stack/changes.d.ts.map +1 -0
  127. package/dist/{changes.js → stack/changes.js} +40 -74
  128. package/dist/stack/changes.js.map +1 -0
  129. package/dist/stack/client.d.ts +247 -0
  130. package/dist/stack/client.d.ts.map +1 -0
  131. package/dist/stack/client.js +9 -0
  132. package/dist/stack/client.js.map +1 -0
  133. package/dist/stack/identity-bindings.d.ts.map +1 -0
  134. package/dist/{identity-bindings.js → stack/identity-bindings.js} +5 -14
  135. package/dist/stack/identity-bindings.js.map +1 -0
  136. package/dist/stack/install-app.d.ts +22 -0
  137. package/dist/stack/install-app.d.ts.map +1 -0
  138. package/dist/stack/install-app.js +262 -0
  139. package/dist/stack/install-app.js.map +1 -0
  140. package/dist/stack/integrity.d.ts +94 -0
  141. package/dist/stack/integrity.d.ts.map +1 -0
  142. package/dist/stack/integrity.js +268 -0
  143. package/dist/stack/integrity.js.map +1 -0
  144. package/dist/{limits.d.ts → stack/limits.d.ts} +2 -5
  145. package/dist/stack/limits.d.ts.map +1 -0
  146. package/dist/{limits.js → stack/limits.js} +3 -6
  147. package/dist/stack/limits.js.map +1 -0
  148. package/dist/stack/migrations.d.ts +59 -0
  149. package/dist/stack/migrations.d.ts.map +1 -0
  150. package/dist/stack/migrations.js +141 -0
  151. package/dist/stack/migrations.js.map +1 -0
  152. package/dist/stack/reads.d.ts +69 -0
  153. package/dist/stack/reads.d.ts.map +1 -0
  154. package/dist/stack/reads.js +141 -0
  155. package/dist/stack/reads.js.map +1 -0
  156. package/dist/stack/record-id.d.ts +35 -0
  157. package/dist/stack/record-id.d.ts.map +1 -0
  158. package/dist/stack/record-id.js +82 -0
  159. package/dist/stack/record-id.js.map +1 -0
  160. package/dist/stack/stack.d.ts +444 -0
  161. package/dist/stack/stack.d.ts.map +1 -0
  162. package/dist/stack/stack.js +1339 -0
  163. package/dist/stack/stack.js.map +1 -0
  164. package/dist/stack/system-types.d.ts +16 -0
  165. package/dist/stack/system-types.d.ts.map +1 -0
  166. package/dist/stack/system-types.js +111 -0
  167. package/dist/stack/system-types.js.map +1 -0
  168. package/dist/stack/type-grants.d.ts +20 -0
  169. package/dist/stack/type-grants.d.ts.map +1 -0
  170. package/dist/stack/type-grants.js +69 -0
  171. package/dist/stack/type-grants.js.map +1 -0
  172. package/dist/stack/write-expectation.d.ts +79 -0
  173. package/dist/stack/write-expectation.d.ts.map +1 -0
  174. package/dist/stack/write-expectation.js +71 -0
  175. package/dist/stack/write-expectation.js.map +1 -0
  176. package/dist/stack/write-gate.d.ts +23 -0
  177. package/dist/stack/write-gate.d.ts.map +1 -0
  178. package/dist/stack/write-gate.js +17 -0
  179. package/dist/stack/write-gate.js.map +1 -0
  180. package/dist/testing.d.ts +44 -33
  181. package/dist/testing.d.ts.map +1 -1
  182. package/dist/testing.js +180 -176
  183. package/dist/testing.js.map +1 -1
  184. package/dist/type-handle.d.ts +67 -78
  185. package/dist/type-handle.d.ts.map +1 -1
  186. package/dist/type-handle.js +44 -111
  187. package/dist/type-handle.js.map +1 -1
  188. package/dist/types/adapter.d.ts +282 -0
  189. package/dist/types/adapter.d.ts.map +1 -0
  190. package/dist/types/adapter.js +5 -0
  191. package/dist/types/adapter.js.map +1 -0
  192. package/dist/types/associations.d.ts +140 -0
  193. package/dist/types/associations.d.ts.map +1 -0
  194. package/dist/types/associations.js +6 -0
  195. package/dist/types/associations.js.map +1 -0
  196. package/dist/types/capabilities.d.ts +89 -0
  197. package/dist/types/capabilities.d.ts.map +1 -0
  198. package/dist/types/capabilities.js +5 -0
  199. package/dist/types/capabilities.js.map +1 -0
  200. package/dist/types/events.d.ts +150 -0
  201. package/dist/types/events.d.ts.map +1 -0
  202. package/dist/types/events.js +5 -0
  203. package/dist/types/events.js.map +1 -0
  204. package/dist/types/ids.d.ts +43 -0
  205. package/dist/types/ids.d.ts.map +1 -0
  206. package/dist/types/ids.js +5 -0
  207. package/dist/types/ids.js.map +1 -0
  208. package/dist/types/index.d.ts +19 -0
  209. package/dist/types/index.d.ts.map +1 -0
  210. package/dist/types/index.js +19 -0
  211. package/dist/types/index.js.map +1 -0
  212. package/dist/types/journal.d.ts +47 -0
  213. package/dist/types/journal.d.ts.map +1 -0
  214. package/dist/types/journal.js +5 -0
  215. package/dist/types/journal.js.map +1 -0
  216. package/dist/types/query.d.ts +185 -0
  217. package/dist/types/query.d.ts.map +1 -0
  218. package/dist/types/query.js +10 -0
  219. package/dist/types/query.js.map +1 -0
  220. package/dist/types/records.d.ts +76 -0
  221. package/dist/types/records.d.ts.map +1 -0
  222. package/dist/types/records.js +5 -0
  223. package/dist/types/records.js.map +1 -0
  224. package/dist/types/schema.d.ts +74 -0
  225. package/dist/types/schema.d.ts.map +1 -0
  226. package/dist/types/schema.js +5 -0
  227. package/dist/types/schema.js.map +1 -0
  228. package/dist/types/system.d.ts +161 -0
  229. package/dist/types/system.d.ts.map +1 -0
  230. package/dist/types/system.js +32 -0
  231. package/dist/types/system.js.map +1 -0
  232. package/dist/types/tokens.d.ts +39 -0
  233. package/dist/types/tokens.d.ts.map +1 -0
  234. package/dist/types/tokens.js +5 -0
  235. package/dist/types/tokens.js.map +1 -0
  236. package/dist/validate.d.ts +31 -70
  237. package/dist/validate.d.ts.map +1 -1
  238. package/dist/validate.js +52 -92
  239. package/dist/validate.js.map +1 -1
  240. package/dist/{attachment-download.d.ts → wire/attachment-download.d.ts} +0 -57
  241. package/dist/wire/attachment-download.d.ts.map +1 -0
  242. package/dist/{attachment-download.js → wire/attachment-download.js} +0 -61
  243. package/dist/wire/attachment-download.js.map +1 -0
  244. package/dist/{auth.d.ts → wire/auth.d.ts} +5 -8
  245. package/dist/wire/auth.d.ts.map +1 -0
  246. package/dist/{auth.js → wire/auth.js} +5 -8
  247. package/dist/wire/auth.js.map +1 -0
  248. package/dist/{wire-body.d.ts → wire/body.d.ts} +35 -12
  249. package/dist/wire/body.d.ts.map +1 -0
  250. package/dist/{wire-body.js → wire/body.js} +74 -13
  251. package/dist/wire/body.js.map +1 -0
  252. package/dist/{wire-entry.d.ts → wire/index.d.ts} +12 -12
  253. package/dist/wire/index.d.ts.map +1 -0
  254. package/dist/{wire-entry.js → wire/index.js} +13 -17
  255. package/dist/wire/index.js.map +1 -0
  256. package/dist/wire/record.d.ts +31 -0
  257. package/dist/wire/record.d.ts.map +1 -0
  258. package/dist/{wire-record.js → wire/record.js} +7 -67
  259. package/dist/wire/record.js.map +1 -0
  260. package/dist/{wire-request.d.ts → wire/request.d.ts} +32 -49
  261. package/dist/wire/request.d.ts.map +1 -0
  262. package/dist/{wire-request.js → wire/request.js} +113 -83
  263. package/dist/wire/request.js.map +1 -0
  264. package/package.json +7 -7
  265. package/dist/adapter-entry.d.ts +0 -16
  266. package/dist/adapter-entry.d.ts.map +0 -1
  267. package/dist/adapter-entry.js +0 -14
  268. package/dist/adapter-entry.js.map +0 -1
  269. package/dist/attachment-download.d.ts.map +0 -1
  270. package/dist/attachment-download.js.map +0 -1
  271. package/dist/auth.d.ts.map +0 -1
  272. package/dist/auth.js.map +0 -1
  273. package/dist/changes.d.ts.map +0 -1
  274. package/dist/changes.js.map +0 -1
  275. package/dist/combine.d.ts.map +0 -1
  276. package/dist/combine.js.map +0 -1
  277. package/dist/did-entry.d.ts.map +0 -1
  278. package/dist/did-entry.js.map +0 -1
  279. package/dist/did.d.ts.map +0 -1
  280. package/dist/did.js.map +0 -1
  281. package/dist/identity-bindings.d.ts.map +0 -1
  282. package/dist/identity-bindings.js.map +0 -1
  283. package/dist/limits.d.ts.map +0 -1
  284. package/dist/limits.js.map +0 -1
  285. package/dist/record-id.d.ts +0 -70
  286. package/dist/record-id.d.ts.map +0 -1
  287. package/dist/record-id.js +0 -127
  288. package/dist/record-id.js.map +0 -1
  289. package/dist/scoped-stack.d.ts +0 -549
  290. package/dist/scoped-stack.d.ts.map +0 -1
  291. package/dist/scoped-stack.js +0 -1301
  292. package/dist/scoped-stack.js.map +0 -1
  293. package/dist/sort.d.ts.map +0 -1
  294. package/dist/sort.js.map +0 -1
  295. package/dist/stack-reads.d.ts +0 -38
  296. package/dist/stack-reads.d.ts.map +0 -1
  297. package/dist/stack-reads.js +0 -79
  298. package/dist/stack-reads.js.map +0 -1
  299. package/dist/stack.d.ts +0 -1032
  300. package/dist/stack.d.ts.map +0 -1
  301. package/dist/stack.js +0 -2337
  302. package/dist/stack.js.map +0 -1
  303. package/dist/types.d.ts +0 -1278
  304. package/dist/types.d.ts.map +0 -1
  305. package/dist/types.js +0 -51
  306. package/dist/types.js.map +0 -1
  307. package/dist/wire-body.d.ts.map +0 -1
  308. package/dist/wire-body.js.map +0 -1
  309. package/dist/wire-entry.d.ts.map +0 -1
  310. package/dist/wire-entry.js.map +0 -1
  311. package/dist/wire-record.d.ts +0 -50
  312. package/dist/wire-record.d.ts.map +0 -1
  313. package/dist/wire-record.js.map +0 -1
  314. package/dist/wire-request.d.ts.map +0 -1
  315. package/dist/wire-request.js.map +0 -1
  316. /package/dist/{did.d.ts → did/did.d.ts} +0 -0
  317. /package/dist/{identity-bindings.d.ts → stack/identity-bindings.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoped-stack.js","sourceRoot":"","sources":["../../src/scoped-stack/scoped-stack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * The scoped change feed
3
+ * -------------------------------------------------------
4
+ * How a ScopedStack narrows the stack's change stream to what one
5
+ * requester may read: canRead per event, decided in order, from an
6
+ * authority snapshot held for the life of the subscription.
7
+ * See docs/spec/events.md § Permission scoping.
8
+ */
9
+ import { Subscription } from '../stack/changes.js';
10
+ import type { EmittedChange } from '../stack/changes.js';
11
+ import type { RecordChange, StackRecord, SubscribeOptions } from '../types/index.js';
12
+ import type { AuthoritySnapshot } from './authority-snapshot.js';
13
+ /**
14
+ * A ScopedStack's delivery: canRead per event, from an authority snapshot
15
+ * held for the subscription's life and cleared by any event that moves it.
16
+ * Deliveries are serialized, since the async decision could otherwise
17
+ * reorder changes, and the filter fails closed. See docs/spec/events.md § Permission scoping.
18
+ */
19
+ export declare class ScopedSubscription extends Subscription {
20
+ private readonly snapshot;
21
+ private readonly canRead;
22
+ /** Tail of the delivery chain — see the class comment. */
23
+ private queue;
24
+ constructor(snapshot: AuthoritySnapshot, canRead: (record: StackRecord, snapshot: AuthoritySnapshot) => Promise<boolean>, handler: (change: RecordChange) => void, opts: SubscribeOptions);
25
+ accept(emission: EmittedChange): void;
26
+ /**
27
+ * A held snapshot outlives the write that revokes it unless something
28
+ * clears it. Both writes that can move it — a `_grant` record, or a
29
+ * `_group` roster — arrive here as ordinary events, which is what makes
30
+ * it safe to hold at all; a change that did not emit would strand it.
31
+ */
32
+ private invalidateFor;
33
+ private filterAndDeliver;
34
+ private project;
35
+ }
36
+ //# sourceMappingURL=subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/scoped-stack/subscription.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAKhD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,0DAA0D;IAC1D,OAAO,CAAC,KAAK,CAAoC;gBAG9B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,CACxB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,iBAAiB,KACxB,OAAO,CAAC,OAAO,CAAC,EACrB,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,EACvC,IAAI,EAAE,gBAAgB;IAKxB,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IASrC;;;;;OAKG;IACH,OAAO,CAAC,aAAa;YAIP,gBAAgB;IAgB9B,OAAO,CAAC,OAAO;CAIhB"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * The scoped change feed
3
+ * -------------------------------------------------------
4
+ * How a ScopedStack narrows the stack's change stream to what one
5
+ * requester may read: canRead per event, decided in order, from an
6
+ * authority snapshot held for the life of the subscription.
7
+ * See docs/spec/events.md § Permission scoping.
8
+ */
9
+ import { baseIdOf } from '../schema.js';
10
+ import { Subscription, matchesFilter } from '../stack/changes.js';
11
+ import { presentDeleted } from '../record-changes.js';
12
+ /**
13
+ * A ScopedStack's delivery: canRead per event, from an authority snapshot
14
+ * held for the subscription's life and cleared by any event that moves it.
15
+ * Deliveries are serialized, since the async decision could otherwise
16
+ * reorder changes, and the filter fails closed. See docs/spec/events.md § Permission scoping.
17
+ */
18
+ export class ScopedSubscription extends Subscription {
19
+ snapshot;
20
+ canRead;
21
+ /** Tail of the delivery chain — see the class comment. */
22
+ queue = Promise.resolve();
23
+ constructor(snapshot, canRead, handler, opts) {
24
+ super(handler, opts);
25
+ this.snapshot = snapshot;
26
+ this.canRead = canRead;
27
+ }
28
+ accept(emission) {
29
+ // Invalidation reads every emission, including the ones this
30
+ // subscriber may not see: a revocation the subscriber cannot read is
31
+ // exactly the one that must still expire its cache.
32
+ this.invalidateFor(emission);
33
+ if (!matchesFilter(emission, this.opts.filter))
34
+ return;
35
+ this.queue = this.queue.then(() => this.filterAndDeliver(emission));
36
+ }
37
+ /**
38
+ * A held snapshot outlives the write that revokes it unless something
39
+ * clears it. Both writes that can move it — a `_grant` record, or a
40
+ * `_group` roster — arrive here as ordinary events, which is what makes
41
+ * it safe to hold at all; a change that did not emit would strand it.
42
+ */
43
+ invalidateFor(emission) {
44
+ this.snapshot.invalidateFor(baseIdOf(emission.change.typeId));
45
+ }
46
+ async filterAndDeliver(emission) {
47
+ if (this.isClosed)
48
+ return;
49
+ try {
50
+ if (!(await this.canRead(emission.record, this.snapshot)))
51
+ return;
52
+ }
53
+ catch (err) {
54
+ // Fail closed: an undecided permission question is not a yes.
55
+ this.reportError(err);
56
+ return;
57
+ }
58
+ // After the permission decision, which needs the whole record: a frame
59
+ // carrying a deleted record's body would be a read channel around the
60
+ // tombstone. See docs/spec/events.md § Soft-deleted records reach the
61
+ // feed as tombstones.
62
+ this.deliver(this.project(emission));
63
+ }
64
+ project(emission) {
65
+ const record = presentDeleted(emission.record);
66
+ return record === emission.record ? emission : { ...emission, record };
67
+ }
68
+ }
69
+ //# sourceMappingURL=subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/scoped-stack/subscription.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAK/B;IACA;IALnB,0DAA0D;IAClD,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEjD,YACmB,QAA2B,EAC3B,OAGI,EACrB,OAAuC,EACvC,IAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QARJ,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,YAAO,GAAP,OAAO,CAGH;IAKvB,CAAC;IAED,MAAM,CAAC,QAAuB;QAC5B,6DAA6D;QAC7D,qEAAqE;QACrE,oDAAoD;QACpD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACK,aAAa,CAAC,QAAuB;QAC3C,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,QAAuB;QACpD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAE,OAAO;QACpE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,8DAA8D;YAC9D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,uEAAuE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,sBAAsB;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,CAAC;IAEO,OAAO,CAAC,QAAuB;QACrC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAC;IACzE,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Stack — Write arguments
3
+ * -------------------------------------------------------
4
+ * The shape checks each aspect write owes its arguments before anything is
5
+ * read. `Stack` and `ScopedStack` both call them, `ScopedStack` ahead of its
6
+ * gates, so a malformed argument earns the same refusal from every
7
+ * requester rather than a validation error for the owner and a not-found
8
+ * for everyone else. See docs/spec/disclosure.md § The order a write's
9
+ * refusals are asked in.
10
+ */
11
+ import type { Association } from '../types/index.js';
12
+ /**
13
+ * The split the wire parsers make: a patch that is not an object is not a
14
+ * patch at all (400), while a named argument of the wrong type is a 422
15
+ * naming it. See docs/spec/wire-format.md § Unrecognized input.
16
+ */
17
+ export declare function assertContentPatch(patch: unknown): asserts patch is Record<string, unknown>;
18
+ export declare function assertParentArgument(parentId: unknown): asserts parentId is string | null;
19
+ export declare function assertUnlistedArgument(unlisted: unknown): asserts unlisted is boolean;
20
+ /**
21
+ * A whole replacement set: a list, on its own surface — asked before the
22
+ * shape checks, so a misrouted element is reported as the wrong surface
23
+ * rather than as a malformed value of the right one — of well-formed,
24
+ * distinct elements.
25
+ */
26
+ export declare function assertAssociationSet(list: unknown, param: 'associations' | 'permissions'): asserts list is Association[];
27
+ //# sourceMappingURL=arguments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../../src/stack/arguments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAG3F;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,GAAG,IAAI,CAGzF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAGrF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,cAAc,GAAG,aAAa,GACpC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAM/B"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Stack — Write arguments
3
+ * -------------------------------------------------------
4
+ * The shape checks each aspect write owes its arguments before anything is
5
+ * read. `Stack` and `ScopedStack` both call them, `ScopedStack` ahead of its
6
+ * gates, so a malformed argument earns the same refusal from every
7
+ * requester rather than a validation error for the owner and a not-found
8
+ * for everyone else. See docs/spec/disclosure.md § The order a write's
9
+ * refusals are asked in.
10
+ */
11
+ import { ARGUMENTS_INVALID, StackBadRequestError, StackValidationError } from '../errors.js';
12
+ import { assertAuthorityAssociations, assertDataAssociations, validateAssociations, } from '../associations/validation.js';
13
+ /**
14
+ * The split the wire parsers make: a patch that is not an object is not a
15
+ * patch at all (400), while a named argument of the wrong type is a 422
16
+ * naming it. See docs/spec/wire-format.md § Unrecognized input.
17
+ */
18
+ export function assertContentPatch(patch) {
19
+ if (typeof patch === 'object' && patch !== null && !Array.isArray(patch))
20
+ return;
21
+ throw new StackBadRequestError('A content patch is an object of content keys.');
22
+ }
23
+ export function assertParentArgument(parentId) {
24
+ if (parentId === null || typeof parentId === 'string')
25
+ return;
26
+ argumentError('parentId', 'parentId must be a record id, or null for the root.');
27
+ }
28
+ export function assertUnlistedArgument(unlisted) {
29
+ if (typeof unlisted === 'boolean')
30
+ return;
31
+ argumentError('unlisted', 'unlisted must be a boolean.');
32
+ }
33
+ /**
34
+ * A whole replacement set: a list, on its own surface — asked before the
35
+ * shape checks, so a misrouted element is reported as the wrong surface
36
+ * rather than as a malformed value of the right one — of well-formed,
37
+ * distinct elements.
38
+ */
39
+ export function assertAssociationSet(list, param) {
40
+ if (!Array.isArray(list))
41
+ argumentError(param, `${param} must be an array.`);
42
+ if (param === 'associations')
43
+ assertDataAssociations(list, param);
44
+ else
45
+ assertAuthorityAssociations(list, param);
46
+ const errors = validateAssociations(list, param);
47
+ if (errors.length > 0)
48
+ throw new StackValidationError(errors, ARGUMENTS_INVALID);
49
+ }
50
+ function argumentError(path, message) {
51
+ throw new StackValidationError([{ path, message }], ARGUMENTS_INVALID);
52
+ }
53
+ //# sourceMappingURL=arguments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/stack/arguments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAGvC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO;IACjF,MAAM,IAAI,oBAAoB,CAAC,+CAA+C,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAiB;IACpD,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO;IAC9D,aAAa,CAAC,UAAU,EAAE,qDAAqD,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAiB;IACtD,IAAI,OAAO,QAAQ,KAAK,SAAS;QAAE,OAAO;IAC1C,aAAa,CAAC,UAAU,EAAE,6BAA6B,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAa,EACb,KAAqC;IAErC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,aAAa,CAAC,KAAK,EAAE,GAAG,KAAK,oBAAoB,CAAC,CAAC;IAC7E,IAAI,KAAK,KAAK,cAAc;QAAE,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;QAC7D,2BAA2B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,OAAe;IAClD,MAAM,IAAI,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Attachment helpers
3
+ * -------------------------------------------------------
4
+ * The content an upload's `_attachment@1` record is written with, shared by
5
+ * Stack.putAttachment() and ScopedStack.putAttachment(); and the cleanup
6
+ * half — deleting unreferenced metadata on an adapter with no atomic way
7
+ * to do it, and the garbage sweep that finds what is unreferenced. The
8
+ * cleanup runs over an unscoped Stack's public API; Stack.deleteAttachment()
9
+ * and collectAttachmentGarbage() carry the contract. See
10
+ * docs/spec/attachments.md § Deleting attachments.
11
+ */
12
+ import type { ActorOptions, AttachmentContent, FileId, PutAttachmentOptions, StackAdapter, StackRecord } from '../types/index.js';
13
+ import type { CollectAttachmentGarbageOptions, CollectAttachmentGarbageResult } from './client.js';
14
+ import type { Stack } from './stack.js';
15
+ /** The `_attachment@1` content describing bytes just stored as `fileId`. */
16
+ export declare function uploadContent(fileId: FileId, data: Uint8Array, { mimeType, filename }: PutAttachmentOptions): AttachmentContent;
17
+ /**
18
+ * Non-atomic fallback for adapters that don't implement
19
+ * deleteUnreferencedAttachmentRecords(): a concurrent editAssociations() can
20
+ * race between the reference check below and the deletes it guards.
21
+ */
22
+ export declare function deleteUnreferencedAttachmentRecordsFallback(stack: Stack, fileId: string, opts?: ActorOptions): Promise<StackRecord[]>;
23
+ export declare function collectAttachmentGarbage(stack: Stack, listBlobs: StackAdapter['listBlobs'], opts: CollectAttachmentGarbageOptions & ActorOptions): Promise<CollectAttachmentGarbageResult>;
24
+ //# sourceMappingURL=attachments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/stack/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,MAAM,EACN,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AASxC,4EAA4E;AAC5E,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EAChB,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,oBAAoB,GAC3C,iBAAiB,CAEnB;AAeD;;;;GAIG;AACH,wBAAsB,2CAA2C,CAC/D,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,WAAW,EAAE,CAAC,CAcxB;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,EACpC,IAAI,EAAE,+BAA+B,GAAG,YAAY,GACnD,OAAO,CAAC,8BAA8B,CAAC,CAiEzC"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Attachment helpers
3
+ * -------------------------------------------------------
4
+ * The content an upload's `_attachment@1` record is written with, shared by
5
+ * Stack.putAttachment() and ScopedStack.putAttachment(); and the cleanup
6
+ * half — deleting unreferenced metadata on an adapter with no atomic way
7
+ * to do it, and the garbage sweep that finds what is unreferenced. The
8
+ * cleanup runs over an unscoped Stack's public API; Stack.deleteAttachment()
9
+ * and collectAttachmentGarbage() carry the contract. See
10
+ * docs/spec/attachments.md § Deleting attachments.
11
+ */
12
+ import { StackConflictError, StackNotFoundError } from '../errors.js';
13
+ import { queryAllPages } from './reads.js';
14
+ import { SYSTEM_TYPES } from '../types/index.js';
15
+ /**
16
+ * Default grace period for Stack.collectAttachmentGarbage(), covering the
17
+ * upload-then-associate window. See docs/spec/attachments.md § Garbage
18
+ * collection.
19
+ */
20
+ const DEFAULT_GC_GRACE_MS = 24 * 60 * 60 * 1000;
21
+ /** The `_attachment@1` content describing bytes just stored as `fileId`. */
22
+ export function uploadContent(fileId, data, { mimeType, filename }) {
23
+ return { fileId, mimeType, size: data.byteLength, ...(filename && { filename }) };
24
+ }
25
+ /**
26
+ * Whether any record references `fileId`. A soft-deleted or unlisted record
27
+ * still counts — it must find its attachments intact on undelete or
28
+ * relisting. See docs/spec/attachments.md § Deleting attachments.
29
+ */
30
+ async function isFileReferenced(stack, fileId) {
31
+ const { records } = await stack.query({
32
+ filter: { referencesFileId: fileId, includeDeleted: true, includeUnlisted: true },
33
+ limit: 1,
34
+ });
35
+ return records.length > 0;
36
+ }
37
+ /**
38
+ * Non-atomic fallback for adapters that don't implement
39
+ * deleteUnreferencedAttachmentRecords(): a concurrent editAssociations() can
40
+ * race between the reference check below and the deletes it guards.
41
+ */
42
+ export async function deleteUnreferencedAttachmentRecordsFallback(stack, fileId, opts = {}) {
43
+ if (await isFileReferenced(stack, fileId)) {
44
+ throw new StackConflictError('Attachment is still referenced by one or more records');
45
+ }
46
+ // Soft-deleted, unlisted, and later-version metadata is cleaned up
47
+ // too — none of it may be left pointing at deleted bytes.
48
+ const metaRecords = await stack.getAttachmentRecords(fileId);
49
+ for (const record of metaRecords) {
50
+ await stack.delete(record.id, { purge: true, ...opts });
51
+ }
52
+ return metaRecords;
53
+ }
54
+ export async function collectAttachmentGarbage(stack, listBlobs, opts) {
55
+ const graceMs = opts.graceMs ?? DEFAULT_GC_GRACE_MS;
56
+ const dryRun = opts.dryRun ?? false;
57
+ const now = Date.now();
58
+ const metaRecords = await queryAllPages((q) => stack.query(q), {
59
+ filter: { baseId: SYSTEM_TYPES.ATTACHMENT, includeDeleted: true, includeUnlisted: true },
60
+ });
61
+ // Newest metadata record's createdAt per fileId, and its size (constant
62
+ // across records sharing a fileId, since content-addressing guarantees
63
+ // identical bytes) — used for the grace check and reclaimedBytes.
64
+ const metaByFile = new Map();
65
+ for (const record of metaRecords) {
66
+ const content = record.content;
67
+ const createdAt = record.createdAt.getTime();
68
+ const existing = metaByFile.get(content.fileId);
69
+ if (!existing || createdAt > existing.newestAt) {
70
+ metaByFile.set(content.fileId, { newestAt: createdAt, size: content.size });
71
+ }
72
+ }
73
+ // Bare-bytes orphans: blobs with zero metadata records, only
74
+ // discoverable if the blob adapter implements listBlobs().
75
+ const blobByFile = new Map();
76
+ if (listBlobs) {
77
+ for (const file of await listBlobs()) {
78
+ blobByFile.set(file.fileId, { modifiedAt: file.modifiedAt.getTime(), size: file.size });
79
+ }
80
+ }
81
+ const candidateFileIds = new Set([...metaByFile.keys(), ...blobByFile.keys()]);
82
+ const deletedFileIds = [];
83
+ let reclaimedBytes = 0;
84
+ for (const fileId of candidateFileIds) {
85
+ if (await isFileReferenced(stack, fileId))
86
+ continue;
87
+ const meta = metaByFile.get(fileId);
88
+ const blob = blobByFile.get(fileId);
89
+ const newestAt = meta?.newestAt ?? blob?.modifiedAt;
90
+ if (newestAt !== undefined && now - newestAt < graceMs)
91
+ continue;
92
+ const size = meta?.size ?? blob?.size ?? 0;
93
+ if (dryRun) {
94
+ deletedFileIds.push(fileId);
95
+ reclaimedBytes += size;
96
+ continue;
97
+ }
98
+ try {
99
+ await stack.deleteAttachment(fileId, { actor: opts.actor });
100
+ }
101
+ catch (err) {
102
+ // Raced with a new reference, or another sweep/call already removed
103
+ // it — not a sweep failure, just move on to the next candidate.
104
+ if (err instanceof StackConflictError || err instanceof StackNotFoundError)
105
+ continue;
106
+ throw err;
107
+ }
108
+ deletedFileIds.push(fileId);
109
+ reclaimedBytes += size;
110
+ }
111
+ return { deletedFileIds, reclaimedBytes };
112
+ }
113
+ //# sourceMappingURL=attachments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/stack/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAYjD;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhD,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,IAAgB,EAChB,EAAE,QAAQ,EAAE,QAAQ,EAAwB;IAE5C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAAC,KAAY,EAAE,MAAc;IAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;QACpC,MAAM,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;QACjF,KAAK,EAAE,CAAC;KACT,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,2CAA2C,CAC/D,KAAY,EACZ,MAAc,EACd,OAAqB,EAAE;IAEvB,IAAI,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,kBAAkB,CAAC,uDAAuD,CAAC,CAAC;IACxF,CAAC;IAED,mEAAmE;IACnE,0DAA0D;IAC1D,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7D,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAY,EACZ,SAAoC,EACpC,IAAoD;IAEpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,mBAAmB,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC7D,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;KACzF,CAAC,CAAC;IAEH,wEAAwE;IACxE,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAA8C,CAAC;IACzE,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAA4B,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,IAAI,SAAS,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC/C,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,2DAA2D;IAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgD,CAAC;IAC3E,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,MAAM,SAAS,EAAE,EAAE,CAAC;YACrC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAE/E,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC;YAAE,SAAS;QAEpD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE,UAAU,CAAC;QACpD,IAAI,QAAQ,KAAK,SAAS,IAAI,GAAG,GAAG,QAAQ,GAAG,OAAO;YAAE,SAAS;QAEjE,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QAE3C,IAAI,MAAM,EAAE,CAAC;YACX,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,cAAc,IAAI,IAAI,CAAC;YACvB,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oEAAoE;YACpE,gEAAgE;YAChE,IAAI,GAAG,YAAY,kBAAkB,IAAI,GAAG,YAAY,kBAAkB;gBAAE,SAAS;YACrF,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,cAAc,IAAI,IAAI,CAAC;IACzB,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC5C,CAAC"}
@@ -13,7 +13,7 @@
13
13
  * property of one function here, not a convention every emission site has
14
14
  * to remember. See docs/spec/events.md.
15
15
  */
16
- import type { AssociationChange, ChangeActor, JournalEntryInput, ChangeFilter, ChangeKind, ChangeOp, RecordChange, StackRecord, SubscribeOptions, Unsubscribe } from './types.js';
16
+ import type { AssociationChange, ChangeActor, JournalEntryInput, ChangeFilter, ChangeKind, ChangeOp, RecordChange, StackRecord, SubscribeOptions, Unsubscribe } from '../types/index.js';
17
17
  /**
18
18
  * What the emitter knows: the envelope, plus the record it describes.
19
19
  * `record` is the filtering input and is never delivered unprojected —
@@ -29,12 +29,9 @@ export type EmittedChange = {
29
29
  record: StackRecord;
30
30
  /**
31
31
  * The container a move took the record out of, `null` for the root.
32
- * Emitter-side only, like `record`: it exists so a `parentId` filter can
33
- * answer for the origin as well as the destination, and no frame carries
34
- * it — a subscriber compares the frame's `parentId` to its own filter to
35
- * tell an arrival from a departure. Present on `reparent`, and on a
36
- * `restore` that put a different container back; absent wherever the
37
- * record did not move. See docs/spec/events.md § The reparent transition.
32
+ * Emitter-side only, like `record`: it lets a `parentId` filter answer for
33
+ * the origin as well as the destination, and no frame carries it.
34
+ * See docs/spec/events.md § The reparent transition.
38
35
  */
39
36
  previousParentId?: string | null;
40
37
  /**
@@ -47,30 +44,17 @@ export type EmittedChange = {
47
44
  previousTypeId?: string;
48
45
  };
49
46
  /**
50
- * Whether an emission matches a subscription's filter. Reads the record
51
- * for the fields the envelope deliberately omits, so `createdBy` filters on
52
- * the author and `purged` frames stay filterable without carrying either.
47
+ * Whether an emission matches a subscription's filter, every key of it.
48
+ * Reads the record for the fields the envelope deliberately omits, so
49
+ * `createdBy` filters on the author and `purged` frames stay filterable
50
+ * without carrying either.
53
51
  */
54
52
  export declare function matchesFilter(emitted: EmittedChange, filter?: ChangeFilter): boolean;
55
- /**
56
- * Whether an emission passes the unlisted-enumeration boundary for one
57
- * subscription. The `unlist` transition is the one exception to the
58
- * default exclusion: without it a subscriber who already knows the record
59
- * would never be told to drop it. Every other transition falls out of
60
- * checking the record's current state.
61
- * See docs/spec/events.md § The unlisted transition.
62
- */
63
- export declare function passesUnlistedBoundary(emitted: EmittedChange, includeUnlisted?: boolean): boolean;
64
53
  /**
65
54
  * The frame a subscriber receives. A `purged` frame never carries the
66
- * record, whatever was asked for: purge is the erasure primitive,
67
- * and a frame that shipped the body — or the author — of a record the
68
- * stack has just destroyed would hand every subscriber a permanent copy of
69
- * the thing being erased. See docs/spec/events.md § Purged records carry
70
- * nothing.
71
- *
72
- * The record rides by reference, shared across every frame projected from
73
- * one emission: handlers are contractually read-only over it.
55
+ * record, whatever was asked for — see docs/spec/events.md § Purged records
56
+ * carry nothing. The record rides by reference, shared across every frame
57
+ * from one emission: handlers are contractually read-only over it.
74
58
  */
75
59
  export declare function emitted(emission: EmittedChange, includeRecords: boolean): RecordChange;
76
60
  /**
@@ -93,16 +77,10 @@ export declare abstract class Subscription {
93
77
  protected reportError(err: unknown): void;
94
78
  }
95
79
  /**
96
- * Delivery for frames that originate elsewhere. A relayed frame arrives
97
- * already projected and already scoped by the authority that opened the
98
- * feed, so nothing here filters it again: the emitter that produced it saw
99
- * the record, and this one never will — a purge in particular leaves
100
- * nothing to decide with. See docs/spec/events.md § Where events come from.
101
- *
102
- * It is delivered to one subscriber rather than through the emitter,
103
- * because a relay is opened per subscription and carries that
104
- * subscription's filter. Handing it to the registry would give every other
105
- * subscriber a copy of a stream it did not ask for.
80
+ * Delivery for frames that originate elsewhere, already projected and
81
+ * scoped by the authority that opened the feed, so nothing here filters
82
+ * them again. One subscriber's, not the registry's: a relay carries its own
83
+ * subscription's filter. See docs/spec/events.md § Where events come from.
106
84
  */
107
85
  export declare class RelayDelivery {
108
86
  private readonly handler;
@@ -113,16 +91,10 @@ export declare class RelayDelivery {
113
91
  close(): void;
114
92
  }
115
93
  /**
116
- * One change, held between the two halves it is written in.
117
- *
118
- * A change lands twice: the durable half travels into the adapter's
119
- * transaction ahead of the write, and the live half is built from the
120
- * record that write produced. Naming the change once — its ops, its kind,
121
- * its actor, what it moved — is what makes "the entry set is the event
122
- * set" true by construction rather than by convention. No verb can journal
123
- * one thing and announce another, and a verb that writes only one half has
124
- * to say so where it does it. See docs/spec/journal.md § The entry set is
125
- * the event set.
94
+ * One change, held between the journal entry that travels into the
95
+ * adapter's write and the event built from the record it produced. Naming
96
+ * it once is what keeps a verb from journaling one thing and announcing
97
+ * another. See docs/spec/journal.md § The entry set is the event set.
126
98
  */
127
99
  export declare class PendingChange {
128
100
  private readonly moved;
@@ -151,25 +123,17 @@ export declare class PendingChange {
151
123
  associations?: AssociationChange[];
152
124
  });
153
125
  /**
154
- * The durable half, handed to the adapter as `journal` so that it lands
155
- * in the same write as the mutation it describes.
156
- *
157
- * Absent for a purge, which destroys the log an entry would be appended
158
- * to. The rule lives here rather than at each call site that would
159
- * otherwise have to remember it. See docs/spec/journal.md § A purge
160
- * destroys the journal.
126
+ * The durable half, handed to the adapter as `journal` so it lands in the
127
+ * same write as the mutation it describes. Absent for a purge, which
128
+ * destroys the log it would be appended to — see docs/spec/journal.md
129
+ * § A purge destroys the journal.
161
130
  */
162
131
  get journal(): JournalEntryInput | undefined;
163
132
  /**
164
- * The live half, built from the record the write produced — for a purge,
165
- * from the record as it stood immediately before destruction.
166
- *
167
- * The actor is read off the record for every version-bumping op, so it
168
- * agrees with what was persisted by construction. A no-bump op stamps
169
- * nothing, so the requester travels here instead — reading the record
170
- * would report whoever's last version-bumping write this is. A purged
171
- * frame drops `parentId` and the create-time `appId` too: it says a
172
- * record of some type was destroyed and nothing about whose it was.
133
+ * The live half, built from the record the write produced (for a purge,
134
+ * as it stood before destruction). A version-bumping op's actor is read
135
+ * off that record; a no-bump op stamps none, so the requester travels
136
+ * here instead. See docs/spec/events.md § Attribution.
173
137
  */
174
138
  emission(record: StackRecord, at?: Date): EmittedChange;
175
139
  /** The frame's two flat lists, present only where non-empty. */
@@ -191,15 +155,9 @@ export declare class ChangeEmitter {
191
155
  /** The kind each op produces. See docs/spec/events.md § The event shape. */
192
156
  export declare const CHANGE_KINDS: Record<ChangeOp, ChangeKind>;
193
157
  /**
194
- * `since` only means something where a relay exists: a stack with no
195
- * third party whose writes could have been missed has no cursor it could
196
- * ever have minted. Silently starting from the present would let the
197
- * caller believe it resumed when it did not, so a stack that cannot honor
198
- * `since` refuses it rather than ignoring it.
199
- *
200
- * Its shape is checked here rather than left to the adapter, so a malformed
201
- * cursor is the same error whoever is underneath. The value stays opaque:
202
- * this asks whether it is framable, never what it means.
158
+ * Refuse a `since` this stack cannot honor rather than silently starting
159
+ * from the present, and a malformed one here rather than in the adapter, so
160
+ * it is the same error whoever is underneath. The value stays opaque.
203
161
  * See docs/spec/events.md § Subscribing.
204
162
  */
205
163
  export declare function assertSinceUsable(since: string | undefined, relaysChanges: boolean): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/stack/changes.ts"],"names":[],"mappings":"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"}