@earendil-works/pi-durable 1.3.0 → 1.5.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 (257) hide show
  1. package/CHANGELOG.md +227 -0
  2. package/README.md +287 -82
  3. package/dist/codemode/codemode.d.ts +4 -4
  4. package/dist/codemode/codemode.d.ts.map +1 -1
  5. package/dist/codemode/codemode.js +21 -16
  6. package/dist/codemode/codemode.js.map +1 -1
  7. package/dist/codemode/models.d.ts.map +1 -1
  8. package/dist/codemode/models.js +6 -4
  9. package/dist/codemode/models.js.map +1 -1
  10. package/dist/documents.d.ts +1 -1
  11. package/dist/documents.d.ts.map +1 -1
  12. package/dist/documents.js.map +1 -1
  13. package/dist/env/index.d.ts +12 -10
  14. package/dist/env/index.d.ts.map +1 -1
  15. package/dist/env/index.js.map +1 -1
  16. package/dist/env/node-watch.d.ts +3 -3
  17. package/dist/env/node-watch.d.ts.map +1 -1
  18. package/dist/env/node-watch.js +18 -16
  19. package/dist/env/node-watch.js.map +1 -1
  20. package/dist/env/node.d.ts +2 -2
  21. package/dist/env/node.d.ts.map +1 -1
  22. package/dist/env/node.js +12 -4
  23. package/dist/env/node.js.map +1 -1
  24. package/dist/errors.d.ts +18 -2
  25. package/dist/errors.d.ts.map +1 -1
  26. package/dist/errors.js +26 -3
  27. package/dist/errors.js.map +1 -1
  28. package/dist/harness/agent.d.ts +13 -2
  29. package/dist/harness/agent.d.ts.map +1 -1
  30. package/dist/harness/agent.js +48 -6
  31. package/dist/harness/agent.js.map +1 -1
  32. package/dist/harness/compaction.d.ts +3 -1
  33. package/dist/harness/compaction.d.ts.map +1 -1
  34. package/dist/harness/compaction.js +38 -6
  35. package/dist/harness/compaction.js.map +1 -1
  36. package/dist/harness/context.d.ts +23 -7
  37. package/dist/harness/context.d.ts.map +1 -1
  38. package/dist/harness/context.js +71 -25
  39. package/dist/harness/context.js.map +1 -1
  40. package/dist/harness/define.d.ts +7 -3
  41. package/dist/harness/define.d.ts.map +1 -1
  42. package/dist/harness/define.js +4 -0
  43. package/dist/harness/define.js.map +1 -1
  44. package/dist/harness/generation.d.ts +38 -5
  45. package/dist/harness/generation.d.ts.map +1 -1
  46. package/dist/harness/generation.js +497 -108
  47. package/dist/harness/generation.js.map +1 -1
  48. package/dist/harness/harness.d.ts +7 -2
  49. package/dist/harness/harness.d.ts.map +1 -1
  50. package/dist/harness/harness.js +147 -57
  51. package/dist/harness/harness.js.map +1 -1
  52. package/dist/harness/inbox.d.ts +7 -3
  53. package/dist/harness/inbox.d.ts.map +1 -1
  54. package/dist/harness/inbox.js +7 -4
  55. package/dist/harness/inbox.js.map +1 -1
  56. package/dist/harness/json.d.ts +20 -4
  57. package/dist/harness/json.d.ts.map +1 -1
  58. package/dist/harness/json.js +23 -5
  59. package/dist/harness/json.js.map +1 -1
  60. package/dist/harness/live.d.ts +122 -16
  61. package/dist/harness/live.d.ts.map +1 -1
  62. package/dist/harness/live.js +93 -12
  63. package/dist/harness/live.js.map +1 -1
  64. package/dist/harness/partial-changes.d.ts +54 -0
  65. package/dist/harness/partial-changes.d.ts.map +1 -0
  66. package/dist/harness/partial-changes.js +162 -0
  67. package/dist/harness/partial-changes.js.map +1 -0
  68. package/dist/harness/prompt.d.ts +1 -1
  69. package/dist/harness/prompt.d.ts.map +1 -1
  70. package/dist/harness/prompt.js +1 -1
  71. package/dist/harness/prompt.js.map +1 -1
  72. package/dist/harness/registry-reader.d.ts +11 -0
  73. package/dist/harness/registry-reader.d.ts.map +1 -0
  74. package/dist/harness/registry-reader.js +25 -0
  75. package/dist/harness/registry-reader.js.map +1 -0
  76. package/dist/harness/scheduler.d.ts +86 -14
  77. package/dist/harness/scheduler.d.ts.map +1 -1
  78. package/dist/harness/scheduler.js +1459 -369
  79. package/dist/harness/scheduler.js.map +1 -1
  80. package/dist/harness/submissions.d.ts +23 -11
  81. package/dist/harness/submissions.d.ts.map +1 -1
  82. package/dist/harness/submissions.js +104 -36
  83. package/dist/harness/submissions.js.map +1 -1
  84. package/dist/harness/task-graph.d.ts +28 -8
  85. package/dist/harness/task-graph.d.ts.map +1 -1
  86. package/dist/harness/task-graph.js +85 -36
  87. package/dist/harness/task-graph.js.map +1 -1
  88. package/dist/harness/telemetry.d.ts +307 -0
  89. package/dist/harness/telemetry.d.ts.map +1 -0
  90. package/dist/harness/telemetry.js +136 -0
  91. package/dist/harness/telemetry.js.map +1 -0
  92. package/dist/harness/tool.d.ts +2 -0
  93. package/dist/harness/tool.d.ts.map +1 -1
  94. package/dist/harness/tool.js +223 -61
  95. package/dist/harness/tool.js.map +1 -1
  96. package/dist/harness/transcript.d.ts +72 -0
  97. package/dist/harness/transcript.d.ts.map +1 -0
  98. package/dist/harness/transcript.js +264 -0
  99. package/dist/harness/transcript.js.map +1 -0
  100. package/dist/harness/types.d.ts +302 -48
  101. package/dist/harness/types.d.ts.map +1 -1
  102. package/dist/harness/types.js.map +1 -1
  103. package/dist/harness/util.d.ts +7 -1
  104. package/dist/harness/util.d.ts.map +1 -1
  105. package/dist/harness/util.js +13 -0
  106. package/dist/harness/util.js.map +1 -1
  107. package/dist/harness/view.d.ts +43 -22
  108. package/dist/harness/view.d.ts.map +1 -1
  109. package/dist/harness/view.js +130 -71
  110. package/dist/harness/view.js.map +1 -1
  111. package/dist/index.d.ts +13 -9
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +7 -5
  114. package/dist/index.js.map +1 -1
  115. package/dist/search.d.ts +19 -3
  116. package/dist/search.d.ts.map +1 -1
  117. package/dist/search.js +107 -44
  118. package/dist/search.js.map +1 -1
  119. package/dist/session/cached-storage.d.ts +71 -0
  120. package/dist/session/cached-storage.d.ts.map +1 -0
  121. package/dist/session/cached-storage.js +269 -0
  122. package/dist/session/cached-storage.js.map +1 -0
  123. package/dist/session/conversation-tails.d.ts +33 -0
  124. package/dist/session/conversation-tails.d.ts.map +1 -0
  125. package/dist/session/conversation-tails.js +101 -0
  126. package/dist/session/conversation-tails.js.map +1 -0
  127. package/dist/session/keys.d.ts +68 -0
  128. package/dist/session/keys.d.ts.map +1 -0
  129. package/dist/session/keys.js +161 -0
  130. package/dist/session/keys.js.map +1 -0
  131. package/dist/session/session.d.ts +181 -29
  132. package/dist/session/session.d.ts.map +1 -1
  133. package/dist/session/session.js +1073 -183
  134. package/dist/session/session.js.map +1 -1
  135. package/dist/session/transaction.d.ts +86 -4
  136. package/dist/session/transaction.d.ts.map +1 -1
  137. package/dist/session/transaction.js +250 -38
  138. package/dist/session/transaction.js.map +1 -1
  139. package/dist/session/writer.d.ts +74 -0
  140. package/dist/session/writer.d.ts.map +1 -0
  141. package/dist/session/writer.js +294 -0
  142. package/dist/session/writer.js.map +1 -0
  143. package/dist/storage/indexeddb.d.ts +68 -0
  144. package/dist/storage/indexeddb.d.ts.map +1 -0
  145. package/dist/storage/indexeddb.js +881 -0
  146. package/dist/storage/indexeddb.js.map +1 -0
  147. package/dist/storage/jsonl/storage.d.ts +30 -2
  148. package/dist/storage/jsonl/storage.d.ts.map +1 -1
  149. package/dist/storage/jsonl/storage.js +88 -24
  150. package/dist/storage/jsonl/storage.js.map +1 -1
  151. package/dist/storage/memory.d.ts +7 -2
  152. package/dist/storage/memory.d.ts.map +1 -1
  153. package/dist/storage/memory.js +29 -3
  154. package/dist/storage/memory.js.map +1 -1
  155. package/dist/storage/sqlite/cloudflare.d.ts +2 -51
  156. package/dist/storage/sqlite/cloudflare.d.ts.map +1 -1
  157. package/dist/storage/sqlite/cloudflare.js +2 -133
  158. package/dist/storage/sqlite/cloudflare.js.map +1 -1
  159. package/dist/storage/sqlite/database.d.ts +1 -36
  160. package/dist/storage/sqlite/database.d.ts.map +1 -1
  161. package/dist/storage/sqlite/database.js.map +1 -1
  162. package/dist/storage/sqlite/index.d.ts +1 -1
  163. package/dist/storage/sqlite/index.d.ts.map +1 -1
  164. package/dist/storage/sqlite/index.js.map +1 -1
  165. package/dist/storage/sqlite/migrations.d.ts +2 -5
  166. package/dist/storage/sqlite/migrations.d.ts.map +1 -1
  167. package/dist/storage/sqlite/migrations.js +28 -28
  168. package/dist/storage/sqlite/migrations.js.map +1 -1
  169. package/dist/storage/sqlite/node.d.ts +2 -37
  170. package/dist/storage/sqlite/node.d.ts.map +1 -1
  171. package/dist/storage/sqlite/node.js +3 -174
  172. package/dist/storage/sqlite/node.js.map +1 -1
  173. package/dist/storage/sqlite/schema.d.ts +1 -3
  174. package/dist/storage/sqlite/schema.d.ts.map +1 -1
  175. package/dist/storage/sqlite/schema.js +2 -9
  176. package/dist/storage/sqlite/schema.js.map +1 -1
  177. package/dist/storage/sqlite/storage.d.ts +15 -3
  178. package/dist/storage/sqlite/storage.d.ts.map +1 -1
  179. package/dist/storage/sqlite/storage.js +110 -36
  180. package/dist/storage/sqlite/storage.js.map +1 -1
  181. package/dist/storage/store/commit.d.ts +33 -0
  182. package/dist/storage/store/commit.d.ts.map +1 -0
  183. package/dist/storage/store/commit.js +286 -0
  184. package/dist/storage/store/commit.js.map +1 -0
  185. package/dist/storage/store/documents.d.ts +43 -0
  186. package/dist/storage/store/documents.d.ts.map +1 -0
  187. package/dist/storage/store/documents.js +102 -0
  188. package/dist/storage/store/documents.js.map +1 -0
  189. package/dist/storage/store/index.d.ts +2 -0
  190. package/dist/storage/store/index.d.ts.map +1 -0
  191. package/dist/storage/store/index.js +2 -0
  192. package/dist/storage/store/index.js.map +1 -0
  193. package/dist/storage/store/queries.d.ts +49 -0
  194. package/dist/storage/store/queries.d.ts.map +1 -0
  195. package/dist/storage/store/queries.js +93 -0
  196. package/dist/storage/store/queries.js.map +1 -0
  197. package/dist/storage/store/storage.d.ts +59 -0
  198. package/dist/storage/store/storage.d.ts.map +1 -0
  199. package/dist/storage/store/storage.js +438 -0
  200. package/dist/storage/store/storage.js.map +1 -0
  201. package/dist/storage/store/tables.d.ts +54 -0
  202. package/dist/storage/store/tables.d.ts.map +1 -0
  203. package/dist/storage/store/tables.js +108 -0
  204. package/dist/storage/store/tables.js.map +1 -0
  205. package/dist/testing/commit-writes.d.ts +5 -0
  206. package/dist/testing/commit-writes.d.ts.map +1 -0
  207. package/dist/testing/commit-writes.js +12 -0
  208. package/dist/testing/commit-writes.js.map +1 -0
  209. package/dist/testing/env-conformance.js +7 -7
  210. package/dist/testing/env-conformance.js.map +1 -1
  211. package/dist/testing/index.d.ts +1 -0
  212. package/dist/testing/index.d.ts.map +1 -1
  213. package/dist/testing/index.js +1 -0
  214. package/dist/testing/index.js.map +1 -1
  215. package/dist/testing/storage-benchmark.d.ts.map +1 -1
  216. package/dist/testing/storage-benchmark.js +18 -17
  217. package/dist/testing/storage-benchmark.js.map +1 -1
  218. package/dist/testing/storage-conformance.d.ts.map +1 -1
  219. package/dist/testing/storage-conformance.js +369 -67
  220. package/dist/testing/storage-conformance.js.map +1 -1
  221. package/dist/timers.d.ts +21 -0
  222. package/dist/timers.d.ts.map +1 -0
  223. package/dist/timers.js +72 -0
  224. package/dist/timers.js.map +1 -0
  225. package/dist/tool-search/tool-search.d.ts +6 -12
  226. package/dist/tool-search/tool-search.d.ts.map +1 -1
  227. package/dist/tool-search/tool-search.js +7 -7
  228. package/dist/tool-search/tool-search.js.map +1 -1
  229. package/dist/tools/bash.d.ts +12 -12
  230. package/dist/tools/bash.d.ts.map +1 -1
  231. package/dist/tools/bash.js +16 -15
  232. package/dist/tools/bash.js.map +1 -1
  233. package/dist/tools/edit.d.ts +7 -7
  234. package/dist/tools/edit.d.ts.map +1 -1
  235. package/dist/tools/edit.js +9 -9
  236. package/dist/tools/edit.js.map +1 -1
  237. package/dist/tools/index.d.ts +32 -32
  238. package/dist/tools/read.d.ts +6 -6
  239. package/dist/tools/read.d.ts.map +1 -1
  240. package/dist/tools/read.js +19 -8
  241. package/dist/tools/read.js.map +1 -1
  242. package/dist/tools/write.d.ts +4 -4
  243. package/dist/tools/write.d.ts.map +1 -1
  244. package/dist/tools/write.js +5 -5
  245. package/dist/tools/write.js.map +1 -1
  246. package/dist/types.d.ts +331 -64
  247. package/dist/types.d.ts.map +1 -1
  248. package/dist/types.js.map +1 -1
  249. package/package.json +27 -10
  250. package/dist/harness/events.d.ts +0 -186
  251. package/dist/harness/events.d.ts.map +0 -1
  252. package/dist/harness/events.js +0 -373
  253. package/dist/harness/events.js.map +0 -1
  254. package/dist/session/observation.d.ts +0 -42
  255. package/dist/session/observation.d.ts.map +0 -1
  256. package/dist/session/observation.js +0 -281
  257. package/dist/session/observation.js.map +0 -1
