@lynx-js/react 0.116.1 → 0.116.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 (36) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/package.json +4 -4
  3. package/refresh/.turbo/turbo-build.log +2 -2
  4. package/runtime/lib/alog/index.js +0 -2
  5. package/runtime/lib/alog/index.js.map +1 -1
  6. package/runtime/lib/lifecycle/event/delayEvents.d.ts +2 -2
  7. package/runtime/lib/lifecycle/event/delayEvents.js.map +1 -1
  8. package/runtime/lib/lifecycle/patch/snapshotPatchApply.js +1 -1
  9. package/runtime/lib/lifecycle/patch/snapshotPatchApply.js.map +1 -1
  10. package/runtime/lib/lynx/component.js +1 -1
  11. package/runtime/lib/lynx/component.js.map +1 -1
  12. package/runtime/lib/lynx/tt.js +21 -0
  13. package/runtime/lib/lynx/tt.js.map +1 -1
  14. package/runtime/lib/lynx.js +4 -0
  15. package/runtime/lib/lynx.js.map +1 -1
  16. package/runtime/lib/snapshot/list.js +5 -0
  17. package/runtime/lib/snapshot/list.js.map +1 -1
  18. package/runtime/lib/snapshot.js +3 -1
  19. package/runtime/lib/snapshot.js.map +1 -1
  20. package/testing-library/dist/env/vitest.js +22 -0
  21. package/testing-library/dist/index.d.ts +0 -20
  22. package/testing-library/dist/vitest-global-setup.js +1 -1
  23. package/transform/dist/wasm.cjs +5 -5
  24. package/worklet-runtime/dist/dev.js +86 -5
  25. package/worklet-runtime/dist/main.js +1 -1
  26. package/worklet-runtime/lib/api/element.js +28 -0
  27. package/worklet-runtime/lib/api/element.js.map +1 -1
  28. package/worklet-runtime/lib/utils/mainThreadFlushLoopGuard.d.ts +4 -0
  29. package/worklet-runtime/lib/utils/mainThreadFlushLoopGuard.js +76 -0
  30. package/worklet-runtime/lib/utils/mainThreadFlushLoopGuard.js.map +1 -0
  31. package/worklet-runtime/lib/utils/profile.js +2 -2
  32. package/worklet-runtime/lib/utils/profile.js.map +1 -1
  33. package/worklet-runtime/lib/workletRef.js +6 -1
  34. package/worklet-runtime/lib/workletRef.js.map +1 -1
  35. package/worklet-runtime/lib/workletRuntime.js +13 -1
  36. package/worklet-runtime/lib/workletRuntime.js.map +1 -1
@@ -0,0 +1,76 @@
1
+ // Copyright 2026 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
+ const TRACE_LIMIT = 256;
5
+ const DEFAULT_FLUSH_LIMIT = 256;
6
+ let trace = [];
7
+ let flushCountInWindow = 0;
8
+ let resetScheduled = false;
9
+ let trippedError = null;
10
+ function pushTrace(marker) {
11
+ trace.push(marker);
12
+ if (trace.length > TRACE_LIMIT) {
13
+ trace = trace.slice(trace.length - TRACE_LIMIT);
14
+ }
15
+ }
16
+ function compressTrace(markers) {
17
+ if (markers.length === 0)
18
+ return '';
19
+ const out = [];
20
+ // Display most-recent-first to make loops easier to read.
21
+ let prev = markers[markers.length - 1];
22
+ let count = 1;
23
+ for (let i = markers.length - 2; i >= 0; i--) {
24
+ const cur = markers[i];
25
+ if (cur === prev) {
26
+ count++;
27
+ continue;
28
+ }
29
+ out.push(count === 1 ? prev : `${prev} x${count}`);
30
+ prev = cur;
31
+ count = 1;
32
+ }
33
+ out.push(count === 1 ? prev : `${prev} x${count}`);
34
+ return out.join(' <- ');
35
+ }
36
+ export function mainThreadFlushLoopMark(marker) {
37
+ if (__DEV__) {
38
+ pushTrace(marker);
39
+ }
40
+ }
41
+ export function mainThreadFlushLoopOnFlushMicrotask() {
42
+ /* v8 ignore next 1 */
43
+ if (!__DEV__)
44
+ return null;
45
+ if (trippedError)
46
+ return trippedError;
47
+ if (!resetScheduled) {
48
+ resetScheduled = true;
49
+ setTimeout(() => {
50
+ mainThreadFlushLoopReset();
51
+ }, 0);
52
+ }
53
+ flushCountInWindow++;
54
+ const limit = DEFAULT_FLUSH_LIMIT;
55
+ if (flushCountInWindow > limit) {
56
+ const traceText = compressTrace(trace);
57
+ trippedError = new Error(`[ReactLynx][DEV] MainThread flush loop detected: render executed ${flushCountInWindow} times without yielding (limit=${limit}). Trace: ${traceText}`);
58
+ return trippedError;
59
+ }
60
+ return null;
61
+ }
62
+ export function mainThreadFlushLoopReport(error) {
63
+ if (__DEV__) {
64
+ // Throw on macrotask to avoid Promise-unhandled-rejection noise.
65
+ setTimeout(() => {
66
+ throw error;
67
+ }, 0);
68
+ }
69
+ }
70
+ export function mainThreadFlushLoopReset() {
71
+ trace = [];
72
+ flushCountInWindow = 0;
73
+ resetScheduled = false;
74
+ trippedError = null;
75
+ }
76
+ //# sourceMappingURL=mainThreadFlushLoopGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mainThreadFlushLoopGuard.js","sourceRoot":"","sources":["../../src/utils/mainThreadFlushLoopGuard.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,12 @@ export function profile(sliceName, f) {
5
5
  /* v8 ignore next 9 */
