@minded-ai/mindedjs 2.0.18-beta-2 → 2.0.18-beta-3
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/localBrowserTask.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,oBAAoB,GAAG;IACjC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,0GAA0G;IAC1G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"localBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/localBrowserTask.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,oBAAoB,GAAG;IACjC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,0GAA0G;IAC1G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAgHhG;AAwBD,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAsB,IAAI,kBAOzB"}
|
|
@@ -58,86 +58,86 @@ async function getOrStartLocalCDP(opts) {
|
|
|
58
58
|
}
|
|
59
59
|
const { env } = opts;
|
|
60
60
|
const executablePath = playwright_1.chromium.executablePath();
|
|
61
|
-
const profileDir = path.join(__dirname,
|
|
61
|
+
const profileDir = path.join(__dirname, 'profile');
|
|
62
62
|
await fs.mkdir(profileDir, { recursive: true });
|
|
63
63
|
const userDataDir = (_a = opts.userDataDir) !== null && _a !== void 0 ? _a : profileDir;
|
|
64
64
|
const args = [
|
|
65
|
-
|
|
65
|
+
'--new-window',
|
|
66
66
|
`--user-data-dir=${userDataDir}`,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
67
|
+
...(process.env.HEADLESS === 'true' ? ['--headless'] : []),
|
|
68
|
+
'--disable-component-extensions-with-background-pages',
|
|
69
|
+
'--disable-background-networking',
|
|
70
|
+
'--disable-back-forward-cache',
|
|
71
|
+
'--disable-popup-blocking',
|
|
72
|
+
'--simulate-outdated-no-au="Tue, 31 Dec 2099 23:59:59 GMT"',
|
|
73
|
+
'--disable-renderer-backgrounding',
|
|
74
|
+
'--no-service-autorun',
|
|
75
|
+
'--disable-background-timer-throttling',
|
|
76
|
+
'--allow-legacy-extension-manifests',
|
|
77
|
+
'--allow-pre-commit-input',
|
|
78
|
+
'--log-level=2',
|
|
79
|
+
'--unsafely-disable-devtools-self-xss-warnings',
|
|
80
|
+
'--metrics-recording-only',
|
|
81
|
+
'--disable-window-activation',
|
|
82
|
+
'--disable-dev-shm-usage',
|
|
83
|
+
'--disable-backgrounding-occluded-windows',
|
|
84
|
+
'--disable-search-engine-choice-screen',
|
|
85
|
+
'--disable-print-preview',
|
|
86
|
+
'--disable-external-intent-requests',
|
|
87
|
+
'--disable-desktop-notifications',
|
|
88
|
+
'--disable-component-update',
|
|
89
|
+
'--generate-pdf-document-outline',
|
|
90
|
+
'--disable-focus-on-load',
|
|
91
|
+
'--disable-speech-api',
|
|
92
|
+
'--silent-debugger-extension-api',
|
|
93
|
+
'--suppress-message-center-popups',
|
|
94
|
+
'--disable-default-apps',
|
|
95
|
+
'--enable-network-information-downlink-max',
|
|
96
|
+
'--use-mock-keychain',
|
|
97
|
+
'--disable-ipc-flooding-protection',
|
|
98
|
+
'--safebrowsing-disable-auto-update',
|
|
99
|
+
'--install-autogenerated-theme=0,0,0',
|
|
100
|
+
'--disable-blink-features=AutomationControlled',
|
|
101
|
+
'--no-first-run',
|
|
102
|
+
'--extensions-on-chrome-urls',
|
|
103
|
+
'--ash-no-nudges',
|
|
104
|
+
'--no-pings',
|
|
105
|
+
'--test-type=gpu',
|
|
106
|
+
'--disable-client-side-phishing-detection',
|
|
107
|
+
'--password-store=basic',
|
|
108
|
+
'--enable-features=NetworkService,NetworkServiceInProcess',
|
|
109
|
+
'--disable-extensions-http-throttling',
|
|
110
|
+
'--disable-speech-synthesis-api',
|
|
111
|
+
'--no-default-browser-check',
|
|
112
|
+
'--disable-hang-monitor',
|
|
113
|
+
'--hide-crash-restore-bubble',
|
|
114
|
+
'--disable-domain-reliability',
|
|
115
|
+
'--export-tagged-pdf',
|
|
116
|
+
'--disable-sync',
|
|
117
|
+
'--disable-features=AcceptCHFrame,AutoExpandDetailsElement,AvoidUnnecessaryBeforeUnloadCheckSync,CertificateTransparencyComponentUpdater,DestroyProfileOnBrowserClose,DialMediaRouteProvider,ExtensionManifestV2Disabled,GlobalMediaControls,HttpsUpgrades,ImprovedCookieControls,LazyFrameLoading,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Translate,AutomationControlled,BackForwardCache,OptimizationHints,ProcessPerSiteUpToMainFrameThreshold,InterestFeedContentSuggestions,CalculateNativeWinOcclusion,HeavyAdPrivacyMitigations,PrivacySandboxSettings4,AutofillServerCommunication,CrashReporting,OverscrollHistoryNavigation,InfiniteSessionRestore,ExtensionDisableUnsupportedDeveloper',
|
|
118
|
+
'--disable-prompt-on-repost',
|
|
119
|
+
'--disable-infobars',
|
|
120
|
+
'--disable-datasaver-prompt',
|
|
121
|
+
'--noerrdialogs',
|
|
122
|
+
'--disable-breakpad',
|
|
123
|
+
'--disable-field-trial-config',
|
|
124
|
+
'--window-size=1920,1080',
|
|
125
|
+
'--window-position=0,0',
|
|
126
|
+
'--enable-extensions',
|
|
127
|
+
'--disable-extensions-file-access-check',
|
|
128
|
+
'--enable-extension-activity-logging',
|
|
129
129
|
`--remote-debugging-port=${port}`,
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
'--remote-debugging-address=0.0.0.0',
|
|
131
|
+
'about:blank',
|
|
132
132
|
];
|
|
133
133
|
const proc = (0, child_process_1.spawn)(executablePath, args, {
|
|
134
|
-
stdio: [
|
|
134
|
+
stdio: ['ignore', 'ignore', 'pipe'], // stderr is useful for debugging
|
|
135
135
|
env: { ...process.env, ...env },
|
|
136
136
|
});
|
|
137
|
-
proc.on(
|
|
137
|
+
proc.on('error', (error) => {
|
|
138
138
|
logger_1.logger.error({ message: 'Chromium error', error });
|
|
139
139
|
});
|
|
140
|
-
proc.on(
|
|
140
|
+
proc.on('exit', (code, signal) => {
|
|
141
141
|
logger_1.logger.error({ message: 'Chromium exited', code, signal });
|
|
142
142
|
localBrowserTask = null;
|
|
143
143
|
});
|
|
@@ -158,7 +158,7 @@ async function waitForCdpEndpoint(port, maxAttempts) {
|
|
|
158
158
|
const response = await fetch(`http://127.0.0.1:${port}/json/version`);
|
|
159
159
|
if (response.ok) {
|
|
160
160
|
const version = await response.json();
|
|
161
|
-
logger_1.logger.info({ message: `CDP endpoint ready on port ${port}`, version: version[
|
|
161
|
+
logger_1.logger.info({ message: `CDP endpoint ready on port ${port}`, version: version['Browser'] });
|
|
162
162
|
return;
|
|
163
163
|
}
|
|
164
164
|
}
|
|
@@ -176,9 +176,9 @@ function isLocalBrowserRunning() {
|
|
|
176
176
|
}
|
|
177
177
|
async function kill() {
|
|
178
178
|
if (localBrowserTask) {
|
|
179
|
-
localBrowserTask.proc.kill(
|
|
179
|
+
localBrowserTask.proc.kill('SIGTERM');
|
|
180
180
|
await (0, wait_1.wait)(300);
|
|
181
|
-
localBrowserTask.proc.kill(
|
|
181
|
+
localBrowserTask.proc.kill('SIGKILL');
|
|
182
182
|
localBrowserTask = null; // Reset the variable after killing the process
|
|
183
183
|
}
|
|
184
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/localBrowserTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,
|
|
1
|
+
{"version":3,"file":"localBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/localBrowserTask.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// getOrStartLocalCDP.ts
|
|
2
|
-
import { spawn, ChildProcess } from
|
|
3
|
-
import * as fs from
|
|
4
|
-
import * as path from
|
|
5
|
-
import { chromium } from
|
|
6
|
-
import { logger } from
|
|
7
|
-
import { wait } from
|
|
2
|
+
import { spawn, ChildProcess } from 'child_process';
|
|
3
|
+
import * as fs from 'fs/promises';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { chromium } from 'playwright';
|
|
6
|
+
import { logger } from '../utils/logger';
|
|
7
|
+
import { wait } from '../utils/wait';
|
|
8
8
|
|
|
9
9
|
let localBrowserTask: {
|
|
10
10
|
cdpUrl: string;
|
|
@@ -30,10 +30,7 @@ export type StartChromiumOptions = {
|
|
|
30
30
|
* Launch Chromium with --remote-debugging-port=0 and return the CDP ws URL.
|
|
31
31
|
* Works with Chrome/Chromium/Chrome for Testing.
|
|
32
32
|
*/
|
|
33
|
-
export async function getOrStartLocalCDP(
|
|
34
|
-
opts: StartChromiumOptions
|
|
35
|
-
): Promise<{ cdpUrl: string }> {
|
|
36
|
-
|
|
33
|
+
export async function getOrStartLocalCDP(opts: StartChromiumOptions): Promise<{ cdpUrl: string }> {
|
|
37
34
|
if (localBrowserTask) {
|
|
38
35
|
return {
|
|
39
36
|
cdpUrl: localBrowserTask.cdpUrl,
|
|
@@ -44,91 +41,91 @@ export async function getOrStartLocalCDP(
|
|
|
44
41
|
|
|
45
42
|
const executablePath = chromium.executablePath();
|
|
46
43
|
|
|
47
|
-
const profileDir = path.join(__dirname,
|
|
44
|
+
const profileDir = path.join(__dirname, 'profile');
|
|
48
45
|
await fs.mkdir(profileDir, { recursive: true });
|
|
49
46
|
|
|
50
47
|
const userDataDir = opts.userDataDir ?? profileDir;
|
|
51
48
|
|
|
52
49
|
const args = [
|
|
53
|
-
|
|
50
|
+
'--new-window',
|
|
54
51
|
`--user-data-dir=${userDataDir}`,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
52
|
+
...(process.env.HEADLESS === 'true' ? ['--headless'] : []),
|
|
53
|
+
'--disable-component-extensions-with-background-pages',
|
|
54
|
+
'--disable-background-networking',
|
|
55
|
+
'--disable-back-forward-cache',
|
|
56
|
+
'--disable-popup-blocking',
|
|
57
|
+
'--simulate-outdated-no-au="Tue, 31 Dec 2099 23:59:59 GMT"',
|
|
58
|
+
'--disable-renderer-backgrounding',
|
|
59
|
+
'--no-service-autorun',
|
|
60
|
+
'--disable-background-timer-throttling',
|
|
61
|
+
'--allow-legacy-extension-manifests',
|
|
62
|
+
'--allow-pre-commit-input',
|
|
63
|
+
'--log-level=2',
|
|
64
|
+
'--unsafely-disable-devtools-self-xss-warnings',
|
|
65
|
+
'--metrics-recording-only',
|
|
66
|
+
'--disable-window-activation',
|
|
67
|
+
'--disable-dev-shm-usage',
|
|
68
|
+
'--disable-backgrounding-occluded-windows',
|
|
69
|
+
'--disable-search-engine-choice-screen',
|
|
70
|
+
'--disable-print-preview',
|
|
71
|
+
'--disable-external-intent-requests',
|
|
72
|
+
'--disable-desktop-notifications',
|
|
73
|
+
'--disable-component-update',
|
|
74
|
+
'--generate-pdf-document-outline',
|
|
75
|
+
'--disable-focus-on-load',
|
|
76
|
+
'--disable-speech-api',
|
|
77
|
+
'--silent-debugger-extension-api',
|
|
78
|
+
'--suppress-message-center-popups',
|
|
79
|
+
'--disable-default-apps',
|
|
80
|
+
'--enable-network-information-downlink-max',
|
|
81
|
+
'--use-mock-keychain',
|
|
82
|
+
'--disable-ipc-flooding-protection',
|
|
83
|
+
'--safebrowsing-disable-auto-update',
|
|
84
|
+
'--install-autogenerated-theme=0,0,0',
|
|
85
|
+
'--disable-blink-features=AutomationControlled',
|
|
86
|
+
'--no-first-run',
|
|
87
|
+
'--extensions-on-chrome-urls',
|
|
88
|
+
'--ash-no-nudges',
|
|
89
|
+
'--no-pings',
|
|
90
|
+
'--test-type=gpu',
|
|
91
|
+
'--disable-client-side-phishing-detection',
|
|
92
|
+
'--password-store=basic',
|
|
93
|
+
'--enable-features=NetworkService,NetworkServiceInProcess',
|
|
94
|
+
'--disable-extensions-http-throttling',
|
|
95
|
+
'--disable-speech-synthesis-api',
|
|
96
|
+
'--no-default-browser-check',
|
|
97
|
+
'--disable-hang-monitor',
|
|
98
|
+
'--hide-crash-restore-bubble',
|
|
99
|
+
'--disable-domain-reliability',
|
|
100
|
+
'--export-tagged-pdf',
|
|
101
|
+
'--disable-sync',
|
|
102
|
+
'--disable-features=AcceptCHFrame,AutoExpandDetailsElement,AvoidUnnecessaryBeforeUnloadCheckSync,CertificateTransparencyComponentUpdater,DestroyProfileOnBrowserClose,DialMediaRouteProvider,ExtensionManifestV2Disabled,GlobalMediaControls,HttpsUpgrades,ImprovedCookieControls,LazyFrameLoading,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Translate,AutomationControlled,BackForwardCache,OptimizationHints,ProcessPerSiteUpToMainFrameThreshold,InterestFeedContentSuggestions,CalculateNativeWinOcclusion,HeavyAdPrivacyMitigations,PrivacySandboxSettings4,AutofillServerCommunication,CrashReporting,OverscrollHistoryNavigation,InfiniteSessionRestore,ExtensionDisableUnsupportedDeveloper',
|
|
103
|
+
'--disable-prompt-on-repost',
|
|
104
|
+
'--disable-infobars',
|
|
105
|
+
'--disable-datasaver-prompt',
|
|
106
|
+
'--noerrdialogs',
|
|
107
|
+
'--disable-breakpad',
|
|
108
|
+
'--disable-field-trial-config',
|
|
109
|
+
'--window-size=1920,1080',
|
|
110
|
+
'--window-position=0,0',
|
|
111
|
+
'--enable-extensions',
|
|
112
|
+
'--disable-extensions-file-access-check',
|
|
113
|
+
'--enable-extension-activity-logging',
|
|
117
114
|
`--remote-debugging-port=${port}`,
|
|
118
|
-
|
|
119
|
-
|
|
115
|
+
'--remote-debugging-address=0.0.0.0',
|
|
116
|
+
'about:blank',
|
|
120
117
|
];
|
|
121
118
|
|
|
122
119
|
const proc = spawn(executablePath, args, {
|
|
123
|
-
stdio: [
|
|
120
|
+
stdio: ['ignore', 'ignore', 'pipe'], // stderr is useful for debugging
|
|
124
121
|
env: { ...process.env, ...env },
|
|
125
122
|
});
|
|
126
123
|
|
|
127
|
-
proc.on(
|
|
124
|
+
proc.on('error', (error) => {
|
|
128
125
|
logger.error({ message: 'Chromium error', error });
|
|
129
126
|
});
|
|
130
127
|
|
|
131
|
-
proc.on(
|
|
128
|
+
proc.on('exit', (code, signal) => {
|
|
132
129
|
logger.error({ message: 'Chromium exited', code, signal });
|
|
133
130
|
localBrowserTask = null;
|
|
134
131
|
});
|
|
@@ -156,7 +153,7 @@ async function waitForCdpEndpoint(port: number, maxAttempts: number): Promise<vo
|
|
|
156
153
|
const response = await fetch(`http://127.0.0.1:${port}/json/version`);
|
|
157
154
|
if (response.ok) {
|
|
158
155
|
const version = await response.json();
|
|
159
|
-
logger.info({ message: `CDP endpoint ready on port ${port}`, version: version[
|
|
156
|
+
logger.info({ message: `CDP endpoint ready on port ${port}`, version: version['Browser'] });
|
|
160
157
|
return;
|
|
161
158
|
}
|
|
162
159
|
} catch (error) {
|
|
@@ -175,9 +172,9 @@ export function isLocalBrowserRunning(): boolean {
|
|
|
175
172
|
|
|
176
173
|
export async function kill() {
|
|
177
174
|
if (localBrowserTask) {
|
|
178
|
-
localBrowserTask.proc.kill(
|
|
175
|
+
localBrowserTask.proc.kill('SIGTERM');
|
|
179
176
|
await wait(300);
|
|
180
|
-
localBrowserTask.proc.kill(
|
|
177
|
+
localBrowserTask.proc.kill('SIGKILL');
|
|
181
178
|
localBrowserTask = null; // Reset the variable after killing the process
|
|
182
179
|
}
|
|
183
|
-
}
|
|
180
|
+
}
|