slybrowser 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +146 -0
- package/dist/automation.d.ts +15 -0
- package/dist/automation.d.ts.map +1 -0
- package/dist/automation.js +69 -0
- package/dist/automation.js.map +1 -0
- package/dist/browser.d.ts +31 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +203 -0
- package/dist/browser.js.map +1 -0
- package/dist/canonical.d.ts +4 -0
- package/dist/canonical.d.ts.map +1 -0
- package/dist/canonical.js +42 -0
- package/dist/canonical.js.map +1 -0
- package/dist/cdp.d.ts +21 -0
- package/dist/cdp.d.ts.map +1 -0
- package/dist/cdp.js +139 -0
- package/dist/cdp.js.map +1 -0
- package/dist/cli.d.ts +19 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +241 -0
- package/dist/cli.js.map +1 -0
- package/dist/errors.d.ts +21 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +113 -0
- package/dist/errors.js.map +1 -0
- package/dist/humanize.d.ts +23 -0
- package/dist/humanize.d.ts.map +1 -0
- package/dist/humanize.js +247 -0
- package/dist/humanize.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/installer.d.ts +43 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +669 -0
- package/dist/installer.js.map +1 -0
- package/dist/launcher.d.ts +38 -0
- package/dist/launcher.d.ts.map +1 -0
- package/dist/launcher.js +325 -0
- package/dist/launcher.js.map +1 -0
- package/dist/license.d.ts +76 -0
- package/dist/license.d.ts.map +1 -0
- package/dist/license.js +329 -0
- package/dist/license.js.map +1 -0
- package/dist/licensed.d.ts +82 -0
- package/dist/licensed.d.ts.map +1 -0
- package/dist/licensed.js +513 -0
- package/dist/licensed.js.map +1 -0
- package/dist/manifest.d.ts +66 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +292 -0
- package/dist/manifest.js.map +1 -0
- package/dist/service.d.ts +206 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +1271 -0
- package/dist/service.js.map +1 -0
- package/dist/webdriver.d.ts +208 -0
- package/dist/webdriver.d.ts.map +1 -0
- package/dist/webdriver.js +592 -0
- package/dist/webdriver.js.map +1 -0
- package/package.json +78 -0
package/dist/licensed.js
ADDED
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
import { findCurrentBrowserInstallation, acquireBrowserInstallationReference, installGrantedBrowser, } from "./installer.js";
|
|
2
|
+
import { launchPlaywright, launchPlaywrightPersistent, launchPuppeteer, launchPuppeteerPersistent, } from "./browser.js";
|
|
3
|
+
import { LicenseServiceClient, readLicenseAuthorization, } from "./service.js";
|
|
4
|
+
import { launch as launchWebDriver } from "./webdriver.js";
|
|
5
|
+
import { ArtifactError, ConfigurationError, LicenseServiceError } from "./errors.js";
|
|
6
|
+
const MAX_BOOTSTRAP_HEARTBEAT_FAILURES = 10;
|
|
7
|
+
function compareVersion(left, right) {
|
|
8
|
+
const leftParts = left.split(".").map(Number);
|
|
9
|
+
const rightParts = right.split(".").map(Number);
|
|
10
|
+
for (let index = 0; index < Math.max(leftParts.length, rightParts.length); index += 1) {
|
|
11
|
+
const difference = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);
|
|
12
|
+
if (difference !== 0)
|
|
13
|
+
return difference < 0 ? -1 : 1;
|
|
14
|
+
}
|
|
15
|
+
return 0;
|
|
16
|
+
}
|
|
17
|
+
export function verifyBrowserVersionAudit(audit) {
|
|
18
|
+
if (audit.downloaded !== audit.selected || audit.launched !== audit.selected) {
|
|
19
|
+
throw new ArtifactError(`Browser version chain mismatch: selected=${audit.selected}, downloaded=${audit.downloaded}, launched=${audit.launched}`, "browser_version_chain_mismatch");
|
|
20
|
+
}
|
|
21
|
+
if (audit.policy === "latest" && audit.requested !== null ||
|
|
22
|
+
audit.policy === "exact" && audit.requested !== audit.selected ||
|
|
23
|
+
audit.policy === "at-or-before" && (audit.requested === null || compareVersion(audit.selected, audit.requested) > 0)) {
|
|
24
|
+
throw new ArtifactError("Requested and selected browser versions violate the declared policy", "browser_version_policy_mismatch");
|
|
25
|
+
}
|
|
26
|
+
return Object.freeze({ ...audit });
|
|
27
|
+
}
|
|
28
|
+
export function heartbeatDelayMilliseconds(heartbeatAfterSeconds, _random = Math.random) {
|
|
29
|
+
const baseSeconds = Math.max(1, heartbeatAfterSeconds);
|
|
30
|
+
return Math.round(baseSeconds * 1000);
|
|
31
|
+
}
|
|
32
|
+
class BootstrapHeartbeatController {
|
|
33
|
+
client;
|
|
34
|
+
grant;
|
|
35
|
+
#timer;
|
|
36
|
+
#stopped = false;
|
|
37
|
+
#expiresAt;
|
|
38
|
+
#consecutiveFailures = 0;
|
|
39
|
+
constructor(client, grant) {
|
|
40
|
+
this.client = client;
|
|
41
|
+
this.grant = grant;
|
|
42
|
+
this.#expiresAt = grant.expiresAt;
|
|
43
|
+
}
|
|
44
|
+
start() {
|
|
45
|
+
this.#schedule(heartbeatDelayMilliseconds(this.grant.heartbeatAfterSeconds));
|
|
46
|
+
}
|
|
47
|
+
stop() {
|
|
48
|
+
if (this.#stopped)
|
|
49
|
+
return;
|
|
50
|
+
this.#stopped = true;
|
|
51
|
+
if (this.#timer)
|
|
52
|
+
clearTimeout(this.#timer);
|
|
53
|
+
}
|
|
54
|
+
#schedule(delay) {
|
|
55
|
+
if (this.#stopped)
|
|
56
|
+
return;
|
|
57
|
+
this.#timer = setTimeout(() => void this.#heartbeat(), delay);
|
|
58
|
+
this.#timer.unref();
|
|
59
|
+
}
|
|
60
|
+
async #heartbeat() {
|
|
61
|
+
if (this.#stopped)
|
|
62
|
+
return;
|
|
63
|
+
try {
|
|
64
|
+
const renewal = await this.client.bootstrapHeartbeat(this.grant);
|
|
65
|
+
this.#expiresAt = renewal.expiresAt;
|
|
66
|
+
this.grant.expiresAt = renewal.expiresAt;
|
|
67
|
+
this.grant.lease = renewal.lease;
|
|
68
|
+
this.grant.claims = renewal.claims;
|
|
69
|
+
this.#consecutiveFailures = 0;
|
|
70
|
+
this.#schedule(heartbeatDelayMilliseconds(this.grant.heartbeatAfterSeconds));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
this.#consecutiveFailures += 1;
|
|
74
|
+
if (this.#consecutiveFailures >= MAX_BOOTSTRAP_HEARTBEAT_FAILURES) {
|
|
75
|
+
this.stop();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this.#schedule(heartbeatDelayMilliseconds(this.grant.heartbeatAfterSeconds));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function runtimeBootstrapHandoff(client, grant, existing, activationTicket = grant.activationTicket) {
|
|
83
|
+
return {
|
|
84
|
+
...(existing ?? {}),
|
|
85
|
+
schemaVersion: 2,
|
|
86
|
+
serviceUrl: client.authorization.serviceUrl,
|
|
87
|
+
state: grant.state,
|
|
88
|
+
startupId: grant.startupId,
|
|
89
|
+
sessionId: grant.sessionId,
|
|
90
|
+
bootstrapToken: grant.bootstrapToken,
|
|
91
|
+
activationTicket,
|
|
92
|
+
heartbeatAfterSeconds: grant.heartbeatAfterSeconds,
|
|
93
|
+
expiresAt: grant.expiresAt,
|
|
94
|
+
plan: grant.plan,
|
|
95
|
+
features: [...grant.features],
|
|
96
|
+
concurrencyLimit: grant.concurrencyLimit,
|
|
97
|
+
activeSessions: grant.activeSessions,
|
|
98
|
+
browserVersion: grant.browserVersion,
|
|
99
|
+
...(grant.automationBackend === undefined ? {} : { automationBackend: grant.automationBackend }),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function driverRuntimeBootstrapHandoff(client, grant, existing) {
|
|
103
|
+
if (!grant.driverActivationTicket) {
|
|
104
|
+
throw new ConfigurationError("Project WebDriver runtime session is missing a driver activation ticket", "license_service_invalid_response");
|
|
105
|
+
}
|
|
106
|
+
return runtimeBootstrapHandoff(client, grant, existing, grant.driverActivationTicket);
|
|
107
|
+
}
|
|
108
|
+
function splitFrameworkLaunchOptions(options) {
|
|
109
|
+
const { trust, install, platform, arch, deviceHash, kernelMajor, updateKernel, browserVersion, versionPolicy, ...frameworkOptions } = options;
|
|
110
|
+
const authorizedOptions = {
|
|
111
|
+
trust,
|
|
112
|
+
...(install === undefined ? {} : { install }),
|
|
113
|
+
...(platform === undefined ? {} : { platform }),
|
|
114
|
+
...(arch === undefined ? {} : { arch }),
|
|
115
|
+
...(deviceHash === undefined ? {} : { deviceHash }),
|
|
116
|
+
...(kernelMajor === undefined ? {} : { kernelMajor }),
|
|
117
|
+
...(updateKernel === undefined ? {} : { updateKernel }),
|
|
118
|
+
...(browserVersion === undefined ? {} : { browserVersion }),
|
|
119
|
+
...(versionPolicy === undefined ? {} : { versionPolicy }),
|
|
120
|
+
};
|
|
121
|
+
return {
|
|
122
|
+
authorizedOptions,
|
|
123
|
+
frameworkOptions,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function normalizeFrameworkBrowserVersion(value) {
|
|
127
|
+
if (typeof value !== "string") {
|
|
128
|
+
throw new ArtifactError("Framework browser did not report a version", "browser_version_missing");
|
|
129
|
+
}
|
|
130
|
+
const match = value.match(/(\d+\.\d+\.\d+\.\d+)/);
|
|
131
|
+
if (!match) {
|
|
132
|
+
throw new ArtifactError(`Framework browser returned an unsupported version string: ${value}`, "browser_version_invalid");
|
|
133
|
+
}
|
|
134
|
+
return match[1];
|
|
135
|
+
}
|
|
136
|
+
async function frameworkRuntimeVersion(runtime) {
|
|
137
|
+
const candidate = runtime;
|
|
138
|
+
if (typeof candidate.version === "function") {
|
|
139
|
+
return normalizeFrameworkBrowserVersion(await candidate.version.call(runtime));
|
|
140
|
+
}
|
|
141
|
+
if (typeof candidate.browser === "function") {
|
|
142
|
+
const browser = candidate.browser.call(runtime);
|
|
143
|
+
if (browser && typeof browser.version === "function") {
|
|
144
|
+
return normalizeFrameworkBrowserVersion(await browser.version.call(browser));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
throw new ArtifactError("Framework browser did not expose a version method", "browser_version_missing");
|
|
148
|
+
}
|
|
149
|
+
function attachLicensedRuntime(runtime, authorized, versionAudit, reference) {
|
|
150
|
+
const closable = runtime;
|
|
151
|
+
if (typeof closable.close !== "function") {
|
|
152
|
+
throw new ArtifactError("Framework runtime does not expose a close method for license release", "framework_runtime_close_missing");
|
|
153
|
+
}
|
|
154
|
+
const originalClose = closable.close;
|
|
155
|
+
let released = false;
|
|
156
|
+
async function stopAndRelease() {
|
|
157
|
+
if (released)
|
|
158
|
+
return;
|
|
159
|
+
released = true;
|
|
160
|
+
await Promise.allSettled([
|
|
161
|
+
authorized.release(),
|
|
162
|
+
reference.release(),
|
|
163
|
+
]);
|
|
164
|
+
}
|
|
165
|
+
closable.licenseRuntime = {
|
|
166
|
+
sessionId: authorized.grant.sessionId,
|
|
167
|
+
plan: authorized.grant.plan,
|
|
168
|
+
concurrencyLimit: authorized.grant.concurrencyLimit,
|
|
169
|
+
browserVersion: authorized.grant.browserVersion,
|
|
170
|
+
versionPolicy: authorized.grant.versionPolicy,
|
|
171
|
+
selectionReason: authorized.grant.selectionReason,
|
|
172
|
+
versionAudit,
|
|
173
|
+
};
|
|
174
|
+
closable.close = async function closeWithLicenseRelease(...args) {
|
|
175
|
+
try {
|
|
176
|
+
return await originalClose.apply(this, args);
|
|
177
|
+
}
|
|
178
|
+
finally {
|
|
179
|
+
await stopAndRelease();
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
return closable;
|
|
183
|
+
}
|
|
184
|
+
async function finalizeFrameworkRuntime(runtime, authorized) {
|
|
185
|
+
try {
|
|
186
|
+
const closable = runtime;
|
|
187
|
+
if (typeof closable.close !== "function") {
|
|
188
|
+
throw new ArtifactError("Framework runtime does not expose a close method for license release", "framework_runtime_close_missing");
|
|
189
|
+
}
|
|
190
|
+
const launched = await frameworkRuntimeVersion(runtime);
|
|
191
|
+
const versionAudit = verifyBrowserVersionAudit({
|
|
192
|
+
requested: authorized.grant.requestedBrowserVersion ?? null,
|
|
193
|
+
selected: authorized.grant.browserVersion,
|
|
194
|
+
downloaded: authorized.installation.version,
|
|
195
|
+
launched,
|
|
196
|
+
policy: authorized.grant.versionPolicy,
|
|
197
|
+
selectionReason: authorized.grant.selectionReason,
|
|
198
|
+
});
|
|
199
|
+
const reference = await acquireBrowserInstallationReference(authorized.installation);
|
|
200
|
+
return attachLicensedRuntime(runtime, authorized, versionAudit, reference);
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
const closable = runtime;
|
|
204
|
+
if (typeof closable.close === "function")
|
|
205
|
+
await Promise.resolve(closable.close()).catch(() => undefined);
|
|
206
|
+
await authorized.release().catch(() => undefined);
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async function installWithHeartbeat(client, grant, install) {
|
|
211
|
+
let stopped = false;
|
|
212
|
+
let timer;
|
|
213
|
+
let renewalFailure;
|
|
214
|
+
let consecutiveFailures = 0;
|
|
215
|
+
const schedule = () => {
|
|
216
|
+
if (stopped)
|
|
217
|
+
return;
|
|
218
|
+
timer = setTimeout(() => void renew(), heartbeatDelayMilliseconds(grant.heartbeatAfterSeconds));
|
|
219
|
+
timer.unref();
|
|
220
|
+
};
|
|
221
|
+
const renew = async () => {
|
|
222
|
+
if (stopped)
|
|
223
|
+
return;
|
|
224
|
+
try {
|
|
225
|
+
const heartbeat = await client.bootstrapHeartbeat(grant);
|
|
226
|
+
grant.expiresAt = heartbeat.expiresAt;
|
|
227
|
+
grant.lease = heartbeat.lease;
|
|
228
|
+
grant.claims = heartbeat.claims;
|
|
229
|
+
renewalFailure = undefined;
|
|
230
|
+
consecutiveFailures = 0;
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
renewalFailure = error;
|
|
234
|
+
consecutiveFailures += 1;
|
|
235
|
+
}
|
|
236
|
+
if (consecutiveFailures < MAX_BOOTSTRAP_HEARTBEAT_FAILURES)
|
|
237
|
+
schedule();
|
|
238
|
+
};
|
|
239
|
+
schedule();
|
|
240
|
+
try {
|
|
241
|
+
const installation = await install();
|
|
242
|
+
if (renewalFailure && consecutiveFailures >= MAX_BOOTSTRAP_HEARTBEAT_FAILURES)
|
|
243
|
+
throw renewalFailure;
|
|
244
|
+
return installation;
|
|
245
|
+
}
|
|
246
|
+
finally {
|
|
247
|
+
stopped = true;
|
|
248
|
+
if (timer)
|
|
249
|
+
clearTimeout(timer);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
export async function installLatestAuthorizedBrowser(authorizationFile, options) {
|
|
253
|
+
const authorization = await readLicenseAuthorization(authorizationFile, {
|
|
254
|
+
...(options.trust.allowInsecureLocalhost === undefined
|
|
255
|
+
? {}
|
|
256
|
+
: { allowInsecureLocalhost: options.trust.allowInsecureLocalhost }),
|
|
257
|
+
...(options.trust.licenseFilePassphrase === undefined
|
|
258
|
+
? {}
|
|
259
|
+
: { licenseFilePassphrase: options.trust.licenseFilePassphrase }),
|
|
260
|
+
...(options.trust.licenseFileTrustedKeys === undefined
|
|
261
|
+
? {}
|
|
262
|
+
: { licenseFileTrustedKeys: options.trust.licenseFileTrustedKeys }),
|
|
263
|
+
...(options.trust.trustedServiceUrls === undefined
|
|
264
|
+
? {}
|
|
265
|
+
: { trustedServiceUrls: options.trust.trustedServiceUrls }),
|
|
266
|
+
});
|
|
267
|
+
const client = new LicenseServiceClient(authorization, options.trust);
|
|
268
|
+
const updateKernel = options.updateKernel ?? true;
|
|
269
|
+
const localCandidate = !updateKernel && options.browserVersion === undefined && options.versionPolicy === undefined
|
|
270
|
+
? await findCurrentBrowserInstallation({
|
|
271
|
+
...(options.install?.cacheRoot === undefined ? {} : { cacheRoot: options.install.cacheRoot }),
|
|
272
|
+
...(options.platform === undefined ? {} : { platform: options.platform }),
|
|
273
|
+
...(options.arch === undefined ? {} : { arch: options.arch }),
|
|
274
|
+
...(options.kernelMajor === undefined ? {} : { kernelMajor: options.kernelMajor }),
|
|
275
|
+
})
|
|
276
|
+
: null;
|
|
277
|
+
let grant;
|
|
278
|
+
try {
|
|
279
|
+
grant = await client.createRuntimeSession({
|
|
280
|
+
...(options.platform === undefined ? {} : { platform: options.platform }),
|
|
281
|
+
...(options.arch === undefined ? {} : { arch: options.arch }),
|
|
282
|
+
...(options.deviceHash === undefined ? {} : { deviceHash: options.deviceHash }),
|
|
283
|
+
...(options.kernelMajor === undefined ? {} : { kernelMajor: options.kernelMajor }),
|
|
284
|
+
automationBackend: options.automationBackend ?? "project-webdriver",
|
|
285
|
+
updateKernel,
|
|
286
|
+
...(localCandidate ? { browserVersion: localCandidate.version } :
|
|
287
|
+
options.browserVersion === undefined ? {} : { browserVersion: options.browserVersion }),
|
|
288
|
+
...(localCandidate ? { versionPolicy: "exact" } :
|
|
289
|
+
options.versionPolicy === undefined ? {} : { versionPolicy: options.versionPolicy }),
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
if (localCandidate && error instanceof LicenseServiceError && error.code === "release_version_unavailable") {
|
|
294
|
+
throw new LicenseServiceError("The current local browser release was withdrawn; update is required before continuing", "kernel_update_required", 409);
|
|
295
|
+
}
|
|
296
|
+
throw error;
|
|
297
|
+
}
|
|
298
|
+
try {
|
|
299
|
+
const installation = await installWithHeartbeat(client, grant, () => installGrantedBrowser(client, grant, options.install));
|
|
300
|
+
let released = false;
|
|
301
|
+
return {
|
|
302
|
+
client,
|
|
303
|
+
grant,
|
|
304
|
+
installation,
|
|
305
|
+
async release() {
|
|
306
|
+
if (released)
|
|
307
|
+
return;
|
|
308
|
+
released = true;
|
|
309
|
+
await client.releaseRuntimeSession(grant);
|
|
310
|
+
},
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
await client.releaseRuntimeSession(grant).catch(() => undefined);
|
|
315
|
+
throw error;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
export async function installLatest(authorizationFile, options) {
|
|
319
|
+
const authorized = await installLatestAuthorizedBrowser(authorizationFile, options);
|
|
320
|
+
try {
|
|
321
|
+
return authorized.installation;
|
|
322
|
+
}
|
|
323
|
+
finally {
|
|
324
|
+
await authorized.release().catch(() => undefined);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
export async function prepareAuthorizedBrowser(authorizationFile, options) {
|
|
328
|
+
return installLatestAuthorizedBrowser(authorizationFile, {
|
|
329
|
+
...options,
|
|
330
|
+
updateKernel: options.updateKernel ?? false,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
// The general authorized entry point supports latest, major-scoped selection, exact pinning,
|
|
334
|
+
// and explicit at-or-before rollback without opting into updates by default.
|
|
335
|
+
export const installAuthorizedBrowser = prepareAuthorizedBrowser;
|
|
336
|
+
export async function installAuthorized(authorizationFile, options) {
|
|
337
|
+
const authorized = await prepareAuthorizedBrowser(authorizationFile, options);
|
|
338
|
+
try {
|
|
339
|
+
return authorized.installation;
|
|
340
|
+
}
|
|
341
|
+
finally {
|
|
342
|
+
await authorized.release().catch(() => undefined);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
export async function launchLatest(authorizationFile, options) {
|
|
346
|
+
const { trust: _trust, install: _install, platform: _platform, arch: _arch, deviceHash: _deviceHash, kernelMajor: _kernelMajor, updateKernel: _updateKernel, browserVersion: _browserVersion, versionPolicy: _versionPolicy, automationBackend: _automationBackend, ...launchOptions } = options;
|
|
347
|
+
const authorized = await installLatestAuthorizedBrowser(authorizationFile, {
|
|
348
|
+
...options,
|
|
349
|
+
automationBackend: options.automationBackend ?? "project-webdriver",
|
|
350
|
+
});
|
|
351
|
+
let reference;
|
|
352
|
+
const bootstrap = new BootstrapHeartbeatController(authorized.client, authorized.grant);
|
|
353
|
+
try {
|
|
354
|
+
bootstrap.start();
|
|
355
|
+
reference = await acquireBrowserInstallationReference(authorized.installation);
|
|
356
|
+
const browser = await launchWebDriver(authorized.installation.browserExecutable, authorized.grant.lease, {
|
|
357
|
+
...launchOptions,
|
|
358
|
+
driverExecutable: authorized.installation.driverExecutable,
|
|
359
|
+
runtimeHandoff: runtimeBootstrapHandoff(authorized.client, authorized.grant, launchOptions.runtimeHandoff),
|
|
360
|
+
driverRuntimeHandoff: driverRuntimeBootstrapHandoff(authorized.client, authorized.grant, launchOptions.driverRuntimeHandoff),
|
|
361
|
+
allowRuntimeActivationTicket: true,
|
|
362
|
+
});
|
|
363
|
+
let versionAudit;
|
|
364
|
+
try {
|
|
365
|
+
versionAudit = verifyBrowserVersionAudit({
|
|
366
|
+
requested: authorized.grant.requestedBrowserVersion ?? null,
|
|
367
|
+
selected: authorized.grant.browserVersion,
|
|
368
|
+
downloaded: authorized.installation.version,
|
|
369
|
+
launched: browser.versions.browserVersion,
|
|
370
|
+
policy: authorized.grant.versionPolicy,
|
|
371
|
+
selectionReason: authorized.grant.selectionReason,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
await browser.close();
|
|
376
|
+
throw error;
|
|
377
|
+
}
|
|
378
|
+
bootstrap.stop();
|
|
379
|
+
browser.licenseRuntime = {
|
|
380
|
+
sessionId: authorized.grant.sessionId,
|
|
381
|
+
plan: authorized.grant.plan,
|
|
382
|
+
concurrencyLimit: authorized.grant.concurrencyLimit,
|
|
383
|
+
browserVersion: authorized.grant.browserVersion,
|
|
384
|
+
versionPolicy: authorized.grant.versionPolicy,
|
|
385
|
+
selectionReason: authorized.grant.selectionReason,
|
|
386
|
+
versionAudit,
|
|
387
|
+
};
|
|
388
|
+
browser.addCloseCallback(async () => {
|
|
389
|
+
await Promise.allSettled([
|
|
390
|
+
authorized.release(),
|
|
391
|
+
reference?.release() ?? Promise.resolve(),
|
|
392
|
+
]);
|
|
393
|
+
});
|
|
394
|
+
return browser;
|
|
395
|
+
}
|
|
396
|
+
catch (error) {
|
|
397
|
+
bootstrap.stop();
|
|
398
|
+
await reference?.release().catch(() => undefined);
|
|
399
|
+
await authorized.release().catch(() => undefined);
|
|
400
|
+
throw error;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
export async function launchLatestPlaywright(playwright, authorizationFile, options) {
|
|
404
|
+
const { authorizedOptions, frameworkOptions } = splitFrameworkLaunchOptions(options);
|
|
405
|
+
const authorized = await installLatestAuthorizedBrowser(authorizationFile, { ...authorizedOptions, automationBackend: "playwright" });
|
|
406
|
+
const bootstrap = new BootstrapHeartbeatController(authorized.client, authorized.grant);
|
|
407
|
+
try {
|
|
408
|
+
bootstrap.start();
|
|
409
|
+
const browser = await launchPlaywright(playwright, authorized.installation.browserExecutable, authorized.grant.lease, {
|
|
410
|
+
...frameworkOptions,
|
|
411
|
+
runtimeHandoff: runtimeBootstrapHandoff(authorized.client, authorized.grant, frameworkOptions.runtimeHandoff),
|
|
412
|
+
allowRuntimeActivationTicket: true,
|
|
413
|
+
});
|
|
414
|
+
bootstrap.stop();
|
|
415
|
+
return await finalizeFrameworkRuntime(browser, authorized);
|
|
416
|
+
}
|
|
417
|
+
catch (error) {
|
|
418
|
+
bootstrap.stop();
|
|
419
|
+
await authorized.release().catch(() => undefined);
|
|
420
|
+
throw error;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
export async function launchLatestPlaywrightPersistent(playwright, userDataDir, authorizationFile, options) {
|
|
424
|
+
const { authorizedOptions, frameworkOptions } = splitFrameworkLaunchOptions(options);
|
|
425
|
+
const authorized = await installLatestAuthorizedBrowser(authorizationFile, { ...authorizedOptions, automationBackend: "playwright" });
|
|
426
|
+
const bootstrap = new BootstrapHeartbeatController(authorized.client, authorized.grant);
|
|
427
|
+
try {
|
|
428
|
+
bootstrap.start();
|
|
429
|
+
const context = await launchPlaywrightPersistent(playwright, userDataDir, authorized.installation.browserExecutable, authorized.grant.lease, {
|
|
430
|
+
...frameworkOptions,
|
|
431
|
+
runtimeHandoff: runtimeBootstrapHandoff(authorized.client, authorized.grant, frameworkOptions.runtimeHandoff),
|
|
432
|
+
allowRuntimeActivationTicket: true,
|
|
433
|
+
});
|
|
434
|
+
bootstrap.stop();
|
|
435
|
+
return await finalizeFrameworkRuntime(context, authorized);
|
|
436
|
+
}
|
|
437
|
+
catch (error) {
|
|
438
|
+
bootstrap.stop();
|
|
439
|
+
await authorized.release().catch(() => undefined);
|
|
440
|
+
throw error;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
export async function launchLatestPuppeteer(puppeteer, authorizationFile, options) {
|
|
444
|
+
const { authorizedOptions, frameworkOptions } = splitFrameworkLaunchOptions(options);
|
|
445
|
+
const authorized = await installLatestAuthorizedBrowser(authorizationFile, { ...authorizedOptions, automationBackend: "puppeteer" });
|
|
446
|
+
const bootstrap = new BootstrapHeartbeatController(authorized.client, authorized.grant);
|
|
447
|
+
try {
|
|
448
|
+
bootstrap.start();
|
|
449
|
+
const browser = await launchPuppeteer(puppeteer, authorized.installation.browserExecutable, authorized.grant.lease, {
|
|
450
|
+
...frameworkOptions,
|
|
451
|
+
runtimeHandoff: runtimeBootstrapHandoff(authorized.client, authorized.grant, frameworkOptions.runtimeHandoff),
|
|
452
|
+
allowRuntimeActivationTicket: true,
|
|
453
|
+
});
|
|
454
|
+
bootstrap.stop();
|
|
455
|
+
return await finalizeFrameworkRuntime(browser, authorized);
|
|
456
|
+
}
|
|
457
|
+
catch (error) {
|
|
458
|
+
bootstrap.stop();
|
|
459
|
+
await authorized.release().catch(() => undefined);
|
|
460
|
+
throw error;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
export async function launchLatestPuppeteerPersistent(puppeteer, userDataDir, authorizationFile, options) {
|
|
464
|
+
const { authorizedOptions, frameworkOptions } = splitFrameworkLaunchOptions(options);
|
|
465
|
+
const authorized = await installLatestAuthorizedBrowser(authorizationFile, { ...authorizedOptions, automationBackend: "puppeteer" });
|
|
466
|
+
const bootstrap = new BootstrapHeartbeatController(authorized.client, authorized.grant);
|
|
467
|
+
try {
|
|
468
|
+
bootstrap.start();
|
|
469
|
+
const browser = await launchPuppeteerPersistent(puppeteer, userDataDir, authorized.installation.browserExecutable, authorized.grant.lease, {
|
|
470
|
+
...frameworkOptions,
|
|
471
|
+
runtimeHandoff: runtimeBootstrapHandoff(authorized.client, authorized.grant, frameworkOptions.runtimeHandoff),
|
|
472
|
+
allowRuntimeActivationTicket: true,
|
|
473
|
+
});
|
|
474
|
+
bootstrap.stop();
|
|
475
|
+
return await finalizeFrameworkRuntime(browser, authorized);
|
|
476
|
+
}
|
|
477
|
+
catch (error) {
|
|
478
|
+
bootstrap.stop();
|
|
479
|
+
await authorized.release().catch(() => undefined);
|
|
480
|
+
throw error;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
export async function launchAuthorized(authorizationFile, options) {
|
|
484
|
+
return launchLatest(authorizationFile, {
|
|
485
|
+
...options,
|
|
486
|
+
updateKernel: options.updateKernel ?? false,
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
export async function launchAuthorizedPlaywright(playwright, authorizationFile, options) {
|
|
490
|
+
return launchLatestPlaywright(playwright, authorizationFile, {
|
|
491
|
+
...options,
|
|
492
|
+
updateKernel: options.updateKernel ?? false,
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
export async function launchAuthorizedPlaywrightPersistent(playwright, userDataDir, authorizationFile, options) {
|
|
496
|
+
return launchLatestPlaywrightPersistent(playwright, userDataDir, authorizationFile, {
|
|
497
|
+
...options,
|
|
498
|
+
updateKernel: options.updateKernel ?? false,
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
export async function launchAuthorizedPuppeteer(puppeteer, authorizationFile, options) {
|
|
502
|
+
return launchLatestPuppeteer(puppeteer, authorizationFile, {
|
|
503
|
+
...options,
|
|
504
|
+
updateKernel: options.updateKernel ?? false,
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
export async function launchAuthorizedPuppeteerPersistent(puppeteer, userDataDir, authorizationFile, options) {
|
|
508
|
+
return launchLatestPuppeteerPersistent(puppeteer, userDataDir, authorizationFile, {
|
|
509
|
+
...options,
|
|
510
|
+
updateKernel: options.updateKernel ?? false,
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
//# sourceMappingURL=licensed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"licensed.js","sourceRoot":"","sources":["../src/licensed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface ReleaseArtifact {
|
|
2
|
+
platform: "windows" | "linux" | "macos";
|
|
3
|
+
arch: "x64" | "arm64";
|
|
4
|
+
url: string;
|
|
5
|
+
sha256: string;
|
|
6
|
+
size: number;
|
|
7
|
+
archiveFormat: "7z" | "zip";
|
|
8
|
+
browserExecutable: string;
|
|
9
|
+
driverExecutable: string;
|
|
10
|
+
browserSha256: string;
|
|
11
|
+
driverSha256: string;
|
|
12
|
+
privateModules: ReleasePrivateModule[];
|
|
13
|
+
resources: ReleaseResourceFile[];
|
|
14
|
+
codeSignature?: ReleaseCodeSignature;
|
|
15
|
+
}
|
|
16
|
+
export interface ReleasePrivateModule {
|
|
17
|
+
path: string;
|
|
18
|
+
sha256: string;
|
|
19
|
+
size: number;
|
|
20
|
+
abi: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ReleaseResourceFile {
|
|
23
|
+
path: string;
|
|
24
|
+
sha256: string;
|
|
25
|
+
size: number;
|
|
26
|
+
}
|
|
27
|
+
export interface ReleaseCodeSignature {
|
|
28
|
+
scheme: "authenticode" | "apple-developer-id" | "x509-code-signing";
|
|
29
|
+
subject: string;
|
|
30
|
+
certificateSha256: string;
|
|
31
|
+
timestampRequired: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface ReleaseEvidenceArtifact {
|
|
34
|
+
url: string;
|
|
35
|
+
sha256: string;
|
|
36
|
+
size: number;
|
|
37
|
+
mediaType: "application/vnd.cyclonedx+json" | "application/vnd.in-toto+json" | "application/vnd.slybrowser.chromium-patch-inventory+json";
|
|
38
|
+
}
|
|
39
|
+
export interface ReleaseEvidence {
|
|
40
|
+
sbom: ReleaseEvidenceArtifact;
|
|
41
|
+
provenance: ReleaseEvidenceArtifact;
|
|
42
|
+
chromiumPatchInventory: ReleaseEvidenceArtifact;
|
|
43
|
+
sourceBoundary: {
|
|
44
|
+
sdk: "open-source";
|
|
45
|
+
chromiumPatches: "inventory-and-approved-patches";
|
|
46
|
+
proprietaryCore: "private";
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export interface ReleaseManifest {
|
|
50
|
+
schemaVersion: 1;
|
|
51
|
+
browserVersion: string;
|
|
52
|
+
sdkCompatibility: string;
|
|
53
|
+
status: "available" | "revoked";
|
|
54
|
+
artifacts: ReleaseArtifact[];
|
|
55
|
+
evidence?: ReleaseEvidence;
|
|
56
|
+
signature: {
|
|
57
|
+
algorithm: "ed25519";
|
|
58
|
+
keyId: string;
|
|
59
|
+
value: string;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export declare function isSdkCompatible(range: string, version: string): boolean;
|
|
63
|
+
export declare function verifyReleaseManifest(value: string | Buffer | Record<string, unknown>, trustedKeys: ReadonlyMap<string, Uint8Array> | Record<string, Uint8Array>): ReleaseManifest;
|
|
64
|
+
export declare function selectArtifact(manifest: ReleaseManifest, platform: string, arch: string): ReleaseArtifact;
|
|
65
|
+
export declare function verifyArtifact(path: string, artifact: ReleaseArtifact): Promise<void>;
|
|
66
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,IAAI,GAAG,KAAK,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,oBAAoB,EAAE,CAAC;IACvC,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,gCAAgC,GAAG,8BAA8B,GAC1E,0DAA0D,CAAC;CAC9D;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,UAAU,EAAE,uBAAuB,CAAC;IACpC,sBAAsB,EAAE,uBAAuB,CAAC;IAChD,cAAc,EAAE;QACd,GAAG,EAAE,aAAa,CAAC;QACnB,eAAe,EAAE,gCAAgC,CAAC;QAClD,eAAe,EAAE,SAAS,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,CAAC,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACnE;AAqBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAiBvE;AAeD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChD,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GACxE,eAAe,CAgEjB;AAuID,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAOzG;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB3F"}
|