@openlimiter/core 0.1.0 → 0.4.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.
- package/dist/cache.d.ts +64 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +132 -9
- package/dist/cache.js.map +1 -1
- package/dist/collection.d.ts +151 -0
- package/dist/collection.d.ts.map +1 -0
- package/dist/collection.js +218 -0
- package/dist/collection.js.map +1 -0
- package/dist/connection-state.d.ts +178 -0
- package/dist/connection-state.d.ts.map +1 -0
- package/dist/connection-state.js +304 -0
- package/dist/connection-state.js.map +1 -0
- package/dist/failures.d.ts +47 -0
- package/dist/failures.d.ts.map +1 -0
- package/dist/failures.js +76 -0
- package/dist/failures.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/merge.d.ts +1 -0
- package/dist/merge.d.ts.map +1 -1
- package/dist/merge.js +12 -4
- package/dist/merge.js.map +1 -1
- package/dist/normalizer.d.ts +21 -1
- package/dist/normalizer.d.ts.map +1 -1
- package/dist/normalizer.js +101 -2
- package/dist/normalizer.js.map +1 -1
- package/dist/schedule.d.ts +75 -0
- package/dist/schedule.d.ts.map +1 -0
- package/dist/schedule.js +131 -0
- package/dist/schedule.js.map +1 -0
- package/dist/types.d.ts +96 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +56 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/cache.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CacheState, type CacheSuppression, type CollectionReport } from "./collection.js";
|
|
1
2
|
import type { Snapshot } from "./types.js";
|
|
2
3
|
export declare const CACHE_FILE_NAME = "openlimiter-cache.json";
|
|
3
4
|
export declare const CACHE_LOCK_NAME = "openlimiter.lock";
|
|
@@ -30,8 +31,14 @@ export type JsonFileResult = {
|
|
|
30
31
|
export declare function readJsonFileSafely(file: string, maximumBytes?: number): Promise<JsonFileResult>;
|
|
31
32
|
export type CacheReadResult = {
|
|
32
33
|
ok: true;
|
|
34
|
+
/** The rows a surface may use: suppressed identities are already gone. */
|
|
33
35
|
snapshots: Snapshot[];
|
|
36
|
+
/** Rows that failed validation and were dropped. */
|
|
34
37
|
dropped: number;
|
|
38
|
+
/** Rows dropped because a drift suppression covers them. */
|
|
39
|
+
suppressed: number;
|
|
40
|
+
/** The standing suppressions, for a writer that has to preserve them. */
|
|
41
|
+
suppressions: CacheSuppression[];
|
|
35
42
|
} | {
|
|
36
43
|
ok: false;
|
|
37
44
|
reason: "missing" | "corrupt" | "unsafe";
|
|
@@ -42,8 +49,34 @@ export type CacheReadResult = {
|
|
|
42
49
|
* A row that fails validation is dropped and counted. The surviving rows are
|
|
43
50
|
* still returned, because one bad row is not a reason to forget every other
|
|
44
51
|
* provider. No value is ever repaired or invented.
|
|
52
|
+
*
|
|
53
|
+
* The rows that come back have already had drift suppressions applied, so
|
|
54
|
+
* there is no way for a caller to obtain the raw list and forget to filter it.
|
|
55
|
+
* That matters more than it looks: `buildAdvice` and every surface downstream
|
|
56
|
+
* of it read through here, which is what makes a drifted provider go unknown
|
|
57
|
+
* on the statusline, in the agent context and on the dashboard at the same
|
|
58
|
+
* instant rather than only on a connection card.
|
|
59
|
+
*
|
|
60
|
+
* A suppression list that cannot be believed empties the whole document. See
|
|
61
|
+
* `readSuppressions`: the failure direction has to be unknown, because the
|
|
62
|
+
* alternative is showing a number the cache itself was trying to withdraw.
|
|
45
63
|
*/
|
|
46
64
|
export declare function readSnapshotCache(directory?: string): Promise<CacheReadResult>;
|
|
65
|
+
/**
|
|
66
|
+
* The cache document as stored, suppressions included and unfiltered.
|
|
67
|
+
*
|
|
68
|
+
* `readSnapshotCache` above is what a surface uses, and it hides suppressed
|
|
69
|
+
* rows. A writer needs the other thing: the rows exactly as they are on disk,
|
|
70
|
+
* so a fold can remove them properly instead of merging around a filtered view
|
|
71
|
+
* and quietly resurrecting what it could not see.
|
|
72
|
+
*/
|
|
73
|
+
export declare function readCacheState(directory?: string): Promise<{
|
|
74
|
+
ok: true;
|
|
75
|
+
state: CacheState;
|
|
76
|
+
} | {
|
|
77
|
+
ok: false;
|
|
78
|
+
reason: "missing" | "corrupt" | "unsafe";
|
|
79
|
+
}>;
|
|
47
80
|
/**
|
|
48
81
|
* Write a file so that a reader sees either the previous content or the new
|
|
49
82
|
* content, never a partial write.
|
|
@@ -52,6 +85,22 @@ export declare function readSnapshotCache(directory?: string): Promise<CacheRead
|
|
|
52
85
|
* after the rename cannot leave an empty file behind.
|
|
53
86
|
*/
|
|
54
87
|
export declare function writeFileAtomically(target: string, contents: string): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Document version of the snapshot cache.
|
|
90
|
+
*
|
|
91
|
+
* It stayed at 1 through `accountId` and `provenance`, because both were
|
|
92
|
+
* optional fields an old reader could ignore without being wrong.
|
|
93
|
+
*
|
|
94
|
+
* Version 2 is the first change that fails that test. A `suppressions` array is
|
|
95
|
+
* an instruction to DISTRUST rows that are still present in the document, so a
|
|
96
|
+
* reader that ignores it does not miss a nicety, it shows a number the writer
|
|
97
|
+
* was withdrawing. That is a misread rather than an omission, which is exactly
|
|
98
|
+
* what the version number is for.
|
|
99
|
+
*
|
|
100
|
+
* A version 1 document is still read, and read correctly: it has no
|
|
101
|
+
* suppressions, which is true of it.
|
|
102
|
+
*/
|
|
103
|
+
export declare const CACHE_DOCUMENT_VERSION = 2;
|
|
55
104
|
/**
|
|
56
105
|
* Replace the snapshot cache.
|
|
57
106
|
*
|
|
@@ -73,4 +122,19 @@ export interface CacheMergeResult {
|
|
|
73
122
|
* renders on every keystroke from churning the disk.
|
|
74
123
|
*/
|
|
75
124
|
export declare function mergeSnapshotCache(incoming: readonly Snapshot[], directory?: string): Promise<CacheMergeResult>;
|
|
125
|
+
/**
|
|
126
|
+
* Fold one collection report into the cache under the lock.
|
|
127
|
+
*
|
|
128
|
+
* The verb the desktop and the command line tool should both reach for, because
|
|
129
|
+
* it is the only one that can record a drift. `mergeSnapshotCache` above says
|
|
130
|
+
* "here are some rows"; this says "here is what a run of one provider actually
|
|
131
|
+
* achieved", and only the second can express that a provider stopped making
|
|
132
|
+
* sense. Reading, folding and writing all happen inside one lock, so a drift
|
|
133
|
+
* and a concurrent refresh cannot interleave into a document where a
|
|
134
|
+
* suppression exists and the row it suppresses has already been replaced.
|
|
135
|
+
*/
|
|
136
|
+
export declare function applyCollectionReportToCache(report: CollectionReport, directory?: string): Promise<{
|
|
137
|
+
state: CacheState;
|
|
138
|
+
written: boolean;
|
|
139
|
+
}>;
|
|
76
140
|
//# sourceMappingURL=cache.d.ts.map
|
package/dist/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/cache.js
CHANGED
|
@@ -3,6 +3,7 @@ import { constants } from "node:fs";
|
|
|
3
3
|
import { chmod, lstat, mkdir, open, readFile, rename, unlink } from "node:fs/promises";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
|
+
import { applyCollectionReport, readSuppressions, visibleSnapshots } from "./collection.js";
|
|
6
7
|
import { MAX_CACHE_ENTRIES, mergeSnapshots } from "./merge.js";
|
|
7
8
|
import { canonicalJson, normalizeMeter, normalizeMeters } from "./normalizer.js";
|
|
8
9
|
export const CACHE_FILE_NAME = "openlimiter-cache.json";
|
|
@@ -111,6 +112,17 @@ export async function readJsonFileSafely(file, maximumBytes = MAX_JSON_FILE_BYTE
|
|
|
111
112
|
* A row that fails validation is dropped and counted. The surviving rows are
|
|
112
113
|
* still returned, because one bad row is not a reason to forget every other
|
|
113
114
|
* provider. No value is ever repaired or invented.
|
|
115
|
+
*
|
|
116
|
+
* The rows that come back have already had drift suppressions applied, so
|
|
117
|
+
* there is no way for a caller to obtain the raw list and forget to filter it.
|
|
118
|
+
* That matters more than it looks: `buildAdvice` and every surface downstream
|
|
119
|
+
* of it read through here, which is what makes a drifted provider go unknown
|
|
120
|
+
* on the statusline, in the agent context and on the dashboard at the same
|
|
121
|
+
* instant rather than only on a connection card.
|
|
122
|
+
*
|
|
123
|
+
* A suppression list that cannot be believed empties the whole document. See
|
|
124
|
+
* `readSuppressions`: the failure direction has to be unknown, because the
|
|
125
|
+
* alternative is showing a number the cache itself was trying to withdraw.
|
|
114
126
|
*/
|
|
115
127
|
export async function readSnapshotCache(directory = resolveStateDirectory()) {
|
|
116
128
|
try {
|
|
@@ -129,8 +141,68 @@ export async function readSnapshotCache(directory = resolveStateDirectory()) {
|
|
|
129
141
|
return { ok: false, reason: "corrupt" };
|
|
130
142
|
if (rawSnapshots.length > MAX_CACHE_ENTRIES)
|
|
131
143
|
return { ok: false, reason: "corrupt" };
|
|
132
|
-
const
|
|
133
|
-
|
|
144
|
+
const version = document.value["version"];
|
|
145
|
+
/* Absent is version 1, which predates the field. A version this build does
|
|
146
|
+
not know is refused rather than read with today's meanings. */
|
|
147
|
+
if (version !== undefined && version !== 1 && version !== CACHE_DOCUMENT_VERSION) {
|
|
148
|
+
return { ok: false, reason: "corrupt" };
|
|
149
|
+
}
|
|
150
|
+
const validated = normalizeMeters(rawSnapshots);
|
|
151
|
+
const dropped = rawSnapshots.length - validated.length;
|
|
152
|
+
const read = readSuppressions(document.value["suppressions"]);
|
|
153
|
+
if (!read.ok) {
|
|
154
|
+
/* Unreadable suppressions make every identity in the document unknown.
|
|
155
|
+
Nothing is repaired, and nothing is shown on the strength of a list we
|
|
156
|
+
could not parse. */
|
|
157
|
+
return { ok: true, snapshots: [], dropped, suppressed: validated.length, suppressions: [] };
|
|
158
|
+
}
|
|
159
|
+
const snapshots = visibleSnapshots({
|
|
160
|
+
snapshots: validated,
|
|
161
|
+
suppressions: read.suppressions
|
|
162
|
+
});
|
|
163
|
+
return {
|
|
164
|
+
ok: true,
|
|
165
|
+
snapshots,
|
|
166
|
+
dropped,
|
|
167
|
+
suppressed: validated.length - snapshots.length,
|
|
168
|
+
suppressions: read.suppressions
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* The cache document as stored, suppressions included and unfiltered.
|
|
173
|
+
*
|
|
174
|
+
* `readSnapshotCache` above is what a surface uses, and it hides suppressed
|
|
175
|
+
* rows. A writer needs the other thing: the rows exactly as they are on disk,
|
|
176
|
+
* so a fold can remove them properly instead of merging around a filtered view
|
|
177
|
+
* and quietly resurrecting what it could not see.
|
|
178
|
+
*/
|
|
179
|
+
export async function readCacheState(directory = resolveStateDirectory()) {
|
|
180
|
+
try {
|
|
181
|
+
await rejectSymlink(directory);
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
return { ok: false, reason: "unsafe" };
|
|
185
|
+
}
|
|
186
|
+
const document = await readJsonFileSafely(path.join(directory, CACHE_FILE_NAME));
|
|
187
|
+
if (!document.ok)
|
|
188
|
+
return document;
|
|
189
|
+
if (!isRecord(document.value))
|
|
190
|
+
return { ok: false, reason: "corrupt" };
|
|
191
|
+
const rawSnapshots = document.value["snapshots"];
|
|
192
|
+
if (!Array.isArray(rawSnapshots))
|
|
193
|
+
return { ok: false, reason: "corrupt" };
|
|
194
|
+
if (rawSnapshots.length > MAX_CACHE_ENTRIES)
|
|
195
|
+
return { ok: false, reason: "corrupt" };
|
|
196
|
+
const read = readSuppressions(document.value["suppressions"]);
|
|
197
|
+
if (!read.ok)
|
|
198
|
+
return { ok: false, reason: "corrupt" };
|
|
199
|
+
return {
|
|
200
|
+
ok: true,
|
|
201
|
+
state: {
|
|
202
|
+
snapshots: normalizeMeters(rawSnapshots),
|
|
203
|
+
suppressions: read.suppressions
|
|
204
|
+
}
|
|
205
|
+
};
|
|
134
206
|
}
|
|
135
207
|
function delay(milliseconds) {
|
|
136
208
|
return new Promise((resolve) => {
|
|
@@ -283,10 +355,31 @@ async function withCacheLock(directory, action) {
|
|
|
283
355
|
await releaseLock(lockPath, token);
|
|
284
356
|
}
|
|
285
357
|
}
|
|
286
|
-
|
|
358
|
+
/**
|
|
359
|
+
* Document version of the snapshot cache.
|
|
360
|
+
*
|
|
361
|
+
* It stayed at 1 through `accountId` and `provenance`, because both were
|
|
362
|
+
* optional fields an old reader could ignore without being wrong.
|
|
363
|
+
*
|
|
364
|
+
* Version 2 is the first change that fails that test. A `suppressions` array is
|
|
365
|
+
* an instruction to DISTRUST rows that are still present in the document, so a
|
|
366
|
+
* reader that ignores it does not miss a nicety, it shows a number the writer
|
|
367
|
+
* was withdrawing. That is a misread rather than an omission, which is exactly
|
|
368
|
+
* what the version number is for.
|
|
369
|
+
*
|
|
370
|
+
* A version 1 document is still read, and read correctly: it has no
|
|
371
|
+
* suppressions, which is true of it.
|
|
372
|
+
*/
|
|
373
|
+
export const CACHE_DOCUMENT_VERSION = 2;
|
|
374
|
+
async function replaceCache(directory, snapshots, suppressions = []) {
|
|
287
375
|
const file = path.join(directory, CACHE_FILE_NAME);
|
|
288
376
|
await rejectSymlink(file);
|
|
289
|
-
|
|
377
|
+
/* The suppressions key is written only when there is something to say, so a
|
|
378
|
+
machine that has never drifted keeps writing the document it always did. */
|
|
379
|
+
const document = suppressions.length === 0
|
|
380
|
+
? { snapshots, version: CACHE_DOCUMENT_VERSION }
|
|
381
|
+
: { snapshots, suppressions, version: CACHE_DOCUMENT_VERSION };
|
|
382
|
+
await writeFileAtomically(file, canonicalJson(document));
|
|
290
383
|
}
|
|
291
384
|
/**
|
|
292
385
|
* Replace the snapshot cache.
|
|
@@ -312,15 +405,45 @@ export async function writeSnapshotCache(snapshots, directory = resolveStateDire
|
|
|
312
405
|
export async function mergeSnapshotCache(incoming, directory = resolveStateDirectory()) {
|
|
313
406
|
rejectOutOfBounds(incoming);
|
|
314
407
|
return await withCacheLock(directory, async () => {
|
|
315
|
-
const cached = await
|
|
316
|
-
const
|
|
317
|
-
|
|
318
|
-
|
|
408
|
+
const cached = await readCacheState(directory);
|
|
409
|
+
const state = cached.ok
|
|
410
|
+
? cached.state
|
|
411
|
+
: { snapshots: [], suppressions: [] };
|
|
412
|
+
const merged = mergeSnapshots(state.snapshots, incoming);
|
|
413
|
+
if (canonicalJson(merged) === canonicalJson(state.snapshots)) {
|
|
319
414
|
return { merged, written: false };
|
|
320
415
|
}
|
|
321
416
|
rejectOutOfBounds(merged);
|
|
322
|
-
await replaceCache(directory, merged);
|
|
417
|
+
await replaceCache(directory, merged, state.suppressions);
|
|
323
418
|
return { merged, written: true };
|
|
324
419
|
});
|
|
325
420
|
}
|
|
421
|
+
/**
|
|
422
|
+
* Fold one collection report into the cache under the lock.
|
|
423
|
+
*
|
|
424
|
+
* The verb the desktop and the command line tool should both reach for, because
|
|
425
|
+
* it is the only one that can record a drift. `mergeSnapshotCache` above says
|
|
426
|
+
* "here are some rows"; this says "here is what a run of one provider actually
|
|
427
|
+
* achieved", and only the second can express that a provider stopped making
|
|
428
|
+
* sense. Reading, folding and writing all happen inside one lock, so a drift
|
|
429
|
+
* and a concurrent refresh cannot interleave into a document where a
|
|
430
|
+
* suppression exists and the row it suppresses has already been replaced.
|
|
431
|
+
*/
|
|
432
|
+
export async function applyCollectionReportToCache(report, directory = resolveStateDirectory()) {
|
|
433
|
+
if (report.ok)
|
|
434
|
+
rejectOutOfBounds(report.snapshots);
|
|
435
|
+
return await withCacheLock(directory, async () => {
|
|
436
|
+
const cached = await readCacheState(directory);
|
|
437
|
+
const before = cached.ok
|
|
438
|
+
? cached.state
|
|
439
|
+
: { snapshots: [], suppressions: [] };
|
|
440
|
+
const after = applyCollectionReport(before, report);
|
|
441
|
+
if (canonicalJson(after) === canonicalJson(before)) {
|
|
442
|
+
return { state: after, written: false };
|
|
443
|
+
}
|
|
444
|
+
rejectOutOfBounds(after.snapshots);
|
|
445
|
+
await replaceCache(directory, after.snapshots, after.suppressions);
|
|
446
|
+
return { state: after, written: true };
|
|
447
|
+
});
|
|
448
|
+
}
|
|
326
449
|
//# sourceMappingURL=cache.js.map
|
package/dist/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { snapshotIdentity } from "./merge.js";
|
|
2
|
+
import type { ProviderCode, Snapshot } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* What one collection run achieved, and what the cache does about it.
|
|
5
|
+
*
|
|
6
|
+
* The product's whole honesty problem in one file. A provider answering with a
|
|
7
|
+
* 200 is not a reading, and a provider answering with a well formed body whose
|
|
8
|
+
* meaning has changed is worse than a provider answering with nothing: the
|
|
9
|
+
* first is visibly unknown, the second is confidently wrong. So a run reports
|
|
10
|
+
* what it achieved rather than what it received, and drift is a first class
|
|
11
|
+
* outcome with a first class consequence.
|
|
12
|
+
*
|
|
13
|
+
* That consequence is a SUPPRESSION. Removing the affected rows is not enough
|
|
14
|
+
* on its own, because a cache is shared: the desktop, the command line tool,
|
|
15
|
+
* the adapters and the dashboard all read it, and any one of them could write a
|
|
16
|
+
* stale row back before the others noticed. A suppression is a standing
|
|
17
|
+
* instruction in the document itself, so every reader on the machine reaches
|
|
18
|
+
* the same unknown at the same instant, and a row that predates it can never
|
|
19
|
+
* become visible again.
|
|
20
|
+
*
|
|
21
|
+
* Everything here is pure: no clock, no file system, no network. The caller
|
|
22
|
+
* supplies the instant, so a whole history can be replayed and land on the same
|
|
23
|
+
* answer every time.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Why a collection run produced nothing usable.
|
|
27
|
+
*
|
|
28
|
+
* `drift` is separated from every other reason on purpose, and is the only one
|
|
29
|
+
* that suppresses. The rest are ordinary interruptions: the provider was busy,
|
|
30
|
+
* the machine was offline, a credential lapsed. None of those say anything
|
|
31
|
+
* about whether the reading we already hold is still true, so none of them
|
|
32
|
+
* throws it away; the reading ages out through the ordinary freshness rule
|
|
33
|
+
* instead. Drift is the one that says the previous reading's MEANING is in
|
|
34
|
+
* doubt, and that cannot be waited out.
|
|
35
|
+
*/
|
|
36
|
+
export declare const COLLECTION_FAILURE_REASONS: readonly ["drift", "network", "authentication", "rate_limited", "remote_error", "local_io"];
|
|
37
|
+
export type CollectionFailureReason = (typeof COLLECTION_FAILURE_REASONS)[number];
|
|
38
|
+
export type CollectionReport = {
|
|
39
|
+
ok: true;
|
|
40
|
+
provider: ProviderCode;
|
|
41
|
+
accountId?: string;
|
|
42
|
+
observedAt: string;
|
|
43
|
+
snapshots: readonly Snapshot[];
|
|
44
|
+
} | {
|
|
45
|
+
ok: false;
|
|
46
|
+
provider: ProviderCode;
|
|
47
|
+
accountId?: string;
|
|
48
|
+
observedAt: string;
|
|
49
|
+
reason: CollectionFailureReason;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* A standing instruction to distrust one identity's cached rows.
|
|
53
|
+
*
|
|
54
|
+
* `reason` is a single literal rather than the full failure vocabulary,
|
|
55
|
+
* deliberately: drift is the only failure that suppresses, and a type that
|
|
56
|
+
* could hold "network" would invite a future caller to suppress on a dropped
|
|
57
|
+
* packet, which would throw away a perfectly good reading every time a train
|
|
58
|
+
* went into a tunnel.
|
|
59
|
+
*/
|
|
60
|
+
export interface CacheSuppression {
|
|
61
|
+
provider: ProviderCode;
|
|
62
|
+
accountId?: string;
|
|
63
|
+
reason: "drift";
|
|
64
|
+
suppressedAt: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* How many suppressions one cache document may carry.
|
|
68
|
+
*
|
|
69
|
+
* The same order of magnitude as the row bound, because there is at most one
|
|
70
|
+
* suppression per identity and identities are what rows are keyed by. A
|
|
71
|
+
* document claiming more than this is not a cache with a lot of drift, it is a
|
|
72
|
+
* document somebody wrote by hand.
|
|
73
|
+
*/
|
|
74
|
+
export declare const MAX_CACHE_SUPPRESSIONS = 64;
|
|
75
|
+
/** The cache as this module reasons about it: rows, and what to distrust. */
|
|
76
|
+
export interface CacheState {
|
|
77
|
+
snapshots: readonly Snapshot[];
|
|
78
|
+
suppressions: readonly CacheSuppression[];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The one place provider and account identity is decided.
|
|
82
|
+
*
|
|
83
|
+
* A row, a report and a suppression all have to agree on what "the same thing"
|
|
84
|
+
* means, and the way that goes wrong is three near identical comparisons in
|
|
85
|
+
* three files, one of which forgets that an absent account is not the account
|
|
86
|
+
* called "default". So there is one function, everything calls it, and an
|
|
87
|
+
* absent account keys exactly as it always did.
|
|
88
|
+
*/
|
|
89
|
+
export declare function collectionIdentity(provider: ProviderCode, accountId?: string): string;
|
|
90
|
+
/** Whether this snapshot belongs to this provider and account. */
|
|
91
|
+
export declare function snapshotBelongsTo(snapshot: Snapshot, provider: ProviderCode, accountId?: string): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* A suppression document as read back from disk.
|
|
94
|
+
*
|
|
95
|
+
* `ok: false` is not "there were none". It means the suppression data could not
|
|
96
|
+
* be believed, and since a suppression is the only thing standing between a
|
|
97
|
+
* stale row and a surface, a suppression list that cannot be read makes every
|
|
98
|
+
* row in that document unknown. That is the fail closed direction: the cost of
|
|
99
|
+
* being wrong here is showing a number that is no longer true, and the cost of
|
|
100
|
+
* being right is one refresh cycle of honest unknown.
|
|
101
|
+
*/
|
|
102
|
+
export type SuppressionReadResult = {
|
|
103
|
+
ok: true;
|
|
104
|
+
suppressions: CacheSuppression[];
|
|
105
|
+
} | {
|
|
106
|
+
ok: false;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Read the suppression list out of a cache document.
|
|
110
|
+
*
|
|
111
|
+
* Absent is the ordinary case and reads as an empty list: a document written
|
|
112
|
+
* before suppressions existed has none, which is true. Anything present and
|
|
113
|
+
* unreadable is refused whole rather than partially salvaged, because a
|
|
114
|
+
* half read suppression list would silently un suppress whichever entries
|
|
115
|
+
* failed to parse, which is exactly the value it exists to prevent.
|
|
116
|
+
*/
|
|
117
|
+
export declare function readSuppressions(value: unknown): SuppressionReadResult;
|
|
118
|
+
/**
|
|
119
|
+
* Fold one collection report into the cache.
|
|
120
|
+
*
|
|
121
|
+
* Four rules, one per kind of outcome, and no fifth:
|
|
122
|
+
*
|
|
123
|
+
* 1. A successful report replaces every row for its identity and clears that
|
|
124
|
+
* identity's suppression. A provider that has started making sense again
|
|
125
|
+
* is trusted again, and only a real parse can say that.
|
|
126
|
+
* 2. A drift report removes those rows and records the suppression, replacing
|
|
127
|
+
* any earlier one, so the instant always reflects the latest drift.
|
|
128
|
+
* 3. Every other failure changes nothing at all. The rows we hold stay, and
|
|
129
|
+
* age out through the ordinary freshness rule.
|
|
130
|
+
* 4. A report whose instant cannot be read is not applied. An unreadable
|
|
131
|
+
* instant cannot be compared with a row's observation, so it could neither
|
|
132
|
+
* suppress honestly nor be cleared honestly.
|
|
133
|
+
*/
|
|
134
|
+
export declare function applyCollectionReport(state: CacheState, report: CollectionReport): CacheState;
|
|
135
|
+
/**
|
|
136
|
+
* The rows a surface may actually see.
|
|
137
|
+
*
|
|
138
|
+
* A row survives only when nothing suppresses its identity, or when it was
|
|
139
|
+
* observed strictly AFTER the suppression that does. Strictly after, not at or
|
|
140
|
+
* after: a row observed in the same millisecond as the drift that suppressed it
|
|
141
|
+
* is the very row the drift was about.
|
|
142
|
+
*
|
|
143
|
+
* Every read goes through here, which is what makes drift instant everywhere.
|
|
144
|
+
* `buildAdvice` is handed the result of this function and never the raw rows,
|
|
145
|
+
* so a suppressed provider is reported unknown by the statusline, the agent
|
|
146
|
+
* context, the dashboard and the tray in the same tick.
|
|
147
|
+
*/
|
|
148
|
+
export declare function visibleSnapshots(state: CacheState): Snapshot[];
|
|
149
|
+
/** Identity, exported for the cache writer that has to key rows the same way. */
|
|
150
|
+
export { snapshotIdentity };
|
|
151
|
+
//# sourceMappingURL=collection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,gBAAgB,EAAqB,MAAM,YAAY,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B,6FAO7B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,MAAM,gBAAgB,GACxB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;CAChC,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,uBAAuB,CAAC;CACjC,CAAC;AAEN;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,KAAoB,CAAC;AAExD,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC/B,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAER;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAMT;AAWD;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,gBAAgB,EAAE,CAAA;CAAE,GAC9C;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AASlB;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CA2BtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,gBAAgB,GACvB,UAAU,CAqCZ;AAeD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,EAAE,CAe9D;AAED,iFAAiF;AACjF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|