@wenathlan/saddle 1.8.12 → 1.8.13
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/apps/registry.d.ts +1 -1
- package/dist/browser/snapshot.d.ts +12 -0
- package/dist/browser/snapshot.d.ts.map +1 -1
- package/dist/browser/snapshot.js +76 -0
- package/dist/browser/snapshot.js.map +1 -1
- package/dist/dispatch/resumable.d.ts +18 -1
- package/dist/dispatch/resumable.d.ts.map +1 -1
- package/dist/dispatch/resumable.js +28 -3
- package/dist/dispatch/resumable.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -2
- package/dist/queue/persistent.d.ts +2 -1
- package/dist/queue/persistent.d.ts.map +1 -1
- package/dist/queue/persistent.js +27 -10
- package/dist/queue/persistent.js.map +1 -1
- package/dist/release/assets.d.ts +25 -0
- package/dist/release/assets.d.ts.map +1 -1
- package/dist/release/assets.js +67 -4
- package/dist/release/assets.js.map +1 -1
- package/dist/scrape/robots.js +1 -1
- package/dist/scrape/schema.d.ts +18 -0
- package/dist/scrape/schema.d.ts.map +1 -1
- package/dist/scrape/schema.js +67 -0
- package/dist/scrape/schema.js.map +1 -1
- package/docs/artifactavailability.md +16 -0
- package/docs/releasenotes-1.8.12.md +46 -0
- package/docs/releasenotes-1.8.13.md +42 -0
- package/docs/repo-analysis-1.8.21.json +2617 -0
- package/docs/repo-candidates-1.8.21.jsonl +666 -0
- package/docs/repo-research-1.8.21.md +38 -0
- package/docs/repo-selected-1.8.21.json +786 -0
- package/docs/repo-synthesis-1.8.21.md +112 -0
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
package/dist/apps/registry.d.ts
CHANGED
|
@@ -22,10 +22,10 @@ export declare function appregistry(options?: {}): {
|
|
|
22
22
|
missing?: undefined;
|
|
23
23
|
appid?: undefined;
|
|
24
24
|
} | {
|
|
25
|
-
reason?: undefined;
|
|
26
25
|
allowed: boolean;
|
|
27
26
|
missing: any[];
|
|
28
27
|
appid: any;
|
|
28
|
+
reason?: undefined;
|
|
29
29
|
};
|
|
30
30
|
get: (id: any) => any;
|
|
31
31
|
list: () => any[];
|
|
@@ -54,4 +54,16 @@ export declare function snapshotdiff(previous: any, current: any): {
|
|
|
54
54
|
disabled: boolean;
|
|
55
55
|
}[];
|
|
56
56
|
};
|
|
57
|
+
/** Projects a page snapshot into a byte-bounded, allowlisted browser context. */
|
|
58
|
+
export declare function projectcontext(snapshot: any, options?: {}): {
|
|
59
|
+
version: number;
|
|
60
|
+
snapshotid: string;
|
|
61
|
+
context: {
|
|
62
|
+
snapshotid: string;
|
|
63
|
+
};
|
|
64
|
+
fields: string[];
|
|
65
|
+
bytes: number;
|
|
66
|
+
maxbytes: number;
|
|
67
|
+
truncated: any[];
|
|
68
|
+
};
|
|
57
69
|
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../browser/snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,KAAK,KAAK;;;;;;;;;;;;;;;EActC;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,QAAQ,KAAA,EAAE,KAAK,KAAK;;;;;;EAK/C;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,QAAQ,KAAA,EAAE,SAAS,KAAA,WAStD;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAA;;;;;;;;;;;;;;;;;;;;;;;;EAS7C"}
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../browser/snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,KAAK,KAAK;;;;;;;;;;;;;;;EActC;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,QAAQ,KAAA,EAAE,KAAK,KAAK;;;;;;EAK/C;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,QAAQ,KAAA,EAAE,SAAS,KAAA,WAStD;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAA;;;;;;;;;;;;;;;;;;;;;;;;EAS7C;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAK;;;;;;;;;;EA4BpD"}
|
package/dist/browser/snapshot.js
CHANGED
|
@@ -49,9 +49,85 @@ export function snapshotdiff(previous, current) {
|
|
|
49
49
|
const changed = after.elements.filter((element) => oldmap.has(element.ref) && JSON.stringify(oldmap.get(element.ref)) !== JSON.stringify(element));
|
|
50
50
|
return { from: before.snapshotid, to: after.snapshotid, added, removed, changed };
|
|
51
51
|
}
|
|
52
|
+
/** Projects a page snapshot into a byte-bounded, allowlisted browser context. */
|
|
53
|
+
export function projectcontext(snapshot, options = {}) {
|
|
54
|
+
const current = pagesnapshot(snapshot);
|
|
55
|
+
const maxbytes = normalizebudget(options.maxbytes ?? 32768);
|
|
56
|
+
const allowed = normalizefields(options.fields ?? options.allowlist);
|
|
57
|
+
const context = { snapshotid: current.snapshotid };
|
|
58
|
+
const truncated = [];
|
|
59
|
+
for (const field of allowed) {
|
|
60
|
+
if (field === "snapshotid")
|
|
61
|
+
continue;
|
|
62
|
+
const value = current[field];
|
|
63
|
+
if (value === undefined)
|
|
64
|
+
continue;
|
|
65
|
+
if (field === "elements") {
|
|
66
|
+
const elements = [];
|
|
67
|
+
for (const element of value) {
|
|
68
|
+
if (fitscontext(context, field, [...elements, element], maxbytes))
|
|
69
|
+
elements.push(element);
|
|
70
|
+
else {
|
|
71
|
+
truncated.push("elements");
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (fitscontext(context, field, elements, maxbytes))
|
|
76
|
+
context[field] = elements;
|
|
77
|
+
else
|
|
78
|
+
truncated.push("elements");
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (fitscontext(context, field, value, maxbytes)) {
|
|
82
|
+
context[field] = value;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (typeof value === "string")
|
|
86
|
+
context[field] = clipcontextstring(context, field, value, maxbytes);
|
|
87
|
+
else
|
|
88
|
+
truncated.push(field);
|
|
89
|
+
if (typeof value === "string" && context[field].length < value.length)
|
|
90
|
+
truncated.push(field);
|
|
91
|
+
}
|
|
92
|
+
const bytes = contextbytes(context);
|
|
93
|
+
if (bytes > maxbytes)
|
|
94
|
+
throw new RangeError("browser context budget is smaller than stable snapshot identity");
|
|
95
|
+
return { version: 1, snapshotid: current.snapshotid, context, fields: Object.keys(context), bytes, maxbytes, truncated: [...new Set(truncated)] };
|
|
96
|
+
}
|
|
52
97
|
function normalizeelements(elements) {
|
|
53
98
|
if (!Array.isArray(elements))
|
|
54
99
|
return [];
|
|
55
100
|
return elements.slice(0, 500).map((element, index) => ({ ref: String(element?.ref ?? `e${index + 1}`), role: String(element?.role ?? "generic"), name: String(element?.name ?? "").trim().slice(0, 200), value: element?.value === undefined ? undefined : String(element.value).slice(0, 500), disabled: Boolean(element?.disabled) }));
|
|
56
101
|
}
|
|
102
|
+
const snapshotfields = Object.freeze(["snapshotid", "tabid", "frameid", "url", "title", "text", "elements"]);
|
|
103
|
+
function normalizefields(fields) {
|
|
104
|
+
if (fields === undefined)
|
|
105
|
+
return [...snapshotfields];
|
|
106
|
+
if (!Array.isArray(fields) || fields.length === 0)
|
|
107
|
+
throw new TypeError("browser context fields must be a non-empty array");
|
|
108
|
+
const normalized = [...new Set(fields.map((field) => String(field)))];
|
|
109
|
+
if (normalized.some((field) => !snapshotfields.includes(field)))
|
|
110
|
+
throw new TypeError("browser context field is not allowlisted");
|
|
111
|
+
return normalized;
|
|
112
|
+
}
|
|
113
|
+
function normalizebudget(value) { const normalized = Number(value); if (!Number.isSafeInteger(normalized) || normalized <= 0)
|
|
114
|
+
throw new RangeError("browser context maxbytes must be a positive safe integer"); return normalized; }
|
|
115
|
+
function contextbytes(value) { return new TextEncoder().encode(JSON.stringify(value)).byteLength; }
|
|
116
|
+
function fitscontext(context, field, value, maxbytes) { return contextbytes({ ...context, [field]: value }) <= maxbytes; }
|
|
117
|
+
function clipcontextstring(context, field, value, maxbytes) {
|
|
118
|
+
let low = 0;
|
|
119
|
+
let high = value.length;
|
|
120
|
+
let result = "";
|
|
121
|
+
while (low <= high) {
|
|
122
|
+
const middle = Math.floor((low + high) / 2);
|
|
123
|
+
const candidate = value.slice(0, middle);
|
|
124
|
+
if (fitscontext(context, field, candidate, maxbytes)) {
|
|
125
|
+
result = candidate;
|
|
126
|
+
low = middle + 1;
|
|
127
|
+
}
|
|
128
|
+
else
|
|
129
|
+
high = middle - 1;
|
|
130
|
+
}
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
57
133
|
//# sourceMappingURL=snapshot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../browser/snapshot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../browser/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,7 +56,21 @@ export declare function resumablerun(adapter: any, input?: {}): {
|
|
|
56
56
|
metadata: any;
|
|
57
57
|
response: any;
|
|
58
58
|
}>;
|
|
59
|
-
cancel: () => Promise<{
|
|
59
|
+
cancel: (options?: {}) => Promise<{
|
|
60
|
+
version: number;
|
|
61
|
+
requestid: string;
|
|
62
|
+
name: string;
|
|
63
|
+
status: any;
|
|
64
|
+
runid: any;
|
|
65
|
+
attempt: number;
|
|
66
|
+
createdat: number;
|
|
67
|
+
updatedat: number;
|
|
68
|
+
history: any;
|
|
69
|
+
metadata: any;
|
|
70
|
+
compensation: {
|
|
71
|
+
status: string;
|
|
72
|
+
};
|
|
73
|
+
} | {
|
|
60
74
|
version: number;
|
|
61
75
|
requestid: string;
|
|
62
76
|
name: string;
|
|
@@ -68,6 +82,9 @@ export declare function resumablerun(adapter: any, input?: {}): {
|
|
|
68
82
|
history: any;
|
|
69
83
|
metadata: any;
|
|
70
84
|
response: any;
|
|
85
|
+
compensation: {
|
|
86
|
+
status: string;
|
|
87
|
+
};
|
|
71
88
|
}>;
|
|
72
89
|
get: () => {
|
|
73
90
|
version: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resumable.d.ts","sourceRoot":"","sources":["../../dispatch/resumable.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,WAAW,mBAAyF,CAAC;AAGlH,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,KAAK,KAAK;IAEzB,OAAO;IAAK,SAAS;IAA2B,IAAI;IAAsB,MAAM;IAA6B,KAAK;IAAe,OAAO;IAA8B,SAAS;IAAyC,SAAS;IAAyC,OAAO;IAAoF,QAAQ;EACvX;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,MAAM,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,KAAK;;;;;;;;;;;EAKzD;AAED,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,OAAO,KAAA,EAAE,KAAK,KAAK
|
|
1
|
+
{"version":3,"file":"resumable.d.ts","sourceRoot":"","sources":["../../dispatch/resumable.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,WAAW,mBAAyF,CAAC;AAGlH,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,KAAK,KAAK;IAEzB,OAAO;IAAK,SAAS;IAA2B,IAAI;IAAsB,MAAM;IAA6B,KAAK;IAAe,OAAO;IAA8B,SAAS;IAAyC,SAAS;IAAyC,OAAO;IAAoF,QAAQ;EACvX;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,MAAM,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,KAAK;;;;;;;;;;;EAKzD;AAED,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,OAAO,KAAA,EAAE,KAAK,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B/C"}
|
|
@@ -25,14 +25,39 @@ export function resumablerun(adapter, input = {}) {
|
|
|
25
25
|
if (typeof adapter?.submit !== "function" || typeof adapter?.status !== "function")
|
|
26
26
|
throw new TypeError("resumable run adapter requires submit and status");
|
|
27
27
|
let record = runrecord(input);
|
|
28
|
+
let compensation = { status: typeof input.compensate === "function" ? "pending" : "not-configured" };
|
|
28
29
|
async function submit() { const response = await adapter.submit(input); record = transitionrun(record, "submitted", { runid: response?.runid, reason: "submitted" }); return { ...record, response }; }
|
|
29
30
|
async function resume() { if (record.status === "created")
|
|
30
31
|
await submit(); if (typeof adapter.resume === "function")
|
|
31
32
|
await adapter.resume(record); const response = await adapter.status(record.runid); if (response?.status && response.status !== record.status && transitions[record.status]?.includes(response.status))
|
|
32
33
|
record = transitionrun(record, response.status, { reason: "remote-status" }); return { ...record, response }; }
|
|
33
|
-
async function cancel() {
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
async function cancel(options = {}) {
|
|
35
|
+
if (record.status === "cancelled")
|
|
36
|
+
return { ...record, compensation };
|
|
37
|
+
if (!transitions[record.status]?.includes("cancelled"))
|
|
38
|
+
throw new Error(`invalid run transition: ${record.status} to cancelled`);
|
|
39
|
+
if (typeof adapter.cancel !== "function")
|
|
40
|
+
throw new TypeError("resumable run adapter does not support cancel");
|
|
41
|
+
const response = await adapter.cancel(record.runid, options);
|
|
42
|
+
record = transitionrun(record, "cancelled", { reason: options.reason ?? "cancelled" });
|
|
43
|
+
const handler = options.compensate ?? input.compensate;
|
|
44
|
+
if (typeof handler !== "function")
|
|
45
|
+
compensation = { status: "not-configured" };
|
|
46
|
+
else if (compensation.status === "pending") {
|
|
47
|
+
try {
|
|
48
|
+
compensation = { status: "succeeded", result: await handler({ run: runrecord(record), response, reason: options.reason ?? "cancelled" }) };
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
compensation = { status: "failed", error: String(error?.message ?? error) };
|
|
52
|
+
record = { ...record, metadata: { ...record.metadata, compensation: compensation.status } };
|
|
53
|
+
const failure = new Error("resumable run compensation failed", { cause: error });
|
|
54
|
+
failure.code = "COMPENSATION_FAILED";
|
|
55
|
+
throw failure;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
record = { ...record, metadata: { ...record.metadata, compensation: compensation.status } };
|
|
59
|
+
return { ...record, response, compensation };
|
|
60
|
+
}
|
|
36
61
|
function get() { return runrecord(record); }
|
|
37
62
|
return { submit, resume, cancel, get };
|
|
38
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resumable.js","sourceRoot":"","sources":["../../dispatch/resumable.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"resumable.js","sourceRoot":"","sources":["../../dispatch/resumable.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -4,15 +4,14 @@ export declare function mcpserver(options?: {}): {
|
|
|
4
4
|
description: string;
|
|
5
5
|
}[];
|
|
6
6
|
handle(request: any): Promise<{
|
|
7
|
-
error?: undefined;
|
|
8
7
|
jsonrpc: string;
|
|
9
8
|
id: any;
|
|
10
9
|
result: {
|
|
11
10
|
tools: any;
|
|
12
11
|
content?: undefined;
|
|
13
12
|
};
|
|
14
|
-
} | {
|
|
15
13
|
error?: undefined;
|
|
14
|
+
} | {
|
|
16
15
|
jsonrpc: string;
|
|
17
16
|
id: any;
|
|
18
17
|
result: {
|
|
@@ -22,6 +21,7 @@ export declare function mcpserver(options?: {}): {
|
|
|
22
21
|
text: string;
|
|
23
22
|
}[];
|
|
24
23
|
};
|
|
24
|
+
error?: undefined;
|
|
25
25
|
} | {
|
|
26
26
|
result?: undefined;
|
|
27
27
|
jsonrpc: string;
|
|
@@ -5,7 +5,8 @@ export declare function persistentqueue(options?: {}): {
|
|
|
5
5
|
items: any[];
|
|
6
6
|
}>;
|
|
7
7
|
enqueue: (payload: any, metadata?: {}) => Promise<any>;
|
|
8
|
-
claim: () => Promise<any>;
|
|
8
|
+
claim: (claimoptions?: {}) => Promise<any>;
|
|
9
|
+
renew: (id: any, leasems?: any) => Promise<any>;
|
|
9
10
|
complete: (id: any, result: any) => Promise<any>;
|
|
10
11
|
fail: (id: any, error: any) => Promise<any>;
|
|
11
12
|
list: (filter: any) => Promise<any[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent.d.ts","sourceRoot":"","sources":["../../queue/persistent.ts"],"names":[],"mappings":"AAMA,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,OAAO,KAAK
|
|
1
|
+
{"version":3,"file":"persistent.d.ts","sourceRoot":"","sources":["../../queue/persistent.ts"],"names":[],"mappings":"AAMA,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,OAAO,KAAK;;;;;;;;;;;EA2C3C"}
|
package/dist/queue/persistent.js
CHANGED
|
@@ -8,7 +8,9 @@ export function persistentqueue(options = {}) {
|
|
|
8
8
|
if (!options.path)
|
|
9
9
|
throw new TypeError("persistent queue requires path");
|
|
10
10
|
const maxattempts = options.maxattempts ?? 3;
|
|
11
|
-
|
|
11
|
+
const defaultleasems = options.leasems ?? 0;
|
|
12
|
+
const clock = typeof options.clock === "function" ? options.clock : () => Date.now();
|
|
13
|
+
let state = { version: 2, items: [] };
|
|
12
14
|
let loaded = false;
|
|
13
15
|
/** Reads the queue once and returns running jobs to the waiting state. */
|
|
14
16
|
async function restore() {
|
|
@@ -22,28 +24,43 @@ export function persistentqueue(options = {}) {
|
|
|
22
24
|
throw error;
|
|
23
25
|
}
|
|
24
26
|
for (const item of state.items ?? [])
|
|
25
|
-
if (item.status === "running")
|
|
27
|
+
if (item.status === "running" && (!item.leaseexpiresat || item.leaseexpiresat <= clock())) {
|
|
26
28
|
item.status = "queued";
|
|
29
|
+
item.leaseexpiresat = undefined;
|
|
30
|
+
}
|
|
31
|
+
state.version = 2;
|
|
27
32
|
state.items ??= [];
|
|
28
33
|
loaded = true;
|
|
29
34
|
await persist();
|
|
30
35
|
return state;
|
|
31
36
|
}
|
|
32
37
|
/** Appends a queued job and persists the new state. */
|
|
33
|
-
async function enqueue(payload, metadata = {}) { await restore(); const id = metadata.id ?? `persistentjob${
|
|
34
|
-
return
|
|
38
|
+
async function enqueue(payload, metadata = {}) { await restore(); const idempotencykey = metadata.idempotencykey; const id = metadata.id ?? idempotencykey ?? `persistentjob${clock()}${state.items.length}`; const existing = state.items.find((item) => item.id === id || (idempotencykey && item.idempotencykey === idempotencykey)); if (existing)
|
|
39
|
+
return { ...existing }; const item = { id, idempotencykey, payload, status: "queued", attempts: 0, createdat: clock(), updatedat: clock(), metadata }; state.items.push(item); await persist(); return { ...item }; }
|
|
35
40
|
/** Claims the first queued job with stable ordering. */
|
|
36
|
-
async function claim() { await restore(); const item = state.items.find((entry) => entry.status === "queued"); if (!item)
|
|
37
|
-
return null; item.status = "running"; item.attempts += 1; item.
|
|
41
|
+
async function claim(claimoptions = {}) { await restore(); reclaimexpired(); const item = state.items.find((entry) => entry.status === "queued"); if (!item)
|
|
42
|
+
return null; const leasems = claimoptions.leasems ?? defaultleasems; item.status = "running"; item.attempts += 1; item.claimedat = clock(); item.leaseexpiresat = leasems > 0 ? clock() + leasems : undefined; item.updatedat = clock(); await persist(); return { ...item }; }
|
|
43
|
+
/** Renews a running item lease without changing its attempt count. */
|
|
44
|
+
async function renew(id, leasems = defaultleasems) { await restore(); reclaimexpired(); const item = find(id); if (item.status !== "running")
|
|
45
|
+
throw new Error(`persistent queue item is not running: ${id}`); if (!(leasems > 0))
|
|
46
|
+
throw new TypeError("lease duration must be positive"); item.leaseexpiresat = clock() + leasems; item.updatedat = clock(); await persist(); return { ...item }; }
|
|
38
47
|
/** Commits a successful result. */
|
|
39
|
-
async function complete(id, result) { await restore(); const item = find(id); item.status = "completed"; item.result = result; item.updatedat =
|
|
48
|
+
async function complete(id, result) { await restore(); const item = find(id); item.status = "completed"; item.result = result; item.leaseexpiresat = undefined; item.updatedat = clock(); await persist(); return { ...item }; }
|
|
40
49
|
/** Records an error and either retries or closes the item as failed. */
|
|
41
|
-
async function fail(id, error) { await restore(); const item = find(id); item.error = { message: error?.message ?? String(error), code: error?.code }; item.status = item.attempts < maxattempts && error?.retryable !== false ? "queued" : "failed"; item.updatedat =
|
|
50
|
+
async function fail(id, error) { await restore(); const item = find(id); item.error = { message: error?.message ?? String(error), code: error?.code }; item.status = item.attempts < maxattempts && error?.retryable !== false ? "queued" : "failed"; item.leaseexpiresat = undefined; item.updatedat = clock(); await persist(); return { ...item }; }
|
|
42
51
|
/** Lists queue items for status and diagnostics. */
|
|
43
|
-
async function list(filter) { await restore();
|
|
44
|
-
|
|
52
|
+
async function list(filter) { await restore(); if (reclaimexpired())
|
|
53
|
+
await persist(); return state.items.filter((item) => !filter || item.status === filter).map((item) => ({ ...item })); }
|
|
54
|
+
return { restore, enqueue, claim, renew, complete, fail, list };
|
|
45
55
|
function find(id) { const item = state.items.find((entry) => entry.id === id); if (!item)
|
|
46
56
|
throw new Error(`persistent queue item not found: ${id}`); return item; }
|
|
57
|
+
function reclaimexpired() { let changed = false; for (const item of state.items)
|
|
58
|
+
if (item.status === "running" && item.leaseexpiresat && item.leaseexpiresat <= clock()) {
|
|
59
|
+
item.status = "queued";
|
|
60
|
+
item.leaseexpiresat = undefined;
|
|
61
|
+
item.updatedat = clock();
|
|
62
|
+
changed = true;
|
|
63
|
+
} return changed; }
|
|
47
64
|
async function persist() { await writeFile(options.path, `${JSON.stringify(state, null, 2)}\n`, "utf8"); }
|
|
48
65
|
}
|
|
49
66
|
//# sourceMappingURL=persistent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent.js","sourceRoot":"","sources":["../../queue/persistent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,0EAA0E;AAC1E,MAAM,UAAU,eAAe,CAAC,OAAO,GAAG,EAAE;IAC1C,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;IAC7C,IAAI,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACtC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,0EAA0E;IAC1E,KAAK,UAAU,OAAO;QACpB,IAAI,MAAM;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QAAC,CAAC;QAC7H,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE;YAAE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;
|
|
1
|
+
{"version":3,"file":"persistent.js","sourceRoot":"","sources":["../../queue/persistent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,0EAA0E;AAC1E,MAAM,UAAU,eAAe,CAAC,OAAO,GAAG,EAAE;IAC1C,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACrF,IAAI,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACtC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,0EAA0E;IAC1E,KAAK,UAAU,OAAO;QACpB,IAAI,MAAM;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QAAC,CAAC;QAC7H,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE;YAAE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBAAC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAAC,CAAC;QAC7L,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,IAAI,CAAC;QACd,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uDAAuD;IACvD,KAAK,UAAU,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,EAAE,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,cAAc,IAAI,gBAAgB,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ;QAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAE5iB,wDAAwD;IACxD,KAAK,UAAU,KAAK,CAAC,YAAY,GAAG,EAAE,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAE5a,sEAAsE;IACtE,KAAK,UAAU,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,cAAc,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnY,mCAAmC;IACnC,KAAK,UAAU,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhO,wEAAwE;IACxE,KAAK,UAAU,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,IAAI,KAAK,EAAE,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAEvV,oDAAoD;IACpD,KAAK,UAAU,IAAI,CAAC,MAAM,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,cAAc,EAAE;QAAE,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5L,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEhE,SAAS,IAAI,CAAC,EAAE,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACnK,SAAS,cAAc,KAAK,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;QAAE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,EAAE,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YAAC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAAC,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;QAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC;IACjS,KAAK,UAAU,OAAO,KAAK,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5G,CAAC"}
|
package/dist/release/assets.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export declare function createassets(options?: {}): Promise<{
|
|
|
14
14
|
subjects: {
|
|
15
15
|
name: string;
|
|
16
16
|
digest: string;
|
|
17
|
+
bytes: never;
|
|
18
|
+
updatedat: number;
|
|
17
19
|
}[];
|
|
18
20
|
sbom: {
|
|
19
21
|
bomFormat: string;
|
|
@@ -64,7 +66,30 @@ export declare function createassets(options?: {}): Promise<{
|
|
|
64
66
|
};
|
|
65
67
|
};
|
|
66
68
|
};
|
|
69
|
+
retention: {
|
|
70
|
+
policy: {};
|
|
71
|
+
evaluatedat: number;
|
|
72
|
+
decisions: {
|
|
73
|
+
name: string;
|
|
74
|
+
bytes: number;
|
|
75
|
+
updatedat: number;
|
|
76
|
+
action: string;
|
|
77
|
+
reasons: any[];
|
|
78
|
+
}[];
|
|
79
|
+
};
|
|
67
80
|
}>;
|
|
81
|
+
/** Computes deterministic keep or prune decisions without deleting caller files. */
|
|
82
|
+
export declare function retentionplan(artifacts?: any[], options?: {}): {
|
|
83
|
+
policy: {};
|
|
84
|
+
evaluatedat: number;
|
|
85
|
+
decisions: {
|
|
86
|
+
name: string;
|
|
87
|
+
bytes: number;
|
|
88
|
+
updatedat: number;
|
|
89
|
+
action: string;
|
|
90
|
+
reasons: any[];
|
|
91
|
+
}[];
|
|
92
|
+
};
|
|
68
93
|
/** Creates a compact CycloneDX component list from the root lockfile dependencies. */
|
|
69
94
|
export declare function createsbom(packagejson: any, lockjson?: {}): {
|
|
70
95
|
bomFormat: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../release/assets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,iFAAiF;AACjF,wBAAsB,YAAY,CAAC,OAAO,KAAK
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../release/assets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,iFAAiF;AACjF,wBAAsB,YAAY,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;;;;;;YAuEsH,SAAS;gBAAI,IAAI;gBAAiB,IAAI;gBAA4B,OAAO;;;;;;;;;;;;;;;;;gBAKtJ,MAAM;;;;;YAC0C,eAAe;gBAAI,SAAS;gBAAiD,kBAAkB;oBAAI,OAAO;oBAA4B,OAAO;;gBAAoD,kBAAkB;;YAAQ,UAAU;gBAAI,OAAO;oBAAI,EAAE;;gBAAiD,QAAQ;oBAAI,YAAY;;;;;;;;;;;;;;;;GA5Ctc;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,SAAS,QAAK,EAAE,OAAO,KAAK;;;;;;;;;;EAwBzD;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,WAAW,KAAA,EAAE,QAAQ,KAAK;;;;;;QAQgH,SAAS;YAAI,IAAI;YAAiB,IAAI;YAA4B,OAAO;;;;;;;;;;;EAC7O;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,WAAW,KAAA,EAAE,QAAQ,QAAK,EAAE,OAAO,KAAK;IAE9D,KAAK;IAAqC,OAAO;;;YAD4B,MAAM;;;IACpB,aAAa;IAAoC,SAAS;QAAI,eAAe;YAAI,SAAS;YAAiD,kBAAkB;gBAAI,OAAO;gBAA4B,OAAO;;YAAoD,kBAAkB;;QAAQ,UAAU;YAAI,OAAO;gBAAI,EAAE;;YAAiD,QAAQ;gBAAI,YAAY;;;;EACtc"}
|
package/dist/release/assets.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* The adapter reads caller-selected artifacts and never publishes or handles credentials.
|
|
4
4
|
*/
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
6
|
-
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
6
|
+
import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
|
|
7
7
|
import { basename, dirname, join, relative, resolve, sep } from "node:path";
|
|
8
8
|
import { fileURLToPath } from "node:url";
|
|
9
9
|
const modulepath = dirname(fileURLToPath(import.meta.url));
|
|
@@ -23,13 +23,15 @@ export async function createassets(options = {}) {
|
|
|
23
23
|
const subjects = await Promise.all(artifacts.map(async (artifact) => {
|
|
24
24
|
const name = relative(artifactroot, artifact).replaceAll("\\", "/");
|
|
25
25
|
validateArtifactName(basename(name));
|
|
26
|
-
|
|
26
|
+
const details = await stat(artifact);
|
|
27
|
+
return { name, digest: await sha256(artifact), bytes: details.size, updatedat: Math.trunc(details.mtimeMs) };
|
|
27
28
|
}));
|
|
28
29
|
await mkdir(output, { recursive: true });
|
|
29
30
|
const checksums = `${subjects.map((subject) => `${subject.digest} ${subject.name}`).join("\n")}${subjects.length ? "\n" : ""}`;
|
|
30
31
|
const sbom = createsbom(packagejson, lockjson);
|
|
31
32
|
const provenance = createprovenance(packagejson, subjects, { ...options, version });
|
|
32
|
-
const
|
|
33
|
+
const retention = options.retention ? retentionplan(subjects, options.retention) : undefined;
|
|
34
|
+
const manifest = { name: String(packagejson.name), version, surface, files: subjects.map((subject) => basename(subject.name)), signing: String(options.signing ?? "caller-owned"), ...(retention ? { retention: retention.policy, retentionplan: retention.decisions, retentionevaluatedat: retention.evaluatedat } : {}) };
|
|
33
35
|
const files = {
|
|
34
36
|
checksums: join(output, `sha256.${surface}.${version}`),
|
|
35
37
|
manifest: join(output, `manifest.${surface}.${version}.json`),
|
|
@@ -40,7 +42,43 @@ export async function createassets(options = {}) {
|
|
|
40
42
|
await writeFile(files.manifest, `${JSON.stringify(manifest, null, 2)}\n`);
|
|
41
43
|
await writeFile(files.sbom, `${JSON.stringify(sbom, null, 2)}\n`);
|
|
42
44
|
await writeFile(files.provenance, `${JSON.stringify(provenance)}\n`);
|
|
43
|
-
return { output, files, subjects, sbom, provenance };
|
|
45
|
+
return { output, files, subjects, sbom, provenance, retention };
|
|
46
|
+
}
|
|
47
|
+
/** Computes deterministic keep or prune decisions without deleting caller files. */
|
|
48
|
+
export function retentionplan(artifacts = [], options = {}) {
|
|
49
|
+
const policy = normalizeretention(options);
|
|
50
|
+
const evaluatedat = Number(options.evaluatedat ?? options.now ?? 0);
|
|
51
|
+
if (!Number.isSafeInteger(evaluatedat) || evaluatedat < 0)
|
|
52
|
+
throw new RangeError("retention evaluatedat must be a non-negative safe integer");
|
|
53
|
+
const entries = [...new Map(artifacts.map((artifact) => {
|
|
54
|
+
const name = String(artifact.name ?? "");
|
|
55
|
+
if (!name)
|
|
56
|
+
throw new TypeError("retention artifact requires name");
|
|
57
|
+
return [name, { name, bytes: normalizebytes(artifact.bytes), updatedat: normalizeupdatedat(artifact.updatedat) }];
|
|
58
|
+
})).values()].sort(comparefreshness);
|
|
59
|
+
const decisions = entries.map((entry) => ({ ...entry, action: "keep", reasons: [] }));
|
|
60
|
+
for (const decision of decisions) {
|
|
61
|
+
if (policy.maxagedays !== undefined && evaluatedat > 0 && decision.updatedat + policy.maxagedays * 86400000 < evaluatedat) {
|
|
62
|
+
decision.action = "prune";
|
|
63
|
+
decision.reasons.push("max-age");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (policy.maxcount !== undefined)
|
|
67
|
+
decisions.slice(policy.maxcount).forEach((decision) => { if (decision.action === "keep") {
|
|
68
|
+
decision.action = "prune";
|
|
69
|
+
decision.reasons.push("max-count");
|
|
70
|
+
} });
|
|
71
|
+
if (policy.maxbytes !== undefined) {
|
|
72
|
+
let total = decisions.filter((decision) => decision.action === "keep").reduce((sum, decision) => sum + decision.bytes, 0);
|
|
73
|
+
for (const decision of [...decisions].reverse()) {
|
|
74
|
+
if (total <= policy.maxbytes || decision.action !== "keep")
|
|
75
|
+
continue;
|
|
76
|
+
decision.action = "prune";
|
|
77
|
+
decision.reasons.push("max-bytes");
|
|
78
|
+
total -= decision.bytes;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { policy, evaluatedat, decisions: decisions.sort((left, right) => left.name.localeCompare(right.name)) };
|
|
44
82
|
}
|
|
45
83
|
/** Creates a compact CycloneDX component list from the root lockfile dependencies. */
|
|
46
84
|
export function createsbom(packagejson, lockjson = {}) {
|
|
@@ -84,11 +122,36 @@ function parsearguments(argumentslist) {
|
|
|
84
122
|
options.buildtype = argumentslist[++index];
|
|
85
123
|
else if (argument === "--builder")
|
|
86
124
|
options.builder = argumentslist[++index];
|
|
125
|
+
else if (argument === "--max-age-days")
|
|
126
|
+
(options.retention ??= {}).maxagedays = Number(argumentslist[++index]);
|
|
127
|
+
else if (argument === "--max-count")
|
|
128
|
+
(options.retention ??= {}).maxcount = Number(argumentslist[++index]);
|
|
129
|
+
else if (argument === "--max-bytes")
|
|
130
|
+
(options.retention ??= {}).maxbytes = Number(argumentslist[++index]);
|
|
131
|
+
else if (argument === "--evaluated-at")
|
|
132
|
+
(options.retention ??= {}).evaluatedat = Number(argumentslist[++index]);
|
|
87
133
|
else
|
|
88
134
|
throw new TypeError(`unsupported release asset argument: ${argument}`);
|
|
89
135
|
}
|
|
90
136
|
return options;
|
|
91
137
|
}
|
|
138
|
+
function normalizeretention(options) {
|
|
139
|
+
const result = {};
|
|
140
|
+
if (options.maxagedays !== undefined)
|
|
141
|
+
result.maxagedays = normalizepolicyinteger(options.maxagedays, "maxagedays");
|
|
142
|
+
if (options.maxcount !== undefined)
|
|
143
|
+
result.maxcount = normalizepolicyinteger(options.maxcount, "maxcount");
|
|
144
|
+
if (options.maxbytes !== undefined)
|
|
145
|
+
result.maxbytes = normalizepolicyinteger(options.maxbytes, "maxbytes");
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
function normalizepolicyinteger(value, name) { const normalized = Number(value); if (!Number.isSafeInteger(normalized) || normalized <= 0)
|
|
149
|
+
throw new RangeError(`${name} must be a positive safe integer`); return normalized; }
|
|
150
|
+
function normalizebytes(value) { const normalized = Number(value ?? 0); if (!Number.isSafeInteger(normalized) || normalized < 0)
|
|
151
|
+
throw new RangeError("retention artifact bytes must be a non-negative safe integer"); return normalized; }
|
|
152
|
+
function normalizeupdatedat(value) { const normalized = Number(value ?? 0); if (!Number.isSafeInteger(normalized) || normalized < 0)
|
|
153
|
+
throw new RangeError("retention artifact updatedat must be a non-negative safe integer"); return normalized; }
|
|
154
|
+
function comparefreshness(left, right) { return right.updatedat - left.updatedat || right.bytes - left.bytes || left.name.localeCompare(right.name); }
|
|
92
155
|
if (process.argv[1] === fileURLToPath(import.meta.url))
|
|
93
156
|
createassets(parsearguments(process.argv.slice(2))).then(({ output }) => { console.log(`release assets: ${output}`); }).catch((error) => { console.error(error.message); process.exitCode = 1; });
|
|
94
157
|
//# sourceMappingURL=assets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../release/assets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../release/assets.ts"],"names":[],"mappings":"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"}
|
package/dist/scrape/robots.js
CHANGED
|
@@ -43,7 +43,7 @@ export function robotsrules(text = "") { const directives = []; const groups = [
|
|
|
43
43
|
/** Fetches and caches a site's robots policy without failing the caller's scrape. */
|
|
44
44
|
export async function fetchRobotsTxt(siteUrl, options = {}) { const base = siteUrl.replace(/\/$/, ""); const robotsUrl = `${base}/robots.txt`; const cached = cache.get(robotsUrl); if (cached && Date.now() - cached.fetchedAt < cachettl)
|
|
45
45
|
return cached.robots; try {
|
|
46
|
-
const response = await fetch(robotsUrl, { headers: { "User-Agent": options.userAgent ?? "Saddle/1.8.
|
|
46
|
+
const response = await fetch(robotsUrl, { headers: { "User-Agent": options.userAgent ?? "Saddle/1.8.13" }, signal: AbortSignal.timeout(options.timeout ?? 5000) });
|
|
47
47
|
const robots = response.ok ? robotsrules(await response.text()) : robotsrules();
|
|
48
48
|
cache.set(robotsUrl, { robots, fetchedAt: Date.now() });
|
|
49
49
|
return robots;
|