@@ -1,13 +1,31 @@
1
- import { type Context, type JsonValue } from "@earendil-works/chord";
2
- import type { CommitPublication, ConversationDocFamilyToken, ConversationDocToken, ConversationId, ConversationRecord, DocumentRecord, DocumentState, DocumentWatch, EntryId, JsonObject, RewindableConversationDocFamilyToken, RewindableConversationDocToken, Session, SessionDocFamilyToken, SessionDocToken, SessionEnd, Storage, TaskDocFamilyToken, TaskDocToken, TaskId, Tx } from "../types.ts";
1
+ import { type Context, type JsonValue, type WatchEnd } from "@earendil-works/chord";
2
+ import type { CommitChange, CommitObservation, CommitObserver, CommitOptions, ConversationDocFamilyToken, ConversationDocToken, ConversationId, ConversationRecord, DocumentCommitChange, DocumentRecord, DocumentWatch, EntryId, JsonObject, Observation, Observer, ReportInfo, RewindableConversationDocFamilyToken, RewindableConversationDocToken, Seq, Session, SessionDocFamilyToken, SessionDocToken, SessionEnd, SetTimer, Storage, StorageWrite, TaskDocFamilyToken, TaskDocToken, TaskId, Tx } from "../types.ts";
3
+ import { type HeadMarker } from "./conversation-tails.ts";
3
4
  import { Transaction, type TransactionScope } from "./transaction.ts";