6
6
  // TODO: change it to __PROFILE__
7
7
  if (__DEV__) {
8
- console.profile(sliceName);
8
+ console.profile?.(sliceName);
9
9
  try {
10
10
  return f();
11
11
  }
12
12
  finally {
13
- console.profileEnd();
13
+ console.profileEnd?.();
14
14
  }
15
15
  }
16
16
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/utils/profile.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,MAAM,UAAU,OAAO,CACrB,SAAiB,EACjB,CAAK;IAEL,sBAAsB;IACtB,iCAAiC;IACjC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,CAAC,EAAE,CAAC;QACb,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/utils/profile.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,MAAM,UAAU,OAAO,CACrB,SAAiB,EACjB,CAAK;IAEL,sBAAsB;IACtB,iCAAiC;IACjC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,EAAE,CAAC;QACb,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
@@ -2,6 +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
  import { Element } from './api/element.js';
5
+ import { mainThreadFlushLoopMark } from './utils/mainThreadFlushLoopGuard.js';
5
6
  import { profile } from './utils/profile.js';
6
7
  let impl;
7
8
  function initWorkletRef() {
@@ -27,6 +28,10 @@ const createWorkletRef = (id, value) => {
27
28
  };
28
29
  const getFromWorkletRefMap = (refImpl) => {
29
30
  const id = refImpl._wvid;
31
+ /* v8 ignore next 3 */
32
+ if (__DEV__) {
33
+ mainThreadFlushLoopMark(`MainThreadRef:get id=${id}`);
34
+ }
30
35
  let value;
31
36
  if (id < 0) {
32
37
  // At the first screen rendering, the worklet ref is created with a negative ID.
@@ -43,7 +48,7 @@ const getFromWorkletRefMap = (refImpl) => {
43
48
  }
44
49
  /* v8 ignore next 3 */
45
50
  if (__DEV__ && value === undefined) {
46
- throw new Error('Worklet: ref is not initialized: ' + id);
51
+ throw new Error('MainThreadRef is not initialized: ' + id);
47
52
  }
48
53
  return value;
49
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"workletRef.js","sourceRoot":"","sources":["../src/workletRef.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAa7C,IAAI,IAAyB,CAAC;AAE9B,SAAS,cAAc;IACrB,OAAO,CAAC,IAAI,GAAG;QACb,cAAc,EAAE,EAAE;QAClB;;;;;WAKG;QACH,yBAAyB,EAAE,EAAE;QAC7B,gBAAgB;QAChB,gCAAgC;QAChC,6BAA6B;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,gBAAgB,GAAG,CACvB,EAAgB,EAChB,KAAQ,EACO,EAAE;IACjB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,OAA0B,EACX,EAAE;IACjB,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC;IACV,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACX,gFAAgF;QAChF,oCAAoC;QACpC,mBAAmB;QACnB,0BAA0B;QAC1B,KAAK,GAAG,IAAK,CAAC,yBAAyB,CAAC,EAAE,CAAkB,CAAC;QAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAK,CAAC,cAAc,CAAC,EAAE,CAAkB,CAAC;IACpD,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,SAAS,4BAA4B,CAAC,EAAgB;IACpD,OAAO,IAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CACvB,MAAsC,EACtC,OAA2B;IAE3B,oBAAoB,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,OAAO;QAC5C,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC;QACtB,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,gCAAgC,CACvC,KAAgC;IAEhC,OAAO,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAK,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC9B,IAAK,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B;IACpC,IAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC;AACvC,CAAC;AAED,OAAO,EAEL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,4BAA4B,EAC5B,gCAAgC,GACjC,CAAC"}
1
+ {"version":3,"file":"workletRef.js","sourceRoot":"","sources":["../src/workletRef.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAa7C,IAAI,IAAyB,CAAC;AAE9B,SAAS,cAAc;IACrB,OAAO,CAAC,IAAI,GAAG;QACb,cAAc,EAAE,EAAE;QAClB;;;;;WAKG;QACH,yBAAyB,EAAE,EAAE;QAC7B,gBAAgB;QAChB,gCAAgC;QAChC,6BAA6B;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,gBAAgB,GAAG,CACvB,EAAgB,EAChB,KAAQ,EACO,EAAE;IACjB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,OAA0B,EACX,EAAE;IACjB,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IACzB,sBAAsB;IACtB,IAAI,OAAO,EAAE,CAAC;QACZ,uBAAuB,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,CAAC;IACV,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACX,gFAAgF;QAChF,oCAAoC;QACpC,mBAAmB;QACnB,0BAA0B;QAC1B,KAAK,GAAG,IAAK,CAAC,yBAAyB,CAAC,EAAE,CAAkB,CAAC;QAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAK,CAAC,cAAc,CAAC,EAAE,CAAkB,CAAC;IACpD,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,SAAS,4BAA4B,CAAC,EAAgB;IACpD,OAAO,IAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CACvB,MAAsC,EACtC,OAA2B;IAE3B,oBAAoB,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,OAAO;QAC5C,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC;QACtB,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,gCAAgC,CACvC,KAAgC;IAEhC,OAAO,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAK,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC9B,IAAK,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B;IACpC,IAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC;AACvC,CAAC;AAED,OAAO,EAEL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,4BAA4B,EAC5B,gCAAgC,GACjC,CAAC"}
@@ -2,6 +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
  import { Element } from './api/element.js';
5
+ import { RunWorkletSource } from './bindings/types.js';
5
6
  import { initRunOnBackgroundDelay } from './delayRunOnBackground.js';
6
7
  import { delayExecUntilJsReady, initEventDelay } from './delayWorkletEvent.js';
7
8
  import { initEomImpl } from './eomImpl.js';
@@ -9,6 +10,7 @@ import { addEventMethodsIfNeeded } from './eventPropagation.js';
9
10
  import { hydrateCtx } from './hydrate.js';
10
11
  import { JsFunctionLifecycleManager, isRunOnBackgroundEnabled } from './jsFunctionLifecycle.js';
11
12
  import { runRunOnMainThreadTask } from './runOnMainThread.js';
13
+ import { mainThreadFlushLoopMark } from './utils/mainThreadFlushLoopGuard.js';
12
14
  import { profile } from './utils/profile.js';
13
15
  import { getFromWorkletRefMap, initWorkletRef } from './workletRef.js';
14
16
  function initWorklet() {
@@ -47,9 +49,19 @@ function registerWorklet(_type, id, worklet) {
47
49
  */
48
50
  function runWorklet(ctx, params, options) {
49
51
  if (!validateWorklet(ctx)) {
50
- console.warn('Worklet: Invalid worklet object: ' + JSON.stringify(ctx));
52
+ console.warn('MainThreadFunction: Invalid function object: ' + JSON.stringify(ctx));
51
53
  return;
52
54
  }
55
+ if (__DEV__) {
56
+ if (options?.source === RunWorkletSource.EVENT && Array.isArray(params)) {
57
+ const first = params[0];
58
+ const t = first.type;
59
+ if (typeof t === 'string') {
60
+ mainThreadFlushLoopMark(`event:${t}`);
61
+ }
62
+ }
63
+ mainThreadFlushLoopMark(`MainThreadFunction id=${String(ctx._wkltId)}`);
64
+ }
53
65
  if ('_lepusWorkletHash' in ctx) {
54
66
  delayExecUntilJsReady(ctx._lepusWorkletHash, params);
55
67
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"workletRuntime.js","sourceRoot":"","sources":["../src/workletRuntime.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEvE,SAAS,WAAW;IAClB,UAAU,CAAC,eAAe,GAAG;QAC3B,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,cAAc,EAAE;QAC1B,yBAAyB,EAAE,wBAAwB,EAAE;QACrD,WAAW,EAAE,UAAU;QACvB,eAAe,EAAE,cAAc,EAAE;QACjC,QAAQ,EAAE,WAAW,EAAE;QACvB,uBAAuB,EAAE,sBAAsB;KAChD,CAAC;IAEF,IAAI,wBAAwB,EAAE,EAAE,CAAC;QAC/B,UAAU,CAAC,eAAe,CAAC,2BAA2B,GAAG,IAAI,0BAA0B,EAAE,CAAC;IAC5F,CAAC;IAED,UAAU,CAAC,eAAe,GAAG,eAAe,CAAC;IAC7C,UAAU,CAAC,uBAAuB,GAAG,eAAe,CAAC;IACrD,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,KAAa,EAAE,EAAU,EAAE,OAAwC;IAC1F,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,GAAY,EAAE,MAA0B,EAAE,OAA2B;IACvF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IACD,IAAI,mBAAmB,IAAI,GAAG,EAAE,CAAC;QAC/B,qBAAqB,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IACD,OAAO,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,GAAY,EAAE,MAA0B,EAAE,OAA2B;IAC3F,MAAM,OAAO,GAAoC,OAAO,CACtD,sBAAsB,GAAG,GAAG,CAAC,OAAO,EACpC,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAClC,CAAC;IACF,MAAM,OAAO,GAAuB,OAAO,CACzC,wBAAwB,EACxB,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,CAAC,CAC5C,CAAC;IAEF,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAEhE,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO;YACL,WAAW,EAAE,MAAM;YACnB,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB;SAC/C,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,GAAY;IACnC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,IAAI,mBAAmB,IAAI,GAAG,CAAC,CAAC;AACrG,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,OAAO,EAAgE,CAAC;AAQjG,SAAS,gBAAgB,CACvB,GAAqB,EACrB,SAAkB;IAElB,sBAAsB;IACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC9B,qBAAqB,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAEvC,IAAI,SAAS,EAAE,CAAC;QACd,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,MAAM,qBAAqB,GAAG,CAC5B,KAAuB,EACvB,KAAa,EACb,GAAY,EACZ,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,KAAK,IAAI,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,sBAAsB;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,KAAyC,CAAC;IAEtD,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,MAAM,GAAqB,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClD,SAAS;QACX,CAAC;QAED,KAAI,oBAAqB,eAAe,IAAI,MAAM,EAAE,CAAC;YACnD,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAgB,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;aAAM,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YACrC,SAAS;QACX,CAAC;QAED,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAE1C,MAAM,YAAY,GAAG,OAAO,IAAK,MAAiB,CAAC;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAC7B,MAA4C,CAC7C,CAAC;YACF,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,IAAI,MAAM,CAAC;QACtC,IAAI,SAAS,EAAE,CAAC;YACd,oGAAoG;YACpG,wEAAwE;YACxE,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,WAAW,CAAE,MAAkB,CAAC,OAAO,CAAE;iBACjE,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;YACvB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC;YACtB,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,IAAI,MAAM,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,SAAS,CAAC,GAAI,GAAe,CAAC,OAAO,CAAC;YAC7C,eAAe,CAAC,2BAA2B,EAAE,MAAM,CAChD,GAAe,CAAC,OAAQ,EACzB,MAAM,CACP,CAAC;YACF,SAAS;QACX,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"workletRuntime.js","sourceRoot":"","sources":["../src/workletRuntime.ts"],"names":[],"mappings":"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"}