@lynx-js/react 0.107.0 → 0.108.0
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 +46 -0
- package/README.md +4 -2
- package/package.json +3 -3
- package/refresh/.turbo/turbo-build.log +1 -1
- package/refresh/package.json +1 -1
- package/runtime/lazy/import.js +7 -1
- package/runtime/lepus/index.js +1 -1
- package/runtime/lepus/jsx-dev-runtime/index.js +1 -1
- package/runtime/lib/backgroundSnapshot.d.ts +1 -1
- package/runtime/lib/backgroundSnapshot.js +7 -4
- package/runtime/lib/backgroundSnapshot.js.map +1 -1
- package/runtime/lib/document.d.ts +33 -2
- package/runtime/lib/document.js +9 -1
- package/runtime/lib/document.js.map +1 -1
- package/runtime/lib/hydrate.js +2 -1
- package/runtime/lib/hydrate.js.map +1 -1
- package/runtime/lib/lifecycle/delayUnmount.d.ts +1 -1
- package/runtime/lib/lifecycle/delayUnmount.js +1 -4
- package/runtime/lib/lifecycle/delayUnmount.js.map +1 -1
- package/runtime/lib/lifecycle/destroy.js +2 -2
- package/runtime/lib/lifecycle/destroy.js.map +1 -1
- package/runtime/lib/lifecycle/patch/commit.d.ts +21 -3
- package/runtime/lib/lifecycle/patch/commit.js +44 -56
- package/runtime/lib/lifecycle/patch/commit.js.map +1 -1
- package/runtime/lib/lifecycle/patch/snapshotPatch.d.ts +5 -0
- package/runtime/lib/lifecycle/patch/snapshotPatch.js +5 -0
- package/runtime/lib/lifecycle/patch/snapshotPatch.js.map +1 -1
- package/runtime/lib/lifecycle/patch/snapshotPatchApply.d.ts +5 -0
- package/runtime/lib/lifecycle/patch/snapshotPatchApply.js +21 -5
- package/runtime/lib/lifecycle/patch/snapshotPatchApply.js.map +1 -1
- package/runtime/lib/lifecycle/reload.js +9 -4
- package/runtime/lib/lifecycle/reload.js.map +1 -1
- package/runtime/lib/lifecycle/render.d.ts +1 -3
- package/runtime/lib/lifecycle/render.js +4 -6
- package/runtime/lib/lifecycle/render.js.map +1 -1
- package/runtime/lib/list.d.ts +1 -1
- package/runtime/lib/list.js +60 -23
- package/runtime/lib/list.js.map +1 -1
- package/runtime/lib/lynx/env.d.ts +1 -1
- package/runtime/lib/lynx/env.js +1 -1
- package/runtime/lib/lynx/env.js.map +1 -1
- package/runtime/lib/lynx/performance.js +7 -1
- package/runtime/lib/lynx/performance.js.map +1 -1
- package/runtime/lib/lynx/runWithForce.js +12 -4
- package/runtime/lib/lynx/runWithForce.js.map +1 -1
- package/runtime/lib/lynx/tt.js +6 -8
- package/runtime/lib/lynx/tt.js.map +1 -1
- package/runtime/lib/lynx-api.d.ts +4 -4
- package/runtime/lib/lynx-api.js +5 -5
- package/runtime/lib/lynx-api.js.map +1 -1
- package/runtime/lib/lynx.js +6 -5
- package/runtime/lib/lynx.js.map +1 -1
- package/runtime/lib/opcodes.js +2 -2
- package/runtime/lib/opcodes.js.map +1 -1
- package/runtime/lib/renderToOpcodes/index.js +5 -1
- package/runtime/lib/renderToOpcodes/index.js.map +1 -1
- package/runtime/lib/root.d.ts +4 -0
- package/runtime/lib/root.js +6 -2
- package/runtime/lib/root.js.map +1 -1
- package/runtime/lib/snapshot/ref.d.ts +1 -1
- package/runtime/lib/snapshot/ref.js +1 -1
- package/runtime/lib/snapshot/ref.js.map +1 -1
- package/runtime/lib/snapshot/spread.d.ts +8 -2
- package/runtime/lib/snapshot/spread.js +12 -6
- package/runtime/lib/snapshot/spread.js.map +1 -1
- package/runtime/lib/snapshot.d.ts +31 -5
- package/runtime/lib/snapshot.js +15 -3
- package/runtime/lib/snapshot.js.map +1 -1
- package/runtime/src/backgroundSnapshot.ts +20 -13
- package/runtime/src/document.ts +33 -2
- package/runtime/src/hydrate.ts +3 -1
- package/runtime/src/lifecycle/delayUnmount.ts +2 -2
- package/runtime/src/lifecycle/destroy.ts +3 -2
- package/runtime/src/lifecycle/patch/commit.ts +75 -72
- package/runtime/src/lifecycle/patch/snapshotPatch.ts +9 -0
- package/runtime/src/lifecycle/patch/snapshotPatchApply.ts +20 -5
- package/runtime/src/lifecycle/reload.ts +12 -4
- package/runtime/src/lifecycle/render.ts +6 -8
- package/runtime/src/list.ts +71 -23
- package/runtime/src/lynx/env.ts +1 -1
- package/runtime/src/lynx/performance.ts +6 -1
- package/runtime/src/lynx/runWithForce.ts +17 -6
- package/runtime/src/lynx/tt.ts +10 -17
- package/runtime/src/lynx-api.ts +7 -7
- package/runtime/src/lynx.ts +7 -6
- package/runtime/src/opcodes.ts +2 -2
- package/runtime/src/renderToOpcodes/index.ts +6 -1
- package/runtime/src/root.ts +6 -2
- package/runtime/src/snapshot/ref.ts +5 -5
- package/runtime/src/snapshot/spread.ts +14 -6
- package/runtime/src/snapshot.ts +35 -10
- package/testing-library/README.md +1 -1
- package/testing-library/dist/env/vitest.js +23 -23
- package/testing-library/dist/index.d.ts +24 -24
- package/testing-library/dist/index.js +2 -2
- package/testing-library/dist/pure.js +13 -15
- package/testing-library/dist/vitest-global-setup.js +13 -14
- package/testing-library/types/entry.d.ts +2 -2
- package/testing-library/types/index.d.ts +3 -3
- package/transform/dist/wasm.cjs +1 -1
|
@@ -1,13 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core snapshot system that implements a compiler-hinted virtual DOM.
|
|
3
|
+
*
|
|
4
|
+
* Key components:
|
|
5
|
+
* 1. {@link Snapshot}: Template definition generated at compile time
|
|
6
|
+
* 2. {@link SnapshotInstance}: Runtime instance in the main thread
|
|
7
|
+
* 3. {@link BackgroundSnapshotInstance}: Runtime instance in the background thread
|
|
8
|
+
*
|
|
9
|
+
* The system uses static analysis to identify dynamic parts and generate
|
|
10
|
+
* optimized update instructions, avoiding full virtual DOM diffing.
|
|
11
|
+
*/
|
|
1
12
|
import type { Worklet, WorkletRefImpl } from '@lynx-js/react/worklet-runtime/bindings';
|
|
2
13
|
import type { BackgroundSnapshotInstance } from './backgroundSnapshot.js';
|
|
14
|
+
/**
|
|
15
|
+
* Types of dynamic parts that can be updated in a snapshot
|
|
16
|
+
* These are determined at compile time through static analysis
|
|
17
|
+
*/
|
|
3
18
|
export declare const enum DynamicPartType {
|
|
4
|
-
Attr = 0
|
|
5
|
-
Spread = 1
|
|
6
|
-
Slot = 2
|
|
7
|
-
Children = 3
|
|
8
|
-
ListChildren = 4
|
|
19
|
+
Attr = 0,// Regular attribute updates
|
|
20
|
+
Spread = 1,// Spread operator in JSX
|
|
21
|
+
Slot = 2,// Slot for component children
|
|
22
|
+
Children = 3,// Regular children updates
|
|
23
|
+
ListChildren = 4,// List/array children updates
|
|
9
24
|
MultiChildren = 5
|
|
10
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* A snapshot definition that contains all the information needed to create and update elements
|
|
28
|
+
* This is generated at compile time through static analysis of the JSX
|
|
29
|
+
*/
|
|
11
30
|
interface Snapshot {
|
|
12
31
|
create: null | ((ctx: SnapshotInstance) => FiberElement[]);
|
|
13
32
|
update: null | ((ctx: SnapshotInstance, index: number, oldValue: any) => void)[];
|
|
@@ -46,6 +65,13 @@ export interface SerializedSnapshotInstance {
|
|
|
46
65
|
values?: any[] | undefined;
|
|
47
66
|
children?: SerializedSnapshotInstance[] | undefined;
|
|
48
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* The runtime instance of a {@link Snapshot} on the main thread that manages
|
|
70
|
+
* the actual elements and handles updates to dynamic parts.
|
|
71
|
+
*
|
|
72
|
+
* This class is designed to be compatible with Preact's {@link ContainerNode}
|
|
73
|
+
* interface for Preact's renderer to operate upon.
|
|
74
|
+
*/
|
|
49
75
|
export declare class SnapshotInstance {
|
|
50
76
|
type: string;
|
|
51
77
|
__id: number;
|
package/runtime/lib/snapshot.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
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 { SnapshotOperation, __globalSnapshotPatch } from './lifecycle/patch/snapshotPatch.js';
|
|
1
5
|
import { ListUpdateInfoRecording, __pendingListUpdates, snapshotDestroyList } from './list.js';
|
|
2
6
|
import { unref } from './snapshot/ref.js';
|
|
3
|
-
import { SnapshotOperation, __globalSnapshotPatch } from './lifecycle/patch/snapshotPatch.js';
|
|
4
7
|
import { isDirectOrDeepEqual } from './utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* Types of dynamic parts that can be updated in a snapshot
|
|
10
|
+
* These are determined at compile time through static analysis
|
|
11
|
+
*/
|
|
5
12
|
export var DynamicPartType;
|
|
6
13
|
(function (DynamicPartType) {
|
|
7
14
|
DynamicPartType[DynamicPartType["Attr"] = 0] = "Attr";
|
|
8
15
|
DynamicPartType[DynamicPartType["Spread"] = 1] = "Spread";
|
|
9
16
|
DynamicPartType[DynamicPartType["Slot"] = 2] = "Slot";
|
|
10
|
-
// Component,
|
|
11
17
|
DynamicPartType[DynamicPartType["Children"] = 3] = "Children";
|
|
12
18
|
DynamicPartType[DynamicPartType["ListChildren"] = 4] = "ListChildren";
|
|
13
|
-
// Used by compat layer
|
|
14
19
|
DynamicPartType[DynamicPartType["MultiChildren"] = 5] = "MultiChildren";
|
|
15
20
|
})(DynamicPartType || (DynamicPartType = {}));
|
|
16
21
|
export let __page;
|
|
@@ -165,6 +170,13 @@ export function traverseSnapshotInstance(si, callback) {
|
|
|
165
170
|
}
|
|
166
171
|
const DEFAULT_ENTRY_NAME = '__Card__';
|
|
167
172
|
const DEFAULT_CSS_ID = 0;
|
|
173
|
+
/**
|
|
174
|
+
* The runtime instance of a {@link Snapshot} on the main thread that manages
|
|
175
|
+
* the actual elements and handles updates to dynamic parts.
|
|
176
|
+
*
|
|
177
|
+
* This class is designed to be compatible with Preact's {@link ContainerNode}
|
|
178
|
+
* interface for Preact's renderer to operate upon.
|
|
179
|
+
*/
|
|
168
180
|
export class SnapshotInstance {
|
|
169
181
|
type;
|
|
170
182
|
__id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,38 @@
|
|
|
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
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Background snapshot implementation that runs in the background thread.
|
|
7
|
+
*
|
|
8
|
+
* This is the mirror of main thread's {@link SnapshotInstance}:
|
|
9
|
+
*/
|
|
10
|
+
|
|
4
11
|
import type { Worklet } from '@lynx-js/react/worklet-runtime/bindings';
|
|
5
12
|
|
|
13
|
+
import { processGestureBackground } from './gesture/processGestureBagkround.js';
|
|
14
|
+
import type { GestureKind } from './gesture/types.js';
|
|
6
15
|
import { diffArrayAction, diffArrayLepus } from './hydrate.js';
|
|
7
16
|
import { globalBackgroundSnapshotInstancesToRemove } from './lifecycle/patch/commit.js';
|
|
8
|
-
import {
|
|
9
|
-
import { transformSpread } from './snapshot/spread.js';
|
|
10
|
-
import {
|
|
11
|
-
DynamicPartType,
|
|
12
|
-
backgroundSnapshotInstanceManager,
|
|
13
|
-
snapshotManager,
|
|
14
|
-
traverseSnapshotInstance,
|
|
15
|
-
} from './snapshot.js';
|
|
16
|
-
import type { SerializedSnapshotInstance } from './snapshot.js';
|
|
17
|
+
import type { SnapshotPatch } from './lifecycle/patch/snapshotPatch.js';
|
|
17
18
|
import {
|
|
18
19
|
SnapshotOperation,
|
|
19
20
|
__globalSnapshotPatch,
|
|
20
21
|
initGlobalSnapshotPatch,
|
|
21
22
|
takeGlobalSnapshotPatch,
|
|
22
23
|
} from './lifecycle/patch/snapshotPatch.js';
|
|
23
|
-
import
|
|
24
|
+
import { globalPipelineOptions } from './lynx/performance.js';
|
|
25
|
+
import type { SerializedSnapshotInstance } from './snapshot.js';
|
|
26
|
+
import {
|
|
27
|
+
DynamicPartType,
|
|
28
|
+
backgroundSnapshotInstanceManager,
|
|
29
|
+
snapshotManager,
|
|
30
|
+
traverseSnapshotInstance,
|
|
31
|
+
} from './snapshot.js';
|
|
32
|
+
import { markRefToRemove } from './snapshot/ref.js';
|
|
33
|
+
import { transformSpread } from './snapshot/spread.js';
|
|
24
34
|
import { isDirectOrDeepEqual } from './utils.js';
|
|
25
35
|
import { onPostWorkletCtx } from './worklet/ctx.js';
|
|
26
|
-
import { processGestureBackground } from './gesture/processGestureBagkround.js';
|
|
27
|
-
import type { GestureKind } from './gesture/types.js';
|
|
28
|
-
import { globalPipelineOptions } from './lynx/performance.js';
|
|
29
36
|
|
|
30
37
|
export class BackgroundSnapshotInstance {
|
|
31
38
|
constructor(public type: string) {
|
package/runtime/src/document.ts
CHANGED
|
@@ -4,8 +4,35 @@
|
|
|
4
4
|
import { BackgroundSnapshotInstance } from './backgroundSnapshot.js';
|
|
5
5
|
import { SnapshotInstance } from './snapshot.js';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* This module implements an Interface Adapter Pattern to integrate Preact's
|
|
9
|
+
* rendering system with Lynx's custom Snapshot-based virtual DOM.
|
|
10
|
+
*
|
|
11
|
+
* It works by:
|
|
12
|
+
* 1. Defining a minimal {@link Document}-like interface that Preact expects
|
|
13
|
+
* 2. Implementing this interface to return our {@link Snapshot} instances
|
|
14
|
+
* 3. Maintaining the same method signatures as the standard DOM API
|
|
15
|
+
*
|
|
16
|
+
* This allows Preact to build its virtual tree using our Snapshot system
|
|
17
|
+
* without knowing it's not working with a real DOM.
|
|
18
|
+
*/
|
|
8
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Defines the minimal document interface that Preact expects, depending on
|
|
22
|
+
* which thread is running.
|
|
23
|
+
*/
|
|
24
|
+
interface SnapshotDocumentAdapter {
|
|
25
|
+
createElement(type: string): BackgroundSnapshotInstance | SnapshotInstance;
|
|
26
|
+
createElementNS(ns: string | null, type: string): BackgroundSnapshotInstance | SnapshotInstance;
|
|
27
|
+
createTextNode(text: string): BackgroundSnapshotInstance | SnapshotInstance;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const document: SnapshotDocumentAdapter = {} as SnapshotDocumentAdapter;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Sets up the document interface for the background thread.
|
|
34
|
+
* All DOM operations are intercepted to create {@link BackgroundSnapshotInstance}.
|
|
35
|
+
*/
|
|
9
36
|
function setupBackgroundDocument(): void {
|
|
10
37
|
document.createElement = function(type: string) {
|
|
11
38
|
return new BackgroundSnapshotInstance(type);
|
|
@@ -25,6 +52,10 @@ function setupBackgroundDocument(): void {
|
|
|
25
52
|
};
|
|
26
53
|
}
|
|
27
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Sets up the document interface for the main thread.
|
|
57
|
+
* All DOM operations are intercepted to create {@link SnapshotInstance}.
|
|
58
|
+
*/
|
|
28
59
|
function setupDocument(): void {
|
|
29
60
|
document.createElement = function(type: string) {
|
|
30
61
|
return new SnapshotInstance(type);
|
|
@@ -50,4 +81,4 @@ function setupDocument(): void {
|
|
|
50
81
|
// setupDocument();
|
|
51
82
|
// }
|
|
52
83
|
|
|
53
|
-
export { setupBackgroundDocument, setupDocument
|
|
84
|
+
export { document, setupBackgroundDocument, setupDocument };
|
package/runtime/src/hydrate.ts
CHANGED
|
@@ -349,10 +349,12 @@ export function hydrate(before: SnapshotInstance, after: SnapshotInstance, optio
|
|
|
349
349
|
|
|
350
350
|
const listElement = before.__elements![elementIndex]!;
|
|
351
351
|
__SetAttribute(listElement, 'update-list-info', info);
|
|
352
|
+
const [componentAtIndex, componentAtIndexes] = componentAtIndexFactory(afterChildNodes);
|
|
352
353
|
__UpdateListCallbacks(
|
|
353
354
|
listElement,
|
|
354
|
-
|
|
355
|
+
componentAtIndex,
|
|
355
356
|
enqueueComponentFactory(),
|
|
357
|
+
componentAtIndexes,
|
|
356
358
|
);
|
|
357
359
|
|
|
358
360
|
// The `before` & `after` target to the same list element, so we need to
|
|
@@ -1,8 +1,8 @@
|
|
|
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 { options } from 'preact';
|
|
5
4
|
import type { VNode } from 'preact';
|
|
5
|
+
import { options } from 'preact';
|
|
6
6
|
|
|
7
7
|
import { CATCH_ERROR, COMPONENT, DIFF, VNODE } from '../renderToOpcodes/constants.js';
|
|
8
8
|
|
|
@@ -74,4 +74,4 @@ function initDelayUnmount(): void {
|
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
export { initDelayUnmount,
|
|
77
|
+
export { initDelayUnmount, runDelayedUnmounts, takeDelayedUnmounts };
|
|
@@ -1,18 +1,19 @@
|
|
|
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 { render } from 'preact';
|
|
5
|
+
|
|
4
6
|
import { __root } from '../root.js';
|
|
5
7
|
import { delayedEvents } from './event/delayEvents.js';
|
|
6
8
|
import { delayedLifecycleEvents } from './event/delayLifecycleEvents.js';
|
|
7
9
|
import { globalCommitTaskMap } from './patch/commit.js';
|
|
8
|
-
import { renderBackground } from './render.js';
|
|
9
10
|
|
|
10
11
|
function destroyBackground(): void {
|
|
11
12
|
if (__PROFILE__) {
|
|
12
13
|
console.profile('destroyBackground');
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
render(null, __root as any);
|
|
16
17
|
|
|
17
18
|
globalCommitTaskMap.forEach(task => {
|
|
18
19
|
task();
|
|
@@ -1,12 +1,28 @@
|
|
|
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
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Implements the commit phase of the rendering lifecycle.
|
|
7
|
+
* This module patches Preact's commit phase to integrate with the snapshot system,
|
|
8
|
+
* handling the collection and transmission of patches between threads.
|
|
9
|
+
*
|
|
10
|
+
* The commit phase is responsible for:
|
|
11
|
+
* - Collecting patches from the snapshot system
|
|
12
|
+
* - Managing commit tasks and their execution
|
|
13
|
+
* - Coordinating with the native layer for updates
|
|
14
|
+
* - Handling performance timing and pipeline options
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* This module patches Preact's commit phase by hacking into the internal of
|
|
19
|
+
* its [options](https://preactjs.com/guide/v10/options/) API
|
|
20
|
+
*/
|
|
21
|
+
|
|
4
22
|
import type { VNode } from 'preact';
|
|
5
23
|
import { options } from 'preact';
|
|
6
24
|
import type { Component } from 'preact/compat';
|
|
7
25
|
|
|
8
|
-
import type { SnapshotPatch } from './snapshotPatch.js';
|
|
9
|
-
import { takeGlobalSnapshotPatch } from './snapshotPatch.js';
|
|
10
26
|
import { LifecycleConstant } from '../../lifecycleConstant.js';
|
|
11
27
|
import {
|
|
12
28
|
PerformanceTimingKeys,
|
|
@@ -16,12 +32,14 @@ import {
|
|
|
16
32
|
setPipeline,
|
|
17
33
|
} from '../../lynx/performance.js';
|
|
18
34
|
import { CATCH_ERROR, COMMIT, RENDER_CALLBACKS, VNODE } from '../../renderToOpcodes/constants.js';
|
|
19
|
-
import { updateBackgroundRefs } from '../../snapshot/ref.js';
|
|
20
35
|
import { backgroundSnapshotInstanceManager } from '../../snapshot.js';
|
|
36
|
+
import { updateBackgroundRefs } from '../../snapshot/ref.js';
|
|
21
37
|
import { isEmptyObject } from '../../utils.js';
|
|
22
38
|
import { takeWorkletRefInitValuePatch } from '../../worklet/workletRefPool.js';
|
|
23
39
|
import { runDelayedUnmounts, takeDelayedUnmounts } from '../delayUnmount.js';
|
|
24
40
|
import { getReloadVersion } from '../pass.js';
|
|
41
|
+
import type { SnapshotPatch } from './snapshotPatch.js';
|
|
42
|
+
import { takeGlobalSnapshotPatch } from './snapshotPatch.js';
|
|
25
43
|
|
|
26
44
|
let globalFlushOptions: FlushOptions = {};
|
|
27
45
|
|
|
@@ -30,58 +48,50 @@ let nextCommitTaskId = 1;
|
|
|
30
48
|
|
|
31
49
|
let globalBackgroundSnapshotInstancesToRemove: number[] = [];
|
|
32
50
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
51
|
+
/**
|
|
52
|
+
* A single patch operation.
|
|
53
|
+
*/
|
|
38
54
|
interface Patch {
|
|
39
55
|
id: number;
|
|
40
56
|
snapshotPatch?: SnapshotPatch;
|
|
41
57
|
workletRefInitValuePatch?: [id: number, value: unknown][];
|
|
42
58
|
}
|
|
43
59
|
|
|
60
|
+
/**
|
|
61
|
+
* List of patches to be applied in a single update cycle with flush options.
|
|
62
|
+
*/
|
|
44
63
|
interface PatchList {
|
|
45
64
|
patchList: Patch[];
|
|
46
65
|
flushOptions?: FlushOptions;
|
|
47
66
|
}
|
|
48
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Configuration options for patch operations
|
|
70
|
+
*/
|
|
49
71
|
interface PatchOptions {
|
|
50
72
|
pipelineOptions?: PipelineOptions;
|
|
51
73
|
reloadVersion: number;
|
|
52
74
|
isHydration?: boolean;
|
|
53
75
|
}
|
|
54
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Replaces Preact's default commit hook with our custom implementation
|
|
79
|
+
*/
|
|
55
80
|
function replaceCommitHook(): void {
|
|
56
|
-
|
|
57
|
-
type DebounceRendering = (f: () => void) => void;
|
|
58
|
-
const injectDebounceRendering = (debounceRendering: DebounceRendering): DebounceRendering => {
|
|
59
|
-
return (f: () => void) => {
|
|
60
|
-
debounceRendering(() => {
|
|
61
|
-
f();
|
|
62
|
-
void commitToMainThread();
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
};
|
|
66
|
-
const defaultDebounceRendering = options.debounceRendering?.bind(options)
|
|
67
|
-
?? (Promise.prototype.then.bind(Promise.resolve()) as DebounceRendering);
|
|
68
|
-
let _debounceRendering = injectDebounceRendering(defaultDebounceRendering);
|
|
69
|
-
Object.defineProperty(options, 'debounceRendering', {
|
|
70
|
-
get() {
|
|
71
|
-
return _debounceRendering;
|
|
72
|
-
},
|
|
73
|
-
set(debounceRendering: DebounceRendering) {
|
|
74
|
-
_debounceRendering = injectDebounceRendering(debounceRendering);
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
const oldCommit = options[COMMIT];
|
|
81
|
+
const originalPreactCommit = options[COMMIT];
|
|
79
82
|
const commit = async (vnode: VNode, commitQueue: any[]) => {
|
|
80
|
-
|
|
83
|
+
// Skip commit phase for MT runtime
|
|
84
|
+
if (__MAIN_THREAD__) {
|
|
81
85
|
// for testing only
|
|
82
86
|
commitQueue.length = 0;
|
|
83
87
|
return;
|
|
84
88
|
}
|
|
89
|
+
|
|
90
|
+
// Mark the end of virtual DOM diffing phase for performance tracking
|
|
91
|
+
markTimingLegacy(PerformanceTimingKeys.updateDiffVdomEnd);
|
|
92
|
+
markTiming(PerformanceTimingKeys.diffVdomEnd);
|
|
93
|
+
|
|
94
|
+
// The callback functions to be called after components are rendered.
|
|
85
95
|
const renderCallbacks = commitQueue.map((component: Component<any>) => {
|
|
86
96
|
const ret = {
|
|
87
97
|
component,
|
|
@@ -92,16 +102,19 @@ function replaceCommitHook(): void {
|
|
|
92
102
|
return ret;
|
|
93
103
|
});
|
|
94
104
|
commitQueue.length = 0;
|
|
105
|
+
|
|
95
106
|
const delayedUnmounts = takeDelayedUnmounts();
|
|
96
107
|
|
|
97
108
|
const backgroundSnapshotInstancesToRemove = globalBackgroundSnapshotInstancesToRemove;
|
|
98
109
|
globalBackgroundSnapshotInstancesToRemove = [];
|
|
99
110
|
|
|
100
111
|
const commitTaskId = genCommitTaskId();
|
|
112
|
+
|
|
113
|
+
// Register the commit task
|
|
101
114
|
globalCommitTaskMap.set(commitTaskId, () => {
|
|
102
115
|
updateBackgroundRefs(commitTaskId);
|
|
103
116
|
runDelayedUnmounts(delayedUnmounts);
|
|
104
|
-
|
|
117
|
+
originalPreactCommit?.(vnode, renderCallbacks);
|
|
105
118
|
renderCallbacks.some(wrapper => {
|
|
106
119
|
try {
|
|
107
120
|
wrapper[RENDER_CALLBACKS].some((cb: (this: Component) => void) => {
|
|
@@ -120,8 +133,11 @@ function replaceCommitHook(): void {
|
|
|
120
133
|
}
|
|
121
134
|
});
|
|
122
135
|
|
|
136
|
+
// Collect patches for this update
|
|
123
137
|
const snapshotPatch = takeGlobalSnapshotPatch();
|
|
138
|
+
const flushOptions = globalFlushOptions;
|
|
124
139
|
const workletRefInitValuePatch = takeWorkletRefInitValuePatch();
|
|
140
|
+
globalFlushOptions = {};
|
|
125
141
|
if (!snapshotPatch && workletRefInitValuePatch.length === 0) {
|
|
126
142
|
// before hydration, skip patch
|
|
127
143
|
return;
|
|
@@ -137,46 +153,29 @@ function replaceCommitHook(): void {
|
|
|
137
153
|
if (workletRefInitValuePatch.length) {
|
|
138
154
|
patch.workletRefInitValuePatch = workletRefInitValuePatch;
|
|
139
155
|
}
|
|
156
|
+
const patchList: PatchList = {
|
|
157
|
+
patchList: [patch],
|
|
158
|
+
};
|
|
159
|
+
if (!isEmptyObject(flushOptions)) {
|
|
160
|
+
patchList.flushOptions = flushOptions;
|
|
161
|
+
}
|
|
162
|
+
const obj = commitPatchUpdate(patchList, {});
|
|
140
163
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
async function commitToMainThread(): Promise<void> {
|
|
147
|
-
if (patchesToCommit.length === 0) {
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
markTimingLegacy(PerformanceTimingKeys.updateDiffVdomEnd);
|
|
152
|
-
markTiming(PerformanceTimingKeys.diffVdomEnd);
|
|
153
|
-
|
|
154
|
-
const flushOptions = globalFlushOptions;
|
|
155
|
-
globalFlushOptions = {};
|
|
156
|
-
|
|
157
|
-
const patchList: PatchList = {
|
|
158
|
-
patchList: patchesToCommit,
|
|
159
|
-
};
|
|
160
|
-
patchesToCommit = [];
|
|
161
|
-
|
|
162
|
-
if (!isEmptyObject(flushOptions)) {
|
|
163
|
-
patchList.flushOptions = flushOptions;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
const obj = commitPatchUpdate(patchList, {});
|
|
167
|
-
|
|
168
|
-
lynx.getNativeApp().callLepusMethod(LifecycleConstant.patchUpdate, obj, () => {
|
|
169
|
-
for (let i = 0; i < patchList.patchList.length; i++) {
|
|
170
|
-
const patch = patchList.patchList[i]!;
|
|
171
|
-
const commitTask = globalCommitTaskMap.get(patch.id);
|
|
164
|
+
// Send the update to the native layer
|
|
165
|
+
lynx.getNativeApp().callLepusMethod(LifecycleConstant.patchUpdate, obj, () => {
|
|
166
|
+
const commitTask = globalCommitTaskMap.get(commitTaskId);
|
|
172
167
|
if (commitTask) {
|
|
173
168
|
commitTask();
|
|
174
|
-
globalCommitTaskMap.delete(
|
|
169
|
+
globalCommitTaskMap.delete(commitTaskId);
|
|
175
170
|
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
171
|
+
});
|
|
172
|
+
};
|
|
173
|
+
options[COMMIT] = commit as ((...args: Parameters<typeof commit>) => void);
|
|
178
174
|
}
|
|
179
175
|
|
|
176
|
+
/**
|
|
177
|
+
* Prepares the patch update for transmission to the native layer
|
|
178
|
+
*/
|
|
180
179
|
function commitPatchUpdate(patchList: PatchList, patchOptions: Omit<PatchOptions, 'reloadVersion'>): {
|
|
181
180
|
data: string;
|
|
182
181
|
patchOptions: PatchOptions;
|
|
@@ -212,9 +211,16 @@ function commitPatchUpdate(patchList: PatchList, patchOptions: Omit<PatchOptions
|
|
|
212
211
|
return obj;
|
|
213
212
|
}
|
|
214
213
|
|
|
214
|
+
/**
|
|
215
|
+
* Generates a unique ID for commit tasks
|
|
216
|
+
*/
|
|
215
217
|
function genCommitTaskId(): number {
|
|
216
218
|
return nextCommitTaskId++;
|
|
217
219
|
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Resets the commit task ID counter
|
|
223
|
+
*/
|
|
218
224
|
function clearCommitTaskId(): void {
|
|
219
225
|
nextCommitTaskId = 1;
|
|
220
226
|
}
|
|
@@ -231,18 +237,15 @@ function replaceRequestAnimationFrame(): void {
|
|
|
231
237
|
* @internal
|
|
232
238
|
*/
|
|
233
239
|
export {
|
|
240
|
+
clearCommitTaskId,
|
|
234
241
|
commitPatchUpdate,
|
|
235
|
-
commitToMainThread,
|
|
236
242
|
genCommitTaskId,
|
|
237
|
-
clearCommitTaskId,
|
|
238
243
|
globalBackgroundSnapshotInstancesToRemove,
|
|
239
244
|
globalCommitTaskMap,
|
|
240
245
|
globalFlushOptions,
|
|
241
246
|
nextCommitTaskId,
|
|
242
|
-
patchesToCommit,
|
|
243
|
-
clearPatchesToCommit,
|
|
244
247
|
replaceCommitHook,
|
|
245
248
|
replaceRequestAnimationFrame,
|
|
246
|
-
type PatchOptions,
|
|
247
249
|
type PatchList,
|
|
250
|
+
type PatchOptions,
|
|
248
251
|
};
|
|
@@ -1,6 +1,13 @@
|
|
|
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
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Defines the core patch operations for the snapshot system.
|
|
7
|
+
* The patch operations are designed to be serializable and minimal, allowing
|
|
8
|
+
* efficient transmission between threads and application to element tree.
|
|
9
|
+
*/
|
|
10
|
+
|
|
4
11
|
export const enum SnapshotOperation {
|
|
5
12
|
CreateElement,
|
|
6
13
|
InsertBefore,
|
|
@@ -12,6 +19,8 @@ export const enum SnapshotOperation {
|
|
|
12
19
|
DEV_ONLY_RegisterWorklet = 101,
|
|
13
20
|
}
|
|
14
21
|
|
|
22
|
+
// Operation format definitions:
|
|
23
|
+
//
|
|
15
24
|
// [opcode: SnapshotOperation.CreateElement, type: string, id: number]
|
|
16
25
|
// [opcode: SnapshotOperation.InsertBefore, parentId: number, id: number, beforeId: number | undefined]
|
|
17
26
|
// [opcode: SnapshotOperation.RemoveChild, parentId: number, childId: number]
|
|
@@ -1,14 +1,31 @@
|
|
|
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
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Implements the patch application logic for the snapshot system.
|
|
7
|
+
* This module is responsible for interpreting and executing patch operations
|
|
8
|
+
* that were generated in the background thread, applying them to the DOM
|
|
9
|
+
* in the main thread.
|
|
10
|
+
*
|
|
11
|
+
* The module handles various operations like element creation, insertion,
|
|
12
|
+
* removal, and attribute updates, ensuring they are applied in the correct
|
|
13
|
+
* order and with proper error handling.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { SnapshotInstance, createSnapshot, snapshotInstanceManager, snapshotManager } from '../../snapshot.js';
|
|
4
17
|
import type { SnapshotPatch } from './snapshotPatch.js';
|
|
5
18
|
import { SnapshotOperation } from './snapshotPatch.js';
|
|
6
|
-
import { SnapshotInstance, createSnapshot, snapshotInstanceManager, snapshotManager } from '../../snapshot.js';
|
|
7
19
|
|
|
8
20
|
function reportCtxNotFound(): void {
|
|
9
21
|
lynx.reportError(new Error(`snapshotPatchApply failed: ctx not found`));
|
|
10
22
|
}
|
|
11
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Applies a patch of snapshot operations to the main thread.
|
|
26
|
+
* This is the counterpart to the patch generation in the background thread.
|
|
27
|
+
* Each operation in the patch is processed sequentially to update the DOM.
|
|
28
|
+
*/
|
|
12
29
|
export function snapshotPatchApply(snapshotPatch: SnapshotPatch): void {
|
|
13
30
|
const length = snapshotPatch.length;
|
|
14
31
|
for (let i = 0; i < length; ++i) {
|
|
@@ -107,10 +124,8 @@ export function snapshotPatchApply(snapshotPatch: SnapshotPatch): void {
|
|
|
107
124
|
}
|
|
108
125
|
|
|
109
126
|
/**
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
* @param code - The code to be evaluated
|
|
113
|
-
* @returns the evaluated expression
|
|
127
|
+
* Evaluates a string as code with ReactLynx runtime injected.
|
|
128
|
+
* Used for HMR (Hot Module Replacement) to update snapshot definitions.
|
|
114
129
|
*/
|
|
115
130
|
function evaluate<T>(code: string): T {
|
|
116
131
|
return new Function(`return ${code}`)();
|