wxt 0.19.16 → 0.19.17

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.
@@ -13,6 +13,7 @@ export function createIntegratedUi(ctx, options) {
13
13
  };
14
14
  const remove = () => {
15
15
  options.onRemove?.(mounted);
16
+ wrapper.replaceChildren();
16
17
  wrapper.remove();
17
18
  mounted = void 0;
18
19
  };
@@ -1,3 +1,3 @@
1
1
  import { ResolvedConfig, WxtBuilder, WxtDevServer, WxtHooks } from '../../../types';
2
2
  import { Hookable } from 'hookable';
3
- export declare function createViteBuilder(wxtConfig: ResolvedConfig, hooks: Hookable<WxtHooks>, server?: WxtDevServer): Promise<WxtBuilder>;
3
+ export declare function createViteBuilder(wxtConfig: ResolvedConfig, hooks: Hookable<WxtHooks>, getWxtDevServer?: () => WxtDevServer | undefined): Promise<WxtBuilder>;
@@ -9,7 +9,7 @@ import { importEntrypointFile } from "../../utils/building/index.mjs";
9
9
  import { ViteNodeServer } from "vite-node/server";
10
10
  import { ViteNodeRunner } from "vite-node/client";
11
11
  import { installSourcemapsSupport } from "vite-node/source-map";
