@lynx-js/react 0.106.1 → 0.106.3

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 (43) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/package.json +2 -2
  3. package/refresh/.turbo/turbo-build.log +1 -1
  4. package/refresh/package.json +1 -1
  5. package/runtime/lazy/internal.js +1 -1
  6. package/runtime/lib/lifecycle/destroy.js +8 -0
  7. package/runtime/lib/lifecycle/destroy.js.map +1 -1
  8. package/runtime/lib/lifecycle/event/delayEvents.d.ts +3 -0
  9. package/runtime/lib/lifecycle/event/delayEvents.js +7 -0
  10. package/runtime/lib/lifecycle/event/delayEvents.js.map +1 -0
  11. package/runtime/lib/lifecycle/event/delayLifecycleEvents.d.ts +3 -0
  12. package/runtime/lib/lifecycle/event/delayLifecycleEvents.js +20 -0
  13. package/runtime/lib/lifecycle/event/delayLifecycleEvents.js.map +1 -0
  14. package/runtime/lib/lifecycle/event/jsReady.d.ts +6 -0
  15. package/runtime/lib/lifecycle/event/jsReady.js +29 -0
  16. package/runtime/lib/lifecycle/event/jsReady.js.map +1 -0
  17. package/runtime/lib/lifecycle/reload.d.ts +1 -1
  18. package/runtime/lib/lifecycle/reload.js +18 -14
  19. package/runtime/lib/lifecycle/reload.js.map +1 -1
  20. package/runtime/lib/lynx/calledByNative.js +13 -30
  21. package/runtime/lib/lynx/calledByNative.js.map +1 -1
  22. package/runtime/lib/lynx/lazy-bundle.d.ts +2 -2
  23. package/runtime/lib/lynx/lazy-bundle.js +49 -46
  24. package/runtime/lib/lynx/lazy-bundle.js.map +1 -1
  25. package/runtime/lib/lynx/tt.d.ts +1 -2
  26. package/runtime/lib/lynx/tt.js +20 -20
  27. package/runtime/lib/lynx/tt.js.map +1 -1
  28. package/runtime/lib/lynx-api.js +5 -2
  29. package/runtime/lib/lynx-api.js.map +1 -1
  30. package/runtime/lib/snapshot.d.ts +1 -0
  31. package/runtime/lib/snapshot.js +4 -0
  32. package/runtime/lib/snapshot.js.map +1 -1
  33. package/runtime/src/lifecycle/destroy.ts +8 -1
  34. package/runtime/src/lifecycle/event/delayEvents.ts +8 -0
  35. package/runtime/src/lifecycle/event/delayLifecycleEvents.ts +21 -0
  36. package/runtime/src/lifecycle/event/jsReady.ts +33 -0
  37. package/runtime/src/lifecycle/reload.ts +20 -15
  38. package/runtime/src/lynx/calledByNative.ts +15 -33
  39. package/runtime/src/lynx/lazy-bundle.ts +52 -46
  40. package/runtime/src/lynx/tt.ts +23 -20
  41. package/runtime/src/lynx-api.ts +5 -4
  42. package/runtime/src/snapshot.ts +5 -0
  43. package/transform/dist/wasm.cjs +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @lynx-js/react
2
2
 
