diff --git a/package.json b/package.json index cb7458ee..5d0bcaaf 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,8 @@ "repository": "https://github.com/Mr-Quin/danmaku-anywhere", "scripts": { "dev:web-app": "pnpm -r -F \"./app/web\" start", + "dev:extension": "pnpm -r -F \"./packages/danmaku-anywhere\" dev", + "dev:extension:standalone": "pnpm -r -F \"./packages/danmaku-anywhere\" standalone:dev", "build": "pnpm -r build", "build:packages": "pnpm -r -F \"./packages/**\" build", "format": "pnpm -r -F \"./packages/**\" format", diff --git a/packages/danmaku-anywhere/manifest.ts b/packages/danmaku-anywhere/manifest.ts index e95a031c..cf315257 100644 --- a/packages/danmaku-anywhere/manifest.ts +++ b/packages/danmaku-anywhere/manifest.ts @@ -53,7 +53,7 @@ export const manifest = defineManifest({ run_at: 'document_start', }, { - matches: ['https://*/*', 'http://*/*'], + matches: [''], js: ['src/content/player/index.ts'], run_at: 'document_start', all_frames: true, diff --git a/packages/danmaku-anywhere/src/common/utils/utils.ts b/packages/danmaku-anywhere/src/common/utils/utils.ts index 30dffda5..4e9e1650 100644 --- a/packages/danmaku-anywhere/src/common/utils/utils.ts +++ b/packages/danmaku-anywhere/src/common/utils/utils.ts @@ -122,24 +122,21 @@ export const matchWithPinyin = (inputString: string, searchString: string) => { return !!pinyinMatches } +function fallbackGenerateUUID(): string { + const template = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' + return template.replace(/[xy]/g, (c) => { + const r = (Math.random() * 16) | 0 + const v = c === 'x' ? r : (r & 0x3) | 0x8 + return v.toString(16) + }) +} + export const getRandomUUID = () => { try { return globalThis.crypto.randomUUID() - } catch (e) { - console.warn( - 'Failed to generate UUID using crypto.randomUUID, falling back to Math.random', - e - ) + } catch { // fallback to Math.random if crypto.randomUUID is not available - const generateUUID = (): string => { - const template = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' - return template.replace(/[xy]/g, (c) => { - const r = (Math.random() * 16) | 0 - const v = c === 'x' ? r : (r & 0x3) | 0x8 - return v.toString(16) - }) - } - return generateUUID() + return fallbackGenerateUUID() } } diff --git a/packages/danmaku-anywhere/src/content/player/PlayerScript.service.ts b/packages/danmaku-anywhere/src/content/player/PlayerScript.service.ts index 11fdb383..75245d87 100644 --- a/packages/danmaku-anywhere/src/content/player/PlayerScript.service.ts +++ b/packages/danmaku-anywhere/src/content/player/PlayerScript.service.ts @@ -4,6 +4,7 @@ import { type ILogger, LoggerSymbol } from '@/common/Logger' import { createRpcServer } from '@/common/rpc/server' import { playerRpcClient } from '@/common/rpcClient/background/client' import type { PlayerRelayCommands } from '@/common/rpcClient/background/types' +import { getRandomUUID } from '@/common/utils/utils' import { PlayerCommandHandler } from '@/content/player/PlayerCommandHandler.service' /** @@ -20,7 +21,7 @@ import { PlayerCommandHandler } from '@/content/player/PlayerCommandHandler.serv export class PlayerScript { private logger: ILogger private frameId = -1 - private readonly documentId = crypto.randomUUID() + private readonly documentId = getRandomUUID() constructor(@inject(LoggerSymbol) logger: ILogger) { this.logger = logger.sub('[PlayerScript]')