@lynx-js/react 0.105.2 → 0.106.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.
Files changed (41) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/package.json +2 -2
  3. package/refresh/.turbo/turbo-build.log +1 -1
  4. package/runtime/lib/lifecycle/destroy.js +2 -2
  5. package/runtime/lib/lifecycle/destroy.js.map +1 -1
  6. package/runtime/lib/lifecycle/patch/commit.d.ts +7 -3
  7. package/runtime/lib/lifecycle/patch/commit.js +60 -27
  8. package/runtime/lib/lifecycle/patch/commit.js.map +1 -1
  9. package/runtime/lib/lifecycle/patch/updateMainThread.js +14 -13
  10. package/runtime/lib/lifecycle/patch/updateMainThread.js.map +1 -1
  11. package/runtime/lib/lifecycle/reload.js +2 -3
  12. package/runtime/lib/lifecycle/reload.js.map +1 -1
  13. package/runtime/lib/lifecycle/render.d.ts +3 -1
  14. package/runtime/lib/lifecycle/render.js +9 -2
  15. package/runtime/lib/lifecycle/render.js.map +1 -1
  16. package/runtime/lib/list.d.ts +3 -0
  17. package/runtime/lib/list.js +10 -2
  18. package/runtime/lib/list.js.map +1 -1
  19. package/runtime/lib/lynx/calledByNative.js +40 -5
  20. package/runtime/lib/lynx/calledByNative.js.map +1 -1
  21. package/runtime/lib/lynx/tt.js +4 -4
  22. package/runtime/lib/lynx/tt.js.map +1 -1
  23. package/runtime/lib/lynx-api.js +2 -2
  24. package/runtime/lib/lynx-api.js.map +1 -1
  25. package/runtime/lib/opcodes.d.ts +6 -0
  26. package/runtime/lib/opcodes.js +70 -0
  27. package/runtime/lib/opcodes.js.map +1 -1
  28. package/runtime/lib/root.d.ts +1 -0
  29. package/runtime/lib/root.js.map +1 -1
  30. package/runtime/src/lifecycle/destroy.ts +2 -3
  31. package/runtime/src/lifecycle/patch/commit.ts +79 -31
  32. package/runtime/src/lifecycle/patch/updateMainThread.ts +18 -16
  33. package/runtime/src/lifecycle/reload.ts +2 -4
  34. package/runtime/src/lifecycle/render.ts +11 -2
  35. package/runtime/src/list.ts +11 -2
  36. package/runtime/src/lynx/calledByNative.ts +47 -4
  37. package/runtime/src/lynx/tt.ts +4 -4
  38. package/runtime/src/lynx-api.ts +2 -2
  39. package/runtime/src/opcodes.ts +90 -0
  40. package/runtime/src/root.ts +1 -1
  41. package/types/react.docs.d.ts +1 -1
@@ -1,13 +1,14 @@
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, render } from 'preact';
4
+ import { options } from 'preact';
5
5
  import { LifecycleConstant, NativeUpdateDataType } from '../lifecycleConstant.js';
6
6
  import { PerformanceTimingKeys, beginPipeline, markTiming } from './performance.js';
7
7
  import { BackgroundSnapshotInstance, hydrate } from '../backgroundSnapshot.js';
8
8
  import { destroyBackground } from '../lifecycle/destroy.js';
9
9
  import { commitPatchUpdate, genCommitTaskId, globalCommitTaskMap } from '../lifecycle/patch/commit.js';
10
10
  import { reloadBackground } from '../lifecycle/reload.js';
11
+ import { renderBackground } from '../lifecycle/render.js';
11
12
  import { CHILDREN, COMPONENT, DIFF, DIFFED, FORCE } from '../renderToOpcodes/constants.js';
12
13
  import { __root } from '../root.js';
13
14
  import { globalRefsToSet, updateBackgroundRefs } from '../snapshot/ref.js';
