slybrowser 0.1.0 → 0.2.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 +23 -132
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -27
- package/dist/cli.js.map +1 -1
- package/dist/humanize.js +2 -2
- package/dist/index.d.ts +1 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -11
- package/dist/index.js.map +1 -1
- package/dist/official-trust.d.ts +6 -0
- package/dist/official-trust.d.ts.map +1 -0
- package/dist/official-trust.js +18 -0
- package/dist/official-trust.js.map +1 -0
- package/dist/service.js +3 -3
- package/dist/user-api.d.ts +108 -0
- package/dist/user-api.d.ts.map +1 -0
- package/dist/user-api.js +91 -0
- package/dist/user-api.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,146 +1,37 @@
|
|
|
1
|
-
# SlyBrowser for
|
|
1
|
+
# SlyBrowser for Node.js
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
```ts
|
|
7
|
-
import { launch } from "slybrowser";
|
|
8
|
-
|
|
9
|
-
await using browser = await launch(browserExecutable, shortLivedLease, {
|
|
10
|
-
humanize: true,
|
|
11
|
-
});
|
|
12
|
-
await browser.get("https://example.test");
|
|
13
|
-
console.log(await browser.title());
|
|
3
|
+
```sh
|
|
4
|
+
npm install slybrowser@0.2.0
|
|
14
5
|
```
|
|
15
6
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
signed lease. Humanize for this default path executes natively in Sly WebDriver;
|
|
21
|
-
Playwright and Puppeteer remain optional through their explicitly named launch adapters.
|
|
22
|
-
|
|
23
|
-
## Playwright and Puppeteer adapters
|
|
24
|
-
|
|
25
|
-
Both adapters force the supplied SlyBrowser executable and validate the installed
|
|
26
|
-
framework binding line. They never use a framework-downloaded browser or a system
|
|
27
|
-
Chrome fallback.
|
|
28
|
-
|
|
29
|
-
```ts
|
|
30
|
-
import { chromium } from "playwright-core";
|
|
31
|
-
import puppeteer from "puppeteer-core";
|
|
32
|
-
import { launchPlaywright, launchPuppeteer } from "slybrowser";
|
|
33
|
-
|
|
34
|
-
const browser = await launchPlaywright(
|
|
35
|
-
{ chromium }, browserExecutable, shortLivedLease,
|
|
36
|
-
{ frameworkVersion: "1.62.1" },
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
const puppeteerBrowser = await launchPuppeteer(
|
|
40
|
-
puppeteer, browserExecutable, shortLivedLease,
|
|
41
|
-
{ frameworkVersion: "25.8.0" },
|
|
42
|
-
);
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Use `launchPlaywrightPersistent` or `launchPuppeteerPersistent` for persistent
|
|
46
|
-
profiles. When `humanize: true` is set, the SDK writes a short-lived
|
|
47
|
-
`--sly-humanize-config` native control file for the browser process. The SDK does not
|
|
48
|
-
install a Playwright/Puppeteer-side movement substitute; unsupported browser builds
|
|
49
|
-
must fail closed at the native capability gate.
|
|
50
|
-
|
|
51
|
-
## Install and launch the latest authorized release
|
|
52
|
-
|
|
53
|
-
Current release archives use 7z. Install `7z` (or `7zz` on Unix-like systems), or set `SLYBROWSER_7Z_PATH` to the executable before using the automatic installer.
|
|
7
|
+
This npm package is the Node.js SDK. The same 0.2.0 launch contract is also available
|
|
8
|
+
for [Python](https://pypi.org/project/slybrowser/),
|
|
9
|
+
[Java](https://central.sonatype.com/artifact/com.slybrowser/slybrowser), and
|
|
10
|
+
[.NET](https://www.nuget.org/packages/SlyBrowser).
|
|
54
11
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
per-browser-process limit.
|
|
12
|
+
`launch()` accepts the authorization file plus optional `profile`, `launch`, and
|
|
13
|
+
`humanize` values. No import command is required. The SDK manages release selection,
|
|
14
|
+
verification, download, pairing, and temporary state.
|
|
59
15
|
|
|
60
16
|
```ts
|
|
61
|
-
import {
|
|
62
|
-
import puppeteer from "puppeteer-core";
|
|
63
|
-
import { launchLatest, launchLatestPlaywright, launchLatestPuppeteer } from "slybrowser";
|
|
17
|
+
import { launch } from "slybrowser";
|
|
64
18
|
|
|
65
|
-
await using browser = await
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
},
|
|
70
|
-
humanize: true,
|
|
19
|
+
await using browser = await launch("account.authorization.json", {
|
|
20
|
+
profile: { locale: "en-US", screen: { width: 1440, height: 900 } },
|
|
21
|
+
launch: { headless: true, profileMode: "ephemeral", updateKernel: true },
|
|
22
|
+
humanize: { enabled: true, preset: "default" },
|
|
71
23
|
});
|
|
72
24
|
|
|
73
|
-
console.log(browser.licenseRuntime); // plan, limit, version and session ID
|
|
74
25
|
await browser.get("https://example.test");
|
|
75
|
-
|
|
76
|
-
const playwrightBrowser = await launchLatestPlaywright(
|
|
77
|
-
{ chromium }, "account.authorization.json", {
|
|
78
|
-
trust: {
|
|
79
|
-
licenseTrustedKeys: { "license-prod-v1": licensePublicKey },
|
|
80
|
-
releaseTrustedKeys: { "release-prod-v1": releasePublicKey },
|
|
81
|
-
},
|
|
82
|
-
frameworkVersion: "1.62.1",
|
|
83
|
-
},
|
|
84
|
-
);
|
|
85
|
-
|
|
86
|
-
const puppeteerBrowser = await launchLatestPuppeteer(
|
|
87
|
-
puppeteer, "account.authorization.json", {
|
|
88
|
-
trust: {
|
|
89
|
-
licenseTrustedKeys: { "license-prod-v1": licensePublicKey },
|
|
90
|
-
releaseTrustedKeys: { "release-prod-v1": releasePublicKey },
|
|
91
|
-
},
|
|
92
|
-
frameworkVersion: "25.8.0",
|
|
93
|
-
},
|
|
94
|
-
);
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
The authorized framework launchers reserve and release the same concurrency slot as
|
|
98
|
-
`launchLatest(...)`, expose `licenseRuntime.versionAudit`, and fail closed if the
|
|
99
|
-
framework reports a launched browser version that does not exactly match the signed
|
|
100
|
-
selected release. Persistent profile variants are available as
|
|
101
|
-
`launchLatestPlaywrightPersistent` and `launchLatestPuppeteerPersistent`.
|
|
102
|
-
|
|
103
|
-
The public keys are raw 32-byte Ed25519 keys. The CLI accepts them as base64url JSON in
|
|
104
|
-
`SLYBROWSER_LICENSE_PUBLIC_KEYS_JSON` and `SLYBROWSER_RELEASE_PUBLIC_KEYS_JSON`:
|
|
105
|
-
|
|
106
|
-
```text
|
|
107
|
-
slybrowser install --authorization account.authorization.json [--cache DIR] [--kernel-major 150|latest] [--update-kernel]
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## Import a paid license file on Windows
|
|
111
|
-
|
|
112
|
-
After checkout, the billing email delivers an encrypted v2 license file. Import it
|
|
113
|
-
once on the Windows machine that will run SlyBrowser:
|
|
114
|
-
|
|
115
|
-
```text
|
|
116
|
-
set SLYBROWSER_LICENSE_FILE_PUBLIC_KEYS_JSON={"license-file-prod-v1":"BASE64URL_RAW_ED25519_PUBLIC_KEY"}
|
|
117
|
-
slybrowser license import --input account.slybrowser-license.json --output account.slybrowser-sealed-license.json --passphrase YOUR_PASSPHRASE
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
The sealed output uses Windows DPAPI current-user protection. It can be passed to
|
|
121
|
-
the same `--authorization` option and to `launchLatest(...)`/Playwright/Puppeteer
|
|
122
|
-
authorized launchers without providing the license-file passphrase again. The sealed
|
|
123
|
-
file still grants access on that Windows account, so do not commit, log, or share it.
|
|
124
|
-
|
|
125
|
-
## Redacted license diagnostics
|
|
126
|
-
|
|
127
|
-
Use `license info` when a customer needs support without exposing their credential:
|
|
128
|
-
|
|
129
|
-
```text
|
|
130
|
-
slybrowser license info --authorization account.slybrowser-sealed-license.json [--kernel-major 150|latest] [--update-kernel]
|
|
26
|
+
console.log(await browser.title());
|
|
131
27
|
```
|
|
132
28
|
|
|
133
|
-
The
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
update availability and `stableErrorCode`. It does not print the license key,
|
|
137
|
-
session tokens, download tickets, email, PayNow identifiers, profile paths or service
|
|
138
|
-
access URL.
|
|
29
|
+
The default path uses the matched project WebDriver and never falls back to a system
|
|
30
|
+
browser. Use `launchPlaywright()` or `launchPuppeteer()` only when an explicit adapter
|
|
31
|
+
is required. Persistent adapter variants are also available.
|
|
139
32
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
the selected major range.
|
|
33
|
+
Unknown or unsupported options, failed authorization, release verification errors,
|
|
34
|
+
and browser/driver mismatches stop the launch. Treat the authorization file as a
|
|
35
|
+
credential: do not commit, log, or share it.
|
|
144
36
|
|
|
145
|
-
|
|
146
|
-
`docs/authorized-release-service.md` for the server and release workflow.
|
|
37
|
+
See the [complete SDK user API](../../docs/user-api.md) for every field and default.
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAkBtB,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;AACrE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;AAQtE,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;CACvB,CAmBA;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG;IACrE,aAAa,EAAE,CAAC,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAOA;AAED,wBAAsB,IAAI,CAAC,IAAI,GAAE,SAAS,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CA0J3F"}
|
package/dist/cli.js
CHANGED
|
@@ -7,23 +7,7 @@ import { LicenseServiceError } from "./errors.js";
|
|
|
7
7
|
import { installLatestAuthorizedBrowser } from "./licensed.js";
|
|
8
8
|
import { LicenseServiceClient, importLicenseFileToSealedAuthorization, readLicenseAuthorization, } from "./service.js";
|
|
9
9
|
import { defaultDriverExecutable } from "./webdriver.js";
|
|
10
|
-
|
|
11
|
-
if (!value)
|
|
12
|
-
throw new Error(`${name} is required`);
|
|
13
|
-
const document = JSON.parse(value);
|
|
14
|
-
const result = {};
|
|
15
|
-
for (const [keyId, encoded] of Object.entries(document)) {
|
|
16
|
-
if (typeof encoded !== "string")
|
|
17
|
-
throw new Error(`${name}.${keyId} must be base64url`);
|
|
18
|
-
const key = Buffer.from(encoded, "base64url");
|
|
19
|
-
if (key.length !== 32 || key.toString("base64url") !== encoded)
|
|
20
|
-
throw new Error(`${name}.${keyId} must contain a raw 32-byte Ed25519 public key`);
|
|
21
|
-
result[keyId] = key;
|
|
22
|
-
}
|
|
23
|
-
if (!Object.keys(result).length)
|
|
24
|
-
throw new Error(`${name} must contain at least one key`);
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
10
|
+
import { LICENSE_FILE_KEYS, officialTrust } from "./official-trust.js";
|
|
27
11
|
function optionValue(arguments_, name) {
|
|
28
12
|
const index = arguments_.indexOf(name);
|
|
29
13
|
return index >= 0 ? arguments_[index + 1] : undefined;
|
|
@@ -73,7 +57,7 @@ export function licenseServiceErrorOutput(error) {
|
|
|
73
57
|
export async function main(argv = process.argv.slice(2)) {
|
|
74
58
|
const [command, ...arguments_] = argv;
|
|
75
59
|
if (command === "--version" || command === "-V") {
|
|
76
|
-
console.log("0.
|
|
60
|
+
console.log("0.2.0");
|
|
77
61
|
return 0;
|
|
78
62
|
}
|
|
79
63
|
if (command === "install") {
|
|
@@ -93,8 +77,7 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
93
77
|
}
|
|
94
78
|
const authorized = await installLatestAuthorizedBrowser(resolve(authorization), {
|
|
95
79
|
trust: {
|
|
96
|
-
|
|
97
|
-
releaseTrustedKeys: parseTrustedKeys(process.env.SLYBROWSER_RELEASE_PUBLIC_KEYS_JSON, "SLYBROWSER_RELEASE_PUBLIC_KEYS_JSON"),
|
|
80
|
+
...officialTrust(),
|
|
98
81
|
},
|
|
99
82
|
...(cacheRoot === undefined ? {} : { install: { cacheRoot: resolve(cacheRoot) } }),
|
|
100
83
|
...selection,
|
|
@@ -147,9 +130,7 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
147
130
|
}
|
|
148
131
|
const trustedServiceUrls = optionValues(licenseArguments, "--trusted-service-url");
|
|
149
132
|
const licenseFilePassphrase = optionValue(licenseArguments, "--passphrase");
|
|
150
|
-
const licenseFileTrustedKeys =
|
|
151
|
-
? parseTrustedKeys(process.env.SLYBROWSER_LICENSE_FILE_PUBLIC_KEYS_JSON, "SLYBROWSER_LICENSE_FILE_PUBLIC_KEYS_JSON")
|
|
152
|
-
: undefined;
|
|
133
|
+
const licenseFileTrustedKeys = LICENSE_FILE_KEYS;
|
|
153
134
|
try {
|
|
154
135
|
const document = await readLicenseAuthorization(resolve(authorization), {
|
|
155
136
|
...(licenseFilePassphrase === undefined ? {} : { licenseFilePassphrase }),
|
|
@@ -157,8 +138,7 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
157
138
|
...(trustedServiceUrls.length ? { trustedServiceUrls } : {}),
|
|
158
139
|
});
|
|
159
140
|
const client = new LicenseServiceClient(document, {
|
|
160
|
-
|
|
161
|
-
releaseTrustedKeys: parseTrustedKeys(process.env.SLYBROWSER_RELEASE_PUBLIC_KEYS_JSON, "SLYBROWSER_RELEASE_PUBLIC_KEYS_JSON"),
|
|
141
|
+
...officialTrust(),
|
|
162
142
|
});
|
|
163
143
|
const info = await client.licenseInfo(selection);
|
|
164
144
|
console.log(JSON.stringify(info, null, 2));
|
|
@@ -186,7 +166,7 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
186
166
|
const trustedServiceUrls = optionValues(licenseArguments, "--trusted-service-url");
|
|
187
167
|
const result = await importLicenseFileToSealedAuthorization(resolve(input), resolve(output), {
|
|
188
168
|
licenseFilePassphrase: passphrase,
|
|
189
|
-
licenseFileTrustedKeys:
|
|
169
|
+
licenseFileTrustedKeys: LICENSE_FILE_KEYS,
|
|
190
170
|
...(trustedServiceUrls.length ? { trustedServiceUrls } : {}),
|
|
191
171
|
});
|
|
192
172
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -225,7 +205,7 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
225
205
|
}
|
|
226
206
|
}
|
|
227
207
|
console.log(JSON.stringify({
|
|
228
|
-
sdkVersion: "0.
|
|
208
|
+
sdkVersion: "0.2.0",
|
|
229
209
|
node: process.version,
|
|
230
210
|
defaultBackend: "project-webdriver",
|
|
231
211
|
browser: browserPath,
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,oBAAoB,EACpB,sCAAsC,EACtC,wBAAwB,GAGzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/humanize.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
const DEFAULTS = {
|
|
2
2
|
default: Object.freeze({
|
|
3
|
-
mouseStepsMin:
|
|
3
|
+
mouseStepsMin: 10, mouseStepsMax: 16,
|
|
4
4
|
mouseStepDelayMin: 7, mouseStepDelayMax: 18,
|
|
5
5
|
clickHoldMin: 45, clickHoldMax: 105,
|
|
6
6
|
keyDelayMin: 35, keyDelayMax: 115,
|
|
7
7
|
thinkDelayMin: 120, thinkDelayMax: 360,
|
|
8
8
|
}),
|
|
9
9
|
careful: Object.freeze({
|
|
10
|
-
mouseStepsMin:
|
|
10
|
+
mouseStepsMin: 10, mouseStepsMax: 16,
|
|
11
11
|
mouseStepDelayMin: 8, mouseStepDelayMax: 24,
|
|
12
12
|
clickHoldMin: 65, clickHoldMax: 145,
|
|
13
13
|
keyDelayMin: 55, keyDelayMax: 155,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
1
|
export * from "./errors.js";
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./browser.js";
|
|
4
|
-
export * from "./launcher.js";
|
|
5
|
-
export * from "./license.js";
|
|
6
|
-
export * from "./humanize.js";
|
|
7
|
-
export * from "./webdriver.js";
|
|
8
|
-
export * from "./manifest.js";
|
|
9
|
-
export * from "./service.js";
|
|
10
|
-
export * from "./installer.js";
|
|
11
|
-
export * from "./licensed.js";
|
|
12
|
-
export * from "./cdp.js";
|
|
2
|
+
export * from "./user-api.js";
|
|
13
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
1
|
export * from "./errors.js";
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./browser.js";
|
|
4
|
-
export * from "./launcher.js";
|
|
5
|
-
export * from "./license.js";
|
|
6
|
-
export * from "./humanize.js";
|
|
7
|
-
export * from "./webdriver.js";
|
|
8
|
-
export * from "./manifest.js";
|
|
9
|
-
export * from "./service.js";
|
|
10
|
-
export * from "./installer.js";
|
|
11
|
-
export * from "./licensed.js";
|
|
12
|
-
export * from "./cdp.js";
|
|
2
|
+
export * from "./user-api.js";
|
|
13
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LicenseServiceClientOptions } from "./service.js";
|
|
2
|
+
export declare const LICENSE_FILE_KEYS: Readonly<{
|
|
3
|
+
"license-file-private-preview-v1": Uint8Array<ArrayBufferLike>;
|
|
4
|
+
}>;
|
|
5
|
+
export declare function officialTrust(): LicenseServiceClientOptions;
|
|
6
|
+
//# sourceMappingURL=official-trust.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"official-trust.d.ts","sourceRoot":"","sources":["../src/official-trust.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAYhE,eAAO,MAAM,iBAAiB;;EAE5B,CAAC;AAEH,wBAAgB,aAAa,IAAI,2BAA2B,CAM3D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const decode = (value) => Buffer.from(value, "base64url");
|
|
2
|
+
const LICENSE_LEASE_KEYS = Object.freeze({
|
|
3
|
+
"launch-candidate-20260824": decode("h9ie2nXxsXVKlxjFIz-or1otChHTF8HS94vV_EjY1KM"),
|
|
4
|
+
});
|
|
5
|
+
const RELEASE_MANIFEST_KEYS = Object.freeze({
|
|
6
|
+
"release-launch-candidate-20260824": decode("SvSlPQKT9oZ4nIVuJXgd2pFOC0QblDph29vKlz6NJZo"),
|
|
7
|
+
});
|
|
8
|
+
export const LICENSE_FILE_KEYS = Object.freeze({
|
|
9
|
+
"license-file-private-preview-v1": decode("wc3DR5wOqazjZF_3n41EF1cMh5d-qGv2wkZHyd0Sj6s"),
|
|
10
|
+
});
|
|
11
|
+
export function officialTrust() {
|
|
12
|
+
return {
|
|
13
|
+
licenseTrustedKeys: LICENSE_LEASE_KEYS,
|
|
14
|
+
releaseTrustedKeys: RELEASE_MANIFEST_KEYS,
|
|
15
|
+
licenseFileTrustedKeys: LICENSE_FILE_KEYS,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=official-trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"official-trust.js","sourceRoot":"","sources":["../src/official-trust.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,CAAC,KAAa,EAAc,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAE9E,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,2BAA2B,EAAE,MAAM,CAAC,6CAA6C,CAAC;CACnF,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,mCAAmC,EAAE,MAAM,CAAC,6CAA6C,CAAC;CAC3F,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,iCAAiC,EAAE,MAAM,CAAC,6CAA6C,CAAC;CACzF,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,kBAAkB,EAAE,kBAAkB;QACtC,kBAAkB,EAAE,qBAAqB;QACzC,sBAAsB,EAAE,iBAAiB;KAC1C,CAAC;AACJ,CAAC"}
|
package/dist/service.js
CHANGED
|
@@ -708,7 +708,7 @@ export class LicenseServiceClient {
|
|
|
708
708
|
async licenseInfo(options = {}) {
|
|
709
709
|
const platform = options.platform ?? currentPlatform();
|
|
710
710
|
const arch = options.arch ?? currentArch();
|
|
711
|
-
const sdkVersion = options.sdkVersion ?? "0.
|
|
711
|
+
const sdkVersion = options.sdkVersion ?? "0.2.0";
|
|
712
712
|
const versionPolicy = options.versionPolicy ?? (options.browserVersion === undefined ? "latest" : "exact");
|
|
713
713
|
if (versionPolicy === "latest" && options.browserVersion !== undefined) {
|
|
714
714
|
fail("version_policy_invalid", "Latest selection cannot include a requested browser version");
|
|
@@ -814,7 +814,7 @@ export class LicenseServiceClient {
|
|
|
814
814
|
async createSession(options = {}) {
|
|
815
815
|
const platform = options.platform ?? currentPlatform();
|
|
816
816
|
const arch = options.arch ?? currentArch();
|
|
817
|
-
const sdkVersion = options.sdkVersion ?? "0.
|
|
817
|
+
const sdkVersion = options.sdkVersion ?? "0.2.0";
|
|
818
818
|
const versionPolicy = options.versionPolicy ?? (options.browserVersion === undefined ? "latest" : "exact");
|
|
819
819
|
if (versionPolicy === "latest" && options.browserVersion !== undefined) {
|
|
820
820
|
fail("version_policy_invalid", "Latest selection cannot include a requested browser version");
|
|
@@ -940,7 +940,7 @@ export class LicenseServiceClient {
|
|
|
940
940
|
async createRuntimeSession(options = {}) {
|
|
941
941
|
const platform = options.platform ?? currentPlatform();
|
|
942
942
|
const arch = options.arch ?? currentArch();
|
|
943
|
-
const sdkVersion = options.sdkVersion ?? "0.
|
|
943
|
+
const sdkVersion = options.sdkVersion ?? "0.2.0";
|
|
944
944
|
const startupId = options.startupId ?? newStartupId();
|
|
945
945
|
if (!/^st_[A-Za-z0-9_-]{16,120}$/.test(startupId)) {
|
|
946
946
|
fail("startup_id_invalid", "Runtime startup ID is invalid");
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { PlaywrightLike, PuppeteerLike } from "./browser.js";
|
|
2
|
+
import type { HumanConfig, HumanPreset } from "./humanize.js";
|
|
3
|
+
import { type LicensedFrameworkRuntime } from "./licensed.js";
|
|
4
|
+
import type { SlyWebDriverSession } from "./webdriver.js";
|
|
5
|
+
export interface NoiseProfile {
|
|
6
|
+
r: number;
|
|
7
|
+
g: number;
|
|
8
|
+
b: number;
|
|
9
|
+
a: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ClientHint {
|
|
12
|
+
brand: string;
|
|
13
|
+
version: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SlyBrowserProfile {
|
|
16
|
+
fingerprintMode?: "explicit" | "seeded";
|
|
17
|
+
fingerprintSeed?: string;
|
|
18
|
+
fingerprintSchemaVersion?: 1;
|
|
19
|
+
userAgent?: string;
|
|
20
|
+
userAgentFullVersion?: string;
|
|
21
|
+
clientHints?: readonly ClientHint[];
|
|
22
|
+
osVersion?: string;
|
|
23
|
+
locale?: string;
|
|
24
|
+
languages?: readonly string[];
|
|
25
|
+
timezone?: string | {
|
|
26
|
+
zone: string;
|
|
27
|
+
utc?: string;
|
|
28
|
+
locale?: string;
|
|
29
|
+
};
|
|
30
|
+
screen?: {
|
|
31
|
+
width: number;
|
|
32
|
+
height: number;
|
|
33
|
+
};
|
|
34
|
+
webrtc?: "default";
|
|
35
|
+
disabledFonts?: readonly string[];
|
|
36
|
+
canvasNoise?: NoiseProfile;
|
|
37
|
+
webglImageNoise?: NoiseProfile;
|
|
38
|
+
webgl?: {
|
|
39
|
+
vendor: string;
|
|
40
|
+
renderer: string;
|
|
41
|
+
};
|
|
42
|
+
webgpu?: {
|
|
43
|
+
vendor: string;
|
|
44
|
+
architecture: string;
|
|
45
|
+
};
|
|
46
|
+
audioContext?: {
|
|
47
|
+
channel: number;
|
|
48
|
+
analyzer: number;
|
|
49
|
+
};
|
|
50
|
+
disabledCipherSuites?: readonly string[];
|
|
51
|
+
disabledMediaDevices?: readonly string[];
|
|
52
|
+
clientRects?: {
|
|
53
|
+
width: number;
|
|
54
|
+
height: number;
|
|
55
|
+
};
|
|
56
|
+
speechVoices?: readonly {
|
|
57
|
+
default: boolean;
|
|
58
|
+
lang: string;
|
|
59
|
+
localService: boolean;
|
|
60
|
+
name: string;
|
|
61
|
+
voiceURI: string;
|
|
62
|
+
}[];
|
|
63
|
+
cookies?: readonly {
|
|
64
|
+
name: string;
|
|
65
|
+
value: string;
|
|
66
|
+
domain: string;
|
|
67
|
+
path: string;
|
|
68
|
+
session: boolean;
|
|
69
|
+
httpOnly: boolean;
|
|
70
|
+
secure: boolean;
|
|
71
|
+
sameSite: "None" | "Lax" | "Strict" | "Unspecified";
|
|
72
|
+
}[];
|
|
73
|
+
hardwareConcurrency?: number;
|
|
74
|
+
deviceMemory?: number;
|
|
75
|
+
deviceName?: string;
|
|
76
|
+
macAddress?: string;
|
|
77
|
+
doNotTrack?: boolean;
|
|
78
|
+
allowedPorts?: readonly number[];
|
|
79
|
+
gpuEnabled?: boolean;
|
|
80
|
+
homepages?: readonly string[];
|
|
81
|
+
}
|
|
82
|
+
export interface SlyBrowserLaunchOptions {
|
|
83
|
+
headless?: boolean;
|
|
84
|
+
profileMode?: "ephemeral" | "persistent";
|
|
85
|
+
profileDirectory?: string;
|
|
86
|
+
updateKernel?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export interface SlyBrowserHumanizeOptions {
|
|
89
|
+
enabled?: boolean;
|
|
90
|
+
preset?: HumanPreset;
|
|
91
|
+
seed?: number;
|
|
92
|
+
config?: Partial<HumanConfig>;
|
|
93
|
+
}
|
|
94
|
+
export interface SlyBrowserOptions {
|
|
95
|
+
profile?: SlyBrowserProfile;
|
|
96
|
+
launch?: SlyBrowserLaunchOptions;
|
|
97
|
+
humanize?: SlyBrowserHumanizeOptions;
|
|
98
|
+
}
|
|
99
|
+
/** Launch the project WebDriver using only the customer authorization file and user options. */
|
|
100
|
+
export declare function launch(authorizationFile: string, options?: SlyBrowserOptions): Promise<SlyWebDriverSession>;
|
|
101
|
+
/** Launch through the installed Playwright binding; its version is detected automatically. */
|
|
102
|
+
export declare function launchPlaywright<TBrowser>(playwright: PlaywrightLike<TBrowser>, authorizationFile: string, options?: SlyBrowserOptions): Promise<LicensedFrameworkRuntime<TBrowser>>;
|
|
103
|
+
export declare function launchPlaywrightPersistent<TContext>(playwright: PlaywrightLike<unknown, TContext>, userDataDirectory: string, authorizationFile: string, options?: SlyBrowserOptions): Promise<LicensedFrameworkRuntime<TContext>>;
|
|
104
|
+
/** Launch through the installed Puppeteer binding; its version is detected automatically. */
|
|
105
|
+
export declare function launchPuppeteer<TBrowser>(puppeteer: PuppeteerLike<TBrowser>, authorizationFile: string, options?: SlyBrowserOptions): Promise<LicensedFrameworkRuntime<TBrowser>>;
|
|
106
|
+
export declare function launchPuppeteerPersistent<TBrowser>(puppeteer: PuppeteerLike<TBrowser>, userDataDirectory: string, authorizationFile: string, options?: SlyBrowserOptions): Promise<LicensedFrameworkRuntime<TBrowser>>;
|
|
107
|
+
export type { HumanConfig, HumanPreset, SlyWebDriverSession };
|
|
108
|
+
//# sourceMappingURL=user-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-api.d.ts","sourceRoot":"","sources":["../src/user-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAML,KAAK,wBAAwB,EAC9B,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAAG,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE;AAC5E,MAAM,WAAW,UAAU;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAE9D,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,YAAY,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,YAAY,CAAC,EAAE,SAAS;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,OAAO,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ,OAAO,CAAC,EAAE,SAAS;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,aAAa,CAAC;KACrD,EAAE,CAAC;IACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACtC;AAyDD,gGAAgG;AAChG,wBAAsB,MAAM,CAC1B,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAE9B;AAED,8FAA8F;AAC9F,wBAAsB,gBAAgB,CAAC,QAAQ,EAC7C,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,EACpC,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAM7C;AAED,wBAAsB,0BAA0B,CAAC,QAAQ,EACvD,UAAU,EAAE,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC7C,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAM7C;AAED,6FAA6F;AAC7F,wBAAsB,eAAe,CAAC,QAAQ,EAC5C,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,EAClC,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAM7C;AAED,wBAAsB,yBAAyB,CAAC,QAAQ,EACtD,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,EAClC,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAM7C;AAED,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC"}
|
package/dist/user-api.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { launchLatest as launchInternal, launchLatestPlaywright as launchPlaywrightInternal, launchLatestPlaywrightPersistent as launchPlaywrightPersistentInternal, launchLatestPuppeteer as launchPuppeteerInternal, launchLatestPuppeteerPersistent as launchPuppeteerPersistentInternal, } from "./licensed.js";
|
|
2
|
+
import { officialTrust } from "./official-trust.js";
|
|
3
|
+
import { ConfigurationError } from "./errors.js";
|
|
4
|
+
const allowedOptionFields = new Set(["profile", "launch", "humanize"]);
|
|
5
|
+
const allowedLaunchFields = new Set(["headless", "profileMode", "profileDirectory", "updateKernel"]);
|
|
6
|
+
const allowedHumanizeFields = new Set(["enabled", "preset", "seed", "config"]);
|
|
7
|
+
function objectValue(value, label) {
|
|
8
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
9
|
+
throw new ConfigurationError(`${label} must be an object`, "launch_options_invalid");
|
|
10
|
+
}
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
function rejectUnknownFields(value, allowed, label) {
|
|
14
|
+
const unknown = Object.keys(value).find((field) => !allowed.has(field));
|
|
15
|
+
if (unknown)
|
|
16
|
+
throw new ConfigurationError(`Unknown ${label} field: ${unknown}`, "launch_options_invalid");
|
|
17
|
+
}
|
|
18
|
+
function validateOptions(options) {
|
|
19
|
+
const root = objectValue(options, "options");
|
|
20
|
+
rejectUnknownFields(root, allowedOptionFields, "options");
|
|
21
|
+
if (root.profile !== undefined)
|
|
22
|
+
objectValue(root.profile, "profile");
|
|
23
|
+
if (root.launch !== undefined) {
|
|
24
|
+
const launch = objectValue(root.launch, "launch");
|
|
25
|
+
rejectUnknownFields(launch, allowedLaunchFields, "launch");
|
|
26
|
+
if (launch.profileMode !== undefined && launch.profileMode !== "ephemeral" && launch.profileMode !== "persistent") {
|
|
27
|
+
throw new ConfigurationError("launch.profileMode must be ephemeral or persistent", "launch_options_invalid");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (root.humanize !== undefined) {
|
|
31
|
+
const humanize = objectValue(root.humanize, "humanize");
|
|
32
|
+
rejectUnknownFields(humanize, allowedHumanizeFields, "humanize");
|
|
33
|
+
if (humanize.preset !== undefined && humanize.preset !== "default" && humanize.preset !== "careful") {
|
|
34
|
+
throw new ConfigurationError("humanize.preset must be default or careful", "humanize_preset_invalid");
|
|
35
|
+
}
|
|
36
|
+
if (humanize.config !== undefined)
|
|
37
|
+
objectValue(humanize.config, "humanize.config");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function common(options) {
|
|
41
|
+
validateOptions(options);
|
|
42
|
+
const launch = options.launch ?? {};
|
|
43
|
+
const humanize = options.humanize ?? {};
|
|
44
|
+
return {
|
|
45
|
+
trust: officialTrust(),
|
|
46
|
+
...(options.profile === undefined ? {} : { profile: options.profile }),
|
|
47
|
+
...(launch.headless === undefined ? {} : { headless: launch.headless }),
|
|
48
|
+
...(launch.profileMode === undefined ? {} : { profileMode: launch.profileMode }),
|
|
49
|
+
...(launch.profileDirectory === undefined ? {} : { profileDir: launch.profileDirectory }),
|
|
50
|
+
...(launch.updateKernel === undefined ? {} : { updateKernel: launch.updateKernel }),
|
|
51
|
+
...(humanize.enabled === undefined ? {} : { humanize: humanize.enabled }),
|
|
52
|
+
...(humanize.preset === undefined ? {} : { humanPreset: humanize.preset }),
|
|
53
|
+
...(humanize.seed === undefined ? {} : { humanSeed: humanize.seed }),
|
|
54
|
+
...(humanize.config === undefined ? {} : { humanConfig: humanize.config }),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** Launch the project WebDriver using only the customer authorization file and user options. */
|
|
58
|
+
export async function launch(authorizationFile, options = {}) {
|
|
59
|
+
return launchInternal(authorizationFile, common(options));
|
|
60
|
+
}
|
|
61
|
+
/** Launch through the installed Playwright binding; its version is detected automatically. */
|
|
62
|
+
export async function launchPlaywright(playwright, authorizationFile, options = {}) {
|
|
63
|
+
const normalized = common(options);
|
|
64
|
+
return launchPlaywrightInternal(playwright, authorizationFile, {
|
|
65
|
+
...normalized,
|
|
66
|
+
...(normalized.headless === undefined ? {} : { launchOptions: { headless: normalized.headless } }),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
export async function launchPlaywrightPersistent(playwright, userDataDirectory, authorizationFile, options = {}) {
|
|
70
|
+
const normalized = common(options);
|
|
71
|
+
return launchPlaywrightPersistentInternal(playwright, userDataDirectory, authorizationFile, {
|
|
72
|
+
...normalized,
|
|
73
|
+
...(normalized.headless === undefined ? {} : { launchOptions: { headless: normalized.headless } }),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/** Launch through the installed Puppeteer binding; its version is detected automatically. */
|
|
77
|
+
export async function launchPuppeteer(puppeteer, authorizationFile, options = {}) {
|
|
78
|
+
const normalized = common(options);
|
|
79
|
+
return launchPuppeteerInternal(puppeteer, authorizationFile, {
|
|
80
|
+
...normalized,
|
|
81
|
+
...(normalized.headless === undefined ? {} : { launchOptions: { headless: normalized.headless } }),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
export async function launchPuppeteerPersistent(puppeteer, userDataDirectory, authorizationFile, options = {}) {
|
|
85
|
+
const normalized = common(options);
|
|
86
|
+
return launchPuppeteerPersistentInternal(puppeteer, userDataDirectory, authorizationFile, {
|
|
87
|
+
...normalized,
|
|
88
|
+
...(normalized.headless === undefined ? {} : { launchOptions: { headless: normalized.headless } }),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=user-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-api.js","sourceRoot":"","sources":["../src/user-api.ts"],"names":[],"mappings":"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"}
|