4
5
  /**
5
- * Open a Session kernel over one storage backend. `now` is the wall clock for task times; default `Date.now`. The first
6
+ * What the Session's own components observe of one commit (`followCommits()`): a stored commit with its own changes, or
7
+ * a deferred one adopted in memory only (`CommitPersistence`), which changes documents only. Memory is never behind:
8
+ * a later store of held changes is not observed again.
9
+ */
10
+ export type ObservedCommit = {
11
+ readonly kind: "stored";
12
+ readonly seq: Seq;
13
+ readonly changes: readonly CommitChange[];
14
+ } | {
15
+ readonly kind: "memory";
16
+ readonly changes: readonly DocumentCommitChange[];
17
+ };
18
+ /**
19
+ * Open a Session kernel over one storage backend. `now` is the wall clock for task times; default `Date.now`.
20
+ * `setTimer` arms the timers that evict idle documents; default `setTimeout` (see `HarnessOptions.setTimer`). The first
6
21
  * error a Storage method throws fails the Session (`SessionFailed`); see `SessionImpl`.
7
22
  */
8
23
  export declare function createSession(storage: Storage, options?: {
9
24
  readonly now?: () => number;
10
25
  readonly documentRetentionMs?: number;
26
+ readonly setTimer?: SetTimer;
27
+ /** Default `withinMs` of a deferred commit (`CommitPersistence`); default 1,000. */
28
+ readonly persistWithinMs?: number;
11
29
  }): Session;
