@procedures/mongo 0.52.3 → 0.53.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"storage-hints.js","sourceRoot":"","sources":["../../src/storage/storage-hints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage-hints.js","sourceRoot":"","sources":["../../src/storage/storage-hints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The age of the resume token of a change watcher (roadmap CLI-110). A token moves when its cluster time is later
3
+ * than the cluster time of the token before it. The same token again, or a new token at the same cluster time,
4
+ * does not move it. A user reads a stalled feed from the age, without a sampler of its own.
5
+ *
6
+ * The package does not export this module. `watchDatabaseChanges()` and `watchStorageChanges()` give the age as
7
+ * `tokenAgeMs` on their handles.
8
+ */
9
+ import type { Clock } from "@procedures/client";
10
+ /**
11
+ * This function gives the cluster time of a resume token as 16 hex digits, or undefined for a token of another form.
12
+ * The key of a token of the server starts with the type byte `82` and the 8 bytes of the timestamp, high byte first.
13
+ * So the order of two of these texts is the order of their cluster times.
14
+ */
15
+ export declare function clusterTimeOfToken(token: unknown): string | undefined;
16
+ /** The age of the token of one watcher. */
17
+ export interface TokenAge {
18
+ /** This method notes a token of the watcher. It moves the age to 0 when the token is later than the last token that moved it. */
19
+ note(token: unknown): void;
20
+ /** This method gives the milliseconds of the clock since the token last moved, or since the start before the first move. */
21
+ ageMs(): number;
22
+ }
23
+ /**
24
+ * This function starts the age of the token of one watcher at the time of the clock.
25
+ *
26
+ * @param clock - The clock of the watcher
27
+ * @param start - The start token of the watcher, or undefined. A later token moves the age.
28
+ */
29
+ export declare function tokenAge(clock: Clock, start?: unknown): TokenAge;
30
+ //# sourceMappingURL=token-age.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-age.d.ts","sourceRoot":"","sources":["../../src/storage/token-age.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAKhD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIrE;AAYD,2CAA2C;AAC3C,MAAM,WAAW,QAAQ;IACvB,iIAAiI;IACjI,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,4HAA4H;IAC5H,KAAK,IAAI,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAahE"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * The age of the resume token of a change watcher (roadmap CLI-110). A token moves when its cluster time is later
3
+ * than the cluster time of the token before it. The same token again, or a new token at the same cluster time,
4
+ * does not move it. A user reads a stalled feed from the age, without a sampler of its own.
5
+ *
6
+ * The package does not export this module. `watchDatabaseChanges()` and `watchStorageChanges()` give the age as
7
+ * `tokenAgeMs` on their handles.
8
+ */
9
+ /** The type byte of a timestamp at the start of the key of a resume token of the server. */
10
+ const TIMESTAMP_TYPE = "82";
11
+ /**
12
+ * This function gives the cluster time of a resume token as 16 hex digits, or undefined for a token of another form.
13
+ * The key of a token of the server starts with the type byte `82` and the 8 bytes of the timestamp, high byte first.
14
+ * So the order of two of these texts is the order of their cluster times.
15
+ */
16
+ export function clusterTimeOfToken(token) {
17
+ const data = typeof token === "object" && token !== null ? token._data : undefined;
18
+ if (typeof data !== "string" || !data.startsWith(TIMESTAMP_TYPE) || !/^[0-9a-f]{16}$/i.test(data.slice(2, 18)))
19
+ return undefined;
20
+ return data.slice(2, 18).toLowerCase();
21
+ }
22
+ /** This function tells if `next` is later than `before`. A token without a cluster time moves when it is a different token. */
23
+ function moves(next, before) {
24
+ if (next === undefined || next === null)
25
+ return false;
26
+ if (before === undefined || before === null)
27
+ return true;
28
+ const nextTime = clusterTimeOfToken(next);
29
+ const beforeTime = clusterTimeOfToken(before);
30
+ if (nextTime !== undefined && beforeTime !== undefined)
31
+ return nextTime > beforeTime;
32
+ return JSON.stringify(next) !== JSON.stringify(before);
33
+ }
34
+ /**
35
+ * This function starts the age of the token of one watcher at the time of the clock.
36
+ *
37
+ * @param clock - The clock of the watcher
38
+ * @param start - The start token of the watcher, or undefined. A later token moves the age.
39
+ */
40
+ export function tokenAge(clock, start) {
41
+ let last = start;
42
+ let movedAt = clock.now();
43
+ return {
44
+ note(token) {
45
+ if (!moves(token, last))
46
+ return;
47
+ last = token;
48
+ movedAt = clock.now();
49
+ },
50
+ ageMs() {
51
+ return clock.now() - movedAt;
52
+ },
53
+ };
54
+ }
55
+ //# sourceMappingURL=token-age.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-age.js","sourceRoot":"","sources":["../../src/storage/token-age.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,4FAA4F;AAC5F,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACjI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACzC,CAAC;AAED,+HAA+H;AAC/H,SAAS,KAAK,CAAC,IAAa,EAAE,MAAe;IAC3C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,QAAQ,GAAG,UAAU,CAAC;IACrF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAY,EAAE,KAAe;IACpD,IAAI,IAAI,GAAY,KAAK,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAC1B,OAAO;QACL,IAAI,CAAC,KAAc;YACjB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,OAAO;YAChC,IAAI,GAAG,KAAK,CAAC;YACb,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,KAAK;YACH,OAAO,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@procedures/mongo",
4
- "version": "0.52.3",
4
+ "version": "0.53.1",
5
5
  "description": "MongoDB as typed procedures: documents, bulk writes, distinct, explain, collections, indexes, aggregation, change streams and database info, with safe update and delete targets.",
6
6
  "keywords": [
7
7
  "mongodb",
@@ -64,12 +64,11 @@
64
64
  },
65
65
  "devDependencies": {
66
66
  "@mark1russell7/cue": "^2.1.1",
67
- "@mark1russell7/rigor-bench": "^0.2.28",
67
+ "@mark1russell7/rigor-bench": "^0.2.33",
68
68
  "@mark1russell7/rigor-generators": "^0.1.5",
69
69
  "@mark1russell7/rigor-statistics": "^0.1.9",
70
- "@mark1russell7/service": "^0.6.0",
71
- "@procedures/peer": "0.52.3",
72
- "@procedures/store": "0.52.3",
70
+ "@procedures/peer": "0.53.1",
71
+ "@procedures/store": "0.53.1",
73
72
  "@types/node": "^22.0.0",
74
73
  "typescript": "^7.0.2",
75
74
  "vitest": "^5.0.3"
@@ -78,10 +77,13 @@
78
77
  "procedures": "./dist/register.js"
79
78
  },
80
79
  "dependencies": {
81
- "@procedures/client": "0.52.3",
82
- "@procedures/collections": "0.52.3",
80
+ "@mark1russell7/collections": "^0.10.0",
81
+ "@procedures/client": "0.53.1",
82
+ "@procedures/collections": "0.53.1",
83
+ "@mark1russell7/service": "^0.8.3",
83
84
  "mongodb": "^7.0.0",
84
- "zod": "^4.6.5"
85
+ "zod": "^4.6.5",
86
+ "@mark1russell7/text": "^0.0.2"
85
87
  },
86
88
  "scripts": {
87
89
  "build": "tsc -b",
@@ -40,6 +40,7 @@
40
40
  */
41
41
  import type { ChangeStream, ChangeStreamDocument, ChangeStreamOptions, Db, Document, ResumeToken, Timestamp } from "mongodb";
42
42
  import { realClock, writeLog, type Cancel, type Clock, type LogFields, type Logger, type ResubscribeBackoff } from "@procedures/client";
43
+ import { tokenAge } from "./token-age.js";
43
44
  import { COMMAND_NOT_FOUND, LOST_TOKEN_CODES, backoffOf, codeOf, isPermanent, messageOf } from "./storage-hints.js";
44
45
  import { SAME_TOKEN_LIMIT, SPLIT_LARGE_EVENT_STAGE, UNKNOWN_STAGE_CODE, eventJoiner, sameTokenFaults } from "./split-events.js";
45
46
 
@@ -105,6 +106,11 @@ export interface DatabaseChangesWatch {
105
106
  readonly resumeToken: ResumeToken | undefined;
106
107
  /** True after `stop()`, an abort of `signal`, or an error that stops the watcher. */
107
108
  readonly stopped: boolean;
109
+ /**
110
+ * The milliseconds of `clock` since `resumeToken` last moved to a later cluster time, or since the start before the first move.
111
+ * The same cluster time again does not move it. A large value on an open watcher tells a stalled feed (roadmap CLI-110).
112
+ */
113
+ readonly tokenAgeMs: number;
108
114
  /** This method stops the watcher: it closes the stream and cancels the timer of a backoff. */
109
115
  stop(): Promise<void>;
110
116
  }
@@ -137,7 +143,7 @@ function collectionOf(change: Document): unknown {
137
143
  *
138
144
  * @param db - The database, or a function that gives it
139
145
  * @param options - The handlers, the start of the stream, its options, the backoff, the logger and the signal
140
- * @returns The handle: `ready`, `resumeToken`, `stopped` and `stop()`
146
+ * @returns The handle: `ready`, `resumeToken`, `stopped`, `tokenAgeMs` and `stop()`
141
147
  *
142
148
  * @example
143
149
  * ```typescript
@@ -172,6 +178,7 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
172
178
  let stopped = false;
173
179
  /** The token of the last change that `onChange` took, or of the last batch without events. */
174
180
  let token: ResumeToken | undefined = options.startAfter ?? options.resumeAfter;
181
+ const age = tokenAge(clock, token);
175
182
  /** True after a stream was open. */
176
183
  let opened = false;
177
184
  /** True after the server said that it has change streams. */
@@ -266,7 +273,10 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
266
273
  if (raw === null) {
267
274
  // A batch without events: its token is after each event that `onChange` took. In the middle of a split event, the token stays before it
268
275
  const batchToken = next.resumeToken;
269
- if (!joiner.partial && batchToken !== undefined && batchToken !== null) token = batchToken;
276
+ if (!joiner.partial && batchToken !== undefined && batchToken !== null) {
277
+ token = batchToken;
278
+ age.note(token);
279
+ }
270
280
  succeeded();
271
281
  continue;
272
282
  }
@@ -278,6 +288,7 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
278
288
  const change = result.change as TChange;
279
289
  if (change["operationType"] === "invalidate") {
280
290
  token = change["_id"];
291
+ age.note(token);
281
292
  return fail(Object.assign(new Error(`the change stream of the database ${database ?? ""} was invalidated`), { change }), { operationType: "invalidate" });
282
293
  }
283
294
  try {
@@ -286,6 +297,7 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
286
297
  throw new HandlerError(error, change);
287
298
  }
288
299
  token = change["_id"];
300
+ age.note(token);
289
301
  faults.reset();
290
302
  succeeded();
291
303
  }
@@ -354,7 +366,11 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
354
366
  continue;
355
367
  }
356
368
  // A fault before the first event of a stream with no token: the next stream starts at the first token of this stream (CLI-107)
357
- if (token === undefined && !gaveEvent && openToken !== undefined) token = openToken;
369
+ if (token === undefined && !gaveEvent && openToken !== undefined) {
370
+ token = openToken;
371
+ // The server gave this token, so it moves the age as each other token of the watcher does (CLI-110)
372
+ age.note(token);
373
+ }
358
374
  const code = codeOf(error);
359
375
  if (code !== undefined && LOST_TOKEN_CODES.has(code)) return fail(error, { code });
360
376
  if (code === UNKNOWN_STAGE_CODE && split) {
@@ -411,6 +427,9 @@ export function watchDatabaseChanges<TChange extends Document = ChangeStreamDocu
411
427
  get stopped(): boolean {
412
428
  return stopped;
413
429
  },
430
+ get tokenAgeMs(): number {
431
+ return age.ageMs();
432
+ },
414
433
  stop,
415
434
  };
416
435
  }
@@ -119,11 +119,13 @@ import {
119
119
  type StorageWriteOptions,
120
120
  type VersionConflict,
121
121
  } from "@procedures/collections";
122
- import { optionalMs, Semaphore, toMs, type Duration } from "@procedures/client";
122
+ import { semaphore, type Semaphore } from "@mark1russell7/collections";
123
+ import { optionalMs, toMs, type Duration } from "@procedures/client";
123
124
  import { ensureConnection } from "../connection.js";
124
125
  import { noteOwnNumbers, notePrunedIds, ownerOf } from "./own-writes.js";
125
126
  import { boundPipeline, cutResults, DEFAULT_PIPELINE_LIMITS, scopePipeline, type PipelineLimits } from "./pipeline-scope.js";
126
127
  import { CHANGE_READ_DIVISOR, poolShare } from "./pool-share.js";
128
+ import { escapeRegExp as escapeRegex } from "@mark1russell7/text";
127
129
 
128
130
  /** The fields of the storage in a stored document. */
129
131
  const KEY = "_key";
@@ -349,8 +351,8 @@ function enqueueWrite<R>(db: Db, name: string, task: () => Promise<R>): Promise<
349
351
  function withReadPermit<R>(db: Db, task: () => Promise<R>): Promise<R> {
350
352
  const owner = ownerOf(db);
351
353
  let reads = READS.get(owner);
352
- if (!reads) READS.set(owner, (reads = new Semaphore(poolShare(db, CHANGE_READ_DIVISOR))));
353
- return reads.withPermit(task);
354
+ if (!reads) READS.set(owner, (reads = semaphore(poolShare(db, CHANGE_READ_DIVISOR))));
355
+ return reads.run(task);
354
356
  }
355
357
 
356
358
  /**
@@ -588,10 +590,6 @@ export type RawAdoptionResult = RawAdoption | { readonly error: unknown };
588
590
  /** The most floor documents that `partitions()` reads. */
589
591
  const MAX_KNOWN_PARTITIONS = 10_000;
590
592
 
591
- function escapeRegex(text: string): string {
592
- return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
593
- }
594
-
595
593
  /** The reader of the parts of a storage. The class sets it, so it can read its private fields. */
596
594
  let sourceOfStorage: <T>(storage: MongoDocumentStorage<T>) => StorageChangeSource;
597
595
 
@@ -58,8 +58,10 @@
58
58
 
59
59
  import { createHash } from "node:crypto";
60
60
  import { isDeepStrictEqual } from "node:util";
61
+ import { backoffDelay, type Backoff } from "@mark1russell7/service/backoff";
61
62
  import { BSON, ObjectId, type AnyBulkWriteOperation, type ChangeStream, type ClientSession, type Collection, type Db, type Document } from "mongodb";
62
- import { collectionChangeTopic, ms, optionalMs, realClock, Semaphore, writeLog, type Cancel, type Clock, type CollectionChangeEvent, type Duration, type LogFields, type Logger } from "@procedures/client";
63
+ import { semaphore, type Semaphore } from "@mark1russell7/collections";
64
+ import { collectionChangeTopic, ms, optionalMs, realClock, writeLog, type Cancel, type Clock, type CollectionChangeEvent, type Duration, type LogFields, type Logger } from "@procedures/client";
63
65
  import { DEFAULT_STORED_FORM, DOCUMENT_STORAGE_FIELDS, MongoDocumentStorage, TOMBSTONE_FIELD, storageWriteTarget, type StorageWriteTarget, type StoredForm } from "./document-storage.js";
64
66
  import { scopePipeline } from "./pipeline-scope.js";
65
67
  import { poolShare } from "./pool-share.js";
@@ -309,6 +311,12 @@ function groups<T>(items: readonly T[]): T[][] {
309
311
  /** The most tries of a run in a transaction after a write conflict (code 112). After them, the run gives way, and comes back after `rewatch`. */
310
312
  const CONFLICT_RETRIES = 3;
311
313
 
314
+ /**
315
+ * The wait before try `attempt + 1` after a write conflict: from 50 to 100 ms after the first try, twice as long after each
316
+ * next try. The jitter keeps two processes that conflict apart.
317
+ */
318
+ export const CONFLICT_BACKOFF: Backoff = { base: 100, factor: 2, jitter: { kind: "subtract", fraction: 0.5 } };
319
+
312
320
  /** The most ids of a hint of a target not in a stored form. More ids give a reset hint. */
313
321
  const MAX_HINT_IDS = 10_000;
314
322
 
@@ -490,7 +498,7 @@ export class ViewMaterializer {
490
498
  /** The time of the last change of each partition with a timer: the end of the wait of the pass. */
491
499
  private readonly lastChange = new Map<string, number>();
492
500
  /** The passes that run at one time. A burst that reaches each partition does not fill the pool. */
493
- private passes = new Semaphore(MOST_PASSES);
501
+ private passes: Semaphore = semaphore(MOST_PASSES);
494
502
  /** The timers of the streams that open again, and of the ends of the grace times. */
495
503
  private readonly retries = new Set<Cancel>();
496
504
  private readonly clock: Clock;
@@ -641,7 +649,7 @@ export class ViewMaterializer {
641
649
  this.stopped = false;
642
650
  this.intake = true;
643
651
  this.db = await this.options.db();
644
- this.passes = new Semaphore(passLimit(this.db));
652
+ this.passes = semaphore(passLimit(this.db));
645
653
  // The stream of the views opens before the read of the views: a change between the two reaches both (roadmap O63)
646
654
  await this.watchViews();
647
655
  const count = await this.resync();
@@ -1093,7 +1101,7 @@ export class ViewMaterializer {
1093
1101
  this.timers.delete(partition);
1094
1102
  this.lastChange.delete(partition);
1095
1103
  if (!this.intake) return;
1096
- void this.serial(partition, () => this.passes.withPermit(() => this.pass(partition))).catch((error: unknown) =>
1104
+ void this.serial(partition, () => this.passes.run(() => this.pass(partition))).catch((error: unknown) =>
1097
1105
  this.log("error", "The pass failed", { partition, error }, `the pass of ${partition} failed: ${String((error as Error)?.message ?? error)}`)
1098
1106
  );
1099
1107
  });
@@ -1220,7 +1228,7 @@ export class ViewMaterializer {
1220
1228
  if (isWriteConflict(error)) {
1221
1229
  // A write conflict tries again a few times after a short wait, so a steady stream of writes does not starve the view
1222
1230
  if (attempt < CONFLICT_RETRIES) {
1223
- await this.pause(25 * 2 ** attempt * (1 + Math.random()));
1231
+ await this.pause(backoffDelay(CONFLICT_BACKOFF, attempt));
1224
1232
  continue;
1225
1233
  }
1226
1234
  throw new PassSuperseded(`another process wrote the view at the same time (${String((error as Error)?.message ?? error)})`);
@@ -68,6 +68,7 @@
68
68
  * - Change streams need a replica set or a sharded cluster. The watcher asks the server (`hello`)
69
69
  * before the first open: on a single server, `ready` rejects (code 40573).
70
70
  */
71
+ import { backoffDelay, type Backoff } from "@mark1russell7/service/backoff";
71
72
  import { MongoAPIError, MongoParseError, BSON, type ChangeStream, type Db, type Document } from "mongodb";
72
73
  import {
73
74
  collectionChangeTopic,
@@ -94,6 +95,7 @@ import {
94
95
  } from "./document-storage.js";
95
96
  import { SAME_TOKEN_LIMIT, SPLIT_LARGE_EVENT_STAGE, UNKNOWN_STAGE_CODE, eventJoiner, sameTokenFaults } from "./split-events.js";
96
97
  import { trackOwnNumbers, type OwnNumbers } from "./own-writes.js";
98
+ import { tokenAge } from "./token-age.js";
97
99
 
98
100
  /** The change of one item of a change event of a `MongoDocumentStorage` collection, from `storageChangeOf()`. */
99
101
  export interface StorageChange {
@@ -230,6 +232,11 @@ export interface StorageChangesWatch {
230
232
  * opens the stream again after the other errors.
231
233
  */
232
234
  readonly ready: Promise<void>;
235
+ /**
236
+ * The milliseconds of the clock since the resume token of the stream last moved to a later cluster time, or since the start
237
+ * before the first move. The same cluster time again does not move it. A large value on an open watcher tells a stalled feed (roadmap CLI-110).
238
+ */
239
+ readonly tokenAgeMs: number;
233
240
  /** This method stops the watcher: it closes the stream and cancels the timer of a backoff. */
234
241
  stop(): Promise<void>;
235
242
  }
@@ -374,7 +381,10 @@ export function storageChangeOf(change: Document, form: StoredForm = DEFAULT_STO
374
381
  return { id, partition, deleted: false, raw: false, version, seq: written };
375
382
  }
376
383
 
377
- /** The delay before try `attempt` (0 for the first) of a backoff. */
384
+ /**
385
+ * The delay before try `attempt` (0 for the first) of a backoff. The `backoffDelay` function of
386
+ * `@mark1russell7/service` gives it: its first try is 1.
387
+ */
378
388
  export function backoffOf(options: ResubscribeBackoff | undefined): (attempt: number) => number {
379
389
  const initial = optionalMs(options?.initialDelay, "backoff.initialDelay") ?? 250;
380
390
  const max = optionalMs(options?.maxDelay, "backoff.maxDelay") ?? 30_000;
@@ -383,10 +393,8 @@ export function backoffOf(options: ResubscribeBackoff | undefined): (attempt: nu
383
393
  if (!(initial >= 0) || !(max >= initial)) throw new RangeError("backoff: initialDelay must be 0 or more, and maxDelay must be initialDelay or more");
384
394
  if (!(factor >= 1)) throw new RangeError("backoff: backoffMultiplier must be 1 or more");
385
395
  if (!(jitter >= 0 && jitter <= 1)) throw new RangeError("backoff: jitter must be from 0 to 1");
386
- return (attempt) => {
387
- const full = Math.min(max, initial * factor ** attempt);
388
- return full - full * jitter * Math.random();
389
- };
396
+ const policy: Backoff = { base: initial, factor, cap: max, jitter: { kind: "subtract", fraction: jitter } };
397
+ return (attempt) => backoffDelay(policy, attempt + 1);
390
398
  }
391
399
 
392
400
  /** The message of an error. */
@@ -491,6 +499,12 @@ export function watchStorageChanges<T>(storage: MongoDocumentStorage<T>, publish
491
499
  let stopped = false;
492
500
  let stream: ChangeStream | undefined;
493
501
  let token: unknown;
502
+ const age = tokenAge(clock);
503
+ /** This function sets the token of the watcher, and notes it for `tokenAgeMs`. */
504
+ const setToken = (next: unknown): void => {
505
+ token = next;
506
+ age.note(next);
507
+ };
494
508
  /** True after a stream was open: a new stream without a token can then miss changes. */
495
509
  let opened = false;
496
510
  let attempt = 0;
@@ -836,7 +850,7 @@ export function watchStorageChanges<T>(storage: MongoDocumentStorage<T>, publish
836
850
  };
837
851
 
838
852
  const onChange = (change: Document): void => {
839
- token = change["_id"];
853
+ setToken(change["_id"]);
840
854
  attempt = 0;
841
855
  faults.reset();
842
856
  const type = change["operationType"];
@@ -980,7 +994,7 @@ export function watchStorageChanges<T>(storage: MongoDocumentStorage<T>, publish
980
994
  if (!joiner.partial) {
981
995
  // The driver gives the token of a document before its change: fragment 1 puts the token back (audit 2026-11-08)
982
996
  tokenBefore = token;
983
- token = resumeToken;
997
+ setToken(resumeToken);
984
998
  }
985
999
  opened = true;
986
1000
  if (JSON.stringify(resumeToken) !== openToken) attempt = 0;
@@ -996,17 +1010,18 @@ export function watchStorageChanges<T>(storage: MongoDocumentStorage<T>, publish
996
1010
  const result = joiner.push(change);
997
1011
  if (result.kind === "part") {
998
1012
  // The first fragment of a split event: the token goes back to the token before the event
1013
+ // The token goes back with no note for `tokenAgeMs`: the age keeps the latest token that moved it
999
1014
  if ((change["splitEvent"] as { fragment?: unknown } | undefined)?.fragment === 1) token = tokenBefore;
1000
1015
  return;
1001
1016
  }
1002
1017
  if (result.kind === "missing") {
1003
1018
  // The stream started after a fragment: the event cannot be read, so the subscribers read the collection in full
1004
- token = result.change["_id"];
1019
+ setToken(result.change["_id"]);
1005
1020
  return gap(`a split event of ${source.collection} came without its first ${result.missing} fragments`, { missing: result.missing, resumeToken: true });
1006
1021
  }
1007
1022
  if (result.change["operationType"] === "invalidate") {
1008
1023
  // The collection was dropped or renamed: the stream starts after the invalidate event
1009
- token = result.change["_id"];
1024
+ setToken(result.change["_id"]);
1010
1025
  return end("ended (invalidate)");
1011
1026
  }
1012
1027
  onChange(result.change);
@@ -1020,6 +1035,9 @@ export function watchStorageChanges<T>(storage: MongoDocumentStorage<T>, publish
1020
1035
 
1021
1036
  return {
1022
1037
  ready,
1038
+ get tokenAgeMs(): number {
1039
+ return age.ageMs();
1040
+ },
1023
1041
  async stop(): Promise<void> {
1024
1042
  if (stopped) return;
1025
1043
  stopped = true;