diff --git a/packages/wxt/src/browser/chrome.ts b/packages/wxt/src/browser/chrome.ts
index 6111ac7d..d95bf905 100644
--- a/packages/wxt/src/browser/chrome.ts
+++ b/packages/wxt/src/browser/chrome.ts
@@ -1,4 +1,6 @@
///
+import type { WxtRuntime, WxtI18n } from './index';
+
/**
* EXPERIMENTAL
*
@@ -7,13 +9,6 @@
* @module wxt/browser/chrome
*/
-export interface WxtRuntime {
- // Overriden per-project
-}
-export interface WxtI18n {
- // Overriden per-project
-}
-
export type Chrome = typeof chrome;
export type WxtBrowser = Omit & {
runtime: WxtRuntime & Omit;
diff --git a/packages/wxt/src/browser/index.ts b/packages/wxt/src/browser/index.ts
index fee152da..eeb0a4f3 100644
--- a/packages/wxt/src/browser/index.ts
+++ b/packages/wxt/src/browser/index.ts
@@ -4,18 +4,18 @@
* @module wxt/browser
*/
-import originalBrowser, { Browser, Runtime, I18n } from 'webextension-polyfill';
+import originalBrowser, { Browser } from 'webextension-polyfill';
-export interface AugmentedBrowser extends Browser {
- runtime: WxtRuntime;
- i18n: WxtI18n;
-}
+export type AugmentedBrowser = Omit & {
+ runtime: WxtRuntime & Omit;
+ i18n: WxtI18n & Omit;
+};
-export interface WxtRuntime extends Runtime.Static {
+export interface WxtRuntime {
// Overriden per-project
}
-export interface WxtI18n extends I18n.Static {
+export interface WxtI18n {
// Overriden per-project
}
diff --git a/packages/wxt/src/client/content-scripts/ui/index.ts b/packages/wxt/src/client/content-scripts/ui/index.ts
index 9abd5cf6..c9ba6fb4 100644
--- a/packages/wxt/src/client/content-scripts/ui/index.ts
+++ b/packages/wxt/src/client/content-scripts/ui/index.ts
@@ -62,6 +62,7 @@ export function createIframeUi(
const wrapper = document.createElement('div');
wrapper.setAttribute('data-wxt-iframe', '');
const iframe = document.createElement('iframe');
+ // @ts-expect-error: getURL is defined per-project, but not inside the package
iframe.src = browser.runtime.getURL(options.page);
wrapper.appendChild(iframe);
@@ -258,6 +259,7 @@ function mountUi(
* Load the CSS for the current entrypoint.
*/
async function loadCss(): Promise {
+ // @ts-expect-error: getURL is defined per-project, but not inside the package
const url = browser.runtime.getURL(
`/content-scripts/${import.meta.env.ENTRYPOINT}.css`,
);
diff --git a/packages/wxt/src/core/utils/building/generate-wxt-dir.ts b/packages/wxt/src/core/utils/building/generate-wxt-dir.ts
index 386dd55d..74bdf433 100644
--- a/packages/wxt/src/core/utils/building/generate-wxt-dir.ts
+++ b/packages/wxt/src/core/utils/building/generate-wxt-dir.ts
@@ -94,9 +94,9 @@ async function getPathsDeclarationEntry(
.join('\n');
const template = `// Generated by wxt
-import "${wxt.config.browserModule}";
+import "wxt/browser";
-declare module "${wxt.config.browserModule}" {
+declare module "wxt/browser" {
export type PublicPath =
{{ union }}
type HtmlPublicPath = Extract
@@ -117,9 +117,9 @@ declare module "${wxt.config.browserModule}" {
async function getI18nDeclarationEntry(): Promise {
const defaultLocale = wxt.config.manifest.default_locale;
const template = `// Generated by wxt
-import "${wxt.config.browserModule}";
+import "wxt/browser";
-declare module "${wxt.config.browserModule}" {
+declare module "wxt/browser" {
/**
* See https://developer.chrome.com/docs/extensions/reference/i18n/#method-getMessage
*/
diff --git a/packages/wxt/src/core/utils/building/resolve-config.ts b/packages/wxt/src/core/utils/building/resolve-config.ts
index 7bb7fcc7..6959b5b0 100644
--- a/packages/wxt/src/core/utils/building/resolve-config.ts
+++ b/packages/wxt/src/core/utils/building/resolve-config.ts
@@ -183,8 +183,6 @@ export async function resolveConfig(
userConfigMetadata: userConfigMetadata ?? {},
alias,
extensionApi,
- browserModule:
- extensionApi === 'chrome' ? 'wxt/browser/chrome' : 'wxt/browser',
entrypointLoader: mergedConfig.entrypointLoader ?? 'vite-node',
experimental: defu(mergedConfig.experimental, {}),
dev: {
diff --git a/packages/wxt/src/core/utils/testing/fake-objects.ts b/packages/wxt/src/core/utils/testing/fake-objects.ts
index 63906398..51f628ae 100644
--- a/packages/wxt/src/core/utils/testing/fake-objects.ts
+++ b/packages/wxt/src/core/utils/testing/fake-objects.ts
@@ -297,7 +297,6 @@ export const fakeResolvedConfig = fakeObjectCreator(() => {
userConfigMetadata: {},
alias: {},
extensionApi: 'webextension-polyfill',
- browserModule: 'wxt/browser',
entrypointLoader: 'vite-node',
experimental: {},
dev: {
diff --git a/packages/wxt/src/types.ts b/packages/wxt/src/types.ts
index 747a6898..f65a7d6c 100644
--- a/packages/wxt/src/types.ts
+++ b/packages/wxt/src/types.ts
@@ -1215,7 +1215,6 @@ export interface ResolvedConfig {
*/
alias: Record;
extensionApi: 'webextension-polyfill' | 'chrome';
- browserModule: 'wxt/browser' | 'wxt/browser/chrome';
entrypointLoader: 'vite-node' | 'jiti';
experimental: {};
dev: {