12
30
  /** Internal, for tests: the retention of every Session that keeps the default, as a suite run with eviction at once. */
13
31
  export declare function setDefaultDocumentRetention(ms: number): void;
@@ -16,15 +34,31 @@ export declare function setDefaultDocumentRetention(ms: number): void;
16
34
  * default.
17
35
  */
18
36
  export declare function documentRetention(ms: number | undefined): number;
37
+ /**
38
+ * A deferred commit's default window as given, when it is a number of milliseconds, `0` or more (`Infinity` waits for a
39
+ * reading or writing commit or close); otherwise the default.
40
+ */
41
+ export declare function persistWithin(ms: number | undefined): number;
19
42
  /**
20
43
  * Session kernel: one mutation line, the loaded document tracker cache, and committed publication.
21
44
  *
22
- * The cache is bounded by use: a document with no watch or document state attached leaves it once it was not read or
45
+ * The cache is bounded by use: a document with no watch attached leaves it once it was not read or
23
46
  * written for the retention period, and the next access loads it from Storage. Eviction runs as a job on the mutation
24
47
  * line, so no transaction ever holds a tracker that leaves.
25
48
  *
26
- * Only committed state is observable. Every commit callback, preparation, Storage settlement, adoption, and
27
- * publication enqueue runs while the line is held; listeners run later.
49
+ * Only committed state is observable. A deferred commit (`CommitPersistence`) is committed in memory first: it is
50
+ * adopted and shown to the Session's own observers, and its changes wait, folded per document and pinned in the cache,
51
+ * for the first commit that reads or writes the document, the document's deadline, a drop of its tracker, or close,
52
+ * which store them.
53
+ *
54
+ * Group commit: the line runs one job at a time, a commit's callback and settlement; a commit with writes then joins
55
+ * the writer's pending batch (logical admission, `Writer`) and the line goes on. The writer stores every commit admitted
56
+ * while no call is in flight in one `commit()` call, off the line, and publishes them one by one, in line order, a
57
+ * macrotask apart: the read caches, adoption, telemetry events, the Session's own observers, and one microtask later
58
+ * `observeCommits()` observers, before every wait the commit resolves and every abort it queues. Host listeners and
59
+ * watch listeners have no order. A deferred commit is published when the commits before it are. A job's every read
60
+ * touches its key (`touch()`); while an unpublished commit writes that key, the job waits for its publication, so no
61
+ * job observes state that is not stored. Outcomes are delivered in line order (`#enqueue()`).
28
62
  *
29
63
  * Storage failures are final. Every Storage call goes through one guard: the first error a Storage method throws, other
30
64
  * than for a cancelled caller, fails the Session, as does a commit it cannot adopt. That call gets the error; every later
@@ -41,24 +75,67 @@ export declare class SessionImpl implements Session {
41
75
  } | undefined;
42
76
  /** Internal: rejects with `SessionFailed` the moment the Session fails, before work underway has ended; never resolves. */
