react-native-worklets 0.0.1-alpha → 0.1.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/Common/cpp/worklets/AnimationFrameQueue/AnimationFrameBatchinator.cpp +71 -0
- package/Common/cpp/worklets/AnimationFrameQueue/AnimationFrameBatchinator.h +38 -0
- package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +131 -0
- package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +82 -0
- package/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.cpp +72 -0
- package/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.h +44 -0
- package/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +94 -0
- package/Common/cpp/worklets/Registries/EventHandlerRegistry.h +49 -0
- package/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +8 -0
- package/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +39 -0
- package/Common/cpp/worklets/SharedItems/Shareables.cpp +326 -0
- package/Common/cpp/worklets/SharedItems/Shareables.h +345 -0
- package/Common/cpp/worklets/Tools/AsyncQueue.cpp +52 -0
- package/Common/cpp/worklets/Tools/AsyncQueue.h +35 -0
- package/Common/cpp/worklets/Tools/Defs.h +10 -0
- package/Common/cpp/worklets/Tools/JSISerializer.cpp +342 -0
- package/Common/cpp/worklets/Tools/JSISerializer.h +47 -0
- package/Common/cpp/worklets/Tools/JSLogger.cpp +16 -0
- package/Common/cpp/worklets/Tools/JSLogger.h +20 -0
- package/Common/cpp/worklets/Tools/JSScheduler.cpp +10 -0
- package/Common/cpp/worklets/Tools/JSScheduler.h +29 -0
- package/Common/cpp/worklets/Tools/PlatformLogger.h +16 -0
- package/Common/cpp/worklets/Tools/SingleInstanceChecker.h +72 -0
- package/Common/cpp/worklets/Tools/ThreadSafeQueue.h +49 -0
- package/Common/cpp/worklets/Tools/UIScheduler.cpp +19 -0
- package/Common/cpp/worklets/Tools/UIScheduler.h +22 -0
- package/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +29 -0
- package/Common/cpp/worklets/Tools/WorkletEventHandler.h +41 -0
- package/Common/cpp/worklets/Tools/WorkletsJSIUtils.cpp +26 -0
- package/Common/cpp/worklets/Tools/WorkletsJSIUtils.h +199 -0
- package/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +20 -0
- package/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +19 -0
- package/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +191 -0
- package/Common/cpp/worklets/WorkletRuntime/UIRuntimeDecorator.cpp +19 -0
- package/Common/cpp/worklets/WorkletRuntime/UIRuntimeDecorator.h +16 -0
- package/Common/cpp/worklets/WorkletRuntime/WorkletHermesRuntime.cpp +108 -0
- package/Common/cpp/worklets/WorkletRuntime/WorkletHermesRuntime.h +127 -0
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +183 -0
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +90 -0
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +36 -0
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +179 -0
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +22 -0
- package/LICENSE +20 -0
- package/README.md +27 -0
- package/RNWorklets.podspec +70 -0
- package/android/CMakeLists.txt +56 -0
- package/android/build.gradle +313 -0
- package/android/gradle.properties +5 -0
- package/android/proguard-rules.pro +3 -0
- package/android/spotless.gradle +9 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/cpp/worklets/CMakeLists.txt +85 -0
- package/android/src/main/cpp/worklets/android/AndroidUIScheduler.cpp +63 -0
- package/android/src/main/cpp/worklets/android/AndroidUIScheduler.h +41 -0
- package/android/src/main/cpp/worklets/android/AnimationFrameCallback.h +32 -0
- package/android/src/main/cpp/worklets/android/PlatformLogger.cpp +29 -0
- package/android/src/main/cpp/worklets/android/WorkletsModule.cpp +83 -0
- package/android/src/main/cpp/worklets/android/WorkletsModule.h +63 -0
- package/android/src/main/cpp/worklets/android/WorkletsOnLoad.cpp +13 -0
- package/android/src/main/java/com/swmansion/worklets/AndroidUIScheduler.java +60 -0
- package/android/src/main/java/com/swmansion/worklets/AnimationFrameQueue/AnimationFrameCallback.java +20 -0
- package/android/src/main/java/com/swmansion/worklets/AnimationFrameQueue/AnimationFrameQueue.java +113 -0
- package/android/src/main/java/com/swmansion/worklets/JSCallInvokerResolver.java +27 -0
- package/android/src/main/java/com/swmansion/worklets/WorkletsMessageQueueThread.java +16 -0
- package/android/src/main/java/com/swmansion/worklets/WorkletsMessageQueueThreadBase.java +72 -0
- package/android/src/main/java/com/swmansion/worklets/WorkletsModule.java +106 -0
- package/android/src/main/java/com/swmansion/worklets/WorkletsPackage.java +49 -0
- package/android/src/paper/com/swmansion/worklets/NativeWorkletsModuleSpec.java +26 -0
- package/apple/worklets/apple/AnimationFrameQueue.h +15 -0
- package/apple/worklets/apple/AnimationFrameQueue.mm +81 -0
- package/apple/worklets/apple/AssertJavaScriptQueue.h +14 -0
- package/apple/worklets/apple/AssertTurboModuleManagerQueue.h +16 -0
- package/apple/worklets/apple/IOSUIScheduler.h +14 -0
- package/apple/worklets/apple/IOSUIScheduler.mm +24 -0
- package/apple/worklets/apple/PlatformLogger.mm +31 -0
- package/apple/worklets/apple/SlowAnimations.h +8 -0
- package/apple/worklets/apple/SlowAnimations.mm +47 -0
- package/apple/worklets/apple/WorkletsDisplayLink.h +21 -0
- package/apple/worklets/apple/WorkletsMessageThread.h +16 -0
- package/apple/worklets/apple/WorkletsMessageThread.mm +32 -0
- package/apple/worklets/apple/WorkletsModule.h +10 -0
- package/apple/worklets/apple/WorkletsModule.mm +85 -0
- package/lib/module/PlatformChecker.js +35 -0
- package/lib/module/PlatformChecker.js.map +1 -0
- package/lib/module/WorkletsError.js +13 -0
- package/lib/module/WorkletsError.js.map +1 -0
- package/lib/module/WorkletsModule/JSWorklets.js +36 -0
- package/lib/module/WorkletsModule/JSWorklets.js.map +1 -0
- package/lib/module/WorkletsModule/NativeWorklets.js +39 -0
- package/lib/module/WorkletsModule/NativeWorklets.js.map +1 -0
- package/lib/module/WorkletsModule/index.js +4 -0
- package/lib/module/WorkletsModule/index.js.map +1 -0
- package/lib/module/WorkletsModule/workletsModuleInstance.js +7 -0
- package/lib/module/WorkletsModule/workletsModuleInstance.js.map +1 -0
- package/lib/module/WorkletsModule/workletsModuleInstance.web.js +5 -0
- package/lib/module/WorkletsModule/workletsModuleInstance.web.js.map +1 -0
- package/lib/module/WorkletsModule/workletsModuleProxy.js +4 -0
- package/lib/module/WorkletsModule/workletsModuleProxy.js.map +1 -0
- package/lib/module/animationFrameQueue/mockedRequestAnimationFrame.js +10 -0
- package/lib/module/animationFrameQueue/mockedRequestAnimationFrame.js.map +1 -0
- package/lib/module/animationFrameQueue/requestAnimationFrame.js +36 -0
- package/lib/module/animationFrameQueue/requestAnimationFrame.js.map +1 -0
- package/lib/module/errors.js +78 -0
- package/lib/module/errors.js.map +1 -0
- package/lib/module/index.js +17 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/initializers.js +158 -0
- package/lib/module/initializers.js.map +1 -0
- package/lib/module/logger/LogBox.js +15 -0
- package/lib/module/logger/LogBox.js.map +1 -0
- package/lib/module/logger/index.js +5 -0
- package/lib/module/logger/index.js.map +1 -0
- package/lib/module/logger/logger.js +137 -0
- package/lib/module/logger/logger.js.map +1 -0
- package/lib/module/privateGlobals.d.js +8 -0
- package/lib/module/privateGlobals.d.js.map +1 -0
- package/lib/module/runtimes.js +63 -0
- package/lib/module/runtimes.js.map +1 -0
- package/lib/module/shareableMappingCache.js +39 -0
- package/lib/module/shareableMappingCache.js.map +1 -0
- package/lib/module/shareables.js +417 -0
- package/lib/module/shareables.js.map +1 -0
- package/lib/module/specs/NativeWorkletsModule.js +5 -0
- package/lib/module/specs/NativeWorkletsModule.js.map +1 -0
- package/lib/module/specs/index.js +5 -0
- package/lib/module/specs/index.js.map +1 -0
- package/lib/module/threads.js +204 -0
- package/lib/module/threads.js.map +1 -0
- package/lib/module/valueUnpacker.js +83 -0
- package/lib/module/valueUnpacker.js.map +1 -0
- package/lib/module/workletFunction.js +37 -0
- package/lib/module/workletFunction.js.map +1 -0
- package/lib/module/workletTypes.js +12 -0
- package/lib/module/workletTypes.js.map +1 -0
- package/lib/typescript/PlatformChecker.d.ts +7 -0
- package/lib/typescript/PlatformChecker.d.ts.map +1 -0
- package/lib/typescript/WorkletsError.d.ts +3 -0
- package/lib/typescript/WorkletsError.d.ts.map +1 -0
- package/lib/typescript/WorkletsModule/JSWorklets.d.ts +3 -0
- package/lib/typescript/WorkletsModule/JSWorklets.d.ts.map +1 -0
- package/lib/typescript/WorkletsModule/NativeWorklets.d.ts +5 -0
- package/lib/typescript/WorkletsModule/NativeWorklets.d.ts.map +1 -0
- package/lib/typescript/WorkletsModule/index.d.ts +3 -0
- package/lib/typescript/WorkletsModule/index.d.ts.map +1 -0
- package/lib/typescript/WorkletsModule/workletsModuleInstance.d.ts +2 -0
- package/lib/typescript/WorkletsModule/workletsModuleInstance.d.ts.map +1 -0
- package/lib/typescript/WorkletsModule/workletsModuleInstance.web.d.ts +2 -0
- package/lib/typescript/WorkletsModule/workletsModuleInstance.web.d.ts.map +1 -0
- package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts +12 -0
- package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts.map +1 -0
- package/lib/typescript/animationFrameQueue/mockedRequestAnimationFrame.d.ts +6 -0
- package/lib/typescript/animationFrameQueue/mockedRequestAnimationFrame.d.ts.map +1 -0
- package/lib/typescript/animationFrameQueue/requestAnimationFrame.d.ts +2 -0
- package/lib/typescript/animationFrameQueue/requestAnimationFrame.d.ts.map +1 -0
- package/lib/typescript/errors.d.ts +19 -0
- package/lib/typescript/errors.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +13 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/initializers.d.ts +6 -0
- package/lib/typescript/initializers.d.ts.map +1 -0
- package/lib/typescript/logger/LogBox.d.ts +32 -0
- package/lib/typescript/logger/LogBox.d.ts.map +1 -0
- package/lib/typescript/logger/index.d.ts +3 -0
- package/lib/typescript/logger/index.d.ts.map +1 -0
- package/lib/typescript/logger/logger.d.ts +52 -0
- package/lib/typescript/logger/logger.d.ts.map +1 -0
- package/lib/typescript/runtimes.d.ts +16 -0
- package/lib/typescript/runtimes.d.ts.map +1 -0
- package/lib/typescript/shareableMappingCache.d.ts +16 -0
- package/lib/typescript/shareableMappingCache.d.ts.map +1 -0
- package/lib/typescript/shareables.d.ts +15 -0
- package/lib/typescript/shareables.d.ts.map +1 -0
- package/lib/typescript/specs/NativeWorkletsModule.d.ts +7 -0
- package/lib/typescript/specs/NativeWorkletsModule.d.ts.map +1 -0
- package/lib/typescript/specs/index.d.ts +3 -0
- package/lib/typescript/specs/index.d.ts.map +1 -0
- package/lib/typescript/threads.d.ts +49 -0
- package/lib/typescript/threads.d.ts.map +1 -0
- package/lib/typescript/valueUnpacker.d.ts +2 -0
- package/lib/typescript/valueUnpacker.d.ts.map +1 -0
- package/lib/typescript/workletFunction.d.ts +27 -0
- package/lib/typescript/workletFunction.d.ts.map +1 -0
- package/lib/typescript/workletTypes.d.ts +49 -0
- package/lib/typescript/workletTypes.d.ts.map +1 -0
- package/package.json +106 -8
- package/plugin/index.js +3 -0
- package/scripts/worklets_utils.rb +53 -0
- package/src/PlatformChecker.ts +43 -0
- package/src/WorkletsError.ts +13 -0
- package/src/WorkletsModule/JSWorklets.ts +57 -0
- package/src/WorkletsModule/NativeWorklets.ts +68 -0
- package/src/WorkletsModule/index.ts +7 -0
- package/src/WorkletsModule/workletsModuleInstance.ts +9 -0
- package/src/WorkletsModule/workletsModuleInstance.web.ts +5 -0
- package/src/WorkletsModule/workletsModuleProxy.ts +30 -0
- package/src/animationFrameQueue/mockedRequestAnimationFrame.ts +11 -0
- package/src/animationFrameQueue/requestAnimationFrame.ts +41 -0
- package/src/errors.ts +103 -0
- package/src/index.ts +42 -0
- package/src/initializers.ts +175 -0
- package/src/logger/LogBox.ts +55 -0
- package/src/logger/index.ts +3 -0
- package/src/logger/logger.ts +155 -0
- package/src/privateGlobals.d.ts +41 -0
- package/src/runtimes.ts +92 -0
- package/src/shareableMappingCache.ts +44 -0
- package/src/shareables.ts +577 -0
- package/src/specs/NativeWorkletsModule.ts +9 -0
- package/src/specs/index.ts +5 -0
- package/src/threads.ts +275 -0
- package/src/valueUnpacker.ts +110 -0
- package/src/workletFunction.ts +47 -0
- package/src/workletTypes.ts +76 -0
- package/Animated.js +0 -13
- package/AnimatedEvent.js +0 -167
- package/AnimatedImplementation.js +0 -666
- package/CoreAnimated.js +0 -43
- package/Easing.js +0 -236
- package/NativeAnimatedHelper.js +0 -226
- package/SpringConfig.js +0 -79
- package/animations/Animation.js +0 -36
- package/animations/DecayAnimation.js +0 -70
- package/animations/SpringAnimation.js +0 -125
- package/animations/TimingAnimation.js +0 -70
- package/bezier.js +0 -128
- package/createAnimatedComponent.js +0 -188
- package/nodes/AnimatedBlock.js +0 -19
- package/nodes/AnimatedClock.js +0 -76
- package/nodes/AnimatedCond.js +0 -23
- package/nodes/AnimatedDetach.js +0 -15
- package/nodes/AnimatedInterpolation.js +0 -338
- package/nodes/AnimatedNode.js +0 -97
- package/nodes/AnimatedOnChange.js +0 -28
- package/nodes/AnimatedOp.js +0 -17
- package/nodes/AnimatedProps.js +0 -154
- package/nodes/AnimatedSet.js +0 -19
- package/nodes/AnimatedStartClock.js +0 -21
- package/nodes/AnimatedStopClock.js +0 -21
- package/nodes/AnimatedStyle.js +0 -89
- package/nodes/AnimatedTracking.js +0 -36
- package/nodes/AnimatedTransform.js +0 -93
- package/nodes/AnimatedValue.js +0 -271
- package/nodes/AnimatedWithInput.js +0 -21
- package/nodes/SpringNode.js +0 -106
- package/nodes/TimingStep.js +0 -44
- package/utils.js +0 -28
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { Platform } from 'react-native';
|
|
4
|
+
|
|
5
|
+
// This type is necessary since some libraries tend to do a lib check
|
|
6
|
+
// and this file causes type errors on `global` access.
|
|
7
|
+
|
|
8
|
+
export function isJest() {
|
|
9
|
+
return !!process.env.JEST_WORKER_ID;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// `isChromeDebugger` also returns true in Jest environment, so `isJest()` check should always be performed first
|
|
13
|
+
export function isChromeDebugger() {
|
|
14
|
+
return (!global.nativeCallSyncHook || !!global.__REMOTEDEV__) && !global.RN$Bridgeless;
|
|
15
|
+
}
|
|
16
|
+
export function isWeb() {
|
|
17
|
+
return Platform.OS === 'web';
|
|
18
|
+
}
|
|
19
|
+
export function isAndroid() {
|
|
20
|
+
return Platform.OS === 'android';
|
|
21
|
+
}
|
|
22
|
+
function isWindows() {
|
|
23
|
+
return Platform.OS === 'windows';
|
|
24
|
+
}
|
|
25
|
+
export function shouldBeUseWeb() {
|
|
26
|
+
return isJest() || isChromeDebugger() || isWeb() || isWindows();
|
|
27
|
+
}
|
|
28
|
+
export function isWindowAvailable() {
|
|
29
|
+
// the window object is unavailable when building the server portion of a site that uses SSG
|
|
30
|
+
// this function shouldn't be used to conditionally render components
|
|
31
|
+
// https://www.joshwcomeau.com/react/the-perils-of-rehydration/
|
|
32
|
+
// @ts-ignore Fallback if `window` is undefined.
|
|
33
|
+
return typeof window !== 'undefined';
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=PlatformChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","isJest","process","env","JEST_WORKER_ID","isChromeDebugger","global","nativeCallSyncHook","__REMOTEDEV__","RN$Bridgeless","isWeb","OS","isAndroid","isWindows","shouldBeUseWeb","isWindowAvailable","window"],"sourceRoot":"../../src","sources":["PlatformChecker.ts"],"mappings":"AAAA,YAAY;;AACZ,SAASA,QAAQ,QAAQ,cAAc;;AAEvC;AACA;;AAGA,OAAO,SAASC,MAAMA,CAAA,EAAY;EAChC,OAAO,CAAC,CAACC,OAAO,CAACC,GAAG,CAACC,cAAc;AACrC;;AAEA;AACA,OAAO,SAASC,gBAAgBA,CAAA,EAAY;EAC1C,OACE,CAAC,CAAEC,MAAM,CAAiBC,kBAAkB,IAC1C,CAAC,CAAED,MAAM,CAAiBE,aAAa,KACzC,CAAEF,MAAM,CAAiBG,aAAa;AAE1C;AAEA,OAAO,SAASC,KAAKA,CAAA,EAAY;EAC/B,OAAOV,QAAQ,CAACW,EAAE,KAAK,KAAK;AAC9B;AAEA,OAAO,SAASC,SAASA,CAAA,EAAY;EACnC,OAAOZ,QAAQ,CAACW,EAAE,KAAK,SAAS;AAClC;AAEA,SAASE,SAASA,CAAA,EAAY;EAC5B,OAAOb,QAAQ,CAACW,EAAE,KAAK,SAAS;AAClC;AAEA,OAAO,SAASG,cAAcA,CAAA,EAAG;EAC/B,OAAOb,MAAM,CAAC,CAAC,IAAII,gBAAgB,CAAC,CAAC,IAAIK,KAAK,CAAC,CAAC,IAAIG,SAAS,CAAC,CAAC;AACjE;AAEA,OAAO,SAASE,iBAAiBA,CAAA,EAAG;EAClC;EACA;EACA;EACA;EACA,OAAO,OAAOC,MAAM,KAAK,WAAW;AACtC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { createCustomError, registerCustomError } from "./errors.js";
|
|
4
|
+
export const WorkletsError = createCustomError('Worklets');
|
|
5
|
+
|
|
6
|
+
// To capture it in a the registering worklet's closure.
|
|
7
|
+
const WorkletsErrorConstructor = WorkletsError;
|
|
8
|
+
export function registerWorkletsError() {
|
|
9
|
+
'worklet';
|
|
10
|
+
|
|
11
|
+
registerCustomError(WorkletsErrorConstructor, 'Worklets');
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=WorkletsError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createCustomError","registerCustomError","WorkletsError","WorkletsErrorConstructor","registerWorkletsError"],"sourceRoot":"../../src","sources":["WorkletsError.ts"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,iBAAiB,EAAEC,mBAAmB,QAAQ,aAAU;AAEjE,OAAO,MAAMC,aAAa,GAAGF,iBAAiB,CAAC,UAAU,CAAC;;AAE1D;AACA,MAAMG,wBAAwB,GAAGD,aAAa;AAE9C,OAAO,SAASE,qBAAqBA,CAAA,EAAG;EACtC,SAAS;;EACTH,mBAAmB,CAACE,wBAAwB,EAAE,UAAU,CAAC;AAC3D","ignoreList":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* eslint-disable reanimated/use-reanimated-error */
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
import { mockedRequestAnimationFrame } from "../animationFrameQueue/mockedRequestAnimationFrame.js";
|
|
5
|
+
import { isJest } from "../PlatformChecker.js";
|
|
6
|
+
import { WorkletsError } from "../WorkletsError.js";
|
|
7
|
+
export function createJSWorkletsModule() {
|
|
8
|
+
return new JSWorklets();
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// In Node.js environments (like when static rendering with Expo Router)
|
|
12
|
+
// requestAnimationFrame is unavailable, so we use our mock.
|
|
13
|
+
// It also has to be mocked for Jest purposes (see `initializeUIRuntime`).
|
|
14
|
+
const requestAnimationFrameImpl = isJest() || !globalThis.requestAnimationFrame ? mockedRequestAnimationFrame : globalThis.requestAnimationFrame;
|
|
15
|
+
class JSWorklets {
|
|
16
|
+
makeShareableClone() {
|
|
17
|
+
throw new WorkletsError('makeShareableClone should never be called in JSWorklets.');
|
|
18
|
+
}
|
|
19
|
+
scheduleOnUI(worklet) {
|
|
20
|
+
// TODO: `requestAnimationFrame` should be used exclusively in Reanimated
|
|
21
|
+
|
|
22
|
+
// @ts-ignore web implementation has still not been updated after the rewrite,
|
|
23
|
+
// this will be addressed once the web implementation updates are ready
|
|
24
|
+
requestAnimationFrameImpl(worklet);
|
|
25
|
+
}
|
|
26
|
+
executeOnUIRuntimeSync(_shareable) {
|
|
27
|
+
throw new WorkletsError('`executeOnUIRuntimeSync` is not available in JSWorklets.');
|
|
28
|
+
}
|
|
29
|
+
createWorkletRuntime(_name, _initializer) {
|
|
30
|
+
throw new WorkletsError('createWorkletRuntime is not available in JSWorklets.');
|
|
31
|
+
}
|
|
32
|
+
scheduleOnRuntime() {
|
|
33
|
+
throw new WorkletsError('scheduleOnRuntime is not available in JSWorklets.');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=JSWorklets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mockedRequestAnimationFrame","isJest","WorkletsError","createJSWorkletsModule","JSWorklets","requestAnimationFrameImpl","globalThis","requestAnimationFrame","makeShareableClone","scheduleOnUI","worklet","executeOnUIRuntimeSync","_shareable","createWorkletRuntime","_name","_initializer","scheduleOnRuntime"],"sourceRoot":"../../../src","sources":["WorkletsModule/JSWorklets.ts"],"mappings":"AAAA;AACA,YAAY;;AAEZ,SAASA,2BAA2B,QAAQ,uDAAoD;AAChG,SAASC,MAAM,QAAQ,uBAAoB;AAC3C,SAASC,aAAa,QAAQ,qBAAkB;AAIhD,OAAO,SAASC,sBAAsBA,CAAA,EAAoB;EACxD,OAAO,IAAIC,UAAU,CAAC,CAAC;AACzB;;AAEA;AACA;AACA;AACA,MAAMC,yBAAyB,GAC7BJ,MAAM,CAAC,CAAC,IAAI,CAACK,UAAU,CAACC,qBAAqB,GACzCP,2BAA2B,GAC3BM,UAAU,CAACC,qBAAqB;AAEtC,MAAMH,UAAU,CAA4B;EAC1CI,kBAAkBA,CAAA,EAAiC;IACjD,MAAM,IAAIN,aAAa,CACrB,0DACF,CAAC;EACH;EAEAO,YAAYA,CAASC,OAA6B,EAAE;IAClD;;IAEA;IACA;IACAL,yBAAyB,CAACK,OAAO,CAAC;EACpC;EAEAC,sBAAsBA,CAAOC,UAA2B,EAAK;IAC3D,MAAM,IAAIV,aAAa,CACrB,0DACF,CAAC;EACH;EAEAW,oBAAoBA,CAClBC,KAAa,EACbC,YAAsC,EACtB;IAChB,MAAM,IAAIb,aAAa,CACrB,sDACF,CAAC;EACH;EAEAc,iBAAiBA,CAAA,EAAG;IAClB,MAAM,IAAId,aAAa,CACrB,mDACF,CAAC;EACH;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eslint-disable reanimated/use-reanimated-error */
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
import { WorkletsTurboModule } from "../specs/index.js";
|
|
5
|
+
import { getValueUnpackerCode } from "../valueUnpacker.js";
|
|
6
|
+
import { WorkletsError } from "../WorkletsError.js";
|
|
7
|
+
export function createNativeWorkletsModule() {
|
|
8
|
+
return new NativeWorklets();
|
|
9
|
+
}
|
|
10
|
+
class NativeWorklets {
|
|
11
|
+
#workletsModuleProxy;
|
|
12
|
+
constructor() {
|
|
13
|
+
if (global.__workletsModuleProxy === undefined) {
|
|
14
|
+
const valueUnpackerCode = getValueUnpackerCode();
|
|
15
|
+
WorkletsTurboModule?.installTurboModule(valueUnpackerCode);
|
|
16
|
+
}
|
|
17
|
+
if (global.__workletsModuleProxy === undefined) {
|
|
18
|
+
throw new WorkletsError(`Native part of Worklets doesn't seem to be initialized.
|
|
19
|
+
See https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#native-part-of-reanimated-doesnt-seem-to-be-initialized for more details.`);
|
|
20
|
+
}
|
|
21
|
+
this.#workletsModuleProxy = global.__workletsModuleProxy;
|
|
22
|
+
}
|
|
23
|
+
makeShareableClone(value, shouldPersistRemote, nativeStateSource) {
|
|
24
|
+
return this.#workletsModuleProxy.makeShareableClone(value, shouldPersistRemote, nativeStateSource);
|
|
25
|
+
}
|
|
26
|
+
scheduleOnUI(shareable) {
|
|
27
|
+
return this.#workletsModuleProxy.scheduleOnUI(shareable);
|
|
28
|
+
}
|
|
29
|
+
executeOnUIRuntimeSync(shareable) {
|
|
30
|
+
return this.#workletsModuleProxy.executeOnUIRuntimeSync(shareable);
|
|
31
|
+
}
|
|
32
|
+
createWorkletRuntime(name, initializer) {
|
|
33
|
+
return this.#workletsModuleProxy.createWorkletRuntime(name, initializer);
|
|
34
|
+
}
|
|
35
|
+
scheduleOnRuntime(workletRuntime, shareableWorklet) {
|
|
36
|
+
return this.#workletsModuleProxy.scheduleOnRuntime(workletRuntime, shareableWorklet);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=NativeWorklets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WorkletsTurboModule","getValueUnpackerCode","WorkletsError","createNativeWorkletsModule","NativeWorklets","workletsModuleProxy","constructor","global","__workletsModuleProxy","undefined","valueUnpackerCode","installTurboModule","makeShareableClone","value","shouldPersistRemote","nativeStateSource","scheduleOnUI","shareable","executeOnUIRuntimeSync","createWorkletRuntime","name","initializer","scheduleOnRuntime","workletRuntime","shareableWorklet"],"sourceRoot":"../../../src","sources":["WorkletsModule/NativeWorklets.ts"],"mappings":"AAAA;AACA,YAAY;;AAEZ,SAASA,mBAAmB,QAAQ,mBAAU;AAC9C,SAASC,oBAAoB,QAAQ,qBAAkB;AACvD,SAASC,aAAa,QAAQ,qBAAkB;AAMhD,OAAO,SAASC,0BAA0BA,CAAA,EAAoB;EAC5D,OAAO,IAAIC,cAAc,CAAC,CAAC;AAC7B;AAEA,MAAMA,cAAc,CAAC;EACnB,CAACC,mBAAmB;EAEpBC,WAAWA,CAAA,EAAG;IACZ,IAAIC,MAAM,CAACC,qBAAqB,KAAKC,SAAS,EAAE;MAC9C,MAAMC,iBAAiB,GAAGT,oBAAoB,CAAC,CAAC;MAChDD,mBAAmB,EAAEW,kBAAkB,CAACD,iBAAiB,CAAC;IAC5D;IACA,IAAIH,MAAM,CAACC,qBAAqB,KAAKC,SAAS,EAAE;MAC9C,MAAM,IAAIP,aAAa,CACrB;AACR,6JACM,CAAC;IACH;IACA,IAAI,CAAC,CAACG,mBAAmB,GAAGE,MAAM,CAACC,qBAAqB;EAC1D;EAEAI,kBAAkBA,CAChBC,KAAa,EACbC,mBAA4B,EAC5BC,iBAA0B,EAC1B;IACA,OAAO,IAAI,CAAC,CAACV,mBAAmB,CAACO,kBAAkB,CACjDC,KAAK,EACLC,mBAAmB,EACnBC,iBACF,CAAC;EACH;EAEAC,YAAYA,CAASC,SAA+B,EAAE;IACpD,OAAO,IAAI,CAAC,CAACZ,mBAAmB,CAACW,YAAY,CAACC,SAAS,CAAC;EAC1D;EAEAC,sBAAsBA,CACpBD,SAA+B,EACtB;IACT,OAAO,IAAI,CAAC,CAACZ,mBAAmB,CAACa,sBAAsB,CAACD,SAAS,CAAC;EACpE;EAEAE,oBAAoBA,CAACC,IAAY,EAAEC,WAAqC,EAAE;IACxE,OAAO,IAAI,CAAC,CAAChB,mBAAmB,CAACc,oBAAoB,CAACC,IAAI,EAAEC,WAAW,CAAC;EAC1E;EAEAC,iBAAiBA,CACfC,cAA8B,EAC9BC,gBAAiC,EACjC;IACA,OAAO,IAAI,CAAC,CAACnB,mBAAmB,CAACiB,iBAAiB,CAChDC,cAAc,EACdC,gBACF,CAAC;EACH;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WorkletsModule"],"sourceRoot":"../../../src","sources":["WorkletsModule/index.ts"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,cAAc,QAAQ,0BAA0B","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { shouldBeUseWeb } from "../PlatformChecker.js";
|
|
4
|
+
import { createJSWorkletsModule } from "./JSWorklets.js";
|
|
5
|
+
import { createNativeWorkletsModule } from "./NativeWorklets.js";
|
|
6
|
+
export const WorkletsModule = shouldBeUseWeb() ? createJSWorkletsModule() : createNativeWorkletsModule();
|
|
7
|
+
//# sourceMappingURL=workletsModuleInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["shouldBeUseWeb","createJSWorkletsModule","createNativeWorkletsModule","WorkletsModule"],"sourceRoot":"../../../src","sources":["WorkletsModule/workletsModuleInstance.ts"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,cAAc,QAAQ,uBAAoB;AACnD,SAASC,sBAAsB,QAAQ,iBAAc;AACrD,SAASC,0BAA0B,QAAQ,qBAAkB;AAE7D,OAAO,MAAMC,cAAc,GAAGH,cAAc,CAAC,CAAC,GAC1CC,sBAAsB,CAAC,CAAC,GACxBC,0BAA0B,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createJSWorkletsModule","WorkletsModule"],"sourceRoot":"../../../src","sources":["WorkletsModule/workletsModuleInstance.web.ts"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,sBAAsB,QAAQ,iBAAc;AAErD,OAAO,MAAMC,cAAc,GAAGD,sBAAsB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["WorkletsModule/workletsModuleProxy.ts"],"mappings":"AAAA,YAAY;;AAAC","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This is Jest implementation of `requestAnimationFrame` that is required by
|
|
5
|
+
* React Native for test purposes.
|
|
6
|
+
*/
|
|
7
|
+
export function mockedRequestAnimationFrame(callback) {
|
|
8
|
+
return setTimeout(() => callback(performance.now()), 0);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=mockedRequestAnimationFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mockedRequestAnimationFrame","callback","setTimeout","performance","now"],"sourceRoot":"../../../src","sources":["animationFrameQueue/mockedRequestAnimationFrame.ts"],"mappings":"AAAA,YAAY;;AAEZ;AACA;AACA;AACA;AACA,OAAO,SAASA,2BAA2BA,CACzCC,QAAqC,EACN;EAC/B,OAAOC,UAAU,CAAC,MAAMD,QAAQ,CAACE,WAAW,CAACC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzD","ignoreList":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { callMicrotasks } from "../threads.js";
|
|
4
|
+
export function setupRequestAnimationFrame() {
|
|
5
|
+
'worklet';
|
|
6
|
+
|
|
7
|
+
// Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden
|
|
8
|
+
// so we avoid doing requestAnimationFrame batching in Jest environment.
|
|
9
|
+
const nativeRequestAnimationFrame = global.requestAnimationFrame;
|
|
10
|
+
let animationFrameCallbacks = [];
|
|
11
|
+
let flushRequested = false;
|
|
12
|
+
global.__flushAnimationFrame = frameTimestamp => {
|
|
13
|
+
const currentCallbacks = animationFrameCallbacks;
|
|
14
|
+
animationFrameCallbacks = [];
|
|
15
|
+
currentCallbacks.forEach(f => f(frameTimestamp));
|
|
16
|
+
callMicrotasks();
|
|
17
|
+
};
|
|
18
|
+
global.requestAnimationFrame = callback => {
|
|
19
|
+
animationFrameCallbacks.push(callback);
|
|
20
|
+
if (!flushRequested) {
|
|
21
|
+
flushRequested = true;
|
|
22
|
+
nativeRequestAnimationFrame(timestamp => {
|
|
23
|
+
flushRequested = false;
|
|
24
|
+
global.__frameTimestamp = timestamp;
|
|
25
|
+
global.__flushAnimationFrame(timestamp);
|
|
26
|
+
global.__frameTimestamp = undefined;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// Reanimated currently does not support cancelling callbacks requested with
|
|
30
|
+
// requestAnimationFrame. We return -1 as identifier which isn't in line
|
|
31
|
+
// with the spec but it should give users better clue in case they actually
|
|
32
|
+
// attempt to store the value returned from rAF and use it for cancelling.
|
|
33
|
+
return -1;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=requestAnimationFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["callMicrotasks","setupRequestAnimationFrame","nativeRequestAnimationFrame","global","requestAnimationFrame","animationFrameCallbacks","flushRequested","__flushAnimationFrame","frameTimestamp","currentCallbacks","forEach","f","callback","push","timestamp","__frameTimestamp","undefined"],"sourceRoot":"../../../src","sources":["animationFrameQueue/requestAnimationFrame.ts"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,cAAc,QAAQ,eAAY;AAE3C,OAAO,SAASC,0BAA0BA,CAAA,EAAG;EAC3C,SAAS;;EAET;EACA;EACA,MAAMC,2BAA2B,GAAGC,MAAM,CAACC,qBAAqB;EAEhE,IAAIC,uBAA2D,GAAG,EAAE;EACpE,IAAIC,cAAc,GAAG,KAAK;EAE1BH,MAAM,CAACI,qBAAqB,GAAIC,cAAsB,IAAK;IACzD,MAAMC,gBAAgB,GAAGJ,uBAAuB;IAChDA,uBAAuB,GAAG,EAAE;IAC5BI,gBAAgB,CAACC,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAACH,cAAc,CAAC,CAAC;IAClDR,cAAc,CAAC,CAAC;EAClB,CAAC;EAEDG,MAAM,CAACC,qBAAqB,GAC1BQ,QAAqC,IAC1B;IACXP,uBAAuB,CAACQ,IAAI,CAACD,QAAQ,CAAC;IACtC,IAAI,CAACN,cAAc,EAAE;MACnBA,cAAc,GAAG,IAAI;MACrBJ,2BAA2B,CAAEY,SAAS,IAAK;QACzCR,cAAc,GAAG,KAAK;QACtBH,MAAM,CAACY,gBAAgB,GAAGD,SAAS;QACnCX,MAAM,CAACI,qBAAqB,CAACO,SAAS,CAAC;QACvCX,MAAM,CAACY,gBAAgB,GAAGC,SAAS;MACrC,CAAC,CAAC;IACJ;IACA;IACA;IACA;IACA;IACA,OAAO,CAAC,CAAC;EACX,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// signed type
|
|
4
|
+
|
|
5
|
+
export function createCustomError(name) {
|
|
6
|
+
const constructor = function CustomError(message) {
|
|
7
|
+
'worklet';
|
|
8
|
+
|
|
9
|
+
const prefix = `[${name}]`;
|
|
10
|
+
// eslint-disable-next-line reanimated/use-worklets-error
|
|
11
|
+
const errorInstance = new Error(message ? `${prefix} ${message}` : prefix);
|
|
12
|
+
errorInstance.name = `${name}Error`;
|
|
13
|
+
return errorInstance;
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(constructor, 'name', {
|
|
16
|
+
value: `${name}Error`
|
|
17
|
+
});
|
|
18
|
+
return constructor;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Registers custom errors in global scope. Use it only for Worklet runtimes. */
|
|
22
|
+
export function registerCustomError(constructor, name) {
|
|
23
|
+
'worklet';
|
|
24
|
+
|
|
25
|
+
if (!_WORKLET) {
|
|
26
|
+
// eslint-disable-next-line reanimated/use-worklets-error
|
|
27
|
+
throw new Error('[Worklets] registerCustomError() must be called on a Worklet runtime');
|
|
28
|
+
}
|
|
29
|
+
global[`${name}Error`] = constructor;
|
|
30
|
+
}
|
|
31
|
+
const _workletStackDetails = new Map();
|
|
32
|
+
export function registerWorkletStackDetails(hash, stackDetails) {
|
|
33
|
+
_workletStackDetails.set(hash, stackDetails);
|
|
34
|
+
}
|
|
35
|
+
function getBundleOffset(error) {
|
|
36
|
+
const frame = error.stack?.split('\n')?.[0];
|
|
37
|
+
if (frame) {
|
|
38
|
+
const parsedFrame = /@([^@]+):(\d+):(\d+)/.exec(frame);
|
|
39
|
+
if (parsedFrame) {
|
|
40
|
+
const [, file, line, col] = parsedFrame;
|
|
41
|
+
return [file, Number(line), Number(col)];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return ['unknown', 0, 0];
|
|
45
|
+
}
|
|
46
|
+
function processStack(stack) {
|
|
47
|
+
const workletStackEntries = stack.match(/worklet_(\d+):(\d+):(\d+)/g);
|
|
48
|
+
let result = stack;
|
|
49
|
+
workletStackEntries?.forEach(match => {
|
|
50
|
+
const [, hash, origLine, origCol] = match.split(/:|_/).map(Number);
|
|
51
|
+
const errorDetails = _workletStackDetails.get(hash);
|
|
52
|
+
if (!errorDetails) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const [error, lineOffset, colOffset] = errorDetails;
|
|
56
|
+
const [bundleFile, bundleLine, bundleCol] = getBundleOffset(error);
|
|
57
|
+
const line = origLine + bundleLine + lineOffset;
|
|
58
|
+
const col = origCol + bundleCol + colOffset;
|
|
59
|
+
result = result.replace(match, `${bundleFile}:${line}:${col}`);
|
|
60
|
+
});
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
export function reportFatalErrorOnJS({
|
|
64
|
+
message,
|
|
65
|
+
stack,
|
|
66
|
+
moduleName
|
|
67
|
+
}) {
|
|
68
|
+
// eslint-disable-next-line reanimated/use-worklets-error
|
|
69
|
+
const error = new Error();
|
|
70
|
+
error.message = message;
|
|
71
|
+
error.stack = stack ? processStack(stack) : undefined;
|
|
72
|
+
error.name = `${moduleName}Error`;
|
|
73
|
+
// @ts-ignore React Native's ErrorUtils implementation extends the Error type with jsEngine field
|
|
74
|
+
error.jsEngine = moduleName;
|
|
75
|
+
// @ts-ignore the reportFatalError method is an internal method of ErrorUtils not exposed in the type definitions
|
|
76
|
+
global.ErrorUtils.reportFatalError(error);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createCustomError","name","constructor","CustomError","message","prefix","errorInstance","Error","Object","defineProperty","value","registerCustomError","_WORKLET","global","_workletStackDetails","Map","registerWorkletStackDetails","hash","stackDetails","set","getBundleOffset","error","frame","stack","split","parsedFrame","exec","file","line","col","Number","processStack","workletStackEntries","match","result","forEach","origLine","origCol","map","errorDetails","get","lineOffset","colOffset","bundleFile","bundleLine","bundleCol","replace","reportFatalErrorOnJS","moduleName","undefined","jsEngine","ErrorUtils","reportFatalError"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { initializeUIRuntime } from "./initializers.js";
|
|
4
|
+
import { WorkletsModule } from "./WorkletsModule/index.js";
|
|
5
|
+
|
|
6
|
+
// TODO: Specify the initialization pipeline since now there's no
|
|
7
|
+
// universal source of truth for it.
|
|
8
|
+
initializeUIRuntime(WorkletsModule);
|
|
9
|
+
export { createCustomError, registerCustomError } from "./errors.js";
|
|
10
|
+
export { logger, LogLevel, registerLoggerConfig, updateLoggerConfig } from "./logger/index.js";
|
|
11
|
+
export { createWorkletRuntime, runOnRuntime } from "./runtimes.js";
|
|
12
|
+
export { shareableMappingCache } from "./shareableMappingCache.js";
|
|
13
|
+
export { makeShareable, makeShareableCloneOnUIRecursive, makeShareableCloneRecursive } from "./shareables.js";
|
|
14
|
+
export { callMicrotasks, executeOnUIRuntimeSync, runOnJS, runOnUI, runOnUIImmediately } from "./threads.js";
|
|
15
|
+
export { isWorkletFunction } from "./workletFunction.js";
|
|
16
|
+
export { WorkletsModule } from "./WorkletsModule/index.js";
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["initializeUIRuntime","WorkletsModule","createCustomError","registerCustomError","logger","LogLevel","registerLoggerConfig","updateLoggerConfig","createWorkletRuntime","runOnRuntime","shareableMappingCache","makeShareable","makeShareableCloneOnUIRecursive","makeShareableCloneRecursive","callMicrotasks","executeOnUIRuntimeSync","runOnJS","runOnUI","runOnUIImmediately","isWorkletFunction"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,mBAAmB,QAAQ,mBAAgB;AACpD,SAASC,cAAc,QAAQ,2BAAkB;;AAEjD;AACA;AACAD,mBAAmB,CAACC,cAAc,CAAC;AAGnC,SAASC,iBAAiB,EAAEC,mBAAmB,QAAQ,aAAU;AAEjE,SACEC,MAAM,EACNC,QAAQ,EACRC,oBAAoB,EACpBC,kBAAkB,QACb,mBAAU;AACjB,SAASC,oBAAoB,EAAEC,YAAY,QAAQ,eAAY;AAC/D,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SACEC,aAAa,EACbC,+BAA+B,EAC/BC,2BAA2B,QACtB,iBAAc;AACrB,SACEC,cAAc,EACdC,sBAAsB,EACtBC,OAAO,EACPC,OAAO,EACPC,kBAAkB,QACb,cAAW;AAClB,SAASC,iBAAiB,QAAQ,sBAAmB;AAErD,SAASlB,cAAc,QAAQ,2BAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { mockedRequestAnimationFrame } from "./animationFrameQueue/mockedRequestAnimationFrame.js";
|
|
4
|
+
import { setupRequestAnimationFrame } from "./animationFrameQueue/requestAnimationFrame.js";
|
|
5
|
+
import { reportFatalErrorOnJS } from "./errors.js";
|
|
6
|
+
import { DEFAULT_LOGGER_CONFIG, logToLogBoxAndConsole, registerLoggerConfig, replaceLoggerImplementation } from "./logger/index.js";
|
|
7
|
+
import { isChromeDebugger, isJest, isWeb, shouldBeUseWeb } from "./PlatformChecker.js";
|
|
8
|
+
import { executeOnUIRuntimeSync, runOnJS, setupMicrotasks } from "./threads.js";
|
|
9
|
+
import { registerWorkletsError, WorkletsError } from "./WorkletsError.js";
|
|
10
|
+
const IS_JEST = isJest();
|
|
11
|
+
const SHOULD_BE_USE_WEB = shouldBeUseWeb();
|
|
12
|
+
const IS_CHROME_DEBUGGER = isChromeDebugger();
|
|
13
|
+
|
|
14
|
+
// Override the logFunction implementation with the one that adds logs
|
|
15
|
+
// with better stack traces to the LogBox (need to override it after `runOnJS`
|
|
16
|
+
// is defined).
|
|
17
|
+
function overrideLogFunctionImplementation() {
|
|
18
|
+
'worklet';
|
|
19
|
+
|
|
20
|
+
replaceLoggerImplementation(data => {
|
|
21
|
+
'worklet';
|
|
22
|
+
|
|
23
|
+
runOnJS(logToLogBoxAndConsole)(data);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Register logger config and replace the log function implementation in
|
|
28
|
+
// the React runtime global scope
|
|
29
|
+
registerLoggerConfig(DEFAULT_LOGGER_CONFIG);
|
|
30
|
+
overrideLogFunctionImplementation();
|
|
31
|
+
|
|
32
|
+
// this is for web implementation
|
|
33
|
+
if (SHOULD_BE_USE_WEB) {
|
|
34
|
+
global._WORKLET = false;
|
|
35
|
+
global._log = console.log;
|
|
36
|
+
global._getAnimationTimestamp = () => performance.now();
|
|
37
|
+
} else {
|
|
38
|
+
// Register WorkletsError and logger config in the UI runtime global scope.
|
|
39
|
+
// (we are using `executeOnUIRuntimeSync` here to make sure that the changes
|
|
40
|
+
// are applied before any async operations are executed on the UI runtime)
|
|
41
|
+
executeOnUIRuntimeSync(registerWorkletsError)();
|
|
42
|
+
executeOnUIRuntimeSync(registerLoggerConfig)(DEFAULT_LOGGER_CONFIG);
|
|
43
|
+
executeOnUIRuntimeSync(overrideLogFunctionImplementation)();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// callGuard is only used with debug builds
|
|
47
|
+
export function callGuardDEV(fn, ...args) {
|
|
48
|
+
'worklet';
|
|
49
|
+
|
|
50
|
+
try {
|
|
51
|
+
return fn(...args);
|
|
52
|
+
} catch (e) {
|
|
53
|
+
if (global.__ErrorUtils) {
|
|
54
|
+
global.__ErrorUtils.reportFatalError(e);
|
|
55
|
+
} else {
|
|
56
|
+
throw e;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function setupCallGuard() {
|
|
61
|
+
'worklet';
|
|
62
|
+
|
|
63
|
+
global.__callGuardDEV = callGuardDEV;
|
|
64
|
+
global.__ErrorUtils = {
|
|
65
|
+
reportFatalError: error => {
|
|
66
|
+
runOnJS(reportFatalErrorOnJS)({
|
|
67
|
+
message: error.message,
|
|
68
|
+
moduleName: 'Worklets',
|
|
69
|
+
stack: error.stack
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Currently there seems to be a bug in the JSI layer which causes a crash when
|
|
77
|
+
* we try to copy some of the console methods, i.e. `clear` or `dirxml`.
|
|
78
|
+
*
|
|
79
|
+
* The crash happens only in React Native 0.75. It's not reproducible in neither
|
|
80
|
+
* 0.76 nor 0.74. It also happens only in the configuration of a debug app and
|
|
81
|
+
* production bundle.
|
|
82
|
+
*
|
|
83
|
+
* I haven't yet discovered what exactly causes the crash. It's tied to the
|
|
84
|
+
* console methods sometimes being `HostFunction`s. Therefore, as a workaround
|
|
85
|
+
* we don't copy the methods as they are in the original console object, we copy
|
|
86
|
+
* JavaScript wrappers instead.
|
|
87
|
+
*/
|
|
88
|
+
function createMemorySafeCapturableConsole() {
|
|
89
|
+
const consoleCopy = Object.fromEntries(Object.entries(console).map(([methodName, method]) => {
|
|
90
|
+
const methodWrapper = function methodWrapper(...args) {
|
|
91
|
+
return method(...args);
|
|
92
|
+
};
|
|
93
|
+
if (method.name) {
|
|
94
|
+
/**
|
|
95
|
+
* Set the original method name as the wrapper name if available.
|
|
96
|
+
*
|
|
97
|
+
* It might be unnecessary but if we want to fully mimic the console
|
|
98
|
+
* object we should take into the account the fact some code might rely
|
|
99
|
+
* on the method name.
|
|
100
|
+
*/
|
|
101
|
+
Object.defineProperty(methodWrapper, 'name', {
|
|
102
|
+
value: method.name,
|
|
103
|
+
writable: false
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return [methodName, methodWrapper];
|
|
107
|
+
}));
|
|
108
|
+
return consoleCopy;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// We really have to create a copy of console here. Function runOnJS we use on elements inside
|
|
112
|
+
// this object makes it not configurable
|
|
113
|
+
const capturableConsole = createMemorySafeCapturableConsole();
|
|
114
|
+
export function setupConsole() {
|
|
115
|
+
'worklet';
|
|
116
|
+
|
|
117
|
+
if (!IS_CHROME_DEBUGGER) {
|
|
118
|
+
// @ts-ignore TypeScript doesn't like that there are missing methods in console object, but we don't provide all the methods for the UI runtime console version
|
|
119
|
+
global.console = {
|
|
120
|
+
/* eslint-disable @typescript-eslint/unbound-method */
|
|
121
|
+
assert: runOnJS(capturableConsole.assert),
|
|
122
|
+
debug: runOnJS(capturableConsole.debug),
|
|
123
|
+
log: runOnJS(capturableConsole.log),
|
|
124
|
+
warn: runOnJS(capturableConsole.warn),
|
|
125
|
+
error: runOnJS(capturableConsole.error),
|
|
126
|
+
info: runOnJS(capturableConsole.info)
|
|
127
|
+
/* eslint-enable @typescript-eslint/unbound-method */
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export function initializeUIRuntime(WorkletsModule) {
|
|
132
|
+
if (isWeb()) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (!WorkletsModule) {
|
|
136
|
+
throw new WorkletsError('Worklets are trying to initialize the UI runtime without a valid WorkletsModule');
|
|
137
|
+
}
|
|
138
|
+
if (IS_JEST) {
|
|
139
|
+
// requestAnimationFrame react-native jest's setup is incorrect as it polyfills
|
|
140
|
+
// the method directly using setTimeout, therefore the callback doesn't get the
|
|
141
|
+
// expected timestamp as the only argument: https://github.com/facebook/react-native/blob/main/packages/react-native/jest/setup.js#L28
|
|
142
|
+
// We override this setup here to make sure that callbacks get the proper timestamps
|
|
143
|
+
// when executed. For non-jest environments we define requestAnimationFrame in setupRequestAnimationFrame
|
|
144
|
+
// @ts-ignore TypeScript uses Node definition for rAF, setTimeout, etc which returns a Timeout object rather than a number
|
|
145
|
+
globalThis.requestAnimationFrame = mockedRequestAnimationFrame;
|
|
146
|
+
}
|
|
147
|
+
if (!SHOULD_BE_USE_WEB) {
|
|
148
|
+
executeOnUIRuntimeSync(() => {
|
|
149
|
+
'worklet';
|
|
150
|
+
|
|
151
|
+
setupCallGuard();
|
|
152
|
+
setupConsole();
|
|
153
|
+
setupMicrotasks();
|
|
154
|
+
setupRequestAnimationFrame();
|
|
155
|
+
})();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=initializers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mockedRequestAnimationFrame","setupRequestAnimationFrame","reportFatalErrorOnJS","DEFAULT_LOGGER_CONFIG","logToLogBoxAndConsole","registerLoggerConfig","replaceLoggerImplementation","isChromeDebugger","isJest","isWeb","shouldBeUseWeb","executeOnUIRuntimeSync","runOnJS","setupMicrotasks","registerWorkletsError","WorkletsError","IS_JEST","SHOULD_BE_USE_WEB","IS_CHROME_DEBUGGER","overrideLogFunctionImplementation","data","global","_WORKLET","_log","console","log","_getAnimationTimestamp","performance","now","callGuardDEV","fn","args","e","__ErrorUtils","reportFatalError","setupCallGuard","__callGuardDEV","error","message","moduleName","stack","createMemorySafeCapturableConsole","consoleCopy","Object","fromEntries","entries","map","methodName","method","methodWrapper","name","defineProperty","value","writable","capturableConsole","setupConsole","assert","debug","warn","info","initializeUIRuntime","WorkletsModule","globalThis","requestAnimationFrame"],"sourceRoot":"../../src","sources":["initializers.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Copied from: react-native/Libraries/LogBox/Data/LogBoxData.js
|
|
5
|
+
* react-native/Libraries/LogBox/Data/parseLogBoxLog.js
|
|
6
|
+
*/
|
|
7
|
+
import { LogBox as RNLogBox } from 'react-native';
|
|
8
|
+
const LogBox = RNLogBox;
|
|
9
|
+
const noop = () => {
|
|
10
|
+
// do nothing
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// Do nothing when addLogBoxLog is called if LogBox is not available
|
|
14
|
+
export const addLogBoxLog = LogBox?.addLog?.bind(LogBox) ?? noop;
|
|
15
|
+
//# sourceMappingURL=LogBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["LogBox","RNLogBox","noop","addLogBoxLog","addLog","bind"],"sourceRoot":"../../../src","sources":["logger/LogBox.ts"],"mappings":"AAAA,YAAY;;AACZ;AACA;AACA;AACA;AAGA,SAASA,MAAM,IAAIC,QAAQ,QAAQ,cAAc;AAwCjD,MAAMD,MAAM,GAAGC,QAA0B;AAEzC,MAAMC,IAAI,GAAGA,CAAA,KAAM;EACjB;AAAA,CACD;;AAED;AACA,OAAO,MAAMC,YAAY,GAAGH,MAAM,EAAEI,MAAM,EAAEC,IAAI,CAACL,MAAM,CAAC,IAAIE,IAAI","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["logger/index.ts"],"mappings":"AAAA,YAAY;;AACZ,cAAc,aAAU;AACxB,cAAc,aAAU","ignoreList":[]}
|