playwriter 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bippy.js +5 -5
- package/dist/browser-config.d.ts.map +1 -1
- package/dist/browser-config.js +8 -2
- package/dist/browser-config.js.map +1 -1
- package/dist/browser-install.d.ts +16 -0
- package/dist/browser-install.d.ts.map +1 -0
- package/dist/browser-install.js +237 -0
- package/dist/browser-install.js.map +1 -0
- package/dist/cdp-relay.d.ts.map +1 -1
- package/dist/cdp-relay.js +254 -18
- package/dist/cdp-relay.js.map +1 -1
- package/dist/chrome-discovery.d.ts.map +1 -1
- package/dist/chrome-discovery.js +8 -0
- package/dist/chrome-discovery.js.map +1 -1
- package/dist/cli.js +568 -6
- package/dist/cli.js.map +1 -1
- package/dist/cloud-client.d.ts +56 -0
- package/dist/cloud-client.d.ts.map +1 -0
- package/dist/cloud-client.js +120 -0
- package/dist/cloud-client.js.map +1 -0
- package/dist/executor.d.ts +46 -2
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +245 -22
- package/dist/executor.js.map +1 -1
- package/dist/extension/background.js +106 -23
- package/dist/extension/manifest.json +1 -1
- package/dist/playwright-import.d.ts +19 -0
- package/dist/playwright-import.d.ts.map +1 -0
- package/dist/playwright-import.js +39 -0
- package/dist/playwright-import.js.map +1 -0
- package/dist/prompt.md +32 -0
- package/dist/readability.js +1 -1
- package/dist/relay-state.d.ts +1 -0
- package/dist/relay-state.d.ts.map +1 -1
- package/dist/relay-state.js +18 -0
- package/dist/relay-state.js.map +1 -1
- package/dist/relay-state.test.js +22 -0
- package/dist/relay-state.test.js.map +1 -1
- package/dist/selector-generator.js +1 -1
- package/package.json +3 -1
- package/src/browser-config.ts +11 -2
- package/src/browser-install.ts +283 -0
- package/src/cdp-relay.ts +300 -19
- package/src/chrome-discovery.ts +9 -0
- package/src/cli.ts +635 -7
- package/src/cloud-client.ts +172 -0
- package/src/executor.ts +291 -23
- package/src/playwright-import.ts +58 -0
- package/src/relay-state.test.ts +32 -0
- package/src/relay-state.ts +19 -1
- package/src/skill.md +154 -14
package/dist/bippy.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
(() => {
|
|
2
|
-
// ../node_modules/.pnpm/bippy@0.5.27_@types+react@19.2.7_react@19.2.
|
|
2
|
+
// ../node_modules/.pnpm/bippy@0.5.27_@types+react@19.2.7_react@19.2.7/node_modules/bippy/dist/rdt-hook-BZMdLD7S.js
|
|
3
3
|
var e = `0.5.27`;
|
|
4
4
|
var t = `bippy-${e}`;
|
|
5
5
|
var n = Object.defineProperty;
|
|
@@ -84,10 +84,10 @@
|
|
|
84
84
|
} catch {}
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
-
// ../node_modules/.pnpm/bippy@0.5.27_@types+react@19.2.7_react@19.2.
|
|
87
|
+
// ../node_modules/.pnpm/bippy@0.5.27_@types+react@19.2.7_react@19.2.7/node_modules/bippy/dist/install-hook-only-BOBPiBkc.js
|
|
88
88
|
_();
|
|
89
89
|
|
|
90
|
-
// ../node_modules/.pnpm/bippy@0.5.27_@types+react@19.2.7_react@19.2.
|
|
90
|
+
// ../node_modules/.pnpm/bippy@0.5.27_@types+react@19.2.7_react@19.2.7/node_modules/bippy/dist/core-coQbWNwP.js
|
|
91
91
|
var a2 = 0;
|
|
92
92
|
var o2 = 1;
|
|
93
93
|
var c2 = 5;
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
var Fe = Error();
|
|
226
226
|
var $ = new Set;
|
|
227
227
|
|
|
228
|
-
// ../node_modules/.pnpm/bippy@0.5.27_@types+react@19.2.7_react@19.2.
|
|
228
|
+
// ../node_modules/.pnpm/bippy@0.5.27_@types+react@19.2.7_react@19.2.7/node_modules/bippy/dist/source.js
|
|
229
229
|
var g3 = Object.create;
|
|
230
230
|
var _3 = Object.defineProperty;
|
|
231
231
|
var v2 = Object.getOwnPropertyDescriptor;
|
|
@@ -951,7 +951,7 @@ ${e3.stack}` : ``;
|
|
|
951
951
|
return !(!t2 || !re2.test(t2) || ie2.test(t2));
|
|
952
952
|
};
|
|
953
953
|
|
|
954
|
-
// dist/_bippy-entry-
|
|
954
|
+
// dist/_bippy-entry-31733-1782389048114.js
|
|
955
955
|
globalThis.__bippy = {
|
|
956
956
|
getFiberFromHostInstance: Pe,
|
|
957
957
|
getDisplayName: Te,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-config.d.ts","sourceRoot":"","sources":["../src/browser-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"browser-config.d.ts","sourceRoot":"","sources":["../src/browser-config.ts"],"names":[],"mappings":"AAQA,KAAK,oBAAoB,GAAG;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;CAC3C,CAAA;AAqDD,wBAAgB,8BAA8B,CAAC,EAC7C,QAAwB,EACxB,GAAiB,EACjB,OAAsB,GACvB,GAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,YAAY,CAAM,GAAG,MAAM,EAAE,CA0C1E;AAED,wBAAgB,4BAA4B,CAAC,EAC3C,WAAW,EACX,GAAiB,EACjB,QAAwB,EACxB,OAAsB,EACtB,UAA0B,GAC3B,GAAE,oBAAyB,GAAG,MAAM,CA0CpC;AAED,wBAAgB,0BAA0B,CAAC,EACzC,QAAwB,EACxB,GAAiB,GAClB,GAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,CAAM,GAAG,OAAO,CAMrF;AAED,wBAAgB,wBAAwB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAErE"}
|
package/dist/browser-config.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from 'node:fs';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { chromium } from '@xmorse/playwright-core';
|
|
5
|
+
import { findInstalledChrome } from './browser-install.js';
|
|
5
6
|
function expandHomeDirectory({ filePath, homeDir }) {
|
|
6
7
|
if (!filePath.startsWith('~/')) {
|
|
7
8
|
return filePath;
|
|
@@ -95,6 +96,11 @@ export function resolveBrowserExecutablePath({ browserPath, env = process.env, p
|
|
|
95
96
|
}
|
|
96
97
|
return resolvedEnvPath;
|
|
97
98
|
}
|
|
99
|
+
// Check Chrome downloaded by `playwriter install` first (highest priority)
|
|
100
|
+
const installedChrome = findInstalledChrome();
|
|
101
|
+
if (installedChrome) {
|
|
102
|
+
return installedChrome;
|
|
103
|
+
}
|
|
98
104
|
const candidates = getBrowserExecutableCandidates({ platform, env, homeDir });
|
|
99
105
|
const resolvedPath = candidates.find((candidate) => {
|
|
100
106
|
return existsSync(candidate);
|
|
@@ -105,8 +111,8 @@ export function resolveBrowserExecutablePath({ browserPath, env = process.env, p
|
|
|
105
111
|
const searchedPathsText = candidates.map((candidate) => {
|
|
106
112
|
return `- ${candidate}`;
|
|
107
113
|
});
|
|
108
|
-
throw new Error('Could not find a supported browser binary.
|
|
109
|
-
`\n\nSearched paths:\n${searchedPathsText.join('\n')}`);
|
|
114
|
+
throw new Error('Could not find a supported browser binary. Run `playwriter browser install` to download Chrome for Testing, or pass a binary path.' +
|
|
115
|
+
`\n\nSearched paths:\n- ~/.playwriter/browsers/ (playwriter browser install)\n${searchedPathsText.join('\n')}`);
|
|
110
116
|
}
|
|
111
117
|
export function shouldUseHeadlessByDefault({ platform = os.platform(), env = process.env, } = {}) {
|
|
112
118
|
if (platform !== 'linux') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-config.js","sourceRoot":"","sources":["../src/browser-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"browser-config.js","sourceRoot":"","sources":["../src/browser-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Download and install Chrome for Testing into ~/.playwriter/browsers/.
|
|
3
|
+
* Similar to agent-browser's install command: fetches the latest stable
|
|
4
|
+
* Chrome for Testing build from Google's official automation channel.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getBrowsersDir(): string;
|
|
7
|
+
/**
|
|
8
|
+
* Find Chrome installed by `playwriter install` in ~/.playwriter/browsers/.
|
|
9
|
+
* Returns the path to the Chrome binary, or null if not found.
|
|
10
|
+
*/
|
|
11
|
+
export declare function findInstalledChrome(): string | null;
|
|
12
|
+
export declare function installChrome(): Promise<{
|
|
13
|
+
version: string;
|
|
14
|
+
binaryPath: string;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=browser-install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-install.d.ts","sourceRoot":"","sources":["../src/browser-install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAoED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAwBnD;AAyHD,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CA+CtF"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Download and install Chrome for Testing into ~/.playwriter/browsers/.
|
|
3
|
+
* Similar to agent-browser's install command: fetches the latest stable
|
|
4
|
+
* Chrome for Testing build from Google's official automation channel.
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'node:fs';
|
|
7
|
+
import os from 'node:os';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { pipeline } from 'node:stream/promises';
|
|
10
|
+
import { Readable } from 'node:stream';
|
|
11
|
+
import { execFileSync } from 'node:child_process';
|
|
12
|
+
const LAST_KNOWN_GOOD_URL = 'https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json';
|
|
13
|
+
export function getBrowsersDir() {
|
|
14
|
+
return path.join(os.homedir(), '.playwriter', 'browsers');
|
|
15
|
+
}
|
|
16
|
+
function getPlatformKey() {
|
|
17
|
+
const platform = os.platform();
|
|
18
|
+
const arch = os.arch();
|
|
19
|
+
if (platform === 'darwin' && arch === 'arm64') {
|
|
20
|
+
return 'mac-arm64';
|
|
21
|
+
}
|
|
22
|
+
if (platform === 'darwin' && arch === 'x64') {
|
|
23
|
+
return 'mac-x64';
|
|
24
|
+
}
|
|
25
|
+
if (platform === 'linux' && arch === 'x64') {
|
|
26
|
+
return 'linux64';
|
|
27
|
+
}
|
|
28
|
+
if (platform === 'win32' && arch === 'x64') {
|
|
29
|
+
return 'win64';
|
|
30
|
+
}
|
|
31
|
+
throw new Error(`Unsupported platform for Chrome for Testing download: ${platform}/${arch}. ` +
|
|
32
|
+
`Install Chromium manually and use PLAYWRITER_BROWSER_PATH to point to it.`);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Find the Chrome binary inside a downloaded Chrome for Testing directory.
|
|
36
|
+
*/
|
|
37
|
+
function findChromeBinaryInDir(dir) {
|
|
38
|
+
const platform = os.platform();
|
|
39
|
+
if (platform === 'darwin') {
|
|
40
|
+
const candidates = [
|
|
41
|
+
path.join(dir, 'Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing'),
|
|
42
|
+
path.join(dir, `chrome-${getPlatformKey()}/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing`),
|
|
43
|
+
];
|
|
44
|
+
for (const candidate of candidates) {
|
|
45
|
+
if (fs.existsSync(candidate)) {
|
|
46
|
+
return candidate;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (platform === 'linux') {
|
|
51
|
+
const candidates = [
|
|
52
|
+
path.join(dir, 'chrome'),
|
|
53
|
+
path.join(dir, 'chrome-linux64/chrome'),
|
|
54
|
+
];
|
|
55
|
+
for (const candidate of candidates) {
|
|
56
|
+
if (fs.existsSync(candidate)) {
|
|
57
|
+
return candidate;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (platform === 'win32') {
|
|
62
|
+
const candidates = [
|
|
63
|
+
path.join(dir, 'chrome.exe'),
|
|
64
|
+
path.join(dir, 'chrome-win64/chrome.exe'),
|
|
65
|
+
];
|
|
66
|
+
for (const candidate of candidates) {
|
|
67
|
+
if (fs.existsSync(candidate)) {
|
|
68
|
+
return candidate;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Find Chrome installed by `playwriter install` in ~/.playwriter/browsers/.
|
|
76
|
+
* Returns the path to the Chrome binary, or null if not found.
|
|
77
|
+
*/
|
|
78
|
+
export function findInstalledChrome() {
|
|
79
|
+
const browsersDir = getBrowsersDir();
|
|
80
|
+
if (!fs.existsSync(browsersDir)) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const entries = fs.readdirSync(browsersDir, { withFileTypes: true })
|
|
84
|
+
.filter((e) => {
|
|
85
|
+
return e.isDirectory() && e.name.startsWith('chrome-');
|
|
86
|
+
})
|
|
87
|
+
.sort((a, b) => {
|
|
88
|
+
// Sort descending so newest version is first
|
|
89
|
+
return b.name.localeCompare(a.name);
|
|
90
|
+
});
|
|
91
|
+
for (const entry of entries) {
|
|
92
|
+
const dir = path.join(browsersDir, entry.name);
|
|
93
|
+
const binary = findChromeBinaryInDir(dir);
|
|
94
|
+
if (binary) {
|
|
95
|
+
return binary;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
async function fetchDownloadUrl() {
|
|
101
|
+
const response = await fetch(LAST_KNOWN_GOOD_URL, {
|
|
102
|
+
signal: AbortSignal.timeout(30000),
|
|
103
|
+
});
|
|
104
|
+
if (!response.ok) {
|
|
105
|
+
throw new Error(`Failed to fetch Chrome version info: HTTP ${response.status}`);
|
|
106
|
+
}
|
|
107
|
+
const data = (await response.json());
|
|
108
|
+
const channel = data.channels?.Stable;
|
|
109
|
+
if (!channel) {
|
|
110
|
+
throw new Error('No Stable channel found in Chrome for Testing version info');
|
|
111
|
+
}
|
|
112
|
+
const platformKey = getPlatformKey();
|
|
113
|
+
const download = channel.downloads?.chrome?.find((d) => {
|
|
114
|
+
return d.platform === platformKey;
|
|
115
|
+
});
|
|
116
|
+
if (!download) {
|
|
117
|
+
throw new Error(`No Chrome for Testing download found for platform: ${platformKey}`);
|
|
118
|
+
}
|
|
119
|
+
return { version: channel.version, downloadUrl: download.url };
|
|
120
|
+
}
|
|
121
|
+
async function downloadFile(url, destPath) {
|
|
122
|
+
// 5-minute timeout per attempt, 3 retries for transient errors
|
|
123
|
+
const maxAttempts = 3;
|
|
124
|
+
let lastError = null;
|
|
125
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
126
|
+
try {
|
|
127
|
+
await downloadFileAttempt(url, destPath);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
132
|
+
// Don't retry on 4xx (permanent errors)
|
|
133
|
+
if (lastError.message.includes('HTTP 4')) {
|
|
134
|
+
throw lastError;
|
|
135
|
+
}
|
|
136
|
+
if (attempt < maxAttempts) {
|
|
137
|
+
const delay = attempt * 2000;
|
|
138
|
+
console.log(` Download attempt ${attempt} failed, retrying in ${delay / 1000}s...`);
|
|
139
|
+
await new Promise((resolve) => {
|
|
140
|
+
return setTimeout(resolve, delay);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
throw lastError;
|
|
146
|
+
}
|
|
147
|
+
async function downloadFileAttempt(url, destPath) {
|
|
148
|
+
const response = await fetch(url, {
|
|
149
|
+
signal: AbortSignal.timeout(300_000), // 5 minute timeout
|
|
150
|
+
});
|
|
151
|
+
if (!response.ok) {
|
|
152
|
+
throw new Error(`Download failed: HTTP ${response.status} for ${url}`);
|
|
153
|
+
}
|
|
154
|
+
if (!response.body) {
|
|
155
|
+
throw new Error('Download failed: no response body');
|
|
156
|
+
}
|
|
157
|
+
const totalBytes = Number(response.headers.get('content-length') || 0);
|
|
158
|
+
let downloadedBytes = 0;
|
|
159
|
+
let lastPct = 0;
|
|
160
|
+
const progressStream = new TransformStream({
|
|
161
|
+
transform(chunk, controller) {
|
|
162
|
+
downloadedBytes += chunk.byteLength;
|
|
163
|
+
if (totalBytes > 0) {
|
|
164
|
+
const pct = Math.floor((downloadedBytes / totalBytes) * 100);
|
|
165
|
+
if (pct >= lastPct + 5) {
|
|
166
|
+
lastPct = pct;
|
|
167
|
+
const mb = (downloadedBytes / 1_048_576).toFixed(0);
|
|
168
|
+
const totalMb = (totalBytes / 1_048_576).toFixed(0);
|
|
169
|
+
process.stderr.write(`\r ${mb}/${totalMb} MB (${pct}%)`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
controller.enqueue(chunk);
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
const readableStream = response.body.pipeThrough(progressStream);
|
|
176
|
+
const nodeReadable = Readable.fromWeb(readableStream);
|
|
177
|
+
const writeStream = fs.createWriteStream(destPath);
|
|
178
|
+
await pipeline(nodeReadable, writeStream);
|
|
179
|
+
process.stderr.write('\n');
|
|
180
|
+
}
|
|
181
|
+
function extractZip(zipPath, destDir) {
|
|
182
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
183
|
+
const platform = os.platform();
|
|
184
|
+
if (platform === 'win32') {
|
|
185
|
+
execFileSync('powershell', [
|
|
186
|
+
'-Command',
|
|
187
|
+
`Expand-Archive -Path '${zipPath}' -DestinationPath '${destDir}' -Force`,
|
|
188
|
+
], { stdio: 'pipe' });
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
execFileSync('unzip', ['-o', '-q', zipPath, '-d', destDir], { stdio: 'pipe' });
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
export async function installChrome() {
|
|
195
|
+
console.log('Fetching latest Chrome for Testing version...');
|
|
196
|
+
const { version, downloadUrl } = await fetchDownloadUrl();
|
|
197
|
+
const browsersDir = getBrowsersDir();
|
|
198
|
+
const destDir = path.join(browsersDir, `chrome-${version}`);
|
|
199
|
+
// Check if already installed
|
|
200
|
+
const existingBinary = findChromeBinaryInDir(destDir);
|
|
201
|
+
if (existingBinary) {
|
|
202
|
+
console.log(`Chrome ${version} is already installed.`);
|
|
203
|
+
console.log(` Location: ${existingBinary}`);
|
|
204
|
+
return { version, binaryPath: existingBinary };
|
|
205
|
+
}
|
|
206
|
+
console.log(`Downloading Chrome ${version} for ${getPlatformKey()}...`);
|
|
207
|
+
console.log(` ${downloadUrl}`);
|
|
208
|
+
const tmpZip = path.join(os.tmpdir(), `playwriter-chrome-${version}.zip`);
|
|
209
|
+
try {
|
|
210
|
+
await downloadFile(downloadUrl, tmpZip);
|
|
211
|
+
console.log('Extracting...');
|
|
212
|
+
extractZip(tmpZip, destDir);
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
// Clean up temp zip
|
|
216
|
+
try {
|
|
217
|
+
fs.unlinkSync(tmpZip);
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
// ignore cleanup errors
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
const binaryPath = findChromeBinaryInDir(destDir);
|
|
224
|
+
if (!binaryPath) {
|
|
225
|
+
// Clean up failed extraction
|
|
226
|
+
fs.rmSync(destDir, { recursive: true, force: true });
|
|
227
|
+
throw new Error('Chrome was downloaded but the binary could not be found in the extracted archive.');
|
|
228
|
+
}
|
|
229
|
+
// Ensure binary is executable on Unix
|
|
230
|
+
if (os.platform() !== 'win32') {
|
|
231
|
+
fs.chmodSync(binaryPath, 0o755);
|
|
232
|
+
}
|
|
233
|
+
console.log(`Chrome ${version} installed successfully.`);
|
|
234
|
+
console.log(` Location: ${binaryPath}`);
|
|
235
|
+
return { version, binaryPath };
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=browser-install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-install.js","sourceRoot":"","sources":["../src/browser-install.ts"],"names":[],"mappings":"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"}
|
package/dist/cdp-relay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp-relay.d.ts","sourceRoot":"","sources":["../src/cdp-relay.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAA0D,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"cdp-relay.d.ts","sourceRoot":"","sources":["../src/cdp-relay.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAA0D,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAwB/G,OAAO,EAAqC,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAqChF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,IAAI,IAAI,CAAA;IACb,EAAE,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACrF,GAAG,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;CACvF,CAAA;AAED,wBAAsB,6BAA6B,CAAC,EAClD,IAAY,EACZ,IAAkB,EAClB,KAAK,EACL,MAAM,EACN,SAAS,GACV,GAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE;QAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;KAAE,CAAA;IACnE,SAAS,CAAC,EAAE,SAAS,CAAA;CACjB,GAAG,OAAO,CAAC,WAAW,CAAC,CAm2E5B"}
|