43
77
  get failed(): Promise<never>;
44
- constructor(storage: Storage, now?: () => number, documentRetentionMs?: () => number | undefined);
78
+ constructor(storage: Storage, now?: () => number, documentRetentionMs?: () => number | undefined, setTimer?: SetTimer, readOnly?: boolean, persistWithinMs?: () => number | undefined);
45
79
  /** The Storage behind the failure guard; every component reads and writes through it. */
46
80
  protected get storage(): Storage;
47
- commit<T>(change: (tx: Tx) => T | Promise<T>, context: Context): Promise<T>;
81
+ /**
82
+ * Internal, on the Session line: the newest entry ID visible from `conversationId`. Known from the Session's own
83
+ * commits when it owns its Storage, so it costs no Storage read after the first.
84
+ */
85
+ latestEntryId(conversationId: ConversationId, context: Context): Promise<EntryId | undefined>;
86
+ /**
87
+ * Internal: the newest entry ID of `conversationId` as known from the Session's commits right now, without reading;
88
+ * `undefined` when not known (and always for a read-only Session).
89
+ */
90
+ knownLatestEntryId(conversationId: ConversationId): EntryId | null | undefined;
91
+ /**
92
+ * Internal, on the Session line: the newest visible head marker of `conversationId` at or before `atOrBefore`, any
93
+ * when `undefined`; known from the Session's own commits as `latestEntryId()` is.
94
+ */
95
+ latestHeadMarker(conversationId: ConversationId, atOrBefore: EntryId | undefined, context: Context): Promise<HeadMarker | undefined>;
96
+ /**
97
+ * Internal, on the line: wait, while `key` has an unpublished writer (for `ALL_KEYS`, while anything is unpublished),
98
+ * until it is published, then check that the Session is healthy; `undefined` when there is nothing to wait for. A
99
+ * job's every read touches its key first, so it never observes state an earlier job admitted and the writer has not
100
+ * published.
101
+ */
102
+ touch(key: string): Promise<void> | undefined;
103
+ commit<T>(change: (tx: Tx) => T | Promise<T>, context: Context, options?: CommitOptions): Promise<T>;
48
104
  /**
49
105
  * Internal: fail the Session with `error`, the first wins, and report it once. Admission ends, and close listeners run
50
106
  * now; they read the error from `failure`. The Storage guard calls this; the Harness also calls it for a throw in its
51
- * scheduler's own commits.
107
+ * scheduler's own commits. `at` is the line index of the job whose outcome the failure is, by default the job on the
108
+ * line: later jobs' outcomes become `SessionFailed`.
52
109
  */
53
- fail(error: unknown): void;
110
+ fail(error: unknown, context?: Context, at?: number, own?: readonly number[]): void;
54
111
  /**
55
112
  * Internal commit exposing the concrete transaction and its internal operations, such as the reserved-ID root
56
113
  * bootstrap and task replacement. `scope` sets the default `tx.createTask()` conversation and the task attributed to
57
114
  * appended entries.
58
115
  */
