@dsh-enhanced/plugin-control-plane 0.1.31 → 0.1.34
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 +352 -4
- package/bin/dsh-local-release-adapter.js +80 -16
- package/bin/dsh-npm-registry-adapter.js +613 -0
- package/bin/dsh-source-adoption-authority.js +12 -0
- package/bin/dsh-source-approval-authority.js +16 -0
- package/bin/dsh-source-release-authority.js +12 -0
- package/bin/dsh-systemd-host-attestor.js +707 -0
- package/bin/dsh-task-observation-authority.js +15 -0
- package/lib/adapter-process.d.ts +23 -0
- package/lib/adapter-process.d.ts.map +1 -0
- package/lib/adapter-process.js +305 -0
- package/lib/adapter-process.js.map +1 -0
- package/lib/adoption-coordinator.d.ts +63 -0
- package/lib/adoption-coordinator.d.ts.map +1 -0
- package/lib/adoption-coordinator.js +241 -0
- package/lib/adoption-coordinator.js.map +1 -0
- package/lib/adoption-handoff.d.ts +16 -0
- package/lib/adoption-handoff.d.ts.map +1 -0
- package/lib/adoption-handoff.js +11 -0
- package/lib/adoption-handoff.js.map +1 -0
- package/lib/attestation.d.ts.map +1 -1
- package/lib/attestation.js +49 -1
- package/lib/attestation.js.map +1 -1
- package/lib/catalog.d.ts.map +1 -1
- package/lib/catalog.js +29 -2
- package/lib/catalog.js.map +1 -1
- package/lib/cli.d.ts +33 -9
- package/lib/cli.d.ts.map +1 -1
- package/lib/cli.js +624 -178
- package/lib/cli.js.map +1 -1
- package/lib/deployment-readiness.d.ts +38 -0
- package/lib/deployment-readiness.d.ts.map +1 -0
- package/lib/deployment-readiness.js +154 -0
- package/lib/deployment-readiness.js.map +1 -0
- package/lib/effect-blocked-replay.d.ts +81 -0
- package/lib/effect-blocked-replay.d.ts.map +1 -0
- package/lib/effect-blocked-replay.js +259 -0
- package/lib/effect-blocked-replay.js.map +1 -0
- package/lib/errors.d.ts +6 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +9 -0
- package/lib/errors.js.map +1 -0
- package/lib/foreground-deployment-runtime.d.ts +20 -0
- package/lib/foreground-deployment-runtime.d.ts.map +1 -0
- package/lib/foreground-deployment-runtime.js +79 -0
- package/lib/foreground-deployment-runtime.js.map +1 -0
- package/lib/foreground-deployment.d.ts +17 -0
- package/lib/foreground-deployment.d.ts.map +1 -0
- package/lib/foreground-deployment.js +43 -0
- package/lib/foreground-deployment.js.map +1 -0
- package/lib/host-attestor.d.ts +1 -1
- package/lib/host-attestor.d.ts.map +1 -1
- package/lib/host-attestor.js +51 -57
- package/lib/host-attestor.js.map +1 -1
- package/lib/index.d.ts +25 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +11 -2
- package/lib/index.js.map +1 -1
- package/lib/npm-publish.d.ts +25 -0
- package/lib/npm-publish.d.ts.map +1 -0
- package/lib/npm-publish.js +280 -0
- package/lib/npm-publish.js.map +1 -0
- package/lib/owner-task-gap-types.d.ts +21 -0
- package/lib/owner-task-gap-types.d.ts.map +1 -0
- package/lib/owner-task-gap-types.js +2 -0
- package/lib/owner-task-gap-types.js.map +1 -0
- package/lib/owner-task-gaps.d.ts +24 -0
- package/lib/owner-task-gaps.d.ts.map +1 -0
- package/lib/owner-task-gaps.js +74 -0
- package/lib/owner-task-gaps.js.map +1 -0
- package/lib/post-activation.d.ts +33 -0
- package/lib/post-activation.d.ts.map +1 -0
- package/lib/post-activation.js +219 -0
- package/lib/post-activation.js.map +1 -0
- package/lib/registry-fetch.d.ts +50 -0
- package/lib/registry-fetch.d.ts.map +1 -0
- package/lib/registry-fetch.js +267 -0
- package/lib/registry-fetch.js.map +1 -0
- package/lib/release.d.ts +4 -4
- package/lib/release.d.ts.map +1 -1
- package/lib/release.js +142 -56
- package/lib/release.js.map +1 -1
- package/lib/replay-endpoint-protocol.d.ts +65 -0
- package/lib/replay-endpoint-protocol.d.ts.map +1 -0
- package/lib/replay-endpoint-protocol.js +183 -0
- package/lib/replay-endpoint-protocol.js.map +1 -0
- package/lib/replay-endpoint.d.ts +7 -0
- package/lib/replay-endpoint.d.ts.map +1 -0
- package/lib/replay-endpoint.js +193 -0
- package/lib/replay-endpoint.js.map +1 -0
- package/lib/replay-grant.d.ts +62 -0
- package/lib/replay-grant.d.ts.map +1 -0
- package/lib/replay-grant.js +208 -0
- package/lib/replay-grant.js.map +1 -0
- package/lib/replay-journal.d.ts +25 -0
- package/lib/replay-journal.d.ts.map +1 -0
- package/lib/replay-journal.js +275 -0
- package/lib/replay-journal.js.map +1 -0
- package/lib/runtime-observer-protocol.d.ts +63 -0
- package/lib/runtime-observer-protocol.d.ts.map +1 -0
- package/lib/runtime-observer-protocol.js +280 -0
- package/lib/runtime-observer-protocol.js.map +1 -0
- package/lib/runtime-observer.d.ts +8 -0
- package/lib/runtime-observer.d.ts.map +1 -0
- package/lib/runtime-observer.js +182 -0
- package/lib/runtime-observer.js.map +1 -0
- package/lib/service.d.ts +145 -1
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +734 -6
- package/lib/service.js.map +1 -1
- package/lib/source-adoption-authority.d.ts +65 -0
- package/lib/source-adoption-authority.d.ts.map +1 -0
- package/lib/source-adoption-authority.js +271 -0
- package/lib/source-adoption-authority.js.map +1 -0
- package/lib/source-adoption-runner.d.ts +28 -0
- package/lib/source-adoption-runner.d.ts.map +1 -0
- package/lib/source-adoption-runner.js +197 -0
- package/lib/source-adoption-runner.js.map +1 -0
- package/lib/source-approval-authority.d.ts +50 -0
- package/lib/source-approval-authority.d.ts.map +1 -0
- package/lib/source-approval-authority.js +412 -0
- package/lib/source-approval-authority.js.map +1 -0
- package/lib/source-approval-client.d.ts +32 -0
- package/lib/source-approval-client.d.ts.map +1 -0
- package/lib/source-approval-client.js +175 -0
- package/lib/source-approval-client.js.map +1 -0
- package/lib/source-build.d.ts +60 -0
- package/lib/source-build.d.ts.map +1 -0
- package/lib/source-build.js +311 -0
- package/lib/source-build.js.map +1 -0
- package/lib/source-context.d.ts +24 -0
- package/lib/source-context.d.ts.map +1 -0
- package/lib/source-context.js +99 -0
- package/lib/source-context.js.map +1 -0
- package/lib/source-job-types.d.ts +87 -0
- package/lib/source-job-types.d.ts.map +1 -0
- package/lib/source-job-types.js +2 -0
- package/lib/source-job-types.js.map +1 -0
- package/lib/source-jobs.d.ts +113 -0
- package/lib/source-jobs.d.ts.map +1 -0
- package/lib/source-jobs.js +535 -0
- package/lib/source-jobs.js.map +1 -0
- package/lib/source-release-authority.d.ts +35 -0
- package/lib/source-release-authority.d.ts.map +1 -0
- package/lib/source-release-authority.js +271 -0
- package/lib/source-release-authority.js.map +1 -0
- package/lib/source-release-client.d.ts +10 -0
- package/lib/source-release-client.d.ts.map +1 -0
- package/lib/source-release-client.js +24 -0
- package/lib/source-release-client.js.map +1 -0
- package/lib/source-release-runner.d.ts +31 -0
- package/lib/source-release-runner.d.ts.map +1 -0
- package/lib/source-release-runner.js +125 -0
- package/lib/source-release-runner.js.map +1 -0
- package/lib/source-versioning.d.ts +24 -0
- package/lib/source-versioning.d.ts.map +1 -0
- package/lib/source-versioning.js +213 -0
- package/lib/source-versioning.js.map +1 -0
- package/lib/source-workspace.d.ts +117 -0
- package/lib/source-workspace.d.ts.map +1 -0
- package/lib/source-workspace.js +458 -0
- package/lib/source-workspace.js.map +1 -0
- package/lib/sqlite.d.ts +1 -1
- package/lib/sqlite.d.ts.map +1 -1
- package/lib/sqlite.js +509 -7
- package/lib/sqlite.js.map +1 -1
- package/lib/store.d.ts +229 -6
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +2431 -383
- package/lib/store.js.map +1 -1
- package/lib/task-observation-authority.d.ts +29 -0
- package/lib/task-observation-authority.d.ts.map +1 -0
- package/lib/task-observation-authority.js +370 -0
- package/lib/task-observation-authority.js.map +1 -0
- package/lib/task-observation-client.d.ts +4 -0
- package/lib/task-observation-client.d.ts.map +1 -0
- package/lib/task-observation-client.js +20 -0
- package/lib/task-observation-client.js.map +1 -0
- package/lib/task-observation-runtime.d.ts +59 -0
- package/lib/task-observation-runtime.d.ts.map +1 -0
- package/lib/task-observation-runtime.js +331 -0
- package/lib/task-observation-runtime.js.map +1 -0
- package/lib/task-observation-store.d.ts +17 -0
- package/lib/task-observation-store.d.ts.map +1 -0
- package/lib/task-observation-store.js +115 -0
- package/lib/task-observation-store.js.map +1 -0
- package/lib/task-observation-types.d.ts +67 -0
- package/lib/task-observation-types.d.ts.map +1 -0
- package/lib/task-observation-types.js +2 -0
- package/lib/task-observation-types.js.map +1 -0
- package/lib/trust.d.ts +3 -0
- package/lib/trust.d.ts.map +1 -1
- package/lib/trust.js +0 -0
- package/lib/trust.js.map +1 -1
- package/lib/types.d.ts +275 -8
- package/lib/types.d.ts.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +40 -5
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { isIP } from 'node:net';
|
|
3
|
+
import { Readable } from 'node:stream';
|
|
4
|
+
import { request as httpsRequest, createServer as createHttpsServer } from 'node:https';
|
|
5
|
+
export class RegistryFetchError extends Error {
|
|
6
|
+
constructor(message) { super(message); this.name = 'RegistryFetchError'; }
|
|
7
|
+
}
|
|
8
|
+
const artifactLimit = 268_435_456;
|
|
9
|
+
const metadataLimit = 2_097_152;
|
|
10
|
+
const versionPattern = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.]+)?$/u;
|
|
11
|
+
const packagePattern = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/u;
|
|
12
|
+
const sriPattern = /^sha512-([A-Za-z0-9+/]{86}==)$/u;
|
|
13
|
+
function error(message) { throw new RegistryFetchError(message); }
|
|
14
|
+
function bareHttps(value, label) {
|
|
15
|
+
if (/[\\?#]/u.test(value) || [...value].some(character => character.charCodeAt(0) <= 0x20 || character.charCodeAt(0) === 0x7f)) {
|
|
16
|
+
error(`${label} must be a bare https URL without credentials or query`);
|
|
17
|
+
}
|
|
18
|
+
let url;
|
|
19
|
+
try {
|
|
20
|
+
url = new URL(value);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return error(`${label} is invalid`);
|
|
24
|
+
}
|
|
25
|
+
if (url.protocol !== 'https:' || url.username !== '' || url.password !== '')
|
|
26
|
+
error(`${label} must be a bare https URL without credentials or query`);
|
|
27
|
+
// Reject nested escapes as well as encoded separators before any server
|
|
28
|
+
// decoding can move a credential-bearing request outside the bound path.
|
|
29
|
+
if (/%(?:2e|2f|5c|25)|%(?![a-f0-9]{2})/iu.test(value))
|
|
30
|
+
error(`${label} path is ambiguous`);
|
|
31
|
+
return url;
|
|
32
|
+
}
|
|
33
|
+
// Assigning pathname cannot reinterpret a double-slash base as a new origin.
|
|
34
|
+
function atPath(base, path) {
|
|
35
|
+
const target = new URL(base);
|
|
36
|
+
target.pathname = path;
|
|
37
|
+
return target;
|
|
38
|
+
}
|
|
39
|
+
function expectedSri(value) {
|
|
40
|
+
if (typeof value !== 'string')
|
|
41
|
+
error('npm registry requires canonical sha512 integrity');
|
|
42
|
+
const match = sriPattern.exec(value);
|
|
43
|
+
if (!match)
|
|
44
|
+
error('npm registry requires canonical sha512 integrity');
|
|
45
|
+
const encoded = match[1];
|
|
46
|
+
const result = Buffer.from(encoded, 'base64');
|
|
47
|
+
if (result.length !== 64 || result.toString('base64') !== encoded)
|
|
48
|
+
error('npm registry requires canonical sha512 integrity');
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
function options(base, binding, environment) {
|
|
52
|
+
const headers = { accept: 'application/json, application/gzip, application/octet-stream', 'accept-encoding': 'identity' };
|
|
53
|
+
if (binding.tokenEnvironment !== null) {
|
|
54
|
+
const token = environment[binding.tokenEnvironment];
|
|
55
|
+
if (typeof token !== 'string' || token.trim() === '' || /[^\x21-\x7e]/u.test(token))
|
|
56
|
+
error('bound registry token environment variable is missing or invalid');
|
|
57
|
+
headers.authorization = `Bearer ${token}`;
|
|
58
|
+
}
|
|
59
|
+
return { headers, tls: binding.caPins.length ? { ca: [...binding.caPins], rejectUnauthorized: true, ...(isIP(base.hostname) === 0 ? { servername: base.hostname } : {}) } : {} };
|
|
60
|
+
}
|
|
61
|
+
function assertLive(deadline, signal) {
|
|
62
|
+
if (signal?.aborted)
|
|
63
|
+
error('registry request aborted');
|
|
64
|
+
if (performance.now() >= deadline)
|
|
65
|
+
error('registry request timed out');
|
|
66
|
+
}
|
|
67
|
+
// Own both sides of the HTTP stream. One absolute deadline bounds DNS, TLS,
|
|
68
|
+
// headers and drip-fed bodies; rejected operations destroy the connection.
|
|
69
|
+
async function fetchOne(url, binding, environment, limit, deadline, signal) {
|
|
70
|
+
assertLive(deadline, signal);
|
|
71
|
+
const setup = options(url, binding, environment);
|
|
72
|
+
return await new Promise((resolve, reject) => {
|
|
73
|
+
let settled = false;
|
|
74
|
+
let req;
|
|
75
|
+
let response;
|
|
76
|
+
const finish = (reason, value) => {
|
|
77
|
+
if (settled)
|
|
78
|
+
return;
|
|
79
|
+
settled = true;
|
|
80
|
+
clearTimeout(timer);
|
|
81
|
+
signal?.removeEventListener('abort', abort);
|
|
82
|
+
if (reason !== undefined) {
|
|
83
|
+
response?.destroy();
|
|
84
|
+
req?.destroy();
|
|
85
|
+
reject(reason);
|
|
86
|
+
}
|
|
87
|
+
else
|
|
88
|
+
resolve(value);
|
|
89
|
+
};
|
|
90
|
+
const abort = () => finish(new RegistryFetchError('registry request aborted'));
|
|
91
|
+
const timer = setTimeout(() => finish(new RegistryFetchError('registry request timed out')), Math.max(1, deadline - performance.now()));
|
|
92
|
+
try {
|
|
93
|
+
req = httpsRequest(url, { method: 'GET', headers: setup.headers, agent: false, rejectUnauthorized: true, ...setup.tls }, incoming => {
|
|
94
|
+
response = incoming;
|
|
95
|
+
incoming.on('error', () => finish(new RegistryFetchError('registry response failed')));
|
|
96
|
+
incoming.on('aborted', () => finish(new RegistryFetchError('registry response ended prematurely')));
|
|
97
|
+
if (settled) {
|
|
98
|
+
incoming.destroy();
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const status = incoming.statusCode ?? 0;
|
|
102
|
+
if (status !== 200) {
|
|
103
|
+
finish(new RegistryFetchError(`registry answered ${status}`));
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const encoding = incoming.headers['content-encoding'];
|
|
107
|
+
if (encoding !== undefined && encoding !== 'identity') {
|
|
108
|
+
finish(new RegistryFetchError('registry response content encoding is unsupported'));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const length = incoming.headers['content-length'];
|
|
112
|
+
if (length !== undefined && (!/^\d{1,10}$/u.test(length) || Number(length) > limit)) {
|
|
113
|
+
finish(new RegistryFetchError('registry response length is invalid or exceeds the bound'));
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
let size = 0;
|
|
117
|
+
const chunks = [];
|
|
118
|
+
incoming.on('data', (chunk) => {
|
|
119
|
+
if (settled)
|
|
120
|
+
return;
|
|
121
|
+
size += chunk.length;
|
|
122
|
+
if (size > limit)
|
|
123
|
+
finish(new RegistryFetchError('registry response exceeds the bounded size'));
|
|
124
|
+
else
|
|
125
|
+
chunks.push(chunk);
|
|
126
|
+
});
|
|
127
|
+
incoming.on('end', () => {
|
|
128
|
+
if (settled)
|
|
129
|
+
return;
|
|
130
|
+
try {
|
|
131
|
+
assertLive(deadline, signal);
|
|
132
|
+
}
|
|
133
|
+
catch (reason) {
|
|
134
|
+
finish(reason);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (length !== undefined && size !== Number(length))
|
|
138
|
+
finish(new RegistryFetchError('registry response length changed during transfer'));
|
|
139
|
+
else if (size === 0)
|
|
140
|
+
finish(new RegistryFetchError('registry response is empty'));
|
|
141
|
+
else
|
|
142
|
+
finish(undefined, { bytes: Buffer.concat(chunks, size),
|
|
143
|
+
mediaType: typeof incoming.headers['content-type'] === 'string' ? incoming.headers['content-type'] : null,
|
|
144
|
+
reference: url.href });
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
req.on('error', raw => {
|
|
148
|
+
const code = String(raw.code ?? '');
|
|
149
|
+
finish(new RegistryFetchError(/CERT|SELF_SIGNED|UNABLE_TO_VERIFY|DEPTH_ZERO/u.test(code)
|
|
150
|
+
? 'registry TLS certificate is not pinned by the owner trust root' : 'registry fetch failed'));
|
|
151
|
+
});
|
|
152
|
+
signal?.addEventListener('abort', abort, { once: true });
|
|
153
|
+
if (signal?.aborted)
|
|
154
|
+
abort();
|
|
155
|
+
else
|
|
156
|
+
req.end();
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
finish(new RegistryFetchError('registry request could not be started'));
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
function tarball(metadata, base, name, version, expected) {
|
|
164
|
+
if (typeof metadata !== 'object' || metadata === null || Array.isArray(metadata))
|
|
165
|
+
error('npm metadata is invalid');
|
|
166
|
+
const item = metadata;
|
|
167
|
+
if (item.name !== name || item.version !== version)
|
|
168
|
+
error('npm metadata package identity does not match the approved artifact');
|
|
169
|
+
if (typeof item.dist !== 'object' || item.dist === null || Array.isArray(item.dist))
|
|
170
|
+
error('npm metadata distribution is invalid');
|
|
171
|
+
const dist = item.dist;
|
|
172
|
+
if (dist.integrity !== expected)
|
|
173
|
+
error('npm metadata integrity does not match the approved artifact');
|
|
174
|
+
if (typeof dist.tarball !== 'string' || dist.tarball.length > 8_192)
|
|
175
|
+
error('npm tarball URL is invalid');
|
|
176
|
+
const url = bareHttps(dist.tarball, 'npm tarball URL');
|
|
177
|
+
const prefix = `${base.pathname.replace(/\/+$/u, '')}/`;
|
|
178
|
+
if (url.origin !== base.origin || !url.pathname.startsWith(prefix))
|
|
179
|
+
error('npm tarball URL is outside the approved registry base');
|
|
180
|
+
return url;
|
|
181
|
+
}
|
|
182
|
+
function validateRequest(request) {
|
|
183
|
+
if (!packagePattern.test(request.packageName))
|
|
184
|
+
error('registry package name is invalid');
|
|
185
|
+
if (!versionPattern.test(request.version))
|
|
186
|
+
error('registry version is not an exact immutable version');
|
|
187
|
+
if (request.timeoutMs !== undefined && (!Number.isSafeInteger(request.timeoutMs) || request.timeoutMs < 1 || request.timeoutMs > 120_000))
|
|
188
|
+
error('registry timeout is invalid');
|
|
189
|
+
const protocol = request.registry.protocol === undefined ? 'dsh' : request.registry.protocol;
|
|
190
|
+
if (protocol !== 'dsh' && protocol !== 'npm')
|
|
191
|
+
error('registry protocol is invalid');
|
|
192
|
+
const base = bareHttps(request.registry.locator, 'registry locator');
|
|
193
|
+
const deadline = performance.now() + (request.timeoutMs ?? 120_000);
|
|
194
|
+
assertLive(deadline, request.signal);
|
|
195
|
+
return { base, deadline, protocol };
|
|
196
|
+
}
|
|
197
|
+
async function observeNpm(request, environment, base, deadline, expected) {
|
|
198
|
+
const root = base.pathname.endsWith('/') ? base.pathname : `${base.pathname}/`;
|
|
199
|
+
const metadata = await fetchOne(atPath(base, `${root}${encodeURIComponent(request.packageName)}/${request.version}`), request.registry, environment, metadataLimit, deadline, request.signal);
|
|
200
|
+
let parsed;
|
|
201
|
+
try {
|
|
202
|
+
parsed = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(metadata.bytes));
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return error('npm metadata is invalid');
|
|
206
|
+
}
|
|
207
|
+
const metadataIntegrity = parsed?.dist?.integrity;
|
|
208
|
+
const url = tarball(parsed, base, request.packageName, request.version, expected ?? metadataIntegrity);
|
|
209
|
+
const hash = expectedSri(metadataIntegrity);
|
|
210
|
+
const result = await fetchOne(url, request.registry, environment, artifactLimit, deadline, request.signal);
|
|
211
|
+
if (!createHash('sha512').update(result.bytes).digest().equals(hash))
|
|
212
|
+
error('npm artifact integrity does not match the owner expectation or registry metadata');
|
|
213
|
+
assertLive(deadline, request.signal);
|
|
214
|
+
return { ...result, metadataReference: metadata.reference, metadataIntegrity: metadataIntegrity };
|
|
215
|
+
}
|
|
216
|
+
export async function observeNpmRegistryArtifact(request, environment) {
|
|
217
|
+
const { base, deadline, protocol } = validateRequest(request);
|
|
218
|
+
if (protocol !== 'npm')
|
|
219
|
+
error('npm observation requires explicit npm protocol');
|
|
220
|
+
return await observeNpm(request, environment, base, deadline);
|
|
221
|
+
}
|
|
222
|
+
export async function fetchRegistryArtifact(request, environment) {
|
|
223
|
+
const { base, deadline, protocol } = validateRequest(request);
|
|
224
|
+
if (protocol === 'dsh') {
|
|
225
|
+
const encoded = request.packageName.split('/').map(encodeURIComponent).join('/');
|
|
226
|
+
const root = base.pathname.replace(/\/+$/u, '');
|
|
227
|
+
return await fetchOne(atPath(base, `${root}/packages/${encoded}/${request.version}/package.tgz`), request.registry, environment, artifactLimit, deadline, request.signal);
|
|
228
|
+
}
|
|
229
|
+
const expected = request.expectedIntegrity;
|
|
230
|
+
expectedSri(expected);
|
|
231
|
+
const { metadataReference: _metadataReference, metadataIntegrity: _metadataIntegrity, ...result } = await observeNpm(request, environment, base, deadline, expected);
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
// Test-only loopback registry: HTTPS with a supplied certificate so the client
|
|
235
|
+
// exercises the same pinned-CA path as a production registry.
|
|
236
|
+
export async function startLocalHttpsRegistry(options) {
|
|
237
|
+
const server = createHttpsServer({ key: options.key, cert: options.cert }, (req, res) => {
|
|
238
|
+
const result = options.handle({
|
|
239
|
+
method: req.method ?? 'GET',
|
|
240
|
+
path: req.url ?? '/',
|
|
241
|
+
authorization: typeof req.headers.authorization === 'string' ? req.headers.authorization : undefined,
|
|
242
|
+
});
|
|
243
|
+
if (result.bytes !== undefined) {
|
|
244
|
+
res.writeHead(result.status, {
|
|
245
|
+
...(result.contentType === undefined ? {} : { 'content-type': result.contentType }),
|
|
246
|
+
'content-length': result.bytes.length,
|
|
247
|
+
});
|
|
248
|
+
Readable.from([result.bytes]).pipe(res);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
res.writeHead(result.status, result.contentType === undefined ? {} : { 'content-type': result.contentType });
|
|
252
|
+
res.end();
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
await new Promise((resolve, reject) => {
|
|
256
|
+
server.once('error', reject);
|
|
257
|
+
server.listen(0, '127.0.0.1', () => resolve());
|
|
258
|
+
});
|
|
259
|
+
const address = server.address();
|
|
260
|
+
return {
|
|
261
|
+
origin: `https://127.0.0.1:${address.port}`,
|
|
262
|
+
async close() {
|
|
263
|
+
await new Promise((resolve, reject) => server.close(error => error === undefined ? resolve() : reject(error)));
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=registry-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-fetch.js","sourceRoot":"","sources":["../src/registry-fetch.ts"],"names":[],"mappings":"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"}
|
package/lib/release.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type PluginControlTrustConfig } from './trust.js';
|
|
2
|
-
import type { PluginSourcePlan, SourcePublishReconciliationAuthority, SourcePublishReconciliationEvidence, SourcePublishReconciliationReceipt, SourcePublishReconciliationRequest, SourceReleaseArtifact, SourceReleaseAuthorization, SourceReleaseAuthorizationAuthority, SourceReleaseAuthority, SourceReleasePhase, SourceReleaseReceipt, SourceReleaseRequest, VerifiedSourceReleaseAuthorization, VerifiedSourceReleaseReceipt, VerifiedSourcePublishReconciliationReceipt } from './types.js';
|
|
2
|
+
import type { PluginSourcePlan, SourcePublishReconciliationAuthority, SourcePublishReconciliationEvidence, SourcePublishReconciliationReceipt, SourcePublishReconciliationReceiptV1, SourceNpmPublishReconciliationReceipt, SourcePublishReconciliationRequest, SourceReleaseArtifact, SourceReleaseAuthorization, SourceReleaseAuthorizationAuthority, SourceReleaseAuthority, SourceReleasePhase, SourceReleaseReceipt, SourceReleaseRequest, VerifiedSourceReleaseAuthorization, VerifiedSourceReleaseReceipt, VerifiedSourcePublishReconciliationReceipt } from './types.js';
|
|
3
3
|
export declare function parseSourceReleaseAuthorization(value: unknown): SourceReleaseAuthorization;
|
|
4
4
|
export declare function parseVerifiedSourceReleaseAuthorization(value: unknown): VerifiedSourceReleaseAuthorization;
|
|
5
5
|
export declare function sourceReleaseAuthorizationSigningPayload(authorization: Omit<SourceReleaseAuthorization, 'signature'>): string;
|
|
@@ -15,7 +15,7 @@ export declare function parseSourcePublishReconciliationRequest(value: unknown):
|
|
|
15
15
|
export declare function sourcePublishReconciliationRequestDigest(value: SourcePublishReconciliationRequest): string;
|
|
16
16
|
export declare function sourcePublishReconciliationEvidenceDigest(value: SourcePublishReconciliationEvidence): string;
|
|
17
17
|
export declare function parseSourcePublishReconciliationReceipt(value: unknown): SourcePublishReconciliationReceipt;
|
|
18
|
-
export declare function sourcePublishReconciliationSigningPayload(receipt: Omit<SourcePublishReconciliationReceipt, 'signature'>): string;
|
|
18
|
+
export declare function sourcePublishReconciliationSigningPayload(receipt: Omit<SourcePublishReconciliationReceiptV1, 'signature'> | Omit<SourceNpmPublishReconciliationReceipt, 'signature'> | Omit<SourcePublishReconciliationReceipt, 'signature'>): string;
|
|
19
19
|
export declare class Ed25519SourcePublishReconciliationAuthority implements SourcePublishReconciliationAuthority {
|
|
20
20
|
readonly publicKey: string | Buffer;
|
|
21
21
|
readonly expectedAuthority: string;
|
|
@@ -40,12 +40,12 @@ export declare class Ed25519SourceReleaseAuthority implements SourceReleaseAutho
|
|
|
40
40
|
constructor(publicKey: string | Buffer, expectedAuthority: string, expectedKeyId: string, now?: () => number, resolveRegistryVerifier?: ((authority: string, keyId: string) => string | Buffer | undefined) | undefined);
|
|
41
41
|
verify(input: SourceReleaseReceipt, plan: PluginSourcePlan, request: SourceReleaseRequest): Promise<VerifiedSourceReleaseReceipt>;
|
|
42
42
|
}
|
|
43
|
-
export type ReleaseAdapterErrorCode = 'NOT_CONFIGURED' | 'FAILED' | 'OUTPUT_LIMIT' | 'TIMEOUT' | 'VERSION_MISMATCH' | 'EXECUTABLE_CHANGED';
|
|
43
|
+
export type ReleaseAdapterErrorCode = 'ABORTED' | 'NOT_CONFIGURED' | 'FAILED' | 'OUTPUT_LIMIT' | 'TIMEOUT' | 'VERSION_MISMATCH' | 'EXECUTABLE_CHANGED';
|
|
44
44
|
export declare class ReleaseAdapterError extends Error {
|
|
45
45
|
readonly code: ReleaseAdapterErrorCode;
|
|
46
46
|
readonly phase: SourceReleasePhase;
|
|
47
47
|
constructor(code: ReleaseAdapterErrorCode, phase: SourceReleasePhase, message: string);
|
|
48
48
|
}
|
|
49
|
-
export declare function invokeSourceReleaseAdapter(trust: PluginControlTrustConfig, request: SourceReleaseRequest): Promise<SourceReleaseReceipt>;
|
|
49
|
+
export declare function invokeSourceReleaseAdapter(trust: PluginControlTrustConfig, request: SourceReleaseRequest, signal?: AbortSignal): Promise<SourceReleaseReceipt>;
|
|
50
50
|
export declare function invokeSourcePublishReconciliationAdapter(trust: PluginControlTrustConfig, request: SourcePublishReconciliationRequest): Promise<SourcePublishReconciliationReceipt>;
|
|
51
51
|
//# sourceMappingURL=release.d.ts.map
|
package/lib/release.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"AAOA,OAAO,EACuB,KAAK,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,KAAK,EACV,gBAAgB,EAChB,oCAAoC,EACpC,mCAAmC,
|
|
1
|
+
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"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"}
|