Added files for Juan
This commit is contained in:
2
ExACTRegressionScripts/node_modules/geckodriver/dist/cjs/index.d.ts
generated
vendored
Normal file
2
ExACTRegressionScripts/node_modules/geckodriver/dist/cjs/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=index.d.ts.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/cjs/index.d.ts.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/cjs/index.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cjs/index.ts"],"names":[],"mappings":""}
|
||||
11
ExACTRegressionScripts/node_modules/geckodriver/dist/cjs/index.js
generated
vendored
Normal file
11
ExACTRegressionScripts/node_modules/geckodriver/dist/cjs/index.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.start = async function start(params) {
|
||||
const esmPkg = await import('../index.js');
|
||||
return esmPkg.start(params);
|
||||
};
|
||||
exports.download = async function download(geckodriverVersion, cacheDir) {
|
||||
const esmPkg = await import('../index.js');
|
||||
return esmPkg.download(geckodriverVersion, cacheDir);
|
||||
};
|
||||
//# sourceMappingURL=index.js.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/cjs/index.js.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/cjs/index.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cjs/index.ts"],"names":[],"mappings":";;AAAA,OAAO,CAAC,KAAK,GAAG,KAAK,UAAU,KAAK,CAAE,MAAe;IACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED,OAAO,CAAC,QAAQ,GAAG,KAAK,UAAU,QAAQ,CAAE,kBAA2B,EAAE,QAAiB;IACxF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;AACtD,CAAC,CAAA"}
|
||||
3
ExACTRegressionScripts/node_modules/geckodriver/dist/cjs/package.json
generated
vendored
Normal file
3
ExACTRegressionScripts/node_modules/geckodriver/dist/cjs/package.json
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "commonjs"
|
||||
}
|
||||
2
ExACTRegressionScripts/node_modules/geckodriver/dist/cli.d.ts
generated
vendored
Normal file
2
ExACTRegressionScripts/node_modules/geckodriver/dist/cli.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export default function run(): Promise<void>;
|
||||
//# sourceMappingURL=cli.d.ts.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/cli.d.ts.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/cli.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAKA,wBAA8B,GAAG,kBAchC"}
|
||||
18
ExACTRegressionScripts/node_modules/geckodriver/dist/cli.js
generated
vendored
Normal file
18
ExACTRegressionScripts/node_modules/geckodriver/dist/cli.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
import cp from 'node:child_process';
|
||||
import { download } from './install.js';
|
||||
import { hasAccess } from './utils.js';
|
||||
export default async function run() {
|
||||
const binaryFilePath = await download();
|
||||
if (!(await hasAccess(binaryFilePath))) {
|
||||
throw new Error('Failed to download Geckodriver');
|
||||
}
|
||||
const child = cp.spawn(binaryFilePath, process.argv.slice(2));
|
||||
child.stdout.pipe(process.stdout);
|
||||
child.stderr.pipe(process.stderr);
|
||||
child.on('exit', process.exit);
|
||||
process.on('SIGTERM', function () {
|
||||
child.kill('SIGTERM');
|
||||
process.exit(1);
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=cli.js.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/cli.js.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/cli.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,GAAG;IAC/B,MAAM,cAAc,GAAG,MAAM,QAAQ,EAAE,CAAA;IACvC,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7D,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE;QACpB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
||||
6
ExACTRegressionScripts/node_modules/geckodriver/dist/constants.d.ts
generated
vendored
Normal file
6
ExACTRegressionScripts/node_modules/geckodriver/dist/constants.d.ts
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
export declare const GECKODRIVER_CARGO_YAML = "https://raw.githubusercontent.com/mozilla/geckodriver/release/Cargo.toml";
|
||||
export declare const BASE_CDN_URL: string;
|
||||
export declare const GECKODRIVER_DOWNLOAD_PATH: string;
|
||||
export declare const DEFAULT_HOSTNAME = "0.0.0.0";
|
||||
export declare const BINARY_FILE: string;
|
||||
//# sourceMappingURL=constants.d.ts.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/constants.d.ts.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/constants.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,6EAA6E,CAAA;AAChH,eAAO,MAAM,YAAY,QAA4I,CAAA;AAErK,eAAO,MAAM,yBAAyB,QAA+C,CAAA;AACrF,eAAO,MAAM,gBAAgB,YAAY,CAAA;AACzC,eAAO,MAAM,WAAW,QAA4D,CAAA"}
|
||||
8
ExACTRegressionScripts/node_modules/geckodriver/dist/constants.js
generated
vendored
Normal file
8
ExACTRegressionScripts/node_modules/geckodriver/dist/constants.js
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
import os from 'node:os';
|
||||
export const GECKODRIVER_CARGO_YAML = 'https://raw.githubusercontent.com/mozilla/geckodriver/release/Cargo.toml';
|
||||
export const BASE_CDN_URL = process.env.GECKODRIVER_CDNURL || process.env.npm_config_geckodriver_cdnurl || 'https://github.com/mozilla/geckodriver/releases/download';
|
||||
// e.g. https://github.com/mozilla/geckodriver/releases/download/v0.33.0/geckodriver-v0.33.0-macos-aarch64.tar.gz
|
||||
export const GECKODRIVER_DOWNLOAD_PATH = `${BASE_CDN_URL}/v%s/geckodriver-v%s-%s%s%s`;
|
||||
export const DEFAULT_HOSTNAME = '0.0.0.0';
|
||||
export const BINARY_FILE = 'geckodriver' + (os.platform() === 'win32' ? '.exe' : '');
|
||||
//# sourceMappingURL=constants.js.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/constants.js.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/constants.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG,0EAA0E,CAAA;AAChH,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,0DAA0D,CAAA;AACrK,iHAAiH;AACjH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,YAAY,6BAA6B,CAAA;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAA;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA"}
|
||||
8
ExACTRegressionScripts/node_modules/geckodriver/dist/index.d.ts
generated
vendored
Normal file
8
ExACTRegressionScripts/node_modules/geckodriver/dist/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
import cp from 'node:child_process';
|
||||
import { download as downloadDriver } from './install.js';
|
||||
import type { GeckodriverParameters } from './types.js';
|
||||
export declare function start(params: GeckodriverParameters): Promise<cp.ChildProcessWithoutNullStreams>;
|
||||
export declare const download: typeof downloadDriver;
|
||||
export * from './types.js';
|
||||
//# sourceMappingURL=index.d.ts.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/index.d.ts.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/index.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAGnC,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,cAAc,CAAA;AAGzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAIvD,wBAAsB,KAAK,CAAE,MAAM,EAAE,qBAAqB,8CA2BzD;AAED,eAAO,MAAM,QAAQ,uBAAiB,CAAA;AACtC,cAAc,YAAY,CAAA"}
|
||||
31
ExACTRegressionScripts/node_modules/geckodriver/dist/index.js
generated
vendored
Normal file
31
ExACTRegressionScripts/node_modules/geckodriver/dist/index.js
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
import cp from 'node:child_process';
|
||||
import logger from '@wdio/logger';
|
||||
import { download as downloadDriver } from './install.js';
|
||||
import { hasAccess, parseParams } from './utils.js';
|
||||
import { DEFAULT_HOSTNAME } from './constants.js';
|
||||
const log = logger('geckodriver');
|
||||
export async function start(params) {
|
||||
const { cacheDir, customGeckoDriverPath, ...startArgs } = params;
|
||||
let geckoDriverPath = (customGeckoDriverPath ||
|
||||
process.env.GECKODRIVER_PATH ||
|
||||
// deprecated
|
||||
process.env.GECKODRIVER_FILEPATH);
|
||||
if (!geckoDriverPath) {
|
||||
geckoDriverPath = await downloadDriver(params.geckoDriverVersion, cacheDir);
|
||||
}
|
||||
if (!(await hasAccess(geckoDriverPath))) {
|
||||
throw new Error('Failed to access Geckodriver, was it installed successfully?');
|
||||
}
|
||||
startArgs.host = startArgs.host || DEFAULT_HOSTNAME;
|
||||
// By default, Geckodriver uses port 9222
|
||||
// User might pass a port for custom runs but they should modify them for each worker
|
||||
// For remaining use cases, to enable parallel instances we need to set the port to 0 (random)
|
||||
// Otherwise all instances try to connect to the default port and fail
|
||||
startArgs.websocketPort = startArgs.websocketPort ?? 0;
|
||||
const args = parseParams(startArgs);
|
||||
log.info(`Starting Geckodriver at ${geckoDriverPath} with params: ${args.join(' ')}`);
|
||||
return cp.spawn(geckoDriverPath, args);
|
||||
}
|
||||
export const download = downloadDriver;
|
||||
export * from './types.js';
|
||||
//# sourceMappingURL=index.js.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/index.js.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/index.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACnC,OAAO,MAAM,MAAM,cAAc,CAAA;AAEjC,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGjD,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AAEjC,MAAM,CAAC,KAAK,UAAU,KAAK,CAAE,MAA6B;IACxD,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,CAAA;IAChE,IAAI,eAAe,GAAG,CACpB,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5B,aAAa;QACb,OAAO,CAAC,GAAG,CAAC,oBAAoB,CACjC,CAAA;IACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;IAC7E,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IAED,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,gBAAgB,CAAA;IAEnD,yCAAyC;IACzC,qFAAqF;IACrF,8FAA8F;IAC9F,sEAAsE;IACtE,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,IAAI,CAAC,CAAA;IAEtD,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;IACnC,GAAG,CAAC,IAAI,CAAC,2BAA2B,eAAe,iBAAiB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACrF,OAAO,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAA;AACtC,cAAc,YAAY,CAAA"}
|
||||
2
ExACTRegressionScripts/node_modules/geckodriver/dist/install.d.ts
generated
vendored
Normal file
2
ExACTRegressionScripts/node_modules/geckodriver/dist/install.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export declare function download(geckodriverVersion?: string, cacheDir?: string): Promise<string>;
|
||||
//# sourceMappingURL=install.d.ts.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/install.d.ts.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/install.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AA4BA,wBAAsB,QAAQ,CAC5B,kBAAkB,GAAE,MAAwC,EAC5D,QAAQ,GAAE,MAAyD,mBAoCpE"}
|
||||
75
ExACTRegressionScripts/node_modules/geckodriver/dist/install.js
generated
vendored
Normal file
75
ExACTRegressionScripts/node_modules/geckodriver/dist/install.js
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import util from 'node:util';
|
||||
import stream from 'node:stream';
|
||||
import fsp, { writeFile } from 'node:fs/promises';
|
||||
import zlib from 'node:zlib';
|
||||
import logger from '@wdio/logger';
|
||||
import tar from 'tar-fs';
|
||||
import { HttpsProxyAgent } from 'https-proxy-agent';
|
||||
import { HttpProxyAgent } from 'http-proxy-agent';
|
||||
import { BINARY_FILE, GECKODRIVER_CARGO_YAML } from './constants.js';
|
||||
import { hasAccess, getDownloadUrl, retryFetch } from './utils.js';
|
||||
import { BlobReader, BlobWriter, ZipReader } from '@zip.js/zip.js';
|
||||
const log = logger('geckodriver');
|
||||
const streamPipeline = util.promisify(stream.pipeline);
|
||||
const fetchOpts = {};
|
||||
if (process.env.HTTPS_PROXY) {
|
||||
fetchOpts.agent = new HttpsProxyAgent(process.env.HTTPS_PROXY);
|
||||
}
|
||||
else if (process.env.HTTP_PROXY) {
|
||||
fetchOpts.agent = new HttpProxyAgent(process.env.HTTP_PROXY);
|
||||
}
|
||||
export async function download(geckodriverVersion = process.env.GECKODRIVER_VERSION, cacheDir = process.env.GECKODRIVER_CACHE_DIR || os.tmpdir()) {
|
||||
const binaryFilePath = path.resolve(cacheDir, BINARY_FILE);
|
||||
if (await hasAccess(binaryFilePath)) {
|
||||
return binaryFilePath;
|
||||
}
|
||||
/**
|
||||
* get latest version of Geckodriver
|
||||
*/
|
||||
if (!geckodriverVersion) {
|
||||
const res = await retryFetch(GECKODRIVER_CARGO_YAML, fetchOpts);
|
||||
const toml = await res.text();
|
||||
const version = toml.split('\n').find((l) => l.startsWith('version = '));
|
||||
if (!version) {
|
||||
throw new Error(`Couldn't find version property in Cargo.toml file: ${JSON.stringify(toml)}`);
|
||||
}
|
||||
geckodriverVersion = version.split(' = ').pop().slice(1, -1);
|
||||
log.info(`Detected Geckodriver v${geckodriverVersion} to be latest`);
|
||||
}
|
||||
const url = getDownloadUrl(geckodriverVersion);
|
||||
log.info(`Downloading Geckodriver from ${url}`);
|
||||
const res = await retryFetch(url, fetchOpts);
|
||||
if (res.status !== 200) {
|
||||
throw new Error(`Failed to download binary (statusCode ${res.status}): ${res.statusText}`);
|
||||
}
|
||||
await fsp.mkdir(cacheDir, { recursive: true });
|
||||
await (url.endsWith('.zip')
|
||||
? downloadZip(res, cacheDir)
|
||||
: streamPipeline(res.body, zlib.createGunzip(), tar.extract(cacheDir)));
|
||||
await fsp.chmod(binaryFilePath, '755');
|
||||
return binaryFilePath;
|
||||
}
|
||||
async function downloadZip(res, cacheDir) {
|
||||
const zipBlob = await res.blob();
|
||||
const zip = new ZipReader(new BlobReader(zipBlob));
|
||||
for (const entry of await zip.getEntries()) {
|
||||
const unzippedFilePath = path.join(cacheDir, entry.filename);
|
||||
if (entry.directory) {
|
||||
continue;
|
||||
}
|
||||
if (!await hasAccess(path.dirname(unzippedFilePath))) {
|
||||
await fsp.mkdir(path.dirname(unzippedFilePath), { recursive: true });
|
||||
}
|
||||
const content = await entry.getData(new BlobWriter());
|
||||
await writeFile(unzippedFilePath, content.stream());
|
||||
}
|
||||
}
|
||||
/**
|
||||
* download on install
|
||||
*/
|
||||
if (process.argv[1] && process.argv[1].endsWith('/dist/install.js') && process.env.GECKODRIVER_AUTO_INSTALL) {
|
||||
await download().then(() => log.info('Success!'), (err) => log.error(`Failed to install Geckodriver: ${err.stack}`));
|
||||
}
|
||||
//# sourceMappingURL=install.js.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/install.js.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/install.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
||||
80
ExACTRegressionScripts/node_modules/geckodriver/dist/types.d.ts
generated
vendored
Normal file
80
ExACTRegressionScripts/node_modules/geckodriver/dist/types.d.ts
generated
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
export type LogLevel = 'fatal' | 'error' | 'warn' | 'info' | 'config' | 'debug' | 'trace';
|
||||
export interface GeckodriverParameters {
|
||||
/**
|
||||
* List of hostnames to allow. By default the value of --host is allowed, and in addition if that's a well
|
||||
* known local address, other variations on well known local addresses are allowed. If --allow-hosts is
|
||||
* provided only exactly those hosts are allowed
|
||||
* @default []
|
||||
*/
|
||||
allowHosts?: string[];
|
||||
/**
|
||||
* List of request origins to allow. These must be formatted as scheme://host:port. By default any request
|
||||
* with an origin header is rejected. If --allow-origins is provided then only exactly those origins
|
||||
* are allowed.
|
||||
* @default []
|
||||
*/
|
||||
allowOrigins?: string[];
|
||||
/**
|
||||
* Path to the Firefox binary
|
||||
*/
|
||||
binary?: string;
|
||||
/**
|
||||
* Connect to an existing Firefox instance
|
||||
* @default false
|
||||
*/
|
||||
connectExisting?: boolean;
|
||||
/**
|
||||
* Host IP to use for WebDriver server
|
||||
* @default 127.0.0.1
|
||||
*/
|
||||
host?: string;
|
||||
/**
|
||||
* Attach browser toolbox debugger for Firefox
|
||||
* @default false
|
||||
*/
|
||||
jsdebugger?: boolean;
|
||||
/**
|
||||
* Set Gecko log level [possible values: fatal, error, warn, info, config, debug, trace]
|
||||
*/
|
||||
log?: LogLevel;
|
||||
/**
|
||||
* write server log to file instead of stderr, increases log level to INFO
|
||||
*/
|
||||
logNoTruncated?: boolean;
|
||||
/**
|
||||
* Host to use to connect to Gecko
|
||||
* @default 127.0.0.1
|
||||
*/
|
||||
marionetteHost?: string;
|
||||
/**
|
||||
* Port to use to connect to Gecko
|
||||
* @default 0
|
||||
*/
|
||||
marionettePort?: number;
|
||||
/**
|
||||
* port to listen on
|
||||
*/
|
||||
port?: number;
|
||||
/**
|
||||
* port to use for Debugger / Webdriver BiDi
|
||||
*/
|
||||
websocketPort?: number;
|
||||
/**
|
||||
* Directory in which to create profiles. Defaults to the system temporary directory.
|
||||
*/
|
||||
profileRoot?: string;
|
||||
/**
|
||||
* Version of Geckodriver to start. See https://github.com/mozilla/geckodriver/releases for all available versions, platforms and architecture.
|
||||
*/
|
||||
geckoDriverVersion?: string;
|
||||
/**
|
||||
* Don't download Geckodriver, instead use a custom path to it, e.g. a cached binary.
|
||||
*/
|
||||
customGeckoDriverPath?: string;
|
||||
/**
|
||||
* The path to the root of the cache directory.
|
||||
* @default process.env.GECKODRIVER_CACHE_DIR || os.tmpdir()
|
||||
*/
|
||||
cacheDir?: string;
|
||||
}
|
||||
//# sourceMappingURL=types.d.ts.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/types.d.ts.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/types.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA;AAEzF,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,GAAG,CAAC,EAAE,QAAQ,CAAA;IACd;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB"}
|
||||
2
ExACTRegressionScripts/node_modules/geckodriver/dist/types.js
generated
vendored
Normal file
2
ExACTRegressionScripts/node_modules/geckodriver/dist/types.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=types.js.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/types.js.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/types.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
||||
7
ExACTRegressionScripts/node_modules/geckodriver/dist/utils.d.ts
generated
vendored
Normal file
7
ExACTRegressionScripts/node_modules/geckodriver/dist/utils.d.ts
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { type RequestInit } from 'node-fetch';
|
||||
import type { GeckodriverParameters } from './types.js';
|
||||
export declare function hasAccess(filePath: string): Promise<boolean>;
|
||||
export declare function getDownloadUrl(version: string): string;
|
||||
export declare function parseParams(params: GeckodriverParameters): string[];
|
||||
export declare function retryFetch(url: string, opts: RequestInit, retry?: number): Promise<import("node-fetch").Response>;
|
||||
//# sourceMappingURL=utils.d.ts.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/utils.d.ts.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/utils.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAKA,OAAc,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAGpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAIvD,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,oBAE/C;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,UAe7C;AAGD,wBAAgB,WAAW,CAAC,MAAM,EAAE,qBAAqB,YAYxD;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,GAAE,MAAU,0CAajF"}
|
||||
58
ExACTRegressionScripts/node_modules/geckodriver/dist/utils.js
generated
vendored
Normal file
58
ExACTRegressionScripts/node_modules/geckodriver/dist/utils.js
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
import os from 'node:os';
|
||||
import util from 'node:util';
|
||||
import fs from 'node:fs/promises';
|
||||
import decamelize from 'decamelize';
|
||||
import fetch from 'node-fetch';
|
||||
import { GECKODRIVER_DOWNLOAD_PATH } from './constants.js';
|
||||
const RETRY_DELAY = 100;
|
||||
export async function hasAccess(filePath) {
|
||||
return fs.access(filePath).then(() => true, () => false);
|
||||
}
|
||||
export function getDownloadUrl(version) {
|
||||
const platformIdentifier = os.platform() === 'win32'
|
||||
? 'win'
|
||||
: os.platform() === 'darwin'
|
||||
? 'macos'
|
||||
: 'linux';
|
||||
const arch = os.arch() === 'arm64'
|
||||
? '-aarch64'
|
||||
: platformIdentifier === 'macos'
|
||||
? ''
|
||||
: os.arch() === 'x64'
|
||||
? '64'
|
||||
: '32';
|
||||
const ext = os.platform() === 'win32' ? '.zip' : '.tar.gz';
|
||||
return util.format(GECKODRIVER_DOWNLOAD_PATH, version, version, platformIdentifier, arch, ext);
|
||||
}
|
||||
const EXCLUDED_PARAMS = ['version', 'help'];
|
||||
export function parseParams(params) {
|
||||
return Object.entries(params)
|
||||
.filter(([key,]) => !EXCLUDED_PARAMS.includes(key))
|
||||
.map(([key, val]) => {
|
||||
if (typeof val === 'boolean' && !val) {
|
||||
return '';
|
||||
}
|
||||
const values = Array.isArray(val) ? val : [val];
|
||||
return values.map((v) => `--${decamelize(key, { separator: '-' })}${typeof v === 'boolean' ? '' : `=${v}`}`);
|
||||
})
|
||||
.flat()
|
||||
.filter(Boolean);
|
||||
}
|
||||
export async function retryFetch(url, opts, retry = 3) {
|
||||
while (retry > 0) {
|
||||
try {
|
||||
return await fetch(url, opts);
|
||||
}
|
||||
catch (e) {
|
||||
retry = retry - 1;
|
||||
if (retry === 0) {
|
||||
throw e;
|
||||
}
|
||||
await sleep(RETRY_DELAY);
|
||||
}
|
||||
}
|
||||
}
|
||||
function sleep(ms) {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
}
|
||||
//# sourceMappingURL=utils.js.map
|
||||
1
ExACTRegressionScripts/node_modules/geckodriver/dist/utils.js.map
generated
vendored
Normal file
1
ExACTRegressionScripts/node_modules/geckodriver/dist/utils.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
||||
Reference in New Issue
Block a user