12
- export async function createViteBuilder(wxtConfig, hooks, server) {
12
+ export async function createViteBuilder(wxtConfig, hooks, getWxtDevServer) {
13
13
  const vite = await import("vite");
14
14
  const getBaseConfig = async (baseConfigOptions) => {
15
15
  const config = await wxtConfig.vite(wxtConfig.env);
@@ -33,6 +33,7 @@ export async function createViteBuilder(wxtConfig, hooks, server) {
33
33
  config.server.watch = {
34
34
  ignored: [`${wxtConfig.outBaseDir}/**`, `${wxtConfig.wxtDir}/**`]
35
35
  };
36
+ const server = getWxtDevServer?.();
36
37
  config.plugins ??= [];
37
38
  config.plugins.push(
38
39
  wxtPlugins.download(wxtConfig),
@@ -180,18 +181,18 @@ export async function createViteBuilder(wxtConfig, hooks, server) {
180
181
  plugins: [wxtPlugins.removeEntrypointMainFunction(wxtConfig, path)]
181
182
  };
182
183
  const config = vite.mergeConfig(baseConfig, envConfig);
183
- const server2 = await vite.createServer(config);
184
- await server2.pluginContainer.buildStart({});
184
+ const server = await vite.createServer(config);
185
+ await server.pluginContainer.buildStart({});
185
186
  const node = new ViteNodeServer(
186
187
  // @ts-ignore: Some weird type error...
187
- server2
188
+ server
188
189
  );
189
190
  installSourcemapsSupport({
190
191
  getSourceMap: (source) => node.getSourceMap(source)
191
192
  });
192
193
  const runner = new ViteNodeRunner({
193
- root: server2.config.root,
194
- base: server2.config.base,
194
+ root: server.config.root,
195
+ base: server.config.base,
195
196
  // when having the server and runner in a different context,
196
197
  // you will need to handle the communication between them
197
198
  // and pass to this function
@@ -203,7 +204,7 @@ export async function createViteBuilder(wxtConfig, hooks, server) {
203
204
  }
204
205
  });
205
206
  const res = await runner.executeFile(path);
206
- await server2.close();
207
+ await server.close();
207
208
  return res.default;
208
209
  }
209
210
  }
@@ -239,7 +240,7 @@ export async function createViteBuilder(wxtConfig, hooks, server) {
239
240
  const finalConfig = vite.mergeConfig(baseConfig, serverConfig);
240
241
  await hooks.callHook("vite:devServer:extendConfig", finalConfig);
241
242
  const viteServer = await vite.createServer(finalConfig);
242
- const server2 = {
243
+ const server = {
243
244
  async listen() {
244
245
  await viteServer.listen(info.port);
245
246
  },
@@ -259,7 +260,7 @@ export async function createViteBuilder(wxtConfig, hooks, server) {
259
260
  },
260
261
  watcher: viteServer.watcher
261
262
  };
262
- return server2;
263
+ return server;
263
264
  }
264
265
  };
265
266
  }
@@ -14,66 +14,98 @@ import { createExtensionRunner } from "./runners/index.mjs";
14
14
  import { Mutex } from "async-mutex";
15
15
  import pc from "picocolors";
16
16
  import { relative } from "node:path";
17
- import { registerWxt, wxt } from "./wxt.mjs";
17
+ import { deinitWxtModules, initWxtModules, registerWxt, wxt } from "./wxt.mjs";
18
18
  import { unnormalizePath } from "./utils/paths.mjs";
19
19
  import {
20
20
  getContentScriptJs,
21
21
  mapWxtOptionsToRegisteredContentScript
22
22
  } from "./utils/content-scripts.mjs";
23
23
  export async function createServer(inlineConfig) {
24
- await registerWxt("serve", inlineConfig, async (config) => {
25
- const { port, hostname } = config.dev.server;
26
- const serverInfo = {
24
+ await registerWxt("serve", inlineConfig);
25
+ wxt.server = await createServerInternal();
26
+ await wxt.hooks.callHook("server:created", wxt, wxt.server);
27
+ return wxt.server;
28
+ }
29
+ async function createServerInternal() {
30
+ const getServerInfo = () => {
31
+ const { port, hostname } = wxt.config.dev.server;
32
+ return {
27
33
  port,
28
34
  hostname,
29
35
  origin: `http://${hostname}:${port}`
30
36
  };
31
- const server2 = {
32
- ...serverInfo,
33
- get watcher() {
34
- return builderServer.watcher;
35
- },
36
- get ws() {
37
- return builderServer.ws;
38
- },
39
- currentOutput: void 0,
40
- async start() {
41
- await builderServer.listen();
42
- wxt.logger.success(`Started dev server @ ${serverInfo.origin}`);
43
- await buildAndOpenBrowser();
44
- },
45
- async stop() {
46
- await runner.closeBrowser();
47
- await builderServer.close();
48
- },
49
- async restart() {
50
- await closeAndRecreateRunner();
51
- await buildAndOpenBrowser();
52
- },
53
- transformHtml(url, html, originalUrl) {
54
- return builderServer.transformHtml(url, html, originalUrl);
55
- },
56
- reloadContentScript(payload) {
57
- server2.ws.send("wxt:reload-content-script", payload);
58
- },
59
- reloadPage(path) {
60
- server2.ws.send("wxt:reload-page", path);
61
- },
62
- reloadExtension() {
63
- server2.ws.send("wxt:reload-extension");
64
- },
65
- async restartBrowser() {
66
- await closeAndRecreateRunner();
67
- await runner.openBrowser();
68
- }
69
- };
70
- return server2;
71
- });
72
- const server = wxt.server;
37
+ };
73
38
  let [runner, builderServer] = await Promise.all([
74
39
  createExtensionRunner(),
75
- wxt.builder.createServer(server)
40
+ wxt.builder.createServer(getServerInfo())
76
41
  ]);
42
+ let wasStopped = false;
43
+ const server = {
44
+ get hostname() {
45
+ return getServerInfo().hostname;
46
+ },
47
+ get port() {
48
+ return getServerInfo().port;
49
+ },
50
+ get origin() {
51
+ return getServerInfo().origin;
52
+ },
53
+ get watcher() {
54
+ return builderServer.watcher;
55
+ },
56
+ get ws() {
57
+ return builderServer.ws;
58
+ },
59
+ currentOutput: void 0,
60
+ async start() {
61
+ if (wasStopped) {
62
+ await wxt.reloadConfig();
63
+ runner = await createExtensionRunner();
64
+ builderServer = await wxt.builder.createServer(getServerInfo());
65
+ await initWxtModules();
66
+ }
67
+ await builderServer.listen();
68
+ wxt.logger.success(`Started dev server @ ${server.origin}`);
69
+ await wxt.hooks.callHook("server:started", wxt, server);
70
+ await buildAndOpenBrowser();
71
+ server.ws.on("wxt:background-initialized", () => {
72
+ if (server.currentOutput == null) return;
73
+ reloadContentScripts(server.currentOutput.steps, server);
74
+ });
75
+ const reloadOnChange = createFileReloader(server);
76
+ server.watcher.on("all", reloadOnChange);
77
+ },
78
+ async stop() {
79
+ wasStopped = true;
80
+ await runner.closeBrowser();
81
+ await builderServer.close();
82
+ await wxt.hooks.callHook("server:closed", wxt, server);
83
+ deinitWxtModules();
84
+ server.currentOutput = void 0;
85
+ },
86
+ async restart() {
87
+ await server.stop();
88
+ await server.start();
89
+ },
90
+ transformHtml(url, html, originalUrl) {
91
+ return builderServer.transformHtml(url, html, originalUrl);
92
+ },
93
+ reloadContentScript(payload) {
94
+ server.ws.send("wxt:reload-content-script", payload);
95
+ },
96
+ reloadPage(path) {
97
+ server.ws.send("wxt:reload-page", path);
98
+ },
99
+ reloadExtension() {
100
+ server.ws.send("wxt:reload-extension");
101
+ },
102
+ async restartBrowser() {
103
+ await runner.closeBrowser();
104
+ await wxt.reloadConfig();
105
+ runner = await createExtensionRunner();
106
+ await runner.openBrowser();
107
+ }
108
+ };
77
109
  const buildAndOpenBrowser = async () => {
78
110
  server.currentOutput = await internalBuild();
79
111
  try {
@@ -83,17 +115,6 @@ export async function createServer(inlineConfig) {
83
115
  }
84
116
  await runner.openBrowser();
85
117
  };
86
- const closeAndRecreateRunner = async () => {
87
- await runner.closeBrowser();
88
- await wxt.reloadConfig();
89
- runner = await createExtensionRunner();
90
- };
91
- server.ws.on("wxt:background-initialized", () => {
92
- if (server.currentOutput == null) return;
93
- reloadContentScripts(server.currentOutput.steps, server);
94
- });
95
- const reloadOnChange = createFileReloader(server);
96
- server.watcher.on("all", reloadOnChange);
97
118
  return server;
98
119
  }
99
120
  function createFileReloader(server) {
@@ -10,6 +10,7 @@ import { builtinModules } from "../builtin-modules/index.mjs";
10
10
  import { getEslintVersion } from "./utils/eslint.mjs";
11
11
  import { safeStringToNumber } from "./utils/number.mjs";
12
12
  import { loadEnv } from "./utils/env.mjs";
13
+ import { getPort } from "get-port-please";
13
14
  export async function resolveConfig(inlineConfig, command) {
14
15
  let userConfig = {};
15
16
  let userConfigMetadata;
@@ -82,14 +83,19 @@ export async function resolveConfig(inlineConfig, command) {
82
83
  );
83
84
  let devServerConfig;
84
85
  if (command === "serve") {
86
+ const hostname = mergedConfig.dev?.server?.hostname ?? "localhost";
85
87
  let port = mergedConfig.dev?.server?.port;
86
88
  if (port == null || !isFinite(port)) {
87
- const { default: getPort, portNumbers } = await import("get-port");
88
- port = await getPort({ port: portNumbers(3e3, 3010) });
89
+ port = await getPort({
90
+ port: 3e3,
91
+ portRange: [3001, 3010],
92
+ // Passing host required for Mac, unsure of Windows/Linux
93
+ host: hostname
94
+ });
89
95
  }
90
96
  devServerConfig = {
91
97
  port,
92
- hostname: mergedConfig.dev?.server?.hostname ?? "localhost",
98
+ hostname,
93
99
  watchDebounce: safeStringToNumber(process.env.WXT_WATCH_DEBOUNCE) ?? 800
94
100
  };
95
101
  }
@@ -274,9 +280,10 @@ async function getUnimportEslintOptions(wxtDir, options) {
274
280
  case "auto":
275
281
  const version = await getEslintVersion();
276
282
  let major = parseInt(version[0]);
283
+ if (isNaN(major)) eslintEnabled = false;
277
284
  if (major <= 8) eslintEnabled = 8;
278
285
  else if (major >= 9) eslintEnabled = 9;
279
- else eslintEnabled = 8;
286
+ else eslintEnabled = false;
280
287
  break;
281
288
  case true:
282
289
  eslintEnabled = 8;
@@ -17,7 +17,11 @@ import { BuildOutput, BuildStepOutput, EntrypointGroup } from '../../../types';
17
17
  * - Background script is changed
18
18
  * - Manifest is different
19
19
  * - Restart browser
20
- * - Config file changed (wxt.config.ts, .env, web-ext.config.ts, etc)
20
+ * - web-ext.config.ts (runner config changes)
21
+ * - Full dev server restart
22
+ * - wxt.config.ts (main config file)
23
+ * - modules/* (any file related to WXT modules)
24
+ * - .env (environment variable changed could effect build)
21
25
  */
22
26
  export declare function detectDevChanges(changedFiles: string[], currentOutput: BuildOutput): DevModeChange;
23
27
  /**
@@ -7,6 +7,11 @@ export function detectDevChanges(changedFiles, currentOutput) {
7
7
  (file) => file === wxt.config.userConfigMetadata.configFile
8
8
  );
9
9
  if (isConfigChange) return { type: "full-restart" };
10
+ const isWxtModuleChange = some(
11
+ changedFiles,
12
+ (file) => file.startsWith(wxt.config.modulesDir)
13
+ );
14
+ if (isWxtModuleChange) return { type: "full-restart" };
10
15
  const isRunnerChange = some(
11
16
  changedFiles,
12
17
  (file) => file === wxt.config.runnerConfig.configFile
@@ -28,7 +28,7 @@ export function hashContentScriptOptions(options) {
28
28
  }
29
29
  export function mapWxtOptionsToContentScript(options, js, css) {
30
30
  return {
31
- matches: options.matches,
31
+ matches: options.matches ?? [],
32
32
  all_frames: options.allFrames,
33
33
  match_about_blank: options.matchAboutBlank,
34
34
  exclude_globs: options.excludeGlobs,
@@ -35,10 +35,10 @@ export declare function stripPathFromMatchPattern(pattern: string): string;
35
35
  /**
36
36
  * Converts all MV3 web accessible resources to their MV2 forms. MV3 web accessible resources are
37
37
  * generated in this file, and may be defined by the user in their manifest. In both cases, when
38
- * targetting MV2, automatically convert their definitions down to the basic MV2 array.
38
+ * targeting MV2, automatically convert their definitions down to the basic MV2 array.
39
39
  */
40
40
  export declare function convertWebAccessibleResourcesToMv2(manifest: Manifest.WebExtensionManifest): void;
41
41
  /**
42
42
  * Make sure all resources are in MV3 format. If not, add a wanring
43
43
  */
44
- export declare function validateMv3WebAccessbileResources(manifest: Manifest.WebExtensionManifest): void;
44
+ export declare function validateMv3WebAccessibleResources(manifest: Manifest.WebExtensionManifest): void;
@@ -70,10 +70,11 @@ export async function generateManifest(entrypoints, buildOutput) {
70
70
  if (wxt.config.manifestVersion === 2) {
71
71
  convertWebAccessibleResourcesToMv2(manifest);
72
72
  convertActionToMv2(manifest);
73
+ convertCspToMv2(manifest);
73
74
  moveHostPermissionsToPermissions(manifest);
74
75
  }
75
76
  if (wxt.config.manifestVersion === 3) {
76
- validateMv3WebAccessbileResources(manifest);
77
+ validateMv3WebAccessibleResources(manifest);
77
78
  }
78
79
  stripKeys(manifest);
79
80
  if (manifest.name == null)
@@ -262,7 +263,7 @@ function addEntrypoints(manifest, entrypoints, buildOutput) {
262
263
  const cssMap = getContentScriptsCssMap(buildOutput, contentScripts);
263
264
  if (wxt.config.command === "serve" && wxt.config.manifestVersion === 3) {
264
265
  contentScripts.forEach((script) => {
265
- script.options.matches.forEach((matchPattern) => {
266
+ script.options.matches?.forEach((matchPattern) => {
266
267
  addHostPermission(manifest, matchPattern);
267
268
  });
268
269
  });
@@ -297,7 +298,7 @@ function addEntrypoints(manifest, entrypoints, buildOutput) {
297
298
  );
298
299
  }
299
300
  runtimeContentScripts.forEach((script) => {
300
- script.options.matches.forEach((matchPattern) => {
301
+ script.options.matches?.forEach((matchPattern) => {
301
302
  addHostPermission(manifest, matchPattern);
302
303
  });
303
304
  });
@@ -353,28 +354,20 @@ function addDevModeCsp(manifest) {
353
354
  addPermission(manifest, permission);
354
355
  }
355
356
  const extensionPagesCsp = new ContentSecurityPolicy(
356
- manifest.manifest_version === 3 ? (
357
- // @ts-expect-error: extension_pages is not typed
358
- manifest.content_security_policy?.extension_pages ?? "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
359
- ) : manifest.content_security_policy ?? "script-src 'self'; object-src 'self';"
360
- // default CSP for MV2
357
+ // @ts-expect-error: extension_pages exists, we convert MV2 CSPs to this earlier in the process
358
+ manifest.content_security_policy?.extension_pages ?? (manifest.manifest_version === 3 ? DEFAULT_MV3_EXTENSION_PAGES_CSP : DEFAULT_MV2_CSP)
361
359
  );
362
360
  const sandboxCsp = new ContentSecurityPolicy(
363
361
  // @ts-expect-error: sandbox is not typed
364
- manifest.content_security_policy?.sandbox ?? "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
365
- // default sandbox CSP for MV3
362
+ manifest.content_security_policy?.sandbox ?? DEFAULT_MV3_SANDBOX_CSP
366
363
  );
367
- if (wxt.server) {
364
+ if (wxt.config.command === "serve") {
368
365
  extensionPagesCsp.add("script-src", allowedCsp);
369
366
  sandboxCsp.add("script-src", allowedCsp);
370
367
  }
371
- if (manifest.manifest_version === 3) {
372
- manifest.content_security_policy ??= {};
373
- manifest.content_security_policy.extension_pages = extensionPagesCsp.toString();
374
- manifest.content_security_policy.sandbox = sandboxCsp.toString();
375
- } else {
376
- manifest.content_security_policy = extensionPagesCsp.toString();
377
- }
368
+ manifest.content_security_policy ??= {};
369
+ manifest.content_security_policy.extension_pages = extensionPagesCsp.toString();
370
+ manifest.content_security_policy.sandbox = sandboxCsp.toString();
378
371
  }
379
372
  function addDevModePermissions(manifest) {
380
373
  addPermission(manifest, "tabs");
@@ -400,7 +393,7 @@ export function getContentScriptCssWebAccessibleResources(contentScripts, conten
400
393
  if (cssFile == null) return;
401
394
  resources.push({
402
395
  resources: [cssFile],
403
- matches: script.options.matches.map(
396
+ matches: script.options.matches?.map(
404
397
  (matchPattern) => stripPathFromMatchPattern(matchPattern)
405
398
  )
406
399
  });
@@ -457,7 +450,12 @@ function convertActionToMv2(manifest) {
457
450
  return;
458
451
  manifest.browser_action = manifest.action;
459
452
  }
460
- export function validateMv3WebAccessbileResources(manifest) {
453
+ function convertCspToMv2(manifest) {
454
+ if (typeof manifest.content_security_policy === "string" || manifest.content_security_policy?.extension_pages == null)
455
+ return;
456
+ manifest.content_security_policy = manifest.content_security_policy.extension_pages;
457
+ }
458
+ export function validateMv3WebAccessibleResources(manifest) {
461
459
  if (manifest.web_accessible_resources == null) return;
462
460
  const stringResources = manifest.web_accessible_resources.filter(
463
461
  (item) => typeof item === "string"
@@ -510,3 +508,6 @@ const mv3OnlyKeys = [
510
508
  "side_panel"
511
509
  ];
512
510
  const firefoxMv3OnlyKeys = ["host_permissions"];
511
+ const DEFAULT_MV3_EXTENSION_PAGES_CSP = "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';";
512
+ const DEFAULT_MV3_SANDBOX_CSP = "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';";
513
+ const DEFAULT_MV2_CSP = "script-src 'self'; object-src 'self';";
@@ -1585,6 +1585,9 @@ export declare const fakeResolvedConfig: (overrides?: {
1585
1585
  'zip:sources:start'?: {} | undefined;
1586
1586
  'zip:sources:done'?: {} | undefined;
1587
1587
  'zip:done'?: {} | undefined;
1588
+ 'server:created'?: {} | undefined;
1589
+ 'server:started'?: {} | undefined;
1590
+ 'server:closed'?: {} | undefined;
1588
1591
  build?: {
1589
1592
  before?: {} | undefined;
1590
1593
  done?: {} | undefined;
@@ -1679,6 +1682,15 @@ export declare const fakeResolvedConfig: (overrides?: {
1679
1682
  done?: {} | undefined;
1680
1683
  start?: {} | undefined;
1681
1684
  } | undefined;
1685
+ server?: {
1686
+ closed?: {} | undefined;
1687
+ created?: {} | undefined;
1688
+ started?: {} | undefined;
1689
+ } | {
1690
+ closed?: {} | undefined;
1691
+ created?: {} | undefined;
1692
+ started?: {} | undefined;
1693
+ } | undefined;
1682
1694
  } | {
1683
1695
  build?: {
1684
1696
  before?: {} | undefined;
@@ -1774,6 +1786,15 @@ export declare const fakeResolvedConfig: (overrides?: {
1774
1786
  done?: {} | undefined;
1775
1787
  start?: {} | undefined;
1776
1788
  } | undefined;
1789
+ server?: {
1790
+ closed?: {} | undefined;
1791
+ created?: {} | undefined;
1792
+ started?: {} | undefined;
1793
+ } | {
1794
+ closed?: {} | undefined;
1795
+ created?: {} | undefined;
1796
+ started?: {} | undefined;
1797
+ } | undefined;
1777
1798
  ready?: {} | undefined;
1778
1799
  } | undefined;
1779
1800
  modules?: (string | undefined)[] | undefined;
@@ -2305,6 +2326,9 @@ export declare const fakeResolvedConfig: (overrides?: {
2305
2326
  'zip:sources:start'?: {} | undefined;
2306
2327
  'zip:sources:done'?: {} | undefined;
2307
2328
  'zip:done'?: {} | undefined;
2329
+ 'server:created'?: {} | undefined;
2330
+ 'server:started'?: {} | undefined;
2331
+ 'server:closed'?: {} | undefined;
2308
2332
  build?: {
2309
2333
  before?: {} | undefined;
2310
2334
  done?: {} | undefined;
@@ -2399,6 +2423,15 @@ export declare const fakeResolvedConfig: (overrides?: {
2399
2423
  done?: {} | undefined;
2400
2424
  start?: {} | undefined;
2401
2425
  } | undefined;
2426
+ server?: {
2427
+ closed?: {} | undefined;
2428
+ created?: {} | undefined;
2429
+ started?: {} | undefined;
2430
+ } | {
2431
+ closed?: {} | undefined;
2432
+ created?: {} | undefined;
2433
+ started?: {} | undefined;
2434
+ } | undefined;
2402
2435
  } | {
2403
2436
  build?: {
2404
2437
  before?: {} | undefined;
@@ -2494,6 +2527,15 @@ export declare const fakeResolvedConfig: (overrides?: {
2494
2527
  done?: {} | undefined;
2495
2528
  start?: {} | undefined;
2496
2529
  } | undefined;
2530
+ server?: {
2531
+ closed?: {} | undefined;
2532
+ created?: {} | undefined;
2533
+ started?: {} | undefined;
2534
+ } | {
2535
+ closed?: {} | undefined;
2536
+ created?: {} | undefined;
2537
+ started?: {} | undefined;
2538
+ } | undefined;
2497
2539
  ready?: {} | undefined;
2498
2540
  } | undefined;
2499
2541
  modules?: (string | undefined)[] | undefined;
@@ -3051,6 +3093,9 @@ export declare const fakeResolvedConfig: (overrides?: {
3051
3093
  'zip:sources:start'?: {} | undefined;
3052
3094
  'zip:sources:done'?: {} | undefined;
3053
3095
  'zip:done'?: {} | undefined;
3096
+ 'server:created'?: {} | undefined;
3097
+ 'server:started'?: {} | undefined;
3098
+ 'server:closed'?: {} | undefined;
3054
3099
  build?: {
3055
3100
  before?: {} | undefined;
3056
3101
  done?: {} | undefined;
@@ -3145,6 +3190,15 @@ export declare const fakeResolvedConfig: (overrides?: {
3145
3190
  done?: {} | undefined;
3146
3191
  start?: {} | undefined;
3147
3192
  } | undefined;
3193
+ server?: {
3194
+ closed?: {} | undefined;
3195
+ created?: {} | undefined;
3196
+ started?: {} | undefined;
3197
+ } | {
3198
+ closed?: {} | undefined;
3199
+ created?: {} | undefined;
3200
+ started?: {} | undefined;
3201
+ } | undefined;
3148
3202
  } | {
3149
3203
  build?: {
3150
3204
  before?: {} | undefined;
@@ -3240,6 +3294,15 @@ export declare const fakeResolvedConfig: (overrides?: {
3240
3294
  done?: {} | undefined;
3241
3295
  start?: {} | undefined;
3242
3296
  } | undefined;
3297
+ server?: {
3298
+ closed?: {} | undefined;
3299
+ created?: {} | undefined;
3300
+ started?: {} | undefined;
3301
+ } | {
3302
+ closed?: {} | undefined;
3303
+ created?: {} | undefined;
3304
+ started?: {} | undefined;
3305
+ } | undefined;
3243
3306
  ready?: {} | undefined;
3244
3307
  } | undefined;
3245
3308
  modules?: (string | undefined)[] | undefined;
@@ -3297,6 +3360,9 @@ export declare const fakeResolvedConfig: (overrides?: {
3297
3360
  'zip:sources:start'?: {} | undefined;
3298
3361
  'zip:sources:done'?: {} | undefined;
3299
3362
  'zip:done'?: {} | undefined;
3363
+ 'server:created'?: {} | undefined;
3364
+ 'server:started'?: {} | undefined;
3365
+ 'server:closed'?: {} | undefined;
3300
3366
  build?: {
3301
3367
  before?: {} | undefined;
3302
3368
  done?: {} | undefined;
@@ -3391,6 +3457,15 @@ export declare const fakeResolvedConfig: (overrides?: {
3391
3457
  done?: {} | undefined;
3392
3458
  start?: {} | undefined;
3393
3459
  } | undefined;
3460
+ server?: {
3461
+ closed?: {} | undefined;
3462
+ created?: {} | undefined;
3463
+ started?: {} | undefined;
3464
+ } | {
3465
+ closed?: {} | undefined;
3466
+ created?: {} | undefined;
3467
+ started?: {} | undefined;
3468
+ } | undefined;
3394
3469
  } | {
3395
3470
  build?: {
3396
3471
  before?: {} | undefined;
@@ -3486,6 +3561,15 @@ export declare const fakeResolvedConfig: (overrides?: {
3486
3561
  done?: {} | undefined;
3487
3562
  start?: {} | undefined;
3488
3563
  } | undefined;
3564
+ server?: {
3565
+ closed?: {} | undefined;
3566
+ created?: {} | undefined;
3567
+ started?: {} | undefined;
3568
+ } | {
3569
+ closed?: {} | undefined;
3570
+ created?: {} | undefined;
3571
+ started?: {} | undefined;
3572
+ } | undefined;
3489
3573
  ready?: {} | undefined;
3490
3574
  } | undefined;
3491
3575
  builtinModules?: ({
@@ -3529,6 +3613,9 @@ export declare const fakeResolvedConfig: (overrides?: {
3529
3613
  'zip:sources:start'?: {} | undefined;
3530
3614
  'zip:sources:done'?: {} | undefined;
3531
3615
  'zip:done'?: {} | undefined;
3616
+ 'server:created'?: {} | undefined;
3617
+ 'server:started'?: {} | undefined;
3618
+ 'server:closed'?: {} | undefined;
3532
3619
  build?: {
3533
3620
  before?: {} | undefined;
3534
3621
  done?: {} | undefined;
@@ -3623,6 +3710,15 @@ export declare const fakeResolvedConfig: (overrides?: {
3623
3710
  done?: {} | undefined;
3624
3711
  start?: {} | undefined;
3625
3712
  } | undefined;
3713
+ server?: {
3714
+ closed?: {} | undefined;
3715
+ created?: {} | undefined;
3716
+ started?: {} | undefined;
3717
+ } | {
3718
+ closed?: {} | undefined;
3719
+ created?: {} | undefined;
3720
+ started?: {} | undefined;
3721
+ } | undefined;
3626
3722
  } | {
3627
3723
  build?: {
3628
3724
  before?: {} | undefined;
@@ -3718,6 +3814,15 @@ export declare const fakeResolvedConfig: (overrides?: {
3718
3814
  done?: {} | undefined;
3719
3815
  start?: {} | undefined;
3720
3816
  } | undefined;
3817
+ server?: {
3818
+ closed?: {} | undefined;
3819
+ created?: {} | undefined;
3820
+ started?: {} | undefined;
3821
+ } | {
3822
+ closed?: {} | undefined;
3823
+ created?: {} | undefined;
3824
+ started?: {} | undefined;
3825
+ } | undefined;
3721
3826
  ready?: {} | undefined;
3722
3827
  } | undefined;
3723
3828
  setup?: {} | undefined;
@@ -3765,6 +3870,9 @@ export declare const fakeResolvedConfig: (overrides?: {
3765
3870
  'zip:sources:start'?: {} | undefined;
3766
3871
  'zip:sources:done'?: {} | undefined;
3767
3872
  'zip:done'?: {} | undefined;
3873
+ 'server:created'?: {} | undefined;
3874
+ 'server:started'?: {} | undefined;
3875
+ 'server:closed'?: {} | undefined;
3768
3876
  build?: {
3769
3877
  before?: {} | undefined;
3770
3878
  done?: {} | undefined;
@@ -3859,6 +3967,15 @@ export declare const fakeResolvedConfig: (overrides?: {
3859
3967
  done?: {} | undefined;
3860
3968
  start?: {} | undefined;
3861
3969
  } | undefined;
3970
+ server?: {
3971
+ closed?: {} | undefined;
3972
+ created?: {} | undefined;
3973
+ started?: {} | undefined;
3974
+ } | {
3975
+ closed?: {} | undefined;
3976
+ created?: {} | undefined;
3977
+ started?: {} | undefined;
3978
+ } | undefined;
3862
3979
  } | {
3863
3980
  build?: {
3864
3981
  before?: {} | undefined;
@@ -3954,6 +4071,15 @@ export declare const fakeResolvedConfig: (overrides?: {
3954
4071
  done?: {} | undefined;
3955
4072
  start?: {} | undefined;
3956
4073
  } | undefined;
4074
+ server?: {
4075
+ closed?: {} | undefined;
4076
+ created?: {} | undefined;
4077
+ started?: {} | undefined;
4078
+ } | {
4079
+ closed?: {} | undefined;
4080
+ created?: {} | undefined;
4081
+ started?: {} | undefined;
4082
+ } | undefined;
3957
4083
  ready?: {} | undefined;
3958
4084
  } | undefined;
3959
4085
  setup?: {} | undefined;
@@ -5132,6 +5258,9 @@ export declare const fakeWxt: (overrides?: {
5132
5258
  'zip:sources:start'?: {} | undefined;
5133
5259
  'zip:sources:done'?: {} | undefined;
5134
5260
  'zip:done'?: {} | undefined;
5261
+ 'server:created'?: {} | undefined;
5262
+ 'server:started'?: {} | undefined;
5263
+ 'server:closed'?: {} | undefined;
5135
5264
  build?: {
5136
5265
  before?: {} | undefined;
5137
5266
  done?: {} | undefined;
@@ -5226,6 +5355,15 @@ export declare const fakeWxt: (overrides?: {
5226
5355
  done?: {} | undefined;
5227
5356
  start?: {} | undefined;
5228
5357
  } | undefined;
5358
+ server?: {
5359
+ closed?: {} | undefined;
5360
+ created?: {} | undefined;
5361
+ started?: {} | undefined;
5362
+ } | {
5363
+ closed?: {} | undefined;
5364
+ created?: {} | undefined;
5365
+ started?: {} | undefined;
5366
+ } | undefined;
5229
5367
  } | {
5230
5368
  build?: {
5231
5369
  before?: {} | undefined;
@@ -5321,6 +5459,15 @@ export declare const fakeWxt: (overrides?: {
5321
5459
  done?: {} | undefined;
5322
5460
  start?: {} | undefined;
5323
5461
  } | undefined;
5462
+ server?: {
5463
+ closed?: {} | undefined;
5464
+ created?: {} | undefined;
5465
+ started?: {} | undefined;
5466
+ } | {
5467
+ closed?: {} | undefined;
5468
+ created?: {} | undefined;
5469
+ started?: {} | undefined;
5470
+ } | undefined;
5324
5471
  ready?: {} | undefined;
5325
5472
  } | undefined;
5326
5473
  modules?: (string | undefined)[] | undefined;
@@ -5852,6 +5999,9 @@ export declare const fakeWxt: (overrides?: {
5852
5999
  'zip:sources:start'?: {} | undefined;
5853
6000
  'zip:sources:done'?: {} | undefined;
5854
6001
  'zip:done'?: {} | undefined;
6002
+ 'server:created'?: {} | undefined;
6003
+ 'server:started'?: {} | undefined;
6004
+ 'server:closed'?: {} | undefined;
5855
6005
  build?: {
5856
6006
  before?: {} | undefined;
5857
6007
  done?: {} | undefined;
@@ -5946,6 +6096,15 @@ export declare const fakeWxt: (overrides?: {
5946
6096
  done?: {} | undefined;
5947
6097
  start?: {} | undefined;
5948
6098
  } | undefined;
6099
+ server?: {
6100
+ closed?: {} | undefined;
6101
+ created?: {} | undefined;
6102
+ started?: {} | undefined;
6103
+ } | {
6104
+ closed?: {} | undefined;
6105
+ created?: {} | undefined;
6106
+ started?: {} | undefined;
6107
+ } | undefined;
5949
6108
  } | {
5950
6109
  build?: {
5951
6110
  before?: {} | undefined;
@@ -6041,6 +6200,15 @@ export declare const fakeWxt: (overrides?: {
6041
6200
  done?: {} | undefined;
6042
6201
  start?: {} | undefined;
6043
6202
  } | undefined;
6203
+ server?: {
6204
+ closed?: {} | undefined;
6205
+ created?: {} | undefined;
6206
+ started?: {} | undefined;
6207
+ } | {
6208
+ closed?: {} | undefined;
6209
+ created?: {} | undefined;
6210
+ started?: {} | undefined;
6211
+ } | undefined;
6044
6212
  ready?: {} | undefined;
6045
6213
  } | undefined;
6046
6214
  modules?: (string | undefined)[] | undefined;
@@ -6598,6 +6766,9 @@ export declare const fakeWxt: (overrides?: {
6598
6766
  'zip:sources:start'?: {} | undefined;
6599
6767
  'zip:sources:done'?: {} | undefined;
6600
6768
  'zip:done'?: {} | undefined;
6769
+ 'server:created'?: {} | undefined;
6770
+ 'server:started'?: {} | undefined;
6771
+ 'server:closed'?: {} | undefined;
6601
6772
  build?: {
6602
6773
  before?: {} | undefined;
6603
6774
  done?: {} | undefined;
@@ -6692,6 +6863,15 @@ export declare const fakeWxt: (overrides?: {
6692
6863
  done?: {} | undefined;
6693
6864
  start?: {} | undefined;
6694
6865
  } | undefined;
6866
+ server?: {
6867
+ closed?: {} | undefined;
6868
+ created?: {} | undefined;
6869
+ started?: {} | undefined;
6870
+ } | {
6871
+ closed?: {} | undefined;
6872
+ created?: {} | undefined;
6873
+ started?: {} | undefined;
6874
+ } | undefined;
6695
6875
  } | {
6696
6876
  build?: {
6697
6877
  before?: {} | undefined;
@@ -6787,6 +6967,15 @@ export declare const fakeWxt: (overrides?: {
6787
6967
  done?: {} | undefined;
6788
6968
  start?: {} | undefined;
6789
6969
  } | undefined;
6970
+ server?: {
6971
+ closed?: {} | undefined;
6972
+ created?: {} | undefined;
6973
+ started?: {} | undefined;
6974
+ } | {
6975
+ closed?: {} | undefined;
6976
+ created?: {} | undefined;
6977
+ started?: {} | undefined;
6978
+ } | undefined;
6790
6979
  ready?: {} | undefined;
6791
6980
  } | undefined;
6792
6981
  modules?: (string | undefined)[] | undefined;
@@ -6844,6 +7033,9 @@ export declare const fakeWxt: (overrides?: {
6844
7033
  'zip:sources:start'?: {} | undefined;
6845
7034
  'zip:sources:done'?: {} | undefined;
6846
7035
  'zip:done'?: {} | undefined;
7036
+ 'server:created'?: {} | undefined;
7037
+ 'server:started'?: {} | undefined;
7038
+ 'server:closed'?: {} | undefined;
6847
7039
  build?: {
6848
7040
  before?: {} | undefined;
6849
7041
  done?: {} | undefined;
@@ -6938,6 +7130,15 @@ export declare const fakeWxt: (overrides?: {
6938
7130
  done?: {} | undefined;
6939
7131
  start?: {} | undefined;
6940
7132
  } | undefined;
7133
+ server?: {
7134
+ closed?: {} | undefined;
7135
+ created?: {} | undefined;
7136
+ started?: {} | undefined;
7137
+ } | {
7138
+ closed?: {} | undefined;
7139
+ created?: {} | undefined;
7140
+ started?: {} | undefined;
7141
+ } | undefined;
6941
7142
  } | {
6942
7143
  build?: {
6943
7144
  before?: {} | undefined;
@@ -7033,6 +7234,15 @@ export declare const fakeWxt: (overrides?: {
7033
7234
  done?: {} | undefined;
7034
7235
  start?: {} | undefined;
7035
7236
  } | undefined;
7237
+ server?: {
7238
+ closed?: {} | undefined;
7239
+ created?: {} | undefined;
7240
+ started?: {} | undefined;
7241
+ } | {
7242
+ closed?: {} | undefined;
7243
+ created?: {} | undefined;
7244
+ started?: {} | undefined;
7245
+ } | undefined;
7036
7246
  ready?: {} | undefined;
7037
7247
  } | undefined;
7038
7248
  builtinModules?: ({
@@ -7076,6 +7286,9 @@ export declare const fakeWxt: (overrides?: {
7076
7286
  'zip:sources:start'?: {} | undefined;
7077
7287
  'zip:sources:done'?: {} | undefined;
7078
7288
  'zip:done'?: {} | undefined;
7289
+ 'server:created'?: {} | undefined;
7290
+ 'server:started'?: {} | undefined;
7291
+ 'server:closed'?: {} | undefined;
7079
7292
  build?: {
7080
7293
  before?: {} | undefined;
7081
7294
  done?: {} | undefined;
@@ -7170,6 +7383,15 @@ export declare const fakeWxt: (overrides?: {
7170
7383
  done?: {} | undefined;
7171
7384
  start?: {} | undefined;
7172
7385
  } | undefined;
7386
+ server?: {
7387
+ closed?: {} | undefined;
7388
+ created?: {} | undefined;
7389
+ started?: {} | undefined;
7390
+ } | {
7391
+ closed?: {} | undefined;
7392
+ created?: {} | undefined;
7393
+ started?: {} | undefined;
7394
+ } | undefined;
7173
7395
  } | {
7174
7396
  build?: {
7175
7397
  before?: {} | undefined;
@@ -7265,6 +7487,15 @@ export declare const fakeWxt: (overrides?: {
7265
7487
  done?: {} | undefined;
7266
7488
  start?: {} | undefined;
7267
7489
  } | undefined;
7490
+ server?: {
7491
+ closed?: {} | undefined;
7492
+ created?: {} | undefined;
7493
+ started?: {} | undefined;
7494
+ } | {
7495
+ closed?: {} | undefined;
7496
+ created?: {} | undefined;
7497
+ started?: {} | undefined;
7498
+ } | undefined;
7268
7499
  ready?: {} | undefined;
7269
7500
  } | undefined;
7270
7501
  setup?: {} | undefined;
@@ -7312,6 +7543,9 @@ export declare const fakeWxt: (overrides?: {
7312
7543
  'zip:sources:start'?: {} | undefined;
7313
7544
  'zip:sources:done'?: {} | undefined;
7314
7545
  'zip:done'?: {} | undefined;
7546
+ 'server:created'?: {} | undefined;
7547
+ 'server:started'?: {} | undefined;
7548
+ 'server:closed'?: {} | undefined;
7315
7549
  build?: {
7316
7550
  before?: {} | undefined;
7317
7551
  done?: {} | undefined;
@@ -7406,6 +7640,15 @@ export declare const fakeWxt: (overrides?: {
7406
7640
  done?: {} | undefined;
7407
7641
  start?: {} | undefined;
7408
7642
  } | undefined;
7643
+ server?: {
7644
+ closed?: {} | undefined;
7645
+ created?: {} | undefined;
7646
+ started?: {} | undefined;
7647
+ } | {
7648
+ closed?: {} | undefined;
7649
+ created?: {} | undefined;
7650
+ started?: {} | undefined;
7651
+ } | undefined;
7409
7652
  } | {
7410
7653
  build?: {
7411
7654
  before?: {} | undefined;
@@ -7501,6 +7744,15 @@ export declare const fakeWxt: (overrides?: {
7501
7744
  done?: {} | undefined;
7502
7745
  start?: {} | undefined;
7503
7746
  } | undefined;
7747
+ server?: {
7748
+ closed?: {} | undefined;
7749
+ created?: {} | undefined;
7750
+ started?: {} | undefined;
7751
+ } | {
7752
+ closed?: {} | undefined;
7753
+ created?: {} | undefined;
7754
+ started?: {} | undefined;
7755
+ } | undefined;
7504
7756
  ready?: {} | undefined;
7505
7757
  } | undefined;
7506
7758
  setup?: {} | undefined;
@@ -1,4 +1,4 @@
1
- import { InlineConfig, ResolvedConfig, Wxt, WxtCommand, WxtDevServer } from '../types';
1
+ import { InlineConfig, Wxt, WxtCommand } from '../types';
2
2
  /**
3
3
  * Global variable set once `createWxt` is called once. Since this variable is used everywhere, this
4
4
  * global can be used instead of passing the variable as a function parameter everywhere.
@@ -7,7 +7,12 @@ export declare let wxt: Wxt;
7
7
  /**
8
8
  * Create and register a global instance of the Wxt interface for use throughout the project.
9
9
  */
10
- export declare function registerWxt(command: WxtCommand, inlineConfig?: InlineConfig, getServer?: (config: ResolvedConfig) => Promise<WxtDevServer>): Promise<void>;
10
+ export declare function registerWxt(command: WxtCommand, inlineConfig?: InlineConfig): Promise<void>;
11
+ export declare function initWxtModules(): Promise<void>;
12
+ /**
13
+ * Unloads WXT modules.
14
+ */
15
+ export declare function deinitWxtModules(): void;
11
16
  /**
12
17
  * @internal ONLY USE FOR TESTING.
13
18
  *
package/dist/core/wxt.mjs CHANGED
@@ -5,12 +5,11 @@ import { createViteBuilder } from "./builders/vite/index.mjs";
5
5
  import { builtinModules } from "../builtin-modules/index.mjs";
6
6
  import { relative } from "path";
7
7
  export let wxt;
8
- export async function registerWxt(command, inlineConfig = {}, getServer) {
8
+ export async function registerWxt(command, inlineConfig = {}) {
9
9
  process.env.NODE_ENV ??= command === "serve" ? "development" : "production";
10
10
  const hooks = createHooks();
11
11
  const config = await resolveConfig(inlineConfig, command);
12
- const server = await getServer?.(config);
13
- const builder = await createViteBuilder(config, hooks, server);
12
+ const builder = await createViteBuilder(config, hooks, () => wxt.server);
14
13
  const pm = await createWxtPackageManager(config.root);
15
14
  wxt = {
16
15
  config,
@@ -25,23 +24,18 @@ export async function registerWxt(command, inlineConfig = {}, getServer) {
25
24
  },
26
25
  pm,
27
26
  builder,
28
- server
27
+ server: void 0
29
28
  };
30
- const initModule = async (module) => {
31
- if (module.hooks) wxt.hooks.addHooks(module.hooks);
32
- await module.setup?.(
33
- wxt,
34
- // @ts-expect-error: Untyped configKey field
35
- module.configKey ? config[module.configKey] : void 0
36
- );
37
- };
38
- for (const builtinModule of builtinModules) await initModule(builtinModule);
39
- for (const userModule of config.userModules) await initModule(userModule);
40
- wxt.hooks.addHooks(config.hooks);
29
+ await initWxtModules();
30
+ }
31
+ export async function initWxtModules() {
32
+ for (const mod of builtinModules) await initWxtModule(mod);
33
+ for (const mod of wxt.config.userModules) await initWxtModule(mod);
34
+ wxt.hooks.addHooks(wxt.config.hooks);
41
35
  if (wxt.config.debug) {
42
36
  const order = [
43
37
  ...builtinModules.map((module) => module.name),
44
- ...config.userModules.map(
38
+ ...wxt.config.userModules.map(
45
39
  (module) => relative(wxt.config.root, module.id)
46
40
  ),
47
41
  "wxt.config.ts > hooks"
@@ -54,6 +48,17 @@ export async function registerWxt(command, inlineConfig = {}, getServer) {
54
48
  await wxt.hooks.callHook("ready", wxt);
55
49
  await wxt.hooks.callHook("config:resolved", wxt);
56
50
  }
51
+ async function initWxtModule(module) {
52
+ if (module.hooks) wxt.hooks.addHooks(module.hooks);
53
+ await module.setup?.(
54
+ wxt,
55
+ // @ts-expect-error: Untyped configKey field
56
+ module.configKey ? wxt.config[module.configKey] : void 0
57
+ );
58
+ }
59
+ export function deinitWxtModules() {
60
+ wxt.hooks.removeAllHooks();
61
+ }
57
62
  export function setWxtForTesting(testInstance) {
58
63
  wxt = testInstance;
59
64
  }
package/dist/types.d.ts CHANGED
@@ -269,7 +269,7 @@ export interface InlineConfig {
269
269
  analysis?: {
270
270
  /**
271
271
  * Explicitly include bundle analysis when running `wxt build`. This can be overridden by the
272
- * command line `--analysis` option.
272
+ * command line `--analyze` option.
273
273
  *
274
274
  * @default false
275
275
  */
@@ -552,7 +552,7 @@ export interface BackgroundEntrypointOptions extends BaseEntrypointOptions {
552
552
  type?: PerBrowserOption<'module'>;
553
553
  }
554
554
  export interface BaseContentScriptEntrypointOptions extends BaseEntrypointOptions {
555
- matches: PerBrowserOption<Manifest.ContentScript['matches']>;
555
+ matches?: PerBrowserOption<Manifest.ContentScript['matches']>;
556
556
  /**
557
557
  * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/
558
558
  * @default "documentIdle"
@@ -984,7 +984,8 @@ export interface ServerInfo {
984
984
  export type HookResult = Promise<void> | void;
985
985
  export interface WxtHooks {
986
986
  /**
987
- * Called only one time after WXT initialization, when the WXT instance is ready to work.
987
+ * Called after WXT modules are initialized, when the WXT instance is ready to
988
+ * be used. `wxt.server` isn't available yet, use `server:created` to get it.
988
989
  * @param wxt The configured WXT object
989
990
  */
990
991
  ready: (wxt: Wxt) => HookResult;
@@ -1105,6 +1106,24 @@ export interface WxtHooks {
1105
1106
  * @param zipFiles An array of paths to all created zip files
1106
1107
  */
1107
1108
  'zip:done': (wxt: Wxt, zipFiles: string[]) => HookResult;
1109
+ /**
1110
+ * Called when the dev server is created (and `wxt.server` is assigned). Server has not been started yet.
1111
+ * @param wxt The configured WXT object
1112
+ * @param server Same as `wxt.server`, the object WXT uses to control the dev server.
1113
+ */
1114
+ 'server:created': (wxt: Wxt, server: WxtDevServer) => HookResult;
1115
+ /**
1116
+ * Called when the dev server is started.
1117
+ * @param wxt The configured WXT object
1118
+ * @param server Same as `wxt.server`, the object WXT uses to control the dev server.
1119
+ */
1120
+ 'server:started': (wxt: Wxt, server: WxtDevServer) => HookResult;
1121
+ /**
1122
+ * Called when the dev server is stopped.
1123
+ * @param wxt The configured WXT object
1124
+ * @param server Same as `wxt.server`, the object WXT uses to control the dev server.
1125
+ */
1126
+ 'server:closed': (wxt: Wxt, server: WxtDevServer) => HookResult;
1108
1127
  }
1109
1128
  export interface Wxt {
1110
1129
  config: ResolvedConfig;
@@ -1118,7 +1137,7 @@ export interface Wxt {
1118
1137
  */
1119
1138
  logger: Logger;
1120
1139
  /**
1121
- * Reload config file and update the `config` field with the result.
1140
+ * Reload config file and update `wxt.config` with the result.
1122
1141
  */
1123
1142
  reloadConfig: () => Promise<void>;
1124
1143
  /**
package/dist/version.mjs CHANGED
@@ -1 +1 @@
1
- export const version = "0.19.16";
1
+ export const version = "0.19.17";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "wxt",
3
3
  "type": "module",
4
- "version": "0.19.16",
4
+ "version": "0.19.17",
5
5
  "description": "Next gen framework for developing web extensions",
6
6
  "repository": {
7
7
  "type": "git",
@@ -89,7 +89,7 @@
89
89
  "fast-glob": "^3.3.2",
90
90
  "filesize": "^10.1.6",
91
91
  "fs-extra": "^11.2.0",
92
- "get-port": "^7.1.0",
92
+ "get-port-please": "^3.1.2",
93
93
  "giget": "^1.2.3",
94
94
  "hookable": "^5.5.3",
95
95
  "is-wsl": "^3.1.0",
@@ -111,7 +111,7 @@
111
111
  "publish-browser-extension": "^2.2.2",
112
112
  "scule": "^1.3.0",
113
113
  "unimport": "^3.13.1",
114
- "vite": "^5.4.11",
114
+ "vite": "^5.0.0 || ^6.0.0",
115
115
  "vite-node": "^2.1.4",
116
116
  "web-ext-run": "^0.2.1",
117
117
  "webextension-polyfill": "^0.12.0"