@@ -128,14 +129,13 @@ async function OnLifecycleEvent([type, data]) {
128
129
  if (__PROFILE__) {
129
130
  console.profileEnd();
130
131
  }
131
- markTiming(PerformanceTimingKeys.pack_changes_start);
132
132
  // console.debug("********** After hydration:");
133
133
  // printSnapshotInstance(__root as BackgroundSnapshotInstance);
134
134
  if (__PROFILE__) {
135
135
  console.profile('commitChanges');
136
136
  }
137
137
  const commitTaskId = genCommitTaskId();
138
- await commitPatchUpdate({ snapshotPatch }, { commitTaskId, isHydration: true });
138
+ await commitPatchUpdate({ patchList: [{ snapshotPatch, id: commitTaskId }] }, { isHydration: true });
139
139
  updateBackgroundRefs(commitTaskId);
140
140
  globalCommitTaskMap.forEach((commitTask, id) => {
141
141
  if (id > commitTaskId) {
@@ -211,7 +211,7 @@ function updateGlobalProps(newData) {
211
211
  // This is already done because updateFromRoot will consume all dirty flags marked by
212
212
  // the setState, and setState's flush will be a noop. No extra diffs will be needed.
213
213
  Promise.resolve().then(() => {
214
- runWithForce(() => render(__root.__jsx, __root));
214
+ runWithForce(() => renderBackground(__root.__jsx, __root));
215
215
  });
216
216
  lynxCoreInject.tt.GlobalEventEmitter.emit('onGlobalPropsChanged');
217
217
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tt.js","sourceRoot":"","sources":["../../src/lynx/tt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tt.js","sourceRoot":"","sources":["../../src/lynx/tt.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
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
  import { createContext, createElement } from 'preact/compat';
6
5
  import { useState } from 'preact/hooks';
7
6
  import { factory, withInitDataInState } from './compat/initData.js';
8
7
  import { useLynxGlobalEventListener } from './hooks/useLynxGlobalEventListener.js';
8
+ import { renderBackground } from './lifecycle/render.js';
9
9
  import { LifecycleConstant } from './lifecycleConstant.js';
10
10
  import { flushDelayedLifecycleEvents } from './lynx/tt.js';
11
11
  import { __root } from './root.js';
@@ -25,7 +25,7 @@ export const root = {
25
25
  }
26
26
  else {
27
27
  __root.__jsx = jsx;
28
- render(jsx, __root);
28
+ renderBackground(jsx, __root);
29
29
  if (__FIRST_SCREEN_SYNC_TIMING__ === 'immediately') { }
30
30
  else {
31
31
  lynx.getNativeApp().callLepusMethod(LifecycleConstant.jsReady, {});
@@ -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,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
+ {"version":3,"file":"lynx-api.js","sourceRoot":"","sources":["../src/lynx-api.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,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,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,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,gBAAgB,CAAC,GAAG,EAAE,MAAa,CAAC,CAAC;YACrC,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,2 +1,8 @@
1
1
  import { SnapshotInstance } from './snapshot.js';
2
+ interface SSRFiberElement {
3
+ ssrID: string;
4
+ }
5
+ export type SSRSnapshotInstance = [string, number, SSRFiberElement[]];
6
+ export declare function ssrHydrateByOpcodes(opcodes: any[], into: SnapshotInstance, refMap?: Record<string, FiberElement>): void;
2
7
  export declare function renderOpcodesInto(opcodes: any[], into: SnapshotInstance): void;
8
+ export {};
@@ -1,6 +1,7 @@
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 { componentAtIndexFactory, enqueueComponentFactory, gRecycleMap, gSignMap } from './list.js';
4
5
  import { CHILDREN } from './renderToOpcodes/constants.js';
5
6
  import { SnapshotInstance } from './snapshot.js';
6
7
  var Opcode;
@@ -10,6 +11,70 @@ var Opcode;
10
11
  Opcode[Opcode["Attr"] = 2] = "Attr";
11
12
  Opcode[Opcode["Text"] = 3] = "Text";
12
13
  })(Opcode || (Opcode = {}));
14
+ export function ssrHydrateByOpcodes(opcodes, into, refMap) {
15
+ let top = into;
16
+ const stack = [into];
17
+ for (let i = 0; i < opcodes.length;) {
18
+ const opcode = opcodes[i];
19
+ switch (opcode) {
20
+ case Opcode.Begin: {
21
+ const p = top;
22
+ const [type, __id, elements] = opcodes[i + 1];
23
+ top = new SnapshotInstance(type, __id);
24
+ top.__pendingElements = elements;
25
+ p.insertBefore(top);
26
+ stack.push(top);
27
+ i += 2;
28
+ break;
29
+ }
30
+ case Opcode.End: {
31
+ // @ts-ignore
32
+ top[CHILDREN] = undefined;
33
+ top.__elements = top.__pendingElements.map(({ ssrID }) => refMap[ssrID]);
34
+ top.__element_root = top.__elements[0];
35
+ delete top.__pendingElements;
36
+ if (top.__snapshot_def.isListHolder) {
37
+ const listElement = top.__element_root;
38
+ const listElementUniqueID = __GetElementUniqueID(listElement);
39
+ const signMap = gSignMap[listElementUniqueID] = new Map();
40
+ gRecycleMap[listElementUniqueID] = new Map();
41
+ const enqueueFunc = enqueueComponentFactory();
42
+ const componentAtIndex = componentAtIndexFactory(top.childNodes);
43
+ for (const child of top.childNodes) {
44
+ if (child.__element_root) {
45
+ const childElementUniqueID = __GetElementUniqueID(child.__element_root);
46
+ signMap.set(childElementUniqueID, child);
47
+ enqueueFunc(listElement, listElementUniqueID, childElementUniqueID);
48
+ }
49
+ }
50
+ __UpdateListCallbacks(listElement, componentAtIndex, enqueueFunc);
51
+ }
52
+ stack.pop();
53
+ const p = stack[stack.length - 1];
54
+ top = p;
55
+ i += 1;
56
+ break;
57
+ }
58
+ case Opcode.Attr: {
59
+ const key = opcodes[i + 1];
60
+ const value = opcodes[i + 2];
61
+ top.setAttribute(key, value);
62
+ i += 3;
63
+ break;
64
+ }
65
+ case Opcode.Text: {
66
+ const [[type, __id, elements], text] = opcodes[i + 1];
67
+ const s = new SnapshotInstance(type, __id);
68
+ s.setAttribute(0, text);
69
+ top.insertBefore(s);
70
+ s.__elements = elements.map(({ ssrID }) => refMap[ssrID]);
71
+ s.__element_root = s.__elements[0];
72
+ i += 2;
73
+ break;
74
+ }
75
+ }
76
+ }
77
+ }
13
78
  export function renderOpcodesInto(opcodes, into) {
14
79
  let top = into;
15
80
  const stack = [into];
@@ -23,6 +88,7 @@ export function renderOpcodesInto(opcodes, into) {
23
88
  if (top.__parent) {
24
89
  // already inserted
25
90
  top = new SnapshotInstance(top.type);
91
+ opcodes[i + 1] = top;
26
92
  }
27
93
  p.insertBefore(top);
28
94
  stack.push(top);
@@ -48,6 +114,10 @@ export function renderOpcodesInto(opcodes, into) {
48
114
  case Opcode.Text: {
49
115
  const text = opcodes[i + 1];
50
116
  const s = new SnapshotInstance(null);
117
+ if (__ENABLE_SSR__) {
118
+ // We need store the just created SnapshotInstance, or it will be lost when we leave the function
119
+ opcodes[i + 1] = [s, text];
120
+ }
51
121
  s.setAttribute(0, text);
52
122
  top.insertBefore(s);
53
123
  i += 2;
@@ -1 +1 @@
1
- {"version":3,"file":"opcodes.js","sourceRoot":"","sources":["../src/opcodes.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,IAAW,MAKV;AALD,WAAW,MAAM;IACf,qCAAS,CAAA;IACT,iCAAG,CAAA;IACH,mCAAI,CAAA;IACJ,mCAAI,CAAA;AACN,CAAC,EALU,MAAM,KAAN,MAAM,QAKhB;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAc,EAAE,IAAsB;IACtE,IAAI,GAAG,GAAqB,IAAI,CAAC;IACjC,MAAM,KAAK,GAAuB,CAAC,IAAI,CAAC,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClB,MAAM,CAAC,GAAG,GAAG,CAAC;gBACd,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrB,aAAa;gBACb,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACjB,mBAAmB;oBACnB,GAAG,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvC,CAAC;gBACD,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEhB,CAAC,IAAI,CAAC,CAAC;gBACP,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChB,aAAa;gBACb,GAAG,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;gBAE1B,KAAK,CAAC,GAAG,EAAE,CAAC;gBACZ,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAClC,GAAG,GAAG,CAAE,CAAC;gBAET,CAAC,IAAI,CAAC,CAAC;gBACP,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7B,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAE7B,CAAC,IAAI,CAAC,CAAC;gBACP,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5B,MAAM,CAAC,GAAG,IAAI,gBAAgB,CAAC,IAAyB,CAAC,CAAC;gBAC1D,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACxB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAEpB,CAAC,IAAI,CAAC,CAAC;gBACP,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"opcodes.js","sourceRoot":"","sources":["../src/opcodes.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { BackgroundSnapshotInstance } from './backgroundSnapshot.js';
2
2
  import { SnapshotInstance } from './snapshot.js';
3
3
  declare let __root: (SnapshotInstance | BackgroundSnapshotInstance) & {
4
4
  __jsx?: React.ReactNode;
5
+ __opcodes?: any[];
5
6
  };
6
7
  declare function setRoot(root: typeof __root): void;
7
8
  export { __root, setRoot };
@@ -1 +1 @@
1
- {"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,IAAI,MAAqF,CAAC;AAE1F,SAAS,OAAO,CAAC,IAAmB;IAClC,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,IAAI,SAAS,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC;KAAM,IAAI,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,IAAI,MAAwG,CAAC;AAE7G,SAAS,OAAO,CAAC,IAAmB;IAClC,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,IAAI,SAAS,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC;KAAM,IAAI,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC"}
@@ -1,17 +1,16 @@
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
-
6
4
  import { __root } from '../root.js';
7
5
  import { globalCommitTaskMap } from './patch/commit.js';
6
+ import { renderBackground } from './render.js';
8
7
 
9
8
  function destroyBackground(): void {
10
9
  if (__PROFILE__) {
11
10
  console.profile('destroyBackground');
12
11
  }
13
12
 
14
- render(null, __root as any);
13
+ renderBackground(null, __root as any);
15
14
 
16
15
  globalCommitTaskMap.forEach(task => {
17
16
  task();
@@ -30,35 +30,56 @@ let nextCommitTaskId = 1;
30
30
 
31
31
  let globalBackgroundSnapshotInstancesToRemove: number[] = [];
32
32
 
33
+ let patchesToCommit: Patch[] = [];
34
+
33
35
  interface Patch {
36
+ id: number;
34
37
  snapshotPatch?: SnapshotPatch;
35
38
  workletRefInitValuePatch?: [id: number, value: unknown][];
39
+ }
40
+
41
+ interface PatchList {
42
+ patchList: Patch[];
36
43
  flushOptions?: FlushOptions;
37
44
  }
38
45
 
39
46
  interface PatchOptions {
40
- commitTaskId: number;
41
47
  pipelineOptions?: PipelineOptions;
42
- reloadVersion?: number;
48
+ reloadVersion: number;
43
49
  isHydration?: boolean;
44
50
  }
45
51
 
46
52
  function replaceCommitHook(): void {
53
+ // use our own `options.debounceRendering` to insert a timing flag before render
54
+ type DebounceRendering = (f: () => void) => void;
55
+ const injectDebounceRendering = (debounceRendering: DebounceRendering): DebounceRendering => {
56
+ return (f: () => void) => {
57
+ debounceRendering(() => {
58
+ f();
59
+ void commitToMainThread();
60
+ });
61
+ };
62
+ };
63
+ const defaultDebounceRendering = options.debounceRendering?.bind(options)
64
+ ?? (Promise.prototype.then.bind(Promise.resolve()) as DebounceRendering);
65
+ let _debounceRendering = injectDebounceRendering(defaultDebounceRendering);
66
+ Object.defineProperty(options, 'debounceRendering', {
67
+ get() {
68
+ return _debounceRendering;
69
+ },
70
+ set(debounceRendering: DebounceRendering) {
71
+ _debounceRendering = injectDebounceRendering(debounceRendering);
72
+ },
73
+ });
74
+
47
75
  const oldCommit = options[COMMIT];
48
- options[COMMIT] = async (vnode: VNode, commitQueue: any[]) => {
76
+ const commit = async (vnode: VNode, commitQueue: any[]) => {
49
77
  if (__LEPUS__) {
50
78
  // for testing only
51
79
  commitQueue.length = 0;
52
80
  return;
53
81
  }
54
-
55
- markTimingLegacy(PerformanceTimingKeys.update_diff_vdom_end);
56
- markTiming(PerformanceTimingKeys.diff_vdom_end);
57
- markTiming(PerformanceTimingKeys.pack_changes_start);
58
- if (__PROFILE__) {
59
- console.profile('commitChanges');
60
- }
61
- const renderCallbacks = commitQueue.map(component => {
82
+ const renderCallbacks = commitQueue.map((component: Component<any>) => {
62
83
  const ret = {
63
84
  component,
64
85
  [RENDER_CALLBACKS]: component[RENDER_CALLBACKS],
@@ -84,7 +105,7 @@ function replaceCommitHook(): void {
84
105
  cb.call(wrapper.component);
85
106
  });
86
107
  } catch (e) {
87
- options[CATCH_ERROR](e, wrapper[VNODE]);
108
+ options[CATCH_ERROR](e, wrapper[VNODE]!);
88
109
  }
89
110
  });
90
111
  if (backgroundSnapshotInstancesToRemove.length) {
@@ -97,50 +118,76 @@ function replaceCommitHook(): void {
97
118
  });
98
119
 
99
120
  const snapshotPatch = takeGlobalSnapshotPatch();
100
- const flushOptions = globalFlushOptions;
101
121
  const workletRefInitValuePatch = takeWorkletRefInitValuePatch();
102
- globalFlushOptions = {};
103
122
  if (!snapshotPatch && workletRefInitValuePatch.length === 0) {
104
123
  // before hydration, skip patch
105
- if (__PROFILE__) {
106
- console.profileEnd();
107
- }
108
124
  return;
109
125
  }
110
126
 
111
- const patch: Patch = {};
127
+ const patch: Patch = {
128
+ id: commitTaskId,
129
+ };
112
130
  // TODO: check all fields in `flushOptions` from runtime3
113
131
  if (snapshotPatch?.length) {
114
132
  patch.snapshotPatch = snapshotPatch;
115
133
  }
116
- if (!isEmptyObject(flushOptions)) {
117
- patch.flushOptions = flushOptions;
118
- }
119
134
  if (workletRefInitValuePatch.length) {
120
135
  patch.workletRefInitValuePatch = workletRefInitValuePatch;
121
136
  }
122
- await commitPatchUpdate(patch, { commitTaskId });
123
137
 
124
- const commitTask = globalCommitTaskMap.get(commitTaskId);
138
+ patchesToCommit.push(patch);
139
+ };
140
+ options[COMMIT] = commit as ((...args: Parameters<typeof commit>) => void);
141
+ }
142
+
143
+ async function commitToMainThread(): Promise<void> {
144
+ if (patchesToCommit.length === 0) {
145
+ return;
146
+ }
147
+
148
+ markTimingLegacy(PerformanceTimingKeys.update_diff_vdom_end);
149
+ markTiming(PerformanceTimingKeys.diff_vdom_end);
150
+
151
+ const flushOptions = globalFlushOptions;
152
+ globalFlushOptions = {};
153
+
154
+ const patchList: PatchList = {
155
+ patchList: patchesToCommit,
156
+ };
157
+ patchesToCommit = [];
158
+
159
+ if (!isEmptyObject(flushOptions)) {
160
+ patchList.flushOptions = flushOptions;
161
+ }
162
+
163
+ await commitPatchUpdate(patchList, {});
164
+
165
+ for (let i = 0; i < patchList.patchList.length; i++) {
166
+ const patch = patchList.patchList[i]!;
167
+ const commitTask = globalCommitTaskMap.get(patch.id);
125
168
  if (commitTask) {
126
169
  commitTask();
127
- globalCommitTaskMap.delete(commitTaskId);
170
+ globalCommitTaskMap.delete(patch.id);
128
171
  }
129
- };
172
+ }
130
173
  }
131
174
 
132
- function commitPatchUpdate(data: Patch, patchOptions: PatchOptions): Promise<void> {
175
+ function commitPatchUpdate(patchList: PatchList, patchOptions: Omit<PatchOptions, 'reloadVersion'>): Promise<void> {
133
176
  return new Promise(resolve => {
134
177
  // console.debug('********** JS update:');
135
178
  // printSnapshotInstance(
136
179
  // (backgroundSnapshotInstanceManager.values.get(1) || backgroundSnapshotInstanceManager.values.get(-1))!,
137
180
  // );
138
- // console.debug('commitPatchUpdate: ', JSON.stringify(data));
181
+ // console.debug('commitPatchUpdate: ', JSON.stringify(patchList));
182
+ if (__PROFILE__) {
183
+ console.profile('commitChanges');
184
+ }
185
+ markTiming(PerformanceTimingKeys.pack_changes_start);
139
186
  const obj: {
140
187
  data: string;
141
188
  patchOptions: PatchOptions;
142
189
  } = {
143
- data: JSON.stringify(data),
190
+ data: JSON.stringify(patchList),
144
191
  patchOptions: {
145
192
  ...patchOptions,
146
193
  reloadVersion: getReloadVersion(),
@@ -151,10 +198,10 @@ function commitPatchUpdate(data: Patch, patchOptions: PatchOptions): Promise<voi
151
198
  obj.patchOptions.pipelineOptions = globalPipelineOptions;
152
199
  setPipeline(undefined);
153
200
  }
201
+ lynx.getNativeApp().callLepusMethod(LifecycleConstant.patchUpdate, obj, resolve);
154
202
  if (__PROFILE__) {
155
203
  console.profileEnd();
156
204
  }
157
- lynx.getNativeApp().callLepusMethod(LifecycleConstant.patchUpdate, obj, resolve);
158
205
  });
159
206
  }
160
207
 
@@ -166,7 +213,7 @@ function replaceRequestAnimationFrame(): void {
166
213
  // to make afterPaintEffects run faster
167
214
  const resolvedPromise = Promise.resolve();
168
215
  options.requestAnimationFrame = (cb: () => void) => {
169
- resolvedPromise.then(cb);
216
+ void resolvedPromise.then(cb);
170
217
  };
171
218
  }
172
219
 
@@ -175,6 +222,7 @@ function replaceRequestAnimationFrame(): void {
175
222
  */
176
223
  export {
177
224
  commitPatchUpdate,
225
+ commitToMainThread,
178
226
  genCommitTaskId,
179
227
  globalBackgroundSnapshotInstancesToRemove,
180
228
  globalCommitTaskMap,
@@ -183,5 +231,5 @@ export {
183
231
  replaceCommitHook,
184
232
  replaceRequestAnimationFrame,
185
233
  type PatchOptions,
186
- type Patch,
234
+ type PatchList,
187
235
  };
@@ -4,6 +4,7 @@
4
4
 
5
5
  import { clearDelayedWorklets, updateWorkletRefInitValueChanges } from '@lynx-js/react/worklet-runtime/bindings';
6
6
 
7
+ import type { PatchList, PatchOptions } from './commit.js';
7
8
  import { snapshotPatchApply } from './snapshotPatchApply.js';
8
9
  import { LifecycleConstant } from '../../lifecycleConstant.js';
9
10
  import { __pendingListUpdates } from '../../list.js';
@@ -12,7 +13,6 @@ import { takeGlobalRefPatchMap } from '../../snapshot/ref.js';
12
13
  import { __page } from '../../snapshot.js';
13
14
  import { isEmptyObject } from '../../utils.js';
14
15
  import { getReloadVersion } from '../pass.js';
15
- import type { Patch, PatchOptions } from './commit.js';
16
16
 
17
17
  function updateMainThread(
18
18
  { data, patchOptions }: {
@@ -20,31 +20,33 @@ function updateMainThread(
20
20
  patchOptions: PatchOptions;
21
21
  },
22
22
  ): void {
23
- if ((patchOptions.reloadVersion ?? 0) < getReloadVersion()) {
23
+ if ((patchOptions.reloadVersion) < getReloadVersion()) {
24
24
  return;
25
25
  }
26
26
 
27
27
  setPipeline(patchOptions.pipelineOptions);
28
28
  markTiming(PerformanceTimingKeys.parse_changes_start);
29
- let { snapshotPatch, workletRefInitValuePatch, flushOptions } = JSON.parse(data) as Patch;
30
- markTiming(PerformanceTimingKeys.parse_changes_end);
29
+ const { patchList, flushOptions = {} } = JSON.parse(data) as PatchList;
31
30
 
31
+ markTiming(PerformanceTimingKeys.parse_changes_end);
32
32
  markTiming(PerformanceTimingKeys.patch_changes_start);
33
- updateWorkletRefInitValueChanges(workletRefInitValuePatch);
34
- __pendingListUpdates.clear();
35
- if (snapshotPatch) {
36
- snapshotPatchApply(snapshotPatch);
37
- }
38
- __pendingListUpdates.flush();
39
- // console.debug('********** Lepus updatePatch:');
40
- // printSnapshotInstance(snapshotInstanceManager.values.get(-1)!);
41
33
 
42
- commitMainThreadPatchUpdate(patchOptions.commitTaskId);
34
+ for (const { snapshotPatch, workletRefInitValuePatch, id } of patchList) {
35
+ updateWorkletRefInitValueChanges(workletRefInitValuePatch);
36
+ __pendingListUpdates.clear();
37
+ if (snapshotPatch) {
38
+ snapshotPatchApply(snapshotPatch);
39
+ }
40
+ __pendingListUpdates.flush();
41
+ // console.debug('********** Lepus updatePatch:');
42
+ // printSnapshotInstance(snapshotInstanceManager.values.get(-1)!);
43
+
44
+ commitMainThreadPatchUpdate(id);
45
+ }
46
+ markTiming(PerformanceTimingKeys.patch_changes_end);
43
47
  if (patchOptions.isHydration) {
44
48
  clearDelayedWorklets();
45
49
  }
46
- markTiming(PerformanceTimingKeys.patch_changes_end);
47
- flushOptions ||= {};
48
50
  if (patchOptions.pipelineOptions) {
49
51
  flushOptions.pipelineOptions = patchOptions.pipelineOptions;
50
52
  }
@@ -66,4 +68,4 @@ function commitMainThreadPatchUpdate(commitTaskId?: number): void {
66
68
  /**
67
69
  * @internal
68
70
  */
69
- export { injectUpdateMainThread, commitMainThreadPatchUpdate };
71
+ export { commitMainThreadPatchUpdate, injectUpdateMainThread };
@@ -1,14 +1,12 @@
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
-
6
4
  import { __root, setRoot } from '../root.js';
7
5
  import { SnapshotInstance, __page, snapshotInstanceManager } from '../snapshot.js';
8
6
  import { isEmptyObject } from '../utils.js';
9
7
  import { destroyBackground } from './destroy.js';
10
8
  import { increaseReloadVersion } from './pass.js';
11
- import { renderMainThread } from './render.js';
9
+ import { renderBackground, renderMainThread } from './render.js';
12
10
  import { hydrate } from '../hydrate.js';
13
11
  import { LifecycleConstant } from '../lifecycleConstant.js';
14
12
  import { __pendingListUpdates } from '../list.js';
@@ -71,7 +69,7 @@ function reloadBackground(updateData: Record<string, any>): void {
71
69
  // COW when modify `lynx.__initData` to make sure Provider & Consumer works
72
70
  lynx.__initData = Object.assign({}, lynx.__initData, updateData);
73
71
 
74
- render(__root.__jsx, __root as any);
72
+ renderBackground(__root.__jsx, __root as any);
75
73
 
76
74
  if (__PROFILE__) {
77
75
  console.profileEnd();
@@ -2,11 +2,12 @@
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 { render } from 'preact';
5
+ import type { ComponentChild, ContainerNode } from 'preact';
5
6
 
6
7
  import { renderOpcodesInto } from '../opcodes.js';
7
8
  import { render as renderToString } from '../renderToOpcodes/index.js';
8
9
  import { __root } from '../root.js';
9
- // @ts-ignore
10
+ import { commitToMainThread } from './patch/commit.js';
10
11
 
11
12
  function renderMainThread(): void {
12
13
  /* v8 ignore start */
@@ -36,6 +37,9 @@ function renderMainThread(): void {
36
37
  console.profile('renderOpcodesInto');
37
38
  }
38
39
  renderOpcodesInto(opcodes, __root as any);
40
+ if (__ENABLE_SSR__) {
41
+ __root.__opcodes = opcodes;
42
+ }
39
43
  if (__PROFILE__) {
40
44
  console.profileEnd();
41
45
  }
@@ -43,4 +47,9 @@ function renderMainThread(): void {
43
47
  /* v8 ignore stop */
44
48
  }
45
49
 
46
- export { renderMainThread };
50
+ function renderBackground(vnode: ComponentChild, parent: ContainerNode): void {
51
+ render(vnode, parent);
52
+ void commitToMainThread();
53
+ }
54
+
55
+ export { renderMainThread, renderBackground };
@@ -223,8 +223,17 @@ export const __pendingListUpdates = {
223
223
  },
224
224
  };
225
225
 
226
- const gSignMap: Record<number, Map<number, SnapshotInstance>> = {};
227
- const gRecycleMap: Record<number, Map<string, Map<number, SnapshotInstance>>> = {};
226
+ export const gSignMap: Record<number, Map<number, SnapshotInstance>> = {};
227
+ export const gRecycleMap: Record<number, Map<string, Map<number, SnapshotInstance>>> = {};
228
+
229
+ export function clearListGlobal(): void {
230
+ for (const key in gSignMap) {
231
+ delete gSignMap[key];
232
+ }
233
+ for (const key in gRecycleMap) {
234
+ delete gRecycleMap[key];
235
+ }
236
+ }
228
237
 
229
238
  export function componentAtIndexFactory(ctx: SnapshotInstance[]): ComponentAtIndexCallback {
230
239
  const componentAtIndex = (