@lynx-js/react 0.105.0 → 0.105.1
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 +39 -0
- package/README.md +57 -5
- package/package.json +7 -2
- package/refresh/.turbo/turbo-build.log +1 -1
- package/runtime/lib/internal.d.ts +1 -1
- package/runtime/lib/internal.js +1 -1
- package/runtime/lib/internal.js.map +1 -1
- package/runtime/lib/legacy-react-runtime/index.js +4 -2
- package/runtime/lib/legacy-react-runtime/index.js.map +1 -1
- package/runtime/lib/lifecycle/reload.js +2 -0
- package/runtime/lib/lifecycle/reload.js.map +1 -1
- package/runtime/lib/lynx/tt.js +1 -1
- package/runtime/lib/lynx/tt.js.map +1 -1
- package/runtime/lib/lynx-api.d.ts +2 -1
- package/runtime/lib/lynx-api.js +4 -4
- package/runtime/lib/lynx-api.js.map +1 -1
- package/runtime/lib/worklet/ctx.js +5 -5
- package/runtime/lib/worklet/ctx.js.map +1 -1
- package/runtime/lib/worklet/destroy.d.ts +2 -0
- package/runtime/lib/worklet/destroy.js +13 -0
- package/runtime/lib/worklet/destroy.js.map +1 -0
- package/runtime/lib/worklet/functionCall.d.ts +1 -0
- package/runtime/lib/worklet/functionCall.js +33 -0
- package/runtime/lib/worklet/functionCall.js.map +1 -0
- package/runtime/lib/worklet/functionality.d.ts +2 -1
- package/runtime/lib/worklet/functionality.js +21 -2
- package/runtime/lib/worklet/functionality.js.map +1 -1
- package/runtime/lib/worklet/runOnBackground.d.ts +20 -0
- package/runtime/lib/worklet/runOnBackground.js +105 -0
- package/runtime/lib/worklet/runOnBackground.js.map +1 -0
- package/runtime/lib/worklet/runOnMainThread.d.ts +19 -0
- package/runtime/lib/worklet/runOnMainThread.js +45 -0
- package/runtime/lib/worklet/runOnMainThread.js.map +1 -0
- package/runtime/lib/worklet/transformToWorklet.d.ts +1 -0
- package/runtime/lib/worklet/transformToWorklet.js +21 -0
- package/runtime/lib/worklet/transformToWorklet.js.map +1 -0
- package/runtime/lib/worklet/workletRef.js +2 -3
- package/runtime/lib/worklet/workletRef.js.map +1 -1
- package/runtime/lib/worklet/workletRefPool.d.ts +1 -2
- package/runtime/lib/worklet/workletRefPool.js +14 -11
- package/runtime/lib/worklet/workletRefPool.js.map +1 -1
- package/runtime/src/internal.ts +1 -1
- package/runtime/src/legacy-react-runtime/index.ts +4 -2
- package/runtime/src/lifecycle/reload.ts +2 -0
- package/runtime/src/lynx/tt.ts +1 -1
- package/runtime/src/lynx-api.ts +5 -4
- package/runtime/src/worklet/ctx.ts +5 -5
- package/runtime/src/worklet/destroy.ts +16 -0
- package/runtime/src/worklet/functionCall.ts +42 -0
- package/runtime/src/worklet/functionality.ts +25 -2
- package/runtime/src/worklet/runOnBackground.ts +125 -0
- package/runtime/src/worklet/runOnMainThread.ts +50 -0
- package/runtime/src/worklet/transformToWorklet.ts +26 -0
- package/runtime/src/worklet/workletRef.ts +3 -3
- package/runtime/src/worklet/workletRefPool.ts +16 -12
- package/transform/dist/wasm.cjs +1 -1
- package/transform/index.d.ts +5 -1
- package/worklet-runtime/dist/dev.js +10 -3
- package/worklet-runtime/dist/dev.js.map +2 -2
- package/worklet-runtime/dist/main.js +10 -3
- package/worklet-runtime/dist/main.js.map +2 -2
- package/worklet-runtime/lib/bindings/events.d.ts +12 -1
- package/worklet-runtime/lib/bindings/events.js +1 -0
- package/worklet-runtime/lib/bindings/events.js.map +1 -1
- package/worklet-runtime/lib/bindings/index.d.ts +1 -1
- package/worklet-runtime/lib/bindings/index.js.map +1 -1
- package/worklet-runtime/lib/bindings/types.d.ts +1 -1
- package/worklet-runtime/lib/global.d.ts +1 -1
- package/worklet-runtime/lib/jsFunctionLifecycle.d.ts +2 -2
- package/worklet-runtime/lib/jsFunctionLifecycle.js +2 -2
- package/worklet-runtime/lib/jsFunctionLifecycle.js.map +1 -1
- package/worklet-runtime/lib/listeners.js +9 -2
- package/worklet-runtime/lib/listeners.js.map +1 -1
- package/worklet-runtime/lib/workletRuntime.js +2 -2
- package/worklet-runtime/lib/workletRuntime.js.map +1 -1
- package/runtime/lib/worklet/jsImpl.d.ts +0 -11
- package/runtime/lib/worklet/jsImpl.js +0 -68
- package/runtime/lib/worklet/jsImpl.js.map +0 -1
- package/runtime/lib/worklet/runWorklet.d.ts +0 -14
- package/runtime/lib/worklet/runWorklet.js +0 -82
- package/runtime/lib/worklet/runWorklet.js.map +0 -1
- package/runtime/src/worklet/jsImpl.ts +0 -86
- package/runtime/src/worklet/runWorklet.ts +0 -88
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# @lynx-js/react
|
|
2
2
|
|
|
3
|
+
## 0.105.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Support NPM provenance. ([#30](https://github.com/lynx-family/lynx-stack/pull/30))
|
|
8
|
+
|
|
9
|
+
- feat: add compiler only version of addComponentElement, it does not support spread props but have no runtime overhead, use it by: ([#15](https://github.com/lynx-family/lynx-stack/pull/15))
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
pluginReactLynx({
|
|
13
|
+
compat: {
|
|
14
|
+
addComponentElement: {
|
|
15
|
+
compilerOnly: true,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- Fix error `createRef is not a function` ([#16](https://github.com/lynx-family/lynx-stack/pull/16))
|
|
22
|
+
|
|
23
|
+
- Support `MIXED` target for worklet, it will be used by unit testing frameworks, etc. ([#27](https://github.com/lynx-family/lynx-stack/pull/27))
|
|
24
|
+
|
|
25
|
+
- Support return value for `runOnBackground()` and `runOnMainThread()`. ([#119](https://github.com/lynx-family/lynx-stack/pull/119))
|
|
26
|
+
|
|
27
|
+
Now you can get the return value from `runOnBackground()` and `runOnMainThread()`, which enables more flexible data flow between the main thread and the background thread.
|
|
28
|
+
|
|
29
|
+
```js
|
|
30
|
+
import { runOnBackground } from '@lynx-js/react';
|
|
31
|
+
|
|
32
|
+
const onTap = async () => {
|
|
33
|
+
'main thread';
|
|
34
|
+
const text = await runOnBackground(() => {
|
|
35
|
+
'background only';
|
|
36
|
+
return 'Hello, world!';
|
|
37
|
+
})();
|
|
38
|
+
console.log(text);
|
|
39
|
+
};
|
|
40
|
+
```
|
|
41
|
+
|
|
3
42
|
## 0.105.0
|
|
4
43
|
|
|
5
44
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -1,20 +1,72 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a aria-label="ReactLynx banner" href="https://lynxjs.org/react/">
|
|
3
|
+
<img alt="@lynx-js/react" src="https://lf-lynx.tiktok-cdns.com/obj/lynx-artifacts-oss-sg/lynx-website/assets/react-lynx-banner.png" />
|
|
4
|
+
</a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
1
7
|
# ReactLynx
|
|
2
8
|
|
|
3
9
|
<p>
|
|
4
10
|
<a aria-label="NPM version" href="https://www.npmjs.com/package/@lynx-js/react">
|
|
5
|
-
<img alt="" src="https://img.shields.io/npm/v/@lynx-js/react?logo=npm" />
|
|
11
|
+
<img alt="@lynx-js/react" src="https://img.shields.io/npm/v/@lynx-js/react?logo=npm" />
|
|
6
12
|
</a>
|
|
7
|
-
<a aria-label="License" href="https://
|
|
13
|
+
<a aria-label="License" href="https://github.com/lynx-family/lynx-stack/blob/main/LICENSE">
|
|
8
14
|
<img src="https://img.shields.io/badge/License-Apache--2.0-blue" alt="license" />
|
|
9
15
|
</a>
|
|
10
16
|
</p>
|
|
11
17
|
|
|
12
|
-
|
|
18
|
+
[**ReactLynx**](https://lynxjs.org/react/) is a framework that allows you to build cross-platform [**Lynx**](https://lynxjs.org/) apps with [**React**](https://react.dev/) paradigm.
|
|
19
|
+
|
|
20
|
+
- **Aligned with React 17+**\
|
|
21
|
+
Built on battle-tested open-source implementations, it fully supports functional components, Hooks, and Context — the same set of modern React APIs.
|
|
22
|
+
|
|
23
|
+
- **Made for Lynx**\
|
|
24
|
+
Dual-threaded React tailor-made for Lynx, carrying over Lynx's instant launch and silky UI responsiveness.
|
|
25
|
+
|
|
26
|
+
- **Compatible with React Ecosystem**\
|
|
27
|
+
With [Jotai](https://jotai.org/) and [Zustand](https://zustand-demo.pmnd.rs/) for state management, [TanStack Query](https://tanstack.com/query/latest) for data fetching, Fast Refresh and DevTools for React components, everything you need is here.
|
|
28
|
+
|
|
29
|
+
## Content
|
|
30
|
+
|
|
31
|
+
- [Getting Started](#getting-started)
|
|
32
|
+
- [Documentation](#documentation)
|
|
33
|
+
- [Community and Support](#community-and-support)
|
|
34
|
+
- [Contributing](#contributing)
|
|
35
|
+
- [License](#license)
|
|
36
|
+
- [Credits](#credits)
|
|
13
37
|
|
|
14
38
|
## Getting Started
|
|
15
39
|
|
|
16
|
-
|
|
40
|
+
For the quick start guide, please visit [Getting Started](https://lynxjs.org/guide/start/quick-start.html).
|
|
17
41
|
|
|
18
42
|
## Documentation
|
|
19
43
|
|
|
20
|
-
|
|
44
|
+
You can find the documentation of ReactLynx on [ReactLynx website](https://lynxjs.org/react/).
|
|
45
|
+
|
|
46
|
+
You can also find the following specific sections here:
|
|
47
|
+
|
|
48
|
+
- [Getting Started](https://lynxjs.org/guide/start/quick-start.html)
|
|
49
|
+
- [Introduction & Guides](https://lynxjs.org/react/introduction.html)
|
|
50
|
+
- [API Reference](https://lynxjs.org/api/react.html)
|
|
51
|
+
|
|
52
|
+
For the documentation of Lynx, please visit [Lynx](https://lynxjs.org/).
|
|
53
|
+
|
|
54
|
+
## Community and Support
|
|
55
|
+
|
|
56
|
+
- [GitHub Issues](https://github.com/lynx-family/lynx-stack/issues) - Report bugs or request features
|
|
57
|
+
|
|
58
|
+
## Contributing
|
|
59
|
+
|
|
60
|
+
We welcome contributions! Please see our [Code of Conduct](https://github.com/lynx-family/lynx-stack/blob/main/CODE_OF_CONDUCT.md) and [Contributing Guide](https://github.com/lynx-family/lynx-stack/blob/main/CONTRIBUTING.md) for more details.
|
|
61
|
+
|
|
62
|
+
## License
|
|
63
|
+
|
|
64
|
+
ReactLynx is [Apache License 2.0](https://github.com/lynx-family/lynx-stack/blob/main/LICENSE) licensed.
|
|
65
|
+
|
|
66
|
+
## Credits
|
|
67
|
+
|
|
68
|
+
Thanks to:
|
|
69
|
+
|
|
70
|
+
- [Preact](https://preactjs.com/) for creating a lightweight and efficient UI library that served as a foundation for the ReactLynx project.
|
|
71
|
+
- [React](https://react.dev/) for creating a comprehensive and intuitive library for building user interfaces and providing the inspiration for ReactLynx's development model.
|
|
72
|
+
- [SWC](https://github.com/swc-project/swc) project created by [@kdy1](https://github.com/kdy1), which turbocharges ReactLynx's code transformation with Rust-powered efficiency, achieving sub-second build times and frictionless developer experience.
|
package/package.json
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lynx-js/react",
|
|
3
|
-
"version": "0.105.
|
|
3
|
+
"version": "0.105.1",
|
|
4
4
|
"description": "ReactLynx is a framework for developing Lynx applications with familiar React.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/lynx-family/lynx-stack.git",
|
|
8
|
+
"directory": "packages/react"
|
|
9
|
+
},
|
|
5
10
|
"type": "module",
|
|
6
11
|
"exports": {
|
|
7
12
|
".": {
|
|
@@ -144,7 +149,7 @@
|
|
|
144
149
|
},
|
|
145
150
|
"devDependencies": {
|
|
146
151
|
"@lynx-js/types": "^3.2.0",
|
|
147
|
-
"@microsoft/api-extractor": "7.51.
|
|
152
|
+
"@microsoft/api-extractor": "7.51.1",
|
|
148
153
|
"@types/react": "^18.3.18"
|
|
149
154
|
},
|
|
150
155
|
"peerDependencies": {
|
|
@@ -21,6 +21,6 @@ export { loadDynamicJS, __dynamicImport } from './lynx/dynamic-js.js';
|
|
|
21
21
|
export { withInitDataInState } from './compat/initData.js';
|
|
22
22
|
export { wrapWithLynxComponent } from './compat/lynxComponent.js';
|
|
23
23
|
export { loadLazyBundle } from './lynx/lazy-bundle.js';
|
|
24
|
-
export { transformToWorklet } from './worklet/
|
|
24
|
+
export { transformToWorklet } from './worklet/transformToWorklet.js';
|
|
25
25
|
export { registerWorkletOnBackground } from './worklet/hmr.js';
|
|
26
26
|
export { loadWorkletRuntime } from '@lynx-js/react/worklet-runtime/bindings';
|
package/runtime/lib/internal.js
CHANGED
|
@@ -35,7 +35,7 @@ export const __ComponentIsPolyfill = /* @__PURE__ */ factory2(
|
|
|
35
35
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
36
36
|
{ Suspense, lazy, createElement, useMemo }, loadLazyBundle);
|
|
37
37
|
export { loadLazyBundle } from './lynx/lazy-bundle.js';
|
|
38
|
-
export { transformToWorklet } from './worklet/
|
|
38
|
+
export { transformToWorklet } from './worklet/transformToWorklet.js';
|
|
39
39
|
export { registerWorkletOnBackground } from './worklet/hmr.js';
|
|
40
40
|
export { loadWorkletRuntime } from '@lynx-js/react/worklet-runtime/bindings';
|
|
41
41
|
//# sourceMappingURL=internal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAErH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAEjF,MAAM,CAAC,MAAM,iBAAiB,GAAoB,eAAe,CAAC,IAAI,CAAC;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAoB,eAAe,CAAC,aAAa,CAAC;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAoB,eAAe,CAAC,QAAQ,CAAC;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAoB,eAAe,CAAC,YAAY,CAAC;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAgC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EACL,OAAO;AACP,+EAA+E;AAC/E,SAAS,GACV,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAuB,eAAe,CAAC,QAAQ;AAC/E,qGAAqG;AACrG,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAS,EACjD,cAAc,CACf,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAErH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAEjF,MAAM,CAAC,MAAM,iBAAiB,GAAoB,eAAe,CAAC,IAAI,CAAC;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAoB,eAAe,CAAC,aAAa,CAAC;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAoB,eAAe,CAAC,QAAQ,CAAC;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAoB,eAAe,CAAC,YAAY,CAAC;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAgC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EACL,OAAO;AACP,+EAA+E;AAC/E,SAAS,GACV,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAuB,eAAe,CAAC,QAAQ;AAC/E,qGAAqG;AACrG,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAS,EACjD,cAAc,CACf,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Copyright 2024 The Lynx Authors. All rights reserved.
|
|
2
2
|
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
3
3
|
// LICENSE file in the root directory of this source tree.
|
|
4
|
-
import { createContext } from 'preact';
|
|
4
|
+
import { createContext, createRef } from 'preact';
|
|
5
5
|
import { lazy } from 'preact/compat';
|
|
6
6
|
import { ComponentFromReactRuntime as Component, ComponentFromReactRuntime as PureComponent, } from '../compat/lynxComponent.js';
|
|
7
|
-
import { useCallback, useEffect, useMemo, useReducer, useState } from '../hooks/react.js';
|
|
7
|
+
import { useCallback, useEffect, useMemo, useReducer, useState, useRef } from '../hooks/react.js';
|
|
8
8
|
/* v8 ignore next 3 */
|
|
9
9
|
function __runInJS(value) {
|
|
10
10
|
return value;
|
|
@@ -23,9 +23,11 @@ export default {
|
|
|
23
23
|
Component,
|
|
24
24
|
PureComponent,
|
|
25
25
|
createContext,
|
|
26
|
+
createRef,
|
|
26
27
|
lazy,
|
|
27
28
|
useState,
|
|
28
29
|
useReducer,
|
|
30
|
+
useRef,
|
|
29
31
|
useEffect,
|
|
30
32
|
useMemo,
|
|
31
33
|
useCallback,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/legacy-react-runtime/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/legacy-react-runtime/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,EACL,yBAAyB,IAAI,SAAS,EACtC,yBAAyB,IAAI,aAAa,GAC3C,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAElG,sBAAsB;AACtB,SAAS,SAAS,CAAI,KAAQ;IAC5B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iDAAiD;AACjD,OAAO,EAAE,yBAAyB,IAAI,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,yBAAyB,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB;;GAEG;AACH,eAAe;IACb,SAAS;IACT,aAAa;IACb,aAAa;IACb,SAAS;IACT,IAAI;IACJ,QAAQ;IACR,UAAU;IACV,MAAM;IACN,SAAS;IACT,OAAO;IACP,WAAW;IACX,SAAS;CACV,CAAC"}
|
|
@@ -13,6 +13,7 @@ import { LifecycleConstant } from '../lifecycleConstant.js';
|
|
|
13
13
|
import { __pendingListUpdates } from '../list.js';
|
|
14
14
|
import { takeGlobalRefPatchMap } from '../snapshot/ref.js';
|
|
15
15
|
import { deinitGlobalSnapshotPatch } from '../snapshotPatch.js';
|
|
16
|
+
import { destroyWorklet } from '../worklet/destroy.js';
|
|
16
17
|
function reloadMainThread(data, options) {
|
|
17
18
|
if (__PROFILE__) {
|
|
18
19
|
console.profile('reloadTemplate');
|
|
@@ -21,6 +22,7 @@ function reloadMainThread(data, options) {
|
|
|
21
22
|
if (typeof data == 'object' && !isEmptyObject(data)) {
|
|
22
23
|
Object.assign(lynx.__initData, data);
|
|
23
24
|
}
|
|
25
|
+
destroyWorklet();
|
|
24
26
|
snapshotInstanceManager.clear();
|
|
25
27
|
__pendingListUpdates.clear();
|
|
26
28
|
const oldRoot = __root;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/lifecycle/reload.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/lifecycle/reload.ts"],"names":[],"mappings":"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"}
|
package/runtime/lib/lynx/tt.js
CHANGED
|
@@ -13,7 +13,7 @@ import { CHILDREN } from '../renderToOpcodes/constants.js';
|
|
|
13
13
|
import { __root } from '../root.js';
|
|
14
14
|
import { globalRefsToSet, updateBackgroundRefs } from '../snapshot/ref.js';
|
|
15
15
|
import { backgroundSnapshotInstanceManager } from '../snapshot.js';
|
|
16
|
-
import { destroyWorklet } from '../worklet/
|
|
16
|
+
import { destroyWorklet } from '../worklet/destroy.js';
|
|
17
17
|
function injectTt() {
|
|
18
18
|
// @ts-ignore
|
|
19
19
|
const tt = lynxCoreInject.tt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tt.js","sourceRoot":"","sources":["../../src/lynx/tt.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tt.js","sourceRoot":"","sources":["../../src/lynx/tt.ts"],"names":[],"mappings":"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"}
|
|
@@ -306,6 +306,7 @@ export interface Lynx {
|
|
|
306
306
|
*/
|
|
307
307
|
registerDataProcessors: (dataProcessorDefinition: DataProcessorDefinition) => void;
|
|
308
308
|
}
|
|
309
|
-
export {
|
|
309
|
+
export { runOnMainThread } from './worklet/runOnMainThread.js';
|
|
310
|
+
export { runOnBackground } from './worklet/runOnBackground.js';
|
|
310
311
|
export { MainThreadRef, useMainThreadRef } from './worklet/workletRef.js';
|
|
311
312
|
export { useLynxGlobalEventListener } from './hooks/useLynxGlobalEventListener.js';
|
package/runtime/lib/lynx-api.js
CHANGED
|
@@ -5,9 +5,9 @@ import { render } from 'preact';
|
|
|
5
5
|
import { createContext, createElement } from 'preact/compat';
|
|
6
6
|
import { useState } from 'preact/hooks';
|
|
7
7
|
import { factory, withInitDataInState } from './compat/initData.js';
|
|
8
|
+
import { useLynxGlobalEventListener } from './hooks/useLynxGlobalEventListener.js';
|
|
8
9
|
import { LifecycleConstant } from './lifecycleConstant.js';
|
|
9
10
|
import { flushDelayedLifecycleEvents } from './lynx/tt.js';
|
|
10
|
-
import { useLynxGlobalEventListener } from './hooks/useLynxGlobalEventListener.js';
|
|
11
11
|
import { __root } from './root.js';
|
|
12
12
|
/**
|
|
13
13
|
* The default and only root of ReactLynx for you to render JSX
|
|
@@ -26,8 +26,7 @@ export const root = {
|
|
|
26
26
|
else {
|
|
27
27
|
__root.__jsx = jsx;
|
|
28
28
|
render(jsx, __root);
|
|
29
|
-
if (__FIRST_SCREEN_SYNC_TIMING__ === 'immediately') {
|
|
30
|
-
}
|
|
29
|
+
if (__FIRST_SCREEN_SYNC_TIMING__ === 'immediately') { }
|
|
31
30
|
else {
|
|
32
31
|
lynx.getNativeApp().callLepusMethod(LifecycleConstant.jsReady, {});
|
|
33
32
|
}
|
|
@@ -110,7 +109,8 @@ export const useInitData = /* @__PURE__ */ _InitData.use();
|
|
|
110
109
|
*/
|
|
111
110
|
export const useInitDataChanged = /* @__PURE__ */ _InitData.useChanged();
|
|
112
111
|
export { withInitDataInState };
|
|
113
|
-
export {
|
|
112
|
+
export { runOnMainThread } from './worklet/runOnMainThread.js';
|
|
113
|
+
export { runOnBackground } from './worklet/runOnBackground.js';
|
|
114
114
|
export { MainThreadRef, useMainThreadRef } from './worklet/workletRef.js';
|
|
115
115
|
export { useLynxGlobalEventListener } from './hooks/useLynxGlobalEventListener.js';
|
|
116
116
|
//# sourceMappingURL=lynx-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lynx-api.js","sourceRoot":"","sources":["../src/lynx-api.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"lynx-api.js","sourceRoot":"","sources":["../src/lynx-api.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AA6DnC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,IAAI,GAAS;IACxB,MAAM,EAAE,CAAC,GAAc,EAAQ,EAAE;QAC/B,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;YACnB,MAAM,CAAC,GAAG,EAAE,MAAa,CAAC,CAAC;YAC3B,IAAI,4BAA4B,KAAK,aAAa,EAAE,CAAC,CAAA,CAAC;iBACjD,CAAC;gBACJ,IAAI,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,2BAA2B,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IACD,sBAAsB,EAAE,CAAC,uBAAgD,EAAQ,EAAE;QACjF,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,CAAC;IACvD,CAAC;CACF,CAAC;AAEF,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CACvC;IACE,aAAa;IACb,QAAQ;IACR,aAAa;IACb,0BAA0B;CACpB,EACR,YAAY,EACZ,eAAe,CAChB,CAAC;AACF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA6C,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC/G;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAuB,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AACzF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,WAAW,GAAmB,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AAC3E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAiD,eAAe,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AAsCvH,OAAO,EAAE,mBAAmB,EAAE,CAAC;AA6J/B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isMtsEnabled, isRunOnBackgroundEnabled } from './functionality.js';
|
|
2
|
+
import { registerWorkletCtx } from './runOnBackground.js';
|
|
2
3
|
/**
|
|
3
4
|
* @internal
|
|
4
5
|
*/
|
|
5
6
|
export function onPostWorkletCtx(afterValue) {
|
|
6
|
-
|
|
7
|
-
if (!impl && afterValue) {
|
|
7
|
+
if (!isMtsEnabled() && afterValue) {
|
|
8
8
|
lynx.reportError(new Error('Main thread script requires Lynx sdk version 2.14'));
|
|
9
9
|
return null;
|
|
10
10
|
}
|
|
11
|
-
if (!afterValue) {
|
|
11
|
+
if (!afterValue || !isRunOnBackgroundEnabled()) {
|
|
12
12
|
return afterValue;
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
registerWorkletCtx(afterValue);
|
|
15
15
|
return afterValue;
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=ctx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ctx.js","sourceRoot":"","sources":["../../src/worklet/ctx.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ctx.js","sourceRoot":"","sources":["../../src/worklet/ctx.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA0B;IACzD,IAAI,CAAC,YAAY,EAAE,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,UAAU,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC/B,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Copyright 2024 The Lynx Authors. All rights reserved.
|
|
2
|
+
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
3
|
+
// LICENSE file in the root directory of this source tree.
|
|
4
|
+
import { takeWorkletRefInitValuePatch } from './workletRefPool.js';
|
|
5
|
+
export const destroyTasks = [];
|
|
6
|
+
export function destroyWorklet() {
|
|
7
|
+
takeWorkletRefInitValuePatch();
|
|
8
|
+
for (const task of destroyTasks) {
|
|
9
|
+
task();
|
|
10
|
+
}
|
|
11
|
+
destroyTasks.length = 0;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=destroy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destroy.js","sourceRoot":"","sources":["../../src/worklet/destroy.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEnE,MAAM,CAAC,MAAM,YAAY,GAAmB,EAAE,CAAC;AAE/C,MAAM,UAAU,cAAc;IAC5B,4BAA4B,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,EAAE,CAAC;IACT,CAAC;IACD,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { onFunctionCall };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Copyright 2025 The Lynx Authors. All rights reserved.
|
|
2
|
+
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
3
|
+
// LICENSE file in the root directory of this source tree.
|
|
4
|
+
import { WorkletEvents } from '@lynx-js/react/worklet-runtime/bindings';
|
|
5
|
+
import { destroyTasks } from './destroy.js';
|
|
6
|
+
import { IndexMap } from './indexMap.js';
|
|
7
|
+
let resolveMap;
|
|
8
|
+
function initReturnValueListener() {
|
|
9
|
+
const context = __JS__ ? lynx.getCoreContext() : lynx.getJSContext();
|
|
10
|
+
resolveMap = new IndexMap();
|
|
11
|
+
context.addEventListener(WorkletEvents.FunctionCallRet, onFunctionCallRet);
|
|
12
|
+
destroyTasks.push(() => {
|
|
13
|
+
context.removeEventListener(WorkletEvents.FunctionCallRet, onFunctionCallRet);
|
|
14
|
+
resolveMap = undefined;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
function onFunctionCall(resolve) {
|
|
21
|
+
if (!resolveMap) {
|
|
22
|
+
initReturnValueListener();
|
|
23
|
+
}
|
|
24
|
+
return resolveMap.add(resolve);
|
|
25
|
+
}
|
|
26
|
+
function onFunctionCallRet(event) {
|
|
27
|
+
const data = JSON.parse(event.data);
|
|
28
|
+
const resolve = resolveMap.get(data.resolveId);
|
|
29
|
+
resolveMap.remove(data.resolveId);
|
|
30
|
+
resolve(data.returnValue);
|
|
31
|
+
}
|
|
32
|
+
export { onFunctionCall };
|
|
33
|
+
//# sourceMappingURL=functionCall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functionCall.js","sourceRoot":"","sources":["../../src/worklet/functionCall.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAGxE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,IAAI,UAAsD,CAAC;AAE3D,SAAS,uBAAuB;IAC9B,MAAM,OAAO,GAAiB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAEnF,UAAU,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAE3E,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE;QACrB,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QAC9E,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAA6B;IACnD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,uBAAuB,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,UAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAc,CAAyB,CAAC;IACtE,MAAM,OAAO,GAAG,UAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAE,CAAC;IACjD,UAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5B,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
declare function clearConfigCacheForTesting(): void;
|
|
2
|
+
export { isMtsEnabled, isRunOnBackgroundEnabled, clearConfigCacheForTesting };
|
|
@@ -2,10 +2,29 @@
|
|
|
2
2
|
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
3
3
|
// LICENSE file in the root directory of this source tree.
|
|
4
4
|
import { isSdkVersionGt } from '../utils.js';
|
|
5
|
+
let mtsEnabled;
|
|
6
|
+
let runOnBackgroundEnabled;
|
|
5
7
|
/**
|
|
6
8
|
* @internal
|
|
7
9
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
function isMtsEnabled() {
|
|
11
|
+
if (mtsEnabled === undefined) {
|
|
12
|
+
mtsEnabled = isSdkVersionGt(2, 13);
|
|
13
|
+
}
|
|
14
|
+
return mtsEnabled;
|
|
10
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
function isRunOnBackgroundEnabled() {
|
|
20
|
+
if (runOnBackgroundEnabled === undefined) {
|
|
21
|
+
runOnBackgroundEnabled = isSdkVersionGt(2, 15);
|
|
22
|
+
}
|
|
23
|
+
return runOnBackgroundEnabled;
|
|
24
|
+
}
|
|
25
|
+
function clearConfigCacheForTesting() {
|
|
26
|
+
mtsEnabled = undefined;
|
|
27
|
+
runOnBackgroundEnabled = undefined;
|
|
28
|
+
}
|
|
29
|
+
export { isMtsEnabled, isRunOnBackgroundEnabled, clearConfigCacheForTesting };
|
|
11
30
|
//# sourceMappingURL=functionality.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functionality.js","sourceRoot":"","sources":["../../src/worklet/functionality.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"functionality.js","sourceRoot":"","sources":["../../src/worklet/functionality.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,IAAI,UAA+B,CAAC;AACpC,IAAI,sBAA2C,CAAC;AAEhD;;GAEG;AACH,SAAS,YAAY;IACnB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,GAAG,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB;IAC/B,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACzC,sBAAsB,GAAG,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED,SAAS,0BAA0B;IACjC,UAAU,GAAG,SAAS,CAAC;IACvB,sBAAsB,GAAG,SAAS,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `runOnBackground` allows triggering js functions on the background thread asynchronously.
|
|
3
|
+
* @param f - The js function to be called.
|
|
4
|
+
* @returns A function. Calling which with the arguments to be passed to the js function to trigger it on the background thread. This function returns a promise that resolves to the return value of the js function.
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { runOnBackground } from '@lynx-js/react';
|
|
8
|
+
*
|
|
9
|
+
* async function someMainthreadFunction() {
|
|
10
|
+
* 'main thread';
|
|
11
|
+
* const fn = runOnBackground(() => {
|
|
12
|
+
* return 'hello';
|
|
13
|
+
* });
|
|
14
|
+
* const result = await fn();
|
|
15
|
+
}
|
|
16
|
+
* ```
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
declare function runOnBackground<R, Fn extends (...args: any[]) => R>(f: Fn): (...args: Parameters<Fn>) => Promise<R>;
|
|
20
|
+
export { registerWorkletCtx, runJSFunction, runOnBackground };
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// Copyright 2024 The Lynx Authors. All rights reserved.
|
|
2
|
+
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
3
|
+
// LICENSE file in the root directory of this source tree.
|
|
4
|
+
import { WorkletEvents } from '@lynx-js/react/worklet-runtime/bindings';
|
|
5
|
+
import { destroyTasks } from './destroy.js';
|
|
6
|
+
import { WorkletExecIdMap } from './execMap.js';
|
|
7
|
+
import { isRunOnBackgroundEnabled } from './functionality.js';
|
|
8
|
+
import { onFunctionCall } from './functionCall.js';
|
|
9
|
+
let execIdMap;
|
|
10
|
+
function init() {
|
|
11
|
+
'background only';
|
|
12
|
+
if (execIdMap) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
execIdMap = new WorkletExecIdMap();
|
|
16
|
+
lynx.getCoreContext().addEventListener(WorkletEvents.runOnBackground, runJSFunction);
|
|
17
|
+
lynx.getCoreContext().addEventListener(WorkletEvents.releaseBackgroundWorkletCtx, releaseBackgroundWorkletCtx);
|
|
18
|
+
destroyTasks.push(() => {
|
|
19
|
+
lynx.getCoreContext().removeEventListener(WorkletEvents.runOnBackground, runJSFunction);
|
|
20
|
+
lynx.getCoreContext().removeEventListener(WorkletEvents.releaseBackgroundWorkletCtx, releaseBackgroundWorkletCtx);
|
|
21
|
+
execIdMap = undefined;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
function runJSFunction(event) {
|
|
28
|
+
'background only';
|
|
29
|
+
const data = JSON.parse(event.data);
|
|
30
|
+
const obj = execIdMap.findJsFnHandle(data.obj._execId, data.obj._jsFnId);
|
|
31
|
+
const f = obj?._fn;
|
|
32
|
+
if (!f) {
|
|
33
|
+
throw new Error('runOnBackground: JS function not found: ' + JSON.stringify(data.obj));
|
|
34
|
+
}
|
|
35
|
+
const returnValue = f(...data.params);
|
|
36
|
+
lynx.getCoreContext().dispatchEvent({
|
|
37
|
+
type: WorkletEvents.FunctionCallRet,
|
|
38
|
+
data: JSON.stringify({
|
|
39
|
+
resolveId: data.resolveId,
|
|
40
|
+
returnValue,
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function releaseBackgroundWorkletCtx(event) {
|
|
45
|
+
'background only';
|
|
46
|
+
for (const id of event.data) {
|
|
47
|
+
execIdMap.remove(id);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
function registerWorkletCtx(ctx) {
|
|
54
|
+
'background only';
|
|
55
|
+
init();
|
|
56
|
+
execIdMap.add(ctx);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* `runOnBackground` allows triggering js functions on the background thread asynchronously.
|
|
60
|
+
* @param f - The js function to be called.
|
|
61
|
+
* @returns A function. Calling which with the arguments to be passed to the js function to trigger it on the background thread. This function returns a promise that resolves to the return value of the js function.
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* import { runOnBackground } from '@lynx-js/react';
|
|
65
|
+
*
|
|
66
|
+
* async function someMainthreadFunction() {
|
|
67
|
+
* 'main thread';
|
|
68
|
+
* const fn = runOnBackground(() => {
|
|
69
|
+
* return 'hello';
|
|
70
|
+
* });
|
|
71
|
+
* const result = await fn();
|
|
72
|
+
}
|
|
73
|
+
* ```
|
|
74
|
+
* @public
|
|
75
|
+
*/
|
|
76
|
+
function runOnBackground(f) {
|
|
77
|
+
if (!isRunOnBackgroundEnabled()) {
|
|
78
|
+
throw new Error('runOnBackground requires Lynx sdk version 2.16.');
|
|
79
|
+
}
|
|
80
|
+
if (__JS__) {
|
|
81
|
+
throw new Error('runOnBackground can only be used on the main thread.');
|
|
82
|
+
}
|
|
83
|
+
const obj = f;
|
|
84
|
+
if (obj._error) {
|
|
85
|
+
throw new Error(obj._error);
|
|
86
|
+
}
|
|
87
|
+
return async (...params) => {
|
|
88
|
+
return new Promise((resolve) => {
|
|
89
|
+
const resolveId = onFunctionCall(resolve);
|
|
90
|
+
lynx.getJSContext().dispatchEvent({
|
|
91
|
+
type: WorkletEvents.runOnBackground,
|
|
92
|
+
data: JSON.stringify({
|
|
93
|
+
obj: {
|
|
94
|
+
_jsFnId: obj._jsFnId,
|
|
95
|
+
_execId: obj._execId,
|
|
96
|
+
},
|
|
97
|
+
params,
|
|
98
|
+
resolveId,
|
|
99
|
+
}),
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export { registerWorkletCtx, runJSFunction, runOnBackground };
|
|
105
|
+
//# sourceMappingURL=runOnBackground.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runOnBackground.js","sourceRoot":"","sources":["../../src/worklet/runOnBackground.ts"],"names":[],"mappings":"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"}
|