jumpy-lion 0.0.1

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.
Files changed (58) hide show
  1. package/dist/browser-controller.d.ts +36 -0
  2. package/dist/browser-controller.d.ts.map +1 -0
  3. package/dist/browser-controller.js +84 -0
  4. package/dist/browser-controller.js.map +1 -0
  5. package/dist/browser-plugin.d.ts +56 -0
  6. package/dist/browser-plugin.d.ts.map +1 -0
  7. package/dist/browser-plugin.js +149 -0
  8. package/dist/browser-plugin.js.map +1 -0
  9. package/dist/browser-process.d.ts +10 -0
  10. package/dist/browser-process.d.ts.map +1 -0
  11. package/dist/browser-process.js +65 -0
  12. package/dist/browser-process.js.map +1 -0
  13. package/dist/browser-profiles/chrome/create.d.ts +5 -0
  14. package/dist/browser-profiles/chrome/create.d.ts.map +1 -0
  15. package/dist/browser-profiles/chrome/create.js +22 -0
  16. package/dist/browser-profiles/chrome/create.js.map +1 -0
  17. package/dist/browser-profiles/chrome/default.d.ts +175 -0
  18. package/dist/browser-profiles/chrome/default.d.ts.map +1 -0
  19. package/dist/browser-profiles/chrome/default.js +175 -0
  20. package/dist/browser-profiles/chrome/default.js.map +1 -0
  21. package/dist/browser-profiles/index.d.ts +3 -0
  22. package/dist/browser-profiles/index.d.ts.map +1 -0
  23. package/dist/browser-profiles/index.js +3 -0
  24. package/dist/browser-profiles/index.js.map +1 -0
  25. package/dist/crawler.d.ts +22 -0
  26. package/dist/crawler.d.ts.map +1 -0
  27. package/dist/crawler.js +42 -0
  28. package/dist/crawler.js.map +1 -0
  29. package/dist/events.d.ts +3 -0
  30. package/dist/events.d.ts.map +1 -0
  31. package/dist/events.js +3 -0
  32. package/dist/events.js.map +1 -0
  33. package/dist/index.d.ts +4 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +4 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/launcher-wrap.d.ts +10 -0
  38. package/dist/launcher-wrap.d.ts.map +1 -0
  39. package/dist/launcher-wrap.js +11 -0
  40. package/dist/launcher-wrap.js.map +1 -0
  41. package/dist/page.d.ts +79 -0
  42. package/dist/page.d.ts.map +1 -0
  43. package/dist/page.js +304 -0
  44. package/dist/page.js.map +1 -0
  45. package/dist/proxy/anonymize-proxy.d.ts +4 -0
  46. package/dist/proxy/anonymize-proxy.d.ts.map +1 -0
  47. package/dist/proxy/anonymize-proxy.js +35 -0
  48. package/dist/proxy/anonymize-proxy.js.map +1 -0
  49. package/dist/proxy/proxy-server.d.ts +2 -0
  50. package/dist/proxy/proxy-server.d.ts.map +1 -0
  51. package/dist/proxy/proxy-server.js +13 -0
  52. package/dist/proxy/proxy-server.js.map +1 -0
  53. package/dist/tsconfig.build.tsbuildinfo +1 -0
  54. package/dist/utils.d.ts +3 -0
  55. package/dist/utils.d.ts.map +1 -0
  56. package/dist/utils.js +7 -0
  57. package/dist/utils.js.map +1 -0
  58. package/package.json +79 -0