59
- commitWith<T>(change: (tx: Transaction) => T | Promise<T>, context: Context, scope?: TransactionScope): Promise<T>;
60
- /** Internal: run a read-only job on the mutation line so multi-read derivations observe one committed state. */
61
- readOnLine<T>(job: () => Promise<T>): Promise<T>;
116
+ commitWith<T>(change: (tx: Transaction) => T | Promise<T>, context: Context, scope?: TransactionScope, options?: CommitOptions): Promise<T>;
117
+ /**
118
+ * Internal: `commitWith()` for a commit of the scheduler's own whose outcome goes only to scheduler code. When it
119
+ * writes nothing and waited at no gate, it is equivalent to having run before every unpublished commit, so its
120
+ * outcome is delivered at once, ahead of theirs. One that writes is never exempt: its outcome waits for its own
121
+ * publication and every earlier outcome, so no invocation starts on a reservation that is not durable.
122
+ */
123
+ commitInternal<T>(change: (tx: Transaction) => T | Promise<T>, context: Context): Promise<T>;
124
+ /**
125
+ * Internal, on the line: call `end` once the outcome of the job on the line settles, its commit published or never to
126
+ * be; at once off the line.
127
+ */
128
+ onJobEnd(end: () => void): void;
129
+ /** Internal: the Storage jobs on the line read through (`touch()`); off the line, use the plain one. */
130
+ get lineStorage(): Storage;
131
+ /** Internal: whether `tx` is the transaction of one of this Session's commits. */
132
+ ownsTransaction(tx: Tx): tx is Transaction;
133
+ /**
134
+ * Internal: run a read-only job on the mutation line so multi-read derivations observe one committed state. It reads
135
+ * through `storage`, whose reads wait for the publication of what the line admitted before; its outcome comes after
136
+ * theirs.
137
+ */
138
+ readOnLine<T>(job: (storage: Storage) => Promise<T>): Promise<T>;
62
139
  /**
63
140
  * Internal: a conversation document's current incarnation and value, for a job already running on the line (see
64
141
  * `readOnLine()`). Absent documents are `undefined`.
@@ -74,53 +151,88 @@ export declare class SessionImpl implements Session {
74
151
  snapshot<T extends JsonObject, I extends JsonValue>(token: SessionDocFamilyToken<T, I>, key: string, context: Context): Promise<Readonly<T> | undefined>;
75
152
  snapshot<T extends JsonObject, I extends JsonValue>(token: ConversationDocFamilyToken<T, I>, conversationId: ConversationId, key: string, context: Context): Promise<Readonly<T> | undefined>;
76
153
  snapshot<T extends JsonObject, I extends JsonValue>(token: TaskDocFamilyToken<T, I>, taskId: TaskId, key: string, context: Context): Promise<Readonly<T> | undefined>;
77
- documentState<T extends JsonObject>(token: SessionDocToken<T>, context: Context): Promise<DocumentState<T> | undefined>;
78
- documentState<T extends JsonObject>(token: ConversationDocToken<T>, conversationId: ConversationId, context: Context): Promise<DocumentState<T> | undefined>;
79
- documentState<T extends JsonObject>(token: TaskDocToken<T>, taskId: TaskId, context: Context): Promise<DocumentState<T> | undefined>;
80
- documentState<T extends JsonObject, I extends JsonValue>(token: SessionDocFamilyToken<T, I>, key: string, context: Context): Promise<DocumentState<T> | undefined>;
81
- documentState<T extends JsonObject, I extends JsonValue>(token: ConversationDocFamilyToken<T, I>, conversationId: ConversationId, key: string, context: Context): Promise<DocumentState<T> | undefined>;
82
- documentState<T extends JsonObject, I extends JsonValue>(token: TaskDocFamilyToken<T, I>, taskId: TaskId, key: string, context: Context): Promise<DocumentState<T> | undefined>;
83
154
  watchDoc<T extends JsonObject>(token: SessionDocToken<T>, context: Context): Promise<DocumentWatch<T> | undefined>;
84
155
  watchDoc<T extends JsonObject>(token: ConversationDocToken<T>, conversationId: ConversationId, context: Context): Promise<DocumentWatch<T> | undefined>;
85
156
  watchDoc<T extends JsonObject>(token: TaskDocToken<T>, taskId: TaskId, context: Context): Promise<DocumentWatch<T> | undefined>;
86
157
  watchDoc<T extends JsonObject, I extends JsonValue>(token: SessionDocFamilyToken<T, I>, key: string, context: Context): Promise<DocumentWatch<T> | undefined>;
87
158
  watchDoc<T extends JsonObject, I extends JsonValue>(token: ConversationDocFamilyToken<T, I>, conversationId: ConversationId, key: string, context: Context): Promise<DocumentWatch<T> | undefined>;
88
159
  watchDoc<T extends JsonObject, I extends JsonValue>(token: TaskDocFamilyToken<T, I>, taskId: TaskId, key: string, context: Context): Promise<DocumentWatch<T> | undefined>;
160
+ observeDoc<T extends JsonObject>(token: SessionDocToken<T>, observer: Observer<Readonly<T>>, context: Context): Promise<Observation<Readonly<T>> | undefined>;
161
+ observeDoc<T extends JsonObject>(token: ConversationDocToken<T>, conversationId: ConversationId, observer: Observer<Readonly<T>>, context: Context): Promise<Observation<Readonly<T>> | undefined>;
162
+ observeDoc<T extends JsonObject>(token: TaskDocToken<T>, taskId: TaskId, observer: Observer<Readonly<T>>, context: Context): Promise<Observation<Readonly<T>> | undefined>;
163
+ observeDoc<T extends JsonObject, I extends JsonValue>(token: SessionDocFamilyToken<T, I>, key: string, observer: Observer<Readonly<T>>, context: Context): Promise<Observation<Readonly<T>> | undefined>;
164
+ observeDoc<T extends JsonObject, I extends JsonValue>(token: ConversationDocFamilyToken<T, I>, conversationId: ConversationId, key: string, observer: Observer<Readonly<T>>, context: Context): Promise<Observation<Readonly<T>> | undefined>;
165
+ observeDoc<T extends JsonObject, I extends JsonValue>(token: TaskDocFamilyToken<T, I>, taskId: TaskId, key: string, observer: Observer<Readonly<T>>, context: Context): Promise<Observation<Readonly<T>> | undefined>;
89
166
  snapshotAsOf<T extends JsonObject>(token: RewindableConversationDocToken<T>, conversationId: ConversationId, at: EntryId, context: Context): Promise<Readonly<T> | undefined>;
90
167
  snapshotAsOf<T extends JsonObject, I extends JsonValue>(token: RewindableConversationDocFamilyToken<T, I>, conversationId: ConversationId, key: string, at: EntryId, context: Context): Promise<Readonly<T> | undefined>;
91
168
  close(context: Context): Promise<void>;
92
- /** Internal: the Session's failure, and errors of listeners, which never fail what ran them. A plain Session drops them. */
93
- report(_error: unknown): void;
169
+ /**
170
+ * Internal: the Session's failure, and errors of listeners, which never fail what ran them; `info` defaults to a
171
+ * listener. A plain Session drops them.
172
+ */
173
+ report(_error: unknown, _info?: ReportInfo, _context?: Context): void;
94
174
  /**
95
175
  * Runs inside every transaction that creates or forks a conversation, after the conversation record is staged. A
96
176
  * plain Session stages nothing; a Harness stages its built-in documents.
97
177
  */
