wxt 0.19.8 → 0.19.9

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.
@@ -147,7 +147,7 @@ function createFileReloader(server) {
147
147
  wxt.logger.success(`Reloaded: ${getFilenameList(rebuiltNames)}`);
148
148
  break;
149
149
  }
150
- } catch (err) {
150
+ } catch {
151
151
  }
152
152
  });
153
153
  };
@@ -146,7 +146,6 @@ async function getGlobalsDeclarationEntry() {
146
146
  path: "types/globals.d.ts",
147
147
  text: [
148
148
  "// Generated by wxt",
149
- "export {}",
150
149
  "interface ImportMetaEnv {",
151
150
  ...globals.map((global) => ` readonly ${global.name}: ${global.type};`),
152
151
  "}",
@@ -15,24 +15,18 @@ export async function rebuild(allEntrypoints, entrypointGroups, existingOutput =
15
15
  const newOutput = await buildEntrypoints(entrypointGroups, spinner);
16
16
  const mergedOutput = {
17
17
  steps: [...existingOutput.steps, ...newOutput.steps],
18
- publicAssets: [...existingOutput.publicAssets, ...newOutput.publicAssets]
18
+ // Do not merge existing because all publicAssets copied everytime
19
+ publicAssets: newOutput.publicAssets
19
20
  };
20
21
  const { manifest: newManifest, warnings: manifestWarnings } = await generateManifest(allEntrypoints, mergedOutput);
21
22
  const finalOutput = {
22
23
  manifest: newManifest,
23
- ...newOutput
24
+ ...mergedOutput
24
25
  };
25
26
  await writeManifest(newManifest, finalOutput);
26
27
  spinner.clear().stop();
27
28
  return {
28
- output: {
29
- manifest: newManifest,
30
- steps: [...existingOutput.steps, ...finalOutput.steps],
31
- publicAssets: [
32
- ...existingOutput.publicAssets,
33
- ...finalOutput.publicAssets
34
- ]
35
- },
29
+ output: finalOutput,
36
30
  manifest: newManifest,
37
31
  warnings: manifestWarnings
38
32
  };
@@ -46,7 +46,7 @@ export async function resolveConfig(inlineConfig, command) {
46
46
  if (await isDirMissing(entrypointsDir)) {
47
47
  logMissingDir(logger, "Entrypoints", entrypointsDir);
48
48
  }
49
- const filterEntrypoints = !!mergedConfig.filterEntrypoints?.length ? new Set(mergedConfig.filterEntrypoints) : void 0;
49
+ const filterEntrypoints = mergedConfig.filterEntrypoints?.length ? new Set(mergedConfig.filterEntrypoints) : void 0;
50
50
  const publicDir = path.resolve(srcDir, mergedConfig.publicDir ?? "public");
51
51
  const typesDir = path.resolve(wxtDir, "types");
52
52
  const outBaseDir = path.resolve(root, mergedConfig.outDir ?? ".output");
@@ -2,7 +2,7 @@ import path, { relative, resolve } from "node:path";
2
2
  import { normalizePath } from "./paths.mjs";
3
3
  export function getEntrypointName(entrypointsDir, inputPath) {
4
4
  const relativePath = path.relative(entrypointsDir, inputPath);
5
- const name = relativePath.split(/[\.\/\\]/, 2)[0];
5
+ const name = relativePath.split(/[./\\]/, 2)[0];
6
6
  return name;
7
7
  }
8
8
  export function getEntrypointOutputFile(entrypoint, ext) {
@@ -30,7 +30,7 @@ export function applyGlobals(globals) {
30
30
  Object.entries(globals).forEach(([key, envValue]) => {
31
31
  try {
32
32
  globalThis[key] = envValue;
33
- } catch (err) {
33
+ } catch {
34
34
  }
35
35
  });
36
36
  }
@@ -5,7 +5,7 @@ export async function getEslintVersion() {
5
5
  );
6
6
  const { ESLint } = require("eslint");
7
7
  return ESLint.version?.split(".") ?? [];
8
- } catch (error) {
8
+ } catch {
9
9
  return [];
10
10
  }
11
11
  }
@@ -190,14 +190,14 @@ function addEntrypoints(manifest, entrypoints, buildOutput) {
190
190
  options2.browser_style = popup.options.browserStyle;
191
191
  if (manifest.manifest_version === 3) {
192
192
  manifest.action = {
193
- ...manifest.action ?? {},
193
+ ...manifest.action,
194
194
  ...options2,
195
195
  default_popup
196
196
  };
197
197
  } else {
198
198
  const key = popup.options.mv2Key ?? "browser_action";
199
199
  manifest[key] = {
200
- ...manifest[key] ?? {},
200
+ ...manifest[key],
201
201
  ...options2,
202
202
  default_popup
203
203
  };
@@ -325,9 +325,9 @@ function discoverIcons(buildOutput) {
325
325
  // icon@16h.png
326
326
  /^icon@([0-9]+)\.png$/,
327
327
  // icon@16.png
328
- /^icons?[\/\\]([0-9]+)\.png$/,
328
+ /^icons?[/\\]([0-9]+)\.png$/,
329
329
  // icon/16.png | icons/16.png
330
- /^icons?[\/\\]([0-9]+)x[0-9]+\.png$/
330
+ /^icons?[/\\]([0-9]+)x[0-9]+\.png$/
331
331
  // icon/16x16.png | icons/16x16.png
332
332
  ];
333
333
  buildOutput.publicAssets.forEach((asset) => {
@@ -7,7 +7,8 @@ export async function getPackageJson() {
7
7
  return await fs.readJson(file);
8
8
  } catch (err) {
9
9
  wxt.logger.debug(
10
- `Failed to read package.json at: ${file}. Returning undefined.`
10
+ `Failed to read package.json at: ${file}. Returning undefined.`,
11
+ err
11
12
  );
12
13
  return {};
13
14
  }
@@ -3,6 +3,10 @@ export declare function kebabCaseAlphanumeric(str: string): string;
3
3
  * Return a safe variable name for a given string.
4
4
  */
5
5
  export declare function safeVarName(str: string): string;
6
+ /**
7
+ * Converts a string to a valid filename (NOT path), stripping out invalid characters.
8
+ */
9
+ export declare function safeFilename(str: string): string;
6
10
  /**
7
11
  * Removes import statements from the top of a file. Keeps import.meta and inline, async `import()`
8
12
  * calls.
@@ -1,8 +1,14 @@
1
+ import { camelCase } from "scule";
1
2
  export function kebabCaseAlphanumeric(str) {
2
3
  return str.toLowerCase().replace(/[^a-z0-9-\s]/g, "").replace(/\s+/g, "-");
3
4
  }
4
5
  export function safeVarName(str) {
5
- return "_" + kebabCaseAlphanumeric(str.trim()).replace("-", "_");
6
+ const name = camelCase(kebabCaseAlphanumeric(str));
7
+ if (name.match(/^[a-z]/)) return name;
8
+ return "_" + name;
9
+ }
10
+ export function safeFilename(str) {
11
+ return kebabCaseAlphanumeric(str);
6
12
  }
7
13
  export function removeImportStatements(text) {
8
14
  return text.replace(
@@ -1,5 +1,5 @@
1
1
  import merge from 'lodash.merge';
2
- import { ResolvedConfig, WxtDevServer, BackgroundEntrypoint, ContentScriptEntrypoint, GenericEntrypoint, OptionsEntrypoint, PopupEntrypoint, OutputChunk, OutputFile, OutputAsset, BuildOutput, BuildStepOutput, Wxt, SidepanelEntrypoint } from '../../../types';
2
+ import { ResolvedConfig, WxtDevServer, BackgroundEntrypoint, ContentScriptEntrypoint, GenericEntrypoint, OptionsEntrypoint, PopupEntrypoint, OutputChunk, OutputFile, OutputAsset, BuildOutput, BuildStepOutput, UserManifest, Wxt, SidepanelEntrypoint } from '../../../types';
3
3
  type DeepPartial<T> = T extends object ? {
4
4
  [P in keyof T]?: DeepPartial<T[P]>;
5
5
  } : T;
@@ -126,8 +126,47 @@ export declare const fakeManifest: (overrides?: any) => Manifest.WebExtensionMan
126
126
  export declare const fakeUserManifest: (overrides?: {
127
127
  [x: string]: any;
128
128
  [x: number]: any;
129
- [x: symbol]: any;
130
- } | undefined) => Partial<Omit<Manifest.WebExtensionManifest, "background" | "chrome_url_overrides" | "devtools_page" | "manifest_version" | "options_page" | "options_ui" | "sandbox">>;
129
+ action?: {
130
+ default_icon?: {
131
+ [x: number]: string | undefined;
132
+ } | undefined;
133
+ default_title?: string | undefined;
134
+ default_popup?: string | undefined;
135
+ browser_style?: boolean | undefined;
136
+ } | undefined;
137
+ browser_action?: {
138
+ default_icon?: {
139
+ [x: number]: string | undefined;
140
+ } | undefined;
141
+ default_title?: string | undefined;
142
+ default_popup?: string | undefined;
143
+ browser_style?: boolean | undefined;
144
+ } | undefined;
145
+ page_action?: {
146
+ default_icon?: {
147
+ [x: number]: string | undefined;
148
+ } | undefined;
149
+ default_title?: string | undefined;
150
+ default_popup?: string | undefined;
151
+ browser_style?: boolean | undefined;
152
+ } | undefined;
153
+ browser_specific_settings?: {
154
+ gecko?: {
155
+ id?: string | undefined;
156
+ strict_min_version?: string | undefined;
157
+ strict_max_version?: string | undefined;
158
+ update_url?: string | undefined;
159
+ } | undefined;
160
+ gecko_android?: {
161
+ strict_min_version?: string | undefined;
162
+ strict_max_version?: string | undefined;
163
+ } | undefined;
164
+ safari?: {
165
+ strict_min_version?: string | undefined;
166
+ strict_max_version?: string | undefined;
167
+ } | undefined;
168
+ } | undefined;
169
+ } | undefined) => UserManifest;
131
170
  export declare function fakeArray<T>(createItem: () => T, count?: number): T[];
132
171
  export declare const fakeResolvedConfig: (overrides?: {
133
172
  vite?: {} | undefined;
@@ -209,8 +248,8 @@ export declare const fakeResolvedConfig: (overrides?: {
209
248
  description?: string | undefined;
210
249
  docsUrl?: string | undefined;
211
250
  } | undefined;
212
- type?: boolean | undefined;
213
251
  name?: string | undefined;
252
+ type?: boolean | undefined;
214
253
  as?: import("unimport").ImportName | undefined;
215
254
  with?: {
216
255
  [x: string]: string | undefined;
@@ -293,7 +332,46 @@ export declare const fakeResolvedConfig: (overrides?: {
293
332
  manifest?: {
294
333
  [x: string]: any;
295
334
  [x: number]: any;
296
- [x: symbol]: any;
335
+ action?: {
336
+ default_icon?: {
337
+ [x: number]: string | undefined;
338
+ } | undefined;
339
+ default_title?: string | undefined;
340
+ default_popup?: string | undefined;
341
+ browser_style?: boolean | undefined;
342
+ } | undefined;
343
+ browser_action?: {
344
+ default_icon?: {
345
+ [x: number]: string | undefined;
346
+ } | undefined;
347
+ default_title?: string | undefined;
348
+ default_popup?: string | undefined;
349
+ browser_style?: boolean | undefined;
350
+ } | undefined;
351
+ page_action?: {
352
+ default_icon?: {
353
+ [x: number]: string | undefined;
354
+ } | undefined;
355
+ default_title?: string | undefined;
356
+ default_popup?: string | undefined;
357
+ browser_style?: boolean | undefined;
358
+ } | undefined;
359
+ browser_specific_settings?: {
360
+ gecko?: {
361
+ id?: string | undefined;
362
+ strict_min_version?: string | undefined;
363
+ strict_max_version?: string | undefined;
364
+ update_url?: string | undefined;
365
+ } | undefined;
366
+ gecko_android?: {
367
+ strict_min_version?: string | undefined;
368
+ strict_max_version?: string | undefined;
369
+ } | undefined;
370
+ safari?: {
371
+ strict_min_version?: string | undefined;
372
+ strict_max_version?: string | undefined;
373
+ } | undefined;
374
+ } | undefined;
297
375
  } | undefined;
298
376
  fsCache?: {
299
377
  set?: {} | undefined;
@@ -477,7 +555,46 @@ export declare const fakeResolvedConfig: (overrides?: {
477
555
  manifest?: {
478
556
  [x: string]: any;
479
557
  [x: number]: any;
480
- [x: symbol]: any;
558
+ action?: {
559
+ default_icon?: {
560
+ [x: number]: string | undefined;
561
+ } | undefined;
562
+ default_title?: string | undefined;
563
+ default_popup?: string | undefined;
564
+ browser_style?: boolean | undefined;
565
+ } | undefined;
566
+ browser_action?: {
567
+ default_icon?: {
568
+ [x: number]: string | undefined;
569
+ } | undefined;
570
+ default_title?: string | undefined;
571
+ default_popup?: string | undefined;
572
+ browser_style?: boolean | undefined;
573
+ } | undefined;
574
+ page_action?: {
575
+ default_icon?: {
576
+ [x: number]: string | undefined;
577
+ } | undefined;
578
+ default_title?: string | undefined;
579
+ default_popup?: string | undefined;
580
+ browser_style?: boolean | undefined;
581
+ } | undefined;
582
+ browser_specific_settings?: {
583
+ gecko?: {
584
+ id?: string | undefined;
585
+ strict_min_version?: string | undefined;
586
+ strict_max_version?: string | undefined;
587
+ update_url?: string | undefined;
588
+ } | undefined;
589
+ gecko_android?: {
590
+ strict_min_version?: string | undefined;
591
+ strict_max_version?: string | undefined;
592
+ } | undefined;
593
+ safari?: {
594
+ strict_min_version?: string | undefined;
595
+ strict_max_version?: string | undefined;
596
+ } | undefined;
597
+ } | undefined;
481
598
  } | {
482
599
  then?: {} | undefined;
483
600
  catch?: {} | undefined;
@@ -522,8 +639,8 @@ export declare const fakeResolvedConfig: (overrides?: {
522
639
  description?: string | undefined;
523
640
  docsUrl?: string | undefined;
524
641
  } | undefined;
525
- type?: boolean | undefined;
526
642
  name?: string | undefined;
643
+ type?: boolean | undefined;
527
644
  as?: import("unimport").ImportName | undefined;
528
645
  with?: {
529
646
  [x: string]: string | undefined;
@@ -800,7 +917,46 @@ export declare const fakeResolvedConfig: (overrides?: {
800
917
  manifest?: {
801
918
  [x: string]: any;
802
919
  [x: number]: any;
803
- [x: symbol]: any;
920
+ action?: {
921
+ default_icon?: {
922
+ [x: number]: string | undefined;
923
+ } | undefined;
924
+ default_title?: string | undefined;
925
+ default_popup?: string | undefined;
926
+ browser_style?: boolean | undefined;
927
+ } | undefined;
928
+ browser_action?: {
929
+ default_icon?: {
930
+ [x: number]: string | undefined;
931
+ } | undefined;
932
+ default_title?: string | undefined;
933
+ default_popup?: string | undefined;
934
+ browser_style?: boolean | undefined;
935
+ } | undefined;
936
+ page_action?: {
937
+ default_icon?: {
938
+ [x: number]: string | undefined;
939
+ } | undefined;
940
+ default_title?: string | undefined;
941
+ default_popup?: string | undefined;
942
+ browser_style?: boolean | undefined;
943
+ } | undefined;
944
+ browser_specific_settings?: {
945
+ gecko?: {
946
+ id?: string | undefined;
947
+ strict_min_version?: string | undefined;
948
+ strict_max_version?: string | undefined;
949
+ update_url?: string | undefined;
950
+ } | undefined;
951
+ gecko_android?: {
952
+ strict_min_version?: string | undefined;
953
+ strict_max_version?: string | undefined;
954
+ } | undefined;
955
+ safari?: {
956
+ strict_min_version?: string | undefined;
957
+ strict_max_version?: string | undefined;
958
+ } | undefined;
959
+ } | undefined;
804
960
  } | {
805
961
  then?: {} | undefined;
806
962
  catch?: {} | undefined;
@@ -845,8 +1001,8 @@ export declare const fakeResolvedConfig: (overrides?: {
845
1001
  description?: string | undefined;
846
1002
  docsUrl?: string | undefined;
847
1003
  } | undefined;
848
- type?: boolean | undefined;
849
1004
  name?: string | undefined;
1005
+ type?: boolean | undefined;
850
1006
  as?: import("unimport").ImportName | undefined;
851
1007
  with?: {
852
1008
  [x: string]: string | undefined;
@@ -1149,7 +1305,46 @@ export declare const fakeResolvedConfig: (overrides?: {
1149
1305
  manifest?: {
1150
1306
  [x: string]: any;
1151
1307
  [x: number]: any;
1152
- [x: symbol]: any;
1308
+ action?: {
1309
+ default_icon?: {
1310
+ [x: number]: string | undefined;
1311
+ } | undefined;
1312
+ default_title?: string | undefined;
1313
+ default_popup?: string | undefined;
1314
+ browser_style?: boolean | undefined;
1315
+ } | undefined;
1316
+ browser_action?: {
1317
+ default_icon?: {
1318
+ [x: number]: string | undefined;
1319
+ } | undefined;
1320
+ default_title?: string | undefined;
1321
+ default_popup?: string | undefined;
1322
+ browser_style?: boolean | undefined;
1323
+ } | undefined;
1324
+ page_action?: {
1325
+ default_icon?: {
1326
+ [x: number]: string | undefined;
1327
+ } | undefined;
1328
+ default_title?: string | undefined;
1329
+ default_popup?: string | undefined;
1330
+ browser_style?: boolean | undefined;
1331
+ } | undefined;
1332
+ browser_specific_settings?: {
1333
+ gecko?: {
1334
+ id?: string | undefined;
1335
+ strict_min_version?: string | undefined;
1336
+ strict_max_version?: string | undefined;
1337
+ update_url?: string | undefined;
1338
+ } | undefined;
1339
+ gecko_android?: {
1340
+ strict_min_version?: string | undefined;
1341
+ strict_max_version?: string | undefined;
1342
+ } | undefined;
1343
+ safari?: {
1344
+ strict_min_version?: string | undefined;
1345
+ strict_max_version?: string | undefined;
1346
+ } | undefined;
1347
+ } | undefined;
1153
1348
  } | {
1154
1349
  then?: {} | undefined;
1155
1350
  catch?: {} | undefined;
@@ -1194,8 +1389,8 @@ export declare const fakeResolvedConfig: (overrides?: {
1194
1389
  description?: string | undefined;
1195
1390
  docsUrl?: string | undefined;
1196
1391
  } | undefined;
1197
- type?: boolean | undefined;
1198
1392
  name?: string | undefined;
1393
+ type?: boolean | undefined;
1199
1394
  as?: import("unimport").ImportName | undefined;
1200
1395
  with?: {
1201
1396
  [x: string]: string | undefined;
@@ -1643,6 +1838,108 @@ export declare const fakeResolvedConfig: (overrides?: {
1643
1838
  'entrypoints:resolved'?: {} | undefined;
1644
1839
  'entrypoints:grouped'?: {} | undefined;
1645
1840
  'build:publicAssets'?: {} | undefined;
1841
+ build?: {
1842
+ before?: {} | undefined;
1843
+ done?: {} | undefined;
1844
+ manifestGenerated?: {} | undefined;
1845
+ publicAssets?: {} | undefined;
1846
+ } | {
1847
+ before?: {} | undefined;
1848
+ done?: {} | undefined;
1849
+ manifestGenerated?: {} | undefined;
1850
+ publicAssets?: {} | undefined;
1851
+ } | undefined;
1852
+ vite?: {
1853
+ "build:extendConfig"?: {} | undefined;
1854
+ "devServer:extendConfig"?: {} | undefined;
1855
+ build?: {
1856
+ extendConfig?: {} | undefined;
1857
+ } | {
1858
+ extendConfig?: {} | undefined;
1859
+ } | undefined;
1860
+ devServer?: {
1861
+ extendConfig?: {} | undefined;
1862
+ } | {
1863
+ extendConfig?: {} | undefined;
1864
+ } | undefined;
1865
+ } | {
1866
+ build?: {
1867
+ extendConfig?: {} | undefined;
1868
+ } | {
1869
+ extendConfig?: {} | undefined;
1870
+ } | undefined;
1871
+ devServer?: {
1872
+ extendConfig?: {} | undefined;
1873
+ } | {
1874
+ extendConfig?: {} | undefined;
1875
+ } | undefined;
1876
+ } | undefined;
1877
+ prepare?: {
1878
+ types?: {} | undefined;
1879
+ publicPaths?: {} | undefined;
1880
+ } | {
1881
+ types?: {} | undefined;
1882
+ publicPaths?: {} | undefined;
1883
+ } | undefined;
1884
+ entrypoints?: {
1885
+ resolved?: {} | undefined;
1886
+ grouped?: {} | undefined;
1887
+ } | {
1888
+ resolved?: {} | undefined;
1889
+ grouped?: {} | undefined;
1890
+ } | undefined;
1891
+ } | {
1892
+ build?: {
1893
+ before?: {} | undefined;
1894
+ done?: {} | undefined;
1895
+ manifestGenerated?: {} | undefined;
1896
+ publicAssets?: {} | undefined;
1897
+ } | {
1898
+ before?: {} | undefined;
1899
+ done?: {} | undefined;
1900
+ manifestGenerated?: {} | undefined;
1901
+ publicAssets?: {} | undefined;
1902
+ } | undefined;
1903
+ vite?: {
1904
+ "build:extendConfig"?: {} | undefined;
1905
+ "devServer:extendConfig"?: {} | undefined;
1906
+ build?: {
1907
+ extendConfig?: {} | undefined;
1908
+ } | {
1909
+ extendConfig?: {} | undefined;
1910
+ } | undefined;
1911
+ devServer?: {
1912
+ extendConfig?: {} | undefined;
1913
+ } | {
1914
+ extendConfig?: {} | undefined;
1915
+ } | undefined;
1916
+ } | {
1917
+ build?: {
1918
+ extendConfig?: {} | undefined;
1919
+ } | {
1920
+ extendConfig?: {} | undefined;
1921
+ } | undefined;
1922
+ devServer?: {
1923
+ extendConfig?: {} | undefined;
1924
+ } | {
1925
+ extendConfig?: {} | undefined;
1926
+ } | undefined;
1927
+ } | undefined;
1928
+ prepare?: {
1929
+ types?: {} | undefined;
1930
+ publicPaths?: {} | undefined;
1931
+ } | {
1932
+ types?: {} | undefined;
1933
+ publicPaths?: {} | undefined;
1934
+ } | undefined;
1935
+ entrypoints?: {
1936
+ resolved?: {} | undefined;
1937
+ grouped?: {} | undefined;
1938
+ } | {
1939
+ resolved?: {} | undefined;
1940
+ grouped?: {} | undefined;
1941
+ } | undefined;
1942
+ ready?: {} | undefined;
1646
1943
  } | undefined;
1647
1944
  setup?: {} | undefined;
1648
1945
  } | undefined)[] | undefined;
@@ -1682,6 +1979,108 @@ export declare const fakeResolvedConfig: (overrides?: {
1682
1979
  'entrypoints:resolved'?: {} | undefined;
1683
1980
  'entrypoints:grouped'?: {} | undefined;
1684
1981
  'build:publicAssets'?: {} | undefined;
1982
+ build?: {
1983
+ before?: {} | undefined;
1984
+ done?: {} | undefined;
1985
+ manifestGenerated?: {} | undefined;
1986
+ publicAssets?: {} | undefined;
1987
+ } | {
1988
+ before?: {} | undefined;
1989
+ done?: {} | undefined;
1990
+ manifestGenerated?: {} | undefined;
1991
+ publicAssets?: {} | undefined;
1992
+ } | undefined;
1993
+ vite?: {
1994
+ "build:extendConfig"?: {} | undefined;
1995
+ "devServer:extendConfig"?: {} | undefined;
1996
+ build?: {
1997
+ extendConfig?: {} | undefined;
1998
+ } | {
1999
+ extendConfig?: {} | undefined;
2000
+ } | undefined;
2001
+ devServer?: {
2002
+ extendConfig?: {} | undefined;
2003
+ } | {
2004
+ extendConfig?: {} | undefined;
2005
+ } | undefined;
2006
+ } | {
2007
+ build?: {
2008
+ extendConfig?: {} | undefined;
2009
+ } | {
2010
+ extendConfig?: {} | undefined;
2011
+ } | undefined;
2012
+ devServer?: {
2013
+ extendConfig?: {} | undefined;
2014
+ } | {
2015
+ extendConfig?: {} | undefined;
2016
+ } | undefined;
2017
+ } | undefined;
2018
+ prepare?: {
2019
+ types?: {} | undefined;
2020
+ publicPaths?: {} | undefined;
2021
+ } | {
2022
+ types?: {} | undefined;
2023
+ publicPaths?: {} | undefined;
2024
+ } | undefined;
2025
+ entrypoints?: {
2026
+ resolved?: {} | undefined;
2027
+ grouped?: {} | undefined;
2028
+ } | {
2029
+ resolved?: {} | undefined;
2030
+ grouped?: {} | undefined;
2031
+ } | undefined;
2032
+ } | {
2033
+ build?: {
2034
+ before?: {} | undefined;
2035
+ done?: {} | undefined;
2036
+ manifestGenerated?: {} | undefined;
2037
+ publicAssets?: {} | undefined;
2038
+ } | {
2039
+ before?: {} | undefined;
2040
+ done?: {} | undefined;
2041
+ manifestGenerated?: {} | undefined;
2042
+ publicAssets?: {} | undefined;
2043
+ } | undefined;
2044
+ vite?: {
2045
+ "build:extendConfig"?: {} | undefined;
2046
+ "devServer:extendConfig"?: {} | undefined;
2047
+ build?: {
2048
+ extendConfig?: {} | undefined;
2049
+ } | {
2050
+ extendConfig?: {} | undefined;
2051
+ } | undefined;
2052
+ devServer?: {
2053
+ extendConfig?: {} | undefined;
2054
+ } | {
2055
+ extendConfig?: {} | undefined;
2056
+ } | undefined;
2057
+ } | {
2058
+ build?: {
2059
+ extendConfig?: {} | undefined;
2060
+ } | {
2061
+ extendConfig?: {} | undefined;
2062
+ } | undefined;
2063
+ devServer?: {
2064
+ extendConfig?: {} | undefined;
2065
+ } | {
2066
+ extendConfig?: {} | undefined;
2067
+ } | undefined;
2068
+ } | undefined;
2069
+ prepare?: {
2070
+ types?: {} | undefined;
2071
+ publicPaths?: {} | undefined;
2072
+ } | {
2073
+ types?: {} | undefined;
2074
+ publicPaths?: {} | undefined;
2075
+ } | undefined;
2076
+ entrypoints?: {
2077
+ resolved?: {} | undefined;
2078
+ grouped?: {} | undefined;
2079
+ } | {
2080
+ resolved?: {} | undefined;
2081
+ grouped?: {} | undefined;
2082
+ } | undefined;
2083
+ ready?: {} | undefined;
1685
2084
  } | undefined;
1686
2085
  setup?: {} | undefined;
1687
2086
  } | undefined)[] | undefined;
@@ -1768,8 +2167,8 @@ export declare const fakeWxt: (overrides?: {
1768
2167
  description?: string | undefined;
1769
2168
  docsUrl?: string | undefined;
1770
2169
  } | undefined;
1771
- type?: boolean | undefined;
1772
2170
  name?: string | undefined;
2171
+ type?: boolean | undefined;
1773
2172
  as?: import("unimport").ImportName | undefined;
1774
2173
  with?: {
1775
2174
  [x: string]: string | undefined;
@@ -1852,7 +2251,46 @@ export declare const fakeWxt: (overrides?: {
1852
2251
  manifest?: {
1853
2252
  [x: string]: any;
1854
2253
  [x: number]: any;
1855
- [x: symbol]: any;
2254
+ action?: {
2255
+ default_icon?: {
2256
+ [x: number]: string | undefined;
2257
+ } | undefined;
2258
+ default_title?: string | undefined;
2259
+ default_popup?: string | undefined;
2260
+ browser_style?: boolean | undefined;
2261
+ } | undefined;
2262
+ browser_action?: {
2263
+ default_icon?: {
2264
+ [x: number]: string | undefined;
2265
+ } | undefined;
2266
+ default_title?: string | undefined;
2267
+ default_popup?: string | undefined;
2268
+ browser_style?: boolean | undefined;
2269
+ } | undefined;
2270
+ page_action?: {
2271
+ default_icon?: {
2272
+ [x: number]: string | undefined;
2273
+ } | undefined;
2274
+ default_title?: string | undefined;
2275
+ default_popup?: string | undefined;
2276
+ browser_style?: boolean | undefined;
2277
+ } | undefined;
2278
+ browser_specific_settings?: {
2279
+ gecko?: {
2280
+ id?: string | undefined;
2281
+ strict_min_version?: string | undefined;
2282
+ strict_max_version?: string | undefined;
2283
+ update_url?: string | undefined;
2284
+ } | undefined;
2285
+ gecko_android?: {
2286
+ strict_min_version?: string | undefined;
2287
+ strict_max_version?: string | undefined;
2288
+ } | undefined;
2289
+ safari?: {
2290
+ strict_min_version?: string | undefined;
2291
+ strict_max_version?: string | undefined;
2292
+ } | undefined;
2293
+ } | undefined;
1856
2294
  } | undefined;
1857
2295
  fsCache?: {
1858
2296
  set?: {} | undefined;
@@ -2036,7 +2474,46 @@ export declare const fakeWxt: (overrides?: {
2036
2474
  manifest?: {
2037
2475
  [x: string]: any;
2038
2476
  [x: number]: any;
2039
- [x: symbol]: any;
2477
+ action?: {
2478
+ default_icon?: {
2479
+ [x: number]: string | undefined;
2480
+ } | undefined;
2481
+ default_title?: string | undefined;
2482
+ default_popup?: string | undefined;
2483
+ browser_style?: boolean | undefined;
2484
+ } | undefined;
2485
+ browser_action?: {
2486
+ default_icon?: {
2487
+ [x: number]: string | undefined;
2488
+ } | undefined;
2489
+ default_title?: string | undefined;
2490
+ default_popup?: string | undefined;
2491
+ browser_style?: boolean | undefined;
2492
+ } | undefined;
2493
+ page_action?: {
2494
+ default_icon?: {
2495
+ [x: number]: string | undefined;
2496
+ } | undefined;
2497
+ default_title?: string | undefined;
2498
+ default_popup?: string | undefined;
2499
+ browser_style?: boolean | undefined;
2500
+ } | undefined;
2501
+ browser_specific_settings?: {
2502
+ gecko?: {
2503
+ id?: string | undefined;
2504
+ strict_min_version?: string | undefined;
2505
+ strict_max_version?: string | undefined;
2506
+ update_url?: string | undefined;
2507
+ } | undefined;
2508
+ gecko_android?: {
2509
+ strict_min_version?: string | undefined;
2510
+ strict_max_version?: string | undefined;
2511
+ } | undefined;
2512
+ safari?: {
2513
+ strict_min_version?: string | undefined;
2514
+ strict_max_version?: string | undefined;
2515
+ } | undefined;
2516
+ } | undefined;
2040
2517
  } | {
2041
2518
  then?: {} | undefined;
2042
2519
  catch?: {} | undefined;
@@ -2081,8 +2558,8 @@ export declare const fakeWxt: (overrides?: {
2081
2558
  description?: string | undefined;
2082
2559
  docsUrl?: string | undefined;
2083
2560
  } | undefined;
2084
- type?: boolean | undefined;
2085
2561
  name?: string | undefined;
2562
+ type?: boolean | undefined;
2086
2563
  as?: import("unimport").ImportName | undefined;
2087
2564
  with?: {
2088
2565
  [x: string]: string | undefined;
@@ -2359,7 +2836,46 @@ export declare const fakeWxt: (overrides?: {
2359
2836
  manifest?: {
2360
2837
  [x: string]: any;
2361
2838
  [x: number]: any;
2362
- [x: symbol]: any;
2839
+ action?: {
2840
+ default_icon?: {
2841
+ [x: number]: string | undefined;
2842
+ } | undefined;
2843
+ default_title?: string | undefined;
2844
+ default_popup?: string | undefined;
2845
+ browser_style?: boolean | undefined;
2846
+ } | undefined;
2847
+ browser_action?: {
2848
+ default_icon?: {
2849
+ [x: number]: string | undefined;
2850
+ } | undefined;
2851
+ default_title?: string | undefined;
2852
+ default_popup?: string | undefined;
2853
+ browser_style?: boolean | undefined;
2854
+ } | undefined;
2855
+ page_action?: {
2856
+ default_icon?: {
2857
+ [x: number]: string | undefined;
2858
+ } | undefined;
2859
+ default_title?: string | undefined;
2860
+ default_popup?: string | undefined;
2861
+ browser_style?: boolean | undefined;
2862
+ } | undefined;
2863
+ browser_specific_settings?: {
2864
+ gecko?: {
2865
+ id?: string | undefined;
2866
+ strict_min_version?: string | undefined;
2867
+ strict_max_version?: string | undefined;
2868
+ update_url?: string | undefined;
2869
+ } | undefined;
2870
+ gecko_android?: {
2871
+ strict_min_version?: string | undefined;
2872
+ strict_max_version?: string | undefined;
2873
+ } | undefined;
2874
+ safari?: {
2875
+ strict_min_version?: string | undefined;
2876
+ strict_max_version?: string | undefined;
2877
+ } | undefined;
2878
+ } | undefined;
2363
2879
  } | {
2364
2880
  then?: {} | undefined;
2365
2881
  catch?: {} | undefined;
@@ -2404,8 +2920,8 @@ export declare const fakeWxt: (overrides?: {
2404
2920
  description?: string | undefined;
2405
2921
  docsUrl?: string | undefined;
2406
2922
  } | undefined;
2407
- type?: boolean | undefined;
2408
2923
  name?: string | undefined;
2924
+ type?: boolean | undefined;
2409
2925
  as?: import("unimport").ImportName | undefined;
2410
2926
  with?: {
2411
2927
  [x: string]: string | undefined;
@@ -2708,7 +3224,46 @@ export declare const fakeWxt: (overrides?: {
2708
3224
  manifest?: {
2709
3225
  [x: string]: any;
2710
3226
  [x: number]: any;
2711
- [x: symbol]: any;
3227
+ action?: {
3228
+ default_icon?: {
3229
+ [x: number]: string | undefined;
3230
+ } | undefined;
3231
+ default_title?: string | undefined;
3232
+ default_popup?: string | undefined;
3233
+ browser_style?: boolean | undefined;
3234
+ } | undefined;
3235
+ browser_action?: {
3236
+ default_icon?: {
3237
+ [x: number]: string | undefined;
3238
+ } | undefined;
3239
+ default_title?: string | undefined;
3240
+ default_popup?: string | undefined;
3241
+ browser_style?: boolean | undefined;
3242
+ } | undefined;
3243
+ page_action?: {
3244
+ default_icon?: {
3245
+ [x: number]: string | undefined;
3246
+ } | undefined;
3247
+ default_title?: string | undefined;
3248
+ default_popup?: string | undefined;
3249
+ browser_style?: boolean | undefined;
3250
+ } | undefined;
3251
+ browser_specific_settings?: {
3252
+ gecko?: {
3253
+ id?: string | undefined;
3254
+ strict_min_version?: string | undefined;
3255
+ strict_max_version?: string | undefined;
3256
+ update_url?: string | undefined;
3257
+ } | undefined;
3258
+ gecko_android?: {
3259
+ strict_min_version?: string | undefined;
3260
+ strict_max_version?: string | undefined;
3261
+ } | undefined;
3262
+ safari?: {
3263
+ strict_min_version?: string | undefined;
3264
+ strict_max_version?: string | undefined;
3265
+ } | undefined;
3266
+ } | undefined;
2712
3267
  } | {
2713
3268
  then?: {} | undefined;
2714
3269
  catch?: {} | undefined;
@@ -2753,8 +3308,8 @@ export declare const fakeWxt: (overrides?: {
2753
3308
  description?: string | undefined;
2754
3309
  docsUrl?: string | undefined;
2755
3310
  } | undefined;
2756
- type?: boolean | undefined;
2757
3311
  name?: string | undefined;
3312
+ type?: boolean | undefined;
2758
3313
  as?: import("unimport").ImportName | undefined;
2759
3314
  with?: {
2760
3315
  [x: string]: string | undefined;
@@ -3202,6 +3757,108 @@ export declare const fakeWxt: (overrides?: {
3202
3757
  'entrypoints:resolved'?: {} | undefined;
3203
3758
  'entrypoints:grouped'?: {} | undefined;
3204
3759
  'build:publicAssets'?: {} | undefined;
3760
+ build?: {
3761
+ before?: {} | undefined;
3762
+ done?: {} | undefined;
3763
+ manifestGenerated?: {} | undefined;
3764
+ publicAssets?: {} | undefined;
3765
+ } | {
3766
+ before?: {} | undefined;
3767
+ done?: {} | undefined;
3768
+ manifestGenerated?: {} | undefined;
3769
+ publicAssets?: {} | undefined;
3770
+ } | undefined;
3771
+ vite?: {
3772
+ "build:extendConfig"?: {} | undefined;
3773
+ "devServer:extendConfig"?: {} | undefined;
3774
+ build?: {
3775
+ extendConfig?: {} | undefined;
3776
+ } | {
3777
+ extendConfig?: {} | undefined;
3778
+ } | undefined;
3779
+ devServer?: {
3780
+ extendConfig?: {} | undefined;
3781
+ } | {
3782
+ extendConfig?: {} | undefined;
3783
+ } | undefined;
3784
+ } | {
3785
+ build?: {
3786
+ extendConfig?: {} | undefined;
3787
+ } | {
3788
+ extendConfig?: {} | undefined;
3789
+ } | undefined;
3790
+ devServer?: {
3791
+ extendConfig?: {} | undefined;
3792
+ } | {
3793
+ extendConfig?: {} | undefined;
3794
+ } | undefined;
3795
+ } | undefined;
3796
+ prepare?: {
3797
+ types?: {} | undefined;
3798
+ publicPaths?: {} | undefined;
3799
+ } | {
3800
+ types?: {} | undefined;
3801
+ publicPaths?: {} | undefined;
3802
+ } | undefined;
3803
+ entrypoints?: {
3804
+ resolved?: {} | undefined;
3805
+ grouped?: {} | undefined;
3806
+ } | {
3807
+ resolved?: {} | undefined;
3808
+ grouped?: {} | undefined;
3809
+ } | undefined;
3810
+ } | {
3811
+ build?: {
3812
+ before?: {} | undefined;
3813
+ done?: {} | undefined;
3814
+ manifestGenerated?: {} | undefined;
3815
+ publicAssets?: {} | undefined;
3816
+ } | {
3817
+ before?: {} | undefined;
3818
+ done?: {} | undefined;
3819
+ manifestGenerated?: {} | undefined;
3820
+ publicAssets?: {} | undefined;
3821
+ } | undefined;
3822
+ vite?: {
3823
+ "build:extendConfig"?: {} | undefined;
3824
+ "devServer:extendConfig"?: {} | undefined;
3825
+ build?: {
3826
+ extendConfig?: {} | undefined;
3827
+ } | {
3828
+ extendConfig?: {} | undefined;
3829
+ } | undefined;
3830
+ devServer?: {
3831
+ extendConfig?: {} | undefined;
3832
+ } | {
3833
+ extendConfig?: {} | undefined;
3834
+ } | undefined;
3835
+ } | {
3836
+ build?: {
3837
+ extendConfig?: {} | undefined;
3838
+ } | {
3839
+ extendConfig?: {} | undefined;
3840
+ } | undefined;
3841
+ devServer?: {
3842
+ extendConfig?: {} | undefined;
3843
+ } | {
3844
+ extendConfig?: {} | undefined;
3845
+ } | undefined;
3846
+ } | undefined;
3847
+ prepare?: {
3848
+ types?: {} | undefined;
3849
+ publicPaths?: {} | undefined;
3850
+ } | {
3851
+ types?: {} | undefined;
3852
+ publicPaths?: {} | undefined;
3853
+ } | undefined;
3854
+ entrypoints?: {
3855
+ resolved?: {} | undefined;
3856
+ grouped?: {} | undefined;
3857
+ } | {
3858
+ resolved?: {} | undefined;
3859
+ grouped?: {} | undefined;
3860
+ } | undefined;
3861
+ ready?: {} | undefined;
3205
3862
  } | undefined;
3206
3863
  setup?: {} | undefined;
3207
3864
  } | undefined)[] | undefined;
@@ -3241,6 +3898,108 @@ export declare const fakeWxt: (overrides?: {
3241
3898
  'entrypoints:resolved'?: {} | undefined;
3242
3899
  'entrypoints:grouped'?: {} | undefined;
3243
3900
  'build:publicAssets'?: {} | undefined;
3901
+ build?: {
3902
+ before?: {} | undefined;
3903
+ done?: {} | undefined;
3904
+ manifestGenerated?: {} | undefined;
3905
+ publicAssets?: {} | undefined;
3906
+ } | {
3907
+ before?: {} | undefined;
3908
+ done?: {} | undefined;
3909
+ manifestGenerated?: {} | undefined;
3910
+ publicAssets?: {} | undefined;
3911
+ } | undefined;
3912
+ vite?: {
3913
+ "build:extendConfig"?: {} | undefined;
3914
+ "devServer:extendConfig"?: {} | undefined;
3915
+ build?: {
3916
+ extendConfig?: {} | undefined;
3917
+ } | {
3918
+ extendConfig?: {} | undefined;
3919
+ } | undefined;
3920
+ devServer?: {
3921
+ extendConfig?: {} | undefined;
3922
+ } | {
3923
+ extendConfig?: {} | undefined;
3924
+ } | undefined;
3925
+ } | {
3926
+ build?: {
3927
+ extendConfig?: {} | undefined;
3928
+ } | {
3929
+ extendConfig?: {} | undefined;
3930
+ } | undefined;
3931
+ devServer?: {
3932
+ extendConfig?: {} | undefined;
3933
+ } | {
3934
+ extendConfig?: {} | undefined;
3935
+ } | undefined;
3936
+ } | undefined;
3937
+ prepare?: {
3938
+ types?: {} | undefined;
3939
+ publicPaths?: {} | undefined;
3940
+ } | {
3941
+ types?: {} | undefined;
3942
+ publicPaths?: {} | undefined;
3943
+ } | undefined;
3944
+ entrypoints?: {
3945
+ resolved?: {} | undefined;
3946
+ grouped?: {} | undefined;
3947
+ } | {
3948
+ resolved?: {} | undefined;
3949
+ grouped?: {} | undefined;
3950
+ } | undefined;
3951
+ } | {
3952
+ build?: {
3953
+ before?: {} | undefined;
3954
+ done?: {} | undefined;
3955
+ manifestGenerated?: {} | undefined;
3956
+ publicAssets?: {} | undefined;
3957
+ } | {
3958
+ before?: {} | undefined;
3959
+ done?: {} | undefined;
3960
+ manifestGenerated?: {} | undefined;
3961
+ publicAssets?: {} | undefined;
3962
+ } | undefined;
3963
+ vite?: {
3964
+ "build:extendConfig"?: {} | undefined;
3965
+ "devServer:extendConfig"?: {} | undefined;
3966
+ build?: {
3967
+ extendConfig?: {} | undefined;
3968
+ } | {
3969
+ extendConfig?: {} | undefined;
3970
+ } | undefined;
3971
+ devServer?: {
3972
+ extendConfig?: {} | undefined;
3973
+ } | {
3974
+ extendConfig?: {} | undefined;
3975
+ } | undefined;
3976
+ } | {
3977
+ build?: {
3978
+ extendConfig?: {} | undefined;
3979
+ } | {
3980
+ extendConfig?: {} | undefined;
3981
+ } | undefined;
3982
+ devServer?: {
3983
+ extendConfig?: {} | undefined;
3984
+ } | {
3985
+ extendConfig?: {} | undefined;
3986
+ } | undefined;
3987
+ } | undefined;
3988
+ prepare?: {
3989
+ types?: {} | undefined;
3990
+ publicPaths?: {} | undefined;
3991
+ } | {
3992
+ types?: {} | undefined;
3993
+ publicPaths?: {} | undefined;
3994
+ } | undefined;
3995
+ entrypoints?: {
3996
+ resolved?: {} | undefined;
3997
+ grouped?: {} | undefined;
3998
+ } | {
3999
+ resolved?: {} | undefined;
4000
+ grouped?: {} | undefined;
4001
+ } | undefined;
4002
+ ready?: {} | undefined;
3244
4003
  } | undefined;
3245
4004
  setup?: {} | undefined;
3246
4005
  } | undefined)[] | undefined;
@@ -3261,6 +4020,7 @@ export declare const fakeWxt: (overrides?: {
3261
4020
  beforeEach?: {} | undefined;
3262
4021
  afterEach?: {} | undefined;
3263
4022
  } | undefined;
4023
+ hook?: {} | undefined;
3264
4024
  logger?: {
3265
4025
  debug?: {} | undefined;
3266
4026
  log?: {} | undefined;
@@ -260,6 +260,7 @@ export const fakeResolvedConfig = fakeObjectCreator(() => {
260
260
  });
261
261
  export const fakeWxt = fakeObjectCreator(() => ({
262
262
  config: fakeResolvedConfig(),
263
+ hook: vi.fn(),
263
264
  hooks: mock(),
264
265
  logger: mock(),
265
266
  reloadConfig: vi.fn(),
@@ -118,9 +118,7 @@ function getSimpleAstJson(ast) {
118
118
  return ast.map(getSimpleAstJson);
119
119
  } else if (typeof ast === "object") {
120
120
  return Object.fromEntries(
121
- Object.entries(ast).filter(
122
- ([key, value]) => key !== "loc" && key !== "start" && key !== "end"
123
- ).map(([key, value]) => [key, getSimpleAstJson(value)])
121
+ Object.entries(ast).filter(([key]) => key !== "loc" && key !== "start" && key !== "end").map(([key, value]) => [key, getSimpleAstJson(value)])
124
122
  );
125
123
  } else {
126
124
  return ast;
package/dist/core/wxt.mjs CHANGED
@@ -14,6 +14,7 @@ export async function registerWxt(command, inlineConfig = {}, getServer) {
14
14
  wxt = {
15
15
  config,
16
16
  hooks,
17
+ hook: hooks.hook.bind(hooks),
17
18
  get logger() {
18
19
  return config.logger;
19
20
  },
package/dist/core/zip.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import fs from "fs-extra";
3
- import { kebabCaseAlphanumeric } from "./utils/strings.mjs";
3
+ import { safeFilename } from "./utils/strings.mjs";
4
4
  import { getPackageJson } from "./utils/package.mjs";
5
5
  import { minimatch } from "minimatch";
6
6
  import { formatDuration } from "./utils/time.mjs";
@@ -16,9 +16,7 @@ export async function zip(config) {
16
16
  const start = Date.now();
17
17
  wxt.logger.info("Zipping extension...");
18
18
  const zipFiles = [];
19
- const projectName = wxt.config.zip.name ?? kebabCaseAlphanumeric(
20
- (await getPackageJson())?.name || path.dirname(process.cwd())
21
- );
19
+ const projectName = wxt.config.zip.name ?? safeFilename((await getPackageJson())?.name || path.dirname(process.cwd()));
22
20
  const applyTemplate = (template) => template.replaceAll("{{name}}", projectName).replaceAll("{{browser}}", wxt.config.browser).replaceAll(
23
21
  "{{version}}",
24
22
  output.manifest.version_name ?? output.manifest.version
package/dist/modules.d.ts CHANGED
@@ -17,17 +17,21 @@ export declare function defineWxtModule<TOptions extends WxtModuleOptions>(modul
17
17
  * the output directory. This will speed up project builds since it just has to
18
18
  * copy some files instead of bundling them.
19
19
  *
20
+ * To extract entrypoint options from a JS/TS file, use
21
+ * `wxt.builder.importEntrypoint` (see example).
22
+ *
20
23
  * @param wxt The wxt instance provided by the module's setup function.
21
24
  * @param entrypoint The entrypoint to be bundled along with the extension.
22
25
  *
23
26
  * @example
24
- * export default defineWxtModule((wxt, options) => {
27
+ * export default defineWxtModule(async (wxt, options) => {
28
+ * const entrypointPath = "/path/to/my-entrypoint.ts";
25
29
  * addEntrypoint(wxt, {
26
- * type: "unlisted-page",
27
- * name: "changelog",
28
- * inputPath: "wxt-module-changelog/index.html"
30
+ * type: "content-script",
31
+ * name: "some-name",
32
+ * inputPath: entrypointPath,
29
33
  * outputDir: wxt.config.outputDir,
30
- * options: {},
34
+ * options: await wxt.builder.importEntrypoint(entrypointPath),
31
35
  * });
32
36
  * });
33
37
  */
package/dist/types.d.ts CHANGED
@@ -747,7 +747,33 @@ export type ResolvedPerBrowserOptions<T, TOmitted extends keyof T = never> = {
747
747
  * Manifest customization available in the `wxt.config.ts` file. You cannot configure entrypoints
748
748
  * here, they are configured inline.
749
749
  */
750
- export type UserManifest = Partial<Omit<Manifest.WebExtensionManifest, 'background' | 'chrome_url_overrides' | 'devtools_page' | 'manifest_version' | 'options_page' | 'options_ui' | 'sandbox'>>;
750
+ export type UserManifest = Partial<Omit<chrome.runtime.ManifestV3, 'action' | 'background' | 'chrome_url_overrides' | 'devtools_page' | 'manifest_version' | 'options_page' | 'options_ui' | 'sandbox'>> & {
751
+ action?: chrome.runtime.ManifestV3['action'] & {
752
+ browser_style?: boolean;
753
+ };
754
+ browser_action?: chrome.runtime.ManifestV2['browser_action'] & {
755
+ browser_style?: boolean;
756
+ };
757
+ page_action?: chrome.runtime.ManifestV2['page_action'] & {
758
+ browser_style?: boolean;
759
+ };
760
+ browser_specific_settings?: {
761
+ gecko?: {
762
+ id?: string;
763
+ strict_min_version?: string;
764
+ strict_max_version?: string;
765
+ update_url?: string;
766
+ };
767
+ gecko_android?: {
768
+ strict_min_version?: string;
769
+ strict_max_version?: string;
770
+ };
771
+ safari?: {
772
+ strict_min_version?: string;
773
+ strict_max_version?: string;
774
+ };
775
+ };
776
+ };
751
777
  export type UserManifestFn = (env: ConfigEnv) => UserManifest | Promise<UserManifest>;
752
778
  export interface ConfigEnv {
753
779
  /**
@@ -995,6 +1021,9 @@ export interface WxtHooks {
995
1021
  'build:manifestGenerated': (wxt: Wxt, manifest: Manifest.WebExtensionManifest) => HookResult;
996
1022
  /**
997
1023
  * Called once all entrypoints have been loaded from the `entrypointsDir`.
1024
+ * Use `wxt.builder.importEntrypoint` to load entrypoint options from the
1025
+ * file, or manually define them.
1026
+ *
998
1027
  * @param wxt The configured WXT object
999
1028
  * @param entrypoints The list of entrypoints to be built
1000
1029
  */
@@ -1016,6 +1045,10 @@ export interface WxtHooks {
1016
1045
  export interface Wxt {
1017
1046
  config: ResolvedConfig;
1018
1047
  hooks: Hookable<WxtHooks>;
1048
+ /**
1049
+ * Alias for `wxt.hooks.hook(...)`.
1050
+ */
1051
+ hook: Hookable<WxtHooks>['hook'];
1019
1052
  /**
1020
1053
  * Alias for config.logger
1021
1054
  */
@@ -1241,7 +1274,7 @@ export interface WxtModule<TOptions extends WxtModuleOptions> {
1241
1274
  * Alternative to adding hooks in setup function with `wxt.hooks`. Hooks are
1242
1275
  * added before the `setup` function is called.
1243
1276
  */
1244
- hooks?: Partial<WxtHooks>;
1277
+ hooks?: NestedHooks<WxtHooks>;
1245
1278
  /**
1246
1279
  * A custom function that can be used to setup hooks and call module-specific
1247
1280
  * APIs.
package/dist/version.mjs CHANGED
@@ -1 +1 @@
1
- export const version = "0.19.7";
1
+ export const version = "0.19.9";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "wxt",
3
3
  "type": "module",
4
- "version": "0.19.8",
4
+ "version": "0.19.9",
5
5
  "description": "Next gen framework for developing web extensions",
6
6
  "repository": {
7
7
  "type": "git",
@@ -70,6 +70,7 @@
70
70
  }
71
71
  },
72
72
  "dependencies": {
73
+ "@types/chrome": "^0.0.269",
73
74
  "@aklinker1/rollup-plugin-visualizer": "5.12.0",
74
75
  "@types/webextension-polyfill": "^0.10.7",
75
76
  "@webext-core/fake-browser": "^1.3.1",
@@ -84,7 +85,7 @@
84
85
  "defu": "^6.1.4",
85
86
  "dequal": "^2.0.3",
86
87
  "esbuild": "^0.23.0",
87
- "execa": "^9.3.0",
88
+ "execa": "^9.3.1",
88
89
  "fast-glob": "^3.3.2",
89
90
  "filesize": "^10.1.4",
90
91
  "fs-extra": "^11.2.0",
@@ -103,20 +104,20 @@
103
104
  "nypm": "^0.3.9",
104
105
  "ohash": "^1.1.3",
105
106
  "open": "^10.1.0",
106
- "ora": "^8.0.1",
107
+ "ora": "^8.1.0",
107
108
  "picocolors": "^1.0.1",
108
109
  "prompts": "^2.4.2",
109
110
  "publish-browser-extension": "^2.1.3",
110
- "unimport": "^3.9.1",
111
+ "scule": "^1.3.0",
112
+ "unimport": "^3.11.1",
111
113
  "vite": "^5.3.5",
112
114
  "vite-node": "^2.0.4",
113
115
  "web-ext-run": "^0.2.1",
114
116
  "webextension-polyfill": "^0.12.0"
115
117
  },
116
118
  "devDependencies": {
117
- "@aklinker1/check": "^1.3.1",
119
+ "@aklinker1/check": "^1.4.5",
118
120
  "@faker-js/faker": "^8.4.1",
119
- "@types/chrome": "^0.0.269",
120
121
  "@types/fs-extra": "^11.0.4",
121
122
  "@types/lodash.merge": "^4.6.9",
122
123
  "@types/natural-compare": "^1.4.3",
@@ -126,6 +127,7 @@
126
127
  "extract-zip": "^2.0.1",
127
128
  "happy-dom": "^14.12.3",
128
129
  "lodash.merge": "^4.6.2",
130
+ "oxlint": "^0.9.1",
129
131
  "p-map": "^7.0.2",
130
132
  "publint": "^0.2.9",
131
133
  "tsx": "4.15.7",
@@ -134,9 +136,6 @@
134
136
  "vitest": "^2.0.4",
135
137
  "vitest-plugin-random-seed": "^1.1.0"
136
138
  },
137
- "peerDependencies": {
138
- "@types/chrome": "*"
139
- },
140
139
  "peerDependenciesMeta": {
141
140
  "@types/chrome": {
142
141
  "optional": true