@@ -0,0 +1,36 @@
1
+ import type { Options } from 'chrome-remote-interface';
2
+ import { BrowserController } from 'crawlee';
3
+ import type { CdpLauncher, LaunchReturn } from './launcher-wrap.js';
4
+ import type { Cookie } from './page.js';
5
+ import CdpPage from './page.js';
6
+ export type NewPageResult = CdpPage;
7
+ export default class CDPBrowserController extends BrowserController<CdpLauncher, // Library (CDP doesn't have a specific type)
8
+ Options, // LaunchOptions
9
+ LaunchReturn, // LaunchResult (CDP client)
10
+ {}, // NewPageOptions (empty as there are no specific options)
11
+ NewPageResult> {
12
+ private client?;
13
+ initialize(): Promise<void>;
14
+ /**
15
+ * @private
16
+ */
17
+ protected _close(): Promise<void>;
18
+ /**
19
+ * @private
20
+ */
21
+ protected _kill(): Promise<void>;
22
+ /**
23
+ * @private
24
+ */
25
+ protected _newPage(): Promise<NewPageResult>;
26
+ /**
27
+ * @private
28
+ */
29
+ protected _setCookies(page: NewPageResult, cookies: Cookie[]): Promise<void>;
30
+ /**
31
+ * @private
32
+ */
33
+ protected _getCookies(page: NewPageResult): Promise<Cookie[]>;
34
+ normalizeProxyOptions(_proxyUrl: string | undefined, _pageOptions: any): Record<string, unknown>;
35
+ }
36
+ //# sourceMappingURL=browser-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-controller.d.ts","sourceRoot":"","sources":["../src/browser-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAS,MAAM,SAAS,CAAC;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,OAAO,MAAM,WAAW,CAAC;AAIhC,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,iBAAiB,CAC/D,WAAW,EAAE,6CAA6C;AAC1D,OAAO,EAAE,gBAAgB;AACzB,YAAY,EAAE,4BAA4B;AAC1C,EAAE,EAAE,0DAA0D;AAC9D,aAAa,CAChB;IAEG,OAAO,CAAC,MAAM,CAAC,CAAa;IAEtB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;OAEG;cACa,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvC;;OAEG;cACa,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtC;;OAEG;cACa,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAuBlD;;OAEG;cACa,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlF;;OAEG;cACa,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAS1D,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAE5G"}
@@ -0,0 +1,84 @@
1
+ import CDP from 'chrome-remote-interface';
2
+ import { BrowserController, utils } from 'crawlee';
3
+ import { PAGE_CLOSED } from './events.js';
4
+ import CdpPage from './page.js';
5
+ export default class CDPBrowserController extends BrowserController {
6
+ constructor() {
7
+ super(...arguments);
8
+ Object.defineProperty(this, "client", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: void 0
13
+ });
14
+ }
15
+ async initialize() {
16
+ this.client = await CDP({ port: this.launchContext.debuggingPort });
17
+ const { Network, Page } = this.client;
18
+ await Network.enable();
19
+ await Page.enable();
20
+ }
21
+ /**
22
+ * @private
23
+ */
24
+ async _close() {
25
+ // @TODO:
26
+ // @ts-expect-error Fix types
27
+ this.launchContext.process.close();
28
+ await utils.sleep(5000);
29
+ }
30
+ /**
31
+ * @private
32
+ */
33
+ async _kill() {
34
+ // @TODO:
35
+ // @ts-expect-error Fix types
36
+ this.launchContext.process.kill();
37
+ }
38
+ /**
39
+ * @private
40
+ */
41
+ async _newPage() {
42
+ if (!this.client) {
43
+ await this.initialize();
44
+ }
45
+ const { Target } = this.client;
46
+ const { targetId } = await Target.createTarget({ url: 'about:blank' });
47
+ const session = await CDP({ target: targetId, port: this.launchContext.debuggingPort });
48
+ await session.Network.enable();
49
+ await session.Page.enable();
50
+ const { targetInfos } = await Target.getTargets();
51
+ const pages = targetInfos.filter((target) => target.type === 'page' && !target.url.includes('chrome://'));
52
+ await Target.activateTarget({ targetId: pages[pages.length - 1].targetId });
53
+ const page = new CdpPage(session);
54
+ page.once(PAGE_CLOSED, () => {
55
+ this.activePages -= 1;
56
+ });
57
+ return page;
58
+ }
59
+ /**
60
+ * @private
61
+ */
62
+ async _setCookies(page, cookies) {
63
+ try {
64
+ await page.setCookies(cookies);
65
+ }
66
+ catch (e) {
67
+ throw new Error(`Could not set cookies! ${e.message}`);
68
+ }
69
+ }
70
+ /**
71
+ * @private
72
+ */
73
+ async _getCookies(page) {
74
+ if (!page.getCookies) {
75
+ return [];
76
+ }
77
+ const cookies = await page?.getCookies();
78
+ return cookies || [];
79
+ }
80
+ // @ts-expect-error
81
+ normalizeProxyOptions(_proxyUrl, _pageOptions) {
82
+ }
83
+ }
84
+ //# sourceMappingURL=browser-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-controller.js","sourceRoot":"","sources":["../src/browser-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { BrowserPlugin, type LaunchContext } from 'crawlee';
2
+ import type { NewPageResult } from './browser-controller.js';
3
+ import CDPBrowserController from './browser-controller.js';
4
+ import { CdpLauncher, LaunchReturn } from './launcher-wrap.js';
5
+ type Library = CdpLauncher;
6
+ type LaunchResult = LaunchReturn;
7
+ interface NewPageOptions {
8
+ }
9
+ interface LaunchBrowserOptions {
10
+ browserType: string;
11
+ useIncognitoPages: boolean;
12
+ proxyUrl?: string;
13
+ }
14
+ export default class CDPBrowserPlugin extends BrowserPlugin<Library, LaunchBrowserOptions, LaunchResult, NewPageOptions, NewPageResult> {
15
+ /**
16
+ */
17
+ protected _addProxyToLaunchOptions(): Promise<void>;
18
+ /**
19
+ * Determines if the browser is Chromium-based.
20
+ *
21
+ * @private
22
+ */
23
+ protected _isChromiumBasedBrowser(launchContext: LaunchContext<Library, LaunchBrowserOptions, LaunchResult, NewPageOptions, NewPageResult>): boolean;
24
+ /**
25
+ * Launches the browser using Chrome Remote Interface (CDP).
26
+ *
27
+ * @private
28
+ */
29
+ protected _launch(launchContext: LaunchContext<Library, LaunchBrowserOptions, LaunchResult, NewPageOptions, NewPageResult>): Promise<LaunchResult>;
30
+ /**
31
+ * Creates a new browser controller.
32
+ *
33
+ * @private
34
+ */
35
+ protected _createController(): CDPBrowserController;
36
+ /**
37
+ * Launches a browser with a new profile.
38
+ *
39
+ * @private
40
+ */
41
+ private _launchBrowser;
42
+ /**
43
+ * Waits for a port to be available.
44
+ *
45
+ * @private
46
+ */
47
+ private _waitForPort;
48
+ /**
49
+ * Finds a free port to use.
50
+ *
51
+ * @private
52
+ */
53
+ private _findFreePort;
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=browser-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-plugin.d.ts","sourceRoot":"","sources":["../src/browser-plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAO,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI/D,KAAK,OAAO,GAAG,WAAW,CAAC;AAC3B,KAAK,YAAY,GAAG,YAAY,CAAC;AACjC,UAAU,cAAc;CAAI;AAC5B,UAAU,oBAAoB;IAAG,WAAW,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AAErG,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAAa,CACvD,OAAO,EACP,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,aAAa,CAChB;IACG;OACG;cACa,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzD;;;;OAIG;IACH,SAAS,CAAC,uBAAuB,CAC7B,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,GACzG,OAAO;IAKV;;;;OAIG;cACa,OAAO,CACnB,aAAa,EAAE,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,GACzG,OAAO,CAAC,YAAY,CAAC;IAuCxB;;;;OAIG;IAGH,SAAS,CAAC,iBAAiB,IAAI,oBAAoB;IAMnD;;;;OAIG;YACW,cAAc;IA2B5B;;;;OAIG;YACW,YAAY;IAmB1B;;;;OAIG;YACW,aAAa;CAsB9B"}
@@ -0,0 +1,149 @@
1
+ import net from 'net';
2
+ import { Browser } from '@puppeteer/browsers';
3
+ import { BrowserPlugin, log } from 'crawlee';
4
+ import CDPBrowserController from './browser-controller.js';
5
+ import { launchChromeBrowserWithNewProfile } from './browser-process.js';
6
+ import { CdpLauncher } from './launcher-wrap.js';
7
+ import { anonymizeProxySugar } from './proxy/anonymize-proxy.js';
8
+ export default class CDPBrowserPlugin extends BrowserPlugin {
9
+ /**
10
+ */
11
+ async _addProxyToLaunchOptions() {
12
+ // Do nothing; we use proxy launch arg
13
+ }
14
+ /**
15
+ * Determines if the browser is Chromium-based.
16
+ *
17
+ * @private
18
+ */
19
+ _isChromiumBasedBrowser(launchContext) {
20
+ const { browserType } = launchContext.launchOptions;
21
+ return browserType !== Browser.FIREFOX; // Assume non-Firefox is Chromium-based
22
+ }
23
+ /**
24
+ * Launches the browser using Chrome Remote Interface (CDP).
25
+ *
26
+ * @private
27
+ */
28
+ async _launch(launchContext) {
29
+ const { launchOptions, useIncognitoPages, proxyUrl } = launchContext;
30
+ if (!launchOptions.browserType) {
31
+ launchOptions.browserType = Browser.CHROME;
32
+ }
33
+ let browser;
34
+ launchOptions.useIncognitoPages = useIncognitoPages;
35
+ const [anonymizedProxyUrl, close] = await anonymizeProxySugar(proxyUrl);
36
+ if (anonymizedProxyUrl) {
37
+ launchOptions.proxyUrl = anonymizedProxyUrl;
38
+ }
39
+ const debuggingPort = await this._findFreePort(9233);
40
+ const browserProcess = await this._launchBrowser(debuggingPort, launchOptions);
41
+ try {
42
+ const cdpLauncher = new CdpLauncher();
43
+ browser = await cdpLauncher.launch({ port: debuggingPort });
44
+ if (anonymizedProxyUrl) {
45
+ browser.on('close', async () => {
46
+ await close();
47
+ });
48
+ }
49
+ }
50
+ catch (error) {
51
+ await close();
52
+ throw error;
53
+ }
54
+ launchContext.debuggingPort = debuggingPort;
55
+ launchContext.process = browserProcess;
56
+ return browser;
57
+ }
58
+ /**
59
+ * Creates a new browser controller.
60
+ *
61
+ * @private
62
+ */
63
+ // @TODO:
64
+ // @ts-expect-error Fix types
65
+ _createController() {
66
+ // @TODO:
67
+ // @ts-expect-error Fix types
68
+ return new CDPBrowserController(this);
69
+ }
70
+ /**
71
+ * Launches a browser with a new profile.
72
+ *
73
+ * @private
74
+ */
75
+ async _launchBrowser(debuggingPort, launchOptions) {
76
+ const { proxyUrl, browserType } = launchOptions;
77
+ let browserProcess;
78
+ switch (browserType) {
79
+ case Browser.CHROME: {
80
+ browserProcess = await launchChromeBrowserWithNewProfile({ debuggingPort, anonymizedProxyUrl: proxyUrl });
81
+ break;
82
+ }
83
+ default: {
84
+ throw new Error(`No browser found with this type: ${browserType}!`);
85
+ }
86
+ }
87
+ return new Promise((resolve, reject) => {
88
+ this._waitForPort(debuggingPort)
89
+ .then(() => {
90
+ log.info(`Browser is ready on port ${debuggingPort}`);
91
+ resolve(browserProcess);
92
+ })
93
+ .catch((err) => {
94
+ log.error(`Failed to connect to browser on port: ${debuggingPort}`, err);
95
+ reject(new Error(`Failed to connect to browser on port: ${debuggingPort}`));
96
+ });
97
+ });
98
+ }
99
+ /**
100
+ * Waits for a port to be available.
101
+ *
102
+ * @private
103
+ */
104
+ async _waitForPort(port, timeout = 30000, retryDelay = 500) {
105
+ const startTime = Date.now();
106
+ return new Promise((resolve, reject) => {
107
+ (function tryConnect() {
108
+ const socket = net.createConnection(port, '127.0.0.1');
109
+ socket.on('connect', () => {
110
+ socket.end();
111
+ resolve(true);
112
+ }).on('error', (_err) => {
113
+ if (Date.now() - startTime > timeout) {
114
+ reject(new Error(`Timeout waiting for port ${port}`));
115
+ }
116
+ else {
117
+ setTimeout(tryConnect, retryDelay); // Retry after a delay
118
+ }
119
+ });
120
+ }());
121
+ });
122
+ }
123
+ /**
124
+ * Finds a free port to use.
125
+ *
126
+ * @private
127
+ */
128
+ async _findFreePort(startingPort) {
129
+ return new Promise((resolve, reject) => {
130
+ const server = net.createServer();
131
+ server.on('error', (err) => {
132
+ if (err.code === 'EADDRINUSE') {
133
+ this._findFreePort(startingPort + 1).then(resolve).catch(reject); // Port is in use, try the next one
134
+ }
135
+ else {
136
+ reject(err);
137
+ }
138
+ });
139
+ server.on('listening', () => {
140
+ const { port } = server.address();
141
+ server.close(() => {
142
+ resolve(port);
143
+ });
144
+ });
145
+ server.listen(startingPort, '127.0.0.1');
146
+ });
147
+ }
148
+ }
149
+ //# sourceMappingURL=browser-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-plugin.js","sourceRoot":"","sources":["../src/browser-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface LaunchBrowserOptions {
2
+ anonymizedProxyUrl?: string;
3
+ debuggingPort?: number;
4
+ windowWidth?: number;
5
+ windowHeight?: number;
6
+ }
7
+ export declare const launchBrowserWithNewProfile: (executablePath: string, options?: LaunchBrowserOptions) => Promise<import("@puppeteer/browsers").Process>;
8
+ export declare const createTempUserDataDir: () => Promise<string>;
9
+ export declare const launchChromeBrowserWithNewProfile: (options?: LaunchBrowserOptions) => Promise<import("@puppeteer/browsers").Process>;
10
+ //# sourceMappingURL=browser-process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-process.d.ts","sourceRoot":"","sources":["../src/browser-process.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,oBAAoB;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AACD,eAAO,MAAM,2BAA2B,mBAA0B,MAAM,YAAW,oBAAoB,mDA6CtG,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAa,OAAO,CAAC,MAAM,CAK5D,CAAA;AAED,eAAO,MAAM,iCAAiC,aAAmB,oBAAoB,mDAIpF,CAAC"}
@@ -0,0 +1,65 @@
1
+ import fs from 'fs/promises';
2
+ import os from 'os';
3
+ import path from 'path';
4
+ import { log } from '@crawlee/core';
5
+ import { Browser, ChromeReleaseChannel, computeSystemExecutablePath, launch } from "@puppeteer/browsers";
6
+ import { createChromeProfile } from "./browser-profiles/index.js";
7
+ export const launchBrowserWithNewProfile = async (executablePath, options = {}) => {
8
+ const { anonymizedProxyUrl, debuggingPort, windowWidth = 1920, windowHeight = 1080 } = options;
9
+ try {
10
+ // Create a unique temporary directory for the browser's user data
11
+ const userDataDir = await createTempUserDataDir();
12
+ await createChromeProfile(userDataDir);
13
+ // Construct the browser launch command
14
+ const browserArgs = [
15
+ `--remote-debugging-port=${debuggingPort}`,
16
+ `--user-data-dir=${userDataDir}`,
17
+ "--no-sandbox",
18
+ "--disable-notifications",
19
+ "--start-maximized",
20
+ "--no-first-run",
21
+ "--start-fullscreen",
22
+ "--no-default-browser-check",
23
+ "--disable-infobars",
24
+ "--disable-features=IsolateOrigins,site-per-process",
25
+ ];
26
+ if (anonymizedProxyUrl) {
27
+ browserArgs.push(`--proxy-server="${anonymizedProxyUrl}"`);
28
+ }
29
+ if (windowWidth && windowHeight) {
30
+ browserArgs.push(`--window-size=${windowWidth},${windowHeight}`);
31
+ }
32
+ log.debug(`Launching browser with user data dir: ${userDataDir}`);
33
+ const browserProcess = launch({
34
+ executablePath,
35
+ args: browserArgs,
36
+ onExit: async () => {
37
+ try {
38
+ await fs.rm(userDataDir, { recursive: true, force: true });
39
+ }
40
+ catch (e) {
41
+ log.warning(`Could not delete browser profile dir: ${e.message}`);
42
+ }
43
+ },
44
+ });
45
+ return browserProcess;
46
+ }
47
+ catch (error) {
48
+ log.error(`Error launching the browser: ${error}`);
49
+ throw new Error(`Error launching the browser: ${error}`);
50
+ }
51
+ };
52
+ export const createTempUserDataDir = async () => {
53
+ const tempDirPrefix = path.join(os.tmpdir(), 'browser_');
54
+ const userDataDir = await fs.mkdtemp(tempDirPrefix);
55
+ return userDataDir;
56
+ };
57
+ export const launchChromeBrowserWithNewProfile = async (options = {}) => {
58
+ const executablePath = computeSystemExecutablePath({ browser: Browser.CHROME, channel: ChromeReleaseChannel.STABLE });
59
+ return launchBrowserWithNewProfile(executablePath, options);
60
+ };
61
+ // export const launchBraveBrowserWithNewProfile = async (options: LaunchBrowserOptions = {}) => {
62
+ // const executablePath = getBraveExecutablePath();
63
+ // return launchBrowserWithNewProfile(executablePath, options);
64
+ // };
65
+ //# sourceMappingURL=browser-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-process.js","sourceRoot":"","sources":["../src/browser-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const modifyChromeProfile: (profile: any, profileOptions?: any) => any;
2
+ export declare function createChromeProfile(profilePath: string, profileOptions?: {
3
+ locale: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/create.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB,YAAa,GAAG,mBAAkB,GAAG,QAMpE,CAAA;AACD,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAYjH"}
@@ -0,0 +1,22 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import { DEFAULT_PROFILE } from './default.js';
4
+ // Preparation for modifying the browser profile based on options
5
+ // @TODO: Implement
6
+ export const modifyChromeProfile = (profile, profileOptions = {}) => {
7
+ if (profileOptions.locale) {
8
+ return profile;
9
+ }
10
+ return profile;
11
+ };
12
+ export async function createChromeProfile(profilePath, profileOptions) {
13
+ if (!profilePath) {
14
+ throw new Error("Profile path cannot be empty");
15
+ }
16
+ // Create the Preferences file
17
+ const preferencesPath = path.join(profilePath, 'Default', 'Preferences');
18
+ await fs.mkdir(path.dirname(preferencesPath), { recursive: true });
19
+ const preferences = profileOptions ? modifyChromeProfile(DEFAULT_PROFILE, profileOptions) : DEFAULT_PROFILE;
20
+ await fs.writeFile(preferencesPath, JSON.stringify(preferences, null, 2));
21
+ }
22
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,iEAAiE;AACjE,mBAAmB;AACnB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAY,EAAE,iBAAsB,EAAE,EAAE,EAAE;IAC1E,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,OAAO,CAAA;IAClB,CAAC;IACD,OAAO,OAAO,CAAA;AAElB,CAAC,CAAA;AACD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB,EAAE,cAAmC;IAC9F,IAAG,CAAC,WAAW,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IACD,8BAA8B;IAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACzE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,cAAc,CAAA,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAA,CAAC,CAAC,eAAe,CAAC;IAE1G,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,CAAC"}
@@ -0,0 +1,175 @@
1
+ export declare const DEFAULT_PROFILE: {
2
+ distribution: {
3
+ import_bookmarks: boolean;
4
+ import_history: boolean;
5
+ import_search_engine: boolean;
6
+ make_chrome_default_for_user: boolean;
7
+ skip_first_run_ui: boolean;
8
+ suppress_first_run_bubble: boolean;
9
+ suppress_first_run_default_browser_prompt: boolean;
10
+ };
11
+ default_apps_install_state: number;
12
+ default_search_provider: {
13
+ choice_screen_completion_timestamp: string;
14
+ choice_screen_completion_version: string;
15
+ choice_screen_random_shuffle_seed: string;
16
+ choice_screen_shuffle_milestone: number;
17
+ guid: string;
18
+ keywords_use_extended_list: boolean;
19
+ synced_guid: string;
20
+ };
21
+ browser: {
22
+ app_window_placement: {
23
+ DevToolsApp: {
24
+ always_on_top: boolean;
25
+ bottom: number;
26
+ left: number;
27
+ maximized: boolean;
28
+ right: number;
29
+ top: number;
30
+ work_area_bottom: number;
31
+ work_area_left: number;
32
+ work_area_right: number;
33
+ work_area_top: number;
34
+ };
35
+ _crx_mdpkiolbdkhdjpekfbkbmhigcaggjagi: {
36
+ bottom: number;
37
+ left: number;
38
+ maximized: boolean;
39
+ right: number;
40
+ top: number;
41
+ };
42
+ };
43
+ back_shortcut_bubble_shown_count: number;
44
+ clear_data: {
45
+ browsing_history_basic: boolean;
46
+ cache_basic: boolean;
47
+ cookies_basic: boolean;
48
+ hosted_apps_data: boolean;
49
+ site_settings: boolean;
50
+ time_period_basic: number;
51
+ };
52
+ has_seen_welcome_page: boolean;
53
+ last_clear_browsing_data_tab: number;
54
+ show_fullscreen_toolbar: boolean;
55
+ theme: {
56
+ color_variant: number;
57
+ user_color: number;
58
+ };
59
+ window_placement: {
60
+ always_on_top: boolean;
61
+ bottom: number;
62
+ left: number;
63
+ maximized: boolean;
64
+ right: number;
65
+ top: number;
66
+ work_area_bottom: number;
67
+ work_area_left: number;
68
+ work_area_right: number;
69
+ work_area_top: number;
70
+ };
71
+ window_placement_popup: {
72
+ bottom: number;
73
+ left: number;
74
+ maximized: boolean;
75
+ right: number;
76
+ top: number;
77
+ work_area_bottom: number;
78
+ work_area_left: number;
79
+ work_area_right: number;
80
+ work_area_top: number;
81
+ };
82
+ };
83
+ profile: {
84
+ avatar_index: number;
85
+ background_password_check: {
86
+ check_fri_weight: number;
87
+ check_interval: string;
88
+ check_mon_weight: number;
89
+ check_sat_weight: number;
90
+ check_sun_weight: number;
91
+ check_thu_weight: number;
92
+ check_tue_weight: number;
93
+ check_wed_weight: number;
94
+ next_check_time: string;
95
+ };
96
+ blacklisted_credentials_stripped: boolean;
97
+ content_settings: {
98
+ did_migrate_adaptive_notification_quieting_to_cpss: boolean;
99
+ disable_quiet_permission_ui_time: {
100
+ notifications: string;
101
+ };
102
+ enable_cpss: {
103
+ notifications: boolean;
104
+ };
105
+ enable_quiet_permission_ui: {
106
+ notifications: boolean;
107
+ };
108
+ enable_quiet_permission_ui_enabling_method: {
109
+ notifications: number;
110
+ };
111
+ pref_version: number;
112
+ };
113
+ };
114
+ session: {
115
+ restore_on_startup: number;
116
+ };
117
+ bookmark_bar: {
118
+ show_on_all_tabs: boolean;
119
+ };
120
+ sync_promo: {
121
+ user_skipped: boolean;
122
+ show_on_first_run_allowed: boolean;
123
+ };
124
+ alternate_error_pages: {
125
+ enabled: boolean;
126
+ };
127
+ safebrowsing: {
128
+ advanced_protection_last_refresh: string;
129
+ enabled: boolean;
130
+ event_timestamps: {};
131
+ metrics_last_log_time: string;
132
+ next_password_capture_event_log_time: string;
133
+ saw_interstitial_sber2: boolean;
134
+ scout_group_selected: boolean;
135
+ scout_reporting_enabled: boolean;
136
+ scout_reporting_enabled_when_deprecated: boolean;
137
+ unhandled_sync_password_reuses: {};
138
+ };
139
+ search: {
140
+ suggest_enabled: boolean;
141
+ };
142
+ privacy_sandbox: {
143
+ first_party_sets_data_access_allowed_initialized: boolean;
144
+ m1: {
145
+ ad_measurement_enabled: boolean;
146
+ consent_decision_made: boolean;
147
+ eea_notice_acknowledged: boolean;
148
+ fledge_enabled: boolean;
149
+ prompt_suppressed: number;
150
+ topics_enabled: boolean;
151
+ };
152
+ topics_consent: {
153
+ consent_given: boolean;
154
+ last_update_reason: number;
155
+ last_update_time: string;
156
+ text_at_last_update: string;
157
+ };
158
+ };
159
+ signin: {
160
+ allowed: boolean;
161
+ allowed_on_next_startup: boolean;
162
+ };
163
+ extensions: {
164
+ theme: {
165
+ use_system: boolean;
166
+ };
167
+ };
168
+ autofill: {
169
+ enabled: boolean;
170
+ };
171
+ intl: {
172
+ accept_languages: string;
173
+ };
174
+ };
175
+ //# sourceMappingURL=default.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../src/browser-profiles/chrome/default.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6K3B,CAAA"}