98
178
  protected conversationCreated(_tx: Transaction, _record: ConversationRecord): Promise<void>;
179
+ /**
180
+ * Internal, for `beforeClose()`: on the line, after every commit admitted before the seal has settled, write what
181
+ * `writes()` returns then straight to Storage. Nothing is published, since the Session is closing; a failed Session
182
+ * writes nothing.
183
+ */
184
+ protected writeAtClose(writes: () => readonly StorageWrite[]): Promise<void>;
185
+ /**
186
+ * Keys a commit writes besides its records' (`Transaction.writeKeys()`), at its admission, on the line: a Harness
187
+ * adds the ownership memberships its task changes write. A plain Session adds none.
188
+ */
189
+ protected membershipKeys(_tx: Transaction): readonly string[] | Promise<readonly string[]>;
99
190
  /** Runs after close seals admission and before the line closes Storage; must not reject. */
100
191
  protected beforeClose(): Promise<void>;
101
- /** Register a synchronous post-adoption listener. It must not block or call Session operations; a throw is reported. */
102
- subscribeCommits(listener: (publication: CommitPublication, context: Context) => void): () => void;
103
192
  /**
104
- * Internal: `subscribeCommits()` for the Session's own components, whose state follows each commit. A throw leaves
105
- * that state behind storage, so it fails the Session instead of being reported. They run before host listeners.
193
+ * Attach a synchronous observer of every stored commit, with exactly what it stored (`CommitPublication`). Its
194
+ * `advance` runs one microtask after the commit's publication, which follows its storage call, in line order, before
195
+ * every wait the commit resolves and every abort it queues (in no order with watch listeners); it must not block or
196
+ * call Session operations. A throw is reported, detaches it, and ends it `listener_error`; `end` gets the Session's
197
+ * close after its last publication.
198
+ */
199
+ observeCommits(observer: CommitObserver): CommitObservation;
200
+ /**
201
+ * Internal: follow every commit as memory adopts it (`ObservedCommit`), for the Session's own components, whose state
202
+ * follows memory. A throw leaves that state behind, so it fails the Session instead of being reported. They run at
203
+ * the commit's publication, synchronously, so they call no Storage method, run no task code, and contain every host
204
+ * callback; the waits they resolve and the aborts they queue run after host observers.
106
205
  */
107
- observeCommits(listener: (publication: CommitPublication, context: Context) => void): () => void;
206
+ followCommits(listener: (publication: ObservedCommit, context: Context) => void): () => void;
108
207
  /**
109
208
  * Register a listener called synchronously when close begins, also when a failure closes the Session (`failure` is
110
209
  * then set). It must not block or call Session operations; a throw is reported.
111
210
  */
112
211
  subscribeClose(listener: () => void): () => void;
113
- /** Drop every loaded tracker on the mutation line; later access cold-loads from Storage. */
212
+ /** Drop every loaded tracker on the mutation line, held changes stored first; later access cold-loads from Storage. */
114
213
  unloadDocuments(): Promise<void>;
115
214
  /**
116
- * Internal, for tests: how many documents the cache holds, how many are idle, how many incarnations are pinned, and how
117
- * many sweep jobs were queued on the line so far.
215
+ * Internal, for tests: how many documents the cache holds, how many are idle, how many incarnations are pinned, how
216
+ * many sweep jobs were queued on the line so far, how many documents have held changes, how many live tasks have
217
+ * their documents indexed, and how many conversations have their newest entry kept.
118
218
  */
119
219
  get documentCacheSizes(): {
120
220
  readonly cached: number;
121
221
  readonly idle: number;
122
222
  readonly attached: number;
123
223
  readonly sweeps: number;
224
+ readonly held: number;
225
+ readonly taskDocuments: number;
226
+ readonly tails: number;
227
+ };
228
+ /**
229
+ * Internal, for tests that bound memory: jobs whose outcome is not delivered yet, keys with an unpublished writer,
230
+ * and record reads in flight in the cache. All three are 0 once the line is idle.
231
+ */
232
+ get lineSizes(): {
233
+ readonly outstanding: number;
234
+ readonly unpublished: number;
235
+ readonly reads: number;
124
236
  };
125
237
  /** Internal: throw `SessionFailed` when failed, else an error when closing. */
126
238
  assertUsable(): void;
