extension-develop 4.1.11 → 4.1.13
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/dist/0~dev-server.mjs +147 -81
- package/dist/0~rspack-config.mjs +1096 -694
- package/dist/0~zip.mjs +1 -1
- package/dist/101.mjs +185 -895
- package/dist/129.mjs +89 -0
- package/dist/278.mjs +52 -0
- package/dist/292.mjs +61 -0
- package/dist/372.mjs +87 -0
- package/dist/518.mjs +434 -0
- package/dist/77.mjs +928 -0
- package/dist/839.mjs +178 -40
- package/dist/845.mjs +10 -1
- package/dist/887.mjs +1 -1
- package/dist/bridge-entry.d.ts +2 -1
- package/dist/bridge.mjs +56 -7
- package/dist/css-parse-guard-loader.mjs +3 -0
- package/dist/dead-css-url-loader.mjs +51 -24
- package/dist/dev-server/cleanup.d.ts +2 -1
- package/dist/dev-server/control-bridge/broker.d.ts +1 -0
- package/dist/dev-server/control-bridge/contracts.d.ts +2 -0
- package/dist/dev-server/control-bridge/logs-query.d.ts +12 -1
- package/dist/dev-server/control-bridge/producer-runtime.d.ts +1 -1
- package/dist/dev-server/messages.d.ts +8 -0
- package/dist/dev-server/session-restart.d.ts +29 -0
- package/dist/ensure-hmr-for-scripts.js +37 -20
- package/dist/ensure-hmr-for-scripts.mjs +37 -20
- package/dist/extension-js-devtools/chrome/content_scripts/content-0.js +2 -2
- package/dist/extension-js-devtools/chrome/scripts/logger-client.js +1 -1
- package/dist/extension-js-devtools/chromium/content_scripts/content-0.js +2 -2
- package/dist/extension-js-devtools/chromium/scripts/logger-client.js +1 -1
- package/dist/extension-js-devtools/edge/content_scripts/content-0.js +2 -2
- package/dist/extension-js-devtools/edge/scripts/logger-client.js +1 -1
- package/dist/extension-js-devtools/firefox/content_scripts/content-0.js +2 -2
- package/dist/extension-js-devtools/firefox/scripts/logger-client.js +1 -1
- package/dist/feature-scripts-classic-concat-loader.js +58 -5
- package/dist/feature-scripts-classic-concat-loader.mjs +58 -5
- package/dist/feature-scripts-content-script-wrapper.js +14 -17
- package/dist/feature-scripts-content-script-wrapper.mjs +14 -17
- package/dist/feature-scripts-native-geturl-import-loader.mjs +10 -3
- package/dist/lib/asset-source-maps.d.ts +7 -0
- package/dist/lib/config-loader.d.ts +7 -34
- package/dist/lib/loader-source-maps.d.ts +17 -0
- package/dist/lib/messages.d.ts +1 -0
- package/dist/lib/msg-placeholders.d.ts +2 -0
- package/dist/lib/paths.d.ts +2 -0
- package/dist/lib/project.d.ts +3 -0
- package/dist/lib/session-project-root.d.ts +1 -0
- package/dist/minimum-script-file.js +41 -1
- package/dist/minimum-script-file.mjs +41 -1
- package/dist/module.d.ts +1 -1
- package/dist/module.mjs +1 -1
- package/dist/plugin-css/css-lib/dead-url-refs.d.ts +5 -0
- package/dist/plugin-css/css-lib/inline-content-script-css.d.ts +32 -0
- package/dist/plugin-css/css-lib/messages.d.ts +3 -0
- package/dist/plugin-css/css-lib/verbatim-css.d.ts +9 -0
- package/dist/plugin-css/css-parse-guard-loader.d.ts +3 -0
- package/dist/plugin-css/css-tools/postcss.d.ts +1 -0
- package/dist/plugin-css/dead-css-url-loader.d.ts +8 -4
- package/dist/plugin-css/index.d.ts +1 -0
- package/dist/plugin-js-frameworks/js-frameworks-lib/jsx-transform.d.ts +10 -0
- package/dist/plugin-js-frameworks/js-tools/solid-jsx-runtime.d.ts +8 -0
- package/dist/plugin-js-frameworks/js-tools/solid.d.ts +3 -0
- package/dist/plugin-js-frameworks/swc-targets.d.ts +3 -0
- package/dist/plugin-reload/classify-reload.d.ts +6 -0
- package/dist/plugin-reload/index.d.ts +2 -1
- package/dist/plugin-reload/reload-dispatch.d.ts +1 -0
- package/dist/plugin-special-folders/folder-extensions/resolve-dirs.d.ts +1 -0
- package/dist/plugin-special-folders/folder-extensions/utils.d.ts +3 -0
- package/dist/plugin-special-folders/messages.d.ts +2 -0
- package/dist/plugin-special-folders/resolve-public-folder.d.ts +13 -0
- package/dist/plugin-web-extension/feature-html/html-lib/assets.d.ts +1 -1
- package/dist/plugin-web-extension/feature-html/html-lib/base-href.d.ts +11 -0
- package/dist/plugin-web-extension/feature-html/html-lib/patch-html.d.ts +2 -2
- package/dist/plugin-web-extension/feature-html/html-lib/utils.d.ts +13 -0
- package/dist/plugin-web-extension/feature-html/index.d.ts +1 -0
- package/dist/plugin-web-extension/feature-html/steps/ensure-hmr-for-scripts.d.ts +1 -1
- package/dist/plugin-web-extension/feature-icons/extract-action-theme-icons.d.ts +2 -0
- package/dist/plugin-web-extension/feature-icons/omnibox-fields.d.ts +2 -0
- package/dist/plugin-web-extension/feature-icons/theme-image-fields.d.ts +2 -0
- package/dist/plugin-web-extension/feature-json/json-validation.d.ts +1 -0
- package/dist/plugin-web-extension/feature-manifest/index.d.ts +1 -0
- package/dist/plugin-web-extension/feature-manifest/manifest-lib/manifest.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/common/index.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/common/sandbox.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/common/storage.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/common/theme.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/index.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/mv2/chrome_settings_overrides.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/mv2/index.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/mv2/theme_experiment.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/mv3/action.d.ts +2 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/mv3/declarative_net_request.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/manifest-overrides/mv3/index.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/messages.d.ts +2 -0
- package/dist/plugin-web-extension/feature-manifest/normalize-manifest-path.d.ts +4 -0
- package/dist/plugin-web-extension/feature-manifest/steps/apply-dev-defaults-lib/patch-csp.d.ts +1 -1
- package/dist/plugin-web-extension/feature-manifest/steps/apply-dev-defaults.d.ts +1 -0
- package/dist/plugin-web-extension/feature-scripts/steps/native-geturl-import-loader.d.ts +7 -2
- package/dist/plugin-web-extension/feature-web-resources/collect-entry-imports.d.ts +1 -0
- package/dist/plugin-web-extension/index.d.ts +1 -0
- package/dist/plugin-web-extension/shared/html-surfaces.d.ts +19 -0
- package/dist/plugin-web-extension/shared/manifest-fields-change-detector.d.ts +1 -0
- package/dist/plugin-web-extension/shared/manifest-fields.d.ts +18 -0
- package/dist/plugin-web-extension/shared/manifest-path-assets.d.ts +4 -0
- package/dist/plugin-web-extension/shared/paths.d.ts +1 -0
- package/dist/solid-jsx-runtime.mjs +15 -0
- package/dist/types.d.ts +20 -7
- package/package.json +1 -1
- package/dist/494.mjs +0 -89
- package/dist/86.mjs +0 -36
package/dist/0~dev-server.mjs
CHANGED
|
@@ -7,11 +7,12 @@ import { RspackDevServer } from "@rspack/dev-server";
|
|
|
7
7
|
import { merge } from "webpack-merge";
|
|
8
8
|
import { WebSocket, WebSocketServer } from "ws";
|
|
9
9
|
import { classifyReloadFromSources, attachLifecycleStream, readContentScriptCount, humanLine, buildSourceFeatureIndex, createChangedSourcesTracker, createLifecycleStream, dispatchReload } from "./839.mjs";
|
|
10
|
-
import {
|
|
10
|
+
import { runnerCleanupError, autoExitForceKill, loadCommandConfig, sanitize, extensionJsRunnerError, portInUse, devServerStartTimeout, autoExitTriggered, loadProjectConfigDefaults, runnerUncaughtException, shouldWarnPortConflict, devServerRestarting, DEV_COMMAND_DEFAULTS, mergeOptionLayers, runnerUnhandledRejection, createPlaywrightMetadataWriter, autoExitModeEnabled, getSessionRunId, isGeckoBasedBrowser, loadCustomConfig, loadBrowserConfig, resolveCompanionExtensionsConfig, getSpecialFoldersDataForProjectRoot } from "./101.mjs";
|
|
11
11
|
import { CONTROL_WS_PATH, writePersistedControlPort, writeControlToken, clearControlToken, readPersistedControlPort } from "./887.mjs";
|
|
12
12
|
import { hasProjectDependency, findNearestProjectManifestDirSync } from "./80.mjs";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
13
|
+
import { publicFolderOrDefault } from "./278.mjs";
|
|
14
|
+
import { setupNoBrowserBannerOnFirstDone, DevSessionRestartScheduler, resolveConnectableHost, webpackConfig, bindDevSessionRestart, unbindDevSessionRestart, setupCompilerLifecycleHooks } from "./0~rspack-config.mjs";
|
|
15
|
+
import { logsPath, controlPortFilePath, legacyControlPortFilePath, asAbsolute, getDistPath, ensureSessionStateInProjectGitignore, actionsPath, ensureSessionArtifactsIgnoreFile } from "./77.mjs";
|
|
15
16
|
import { isDebug } from "./349.mjs";
|
|
16
17
|
import * as __rspack_external_node_os_74b4b876 from "node:os";
|
|
17
18
|
import * as __rspack_external_node_path_c5b9b54f from "node:path";
|
|
@@ -60,11 +61,16 @@ function setupAutoExit(autoExitMsRaw, forceKillMsRaw, onCleanup) {
|
|
|
60
61
|
}
|
|
61
62
|
return cancelAutoExitTimers;
|
|
62
63
|
}
|
|
64
|
+
function resolveDevServer(handle) {
|
|
65
|
+
return 'function' == typeof handle ? handle() : handle;
|
|
66
|
+
}
|
|
63
67
|
function closeAll(devServer, portManager) {
|
|
64
|
-
|
|
68
|
+
const afterStop = async ()=>{
|
|
65
69
|
await portManager.terminateCurrentInstance();
|
|
66
70
|
setTimeout(()=>process.exit(), 500);
|
|
67
|
-
}
|
|
71
|
+
};
|
|
72
|
+
if (!devServer || 'function' != typeof devServer.stop) return afterStop();
|
|
73
|
+
return devServer.stop().then(afterStop).catch(async (error)=>{
|
|
68
74
|
humanLine(extensionJsRunnerError(error));
|
|
69
75
|
await portManager.terminateCurrentInstance();
|
|
70
76
|
setTimeout(()=>process.exit(1), 500);
|
|
@@ -76,18 +82,18 @@ function setupCleanupHandlers(devServer, portManager) {
|
|
|
76
82
|
if (isShuttingDown) return;
|
|
77
83
|
isShuttingDown = true;
|
|
78
84
|
try {
|
|
79
|
-
await closeAll(devServer, portManager);
|
|
85
|
+
await closeAll(resolveDevServer(devServer), portManager);
|
|
80
86
|
} catch (error) {
|
|
81
|
-
console.error(
|
|
87
|
+
console.error(runnerCleanupError(error));
|
|
82
88
|
process.exit(1);
|
|
83
89
|
}
|
|
84
90
|
};
|
|
85
91
|
process.on('uncaughtException', async (error)=>{
|
|
86
|
-
console.error(
|
|
92
|
+
console.error(runnerUncaughtException(error));
|
|
87
93
|
await cleanup();
|
|
88
94
|
});
|
|
89
95
|
process.on('unhandledRejection', (reason, promise)=>{
|
|
90
|
-
console.error(
|
|
96
|
+
console.error(runnerUnhandledRejection(reason));
|
|
91
97
|
});
|
|
92
98
|
const cancelAutoExit = setupAutoExit(process.env.EXTENSION_AUTO_EXIT_MS, process.env.EXTENSION_FORCE_KILL_MS, cleanup);
|
|
93
99
|
const cancelAndCleanup = async ()=>{
|
|
@@ -346,7 +352,10 @@ class BridgeBroker {
|
|
|
346
352
|
reloadType: instruction.type,
|
|
347
353
|
changedContentScriptEntries: instruction.changedContentScriptEntries,
|
|
348
354
|
label: instruction.label,
|
|
349
|
-
changedFiles: instruction.changedFiles
|
|
355
|
+
changedFiles: instruction.changedFiles,
|
|
356
|
+
...instruction.changedScriptFiles?.length ? {
|
|
357
|
+
changedScriptFiles: instruction.changedScriptFiles
|
|
358
|
+
} : {}
|
|
350
359
|
};
|
|
351
360
|
let notified = 0;
|
|
352
361
|
for (const [conn, role] of this.roles)if ('producer' === role) try {
|
|
@@ -1076,6 +1085,7 @@ async function dev_server_devServer(projectStructure, devOptions) {
|
|
|
1076
1085
|
const { manifestPath, packageJsonPath, denoJsonPath } = projectStructure;
|
|
1077
1086
|
const projectManifestPath = packageJsonPath || denoJsonPath;
|
|
1078
1087
|
const packageJsonDir = projectManifestPath ? __rspack_external_node_path_c5b9b54f.dirname(projectManifestPath) : __rspack_external_node_path_c5b9b54f.dirname(manifestPath);
|
|
1088
|
+
const projectConfig = await loadProjectConfigDefaults(packageJsonDir);
|
|
1079
1089
|
const commandConfig = await loadCommandConfig(packageJsonDir, 'dev');
|
|
1080
1090
|
const browserConfig = await loadBrowserConfig(packageJsonDir, devOptions.browser);
|
|
1081
1091
|
const portManager = new PortManager(8080);
|
|
@@ -1192,19 +1202,22 @@ async function dev_server_devServer(projectStructure, devOptions) {
|
|
|
1192
1202
|
bridgeActionsFile?.close();
|
|
1193
1203
|
} catch {}
|
|
1194
1204
|
if (bridgeControlToken) clearControlToken(packageJsonDir, browserName);
|
|
1205
|
+
unbindDevSessionRestart();
|
|
1195
1206
|
});
|
|
1207
|
+
const safeProjectConfig = sanitize(projectConfig);
|
|
1196
1208
|
const safeBrowserConfig = sanitize(browserConfig);
|
|
1197
1209
|
const safeCommandConfig = sanitize(commandConfig);
|
|
1198
1210
|
const safeDevOptions = sanitize(devOptions);
|
|
1199
|
-
const mergedDevOptions = mergeOptionLayers(DEV_COMMAND_DEFAULTS, safeBrowserConfig, safeCommandConfig, safeDevOptions);
|
|
1211
|
+
const mergedDevOptions = mergeOptionLayers(DEV_COMMAND_DEFAULTS, safeProjectConfig, safeBrowserConfig, safeCommandConfig, safeDevOptions);
|
|
1200
1212
|
const specialFoldersData = getSpecialFoldersDataForProjectRoot(packageJsonDir);
|
|
1201
|
-
const mergedExtensionsConfig = safeDevOptions.extensions ?? safeCommandConfig.extensions ?? safeBrowserConfig.extensions ?? specialFoldersData.extensions;
|
|
1213
|
+
const mergedExtensionsConfig = safeDevOptions.extensions ?? safeCommandConfig.extensions ?? safeBrowserConfig.extensions ?? safeProjectConfig.extensions ?? specialFoldersData.extensions;
|
|
1202
1214
|
const resolvedExtensionsConfig = await resolveCompanionExtensionsConfig({
|
|
1203
1215
|
projectRoot: packageJsonDir,
|
|
1204
1216
|
browser: devOptions.browser,
|
|
1205
1217
|
config: mergedExtensionsConfig
|
|
1206
1218
|
});
|
|
1207
|
-
const
|
|
1219
|
+
const webpackConfigOptions = {
|
|
1220
|
+
metadataCommand: 'dev',
|
|
1208
1221
|
...mergedDevOptions,
|
|
1209
1222
|
extensions: resolvedExtensionsConfig,
|
|
1210
1223
|
browser: devOptions.browser,
|
|
@@ -1219,39 +1232,8 @@ async function dev_server_devServer(projectStructure, devOptions) {
|
|
|
1219
1232
|
clean: false,
|
|
1220
1233
|
path: primaryDistPath
|
|
1221
1234
|
}
|
|
1222
|
-
}
|
|
1223
|
-
const customWebpackConfig = await loadCustomConfig(packageJsonDir);
|
|
1224
|
-
const finalConfig = customWebpackConfig(baseConfig);
|
|
1225
|
-
const compilerConfig = merge(finalConfig, {});
|
|
1226
|
-
const compiler = rspack(compilerConfig);
|
|
1235
|
+
};
|
|
1227
1236
|
const manifestOutputPath = __rspack_external_node_path_c5b9b54f.join(primaryDistPath, 'manifest.json');
|
|
1228
|
-
const uninstallManifestGuard = installManifestDiskWriteGuard(manifestOutputPath);
|
|
1229
|
-
const releaseOutputFsGuard = suppressManifestOutputWrites(compiler, manifestOutputPath);
|
|
1230
|
-
if (!extendedOptions.browsersPlugin && compiler?.hooks?.watchRun) {
|
|
1231
|
-
const changedSources = createChangedSourcesTracker(compiler);
|
|
1232
|
-
let isFirstBridgeCompile = true;
|
|
1233
|
-
compiler.hooks.done.tapPromise('extjs-no-browser-reload', async (stats)=>{
|
|
1234
|
-
const compilation = stats.compilation;
|
|
1235
|
-
if (compilation.errors && compilation.errors.length > 0) return;
|
|
1236
|
-
if (isFirstBridgeCompile) {
|
|
1237
|
-
isFirstBridgeCompile = false;
|
|
1238
|
-
return;
|
|
1239
|
-
}
|
|
1240
|
-
const outputPath = String(compilation.options?.output?.path || '');
|
|
1241
|
-
const contextDir = String(compilation.options?.context || '');
|
|
1242
|
-
const { forcedFull, changedSources: sources } = changedSources.snapshot();
|
|
1243
|
-
const instruction = classifyReloadFromSources({
|
|
1244
|
-
changedSources: sources,
|
|
1245
|
-
forcedFull,
|
|
1246
|
-
getContentScriptCount: ()=>readContentScriptCount(compilation, outputPath),
|
|
1247
|
-
getSourceFeatureIndex: ()=>buildSourceFeatureIndex(compilation, contextDir),
|
|
1248
|
-
outputPath
|
|
1249
|
-
});
|
|
1250
|
-
await dispatchReload(instruction, {
|
|
1251
|
-
broker: bridgeBroker
|
|
1252
|
-
});
|
|
1253
|
-
});
|
|
1254
|
-
}
|
|
1255
1237
|
const metadata = createPlaywrightMetadataWriter({
|
|
1256
1238
|
packageJsonDir,
|
|
1257
1239
|
browser: String(devOptions.browser || 'chromium'),
|
|
@@ -1278,21 +1260,12 @@ async function dev_server_devServer(projectStructure, devOptions) {
|
|
|
1278
1260
|
requestedPort: Number(devOptions.port),
|
|
1279
1261
|
port
|
|
1280
1262
|
});
|
|
1281
|
-
attachLifecycleStream(compiler, lifecycle);
|
|
1282
|
-
setupCompilerLifecycleHooks(compiler);
|
|
1283
|
-
if (devOptions.noBrowser) setupNoBrowserBannerOnFirstDone({
|
|
1284
|
-
compiler,
|
|
1285
|
-
browser: String(devOptions.browser || 'chromium'),
|
|
1286
|
-
manifestPath,
|
|
1287
|
-
readyPath: metadata.readyPath,
|
|
1288
|
-
distPath: primaryDistPath
|
|
1289
|
-
});
|
|
1290
1263
|
if (shouldWarnPortConflict(devOptions.port, port)) humanLine(portInUse(Number(devOptions.port), port));
|
|
1291
1264
|
const serverConfig = {
|
|
1292
1265
|
host: devServerHost,
|
|
1293
1266
|
allowedHosts: 'all',
|
|
1294
1267
|
static: {
|
|
1295
|
-
directory:
|
|
1268
|
+
directory: publicFolderOrDefault(manifestPath, packageJsonDir),
|
|
1296
1269
|
watch: false
|
|
1297
1270
|
},
|
|
1298
1271
|
compress: false,
|
|
@@ -1304,7 +1277,7 @@ async function dev_server_devServer(projectStructure, devOptions) {
|
|
|
1304
1277
|
},
|
|
1305
1278
|
watchFiles: {
|
|
1306
1279
|
paths: [
|
|
1307
|
-
__rspack_external_node_path_c5b9b54f.join(
|
|
1280
|
+
__rspack_external_node_path_c5b9b54f.join(publicFolderOrDefault(manifestPath, packageJsonDir), '**/*'),
|
|
1308
1281
|
...isUsingJSFramework(packageJsonDir) ? [] : [
|
|
1309
1282
|
__rspack_external_node_path_c5b9b54f.join(packageJsonDir, '**/*.html')
|
|
1310
1283
|
]
|
|
@@ -1328,34 +1301,127 @@ async function dev_server_devServer(projectStructure, devOptions) {
|
|
|
1328
1301
|
hot: true,
|
|
1329
1302
|
liveReload: true
|
|
1330
1303
|
};
|
|
1331
|
-
const
|
|
1332
|
-
|
|
1333
|
-
const
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1304
|
+
const START_TIMEOUT_MS = parseInt(String(process.env.EXTENSION_START_TIMEOUT_MS || '30000'), 10);
|
|
1305
|
+
async function createCompilerAndServer(opts) {
|
|
1306
|
+
const baseConfig = webpackConfig(projectStructure, webpackConfigOptions);
|
|
1307
|
+
const customWebpackConfig = await loadCustomConfig(packageJsonDir);
|
|
1308
|
+
const compilerConfig = merge(customWebpackConfig(baseConfig), {});
|
|
1309
|
+
const compiler = rspack(compilerConfig);
|
|
1310
|
+
const uninstallManifestGuard = installManifestDiskWriteGuard(manifestOutputPath);
|
|
1311
|
+
const releaseOutputFsGuard = suppressManifestOutputWrites(compiler, manifestOutputPath);
|
|
1312
|
+
if (!extendedOptions.browsersPlugin && compiler?.hooks?.watchRun) {
|
|
1313
|
+
const changedSources = createChangedSourcesTracker(compiler);
|
|
1314
|
+
let isFirstBridgeCompile = true;
|
|
1315
|
+
compiler.hooks.done.tapPromise('extjs-no-browser-reload', async (stats)=>{
|
|
1316
|
+
const compilation = stats.compilation;
|
|
1317
|
+
if (compilation.errors && compilation.errors.length > 0) return;
|
|
1318
|
+
if (isFirstBridgeCompile) {
|
|
1319
|
+
isFirstBridgeCompile = false;
|
|
1320
|
+
return;
|
|
1321
|
+
}
|
|
1322
|
+
const outputPath = String(compilation.options?.output?.path || '');
|
|
1323
|
+
const contextDir = String(compilation.options?.context || '');
|
|
1324
|
+
const { forcedFull, changedSources: sources } = changedSources.snapshot();
|
|
1325
|
+
const instruction = classifyReloadFromSources({
|
|
1326
|
+
changedSources: sources,
|
|
1327
|
+
forcedFull,
|
|
1328
|
+
getContentScriptCount: ()=>readContentScriptCount(compilation, outputPath),
|
|
1329
|
+
getSourceFeatureIndex: ()=>buildSourceFeatureIndex(compilation, contextDir),
|
|
1330
|
+
outputPath
|
|
1331
|
+
});
|
|
1332
|
+
await dispatchReload(instruction, {
|
|
1333
|
+
broker: bridgeBroker
|
|
1334
|
+
});
|
|
1335
|
+
});
|
|
1336
|
+
}
|
|
1337
|
+
attachLifecycleStream(compiler, lifecycle);
|
|
1338
|
+
setupCompilerLifecycleHooks(compiler);
|
|
1339
|
+
if (!opts.isRestart && devOptions.noBrowser) setupNoBrowserBannerOnFirstDone({
|
|
1340
|
+
compiler,
|
|
1341
|
+
browser: String(devOptions.browser || 'chromium'),
|
|
1342
|
+
manifestPath,
|
|
1343
|
+
readyPath: metadata.readyPath,
|
|
1344
|
+
distPath: primaryDistPath
|
|
1345
|
+
});
|
|
1346
|
+
const firstCompile = new Promise((resolve)=>{
|
|
1347
|
+
let settled = false;
|
|
1348
|
+
const finish = (stats)=>{
|
|
1349
|
+
if (settled) return;
|
|
1350
|
+
settled = true;
|
|
1351
|
+
resolve(stats);
|
|
1352
|
+
};
|
|
1353
|
+
if (!compiler.hooks?.done?.tap) return void finish(null);
|
|
1354
|
+
compiler.hooks.done.tap('extjs-session-restart-first-done', (stats)=>{
|
|
1355
|
+
finish(stats);
|
|
1356
|
+
});
|
|
1357
|
+
compiler.hooks.failed?.tap?.('extjs-session-restart-first-failed', ()=>{
|
|
1358
|
+
finish(null);
|
|
1359
|
+
});
|
|
1360
|
+
});
|
|
1361
|
+
const server = new RspackDevServer(serverConfig, compiler);
|
|
1362
|
+
if ('function' == typeof server.stop) {
|
|
1363
|
+
const originalDevServerStop = server.stop.bind(server);
|
|
1364
|
+
server.stop = async ()=>{
|
|
1365
|
+
try {
|
|
1366
|
+
await originalDevServerStop();
|
|
1367
|
+
} finally{
|
|
1368
|
+
uninstallManifestGuard();
|
|
1369
|
+
releaseOutputFsGuard();
|
|
1370
|
+
}
|
|
1371
|
+
};
|
|
1372
|
+
}
|
|
1373
|
+
return {
|
|
1374
|
+
compiler,
|
|
1375
|
+
server,
|
|
1376
|
+
firstCompile
|
|
1341
1377
|
};
|
|
1342
1378
|
}
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1379
|
+
async function startBundler(server) {
|
|
1380
|
+
let startTimeout;
|
|
1381
|
+
try {
|
|
1382
|
+
startTimeout = setTimeout(()=>{
|
|
1383
|
+
console.error(devServerStartTimeout(START_TIMEOUT_MS));
|
|
1384
|
+
}, START_TIMEOUT_MS);
|
|
1385
|
+
await server.start();
|
|
1386
|
+
if (startTimeout) clearTimeout(startTimeout);
|
|
1387
|
+
} catch (error) {
|
|
1388
|
+
if (startTimeout) clearTimeout(startTimeout);
|
|
1389
|
+
metadata.writeError('dev_server_start_failed', error instanceof Error ? error.message : String(error));
|
|
1390
|
+
lifecycle.failed(error instanceof Error ? error.message : String(error));
|
|
1391
|
+
humanLine(extensionJsRunnerError(error));
|
|
1392
|
+
process.exit(1);
|
|
1393
|
+
}
|
|
1357
1394
|
}
|
|
1395
|
+
const firstBundle = await createCompilerAndServer({
|
|
1396
|
+
isRestart: false
|
|
1397
|
+
});
|
|
1398
|
+
let currentServer = firstBundle.server;
|
|
1399
|
+
await startBundler(firstBundle.server);
|
|
1400
|
+
const sessionRestart = new DevSessionRestartScheduler();
|
|
1401
|
+
sessionRestart.setHandler(async (request)=>{
|
|
1402
|
+
humanLine(devServerRestarting(request));
|
|
1403
|
+
const nextBundle = await createCompilerAndServer({
|
|
1404
|
+
isRestart: true
|
|
1405
|
+
});
|
|
1406
|
+
const previous = currentServer;
|
|
1407
|
+
currentServer = null;
|
|
1408
|
+
if (previous && 'function' == typeof previous.stop) await previous.stop();
|
|
1409
|
+
currentServer = nextBundle.server;
|
|
1410
|
+
await startBundler(nextBundle.server);
|
|
1411
|
+
const stats = await nextBundle.firstCompile;
|
|
1412
|
+
if (stats && 'function' == typeof stats.hasErrors && stats.hasErrors()) return;
|
|
1413
|
+
await dispatchReload({
|
|
1414
|
+
type: 'full',
|
|
1415
|
+
label: 'extension'
|
|
1416
|
+
}, {
|
|
1417
|
+
broker: bridgeBroker
|
|
1418
|
+
});
|
|
1419
|
+
});
|
|
1420
|
+
bindDevSessionRestart(sessionRestart);
|
|
1421
|
+
process.once('exit', ()=>{
|
|
1422
|
+
sessionRestart.dispose();
|
|
1423
|
+
});
|
|
1358
1424
|
lifecycle.watchBrowserExit();
|
|
1359
|
-
setupCleanupHandlers(
|
|
1425
|
+
setupCleanupHandlers(()=>currentServer, portManager);
|
|
1360
1426
|
}
|
|
1361
1427
|
export { dev_server_devServer as devServer };
|