3
+ ## 0.106.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Do some global var initialize in hydrate, which fixes error like `cannot read property '-21' of undefined` and some style issue. ([#461](https://github.com/lynx-family/lynx-stack/pull/461))
8
+
9
+ - fix: ensure ref lifecycle events run after firstScreen in the background thread ([#434](https://github.com/lynx-family/lynx-stack/pull/434))
10
+
11
+ This patch fixes an issue where ref lifecycle events were running before firstScreen events in the background thread async render mode, which could cause refs to be undefined when components try to access them.
12
+
13
+ ## 0.106.2
14
+
15
+ ### Patch Changes
16
+
17
+ - fix: prevent multiple firstScreen events when reloading before `jsReady` ([#377](https://github.com/lynx-family/lynx-stack/pull/377))
18
+
19
+ - Optimize the bundle size by eliminating unnecessary code when the lazy bundle is not utilized. ([#284](https://github.com/lynx-family/lynx-stack/pull/284))
20
+
3
21
  ## 0.106.1
4
22
 
5
23
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lynx-js/react",
3
- "version": "0.106.1",
3
+ "version": "0.106.3",
4
4
  "description": "ReactLynx is a framework for developing Lynx applications with familiar React.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -149,7 +149,7 @@
149
149
  },
150
150
  "devDependencies": {
151
151
  "@lynx-js/types": "^3.2.0",
152
- "@microsoft/api-extractor": "7.51.1",
152
+ "@microsoft/api-extractor": "7.52.2",
153
153
  "@types/react": "^18.3.20"
154
154
  },
155
155
  "peerDependencies": {
@@ -5,4 +5,4 @@
5
5
 
6
6
  dist/index.js 11.4kb
7
7
 
8
- ⚡ Done in 24ms
8
+ ⚡ Done in 14ms
@@ -16,6 +16,6 @@
16
16
  "@lynx-js/react": "workspace:*",
17
17
  "@prefresh/core": "^1.5.3",
18
18
  "@prefresh/utils": "^1.2.0",
19
- "esbuild": "^0.25.1"
19
+ "esbuild": "^0.25.2"
20
20
  }
21
21
  }
@@ -2,7 +2,7 @@
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
 
5
- import { sExportsReactInternal, target } from './target';
5
+ import { sExportsReactInternal, target } from './target.js';
6
6
 
7
7
  export const {
8
8
  Component,
@@ -2,6 +2,8 @@
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 { __root } from '../root.js';
5
+ import { delayedEvents } from './event/delayEvents.js';
6
+ import { delayedLifecycleEvents } from './event/delayLifecycleEvents.js';
5
7
  import { globalCommitTaskMap } from './patch/commit.js';
6
8
  import { renderBackground } from './render.js';
7
9
  function destroyBackground() {
@@ -13,6 +15,12 @@ function destroyBackground() {
13
15
  task();
14
16
  });
15
17
  globalCommitTaskMap.clear();
18
+ // Clear delayed events which should not be executed after destroyed.
19
+ // This is important when the page is performing a reload.
20
+ delayedLifecycleEvents.length = 0;
21
+ if (delayedEvents) {
22
+ delayedEvents.length = 0;
23
+ }
16
24
  if (__PROFILE__) {
17
25
  console.profileEnd();
18
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../../src/lifecycle/destroy.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,SAAS,iBAAiB;IACxB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,gBAAgB,CAAC,IAAI,EAAE,MAAa,CAAC,CAAC;IAEtC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACjC,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IACH,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAE5B,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../../src/lifecycle/destroy.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,SAAS,iBAAiB;IACxB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,gBAAgB,CAAC,IAAI,EAAE,MAAa,CAAC,CAAC;IAEtC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACjC,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IACH,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAC5B,qEAAqE;IACrE,0DAA0D;IAC1D,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,IAAI,aAAa,EAAE,CAAC;QAClB,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare let delayedEvents: [handlerName: string, data: unknown][] | undefined;
2
+ declare function delayedPublishEvent(handlerName: string, data: unknown): void;
3
+ export { delayedPublishEvent, delayedEvents };
@@ -0,0 +1,7 @@
1
+ let delayedEvents;
2
+ function delayedPublishEvent(handlerName, data) {
3
+ delayedEvents ??= [];
4
+ delayedEvents.push([handlerName, data]);
5
+ }
6
+ export { delayedPublishEvent, delayedEvents };
7
+ //# sourceMappingURL=delayEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delayEvents.js","sourceRoot":"","sources":["../../../src/lifecycle/event/delayEvents.ts"],"names":[],"mappings":"AAAA,IAAI,aAAiE,CAAC;AAEtE,SAAS,mBAAmB,CAAC,WAAmB,EAAE,IAAa;IAC7D,aAAa,KAAK,EAAE,CAAC;IACrB,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const delayedLifecycleEvents: [type: string, data: any][];
2
+ declare function delayLifecycleEvent(type: string, data: any): void;
3
+ export {};
@@ -0,0 +1,20 @@
1
+ import { LifecycleConstant } from '../../lifecycleConstant.js';
2
+ const delayedLifecycleEvents = [];
3
+ function delayLifecycleEvent(type, data) {
4
+ // We need to ensure that firstScreen events are executed before other events.
5
+ // This is because firstScreen events are used to initialize the dom tree,
6
+ // and other events depend on the dom tree being fully constructed.
7
+ // There might be some edge cases where ctx cannot be found in `ref` lifecycle event,
8
+ // and they should be ignored safely.
9
+ if (type === LifecycleConstant.firstScreen) {
10
+ delayedLifecycleEvents.unshift([type, data]);
11
+ }
12
+ else {
13
+ delayedLifecycleEvents.push([type, data]);
14
+ }
15
+ }
16
+ /**
17
+ * @internal
18
+ */
19
+ export { delayLifecycleEvent, delayedLifecycleEvents };
20
+ //# sourceMappingURL=delayLifecycleEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delayLifecycleEvents.js","sourceRoot":"","sources":["../../../src/lifecycle/event/delayLifecycleEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,sBAAsB,GAAgC,EAAE,CAAC;AAE/D,SAAS,mBAAmB,CAAC,IAAY,EAAE,IAAS;IAClD,8EAA8E;IAC9E,0EAA0E;IAC1E,mEAAmE;IACnE,qFAAqF;IACrF,qCAAqC;IACrC,IAAI,IAAI,KAAK,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAC3C,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ declare let isJSReady: boolean;
2
+ declare let jsReadyEventIdSwap: Record<number, number>;
3
+ declare function jsReady(): void;
4
+ declare function clearJSReadyEventIdSwap(): void;
5
+ declare function resetJSReady(): void;
6
+ export {};
@@ -0,0 +1,29 @@
1
+ import { LifecycleConstant } from '../../lifecycleConstant.js';
2
+ import { __root } from '../../root.js';
3
+ import { takeGlobalRefPatchMap } from '../../snapshot/ref.js';
4
+ let isJSReady;
5
+ let jsReadyEventIdSwap;
6
+ function jsReady() {
7
+ isJSReady = true;
8
+ __OnLifecycleEvent([
9
+ LifecycleConstant.firstScreen, /* FIRST_SCREEN */
10
+ {
11
+ root: JSON.stringify(__root),
12
+ refPatch: JSON.stringify(takeGlobalRefPatchMap()),
13
+ jsReadyEventIdSwap,
14
+ },
15
+ ]);
16
+ jsReadyEventIdSwap = {};
17
+ }
18
+ function clearJSReadyEventIdSwap() {
19
+ jsReadyEventIdSwap = {};
20
+ }
21
+ function resetJSReady() {
22
+ isJSReady = false;
23
+ jsReadyEventIdSwap = {};
24
+ }
25
+ /**
26
+ * @internal
27
+ */
28
+ export { jsReady, isJSReady, jsReadyEventIdSwap, clearJSReadyEventIdSwap, resetJSReady };
29
+ //# sourceMappingURL=jsReady.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsReady.js","sourceRoot":"","sources":["../../../src/lifecycle/event/jsReady.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,IAAI,SAAkB,CAAC;AACvB,IAAI,kBAA0C,CAAC;AAE/C,SAAS,OAAO;IACd,SAAS,GAAG,IAAI,CAAC;IACjB,kBAAkB,CAAC;QACjB,iBAAiB,CAAC,WAAW,EAAE,kBAAkB;QACjD;YACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;YACjD,kBAAkB;SACnB;KACF,CAAC,CAAC;IACH,kBAAkB,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,uBAAuB;IAC9B,kBAAkB,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY;IACnB,SAAS,GAAG,KAAK,CAAC;IAClB,kBAAkB,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY,EAAE,CAAC"}
@@ -1,3 +1,3 @@
1
1
  declare function reloadMainThread(data: any, options: UpdatePageOption): void;
2
2
  declare function reloadBackground(updateData: Record<string, any>): void;
3
- export { reloadMainThread, reloadBackground };
3
+ export { reloadBackground, reloadMainThread };
@@ -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 { hydrate } from '../hydrate.js';
5
+ import { LifecycleConstant } from '../lifecycleConstant.js';
6
+ import { __pendingListUpdates } from '../list.js';
4
7
  import { __root, setRoot } from '../root.js';
8
+ import { takeGlobalRefPatchMap } from '../snapshot/ref.js';
5
9
  import { SnapshotInstance, __page, snapshotInstanceManager } from '../snapshot.js';
6
10
  import { isEmptyObject } from '../utils.js';
7
11
  import { destroyBackground } from './destroy.js';
12
+ import { destroyWorklet } from '../worklet/destroy.js';
13
+ import { clearJSReadyEventIdSwap, isJSReady } from './event/jsReady.js';
8
14
  import { increaseReloadVersion } from './pass.js';
9
- import { renderBackground, renderMainThread } from './render.js';
10
- import { hydrate } from '../hydrate.js';
11
- import { LifecycleConstant } from '../lifecycleConstant.js';
12
- import { __pendingListUpdates } from '../list.js';
13
- import { takeGlobalRefPatchMap } from '../snapshot/ref.js';
14
15
  import { deinitGlobalSnapshotPatch } from './patch/snapshotPatch.js';
15
- import { destroyWorklet } from '../worklet/destroy.js';
16
+ import { renderBackground, renderMainThread } from './render.js';
16
17
  function reloadMainThread(data, options) {
17
18
  if (__PROFILE__) {
18
19
  console.profile('reloadTemplate');
@@ -24,6 +25,7 @@ function reloadMainThread(data, options) {
24
25
  destroyWorklet();
25
26
  snapshotInstanceManager.clear();
26
27
  __pendingListUpdates.clear();
28
+ clearJSReadyEventIdSwap();
27
29
  const oldRoot = __root;
28
30
  setRoot(new SnapshotInstance('root'));
29
31
  __root.__jsx = oldRoot.__jsx;
@@ -33,14 +35,16 @@ function reloadMainThread(data, options) {
33
35
  });
34
36
  // always call this before `__FlushElementTree`
35
37
  __pendingListUpdates.flush();
38
+ if (isJSReady) {
39
+ __OnLifecycleEvent([
40
+ LifecycleConstant.firstScreen, /* FIRST_SCREEN */
41
+ {
42
+ root: JSON.stringify(__root),
43
+ refPatch: JSON.stringify(takeGlobalRefPatchMap()),
44
+ },
45
+ ]);
46
+ }
36
47
  __FlushElementTree(__page, options);
37
- __OnLifecycleEvent([
38
- LifecycleConstant.firstScreen, /* FIRST_SCREEN */
39
- {
40
- root: JSON.stringify(__root),
41
- refPatch: JSON.stringify(takeGlobalRefPatchMap()),
42
- },
43
- ]);
44
48
  if (__PROFILE__) {
45
49
  console.profileEnd();
46
50
  }
@@ -60,5 +64,5 @@ function reloadBackground(updateData) {
60
64
  console.profileEnd();
61
65
  }
62
66
  }
63
- export { reloadMainThread, reloadBackground };
67
+ export { reloadBackground, reloadMainThread };
64
68
  //# sourceMappingURL=reload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/lifecycle/reload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/lifecycle/reload.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,18 @@
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 { __page, setupPage, SnapshotInstance } from '../snapshot.js';
5
- // @ts-ignore
6
- import { render as renderToString } from '../renderToOpcodes/index.js';
7
- import { LifecycleConstant } from '../lifecycleConstant.js';
8
- import { takeGlobalRefPatchMap } from '../snapshot/ref.js';
9
- import { isEmptyObject } from '../utils.js';
10
- import { __root, setRoot } from '../root.js';
4
+ import { hydrate } from '../hydrate.js';
5
+ import { isJSReady, jsReady, jsReadyEventIdSwap, resetJSReady } from '../lifecycle/event/jsReady.js';
11
6
  import { reloadMainThread } from '../lifecycle/reload.js';
12
7
  import { renderMainThread } from '../lifecycle/render.js';
13
- import { hydrate } from '../hydrate.js';
14
- import { markTiming, PerformanceTimingKeys, setPipeline } from './performance.js';
8
+ import { LifecycleConstant } from '../lifecycleConstant.js';
15
9
  import { __pendingListUpdates } from '../list.js';
16
10
  import { ssrHydrateByOpcodes } from '../opcodes.js';
11
+ import { __root, setRoot } from '../root.js';
12
+ import { takeGlobalRefPatchMap } from '../snapshot/ref.js';
13
+ import { SnapshotInstance, __page, setupPage } from '../snapshot.js';
14
+ import { isEmptyObject } from '../utils.js';
15
+ import { PerformanceTimingKeys, markTiming, setPipeline } from './performance.js';
17
16
  function ssrEncode() {
18
17
  const { __opcodes } = __root;
19
18
  delete __root.__opcodes;
@@ -37,6 +36,8 @@ function ssrHydrate(info) {
37
36
  if (!nativePage) {
38
37
  throw new Error('SSR Hydration Failed! Please check if the SSR content loaded successfully!');
39
38
  }
39
+ resetJSReady();
40
+ setupPage(nativePage);
40
41
  const refsMap = __GetTemplateParts(nativePage);
41
42
  const { __opcodes, __root_values } = JSON.parse(info);
42
43
  __root_values && __root.setAttribute('values', __root_values);
@@ -45,10 +46,8 @@ function ssrHydrate(info) {
45
46
  __root.__element_root = nativePage;
46
47
  }
47
48
  function injectCalledByNative() {
48
- if (process.env['NODE_ENV'] !== 'test') {
49
- if (__FIRST_SCREEN_SYNC_TIMING__ !== 'jsReady' && __ENABLE_SSR__) {
50
- throw new Error('`firstScreenSyncTiming` must be `jsReady` when SSR is enabled');
51
- }
49
+ if (process.env['NODE_ENV'] !== 'test' && __FIRST_SCREEN_SYNC_TIMING__ !== 'jsReady' && __ENABLE_SSR__) {
50
+ throw new Error('`firstScreenSyncTiming` must be `jsReady` when SSR is enabled');
52
51
  }
53
52
  const calledByNative = {
54
53
  renderPage,
@@ -67,8 +66,7 @@ function injectCalledByNative() {
67
66
  }
68
67
  function renderPage(data) {
69
68
  // reset `jsReady` state
70
- isJSReady = false;
71
- jsReadyEventIdSwap = {};
69
+ resetJSReady();
72
70
  lynx.__initData = data || {};
73
71
  setupPage(__CreatePage('0', 0));
74
72
  __root.ensureElements();
@@ -86,7 +84,6 @@ function updatePage(data, options) {
86
84
  return;
87
85
  }
88
86
  if (options?.resetPageData) {
89
- // @ts-ignore
90
87
  lynx.__initData = {};
91
88
  }
92
89
  if (typeof data == 'object' && !isEmptyObject(data)) {
@@ -127,20 +124,6 @@ function updateGlobalProps(_data, options) {
127
124
  __FlushElementTree();
128
125
  }
129
126
  }
130
- let isJSReady;
131
- let jsReadyEventIdSwap;
132
- function jsReady() {
133
- __OnLifecycleEvent([
134
- LifecycleConstant.firstScreen, /* FIRST_SCREEN */
135
- {
136
- root: JSON.stringify(__root),
137
- refPatch: JSON.stringify(takeGlobalRefPatchMap()),
138
- jsReadyEventIdSwap,
139
- },
140
- ]);
141
- isJSReady = true;
142
- jsReadyEventIdSwap = {};
143
- }
144
127
  /**
145
128
  * @internal
146
129
  */
@@ -1 +1 @@
1
- {"version":3,"file":"calledByNative.js","sourceRoot":"","sources":["../../src/lynx/calledByNative.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calledByNative.js","sourceRoot":"","sources":["../../src/lynx/calledByNative.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,6 @@
4
4
  * @returns
5
5
  * @public
6
6
  */
7
- export declare function loadLazyBundle<T extends {
7
+ export declare const loadLazyBundle: <T extends {
8
8
  default: React.ComponentType<any>;
9
- }>(source: string): Promise<T>;
9
+ }>(source: string) => Promise<T>;
@@ -49,56 +49,59 @@ export const makeSyncThen = function (result) {
49
49
  * @returns
50
50
  * @public
51
51
  */
52
- export function loadLazyBundle(source) {
53
- if (__LEPUS__) {
54
- const query = __QueryComponent(source);
55
- let result;
56
- try {
57
- result = query.evalResult;
58
- }
59
- catch (e) {
60
- // Here we cannot return a rejected promise
61
- // (which will eventually be an unhandled rejection and cause unnecessary redbox)
62
- // But we still need a object in shape of Promise
63
- // So we return a Promise which will never resolve or reject,
64
- // which fit our principle "lepus run only once at first-screen" better
65
- return new Promise(() => { });
52
+ export const loadLazyBundle = /*#__PURE__*/ (() => {
53
+ lynx.loadLazyBundle = loadLazyBundle;
54
+ function loadLazyBundle(source) {
55
+ if (__LEPUS__) {
56
+ const query = __QueryComponent(source);
57
+ let result;
58
+ try {
59
+ result = query.evalResult;
60
+ }
61
+ catch (e) {
62
+ // Here we cannot return a rejected promise
63
+ // (which will eventually be an unhandled rejection and cause unnecessary redbox)
64
+ // But we still need a object in shape of Promise
65
+ // So we return a Promise which will never resolve or reject,
66
+ // which fit our principle "lepus run only once at first-screen" better
67
+ return new Promise(() => { });
68
+ }
69
+ const r = Promise.resolve(result);
70
+ // Why we should modify the implementation of `then`?
71
+ // We should make it `sync` so lepus first-screen render can use result above instantly
72
+ // We also should keep promise shape
73
+ // @ts-ignore
74
+ r.then = makeSyncThen(result);
75
+ return r;
66
76
  }
67
- const r = Promise.resolve(result);
68
- // Why we should modify the implementation of `then`?
69
- // We should make it `sync` so lepus first-screen render can use result above instantly
70
- // We also should keep promise shape
71
- // @ts-ignore
72
- r.then = makeSyncThen(result);
73
- return r;
74
- }
75
- else if (__JS__) {
76
- return new Promise((resolve, reject) => {
77
- const callback = result => {
78
- const { code, detail } = result;
79
- if (code === 0) {
80
- const { schema } = detail;
81
- const exports = lynxCoreInject.tt.getDynamicComponentExports(schema);
82
- // `code === 0` means that the lazy bundle has been successfully parsed. However,
83
- // its javascript files may still fail to run, which would prevent the retrieval of the exports object.
84
- if (exports) {
85
- resolve(exports);
86
- return;
77
+ else if (__JS__) {
78
+ return new Promise((resolve, reject) => {
79
+ const callback = result => {
80
+ const { code, detail } = result;
81
+ if (code === 0) {
82
+ const { schema } = detail;
83
+ const exports = lynxCoreInject.tt.getDynamicComponentExports(schema);
84
+ // `code === 0` means that the lazy bundle has been successfully parsed. However,
85
+ // its javascript files may still fail to run, which would prevent the retrieval of the exports object.
86
+ if (exports) {
87
+ resolve(exports);
88
+ return;
89
+ }
87
90
  }
91
+ reject(new Error('Lazy bundle load failed: ' + JSON.stringify(result)));
92
+ };
93
+ if (typeof lynx.QueryComponent === 'function') {
94
+ lynx.QueryComponent(source, callback);
88
95
  }
89
- reject(new Error('Lazy bundle load failed: ' + JSON.stringify(result)));
90
- };
91
- if (typeof lynx.QueryComponent === 'function') {
92
- lynx.QueryComponent(source, callback);
93
- }
94
- else {
95
- lynx.getNativeLynx().QueryComponent(source, callback);
96
- }
97
- });
96
+ else {
97
+ lynx.getNativeLynx().QueryComponent(source, callback);
98
+ }
99
+ });
100
+ }
101
+ throw new Error('unreachable');
98
102
  }
99
- throw new Error('unreachable');
100
- }
101
- lynx.loadLazyBundle = loadLazyBundle;
103
+ return loadLazyBundle;
104
+ })();
102
105
  /**
103
106
  * @internal
104
107
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-bundle.js","sourceRoot":"","sources":["../../src/lynx/lazy-bundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lazy-bundle.js","sourceRoot":"","sources":["../../src/lynx/lazy-bundle.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  export declare function runWithForce(cb: () => void): void;
2
2
  declare function injectTt(): void;
3
- declare let delayedLifecycleEvents: [type: string, data: any][];
4
3
  declare function flushDelayedLifecycleEvents(): void;
5
- export { injectTt, flushDelayedLifecycleEvents, delayedLifecycleEvents };
4
+ export { injectTt, flushDelayedLifecycleEvents };
@@ -6,6 +6,8 @@ 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
+ import { delayedEvents, delayedPublishEvent } from '../lifecycle/event/delayEvents.js';
10
+ import { delayLifecycleEvent, delayedLifecycleEvents } from '../lifecycle/event/delayLifecycleEvents.js';
9
11
  import { commitPatchUpdate, genCommitTaskId, globalCommitTaskMap } from '../lifecycle/patch/commit.js';
10
12
  import { reloadBackground } from '../lifecycle/reload.js';
11
13
  import { renderBackground } from '../lifecycle/render.js';
@@ -59,7 +61,7 @@ export function runWithForce(cb) {
59
61
  function injectTt() {
60
62
  // @ts-ignore
61
63
  const tt = lynxCoreInject.tt;
62
- tt.OnLifecycleEvent = OnLifecycleEvent;
64
+ tt.OnLifecycleEvent = onLifecycleEvent;
63
65
  tt.publishEvent = delayedPublishEvent;
64
66
  tt.publicComponentEvent = delayedPublicComponentEvent;
65
67
  tt.callDestroyLifetimeFun = () => {
@@ -73,19 +75,28 @@ function injectTt() {
73
75
  // used to updateTheme, no longer rely on this function
74
76
  };
75
77
  }
76
- let delayedLifecycleEvents;
77
- async function OnLifecycleEvent([type, data]) {
78
+ function onLifecycleEvent([type, data]) {
78
79
  const hasRootRendered = CHILDREN in __root;
79
80
  // never called `render(<App/>, __root)`
80
81
  // happens if user call `root.render()` async
81
82
  if (!hasRootRendered) {
82
- delayedLifecycleEvents ??= [];
83
- delayedLifecycleEvents.push([type, data]);
83
+ delayLifecycleEvent(type, data);
84
84
  return;
85
85
  }
86
86
  if (__PROFILE__) {
87
87
  console.profile(`OnLifecycleEvent::${type}`);
88
88
  }
89
+ try {
90
+ void onLifecycleEventImpl(type, data);
91
+ }
92
+ catch (e) {
93
+ lynx.reportError(e);
94
+ }
95
+ if (__PROFILE__) {
96
+ console.profileEnd();
97
+ }
98
+ }
99
+ async function onLifecycleEventImpl(type, data) {
89
100
  switch (type) {
90
101
  case LifecycleConstant.firstScreen: {
91
102
  const { root: lepusSide, refPatch, jsReadyEventIdSwap } = data;
@@ -102,6 +113,8 @@ async function OnLifecycleEvent([type, data]) {
102
113
  console.profileEnd();
103
114
  }
104
115
  markTiming(PerformanceTimingKeys.diff_vdom_end);
116
+ // TODO: It seems `delayedEvents` and `delayedLifecycleEvents` should be merged into one array to ensure the proper order of events.
117
+ flushDelayedLifecycleEvents();
105
118
  if (delayedEvents) {
106
119
  delayedEvents.forEach((args) => {
107
120
  const [handlerName, data] = args;
@@ -163,19 +176,11 @@ async function OnLifecycleEvent([type, data]) {
163
176
  break;
164
177
  }
165
178
  }
166
- if (__PROFILE__) {
167
- console.profileEnd();
168
- }
169
179
  }
170
180
  function flushDelayedLifecycleEvents() {
171
181
  if (delayedLifecycleEvents) {
172
182
  delayedLifecycleEvents.forEach((e) => {
173
- try {
174
- OnLifecycleEvent(e);
175
- }
176
- catch (e) {
177
- lynx.reportError(e);
178
- }
183
+ onLifecycleEvent(e);
179
184
  });
180
185
  delayedLifecycleEvents.length = 0;
181
186
  }
@@ -196,11 +201,6 @@ function publishEvent(handlerName, data) {
196
201
  function publicComponentEvent(_componentId, handlerName, data) {
197
202
  publishEvent(handlerName, data);
198
203
  }
199
- let delayedEvents;
200
- function delayedPublishEvent(handlerName, data) {
201
- delayedEvents ??= [];
202
- delayedEvents.push([handlerName, data]);
203
- }
204
204
  function delayedPublicComponentEvent(_componentId, handlerName, data) {
205
205
  delayedPublishEvent(handlerName, data);
206
206
  }
@@ -230,5 +230,5 @@ function updateCardData(newData, options) {
230
230
  lynx.__initData = Object.assign({}, lynx.__initData, restNewData);
231
231
  lynxCoreInject.tt.GlobalEventEmitter.emit('onDataChanged');
232
232
  }
233
- export { injectTt, flushDelayedLifecycleEvents, delayedLifecycleEvents };
233
+ export { injectTt, flushDelayedLifecycleEvents };
234
234
  //# sourceMappingURL=tt.js.map