@@ -130,4 +242,44 @@ export declare class SessionImpl implements Session {
130
242
  * which is not awaited.
131
243
  */
132
244
  export declare function contained(callback: () => unknown, onError: (error: unknown) => void): void;
245
+ /** A synchronous observer as Durable attaches it: `Observer` (`advance` gets a `WatchCall`) or `CommitObserver`. */
246
+ type SyncObserver<A> = {
247
+ advance(call: A, context: Context): void;
248
+ end(end: WatchEnd): void;
249
+ };
250
+ /** A guarded observer (`guardObserver()`) with its observation's detach. */
251
+ export type GuardedObserver<A> = SyncObserver<A> & {
252
+ detach(): void;
253
+ };
254
+ /**
255
+ * `observer`, a host's, behind the rule for observers that run at a commit's publication: one that throws, or whose
256
+ * `advance` returns a promise that rejects, is reported through `report`, detached, and ended `listener_error`, so the
257
+ * throw never reaches `adopt`; nothing reaches it after its detach or end, and from then on the guard references
258
+ * neither it nor its source. `detach` is the source's; the returned `detach()` is the observation's.
259
+ */
260
+ export declare function guardObserver<A>(observer: SyncObserver<A>, detach: () => void, report: (error: unknown, context?: Context) => void): GuardedObserver<A>;
261
+ /** The end of an observer whose source closed. */
262
+ export declare const ENDED: WatchEnd;
263
+ /**
264
+ * How a Session's close ends what follows it (decision "Slice 8 S1"), made once per close: an app's watch `ended`; a
265
+ * synchronous observer (an adapter following the Session, which may open it again) `failed` with "session closed", so
266
+ * it follows the next Session; `ended` stays for an observed owner that ended (a task document's task). A failed
267
+ * Session ends both `failed` with its error.
268
+ */
269
+ export declare function closeEnds(failure: {
270
+ readonly error: unknown;
271
+ } | undefined): {
272
+ readonly watch: WatchEnd;
273
+ readonly observer: WatchEnd;
274
+ };
275
+ /** The end `ends` give `follower`: a watch's, or an observer's. */
276
+ export declare function closeEndOf(follower: unknown, ends: ReturnType<typeof closeEnds>): WatchEnd;
277
+ /**
278
+ * The `Observation` of a guarded observer attached at `value`. Built outside the attaching closure, so a detached
279
+ * observation keeps nothing but `value` and the spent guard alive.
280
+ */
281
+ export declare function observation<T>(value: T, guarded: {
282
+ detach(): void;
283
+ }): Observation<T>;
284
+ export {};
133
285
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AAatF,OAAO,KAAK,EAEX,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,EAEd,kBAAkB,EAOlB,cAAc,EACd,aAAa,EACb,aAAa,EACb,OAAO,EAIP,UAAU,EAEV,oCAAoC,EACpC,8BAA8B,EAE9B,OAAO,EACP,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,OAAO,EAMP,kBAAkB,EAClB,YAAY,EACZ,MAAM,EAGN,EAAE,EACF,MAAM,aAAa,CAAC;AAOrB,OAAO,EAAuB,WAAW,EAAwB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEjH;;;GAGG;AACH,wBAAgB,aAAa,CAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9E,OAAO,CAGT;AAKD,wHAAwH;AACxH,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEhE;AAKD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,WAAY,YAAW,OAAO;;IA0B1C,IAAI,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAEhC;IAED,+DAA+D;IAC/D,IAAI,OAAO,IAAI;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAErD;IAED,2HAA2H;IAC3H,IAAI,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAE3B;IAED,YACC,OAAO,EAAE,OAAO,EAChB,GAAG,GAAE,MAAM,MAAiB,EAC5B,mBAAmB,GAAE,MAAM,MAAM,GAAG,SAA2B,EAuC/D;IAED,yFAAyF;IACzF,SAAS,KAAK,OAAO,IAAI,OAAO,CAE/B;IAED,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAE1E;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAQzB;IAED;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,CAOjH;IAED,gHAAgH;IAChH,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAU/C;IAED;;;OAGG;IACG,0BAA0B,CAC/B,KAAK,EAAE,oBAAoB,CAAC,UAAU,CAAC,EACvC,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,GACd,OAAO,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS,CAAC,CAQhH;IAED,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9G,QAAQ,CAAC,CAAC,SAAS,UAAU,EAC5B,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC9B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACpC,QAAQ,CAAC,CAAC,SAAS,UAAU,EAC5B,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACpC,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,EACjD,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAClC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACpC,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,EACjD,KAAK,EAAE,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,EACvC,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACpC,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,EACjD,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAqBpC,aAAa,CAAC,CAAC,SAAS,UAAU,EACjC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,CAAC,SAAS,UAAU,EACjC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC9B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,CAAC,SAAS,UAAU,EACjC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,EACtD,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAClC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,EACtD,KAAK,EAAE,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,EACvC,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,EACtD,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IA4BzC,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACnH,QAAQ,CAAC,CAAC,SAAS,UAAU,EAC5B,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC9B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,CAAC,SAAS,UAAU,EAC5B,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,EACjD,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAClC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,EACjD,KAAK,EAAE,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,EACvC,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,EACjD,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAsCzC,YAAY,CAAC,CAAC,SAAS,UAAU,EAChC,KAAK,EAAE,8BAA8B,CAAC,CAAC,CAAC,EACxC,cAAc,EAAE,cAAc,EAC9B,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACpC,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,EACrD,KAAK,EAAE,oCAAoC,CAAC,CAAC,EAAE,CAAC,CAAC,EACjD,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAmCpC,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCrC;IAWD,4HAA4H;IAC5H,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAG;IAEhC;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F;IAED,4FAA4F;IAC5F,SAAS,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAErC;IAED,wHAAwH;IACxH,gBAAgB,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAIjG;IAED;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAI/F;IAED;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAI/C;IAED,4FAA4F;IAC5F,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAK/B;IAED;;;OAGG;IACH,IAAI,kBAAkB,IAAI;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACxB,CAOA;IA4QD,+EAA+E;IAC/E,YAAY,IAAI,IAAI,CAGnB;CAKD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAQ1F"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"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"}