927aca612e
BREAKING CHANGE: Renamed undocumented constants: - `__BROWSER__` → `import.meta.env.BROWSER` - `__COMMAND__` → `import.meta.env.COMMAND` - `__MANIFEST_VERSION__` → `import.meta.env.MANIFEST_VERSION` - `__IS_CHROME__` → `import.meta.env.CHROME` - `__IS_FIREFOX__` → `import.meta.env.FIREFOX` - `__IS_SAFARI__` → `import.meta.env.SAFARI` - `__IS_EDGE__` → `import.meta.env.EDGE` - `__IS_OPERA__` → `import.meta.env.OPERA`
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import definition from 'virtual:user-background';
|
|
import { setupWebSocket } from './utils/setup-web-socket';
|
|
import { logger } from '../sandbox/utils/logger';
|
|
import { browser } from 'wxt/browser';
|
|
import { keepServiceWorkerAlive } from './utils/keep-service-worker-alive';
|
|
import { reloadContentScript } from './utils/reload-content-scripts';
|
|
|
|
if (import.meta.env.COMMAND === 'serve') {
|
|
try {
|
|
const ws = setupWebSocket((message) => {
|
|
if (message.event === 'wxt:reload-extension') browser.runtime.reload();
|
|
if (message.event === 'wxt:reload-content-script' && message.data != null)
|
|
reloadContentScript(message.data);
|
|
});
|
|
|
|
if (import.meta.env.MANIFEST_VERSION === 3) {
|
|
// Tell the server the background script is loaded and ready to go
|
|
ws.addEventListener('open', () => {
|
|
const msg = { type: 'custom', event: 'wxt:background-initialized' };
|
|
ws.send(JSON.stringify(msg));
|
|
});
|
|
|
|
// Web Socket will disconnect if the service worker is killed
|
|
keepServiceWorkerAlive();
|
|
}
|
|
} catch (err) {
|
|
logger.error('Failed to setup web socket connection with dev server', err);
|
|
}
|
|
|
|
browser.commands.onCommand.addListener((command) => {
|
|
if (command === 'wxt:reload-extension') {
|
|
browser.runtime.reload();
|
|
}
|
|
});
|
|
}
|
|
|
|
try {
|
|
const res = definition.main();
|
|
// @ts-expect-error: res shouldn't be a promise, but we're checking it anyways
|
|
if (res instanceof Promise) {
|
|
console.warn(
|
|
"The background's main() function return a promise, but it must be synchonous",
|
|
);
|
|
}
|
|
} catch (err) {
|
|
logger.error('The background crashed on startup!');
|
|
throw err;
|
|
}
|