diff --git a/.changeset/hip-apples-obey.md b/.changeset/hip-apples-obey.md new file mode 100644 index 0000000000..42766e2de5 --- /dev/null +++ b/.changeset/hip-apples-obey.md @@ -0,0 +1,8 @@ +--- +"@lynx-js/web-mainthread-apis": patch +"@lynx-js/web-worker-runtime": patch +"@lynx-js/web-constants": patch +"@lynx-js/web-core": patch +--- + +fix: the SystemInfo in bts should be assigned to the globalThis diff --git a/packages/web-platform/web-constants/src/types/BackThreadStartConfigs.ts b/packages/web-platform/web-constants/src/types/BackThreadStartConfigs.ts index 09d085726f..1fdb4b2760 100644 --- a/packages/web-platform/web-constants/src/types/BackThreadStartConfigs.ts +++ b/packages/web-platform/web-constants/src/types/BackThreadStartConfigs.ts @@ -6,7 +6,6 @@ import type { Cloneable } from './Cloneable.js'; import type { LynxTemplate } from './LynxModule.js'; import type { NapiModulesMap } from './NapiModules.js'; import type { NativeModulesMap } from './NativeModules.js'; -import type { BrowserConfig } from './PageConfig.js'; export interface BackMainThreadContextConfig { initData: unknown; @@ -16,5 +15,4 @@ export interface BackMainThreadContextConfig { customSections: Record; nativeModulesMap: NativeModulesMap; napiModulesMap: NapiModulesMap; - browserConfig: BrowserConfig; } diff --git a/packages/web-platform/web-constants/src/utils/generateTemplate.ts b/packages/web-platform/web-constants/src/utils/generateTemplate.ts index 9f97e58e6d..633e226e9e 100644 --- a/packages/web-platform/web-constants/src/utils/generateTemplate.ts +++ b/packages/web-platform/web-constants/src/utils/generateTemplate.ts @@ -79,7 +79,6 @@ const backgroundInjectVars = [ 'globalThis', 'lynx', 'lynxCoreInject', - 'SystemInfo', ]; const backgroundInjectWithBind = [ diff --git a/packages/web-platform/web-core/src/uiThread/bootWorkers.ts b/packages/web-platform/web-core/src/uiThread/bootWorkers.ts index f36707d366..b854d17391 100644 --- a/packages/web-platform/web-core/src/uiThread/bootWorkers.ts +++ b/packages/web-platform/web-core/src/uiThread/bootWorkers.ts @@ -2,6 +2,7 @@ // Licensed under the Apache License Version 2.0 that can be found in the // LICENSE file in the root directory of this source tree. +import { systemInfo, type BrowserConfig } from '@lynx-js/web-constants'; import { Rpc } from '@lynx-js/web-worker-rpc'; import type { WorkerStartMessage } from '@lynx-js/web-worker-runtime'; @@ -16,7 +17,8 @@ const contextIdToBackgroundWorker: (Worker | undefined)[] = []; export function bootWorkers( lynxGroupId: number | undefined, - allOnUI?: boolean, + allOnUI: boolean, + browserConfig: BrowserConfig, ): LynxViewRpc { let curMainWorker: { mainThreadRpc: Rpc; @@ -31,6 +33,7 @@ export function bootWorkers( const curBackgroundWorker = createBackgroundWorker( lynxGroupId, curMainWorker.channelMainThreadWithBackground, + browserConfig, ); if (lynxGroupId !== undefined) { if (backgroundWorkerContextCount[lynxGroupId]) { @@ -97,6 +100,7 @@ function createMainWorker() { function createBackgroundWorker( lynxGroupId: number | undefined, channelMainThreadWithBackground: MessageChannel, + browserConfig: BrowserConfig, ) { const channelToBackground = new MessageChannel(); let backgroundThreadWorker: Worker; @@ -111,6 +115,7 @@ function createBackgroundWorker( mode: 'background', toUIThread: channelToBackground.port2, toPeerThread: channelMainThreadWithBackground.port2, + systemInfo: { ...systemInfo, ...browserConfig }, }; backgroundThreadWorker.postMessage(backgroundThreadMessage, [ channelToBackground.port2, diff --git a/packages/web-platform/web-core/src/uiThread/startUIThread.ts b/packages/web-platform/web-core/src/uiThread/startUIThread.ts index 692e684241..af203875d5 100644 --- a/packages/web-platform/web-core/src/uiThread/startUIThread.ts +++ b/packages/web-platform/web-core/src/uiThread/startUIThread.ts @@ -44,7 +44,7 @@ export function startUIThread( mainThreadRpc, backgroundRpc, terminateWorkers, - } = bootWorkers(lynxGroupId, allOnUI); + } = bootWorkers(lynxGroupId, allOnUI, configs.browserConfig); const { markTiming, sendGlobalEvent, diff --git a/packages/web-platform/web-mainthread-apis/src/prepareMainThreadAPIs.ts b/packages/web-platform/web-mainthread-apis/src/prepareMainThreadAPIs.ts index 6c3fbbee0a..84a331183d 100644 --- a/packages/web-platform/web-mainthread-apis/src/prepareMainThreadAPIs.ts +++ b/packages/web-platform/web-mainthread-apis/src/prepareMainThreadAPIs.ts @@ -169,7 +169,6 @@ export function prepareMainThreadAPIs( ), nativeModulesMap, napiModulesMap, - browserConfig, }); if (!ssrHydrateInfo) { mtsGlobalThis.renderPage!(initData); diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeApp.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeApp.ts index f5326d71f5..f685e74224 100644 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeApp.ts +++ b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeApp.ts @@ -11,7 +11,6 @@ import { type LynxJSModule, type NativeApp, type LynxCrossThreadContext, - systemInfo, type BackMainThreadContextConfig, I18nResource, reportErrorEndpoint, @@ -47,7 +46,6 @@ export async function createNativeApp( template, nativeModulesMap, timingSystem, - browserConfig, } = config; const performanceApis = createPerformanceApis( timingSystem, @@ -91,9 +89,6 @@ export async function createNativeApp( ); }, }); - Object.assign(lynxCoreInject.tt, { - SystemInfo: { ...systemInfo, ...browserConfig }, - }); const ret = entry?.(lynxCoreInject.tt); return ret; }, diff --git a/packages/web-platform/web-worker-runtime/src/global.d.ts b/packages/web-platform/web-worker-runtime/src/global.d.ts new file mode 100644 index 0000000000..3063474c8f --- /dev/null +++ b/packages/web-platform/web-worker-runtime/src/global.d.ts @@ -0,0 +1,6 @@ +declare global { + var SystemInfo: Record | undefined; + var module: { exports: any }; +} + +export {}; diff --git a/packages/web-platform/web-worker-runtime/src/index.ts b/packages/web-platform/web-worker-runtime/src/index.ts index b6b970da23..80ff6c2028 100644 --- a/packages/web-platform/web-worker-runtime/src/index.ts +++ b/packages/web-platform/web-worker-runtime/src/index.ts @@ -8,11 +8,15 @@ export interface WorkerStartMessage { mode: 'main' | 'background'; toPeerThread: MessagePort; toUIThread: MessagePort; + systemInfo?: Record; } globalThis.onmessage = async (ev) => { - const { mode, toPeerThread, toUIThread } = ev + const { mode, toPeerThread, toUIThread, systemInfo } = ev .data as WorkerStartMessage; + if (!globalThis.SystemInfo) { + globalThis.SystemInfo = systemInfo; + } if (mode === 'main') { const { startMainThreadWorker } = await import( /* webpackChunkName: "web-worker-runtime-main-thread" */