@lynx-js/web-worker-runtime-canary 0.15.8-canary-20250827-60c81a1e → 0.16.0-canary-20250828-c1f8715a
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.
package/CHANGELOG.md
CHANGED
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
# @lynx-js/web-worker-runtime
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.16.0-canary-20250828064127-c1f8715a81b2e69ff46fc363013626db4468c209
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- refactor: provide the mts a real globalThis ([#1589](https://github.com/lynx-family/lynx-stack/pull/1589))
|
|
8
|
+
|
|
9
|
+
Before this change, We create a function wrapper and a fake globalThis for Javascript code.
|
|
10
|
+
|
|
11
|
+
This caused some issues.
|
|
12
|
+
|
|
13
|
+
After this change, we will create an iframe for createing an isolated Javascript context.
|
|
14
|
+
|
|
15
|
+
This means the globalThis will be the real one.
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
6
18
|
|
|
7
19
|
- fix: the SystemInfo in bts should be assigned to the globalThis ([#1599](https://github.com/lynx-family/lynx-stack/pull/1599))
|
|
8
20
|
|
|
9
|
-
- Updated dependencies [[`bb53d9a`](https://github.com/lynx-family/lynx-stack/commit/bb53d9a035f607e7c89952098d4ed77877a2e3c1)]:
|
|
10
|
-
- @lynx-js/web-mainthread-apis@0.
|
|
11
|
-
- @lynx-js/web-constants@0.
|
|
12
|
-
- @lynx-js/web-worker-rpc@0.
|
|
21
|
+
- Updated dependencies [[`bb53d9a`](https://github.com/lynx-family/lynx-stack/commit/bb53d9a035f607e7c89952098d4ed77877a2e3c1), [`c1f8715`](https://github.com/lynx-family/lynx-stack/commit/c1f8715a81b2e69ff46fc363013626db4468c209)]:
|
|
22
|
+
- @lynx-js/web-mainthread-apis@0.16.0-canary-20250828064127-c1f8715a81b2e69ff46fc363013626db4468c209
|
|
23
|
+
- @lynx-js/web-constants@0.16.0-canary-20250828064127-c1f8715a81b2e69ff46fc363013626db4468c209
|
|
24
|
+
- @lynx-js/web-worker-rpc@0.16.0-canary-20250828064127-c1f8715a81b2e69ff46fc363013626db4468c209
|
|
13
25
|
|
|
14
26
|
## 0.15.7
|
|
15
27
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { callLepusMethodEndpoint, setNativePropsEndpoint, triggerComponentEventEndpoint, selectComponentEndpoint, I18nResource, reportErrorEndpoint,
|
|
1
|
+
import { callLepusMethodEndpoint, setNativePropsEndpoint, triggerComponentEventEndpoint, selectComponentEndpoint, I18nResource, reportErrorEndpoint, } from '@lynx-js/web-constants';
|
|
2
2
|
import { createInvokeUIMethod } from './crossThreadHandlers/createInvokeUIMethod.js';
|
|
3
3
|
import { registerPublicComponentEventHandler } from './crossThreadHandlers/registerPublicComponentEventHandler.js';
|
|
4
4
|
import { registerGlobalExposureEventHandler } from './crossThreadHandlers/registerGlobalExposureEventHandler.js';
|
|
@@ -23,30 +23,7 @@ export async function createNativeApp(config) {
|
|
|
23
23
|
const reportError = uiThreadRpc.createCall(reportErrorEndpoint);
|
|
24
24
|
const createBundleInitReturnObj = () => {
|
|
25
25
|
const entry = globalThis.module.exports;
|
|
26
|
-
return
|
|
27
|
-
init: (lynxCoreInject) => {
|
|
28
|
-
lynxCoreInject.tt.lynxCoreInject = lynxCoreInject;
|
|
29
|
-
lynxCoreInject.tt.globalThis ??= new Proxy(lynxCoreInject, {
|
|
30
|
-
get(target, prop) {
|
|
31
|
-
if (typeof prop === 'string' && globalDisallowedVars.includes(prop)) {
|
|
32
|
-
return undefined;
|
|
33
|
-
}
|
|
34
|
-
// @ts-expect-error
|
|
35
|
-
return target[prop] ?? globalThis[prop];
|
|
36
|
-
},
|
|
37
|
-
set(target, prop, value) {
|
|
38
|
-
// @ts-expect-error
|
|
39
|
-
target[prop] = value;
|
|
40
|
-
return true;
|
|
41
|
-
},
|
|
42
|
-
ownKeys(target) {
|
|
43
|
-
return Reflect.ownKeys(target).filter((key) => key !== 'globalThis');
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
const ret = entry?.(lynxCoreInject.tt);
|
|
47
|
-
return ret;
|
|
48
|
-
},
|
|
49
|
-
};
|
|
26
|
+
return entry;
|
|
50
27
|
};
|
|
51
28
|
const i18nResource = new I18nResource();
|
|
52
29
|
let release = '';
|
|
@@ -14,6 +14,26 @@ const { prepareMainThreadAPIs } = await import(
|
|
|
14
14
|
/* webpackPrefetch: true */
|
|
15
15
|
/* webpackFetchPriority: "high" */
|
|
16
16
|
'@lynx-js/web-mainthread-apis');
|
|
17
|
+
function loadScriptSync(url) {
|
|
18
|
+
importScripts(url);
|
|
19
|
+
return globalThis.module?.exports;
|
|
20
|
+
}
|
|
21
|
+
function loadScript(url) {
|
|
22
|
+
return new Promise((resolve, reject) => {
|
|
23
|
+
fetch(url)
|
|
24
|
+
.then(() => {
|
|
25
|
+
importScripts(url);
|
|
26
|
+
resolve(globalThis.module?.exports);
|
|
27
|
+
}).catch(reject);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function createCurrentWorkerRealm() {
|
|
31
|
+
return {
|
|
32
|
+
globalWindow: globalThis,
|
|
33
|
+
loadScript,
|
|
34
|
+
loadScriptSync,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
17
37
|
export async function startMainThreadWorker(uiThreadPort, backgroundThreadPort) {
|
|
18
38
|
const uiThreadRpc = new Rpc(uiThreadPort, 'main-to-ui');
|
|
19
39
|
const backgroundThreadRpc = new Rpc(backgroundThreadPort, 'main-to-bg');
|
|
@@ -26,14 +46,19 @@ export async function startMainThreadWorker(uiThreadPort, backgroundThreadPort)
|
|
|
26
46
|
options,
|
|
27
47
|
]);
|
|
28
48
|
};
|
|
29
|
-
const
|
|
49
|
+
const document = new OffscreenDocument({
|
|
30
50
|
onCommit: uiFlush,
|
|
31
51
|
});
|
|
52
|
+
Object.assign(globalThis, {
|
|
53
|
+
document,
|
|
54
|
+
});
|
|
55
|
+
const mtsRealm = createCurrentWorkerRealm();
|
|
32
56
|
const i18nResources = new I18nResources();
|
|
33
|
-
uiThreadRpc.registerHandler(postOffscreenEventEndpoint,
|
|
57
|
+
uiThreadRpc.registerHandler(postOffscreenEventEndpoint, document[_onEvent]);
|
|
34
58
|
const sendMultiThreadExposureChangedEndpoint = uiThreadRpc.createCall(multiThreadExposureChangedEndpoint);
|
|
35
|
-
const { startMainThread } = prepareMainThreadAPIs(backgroundThreadRpc,
|
|
36
|
-
|
|
59
|
+
const { startMainThread } = prepareMainThreadAPIs(backgroundThreadRpc, document, // rootDom
|
|
60
|
+
document, mtsRealm, (exposureChangedElementUniqueIds) => {
|
|
61
|
+
document.commit();
|
|
37
62
|
sendMultiThreadExposureChangedEndpoint(exposureChangedElementUniqueIds
|
|
38
63
|
.map(e => e.getAttribute(lynxUniqueIdAttribute))
|
|
39
64
|
.filter(id => id !== null));
|
|
@@ -41,10 +66,9 @@ export async function startMainThreadWorker(uiThreadPort, backgroundThreadPort)
|
|
|
41
66
|
i18nResources.setData(initI18nResources);
|
|
42
67
|
return i18nResources;
|
|
43
68
|
});
|
|
44
|
-
uiThreadRpc.registerHandler(mainThreadStartEndpoint, (config) => {
|
|
45
|
-
startMainThread(config)
|
|
46
|
-
|
|
47
|
-
});
|
|
69
|
+
uiThreadRpc.registerHandler(mainThreadStartEndpoint, async (config) => {
|
|
70
|
+
await startMainThread(config);
|
|
71
|
+
registerUpdateDataHandler(uiThreadRpc, globalThis);
|
|
48
72
|
});
|
|
49
73
|
uiThreadRpc?.registerHandler(updateI18nResourcesEndpoint, data => {
|
|
50
74
|
i18nResources.setData(data);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lynx-js/web-worker-runtime-canary",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0-canary-20250828-c1f8715a",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "",
|
|
6
6
|
"keywords": [],
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@lynx-js/offscreen-document": "npm:@lynx-js/offscreen-document-canary@0.1.3",
|
|
26
|
-
"@lynx-js/web-constants": "npm:@lynx-js/web-constants-canary@0.
|
|
27
|
-
"@lynx-js/web-mainthread-apis": "npm:@lynx-js/web-mainthread-apis-canary@0.
|
|
28
|
-
"@lynx-js/web-worker-rpc": "npm:@lynx-js/web-worker-rpc-canary@0.
|
|
26
|
+
"@lynx-js/web-constants": "npm:@lynx-js/web-constants-canary@0.16.0-canary-20250828-c1f8715a",
|
|
27
|
+
"@lynx-js/web-mainthread-apis": "npm:@lynx-js/web-mainthread-apis-canary@0.16.0-canary-20250828-c1f8715a",
|
|
28
|
+
"@lynx-js/web-worker-rpc": "npm:@lynx-js/web-worker-rpc-canary@0.16.0-canary-20250828-c1f8715a"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@lynx-js/lynx-core": "0.1.3"
|