sweetlink 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/CHANGELOG.md +12 -0
- package/LICENSE +21 -0
- package/README.md +237 -0
- package/dist/daemon/src/codename.d.ts +8 -0
- package/dist/daemon/src/codename.d.ts.map +1 -0
- package/dist/daemon/src/codename.js +42 -0
- package/dist/daemon/src/codename.js.map +1 -0
- package/dist/daemon/src/index.d.ts +3 -0
- package/dist/daemon/src/index.d.ts.map +1 -0
- package/dist/daemon/src/index.js +675 -0
- package/dist/daemon/src/index.js.map +1 -0
- package/dist/shared/src/env.d.ts +24 -0
- package/dist/shared/src/env.d.ts.map +1 -0
- package/dist/shared/src/env.js +39 -0
- package/dist/shared/src/env.js.map +1 -0
- package/dist/shared/src/index.d.ts +211 -0
- package/dist/shared/src/index.d.ts.map +1 -0
- package/dist/shared/src/index.js +73 -0
- package/dist/shared/src/index.js.map +1 -0
- package/dist/shared/src/node.d.ts +12 -0
- package/dist/shared/src/node.d.ts.map +1 -0
- package/dist/shared/src/node.js +67 -0
- package/dist/shared/src/node.js.map +1 -0
- package/dist/src/codex.d.ts +11 -0
- package/dist/src/codex.d.ts.map +1 -0
- package/dist/src/codex.js +67 -0
- package/dist/src/codex.js.map +1 -0
- package/dist/src/commands/click.d.ts +3 -0
- package/dist/src/commands/click.d.ts.map +1 -0
- package/dist/src/commands/click.js +93 -0
- package/dist/src/commands/click.js.map +1 -0
- package/dist/src/commands/run-js.d.ts +4 -0
- package/dist/src/commands/run-js.d.ts.map +1 -0
- package/dist/src/commands/run-js.js +28 -0
- package/dist/src/commands/run-js.js.map +1 -0
- package/dist/src/commands/trust-ca.d.ts +3 -0
- package/dist/src/commands/trust-ca.d.ts.map +1 -0
- package/dist/src/commands/trust-ca.js +43 -0
- package/dist/src/commands/trust-ca.js.map +1 -0
- package/dist/src/core/config-file.d.ts +41 -0
- package/dist/src/core/config-file.d.ts.map +1 -0
- package/dist/src/core/config-file.js +284 -0
- package/dist/src/core/config-file.js.map +1 -0
- package/dist/src/core/config.d.ts +23 -0
- package/dist/src/core/config.d.ts.map +1 -0
- package/dist/src/core/config.js +132 -0
- package/dist/src/core/config.js.map +1 -0
- package/dist/src/core/env.d.ts +11 -0
- package/dist/src/core/env.d.ts.map +1 -0
- package/dist/src/core/env.js +30 -0
- package/dist/src/core/env.js.map +1 -0
- package/dist/src/devtools-registry.d.ts +3 -0
- package/dist/src/devtools-registry.d.ts.map +1 -0
- package/dist/src/devtools-registry.js +294 -0
- package/dist/src/devtools-registry.js.map +1 -0
- package/dist/src/env.d.ts +16 -0
- package/dist/src/env.d.ts.map +1 -0
- package/dist/src/env.js +17 -0
- package/dist/src/env.js.map +1 -0
- package/dist/src/http.d.ts +2 -0
- package/dist/src/http.d.ts.map +1 -0
- package/dist/src/http.js +53 -0
- package/dist/src/http.js.map +1 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +1941 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/runtime/browser/client.d.ts +10 -0
- package/dist/src/runtime/browser/client.d.ts.map +1 -0
- package/dist/src/runtime/browser/client.js +497 -0
- package/dist/src/runtime/browser/client.js.map +1 -0
- package/dist/src/runtime/browser/commands/index.d.ts +10 -0
- package/dist/src/runtime/browser/commands/index.d.ts.map +1 -0
- package/dist/src/runtime/browser/commands/index.js +219 -0
- package/dist/src/runtime/browser/commands/index.js.map +1 -0
- package/dist/src/runtime/browser/dom-to-image-loader.d.ts +6 -0
- package/dist/src/runtime/browser/dom-to-image-loader.d.ts.map +1 -0
- package/dist/src/runtime/browser/dom-to-image-loader.js +50 -0
- package/dist/src/runtime/browser/dom-to-image-loader.js.map +1 -0
- package/dist/src/runtime/browser/index.d.ts +4 -0
- package/dist/src/runtime/browser/index.d.ts.map +1 -0
- package/dist/src/runtime/browser/index.js +4 -0
- package/dist/src/runtime/browser/index.js.map +1 -0
- package/dist/src/runtime/browser/module-loader.d.ts +6 -0
- package/dist/src/runtime/browser/module-loader.d.ts.map +1 -0
- package/dist/src/runtime/browser/module-loader.js +26 -0
- package/dist/src/runtime/browser/module-loader.js.map +1 -0
- package/dist/src/runtime/browser/screenshot/hooks.d.ts +71 -0
- package/dist/src/runtime/browser/screenshot/hooks.d.ts.map +1 -0
- package/dist/src/runtime/browser/screenshot/hooks.js +219 -0
- package/dist/src/runtime/browser/screenshot/hooks.js.map +1 -0
- package/dist/src/runtime/browser/screenshot/index.d.ts +9 -0
- package/dist/src/runtime/browser/screenshot/index.d.ts.map +1 -0
- package/dist/src/runtime/browser/screenshot/index.js +90 -0
- package/dist/src/runtime/browser/screenshot/index.js.map +1 -0
- package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.d.ts +13 -0
- package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.d.ts.map +1 -0
- package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.js +51 -0
- package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.js.map +1 -0
- package/dist/src/runtime/browser/screenshot/renderers/html2canvas.d.ts +12 -0
- package/dist/src/runtime/browser/screenshot/renderers/html2canvas.d.ts.map +1 -0
- package/dist/src/runtime/browser/screenshot/renderers/html2canvas.js +136 -0
- package/dist/src/runtime/browser/screenshot/renderers/html2canvas.js.map +1 -0
- package/dist/src/runtime/browser/screenshot/targets.d.ts +6 -0
- package/dist/src/runtime/browser/screenshot/targets.d.ts.map +1 -0
- package/dist/src/runtime/browser/screenshot/targets.js +53 -0
- package/dist/src/runtime/browser/screenshot/targets.js.map +1 -0
- package/dist/src/runtime/browser/screenshot/utils.d.ts +9 -0
- package/dist/src/runtime/browser/screenshot/utils.d.ts.map +1 -0
- package/dist/src/runtime/browser/screenshot/utils.js +471 -0
- package/dist/src/runtime/browser/screenshot/utils.js.map +1 -0
- package/dist/src/runtime/browser/selector-discovery.d.ts +9 -0
- package/dist/src/runtime/browser/selector-discovery.d.ts.map +1 -0
- package/dist/src/runtime/browser/selector-discovery.js +218 -0
- package/dist/src/runtime/browser/selector-discovery.js.map +1 -0
- package/dist/src/runtime/browser/storage/session-storage.d.ts +13 -0
- package/dist/src/runtime/browser/storage/session-storage.d.ts.map +1 -0
- package/dist/src/runtime/browser/storage/session-storage.js +119 -0
- package/dist/src/runtime/browser/storage/session-storage.js.map +1 -0
- package/dist/src/runtime/browser/types.d.ts +96 -0
- package/dist/src/runtime/browser/types.d.ts.map +1 -0
- package/dist/src/runtime/browser/types.js +6 -0
- package/dist/src/runtime/browser/types.js.map +1 -0
- package/dist/src/runtime/browser/utils/console.d.ts +5 -0
- package/dist/src/runtime/browser/utils/console.d.ts.map +1 -0
- package/dist/src/runtime/browser/utils/console.js +54 -0
- package/dist/src/runtime/browser/utils/console.js.map +1 -0
- package/dist/src/runtime/browser/utils/environment.d.ts +3 -0
- package/dist/src/runtime/browser/utils/environment.d.ts.map +1 -0
- package/dist/src/runtime/browser/utils/environment.js +13 -0
- package/dist/src/runtime/browser/utils/environment.js.map +1 -0
- package/dist/src/runtime/browser/utils/errors.d.ts +3 -0
- package/dist/src/runtime/browser/utils/errors.d.ts.map +1 -0
- package/dist/src/runtime/browser/utils/errors.js +42 -0
- package/dist/src/runtime/browser/utils/errors.js.map +1 -0
- package/dist/src/runtime/browser/utils/number.d.ts +2 -0
- package/dist/src/runtime/browser/utils/number.d.ts.map +1 -0
- package/dist/src/runtime/browser/utils/number.js +2 -0
- package/dist/src/runtime/browser/utils/number.js.map +1 -0
- package/dist/src/runtime/browser/utils/object.d.ts +3 -0
- package/dist/src/runtime/browser/utils/object.d.ts.map +1 -0
- package/dist/src/runtime/browser/utils/object.js +9 -0
- package/dist/src/runtime/browser/utils/object.js.map +1 -0
- package/dist/src/runtime/browser/utils/sanitize.d.ts +2 -0
- package/dist/src/runtime/browser/utils/sanitize.d.ts.map +1 -0
- package/dist/src/runtime/browser/utils/sanitize.js +28 -0
- package/dist/src/runtime/browser/utils/sanitize.js.map +1 -0
- package/dist/src/runtime/browser/utils/time.d.ts +2 -0
- package/dist/src/runtime/browser/utils/time.d.ts.map +1 -0
- package/dist/src/runtime/browser/utils/time.js +7 -0
- package/dist/src/runtime/browser/utils/time.js.map +1 -0
- package/dist/src/runtime/chrome/constants.d.ts +5 -0
- package/dist/src/runtime/chrome/constants.d.ts.map +1 -0
- package/dist/src/runtime/chrome/constants.js +5 -0
- package/dist/src/runtime/chrome/constants.js.map +1 -0
- package/dist/src/runtime/chrome/cookies.d.ts +20 -0
- package/dist/src/runtime/chrome/cookies.d.ts.map +1 -0
- package/dist/src/runtime/chrome/cookies.js +139 -0
- package/dist/src/runtime/chrome/cookies.js.map +1 -0
- package/dist/src/runtime/chrome/diagnostics.d.ts +6 -0
- package/dist/src/runtime/chrome/diagnostics.d.ts.map +1 -0
- package/dist/src/runtime/chrome/diagnostics.js +49 -0
- package/dist/src/runtime/chrome/diagnostics.js.map +1 -0
- package/dist/src/runtime/chrome/focus.d.ts +2 -0
- package/dist/src/runtime/chrome/focus.d.ts.map +1 -0
- package/dist/src/runtime/chrome/focus.js +41 -0
- package/dist/src/runtime/chrome/focus.js.map +1 -0
- package/dist/src/runtime/chrome/launch.d.ts +23 -0
- package/dist/src/runtime/chrome/launch.d.ts.map +1 -0
- package/dist/src/runtime/chrome/launch.js +102 -0
- package/dist/src/runtime/chrome/launch.js.map +1 -0
- package/dist/src/runtime/chrome/puppeteer.d.ts +7 -0
- package/dist/src/runtime/chrome/puppeteer.d.ts.map +1 -0
- package/dist/src/runtime/chrome/puppeteer.js +87 -0
- package/dist/src/runtime/chrome/puppeteer.js.map +1 -0
- package/dist/src/runtime/chrome/reuse/constants.d.ts +4 -0
- package/dist/src/runtime/chrome/reuse/constants.d.ts.map +1 -0
- package/dist/src/runtime/chrome/reuse/constants.js +4 -0
- package/dist/src/runtime/chrome/reuse/constants.js.map +1 -0
- package/dist/src/runtime/chrome/reuse.d.ts +13 -0
- package/dist/src/runtime/chrome/reuse.d.ts.map +1 -0
- package/dist/src/runtime/chrome/reuse.js +183 -0
- package/dist/src/runtime/chrome/reuse.js.map +1 -0
- package/dist/src/runtime/chrome/session.d.ts +13 -0
- package/dist/src/runtime/chrome/session.d.ts.map +1 -0
- package/dist/src/runtime/chrome/session.js +47 -0
- package/dist/src/runtime/chrome/session.js.map +1 -0
- package/dist/src/runtime/chrome.d.ts +9 -0
- package/dist/src/runtime/chrome.d.ts.map +1 -0
- package/dist/src/runtime/chrome.js +10 -0
- package/dist/src/runtime/chrome.js.map +1 -0
- package/dist/src/runtime/cookies.d.ts +37 -0
- package/dist/src/runtime/cookies.d.ts.map +1 -0
- package/dist/src/runtime/cookies.js +592 -0
- package/dist/src/runtime/cookies.js.map +1 -0
- package/dist/src/runtime/devstack.d.ts +14 -0
- package/dist/src/runtime/devstack.d.ts.map +1 -0
- package/dist/src/runtime/devstack.js +174 -0
- package/dist/src/runtime/devstack.js.map +1 -0
- package/dist/src/runtime/devtools/background.d.ts +5 -0
- package/dist/src/runtime/devtools/background.d.ts.map +1 -0
- package/dist/src/runtime/devtools/background.js +109 -0
- package/dist/src/runtime/devtools/background.js.map +1 -0
- package/dist/src/runtime/devtools/cdp.d.ts +16 -0
- package/dist/src/runtime/devtools/cdp.d.ts.map +1 -0
- package/dist/src/runtime/devtools/cdp.js +392 -0
- package/dist/src/runtime/devtools/cdp.js.map +1 -0
- package/dist/src/runtime/devtools/config.d.ts +12 -0
- package/dist/src/runtime/devtools/config.d.ts.map +1 -0
- package/dist/src/runtime/devtools/config.js +78 -0
- package/dist/src/runtime/devtools/config.js.map +1 -0
- package/dist/src/runtime/devtools/constants.d.ts +10 -0
- package/dist/src/runtime/devtools/constants.d.ts.map +1 -0
- package/dist/src/runtime/devtools/constants.js +18 -0
- package/dist/src/runtime/devtools/constants.js.map +1 -0
- package/dist/src/runtime/devtools/diagnostics.d.ts +8 -0
- package/dist/src/runtime/devtools/diagnostics.d.ts.map +1 -0
- package/dist/src/runtime/devtools/diagnostics.js +189 -0
- package/dist/src/runtime/devtools/diagnostics.js.map +1 -0
- package/dist/src/runtime/devtools/oauth.d.ts +9 -0
- package/dist/src/runtime/devtools/oauth.d.ts.map +1 -0
- package/dist/src/runtime/devtools/oauth.js +130 -0
- package/dist/src/runtime/devtools/oauth.js.map +1 -0
- package/dist/src/runtime/devtools/types.d.ts +108 -0
- package/dist/src/runtime/devtools/types.d.ts.map +1 -0
- package/dist/src/runtime/devtools/types.js +2 -0
- package/dist/src/runtime/devtools/types.js.map +1 -0
- package/dist/src/runtime/devtools.d.ts +8 -0
- package/dist/src/runtime/devtools.d.ts.map +1 -0
- package/dist/src/runtime/devtools.js +9 -0
- package/dist/src/runtime/devtools.js.map +1 -0
- package/dist/src/runtime/next-devtools.d.ts +2 -0
- package/dist/src/runtime/next-devtools.d.ts.map +1 -0
- package/dist/src/runtime/next-devtools.js +72 -0
- package/dist/src/runtime/next-devtools.js.map +1 -0
- package/dist/src/runtime/screenshot.d.ts +78 -0
- package/dist/src/runtime/screenshot.d.ts.map +1 -0
- package/dist/src/runtime/screenshot.js +232 -0
- package/dist/src/runtime/screenshot.js.map +1 -0
- package/dist/src/runtime/scripts.d.ts +16 -0
- package/dist/src/runtime/scripts.d.ts.map +1 -0
- package/dist/src/runtime/scripts.js +110 -0
- package/dist/src/runtime/scripts.js.map +1 -0
- package/dist/src/runtime/session.d.ts +64 -0
- package/dist/src/runtime/session.d.ts.map +1 -0
- package/dist/src/runtime/session.js +205 -0
- package/dist/src/runtime/session.js.map +1 -0
- package/dist/src/runtime/smoke.d.ts +36 -0
- package/dist/src/runtime/smoke.d.ts.map +1 -0
- package/dist/src/runtime/smoke.js +417 -0
- package/dist/src/runtime/smoke.js.map +1 -0
- package/dist/src/runtime/url.d.ts +10 -0
- package/dist/src/runtime/url.d.ts.map +1 -0
- package/dist/src/runtime/url.js +147 -0
- package/dist/src/runtime/url.js.map +1 -0
- package/dist/src/screenshot-hooks.d.ts +13 -0
- package/dist/src/screenshot-hooks.d.ts.map +1 -0
- package/dist/src/screenshot-hooks.js +56 -0
- package/dist/src/screenshot-hooks.js.map +1 -0
- package/dist/src/shared/env.d.ts +23 -0
- package/dist/src/shared/env.d.ts.map +1 -0
- package/dist/src/shared/env.js +38 -0
- package/dist/src/shared/env.js.map +1 -0
- package/dist/src/shared/index.d.ts +211 -0
- package/dist/src/shared/index.d.ts.map +1 -0
- package/dist/src/shared/index.js +73 -0
- package/dist/src/shared/index.js.map +1 -0
- package/dist/src/shared/node.d.ts +12 -0
- package/dist/src/shared/node.d.ts.map +1 -0
- package/dist/src/shared/node.js +67 -0
- package/dist/src/shared/node.js.map +1 -0
- package/dist/src/token.d.ts +4 -0
- package/dist/src/token.d.ts.map +1 -0
- package/dist/src/token.js +58 -0
- package/dist/src/token.js.map +1 -0
- package/dist/src/types.d.ts +17 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/util/app-label.d.ts +5 -0
- package/dist/src/util/app-label.d.ts.map +1 -0
- package/dist/src/util/app-label.js +21 -0
- package/dist/src/util/app-label.js.map +1 -0
- package/dist/src/util/errors.d.ts +9 -0
- package/dist/src/util/errors.d.ts.map +1 -0
- package/dist/src/util/errors.js +56 -0
- package/dist/src/util/errors.js.map +1 -0
- package/dist/src/util/path.d.ts +3 -0
- package/dist/src/util/path.d.ts.map +1 -0
- package/dist/src/util/path.js +6 -0
- package/dist/src/util/path.js.map +1 -0
- package/dist/src/util/regex.d.ts +4 -0
- package/dist/src/util/regex.d.ts.map +1 -0
- package/dist/src/util/regex.js +5 -0
- package/dist/src/util/regex.js.map +1 -0
- package/dist/src/util/time.d.ts +3 -0
- package/dist/src/util/time.d.ts.map +1 -0
- package/dist/src/util/time.js +7 -0
- package/dist/src/util/time.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/browser/utils/number.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,MAA6C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../../src/runtime/browser/utils/number.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/browser/utils/object.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,OAAO,KAAG,KAAK,IAAI,CAAyE,CAAC;AAEhK,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,IAMjE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const isRecord = (value) => Boolean(value && typeof value === 'object' && !Array.isArray(value));
|
|
2
|
+
export const toTrimmedNonEmptyString = (value) => {
|
|
3
|
+
if (typeof value !== 'string') {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
const trimmed = value.trim();
|
|
7
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../../src/runtime/browser/utils/object.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAoC,KAAc,EAAc,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAEhK,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAc,EAAiB,EAAE;IACvE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/browser/utils/sanitize.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAwBtD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function sanitizeResult(value) {
|
|
2
|
+
if (value instanceof Error) {
|
|
3
|
+
return {
|
|
4
|
+
name: value.name,
|
|
5
|
+
message: value.message,
|
|
6
|
+
stack: value.stack,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
if (typeof value === 'bigint') {
|
|
10
|
+
return value.toString();
|
|
11
|
+
}
|
|
12
|
+
if (typeof value === 'function') {
|
|
13
|
+
return value.toString();
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
return structuredClone(value);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
try {
|
|
20
|
+
const serialized = JSON.stringify(value);
|
|
21
|
+
return JSON.parse(serialized);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return String(value);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../../../../src/runtime/browser/utils/sanitize.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/browser/utils/time.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,GAAI,WAAW,OAAO,KAAG,MAAM,GAAG,IAKlE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../../src/runtime/browser/utils/time.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAkB,EAAiB,EAAE;IACxE,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;AACnE,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const PUPPETEER_NAVIGATION_TIMEOUT_MS = 45000;
|
|
2
|
+
export declare const PAGE_READY_PRIMARY_TIMEOUT_MS = 15000;
|
|
3
|
+
export declare const PAGE_READY_SECONDARY_TIMEOUT_MS = 30000;
|
|
4
|
+
export declare const PUPPETEER_PROTOCOL_TIMEOUT_MS = 45000;
|
|
5
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/runtime/chrome/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,QAAS,CAAC;AACtD,eAAO,MAAM,6BAA6B,QAAS,CAAC;AACpD,eAAO,MAAM,+BAA+B,QAAS,CAAC;AACtD,eAAO,MAAM,6BAA6B,QAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/runtime/chrome/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;AACtD,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC;AACpD,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;AACtD,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { delay } from '../../util/time.js';
|
|
2
|
+
import { buildCookieOrigins, collectChromeCookies } from '../cookies.js';
|
|
3
|
+
import { attemptPuppeteerReload, navigatePuppeteerPage, resolvePuppeteerPage, waitForPageReady } from './puppeteer.js';
|
|
4
|
+
type PrimeChromeCookiesDeps = {
|
|
5
|
+
collectChromeCookies: typeof collectChromeCookies;
|
|
6
|
+
resolvePuppeteerPage: typeof resolvePuppeteerPage;
|
|
7
|
+
navigatePuppeteerPage: typeof navigatePuppeteerPage;
|
|
8
|
+
waitForPageReady: typeof waitForPageReady;
|
|
9
|
+
attemptPuppeteerReload: typeof attemptPuppeteerReload;
|
|
10
|
+
delay: typeof delay;
|
|
11
|
+
buildCookieOrigins: typeof buildCookieOrigins;
|
|
12
|
+
};
|
|
13
|
+
export declare function primeControlledChromeCookies(options: {
|
|
14
|
+
devtoolsUrl: string;
|
|
15
|
+
targetUrl: string;
|
|
16
|
+
reload: boolean;
|
|
17
|
+
context: 'new-window' | 'existing-tab' | 'new-tab';
|
|
18
|
+
}, deps?: Partial<PrimeChromeCookiesDeps>): Promise<void>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=cookies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../../../src/runtime/chrome/cookies.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAA6B,MAAM,eAAe,CAAC;AAEpG,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIvH,KAAK,sBAAsB,GAAG;IAC5B,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;IACpD,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC/C,CAAC;AAEF,wBAAsB,4BAA4B,CAChD,OAAO,EAAE;IACP,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;CACpD,EACD,IAAI,GAAE,OAAO,CAAC,sBAAsB,CAAM,GACzC,OAAO,CAAC,IAAI,CAAC,CAkHf"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { regex } from 'arkregex';
|
|
2
|
+
import { uniq } from 'es-toolkit';
|
|
3
|
+
import { sweetLinkDebug } from '../../env.js';
|
|
4
|
+
import { delay } from '../../util/time.js';
|
|
5
|
+
import { buildCookieOrigins, collectChromeCookies } from '../cookies.js';
|
|
6
|
+
import { PUPPETEER_PROTOCOL_TIMEOUT_MS } from './constants.js';
|
|
7
|
+
import { attemptPuppeteerReload, navigatePuppeteerPage, resolvePuppeteerPage, waitForPageReady } from './puppeteer.js';
|
|
8
|
+
const AUTH_COOKIE_PATTERN = regex.as('auth|session|token', 'i');
|
|
9
|
+
export async function primeControlledChromeCookies(options, deps = {}) {
|
|
10
|
+
const { collectChromeCookies: collectCookies = collectChromeCookies, resolvePuppeteerPage: resolvePage = resolvePuppeteerPage, navigatePuppeteerPage: navigatePage = navigatePuppeteerPage, waitForPageReady: waitForPage = waitForPageReady, attemptPuppeteerReload: reloadPage = attemptPuppeteerReload, delay: delayFn = delay, buildCookieOrigins: buildOrigins = buildCookieOrigins, } = deps;
|
|
11
|
+
const cookies = await collectCookies(options.targetUrl);
|
|
12
|
+
if (cookies.length === 0) {
|
|
13
|
+
console.log('No Chrome cookies found for this origin; continuing without priming the controlled window.');
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
let puppeteer = null;
|
|
17
|
+
try {
|
|
18
|
+
({ default: puppeteer } = await import('puppeteer'));
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.warn('Unable to load Puppeteer while priming cookies:', error);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (!puppeteer) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
let browser = null;
|
|
28
|
+
for (let attempt = 0; attempt < 10; attempt += 1) {
|
|
29
|
+
try {
|
|
30
|
+
// biome-ignore lint/performance/noAwaitInLoops: puppeteer connection retries must be sequential.
|
|
31
|
+
browser = await puppeteer.connect({
|
|
32
|
+
browserURL: options.devtoolsUrl,
|
|
33
|
+
defaultViewport: null,
|
|
34
|
+
protocolTimeout: PUPPETEER_PROTOCOL_TIMEOUT_MS,
|
|
35
|
+
});
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (attempt === 9) {
|
|
40
|
+
console.warn('Unable to attach to controlled Chrome for cookie priming:', error);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
await delayFn(200);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!browser) {
|
|
47
|
+
console.warn('Unable to attach to controlled Chrome for cookie priming: unknown error');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
let page = await resolvePage(browser, options.targetUrl);
|
|
52
|
+
if (!page) {
|
|
53
|
+
const fallbackPage = await browser.newPage();
|
|
54
|
+
const navigated = await navigatePage(fallbackPage, options.targetUrl, 3);
|
|
55
|
+
if (!navigated) {
|
|
56
|
+
console.warn('Unable to locate or recreate the controlled tab while priming cookies.');
|
|
57
|
+
await fallbackPage.close().catch(() => {
|
|
58
|
+
/* ignored */
|
|
59
|
+
});
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
page = fallbackPage;
|
|
63
|
+
}
|
|
64
|
+
await waitForPage(page);
|
|
65
|
+
await page.setCookie(...cookies);
|
|
66
|
+
await verifyCookieSync(page, options.targetUrl, cookies, buildOrigins);
|
|
67
|
+
if (options.reload) {
|
|
68
|
+
await reloadPage(page);
|
|
69
|
+
}
|
|
70
|
+
let contextLabel = 'controlled window';
|
|
71
|
+
if (options.context === 'existing-tab') {
|
|
72
|
+
contextLabel = 'existing controlled tab';
|
|
73
|
+
}
|
|
74
|
+
else if (options.context === 'new-tab') {
|
|
75
|
+
contextLabel = 'controlled tab';
|
|
76
|
+
}
|
|
77
|
+
console.log(`Copied ${cookies.length} cookie${cookies.length === 1 ? '' : 's'} from your main Chrome profile into the ${contextLabel}${options.reload ? ' and refreshed the tab to apply the session.' : '.'}`);
|
|
78
|
+
const cookieNames = cookies
|
|
79
|
+
.map((cookie) => (typeof cookie.name === 'string' ? cookie.name : null))
|
|
80
|
+
.filter((name) => typeof name === 'string' && name.trim().length > 0);
|
|
81
|
+
if (cookieNames.length > 0) {
|
|
82
|
+
const authCookies = uniq(cookieNames.filter((name) => AUTH_COOKIE_PATTERN.test(name)));
|
|
83
|
+
if (authCookies.length > 0) {
|
|
84
|
+
console.log(`Detected likely auth cookies: ${authCookies.join(', ')}.`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log('No obvious auth/session cookies detected—expect to re-authenticate in the controlled window.');
|
|
88
|
+
}
|
|
89
|
+
const hasHttpOnly = cookies.some((cookie) => Boolean(cookie.httpOnly));
|
|
90
|
+
console.log(`HttpOnly cookies present: ${hasHttpOnly ? 'yes' : 'no'} (Chrome may restrict visibility inside the page).`);
|
|
91
|
+
}
|
|
92
|
+
if (!options.reload && options.context === 'existing-tab') {
|
|
93
|
+
console.log('Hint: reload the tab if the session has not updated yet.');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
console.warn('Failed to apply Chrome cookies to the controlled window:', error);
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
try {
|
|
101
|
+
await browser.disconnect();
|
|
102
|
+
}
|
|
103
|
+
catch (disconnectError) {
|
|
104
|
+
if (sweetLinkDebug) {
|
|
105
|
+
console.warn('Unable to disconnect Puppeteer browser after cookie sync.', disconnectError);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function verifyCookieSync(page, targetUrl, attempted, buildOrigins = buildCookieOrigins) {
|
|
111
|
+
if (attempted.length === 0) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const appliedNames = new Set();
|
|
116
|
+
const origins = buildOrigins(targetUrl);
|
|
117
|
+
for (const origin of origins) {
|
|
118
|
+
try {
|
|
119
|
+
// biome-ignore lint/performance/noAwaitInLoops: cookie collection per origin must remain sequential for accurate logging.
|
|
120
|
+
const cookies = await page.cookies(origin);
|
|
121
|
+
for (const cookie of cookies) {
|
|
122
|
+
appliedNames.add(cookie.name);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
/* ignore per-origin failures */
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const missing = attempted.filter((cookie) => !appliedNames.has(cookie.name));
|
|
130
|
+
if (missing.length > 0) {
|
|
131
|
+
const missingNames = missing.map((cookie) => cookie.name).join(', ');
|
|
132
|
+
console.warn(`Warning: the controlled window is missing ${missing.length} cookie(s) (${missingNames}).`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
console.warn('Unable to verify cookie sync in the controlled window:', error);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=cookies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../../../src/runtime/chrome/cookies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../../src/runtime/chrome/diagnostics.ts"],"names":[],"mappings":"AAGA,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CA+ClG"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { sweetLinkDebug } from '../../env.js';
|
|
2
|
+
import { connectPuppeteerBrowser, resolvePuppeteerPage, waitForPageReady } from './puppeteer.js';
|
|
3
|
+
export async function collectPuppeteerDiagnostics(devtoolsUrl, targetUrl) {
|
|
4
|
+
let puppeteer;
|
|
5
|
+
try {
|
|
6
|
+
({ default: puppeteer } = await import('puppeteer'));
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
console.warn('Unable to load Puppeteer while collecting diagnostics:', error);
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const browser = await connectPuppeteerBrowser(puppeteer, devtoolsUrl, 2);
|
|
13
|
+
if (!browser) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const page = await resolvePuppeteerPage(browser, targetUrl);
|
|
18
|
+
if (!page) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
await waitForPageReady(page).catch(() => {
|
|
22
|
+
/* ignore readiness errors */
|
|
23
|
+
});
|
|
24
|
+
return await page.evaluate(() => {
|
|
25
|
+
const overlay = document.querySelector('[data-nextjs-error-overlay-root]') ||
|
|
26
|
+
document.querySelector('[data-nextjs-error-overlay]') ||
|
|
27
|
+
document.querySelector('#__nextjs__container_errors');
|
|
28
|
+
const overlayText = overlay && typeof overlay.textContent === 'string' ? overlay.textContent : null;
|
|
29
|
+
const bodyText = document.body && typeof document.body.textContent === 'string' ? document.body.textContent : null;
|
|
30
|
+
const title = typeof document.title === 'string' ? document.title : null;
|
|
31
|
+
return { overlayText, bodyText, title };
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (sweetLinkDebug) {
|
|
36
|
+
console.warn('Unable to capture Puppeteer diagnostics:', error);
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
try {
|
|
42
|
+
await browser.disconnect();
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
/* ignore */
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../../src/runtime/chrome/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEjG,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,WAAmB,EACnB,SAAiB;IAEjB,IAAI,SAA6C,CAAC;IAClD,IAAI,CAAC;QACH,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,wDAAwD,EAAE,KAAK,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACtC,6BAA6B;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC9B,MAAM,OAAO,GACX,QAAQ,CAAC,aAAa,CAAC,kCAAkC,CAAC;gBAC1D,QAAQ,CAAC,aAAa,CAAC,6BAA6B,CAAC;gBACrD,QAAQ,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,OAAO,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;YACpG,MAAM,QAAQ,GACZ,QAAQ,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;YACpG,MAAM,KAAK,GAAG,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACzE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../../../src/runtime/chrome/focus.ts"],"names":[],"mappings":"AAGA,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmCxG"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { logDebugError } from '../../util/errors.js';
|
|
2
|
+
import { connectPuppeteerBrowser, resolvePuppeteerPage } from './puppeteer.js';
|
|
3
|
+
export async function focusControlledChromePage(devtoolsUrl, targetUrl) {
|
|
4
|
+
let puppeteer;
|
|
5
|
+
try {
|
|
6
|
+
({ default: puppeteer } = await import('puppeteer'));
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
logDebugError('Unable to load Puppeteer while attempting to focus controlled Chrome', error);
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const browser = await connectPuppeteerBrowser(puppeteer, devtoolsUrl, 3);
|
|
13
|
+
if (!browser) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
let page = await resolvePuppeteerPage(browser, targetUrl);
|
|
18
|
+
if (!page) {
|
|
19
|
+
const pages = await browser.pages();
|
|
20
|
+
page = pages.at(0) ?? null;
|
|
21
|
+
}
|
|
22
|
+
if (!page) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
await page.bringToFront();
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
logDebugError('Failed to focus controlled Chrome page', error);
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
try {
|
|
34
|
+
await browser.disconnect();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
/* ignore */
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=focus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus.js","sourceRoot":"","sources":["../../../../src/runtime/chrome/focus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,WAAmB,EAAE,SAAiB;IACpF,IAAI,SAA6C,CAAC;IAClD,IAAI,CAAC;QACH,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,aAAa,CAAC,sEAAsE,EAAE,KAAK,CAAC,CAAC;QAC7F,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,IAAI,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,aAAa,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare function launchChrome(target: string, options?: {
|
|
2
|
+
foreground?: boolean;
|
|
3
|
+
}): Promise<void>;
|
|
4
|
+
export declare function launchControlledChrome(target: string, options: {
|
|
5
|
+
port?: number;
|
|
6
|
+
cookieSync: boolean;
|
|
7
|
+
headless?: boolean;
|
|
8
|
+
foreground?: boolean;
|
|
9
|
+
}): Promise<{
|
|
10
|
+
port: number;
|
|
11
|
+
userDataDir: string;
|
|
12
|
+
devtoolsUrl: string;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function prepareChromeLaunch(platform: NodeJS.Platform, chromePath: string, chromeArgs: string[], options?: {
|
|
15
|
+
background?: boolean;
|
|
16
|
+
}): {
|
|
17
|
+
command: string;
|
|
18
|
+
args: string[];
|
|
19
|
+
};
|
|
20
|
+
export declare function spawnChromeDetached(chromePath: string, chromeArgs: string[], options?: {
|
|
21
|
+
background?: boolean;
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=launch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../../src/runtime/chrome/launch.ts"],"names":[],"mappings":"AAWA,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxG;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACxF,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAoDrE;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO;;;EAYvC;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { existsSync, mkdirSync } from 'node:fs';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { cliEnv } from '../../env.js';
|
|
6
|
+
import { saveDevToolsConfig } from '../devtools.js';
|
|
7
|
+
import { primeControlledChromeCookies } from './cookies.js';
|
|
8
|
+
import { findAvailablePort } from './reuse.js';
|
|
9
|
+
const DEFAULT_MAC_CHROME = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
|
|
10
|
+
export async function launchChrome(target, options = {}) {
|
|
11
|
+
const chromePath = cliEnv.chromePath ?? DEFAULT_MAC_CHROME;
|
|
12
|
+
if (!existsSync(chromePath)) {
|
|
13
|
+
throw new Error(`Google Chrome is required but was not found at "${chromePath}". Set SWEETLINK_CHROME_PATH to override the location.`);
|
|
14
|
+
}
|
|
15
|
+
const background = process.platform === 'darwin' && options.foreground !== true;
|
|
16
|
+
await spawnChromeDetached(chromePath, ['--new-tab', target], { background });
|
|
17
|
+
}
|
|
18
|
+
export async function launchControlledChrome(target, options) {
|
|
19
|
+
const chromePath = cliEnv.chromePath ?? DEFAULT_MAC_CHROME;
|
|
20
|
+
if (!existsSync(chromePath)) {
|
|
21
|
+
throw new Error(`Google Chrome is required but was not found at "${chromePath}". Set SWEETLINK_CHROME_PATH to override the location.`);
|
|
22
|
+
}
|
|
23
|
+
const port = options.port && !Number.isNaN(options.port) ? options.port : await findAvailablePort();
|
|
24
|
+
const userDataDirectory = path.join(os.tmpdir(), `sweetlink-chrome-${port}-${Date.now()}`);
|
|
25
|
+
mkdirSync(userDataDirectory, { recursive: true });
|
|
26
|
+
const args = [
|
|
27
|
+
`--remote-debugging-port=${port}`,
|
|
28
|
+
`--user-data-dir=${userDataDirectory}`,
|
|
29
|
+
'--no-first-run',
|
|
30
|
+
'--no-default-browser-check',
|
|
31
|
+
'--disable-background-networking',
|
|
32
|
+
'--disable-renderer-backgrounding',
|
|
33
|
+
'--allow-insecure-localhost',
|
|
34
|
+
'--new-window',
|
|
35
|
+
target,
|
|
36
|
+
];
|
|
37
|
+
if (options.headless) {
|
|
38
|
+
args.push('--headless=new', '--disable-gpu', '--hide-scrollbars');
|
|
39
|
+
}
|
|
40
|
+
const background = process.platform === 'darwin' && options.foreground !== true;
|
|
41
|
+
await spawnChromeDetached(chromePath, args, { background });
|
|
42
|
+
const devtoolsUrl = `http://127.0.0.1:${port}`;
|
|
43
|
+
await saveDevToolsConfig({
|
|
44
|
+
devtoolsUrl,
|
|
45
|
+
port,
|
|
46
|
+
userDataDir: userDataDirectory,
|
|
47
|
+
updatedAt: Date.now(),
|
|
48
|
+
targetUrl: target,
|
|
49
|
+
}).catch((error) => {
|
|
50
|
+
console.warn('Failed to persist DevTools config:', error);
|
|
51
|
+
});
|
|
52
|
+
if (options.cookieSync) {
|
|
53
|
+
await primeControlledChromeCookies({
|
|
54
|
+
devtoolsUrl,
|
|
55
|
+
targetUrl: target,
|
|
56
|
+
reload: true,
|
|
57
|
+
context: 'new-window',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return { port, userDataDir: userDataDirectory, devtoolsUrl };
|
|
61
|
+
}
|
|
62
|
+
export function prepareChromeLaunch(platform, chromePath, chromeArgs, options = {}) {
|
|
63
|
+
const background = Boolean(options.background);
|
|
64
|
+
if (platform === 'darwin' && background) {
|
|
65
|
+
const appTarget = deriveMacChromeApplication(chromePath) ?? 'Google Chrome';
|
|
66
|
+
const args = ['-g', '-n', '-a', appTarget];
|
|
67
|
+
if (chromeArgs.length > 0) {
|
|
68
|
+
args.push('--args', ...chromeArgs);
|
|
69
|
+
}
|
|
70
|
+
return { command: 'open', args };
|
|
71
|
+
}
|
|
72
|
+
return { command: chromePath, args: chromeArgs };
|
|
73
|
+
}
|
|
74
|
+
export async function spawnChromeDetached(chromePath, chromeArgs, options = {}) {
|
|
75
|
+
const spec = prepareChromeLaunch(process.platform, chromePath, chromeArgs, options);
|
|
76
|
+
await new Promise((resolve, reject) => {
|
|
77
|
+
const child = spawn(spec.command, spec.args, {
|
|
78
|
+
detached: true,
|
|
79
|
+
stdio: 'ignore',
|
|
80
|
+
});
|
|
81
|
+
child.once('error', (error) => reject(error));
|
|
82
|
+
child.once('spawn', () => {
|
|
83
|
+
child.unref();
|
|
84
|
+
resolve();
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function deriveMacChromeApplication(chromePath) {
|
|
89
|
+
let candidate = chromePath;
|
|
90
|
+
for (let depth = 0; depth < 4; depth += 1) {
|
|
91
|
+
if (candidate.endsWith('.app')) {
|
|
92
|
+
return candidate;
|
|
93
|
+
}
|
|
94
|
+
const parent = path.dirname(candidate);
|
|
95
|
+
if (parent === candidate) {
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
candidate = parent;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=launch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../../src/runtime/chrome/launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,kBAAkB,GAAG,8DAA8D,CAAC;AAE1F,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,UAAoC,EAAE;IACvF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,kBAAkB,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,mDAAmD,UAAU,wDAAwD,CACtH,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC;IAChF,MAAM,mBAAmB,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAc,EACd,OAAyF;IAEzF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,kBAAkB,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,mDAAmD,UAAU,wDAAwD,CACtH,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC;IACpG,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3F,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,MAAM,IAAI,GAAG;QACX,2BAA2B,IAAI,EAAE;QACjC,mBAAmB,iBAAiB,EAAE;QACtC,gBAAgB;QAChB,4BAA4B;QAC5B,iCAAiC;QACjC,kCAAkC;QAClC,4BAA4B;QAC5B,cAAc;QACd,MAAM;KACP,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC;IAChF,MAAM,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,oBAAoB,IAAI,EAAE,CAAC;IAC/C,MAAM,kBAAkB,CAAC;QACvB,WAAW;QACX,IAAI;QACJ,WAAW,EAAE,iBAAiB;QAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,4BAA4B,CAAC;YACjC,WAAW;YACX,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAyB,EACzB,UAAkB,EAClB,UAAoB,EACpB,UAAoC,EAAE;IAEtC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,QAAQ,IAAI,UAAU,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,0BAA0B,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC;QAC5E,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,UAAoB,EACpB,UAAoC,EAAE;IAEtC,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACpF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;YAC3C,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CAAC,UAAkB;IACpD,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM;QACR,CAAC;QACD,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Browser as PuppeteerBrowser, Page as PuppeteerPage } from 'puppeteer';
|
|
2
|
+
export declare function connectPuppeteerBrowser(puppeteer: typeof import('puppeteer').default, browserURL: string, attempts: number): Promise<PuppeteerBrowser | null>;
|
|
3
|
+
export declare function resolvePuppeteerPage(browser: PuppeteerBrowser, targetUrl: string): Promise<PuppeteerPage | null>;
|
|
4
|
+
export declare function navigatePuppeteerPage(page: PuppeteerPage, targetUrl: string, attempts?: number): Promise<boolean>;
|
|
5
|
+
export declare function waitForPageReady(page: PuppeteerPage): Promise<void>;
|
|
6
|
+
export declare function attemptPuppeteerReload(page: PuppeteerPage): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=puppeteer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puppeteer.d.ts","sourceRoot":"","sources":["../../../../src/runtime/chrome/puppeteer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,gBAAgB,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AAWpF,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,cAAc,WAAW,EAAE,OAAO,EAC7C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAoBlC;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAmB/B;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,SAAI,GACX,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAYzE;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAM/E"}
|