extension-develop 3.0.0-next.9 → 3.1.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -16
- package/dist/215.js +546 -0
- package/dist/323.js +425 -0
- package/dist/419.js +44 -0
- package/dist/547.js +8444 -0
- package/dist/552.js +54 -0
- package/dist/928.js +416 -0
- package/dist/add-centralized-logger-script-background.js +3 -3
- package/dist/add-centralized-logger-script-content.js +4 -4
- package/dist/add-centralized-logger-script.js +18 -27
- package/dist/add-hmr-accept-code.js +3 -3
- package/dist/content-script-wrapper.js +114 -32
- package/dist/ensure-hmr-for-scripts.js +3 -3
- package/dist/extension-js-devtools/chrome/assets/logo.7dc70d61.png +0 -0
- package/dist/extension-js-devtools/chrome/background/service_worker.js +26 -0
- package/dist/extension-js-devtools/chrome/chrome_url_overrides/newtab.html +23 -0
- package/dist/extension-js-devtools/chrome/devtools/index.html +12 -0
- package/dist/extension-js-devtools/chrome/devtools/index.js +1 -0
- package/dist/extension-js-devtools/chrome/icons/logo.png +0 -0
- package/dist/extension-js-devtools/chrome/logo.png +0 -0
- package/dist/extension-js-devtools/chrome/manifest.json +44 -0
- package/dist/extension-js-devtools/chrome/pages/centralized-logger.css +2 -0
- package/dist/extension-js-devtools/chrome/pages/centralized-logger.html +12 -0
- package/dist/extension-js-devtools/chrome/pages/centralized-logger.js +16 -0
- package/dist/extension-js-devtools/chrome/pages/welcome.css +2 -0
- package/dist/extension-js-devtools/chrome/pages/welcome.html +11 -0
- package/dist/extension-js-devtools/chrome/pages/welcome.js +21 -0
- package/dist/extension-js-devtools/chrome/scripts/logger-client.js +1 -0
- package/dist/extension-js-devtools/chromium/assets/logo.7dc70d61.png +0 -0
- package/dist/extension-js-devtools/chromium/background/service_worker.js +26 -0
- package/dist/extension-js-devtools/chromium/chrome_url_overrides/newtab.html +23 -0
- package/dist/extension-js-devtools/chromium/devtools/index.html +12 -0
- package/dist/extension-js-devtools/chromium/devtools/index.js +1 -0
- package/dist/extension-js-devtools/chromium/icons/logo.png +0 -0
- package/dist/extension-js-devtools/chromium/logo.png +0 -0
- package/dist/extension-js-devtools/chromium/manifest.json +44 -0
- package/dist/extension-js-devtools/chromium/pages/centralized-logger.css +2 -0
- package/dist/extension-js-devtools/chromium/pages/centralized-logger.html +12 -0
- package/dist/extension-js-devtools/chromium/pages/centralized-logger.js +16 -0
- package/dist/extension-js-devtools/chromium/pages/welcome.css +2 -0
- package/dist/extension-js-devtools/chromium/pages/welcome.html +11 -0
- package/dist/extension-js-devtools/chromium/pages/welcome.js +21 -0
- package/dist/extension-js-devtools/chromium/scripts/logger-client.js +1 -0
- package/dist/extension-js-devtools/edge/assets/logo.7dc70d61.png +0 -0
- package/dist/extension-js-devtools/edge/background/service_worker.js +26 -0
- package/dist/extension-js-devtools/edge/chrome_url_overrides/newtab.html +23 -0
- package/dist/extension-js-devtools/edge/devtools/index.html +12 -0
- package/dist/extension-js-devtools/edge/devtools/index.js +1 -0
- package/dist/extension-js-devtools/edge/icons/logo.png +0 -0
- package/dist/extension-js-devtools/edge/logo.png +0 -0
- package/dist/extension-js-devtools/edge/manifest.json +44 -0
- package/dist/extension-js-devtools/edge/pages/centralized-logger.css +2 -0
- package/dist/extension-js-devtools/edge/pages/centralized-logger.html +12 -0
- package/dist/extension-js-devtools/edge/pages/centralized-logger.js +16 -0
- package/dist/extension-js-devtools/edge/pages/welcome.css +2 -0
- package/dist/extension-js-devtools/edge/pages/welcome.html +11 -0
- package/dist/extension-js-devtools/edge/pages/welcome.js +21 -0
- package/dist/extension-js-devtools/edge/scripts/logger-client.js +1 -0
- package/dist/extension-js-devtools/firefox/assets/logo.7dc70d61.png +0 -0
- package/dist/extension-js-devtools/firefox/background/scripts.js +26 -0
- package/dist/extension-js-devtools/firefox/devtools/index.html +12 -0
- package/dist/extension-js-devtools/firefox/devtools/index.js +1 -0
- package/dist/extension-js-devtools/firefox/icons/logo.png +0 -0
- package/dist/extension-js-devtools/firefox/logo.png +0 -0
- package/dist/extension-js-devtools/firefox/manifest.json +30 -0
- package/dist/extension-js-devtools/firefox/pages/centralized-logger.css +2 -0
- package/dist/extension-js-devtools/firefox/pages/centralized-logger.html +12 -0
- package/dist/extension-js-devtools/firefox/pages/centralized-logger.js +16 -0
- package/dist/extension-js-devtools/firefox/pages/welcome.css +2 -0
- package/dist/extension-js-devtools/firefox/pages/welcome.html +11 -0
- package/dist/extension-js-devtools/firefox/pages/welcome.js +21 -0
- package/dist/extension-js-devtools/firefox/scripts/logger-client.js +1 -0
- package/dist/main-world-bridge.js +109 -0
- package/dist/minimum-chromium-file.js +2 -3
- package/dist/minimum-firefox-file.js +2 -3
- package/dist/minimum-script-file.js +25 -1
- package/dist/module.js +132661 -13155
- package/dist/module.js.LICENSE.txt +24 -0
- package/dist/resolve-paths-loader.js +61 -102
- package/dist/warn-no-default-export.js +173 -10
- package/package.json +55 -49
- package/dist/930.js +0 -44
package/dist/323.js
ADDED
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.ids = [
|
|
3
|
+
"323"
|
|
4
|
+
];
|
|
5
|
+
exports.modules = {
|
|
6
|
+
"./webpack/plugin-browsers/run-chromium/chromium-launch/setup-cdp-after-launch.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
7
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
8
|
+
setupCdpAfterLaunch: ()=>setupCdpAfterLaunch
|
|
9
|
+
});
|
|
10
|
+
var messages = __webpack_require__("./webpack/plugin-browsers/browsers-lib/messages.ts");
|
|
11
|
+
var shared_utils = __webpack_require__("./webpack/plugin-browsers/browsers-lib/shared-utils.ts");
|
|
12
|
+
var banner = __webpack_require__("./webpack/plugin-browsers/browsers-lib/banner.ts");
|
|
13
|
+
var external_path_ = __webpack_require__("path");
|
|
14
|
+
var external_fs_ = __webpack_require__("fs");
|
|
15
|
+
async function deriveExtensionIdFromTargetsHelper(cdp, outPath, maxRetries = 20, backoffMs = 200) {
|
|
16
|
+
let expectedName;
|
|
17
|
+
try {
|
|
18
|
+
const manifest = JSON.parse(external_fs_.readFileSync(external_path_.join(outPath, 'manifest.json'), 'utf-8'));
|
|
19
|
+
expectedName = manifest?.name;
|
|
20
|
+
} catch {}
|
|
21
|
+
let retries = 0;
|
|
22
|
+
while(retries <= maxRetries){
|
|
23
|
+
try {
|
|
24
|
+
const targets = await cdp.getTargets();
|
|
25
|
+
if (expectedName) for (const t of targets || []){
|
|
26
|
+
const url = String(t?.url || '');
|
|
27
|
+
const type = String(t?.type || '');
|
|
28
|
+
if (!('service_worker' === type && url.startsWith('chrome-extension://'))) continue;
|
|
29
|
+
const targetId = t?.targetId;
|
|
30
|
+
if (targetId) try {
|
|
31
|
+
const sessionId = await cdp.attachToTarget(targetId);
|
|
32
|
+
if (!sessionId) continue;
|
|
33
|
+
await cdp.sendCommand('Runtime.enable', {}, sessionId);
|
|
34
|
+
const gotName = String(await cdp.evaluate(sessionId, '(()=>{try{return chrome.runtime.getManifest().name}catch(_){return null}})()'));
|
|
35
|
+
if (gotName && String(gotName) === expectedName) {
|
|
36
|
+
const gotIdStr = String(await cdp.evaluate(sessionId, '(()=>{try{return chrome.runtime.id}catch(_){return null}})()') || '');
|
|
37
|
+
if (gotIdStr && gotIdStr.length > 0) return gotIdStr;
|
|
38
|
+
}
|
|
39
|
+
} catch {}
|
|
40
|
+
}
|
|
41
|
+
for (const t of targets || []){
|
|
42
|
+
const url = String(t?.url || '');
|
|
43
|
+
const type = String(t?.type || '');
|
|
44
|
+
if (!url.startsWith('chrome-extension://')) continue;
|
|
45
|
+
const typeOk = [
|
|
46
|
+
'service_worker',
|
|
47
|
+
'background_page',
|
|
48
|
+
'worker'
|
|
49
|
+
].includes(type);
|
|
50
|
+
if (!typeOk) continue;
|
|
51
|
+
const match = url.match(/^chrome-extension:\/\/([^\/]+)/);
|
|
52
|
+
if (match && match[1]) return match[1];
|
|
53
|
+
}
|
|
54
|
+
} catch {}
|
|
55
|
+
await new Promise((r)=>setTimeout(r, backoffMs));
|
|
56
|
+
retries++;
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
var cdp_client = __webpack_require__("./webpack/plugin-browsers/run-chromium/chromium-source-inspection/cdp-client.ts");
|
|
61
|
+
var discovery = __webpack_require__("./webpack/plugin-browsers/run-chromium/chromium-source-inspection/discovery.ts");
|
|
62
|
+
async function connectToChromeCdp(cdpPort) {
|
|
63
|
+
let retries = 0;
|
|
64
|
+
const maxRetries = 60;
|
|
65
|
+
const backoffMs = 250;
|
|
66
|
+
while(retries < maxRetries){
|
|
67
|
+
const ready = await (0, discovery.z)(cdpPort);
|
|
68
|
+
if (ready) break;
|
|
69
|
+
retries++;
|
|
70
|
+
await new Promise((r)=>setTimeout(r, backoffMs));
|
|
71
|
+
}
|
|
72
|
+
const cdp = new cdp_client.n(cdpPort, '127.0.0.1');
|
|
73
|
+
await cdp.connect();
|
|
74
|
+
try {
|
|
75
|
+
await cdp.sendCommand('Target.setDiscoverTargets', {
|
|
76
|
+
discover: true
|
|
77
|
+
});
|
|
78
|
+
await cdp.sendCommand('Target.setAutoAttach', {
|
|
79
|
+
autoAttach: true,
|
|
80
|
+
waitForDebuggerOnStart: false,
|
|
81
|
+
flatten: true
|
|
82
|
+
});
|
|
83
|
+
} catch (error) {
|
|
84
|
+
if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.warn(messages.wXK(String(error?.message || error)));
|
|
85
|
+
}
|
|
86
|
+
return cdp;
|
|
87
|
+
}
|
|
88
|
+
async function loadUnpackedIfNeeded(cdp, outPath) {
|
|
89
|
+
try {
|
|
90
|
+
const response = await cdp.sendCommand('Extensions.loadUnpacked', {
|
|
91
|
+
extensionPath: outPath,
|
|
92
|
+
options: {
|
|
93
|
+
failOnError: false
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
const id = String(response?.extensionId || '');
|
|
97
|
+
return id || null;
|
|
98
|
+
} catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function readManifestInfo(outPath) {
|
|
103
|
+
try {
|
|
104
|
+
const manifestPath = external_path_.join(outPath, 'manifest.json');
|
|
105
|
+
const manifest = JSON.parse(external_fs_.readFileSync(manifestPath, 'utf-8'));
|
|
106
|
+
return {
|
|
107
|
+
name: manifest?.name,
|
|
108
|
+
version: manifest?.version
|
|
109
|
+
};
|
|
110
|
+
} catch {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function registerAutoEnableLogging(cdp, getExtensionId) {
|
|
115
|
+
cdp.onProtocolEvent((message)=>{
|
|
116
|
+
try {
|
|
117
|
+
if (!message || !message.method) return;
|
|
118
|
+
if ('Target.attachedToTarget' === message.method) {
|
|
119
|
+
const params = message.params || {};
|
|
120
|
+
const targetInfo = params.targetInfo || {};
|
|
121
|
+
const sessionId = params.sessionId;
|
|
122
|
+
const url = String(targetInfo.url || '');
|
|
123
|
+
const type = String(targetInfo.type || '');
|
|
124
|
+
const extId = getExtensionId();
|
|
125
|
+
const matchesExtension = !!(extId && url.includes(`chrome-extension://${extId}/`) || 'service_worker' === type);
|
|
126
|
+
if (sessionId && matchesExtension) {
|
|
127
|
+
cdp.sendCommand('Runtime.enable', {}, sessionId).catch(()=>{});
|
|
128
|
+
cdp.sendCommand('Log.enable', {}, sessionId).catch(()=>{});
|
|
129
|
+
}
|
|
130
|
+
} else if ('Runtime.consoleAPICalled' === message.method || 'Log.entryAdded' === message.method) {
|
|
131
|
+
if ('1' === String(process.env.EXTENSION_VERBOSE || '').trim()) {
|
|
132
|
+
const ts = new Date().toISOString();
|
|
133
|
+
console.log(messages.bvI(ts, message.params));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
} catch (error) {
|
|
137
|
+
if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.warn(messages.KK1(String(error?.message || error)));
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function _define_property(obj, key, value) {
|
|
142
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
143
|
+
value: value,
|
|
144
|
+
enumerable: true,
|
|
145
|
+
configurable: true,
|
|
146
|
+
writable: true
|
|
147
|
+
});
|
|
148
|
+
else obj[key] = value;
|
|
149
|
+
return obj;
|
|
150
|
+
}
|
|
151
|
+
class CDPExtensionController {
|
|
152
|
+
async connect() {
|
|
153
|
+
if (this.cdp) return;
|
|
154
|
+
this.cdp = await connectToChromeCdp(this.cdpPort);
|
|
155
|
+
try {
|
|
156
|
+
await this.cdp.sendCommand('Target.setDiscoverTargets', {
|
|
157
|
+
discover: true
|
|
158
|
+
});
|
|
159
|
+
await this.cdp.sendCommand('Target.setAutoAttach', {
|
|
160
|
+
autoAttach: true,
|
|
161
|
+
waitForDebuggerOnStart: false,
|
|
162
|
+
flatten: true
|
|
163
|
+
});
|
|
164
|
+
} catch (error) {
|
|
165
|
+
if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.warn(messages.wXK(String(error?.message || error)));
|
|
166
|
+
}
|
|
167
|
+
registerAutoEnableLogging(this.cdp, ()=>this.extensionId);
|
|
168
|
+
}
|
|
169
|
+
async ensureLoaded() {
|
|
170
|
+
if (!this.cdp) throw new Error('CDP not connected');
|
|
171
|
+
const exists = external_fs_.existsSync(this.outPath);
|
|
172
|
+
if (!exists) throw new Error(`Output path not found: ${this.outPath}`);
|
|
173
|
+
if (!this.extensionId) {
|
|
174
|
+
const id = await this.deriveExtensionIdFromTargets();
|
|
175
|
+
if (id) this.extensionId = id;
|
|
176
|
+
}
|
|
177
|
+
if (this.extensionId) try {
|
|
178
|
+
let info = null;
|
|
179
|
+
try {
|
|
180
|
+
info = await this.cdp.getExtensionInfo(this.extensionId);
|
|
181
|
+
} catch {}
|
|
182
|
+
if (!info) {
|
|
183
|
+
const manifest = JSON.parse(external_fs_.readFileSync(external_path_.join(this.outPath, 'manifest.json'), 'utf-8'));
|
|
184
|
+
return {
|
|
185
|
+
extensionId: this.extensionId,
|
|
186
|
+
name: manifest.name,
|
|
187
|
+
version: manifest.version
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
extensionId: this.extensionId,
|
|
192
|
+
name: info?.extensionInfo?.name,
|
|
193
|
+
version: info?.extensionInfo?.version
|
|
194
|
+
};
|
|
195
|
+
} catch {}
|
|
196
|
+
try {
|
|
197
|
+
if (!this.extensionId) {
|
|
198
|
+
const id = await loadUnpackedIfNeeded(this.cdp, this.outPath);
|
|
199
|
+
if (id) this.extensionId = id;
|
|
200
|
+
}
|
|
201
|
+
if (!this.extensionId) this.extensionId = await this.deriveExtensionIdFromTargets(60, 250);
|
|
202
|
+
if (!this.extensionId) throw new Error('Failed to determine extension ID via CDP');
|
|
203
|
+
await this.enableLogging();
|
|
204
|
+
let name;
|
|
205
|
+
let version;
|
|
206
|
+
try {
|
|
207
|
+
const info = await this.cdp.getExtensionInfo(this.extensionId);
|
|
208
|
+
name = info?.extensionInfo?.name;
|
|
209
|
+
version = info?.extensionInfo?.version;
|
|
210
|
+
} catch (error) {
|
|
211
|
+
try {
|
|
212
|
+
const manifest = readManifestInfo(this.outPath);
|
|
213
|
+
name = String(manifest?.name || '') || void 0;
|
|
214
|
+
version = String(manifest?.version || '') || void 0;
|
|
215
|
+
} catch (e2) {
|
|
216
|
+
if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.warn('[CDP] Fallback manifest read failed:', String(e2?.message || e2));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
extensionId: this.extensionId,
|
|
221
|
+
name,
|
|
222
|
+
version
|
|
223
|
+
};
|
|
224
|
+
} catch (error) {
|
|
225
|
+
throw new Error(`Failed to load extension from ${external_path_.resolve(this.outPath)}: ${String(error.message || error)}`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
async deriveExtensionIdFromTargets(maxRetries = 20, backoffMs = 200) {
|
|
229
|
+
if (!this.cdp) return null;
|
|
230
|
+
return await deriveExtensionIdFromTargetsHelper(this.cdp, this.outPath, maxRetries, backoffMs);
|
|
231
|
+
}
|
|
232
|
+
async hardReload() {
|
|
233
|
+
if (!this.cdp || !this.extensionId) return false;
|
|
234
|
+
try {
|
|
235
|
+
return await this.cdp.forceReloadExtension(this.extensionId);
|
|
236
|
+
} catch {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
onProtocolEvent(cb) {
|
|
241
|
+
if (!this.cdp) throw new Error('CDP not connected');
|
|
242
|
+
this.cdp.onProtocolEvent((raw)=>{
|
|
243
|
+
const evt = raw;
|
|
244
|
+
cb(evt);
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
clearProtocolEventHandler() {
|
|
248
|
+
if (!this.cdp) return;
|
|
249
|
+
this.cdp.onProtocolEvent(()=>{});
|
|
250
|
+
}
|
|
251
|
+
async enableUnifiedLogging() {
|
|
252
|
+
if (!this.cdp) return;
|
|
253
|
+
try {
|
|
254
|
+
await this.cdp.enableAutoAttach();
|
|
255
|
+
await this.cdp.enableRuntimeAndLog();
|
|
256
|
+
try {
|
|
257
|
+
const targets = await this.cdp.getTargets();
|
|
258
|
+
for (const t of targets || []){
|
|
259
|
+
const type = String(t?.type || '');
|
|
260
|
+
if ('page' === type || 'service_worker' === type || 'background_page' === type || 'worker' === type) {
|
|
261
|
+
const targetId = String(t?.targetId || '');
|
|
262
|
+
if (!targetId) continue;
|
|
263
|
+
const sessionId = await this.cdp.attachToTarget(targetId);
|
|
264
|
+
await this.cdp.enableRuntimeAndLog(sessionId);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
} catch {}
|
|
268
|
+
} catch {}
|
|
269
|
+
}
|
|
270
|
+
async enableRuntimeForSession(sessionId) {
|
|
271
|
+
if (!this.cdp) return;
|
|
272
|
+
try {
|
|
273
|
+
await this.cdp.enableRuntimeAndLog(sessionId);
|
|
274
|
+
} catch {}
|
|
275
|
+
}
|
|
276
|
+
async enableLogging() {
|
|
277
|
+
if (!this.cdp) return;
|
|
278
|
+
try {
|
|
279
|
+
const extId = this.extensionId;
|
|
280
|
+
this.onProtocolEvent(async (message)=>{
|
|
281
|
+
try {
|
|
282
|
+
if (!message || !message.method) return;
|
|
283
|
+
if ('Target.attachedToTarget' === message.method) {
|
|
284
|
+
const params = message.params || {};
|
|
285
|
+
const targetInfo = params.targetInfo || {
|
|
286
|
+
url: '',
|
|
287
|
+
type: ''
|
|
288
|
+
};
|
|
289
|
+
const sessionId = params.sessionId;
|
|
290
|
+
const url = String(targetInfo.url || '');
|
|
291
|
+
const type = String(targetInfo.type || '');
|
|
292
|
+
const matchesExtension = !!(this.extensionId && url.includes(`chrome-extension://${this.extensionId}/`) || extId && url.includes(`chrome-extension://${extId}/`) || 'service_worker' === type);
|
|
293
|
+
if (sessionId && matchesExtension) {
|
|
294
|
+
await this.cdp.sendCommand('Runtime.enable', {}, sessionId);
|
|
295
|
+
await this.cdp.sendCommand('Log.enable', {}, sessionId);
|
|
296
|
+
}
|
|
297
|
+
} else if ('Runtime.consoleAPICalled' === message.method || 'Log.entryAdded' === message.method) {
|
|
298
|
+
const ts = new Date().toISOString();
|
|
299
|
+
console.log(messages.bvI(ts, message.params));
|
|
300
|
+
}
|
|
301
|
+
} catch {}
|
|
302
|
+
});
|
|
303
|
+
} catch (e) {
|
|
304
|
+
if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.warn('[CDP] enableLogging failed:', String(e));
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
async getInfoBestEffort() {
|
|
308
|
+
try {
|
|
309
|
+
if (!this.cdp) return null;
|
|
310
|
+
if (!this.extensionId) this.extensionId = await this.deriveExtensionIdFromTargets(20, 200);
|
|
311
|
+
if (!this.extensionId) return null;
|
|
312
|
+
let name;
|
|
313
|
+
let version;
|
|
314
|
+
try {
|
|
315
|
+
const info = await this.cdp.getExtensionInfo(this.extensionId);
|
|
316
|
+
name = info?.extensionInfo?.name;
|
|
317
|
+
version = info?.extensionInfo?.version;
|
|
318
|
+
} catch {
|
|
319
|
+
try {
|
|
320
|
+
const manifest = JSON.parse(external_fs_.readFileSync(external_path_.join(this.outPath, 'manifest.json'), 'utf-8'));
|
|
321
|
+
name = manifest?.name;
|
|
322
|
+
version = manifest?.version;
|
|
323
|
+
} catch {}
|
|
324
|
+
}
|
|
325
|
+
return {
|
|
326
|
+
extensionId: this.extensionId,
|
|
327
|
+
name,
|
|
328
|
+
version
|
|
329
|
+
};
|
|
330
|
+
} catch (error) {
|
|
331
|
+
return null;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
constructor(args){
|
|
335
|
+
_define_property(this, "outPath", void 0);
|
|
336
|
+
_define_property(this, "browser", void 0);
|
|
337
|
+
_define_property(this, "cdpPort", void 0);
|
|
338
|
+
_define_property(this, "cdp", null);
|
|
339
|
+
_define_property(this, "extensionId", null);
|
|
340
|
+
this.outPath = args.outPath;
|
|
341
|
+
this.browser = args.browser;
|
|
342
|
+
this.cdpPort = args.cdpPort;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
var extension_output_path = __webpack_require__("./webpack/plugin-browsers/run-chromium/chromium-launch/extension-output-path.ts");
|
|
346
|
+
async function setupCdpAfterLaunch(compilation, plugin, chromiumArgs) {
|
|
347
|
+
const loadExtensionFlag = chromiumArgs.find((flag)=>flag.startsWith('--load-extension='));
|
|
348
|
+
const extensionOutputPath = (0, extension_output_path.W)(compilation, loadExtensionFlag);
|
|
349
|
+
const remoteDebugPortFlag = chromiumArgs.find((flag)=>flag.startsWith('--remote-debugging-port='));
|
|
350
|
+
const chromeRemoteDebugPort = remoteDebugPortFlag ? parseInt(remoteDebugPortFlag.split('=')[1], 10) : (0, shared_utils.jl)(plugin.port, plugin.instanceId);
|
|
351
|
+
if ('true' === process.env.EXTENSION_AUTHOR_MODE) {
|
|
352
|
+
const userDataDirFlag = chromiumArgs.find((flag)=>flag.startsWith('--user-data-dir='));
|
|
353
|
+
if (userDataDirFlag) {
|
|
354
|
+
const userDataDir = userDataDirFlag.replace('--user-data-dir=', '').replace(/^"|"$/g, '');
|
|
355
|
+
console.log(messages.aIt(userDataDir));
|
|
356
|
+
}
|
|
357
|
+
console.log(messages.CYH(chromeRemoteDebugPort, chromeRemoteDebugPort));
|
|
358
|
+
}
|
|
359
|
+
const cdpExtensionController = new CDPExtensionController({
|
|
360
|
+
outPath: extensionOutputPath,
|
|
361
|
+
browser: 'chromium-based' === plugin.browser ? 'chrome' : plugin.browser,
|
|
362
|
+
cdpPort: chromeRemoteDebugPort
|
|
363
|
+
});
|
|
364
|
+
const retryAsync = async (operation, attempts = 5, initialDelayMs = 150)=>{
|
|
365
|
+
let lastError;
|
|
366
|
+
for(let attempt = 0; attempt < attempts; attempt++)try {
|
|
367
|
+
return await operation();
|
|
368
|
+
} catch (error) {
|
|
369
|
+
lastError = error;
|
|
370
|
+
const backoffMs = initialDelayMs * Math.pow(2, attempt);
|
|
371
|
+
await new Promise((resolve)=>setTimeout(resolve, backoffMs));
|
|
372
|
+
}
|
|
373
|
+
throw lastError;
|
|
374
|
+
};
|
|
375
|
+
await retryAsync(()=>cdpExtensionController.connect());
|
|
376
|
+
if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.log(messages.M3V('127.0.0.1', chromeRemoteDebugPort));
|
|
377
|
+
const extensionControllerInfo = await cdpExtensionController.ensureLoaded();
|
|
378
|
+
try {
|
|
379
|
+
const mode = compilation?.options?.mode || 'development';
|
|
380
|
+
if ('development' === mode) {
|
|
381
|
+
const bannerPrinted = await (0, banner.a)({
|
|
382
|
+
outPath: extensionOutputPath,
|
|
383
|
+
browser: plugin.browser,
|
|
384
|
+
hostPort: {
|
|
385
|
+
host: '127.0.0.1',
|
|
386
|
+
port: chromeRemoteDebugPort
|
|
387
|
+
},
|
|
388
|
+
getInfo: async ()=>extensionControllerInfo,
|
|
389
|
+
browserVersionLine: plugin.browserVersionLine
|
|
390
|
+
});
|
|
391
|
+
if (!bannerPrinted) await (0, banner.a)({
|
|
392
|
+
outPath: extensionOutputPath,
|
|
393
|
+
browser: plugin.browser,
|
|
394
|
+
hostPort: {
|
|
395
|
+
host: '127.0.0.1',
|
|
396
|
+
port: chromeRemoteDebugPort
|
|
397
|
+
},
|
|
398
|
+
getInfo: async ()=>cdpExtensionController.getInfoBestEffort(),
|
|
399
|
+
browserVersionLine: plugin.browserVersionLine
|
|
400
|
+
});
|
|
401
|
+
} else if ('production' === mode) await (0, banner.M)({
|
|
402
|
+
browser: plugin.browser,
|
|
403
|
+
outPath: extensionOutputPath,
|
|
404
|
+
browserVersionLine: plugin.browserVersionLine,
|
|
405
|
+
runtime: {
|
|
406
|
+
extensionId: extensionControllerInfo.extensionId,
|
|
407
|
+
name: extensionControllerInfo.name,
|
|
408
|
+
version: extensionControllerInfo.version
|
|
409
|
+
}
|
|
410
|
+
});
|
|
411
|
+
} catch (bannerErr) {
|
|
412
|
+
if ('true' === process.env.EXTENSION_AUTHOR_MODE) console.warn(messages.$wD(String(bannerErr)));
|
|
413
|
+
try {
|
|
414
|
+
const mode = compilation?.options?.mode || 'development';
|
|
415
|
+
if ('production' === mode) await (0, banner.M)({
|
|
416
|
+
browser: plugin.browser,
|
|
417
|
+
outPath: extensionOutputPath,
|
|
418
|
+
browserVersionLine: plugin.browserVersionLine
|
|
419
|
+
});
|
|
420
|
+
} catch {}
|
|
421
|
+
}
|
|
422
|
+
plugin.cdpController = cdpExtensionController;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
};
|
package/dist/419.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.ids = [
|
|
3
|
+
"419"
|
|
4
|
+
];
|
|
5
|
+
exports.modules = {
|
|
6
|
+
"./webpack/webpack-lib/zip.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
7
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
8
|
+
downloadAndExtractZip: ()=>downloadAndExtractZip
|
|
9
|
+
});
|
|
10
|
+
var path__rspack_import_0 = __webpack_require__("path");
|
|
11
|
+
var adm_zip__rspack_import_1 = __webpack_require__("adm-zip");
|
|
12
|
+
var adm_zip__rspack_import_1_default = /*#__PURE__*/ __webpack_require__.n(adm_zip__rspack_import_1);
|
|
13
|
+
var _messages__rspack_import_2 = __webpack_require__("./webpack/webpack-lib/messages.ts");
|
|
14
|
+
async function downloadAndExtractZip(url, targetPath) {
|
|
15
|
+
const urlNoSearchParams = url.split('?')[0];
|
|
16
|
+
try {
|
|
17
|
+
console.log(_messages__rspack_import_2.Ud(urlNoSearchParams));
|
|
18
|
+
const res = await fetch(url, {
|
|
19
|
+
redirect: 'follow'
|
|
20
|
+
});
|
|
21
|
+
if (!res.ok || !res.body) throw new Error(`HTTP ${res.status} ${res.statusText}`);
|
|
22
|
+
const contentType = String(res.headers.get('content-type') || '');
|
|
23
|
+
const isZipExt = '.zip' === path__rspack_import_0.extname(urlNoSearchParams).toLowerCase();
|
|
24
|
+
const isZipType = /zip|octet-stream/i.test(contentType);
|
|
25
|
+
if (!isZipExt && !isZipType) throw new Error(`${_messages__rspack_import_2.tc(urlNoSearchParams, contentType)}`);
|
|
26
|
+
const extname = path__rspack_import_0.extname(urlNoSearchParams);
|
|
27
|
+
const basename = path__rspack_import_0.basename(urlNoSearchParams, extname);
|
|
28
|
+
const destinationPath = path__rspack_import_0.join(targetPath, basename);
|
|
29
|
+
console.log(_messages__rspack_import_2.gC(destinationPath));
|
|
30
|
+
const arrayBuffer = await res.arrayBuffer();
|
|
31
|
+
const zipBuffer = Buffer.from(arrayBuffer);
|
|
32
|
+
const zip = new (adm_zip__rspack_import_1_default())(zipBuffer);
|
|
33
|
+
zip.extractAllTo(destinationPath, true);
|
|
34
|
+
console.log(_messages__rspack_import_2.zM());
|
|
35
|
+
return destinationPath;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
console.error(_messages__rspack_import_2.GW(error));
|
|
38
|
+
const err = new Error(`${_messages__rspack_import_2.GW(error)}`);
|
|
39
|
+
err.code = 'EZIP';
|
|
40
|
+
throw err;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|