@adea-ai/plugins 3.0.10 → 4.0.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.
- package/README.md +18 -11
- package/dist/agent-plugins-catalog.d.ts +2 -3
- package/dist/agent-plugins-catalog.js +2 -10
- package/dist/agent-plugins-catalog.js.map +1 -1
- package/dist/catalog-store.d.ts +81 -0
- package/dist/catalog-store.js +487 -0
- package/dist/catalog-store.js.map +1 -0
- package/dist/consumer-index.d.ts +1 -1
- package/dist/consumer-index.js +17 -7
- package/dist/consumer-index.js.map +1 -1
- package/dist/display-name.js +3 -2
- package/dist/display-name.js.map +1 -1
- package/dist/harness.d.ts +50 -9
- package/dist/harness.js +190 -147
- package/dist/harness.js.map +1 -1
- package/dist/icon-mirror.d.ts +2 -2
- package/dist/icon-mirror.js +38 -25
- package/dist/icon-mirror.js.map +1 -1
- package/dist/icons.js +5 -27
- package/dist/icons.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.js +103 -88
- package/dist/index.js.map +1 -1
- package/dist/publication.d.ts +8 -11
- package/dist/publication.js +8 -11
- package/dist/publication.js.map +1 -1
- package/dist/schema.d.ts +0 -40
- package/dist/schema.js +0 -36
- package/dist/schema.js.map +1 -1
- package/dist/site-icons.d.ts +2 -0
- package/dist/site-icons.js +46 -9
- package/dist/site-icons.js.map +1 -1
- package/dist/source-digest.d.ts +2 -0
- package/dist/source-digest.js +12 -0
- package/dist/source-digest.js.map +1 -0
- package/dist/sources.js +3 -3
- package/dist/sources.js.map +1 -1
- package/native/build-provenance.txt +5 -5
- package/native/staged-reader-win32-arm64.node +0 -0
- package/native/staged-reader-win32-x64.node +0 -0
- package/package.json +4 -9
- package/src/agent-plugins-catalog.ts +3 -10
- package/src/artifacts.test.ts +80 -0
- package/src/catalog-installation.test.ts +1 -1
- package/src/catalog-store.ts +546 -0
- package/src/consumer-index.test.ts +125 -0
- package/src/consumer-index.ts +23 -8
- package/src/default-head.test.ts +143 -0
- package/src/display-name.test.ts +8 -0
- package/src/display-name.ts +3 -2
- package/src/{agent-plugins-harness.test.ts → harness.test.ts} +1 -1
- package/src/harness.ts +249 -170
- package/src/icon-mirror.ts +36 -23
- package/src/icons.test.ts +5 -0
- package/src/icons.ts +6 -29
- package/src/index.test.ts +272 -40
- package/src/index.ts +131 -94
- package/src/manifest-retry.test.ts +49 -0
- package/src/portable-catalog.test.ts +8 -5
- package/src/publication.ts +8 -11
- package/src/schema.ts +0 -40
- package/src/site-icon-fallback.test.ts +36 -19
- package/src/site-icons.test.ts +104 -0
- package/src/site-icons.ts +47 -9
- package/src/source-config-sync.test.ts +84 -0
- package/src/source-digest.test.ts +101 -0
- package/src/source-digest.ts +14 -0
- package/src/sources-json.test.ts +53 -0
- package/src/sources.ts +3 -3
- package/src/upstream-headers.test.ts +31 -7
- package/src/write-artifacts.test.ts +375 -0
- package/dist/agent-plugins-harness.d.ts +0 -54
- package/dist/agent-plugins-harness.js +0 -212
- package/dist/agent-plugins-harness.js.map +0 -1
- package/src/agent-plugins-harness.ts +0 -281
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Catalog output coordination and publication.
|
|
3
|
+
*
|
|
4
|
+
* Contract (see docs/architecture.md, "Catalog publication"):
|
|
5
|
+
*
|
|
6
|
+
* - Every writer and every coordinated reader of one output directory uses a
|
|
7
|
+
* lock directory that sits beside the output, in the output's real parent.
|
|
8
|
+
* The lock is keyed by the output, never by `TMPDIR`, so processes with
|
|
9
|
+
* different temporary directories, users or working directories still meet.
|
|
10
|
+
* - Supported filesystems are local filesystems where `mkdir` and same-directory
|
|
11
|
+
* `rename` are atomic: Linux (ext4, xfs, btrfs, tmpfs, overlayfs), macOS
|
|
12
|
+
* (APFS, HFS+) and Windows (NTFS, ReFS). Network filesystems are not
|
|
13
|
+
* supported: their lock leases depend on clocks and caches this module does
|
|
14
|
+
* not control.
|
|
15
|
+
* - A sync reads a base snapshot under the lock, builds without it, and then
|
|
16
|
+
* publishes only if the output still has the same fingerprint (compare and
|
|
17
|
+
* swap). A writer that replaced the catalog in between makes the later
|
|
18
|
+
* publication fail with `CATALOG_BASE_CHANGED` instead of being overwritten.
|
|
19
|
+
* - Publication stages a complete directory, records a journal, moves the
|
|
20
|
+
* current output to `<output>.previous`, then renames the staged directory
|
|
21
|
+
* into place. Coordinated readers never observe the window between the two
|
|
22
|
+
* renames. A process killed at any point leaves a journal that the next lock
|
|
23
|
+
* holder (writer or reader) rolls back or forward before doing anything else.
|
|
24
|
+
* - A lock whose holder process is gone (same host) or whose heartbeat is older
|
|
25
|
+
* than the lease is broken automatically and safely: the stale directory is
|
|
26
|
+
* renamed aside first, so only one contender can break it, and a holder that
|
|
27
|
+
* lost its lock refuses to swap with `CATALOG_LOCK_LOST`.
|
|
28
|
+
*/
|
|
29
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
30
|
+
import { promises as fs } from 'node:fs';
|
|
31
|
+
import { hostname } from 'node:os';
|
|
32
|
+
import { basename, dirname, join, sep } from 'node:path';
|
|
33
|
+
import { setTimeout as sleep } from 'node:timers/promises';
|
|
34
|
+
const LOCK_PREFIX = '.catalog-';
|
|
35
|
+
const ABSENT = 'absent';
|
|
36
|
+
const READ_ONLY_CODES = new Set(['EACCES', 'EPERM', 'EROFS']);
|
|
37
|
+
/** Names the coordination files of one output, beside it in its real parent. */
|
|
38
|
+
export function catalogPathsIn(parent, name) {
|
|
39
|
+
const normalized = name.normalize('NFC').toLowerCase();
|
|
40
|
+
// Case-insensitive and Unicode-normalized so that `Generated` and
|
|
41
|
+
// `generated` on macOS or Windows share one lock. On a case-sensitive
|
|
42
|
+
// filesystem such outputs are merely serialized together, which is harmless.
|
|
43
|
+
const hash = createHash('sha256').update(normalized).digest('hex').slice(0, 16);
|
|
44
|
+
const label = normalized.replace(/[^a-z0-9_-]/g, '_').slice(0, 32);
|
|
45
|
+
const stem = `${LOCK_PREFIX}${label}-${hash}`;
|
|
46
|
+
const output = join(parent, name);
|
|
47
|
+
const lock = `${stem}.lock`;
|
|
48
|
+
return {
|
|
49
|
+
output,
|
|
50
|
+
parent,
|
|
51
|
+
backup: `${output}.previous`,
|
|
52
|
+
lock: join(parent, lock),
|
|
53
|
+
owner: join(parent, lock, 'owner.json'),
|
|
54
|
+
journal: join(parent, `${stem}.journal.json`),
|
|
55
|
+
stagePrefix: join(parent, `${stem}.stage-`),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function isReservedName(name) {
|
|
59
|
+
return name.startsWith(LOCK_PREFIX);
|
|
60
|
+
}
|
|
61
|
+
function reserved(component) {
|
|
62
|
+
return isReservedName(component) || component.endsWith('.previous');
|
|
63
|
+
}
|
|
64
|
+
/** Resolves the output's real parent, optionally creating it. */
|
|
65
|
+
async function resolvePaths(output, create) {
|
|
66
|
+
// Not `resolve()`: it would collapse `link/..` lexically, while the
|
|
67
|
+
// filesystem resolves the symbolic link first. `realpath` below does that.
|
|
68
|
+
const name = basename(output);
|
|
69
|
+
const parent = dirname(output);
|
|
70
|
+
// Reading a backup or a coordination directory, for example while
|
|
71
|
+
// inspecting one by hand, is allowed but not coordinated; writing is not.
|
|
72
|
+
if (create && (name === '' || name === '.' || name === '..'))
|
|
73
|
+
throw new Error(`CATALOG_OUTPUT_INVALID: ${output}`);
|
|
74
|
+
if (reserved(name) || parent.split(/[\\/]/).some(reserved)) {
|
|
75
|
+
if (!create)
|
|
76
|
+
return undefined;
|
|
77
|
+
throw new Error(`CATALOG_WRITE_LOCK_RESERVED: ${output}`);
|
|
78
|
+
}
|
|
79
|
+
if (create)
|
|
80
|
+
await fs.mkdir(parent, { recursive: true });
|
|
81
|
+
let actualParent;
|
|
82
|
+
try {
|
|
83
|
+
actualParent = await fs.realpath(parent);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (!create && error.code === 'ENOENT')
|
|
87
|
+
return undefined;
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
// An output reached through a coordination directory, for example a
|
|
91
|
+
// symbolic link into another output's lock, would be destroyed when that
|
|
92
|
+
// lock is released or broken.
|
|
93
|
+
if (actualParent.split(sep).some(reserved)) {
|
|
94
|
+
if (!create)
|
|
95
|
+
return undefined;
|
|
96
|
+
throw new Error(`CATALOG_WRITE_LOCK_RESERVED: ${output}`);
|
|
97
|
+
}
|
|
98
|
+
return catalogPathsIn(actualParent, name);
|
|
99
|
+
}
|
|
100
|
+
async function inspectHolder(lock) {
|
|
101
|
+
const owner = join(lock, 'owner.json');
|
|
102
|
+
try {
|
|
103
|
+
const [text, stat] = await Promise.all([fs.readFile(owner, 'utf8'), fs.stat(owner)]);
|
|
104
|
+
const parsed = JSON.parse(text);
|
|
105
|
+
return {
|
|
106
|
+
...(typeof parsed.token === 'string' ? { token: parsed.token } : {}),
|
|
107
|
+
...(typeof parsed.pid === 'number' ? { pid: parsed.pid } : {}),
|
|
108
|
+
...(typeof parsed.host === 'string' ? { host: parsed.host } : {}),
|
|
109
|
+
heartbeatAt: stat.mtimeMs,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const code = error.code;
|
|
114
|
+
if (code !== 'ENOENT' && !(error instanceof SyntaxError))
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
// The holder created the directory but has not written its owner record yet
|
|
118
|
+
// (or was killed in between): the directory's own age is the heartbeat.
|
|
119
|
+
try {
|
|
120
|
+
return { heartbeatAt: (await fs.stat(lock)).mtimeMs };
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (error.code === 'ENOENT')
|
|
124
|
+
return undefined;
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function processIsAlive(pid) {
|
|
129
|
+
try {
|
|
130
|
+
process.kill(pid, 0);
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return error.code === 'EPERM';
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function holderIsStale(holder, staleAfterMs) {
|
|
138
|
+
if (holder.pid !== undefined && holder.host === hostname() && !processIsAlive(holder.pid))
|
|
139
|
+
return true;
|
|
140
|
+
return Date.now() - holder.heartbeatAt > staleAfterMs;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Breaks a stale lock. Renaming first means two contenders cannot both remove
|
|
144
|
+
* it; re-inspecting the renamed directory catches the case where the stale
|
|
145
|
+
* lock was replaced by a live one between inspection and rename.
|
|
146
|
+
*/
|
|
147
|
+
async function breakLock(paths, staleAfterMs) {
|
|
148
|
+
const grave = `${paths.lock}.stale-${randomUUID()}`;
|
|
149
|
+
try {
|
|
150
|
+
await fs.rename(paths.lock, grave);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
if (error.code === 'ENOENT')
|
|
154
|
+
return;
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
const taken = await inspectHolder(grave);
|
|
158
|
+
if (taken && !holderIsStale(taken, staleAfterMs)) {
|
|
159
|
+
// A live holder: give the lock back. If someone already took the name,
|
|
160
|
+
// the live holder will see CATALOG_LOCK_LOST before it swaps anything.
|
|
161
|
+
await fs.rename(grave, paths.lock).catch(() => undefined);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
await fs.rm(grave, { recursive: true, force: true });
|
|
165
|
+
}
|
|
166
|
+
export class CatalogLock {
|
|
167
|
+
paths;
|
|
168
|
+
token;
|
|
169
|
+
#timer;
|
|
170
|
+
#released = false;
|
|
171
|
+
constructor(paths, token, heartbeatMs) {
|
|
172
|
+
this.paths = paths;
|
|
173
|
+
this.token = token;
|
|
174
|
+
this.#timer = setInterval(() => {
|
|
175
|
+
const now = new Date();
|
|
176
|
+
fs.utimes(paths.owner, now, now).catch(() => undefined);
|
|
177
|
+
}, heartbeatMs);
|
|
178
|
+
this.#timer.unref?.();
|
|
179
|
+
}
|
|
180
|
+
/** Fails with `CATALOG_LOCK_LOST` if another process broke this lock. */
|
|
181
|
+
async assertHeld() {
|
|
182
|
+
const holder = await inspectHolder(this.paths.lock);
|
|
183
|
+
if (holder?.token !== this.token)
|
|
184
|
+
throw new Error(`CATALOG_LOCK_LOST: ${this.paths.output}`);
|
|
185
|
+
}
|
|
186
|
+
async release() {
|
|
187
|
+
if (this.#released)
|
|
188
|
+
return;
|
|
189
|
+
this.#released = true;
|
|
190
|
+
clearInterval(this.#timer);
|
|
191
|
+
const holder = await inspectHolder(this.paths.lock);
|
|
192
|
+
if (holder?.token !== this.token)
|
|
193
|
+
return;
|
|
194
|
+
await fs.rm(this.paths.lock, { recursive: true, force: true });
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async function acquire(paths, mode, options) {
|
|
198
|
+
const waitMs = options.waitMs ?? 30_000;
|
|
199
|
+
const staleAfterMs = options.staleAfterMs ?? 120_000;
|
|
200
|
+
const pollMs = options.pollMs ?? 50;
|
|
201
|
+
const deadline = Date.now() + waitMs;
|
|
202
|
+
for (;;) {
|
|
203
|
+
try {
|
|
204
|
+
await fs.mkdir(paths.lock);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
const code = error.code;
|
|
208
|
+
// A read-only output cannot be published by anyone using this mount, so
|
|
209
|
+
// a reader proceeds without coordination there.
|
|
210
|
+
if (mode === 'read' && code !== undefined && READ_ONLY_CODES.has(code))
|
|
211
|
+
return undefined;
|
|
212
|
+
if (code !== 'EEXIST')
|
|
213
|
+
throw error;
|
|
214
|
+
const holder = await inspectHolder(paths.lock);
|
|
215
|
+
if (holder === undefined)
|
|
216
|
+
continue;
|
|
217
|
+
if (holderIsStale(holder, staleAfterMs)) {
|
|
218
|
+
await breakLock(paths, staleAfterMs);
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
if (Date.now() >= deadline) {
|
|
222
|
+
const who = holder.pid === undefined ? '' : ` (held by pid ${holder.pid} on ${holder.host})`;
|
|
223
|
+
throw new Error(`CATALOG_WRITE_IN_PROGRESS: ${paths.output}${who}`, { cause: error });
|
|
224
|
+
}
|
|
225
|
+
await sleep(pollMs);
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const token = randomUUID();
|
|
229
|
+
try {
|
|
230
|
+
await fs.writeFile(paths.owner, `${JSON.stringify({ token, pid: process.pid, host: hostname(), mode, acquiredAt: new Date().toISOString() })}\n`, { flag: 'wx' });
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
// A contender that misjudged a live lock as stale restored it over the
|
|
234
|
+
// directory just created here (see breakLock): the lock is not ours.
|
|
235
|
+
if (error.code === 'EEXIST')
|
|
236
|
+
continue;
|
|
237
|
+
throw error;
|
|
238
|
+
}
|
|
239
|
+
const lock = new CatalogLock(paths, token, options.heartbeatMs ?? 5_000);
|
|
240
|
+
try {
|
|
241
|
+
await options.onLocked?.(mode);
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
await lock.release();
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
247
|
+
return lock;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
async function exists(path) {
|
|
251
|
+
try {
|
|
252
|
+
await fs.lstat(path);
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
if (error.code === 'ENOENT')
|
|
257
|
+
return false;
|
|
258
|
+
throw error;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
async function readJournal(paths) {
|
|
262
|
+
let text;
|
|
263
|
+
try {
|
|
264
|
+
text = await fs.readFile(paths.journal, 'utf8');
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
if (error.code === 'ENOENT')
|
|
268
|
+
return undefined;
|
|
269
|
+
throw error;
|
|
270
|
+
}
|
|
271
|
+
try {
|
|
272
|
+
const parsed = JSON.parse(text);
|
|
273
|
+
if (parsed.version === 1 &&
|
|
274
|
+
typeof parsed.stage === 'string' &&
|
|
275
|
+
join(paths.parent, parsed.stage).startsWith(paths.stagePrefix) &&
|
|
276
|
+
!parsed.stage.includes(sep) &&
|
|
277
|
+
!parsed.stage.includes('/'))
|
|
278
|
+
return parsed;
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// An empty or torn journal: the writer died while writing it, before it
|
|
282
|
+
// moved anything, so the output and backup have not been touched.
|
|
283
|
+
return { version: 1, stage: '' };
|
|
284
|
+
}
|
|
285
|
+
throw new Error(`CATALOG_RECOVERY_REQUIRED: unrecognized journal ${paths.journal}`);
|
|
286
|
+
}
|
|
287
|
+
async function writeDurably(path, content) {
|
|
288
|
+
const handle = await fs.open(path, 'wx');
|
|
289
|
+
try {
|
|
290
|
+
await handle.writeFile(content);
|
|
291
|
+
await handle.sync();
|
|
292
|
+
}
|
|
293
|
+
finally {
|
|
294
|
+
await handle.close();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/** Best effort: directory fsync is unavailable on Windows and some filesystems. */
|
|
298
|
+
async function syncDirectory(path) {
|
|
299
|
+
let handle;
|
|
300
|
+
try {
|
|
301
|
+
handle = await fs.open(path, 'r');
|
|
302
|
+
await handle.sync();
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
// Process-crash safety does not depend on it; power-loss durability does.
|
|
306
|
+
}
|
|
307
|
+
finally {
|
|
308
|
+
await handle?.close().catch(() => undefined);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
async function removeOrphanStages(paths, keep) {
|
|
312
|
+
const prefix = basename(paths.stagePrefix);
|
|
313
|
+
for (const name of await fs.readdir(paths.parent))
|
|
314
|
+
if (name.startsWith(prefix) && name !== keep)
|
|
315
|
+
await fs.rm(join(paths.parent, name), { recursive: true, force: true });
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Completes or undoes an interrupted publication. Must run under the lock.
|
|
319
|
+
*
|
|
320
|
+
* | output | backup | staged dir | meaning | action |
|
|
321
|
+
* | ------ | ------ | ---------- | -------------------------------- | -------------- |
|
|
322
|
+
* | yes | no | any | not swapped, or already cleaned | drop staging |
|
|
323
|
+
* | no | yes | any | died between the two renames | roll back |
|
|
324
|
+
* | yes | yes | no | swapped, backup not yet removed | roll forward |
|
|
325
|
+
* | no | no | any | first publication never swapped | drop staging |
|
|
326
|
+
* | yes | yes | yes | inconsistent | stop, preserve |
|
|
327
|
+
*/
|
|
328
|
+
export async function recoverCatalogOutput(paths) {
|
|
329
|
+
const journal = await readJournal(paths);
|
|
330
|
+
if (journal === undefined) {
|
|
331
|
+
// Staging directories without a journal belong to a writer that died
|
|
332
|
+
// before it recorded anything; nothing else references them.
|
|
333
|
+
await removeOrphanStages(paths);
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
const stage = journal.stage === '' ? undefined : join(paths.parent, journal.stage);
|
|
337
|
+
const [hasOutput, hasBackup, hasStage] = await Promise.all([
|
|
338
|
+
exists(paths.output),
|
|
339
|
+
exists(paths.backup),
|
|
340
|
+
stage ? exists(stage) : Promise.resolve(false),
|
|
341
|
+
]);
|
|
342
|
+
if (stage === undefined && hasBackup)
|
|
343
|
+
// A torn journal is written before anything moves, so a backup next to it
|
|
344
|
+
// was not made by that writer.
|
|
345
|
+
throw new Error(`CATALOG_RECOVERY_REQUIRED: preserve and inspect ${paths.backup}`);
|
|
346
|
+
if (!hasOutput && hasBackup)
|
|
347
|
+
await fs.rename(paths.backup, paths.output);
|
|
348
|
+
else if (hasOutput && hasBackup && !hasStage)
|
|
349
|
+
await fs.rm(paths.backup, { recursive: true, force: true });
|
|
350
|
+
else if (hasOutput && hasBackup)
|
|
351
|
+
throw new Error(`CATALOG_RECOVERY_REQUIRED: preserve and inspect ${paths.backup}`);
|
|
352
|
+
await removeOrphanStages(paths);
|
|
353
|
+
await syncDirectory(paths.parent);
|
|
354
|
+
await fs.rm(paths.journal, { force: true });
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* A digest of the output's entries and bytes, or `absent`. Run it under the
|
|
358
|
+
* lock (inside {@link withCatalogRead}) so it describes a published state.
|
|
359
|
+
*/
|
|
360
|
+
export async function catalogFingerprint(output) {
|
|
361
|
+
let names;
|
|
362
|
+
try {
|
|
363
|
+
names = (await fs.readdir(output)).toSorted();
|
|
364
|
+
}
|
|
365
|
+
catch (error) {
|
|
366
|
+
if (error.code === 'ENOENT')
|
|
367
|
+
return ABSENT;
|
|
368
|
+
throw error;
|
|
369
|
+
}
|
|
370
|
+
const hash = createHash('sha256');
|
|
371
|
+
for (const name of names) {
|
|
372
|
+
const path = join(output, name);
|
|
373
|
+
const stat = await fs.lstat(path);
|
|
374
|
+
hash.update(`${name}\0`);
|
|
375
|
+
if (stat.isFile())
|
|
376
|
+
hash.update('f\0').update(await fs.readFile(path));
|
|
377
|
+
else if (stat.isSymbolicLink())
|
|
378
|
+
hash.update('l\0').update(await fs.readlink(path));
|
|
379
|
+
else
|
|
380
|
+
hash.update(`o\0${stat.mode}\0${stat.size}`);
|
|
381
|
+
hash.update('\0');
|
|
382
|
+
}
|
|
383
|
+
return `sha256:${hash.digest('hex')}`;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Runs `read` while no writer can publish to `output`, after finishing any
|
|
387
|
+
* interrupted publication. Readers are serialized with writers and with each
|
|
388
|
+
* other; the lock is held only for the read itself.
|
|
389
|
+
*/
|
|
390
|
+
export async function withCatalogRead(output, read, options = {}) {
|
|
391
|
+
const paths = await resolvePaths(output, false);
|
|
392
|
+
if (paths === undefined)
|
|
393
|
+
return read();
|
|
394
|
+
const lock = await acquire(paths, 'read', options);
|
|
395
|
+
try {
|
|
396
|
+
if (lock)
|
|
397
|
+
await recoverCatalogOutput(paths);
|
|
398
|
+
return await read();
|
|
399
|
+
}
|
|
400
|
+
finally {
|
|
401
|
+
await lock?.release();
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Replaces `output` with exactly `files`. The previous output stays in place
|
|
406
|
+
* until the new one is complete, and a coordinated reader sees either one or
|
|
407
|
+
* the other.
|
|
408
|
+
*/
|
|
409
|
+
export async function publishCatalog(output, files, options = {}) {
|
|
410
|
+
const paths = await resolvePaths(output, true);
|
|
411
|
+
if (paths === undefined)
|
|
412
|
+
throw new Error(`CATALOG_OUTPUT_UNRESOLVED: ${output}`);
|
|
413
|
+
await options.onStep?.('acquiring');
|
|
414
|
+
const lock = await acquire(paths, 'write', options);
|
|
415
|
+
if (lock === undefined)
|
|
416
|
+
throw new Error(`CATALOG_OUTPUT_UNRESOLVED: ${output}`);
|
|
417
|
+
try {
|
|
418
|
+
await recoverCatalogOutput(paths);
|
|
419
|
+
// A backup without a journal predates coordinated publication or was made
|
|
420
|
+
// by hand. Its provenance is unknown, so it is never deleted or restored.
|
|
421
|
+
if (await exists(paths.backup))
|
|
422
|
+
throw new Error(`CATALOG_RECOVERY_REQUIRED: preserve and inspect ${paths.backup}`);
|
|
423
|
+
if (options.expectedBase !== undefined) {
|
|
424
|
+
const current = await catalogFingerprint(paths.output);
|
|
425
|
+
if (current !== options.expectedBase)
|
|
426
|
+
throw new Error(`CATALOG_BASE_CHANGED: ${paths.output} was replaced after this sync read it; run the sync again`);
|
|
427
|
+
}
|
|
428
|
+
const stage = await fs.mkdtemp(paths.stagePrefix);
|
|
429
|
+
try {
|
|
430
|
+
await writeDurably(paths.journal, `${JSON.stringify({ version: 1, stage: basename(stage) })}\n`);
|
|
431
|
+
for (const [name, content] of Object.entries(files)) {
|
|
432
|
+
if (name === '' ||
|
|
433
|
+
name.includes('/') ||
|
|
434
|
+
name.includes('\\') ||
|
|
435
|
+
name === '.' ||
|
|
436
|
+
name === '..')
|
|
437
|
+
throw new Error(`CATALOG_ARTIFACT_NAME_INVALID: ${name}`);
|
|
438
|
+
await writeDurably(join(stage, name), content);
|
|
439
|
+
}
|
|
440
|
+
await syncDirectory(stage);
|
|
441
|
+
await options.onStep?.('staged');
|
|
442
|
+
await lock.assertHeld();
|
|
443
|
+
try {
|
|
444
|
+
await fs.rename(paths.output, paths.backup);
|
|
445
|
+
}
|
|
446
|
+
catch (error) {
|
|
447
|
+
if (error.code !== 'ENOENT')
|
|
448
|
+
throw error;
|
|
449
|
+
}
|
|
450
|
+
await options.onStep?.('backed-up');
|
|
451
|
+
await fs.rename(stage, paths.output);
|
|
452
|
+
await syncDirectory(paths.parent);
|
|
453
|
+
await options.onStep?.('swapped');
|
|
454
|
+
await fs.rm(paths.backup, { recursive: true, force: true });
|
|
455
|
+
await fs.rm(paths.journal, { force: true });
|
|
456
|
+
await options.onStep?.('cleaned');
|
|
457
|
+
}
|
|
458
|
+
catch (error) {
|
|
459
|
+
// Same state machine a later process would run after a crash, unless
|
|
460
|
+
// another process now holds the lock: then it owns the recovery.
|
|
461
|
+
const held = await lock.assertHeld().then(() => true, () => false);
|
|
462
|
+
if (held)
|
|
463
|
+
await recoverCatalogOutput(paths);
|
|
464
|
+
throw error;
|
|
465
|
+
}
|
|
466
|
+
await options.afterPublish?.();
|
|
467
|
+
}
|
|
468
|
+
finally {
|
|
469
|
+
await lock.release();
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Writes one file so a reader sees either the old or the new bytes. For
|
|
474
|
+
* content-addressed assets and the browsing index beside the catalog.
|
|
475
|
+
*/
|
|
476
|
+
export async function writeFileAtomically(path, content) {
|
|
477
|
+
const temporary = join(dirname(path), `.${basename(path)}.${randomUUID()}.tmp`);
|
|
478
|
+
try {
|
|
479
|
+
await writeDurably(temporary, content);
|
|
480
|
+
await fs.rename(temporary, path);
|
|
481
|
+
}
|
|
482
|
+
catch (error) {
|
|
483
|
+
await fs.rm(temporary, { force: true });
|
|
484
|
+
throw error;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
//# sourceMappingURL=catalog-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-store.js","sourceRoot":"","sources":["../src/catalog-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAgC1D,MAAM,WAAW,GAAG,WAAW,CAAA;AAC/B,MAAM,MAAM,GAAG,QAAQ,CAAA;AACvB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AAY7D,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,IAAY;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACtD,kEAAkE;IAClE,sEAAsE;IACtE,6EAA6E;IAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC/E,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAClE,MAAM,IAAI,GAAG,GAAG,WAAW,GAAG,KAAK,IAAI,IAAI,EAAE,CAAA;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,CAAA;IAC3B,OAAO;QACL,MAAM;QACN,MAAM;QACN,MAAM,EAAE,GAAG,MAAM,WAAW;QAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;QACxB,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC;QACvC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC;QAC7C,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC;KAC5C,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,QAAQ,CAAC,SAAiB;IACjC,OAAO,cAAc,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AACrE,CAAC;AAED,iEAAiE;AACjE,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,MAAe;IACzD,oEAAoE;IACpE,2EAA2E;IAC3E,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9B,kEAAkE;IAClE,0EAA0E;IAC1E,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAA;IACtD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAA;QAC7B,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAA;IAC3D,CAAC;IACD,IAAI,MAAM;QAAE,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACvD,IAAI,YAAoB,CAAA;IACxB,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QACnF,MAAM,KAAK,CAAA;IACb,CAAC;IACD,oEAAoE;IACpE,yEAAyE;IACzE,8BAA8B;IAC9B,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAA;QAC7B,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAA;IAC3D,CAAC;IACD,OAAO,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC;AASD,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IACtC,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuD,CAAA;QACrF,OAAO;YACL,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,WAAW,EAAE,IAAI,CAAC,OAAO;SAC1B,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAA;QAClD,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC;YAAE,MAAM,KAAK,CAAA;IACvE,CAAC;IACD,4EAA4E;IAC5E,wEAAwE;IACxE,IAAI,CAAC;QACH,OAAO,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QACxE,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAQ,KAA+B,CAAC,IAAI,KAAK,OAAO,CAAA;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,YAAoB;IACzD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC;QACvF,OAAO,IAAI,CAAA;IACb,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,WAAW,GAAG,YAAY,CAAA;AACvD,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,SAAS,CAAC,KAAmB,EAAE,YAAoB;IAChE,MAAM,KAAK,GAAG,GAAG,KAAK,CAAC,IAAI,UAAU,UAAU,EAAE,EAAE,CAAA;IACnD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAM;QAC9D,MAAM,KAAK,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAA;IACxC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC;QACjD,uEAAuE;QACvE,uEAAuE;QACvE,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACzD,OAAM;IACR,CAAC;IACD,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,OAAO,WAAW;IAKX,KAAK;IACL,KAAK;IALhB,MAAM,CAA4C;IAClD,SAAS,GAAG,KAAK,CAAA;IAEjB,YACW,KAAmB,EACnB,KAAa,EACtB,WAAmB;qBAFV,KAAK;qBACL,KAAK;QAGd,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;YACtB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACzD,CAAC,EAAE,WAAW,CAAC,CAAA;QACf,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAA;IACvB,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnD,IAAI,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9F,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnD,IAAI,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK;YAAE,OAAM;QACxC,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAChE,CAAC;CACF;AAED,KAAK,UAAU,OAAO,CACpB,KAAmB,EACnB,IAAc,EACd,OAAmC;IAEnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAA;IACvC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAA;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAA;IACpC,SAAS,CAAC;QACR,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAA;YAClD,wEAAwE;YACxE,gDAAgD;YAChD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAA;YACxF,IAAI,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAA;YAClC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC9C,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAQ;YAClC,IAAI,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;gBACxC,MAAM,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;gBACpC,SAAQ;YACV,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,GAAG,OAAO,MAAM,CAAC,IAAI,GAAG,CAAA;gBAC5F,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;YACvF,CAAC;YACD,MAAM,KAAK,CAAC,MAAM,CAAC,CAAA;YACnB,SAAQ;QACV,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,SAAS,CAChB,KAAK,CAAC,KAAK,EACX,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAChH,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uEAAuE;YACvE,qEAAqE;YACrE,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAQ;YAChE,MAAM,KAAK,CAAA;QACb,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,CAAA;QACxE,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;YACpB,MAAM,KAAK,CAAA;QACb,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QACpE,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAOD,KAAK,UAAU,WAAW,CAAC,KAAmB;IAC5C,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QACxE,MAAM,KAAK,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB,CAAA;QACnD,IACE,MAAM,CAAC,OAAO,KAAK,CAAC;YACpB,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAChC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;YAC9D,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC3B,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAE3B,OAAO,MAAiB,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,kEAAkE;QAClE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IAClC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,mDAAmD,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;AACrF,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,OAA4B;IACpE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAC/B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;IACrB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,IAAI,MAAM,CAAA;IACV,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACjC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,KAAmB,EAAE,IAAa;IAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,IAAI;YAC1C,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAC7E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAmB;IAC5D,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAA;IACxC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,qEAAqE;QACrE,6DAA6D;QAC7D,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;QAC/B,OAAM;IACR,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAClF,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACpB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACpB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;KAC/C,CAAC,CAAA;IACF,IAAI,KAAK,KAAK,SAAS,IAAI,SAAS;QAClC,0EAA0E;QAC1E,+BAA+B;QAC/B,MAAM,IAAI,KAAK,CAAC,mDAAmD,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IACpF,IAAI,CAAC,SAAS,IAAI,SAAS;QAAE,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;SACnE,IAAI,SAAS,IAAI,SAAS,IAAI,CAAC,QAAQ;QAC1C,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;SACxD,IAAI,SAAS,IAAI,SAAS;QAC7B,MAAM,IAAI,KAAK,CAAC,mDAAmD,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IACpF,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAC/B,MAAM,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACjC,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc;IACrD,IAAI,KAAe,CAAA;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAA;QACrE,MAAM,KAAK,CAAA;IACb,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC/B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;aAChE,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;;YAC7E,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC;IACD,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,IAAsB,EACtB,OAAO,GAA+B,EAAE;IAExC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,EAAE,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAClD,IAAI,CAAC;QACH,IAAI,IAAI;YAAE,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC3C,OAAO,MAAM,IAAI,EAAE,CAAA;IACrB,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,EAAE,OAAO,EAAE,CAAA;IACvB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,KAAoD,EACpD,OAAO,GAAmB,EAAE;IAE5B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9C,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAA;IAChF,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACnD,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAA;IAC/E,IAAI,CAAC;QACH,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAA;QACjC,0EAA0E;QAC1E,0EAA0E;QAC1E,IAAI,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,mDAAmD,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;QACpF,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACtD,IAAI,OAAO,KAAK,OAAO,CAAC,YAAY;gBAClC,MAAM,IAAI,KAAK,CACb,yBAAyB,KAAK,CAAC,MAAM,2DAA2D,CACjG,CAAA;QACL,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC;YACH,MAAM,YAAY,CAChB,KAAK,CAAC,OAAO,EACb,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAoB,CAAC,IAAI,CAChF,CAAA;YACD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpD,IACE,IAAI,KAAK,EAAE;oBACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACnB,IAAI,KAAK,GAAG;oBACZ,IAAI,KAAK,IAAI;oBAEb,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAA;gBAC3D,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;YAChD,CAAC;YACD,MAAM,aAAa,CAAC,KAAK,CAAC,CAAA;YAC1B,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;YAChC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YACvB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,KAAK,CAAA;YACrE,CAAC;YACD,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAA;YACnC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;YACpC,MAAM,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACjC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAA;YACjC,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3D,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qEAAqE;YACrE,iEAAiE;YACjE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CACvC,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,CAAA;YACD,IAAI,IAAI;gBAAE,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAA;YAC3C,MAAM,KAAK,CAAA;QACb,CAAC;QACD,MAAM,OAAO,CAAC,YAAY,EAAE,EAAE,CAAA;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,OAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE,MAAM,CAAC,CAAA;IAC/E,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACtC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACvC,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
|
package/dist/consumer-index.d.ts
CHANGED
|
@@ -158,7 +158,7 @@ export interface ConsumerCategory {
|
|
|
158
158
|
export interface LeadingDiagnostic {
|
|
159
159
|
readonly category: string;
|
|
160
160
|
readonly name: string;
|
|
161
|
-
readonly reason: 'UNKNOWN_CATEGORY' | 'PRODUCT_NOT_FOUND' | 'PRODUCT_NOT_IN_CATEGORY';
|
|
161
|
+
readonly reason: 'UNKNOWN_CATEGORY' | 'PRODUCT_NOT_FOUND' | 'PRODUCT_NOT_IN_CATEGORY' | 'PRODUCT_AMBIGUOUS';
|
|
162
162
|
}
|
|
163
163
|
/** Brand-mark coverage, so an incomplete set is visible rather than implied. */
|
|
164
164
|
export interface IconCoverage {
|
package/dist/consumer-index.js
CHANGED
|
@@ -68,10 +68,10 @@ function selectCanonical(variants, sourceRepository, preference) {
|
|
|
68
68
|
const index = preference.sourcePreference.indexOf(plugin.sourceId);
|
|
69
69
|
return index === -1 ? preference.sourcePreference.length : index;
|
|
70
70
|
};
|
|
71
|
-
// A variant with no resolved release repository proves nothing about its
|
|
71
|
+
// A variant with no resolved current-release repository proves nothing about its
|
|
72
72
|
// origin, so it is treated as marketplace-shipped rather than vendor-published.
|
|
73
73
|
const vendorPublished = (plugin) => {
|
|
74
|
-
const repository = plugin
|
|
74
|
+
const repository = currentRelease(plugin)?.resolvedRepositoryUrl;
|
|
75
75
|
return repository !== undefined && repository !== sourceRepository.get(plugin.sourceId);
|
|
76
76
|
};
|
|
77
77
|
return [...variants].toSorted((left, right) => Number(vendorPublished(right)) - Number(vendorPublished(left)) ||
|
|
@@ -193,7 +193,9 @@ export function buildConsumerIndex(input) {
|
|
|
193
193
|
sourcePreference: [...DEFAULT_SOURCE_PREFERENCE],
|
|
194
194
|
};
|
|
195
195
|
const leading = input.leading ?? {};
|
|
196
|
-
const topCount = input.topCount
|
|
196
|
+
const topCount = input.topCount === undefined ? DEFAULT_TOP_COUNT : input.topCount;
|
|
197
|
+
if (!Number.isSafeInteger(topCount) || topCount < 0)
|
|
198
|
+
throw new Error('TOP_COUNT_INVALID');
|
|
197
199
|
const sourceRepository = new Map(input.catalog.sources.map((source) => [source.sourceId, source.repositoryUrl]));
|
|
198
200
|
const variantsByProduct = new Map();
|
|
199
201
|
for (const plugin of input.catalog.plugins) {
|
|
@@ -267,18 +269,26 @@ export function buildConsumerIndex(input) {
|
|
|
267
269
|
const curatedByCategory = new Map();
|
|
268
270
|
for (const category of categoryNames) {
|
|
269
271
|
const members = input.catalog.plugins.filter((plugin) => plugin.categories.includes(category));
|
|
272
|
+
const categoryProducts = new Set(members.map((plugin) => plugin.productGroupingKey));
|
|
270
273
|
const curated = [];
|
|
271
274
|
for (const name of leading[category] ?? []) {
|
|
272
|
-
const matches =
|
|
273
|
-
|
|
275
|
+
const matches = input.catalog.plugins.filter((plugin) => plugin.upstreamPluginName === name);
|
|
276
|
+
const keys = new Set(matches
|
|
277
|
+
.map((plugin) => plugin.productGroupingKey)
|
|
278
|
+
.filter((key) => categoryProducts.has(key)));
|
|
279
|
+
if (keys.size === 0) {
|
|
274
280
|
diagnostics.push({
|
|
275
281
|
category,
|
|
276
282
|
name,
|
|
277
|
-
reason:
|
|
283
|
+
reason: matches.length > 0 ? 'PRODUCT_NOT_IN_CATEGORY' : 'PRODUCT_NOT_FOUND',
|
|
278
284
|
});
|
|
279
285
|
continue;
|
|
280
286
|
}
|
|
281
|
-
|
|
287
|
+
if (keys.size > 1) {
|
|
288
|
+
diagnostics.push({ category, name, reason: 'PRODUCT_AMBIGUOUS' });
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
const key = keys.values().next().value;
|
|
282
292
|
if (!curated.includes(key))
|
|
283
293
|
curated.push(key);
|
|
284
294
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer-index.js","sourceRoot":"","sources":["../src/consumer-index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"consumer-index.js","sourceRoot":"","sources":["../src/consumer-index.ts"],"names":[],"mappings":"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"}
|