react-native-worklets 0.7.1 → 0.8.0-bundle-mode-preview-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Common/cpp/worklets/NativeModules/JSIWorkletsModuleProxy.cpp +32 -28
- package/Common/cpp/worklets/NativeModules/JSIWorkletsModuleProxy.h +13 -5
- package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +7 -5
- package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +5 -4
- package/Common/cpp/worklets/Resources/SynchronizableUnpacker.cpp +5 -5
- package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.cpp +42 -19
- package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.h +2 -0
- package/Common/cpp/worklets/Tools/Defs.h +2 -2
- package/Common/cpp/worklets/Tools/ScriptBuffer.h +34 -0
- package/Common/cpp/worklets/WorkletRuntime/RuntimeBindings.h +24 -0
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +11 -6
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +82 -0
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +12 -0
- package/RNWorklets.podspec +16 -14
- package/android/CMakeLists.txt +8 -2
- package/android/build.gradle +92 -56
- package/android/src/main/cpp/worklets/android/JScriptBufferWrapper.cpp +67 -0
- package/android/src/main/cpp/worklets/android/JScriptBufferWrapper.h +48 -0
- package/android/src/main/cpp/worklets/android/JWorkletRuntimeWrapper.cpp +52 -0
- package/android/src/main/cpp/worklets/android/JWorkletRuntimeWrapper.h +43 -0
- package/android/src/main/cpp/worklets/android/WorkletsModule.cpp +115 -19
- package/android/src/main/cpp/worklets/android/WorkletsModule.h +11 -13
- package/android/src/main/cpp/worklets/android/WorkletsOnLoad.cpp +6 -0
- package/android/src/main/java/com/swmansion/worklets/ScriptBufferWrapper.java +88 -0
- package/android/src/networking/com/swmansion/worklets/WorkletRuntimeWrapper.kt +23 -0
- package/android/src/networking/com/swmansion/worklets/WorkletsHeaderUtil.kt +30 -0
- package/android/src/{legacyBundling → networking}/com/swmansion/worklets/WorkletsModule.java +52 -2
- package/android/src/networking/com/swmansion/worklets/WorkletsNetworkEventUtil.kt +268 -0
- package/android/src/networking/com/swmansion/worklets/WorkletsNetworking.kt +1084 -0
- package/android/src/networking/com/swmansion/worklets/WorkletsOkHttpCallUtil.kt +37 -0
- package/android/src/networking/com/swmansion/worklets/WorkletsProgressListener.kt +9 -0
- package/android/src/networking/com/swmansion/worklets/WorkletsProgressRequestBody.kt +98 -0
- package/android/src/networking/com/swmansion/worklets/WorkletsProgressResponseBody.kt +57 -0
- package/android/src/networking/com/swmansion/worklets/WorkletsProgressiveStringDecoder.kt +82 -0
- package/android/src/networking/com/swmansion/worklets/WorkletsRequestBodyUtil.kt +177 -0
- package/android/src/{experimentalBundling → no-networking}/com/swmansion/worklets/WorkletsModule.java +10 -15
- package/apple/worklets/apple/Networking/WorkletsNetworking.h +22 -0
- package/apple/worklets/apple/Networking/WorkletsNetworking.mm +706 -0
- package/apple/worklets/apple/WorkletsModule.mm +56 -17
- package/bundleMode/index.js +2 -6
- package/compatibility.json +4 -1
- package/lib/module/WorkletsModule/NativeWorklets.native.js +8 -2
- package/lib/module/WorkletsModule/NativeWorklets.native.js.map +1 -1
- package/lib/module/bundleMode/metroOverrides.native.js +115 -0
- package/lib/module/bundleMode/metroOverrides.native.js.map +1 -0
- package/lib/module/bundleMode/network.native.js +41 -0
- package/lib/module/bundleMode/network.native.js.map +1 -0
- package/lib/module/debug/jsVersion.js +1 -1
- package/lib/module/debug/jsVersion.js.map +1 -1
- package/lib/module/featureFlags/staticFlags.json +2 -0
- package/lib/module/featureFlags/types.js +3 -1
- package/lib/module/featureFlags/types.js.map +1 -1
- package/lib/module/index.js +4 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/initializers/initializers.native.js +24 -50
- package/lib/module/initializers/initializers.native.js.map +1 -1
- package/lib/module/initializers/workletRuntimeEntry.native.js +3 -3
- package/lib/module/initializers/workletRuntimeEntry.native.js.map +1 -1
- package/lib/module/memory/bundleUnpacker.native.js +2 -2
- package/lib/module/memory/bundleUnpacker.native.js.map +1 -1
- package/lib/module/memory/serializable.native.js +3 -3
- package/lib/module/memory/serializable.native.js.map +1 -1
- package/lib/module/memory/synchronizableUnpacker.native.js +3 -3
- package/lib/module/memory/synchronizableUnpacker.native.js.map +1 -1
- package/lib/module/platformChecker.js +2 -2
- package/lib/module/platformChecker.js.map +1 -1
- package/lib/module/runtimeKind.js +51 -0
- package/lib/module/runtimeKind.js.map +1 -1
- package/lib/module/runtimes.js +3 -0
- package/lib/module/runtimes.js.map +1 -1
- package/lib/module/runtimes.native.js +34 -3
- package/lib/module/runtimes.native.js.map +1 -1
- package/lib/module/threads.native.js +2 -2
- package/lib/module/threads.native.js.map +1 -1
- package/lib/typescript/WorkletsModule/NativeWorklets.native.d.ts.map +1 -1
- package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts +2 -1
- package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts.map +1 -1
- package/lib/typescript/bundleMode/metroOverrides.native.d.ts +28 -0
- package/lib/typescript/bundleMode/metroOverrides.native.d.ts.map +1 -0
- package/lib/typescript/bundleMode/network.native.d.ts +7 -0
- package/lib/typescript/bundleMode/network.native.d.ts.map +1 -0
- package/lib/typescript/debug/jsVersion.d.ts +1 -1
- package/lib/typescript/debug/jsVersion.d.ts.map +1 -1
- package/lib/typescript/featureFlags/types.d.ts +3 -1
- package/lib/typescript/featureFlags/types.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +2 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/initializers/initializers.native.d.ts +1 -0
- package/lib/typescript/initializers/initializers.native.d.ts.map +1 -1
- package/lib/typescript/initializers/workletRuntimeEntry.native.d.ts +1 -1
- package/lib/typescript/memory/bundleUnpacker.native.d.ts.map +1 -1
- package/lib/typescript/memory/synchronizableUnpacker.native.d.ts.map +1 -1
- package/lib/typescript/platformChecker.d.ts.map +1 -1
- package/lib/typescript/runtimeKind.d.ts +31 -0
- package/lib/typescript/runtimeKind.d.ts.map +1 -1
- package/lib/typescript/runtimes.d.ts +1 -0
- package/lib/typescript/runtimes.d.ts.map +1 -1
- package/lib/typescript/runtimes.native.d.ts +20 -2
- package/lib/typescript/runtimes.native.d.ts.map +1 -1
- package/lib/typescript/threads.native.d.ts +1 -1
- package/package.json +17 -6
- package/plugin/index.d.ts +109 -0
- package/plugin/index.js +59 -9
- package/scripts/worklets_utils.rb +21 -5
- package/src/WorkletsModule/NativeWorklets.native.ts +14 -4
- package/src/WorkletsModule/workletsModuleProxy.ts +6 -3
- package/src/bundleMode/metroOverrides.native.ts +151 -0
- package/src/bundleMode/network.native.ts +59 -0
- package/src/debug/jsVersion.ts +1 -1
- package/src/featureFlags/staticFlags.json +2 -0
- package/src/featureFlags/types.ts +3 -1
- package/src/index.ts +10 -1
- package/src/initializers/initializers.native.ts +29 -70
- package/src/initializers/workletRuntimeEntry.native.ts +3 -3
- package/src/memory/bundleUnpacker.native.ts +2 -4
- package/src/memory/serializable.native.ts +3 -3
- package/src/memory/synchronizableUnpacker.native.ts +6 -12
- package/src/platformChecker.ts +3 -2
- package/src/privateGlobals.d.ts +7 -2
- package/src/runtimeKind.ts +47 -0
- package/src/runtimes.native.ts +43 -2
- package/src/runtimes.ts +10 -0
- package/src/threads.native.ts +2 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#import <worklets/NativeModules/JSIWorkletsModuleProxy.h>
|
|
2
2
|
#import <worklets/Tools/Defs.h>
|
|
3
|
+
#import <worklets/Tools/ScriptBuffer.h>
|
|
3
4
|
#import <worklets/Tools/SingleInstanceChecker.h>
|
|
4
5
|
#import <worklets/Tools/WorkletsJSIUtils.h>
|
|
5
6
|
#import <worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h>
|
|
@@ -13,10 +14,12 @@
|
|
|
13
14
|
#import <React/RCTBridge+Private.h>
|
|
14
15
|
#import <React/RCTCallInvoker.h>
|
|
15
16
|
|
|
16
|
-
#if
|
|
17
|
-
|
|
18
|
-
#import <React/
|
|
19
|
-
#
|
|
17
|
+
#if defined(WORKLETS_BUNDLE_MODE_ENABLED) && defined(WORKLETS_FETCH_PREVIEW_ENABLED)
|
|
18
|
+
#import <FBReactNativeSpec/FBReactNativeSpec.h>
|
|
19
|
+
#import <React/RCTNetworking.h>
|
|
20
|
+
#import <ReactCommon/RCTTurboModule.h>
|
|
21
|
+
#import <worklets/apple/Networking/WorkletsNetworking.h>
|
|
22
|
+
#endif // defined(WORKLETS_BUNDLE_MODE_ENABLED) && defined(WORKLETS_FETCH_PREVIEW_ENABLED)
|
|
20
23
|
|
|
21
24
|
using namespace worklets;
|
|
22
25
|
|
|
@@ -27,6 +30,9 @@ using namespace worklets;
|
|
|
27
30
|
@implementation WorkletsModule {
|
|
28
31
|
AnimationFrameQueue *animationFrameQueue_;
|
|
29
32
|
std::shared_ptr<WorkletsModuleProxy> workletsModuleProxy_;
|
|
33
|
+
#if defined(WORKLETS_BUNDLE_MODE_ENABLED) && defined(WORKLETS_FETCH_PREVIEW_ENABLED)
|
|
34
|
+
WorkletsNetworking *workletsNetworking_;
|
|
35
|
+
#endif // defined(WORKLETS_BUNDLE_MODE_ENABLED) && defined(WORKLETS_FETCH_PREVIEW_ENABLED)
|
|
30
36
|
#ifndef NDEBUG
|
|
31
37
|
SingleInstanceChecker<WorkletsModule> singleInstanceChecker_;
|
|
32
38
|
#endif // NDEBUG
|
|
@@ -38,18 +44,17 @@ using namespace worklets;
|
|
|
38
44
|
return workletsModuleProxy_;
|
|
39
45
|
}
|
|
40
46
|
|
|
41
|
-
#if __has_include(<React/RCTBundleProvider.h>)
|
|
42
|
-
// Bundle mode
|
|
43
|
-
@synthesize bundleProvider = bundleProvider_;
|
|
44
|
-
#endif // __has_include(<React/RCTBundleProvider.h>)
|
|
45
|
-
|
|
46
47
|
- (void)checkBridgeless
|
|
47
48
|
{
|
|
48
49
|
auto isBridgeless = ![self.bridge isKindOfClass:[RCTCxxBridge class]];
|
|
49
50
|
react_native_assert(isBridgeless && "[Worklets] react-native-worklets only supports bridgeless mode");
|
|
50
51
|
}
|
|
51
52
|
|
|
53
|
+
@synthesize bundleManager = bundleManager_;
|
|
52
54
|
@synthesize callInvoker = callInvoker_;
|
|
55
|
+
#if defined(WORKLETS_BUNDLE_MODE_ENABLED) && defined(WORKLETS_FETCH_PREVIEW_ENABLED)
|
|
56
|
+
@synthesize moduleRegistry = moduleRegistry_;
|
|
57
|
+
#endif // defined(WORKLETS_BUNDLE_MODE_ENABLED) && defined(WORKLETS_FETCH_PREVIEW_ENABLED)
|
|
53
58
|
|
|
54
59
|
RCT_EXPORT_MODULE(WorkletsModule);
|
|
55
60
|
|
|
@@ -67,11 +72,25 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(installTurboModule)
|
|
|
67
72
|
std::make_shared<WorkletsMessageThread>([NSRunLoop currentRunLoop], ^(NSError *error) { throw error; });
|
|
68
73
|
|
|
69
74
|
std::string sourceURL = "";
|
|
70
|
-
std::shared_ptr<const
|
|
71
|
-
#ifdef
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
std::shared_ptr<const ScriptBuffer> script = nullptr;
|
|
76
|
+
#ifdef WORKLETS_BUNDLE_MODE_ENABLED
|
|
77
|
+
#if defined(WORKLETS_FETCH_PREVIEW_ENABLED)
|
|
78
|
+
id networkingModule = [moduleRegistry_ moduleForClass:RCTNetworking.class];
|
|
79
|
+
workletsNetworking_ = [[WorkletsNetworking alloc] init:networkingModule];
|
|
80
|
+
#endif // defined(WORKLETS_FETCH_PREVIEW_ENABLED)
|
|
81
|
+
NSURL *url = bundleManager_.bundleURL;
|
|
82
|
+
NSData *data = [NSData dataWithContentsOfURL:url];
|
|
83
|
+
if (data) {
|
|
84
|
+
auto str = std::string(reinterpret_cast<const char *>([data bytes]), [data length]);
|
|
85
|
+
auto bigString = std::make_shared<const JSBigStdString>(str);
|
|
86
|
+
script = std::make_shared<const ScriptBuffer>(bigString);
|
|
87
|
+
} else {
|
|
88
|
+
NSString *errorMsg = [NSString stringWithFormat:@"[Worklets] Failed to load worklets bundle from URL: %@", url];
|
|
89
|
+
NSLog(@"%@", errorMsg);
|
|
90
|
+
throw std::runtime_error([errorMsg UTF8String]);
|
|
91
|
+
}
|
|
92
|
+
sourceURL = [[url absoluteString] UTF8String];
|
|
93
|
+
#endif // WORKLETS_BUNDLE_MODE_ENABLED
|
|
75
94
|
|
|
76
95
|
auto jsCallInvoker = callInvoker_.callInvoker;
|
|
77
96
|
auto uiScheduler = std::make_shared<IOSUIScheduler>();
|
|
@@ -114,13 +133,33 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(installTurboModule)
|
|
|
114
133
|
return std::make_shared<facebook::react::NativeWorkletsModuleSpecJSI>(params);
|
|
115
134
|
}
|
|
116
135
|
|
|
117
|
-
- (RuntimeBindings)getRuntimeBindings
|
|
136
|
+
- (std::shared_ptr<RuntimeBindings>)getRuntimeBindings
|
|
118
137
|
{
|
|
119
|
-
return {
|
|
138
|
+
return std::make_shared<RuntimeBindings>(RuntimeBindings{
|
|
120
139
|
.requestAnimationFrame = [animationFrameQueue =
|
|
121
140
|
animationFrameQueue_](std::function<void(const double)> &&callback) -> void {
|
|
122
141
|
[animationFrameQueue requestAnimationFrame:callback];
|
|
123
|
-
}
|
|
142
|
+
}
|
|
143
|
+
#if defined(WORKLETS_BUNDLE_MODE_ENABLED) && defined(WORKLETS_FETCH_PREVIEW_ENABLED)
|
|
144
|
+
,
|
|
145
|
+
.abortRequest =
|
|
146
|
+
[workletsNetworking = workletsNetworking_](jsi::Runtime &rt, const jsi::Value &requestID) {
|
|
147
|
+
[workletsNetworking jsiAbortRequest:requestID.asNumber()];
|
|
148
|
+
return jsi::Value::undefined();
|
|
149
|
+
},
|
|
150
|
+
.clearCookies =
|
|
151
|
+
[workletsNetworking = workletsNetworking_](jsi::Runtime &rt, jsi::Function &&responseSender) {
|
|
152
|
+
[workletsNetworking jsiClearCookies:rt responseSender:(std::move(responseSender))];
|
|
153
|
+
return jsi::Value::undefined();
|
|
154
|
+
},
|
|
155
|
+
.sendRequest =
|
|
156
|
+
[workletsNetworking = workletsNetworking_](
|
|
157
|
+
jsi::Runtime &rt, const jsi::Value &query, jsi::Function &&responseSender) {
|
|
158
|
+
[workletsNetworking jsiSendRequest:rt jquery:query responseSender:(std::move(responseSender))];
|
|
159
|
+
return jsi::Value::undefined();
|
|
160
|
+
}
|
|
161
|
+
#endif // defined(WORKLETS_BUNDLE_MODE_ENABLED) && defined(WORKLETS_FETCH_PREVIEW_ENABLED)
|
|
162
|
+
});
|
|
124
163
|
}
|
|
125
164
|
|
|
126
165
|
@end
|
package/bundleMode/index.js
CHANGED
|
@@ -44,9 +44,7 @@ module.exports = {
|
|
|
44
44
|
if (idFileMap.has(moduleName)) {
|
|
45
45
|
return idFileMap.get(moduleName);
|
|
46
46
|
}
|
|
47
|
-
if (
|
|
48
|
-
moduleName.includes('react-native-worklets/__generatedWorklets/')
|
|
49
|
-
) {
|
|
47
|
+
if (moduleName.includes('react-native-worklets/.worklets/')) {
|
|
50
48
|
const base = path.basename(moduleName, '.js');
|
|
51
49
|
const id = Number(base);
|
|
52
50
|
idFileMap.set(moduleName, id);
|
|
@@ -63,9 +61,7 @@ module.exports = {
|
|
|
63
61
|
/** @type {string} */ moduleName,
|
|
64
62
|
/** @type {any} */ platform
|
|
65
63
|
) => {
|
|
66
|
-
if (
|
|
67
|
-
moduleName.startsWith('react-native-worklets/__generatedWorklets/')
|
|
68
|
-
) {
|
|
64
|
+
if (moduleName.startsWith('react-native-worklets/.worklets/')) {
|
|
69
65
|
const fullModuleName = path.join(
|
|
70
66
|
workletsPackageParentDir,
|
|
71
67
|
moduleName
|
package/compatibility.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"nightly": {
|
|
3
|
-
"react-native": ["0.79", "0.80", "0.81", "0.82"]
|
|
3
|
+
"react-native": ["0.79", "0.80", "0.81", "0.82", "0.83", "0.84"]
|
|
4
|
+
},
|
|
5
|
+
"0.8.x": {
|
|
6
|
+
"react-native": ["0.79", "0.80", "0.81", "0.82", "0.83", "0.84"]
|
|
4
7
|
},
|
|
5
8
|
"0.7.x": {
|
|
6
9
|
"react-native": ["0.79", "0.80", "0.81", "0.82", "0.83"]
|
|
@@ -15,6 +15,9 @@ class NativeWorklets {
|
|
|
15
15
|
globalThis._WORKLETS_VERSION_JS = jsVersion;
|
|
16
16
|
if (global.__workletsModuleProxy === undefined && globalThis.__RUNTIME_KIND === RuntimeKind.ReactNative) {
|
|
17
17
|
WorkletsTurboModule?.installTurboModule();
|
|
18
|
+
if (__DEV__ && globalThis._WORKLETS_BUNDLE_MODE_ENABLED) {
|
|
19
|
+
console.log('[Worklets] Bundle mode initialization: Downloaded the bundle for Worklet Runtimes.');
|
|
20
|
+
}
|
|
18
21
|
}
|
|
19
22
|
if (global.__workletsModuleProxy === undefined) {
|
|
20
23
|
throw new WorkletsError(`Native part of Worklets doesn't seem to be initialized.
|
|
@@ -89,8 +92,8 @@ See https://docs.swmansion.com/react-native-worklets/docs/guides/troubleshooting
|
|
|
89
92
|
scheduleOnUI(serializable) {
|
|
90
93
|
return this.#workletsModuleProxy.scheduleOnUI(serializable);
|
|
91
94
|
}
|
|
92
|
-
|
|
93
|
-
return this.#workletsModuleProxy.
|
|
95
|
+
runOnUISync(worklet) {
|
|
96
|
+
return this.#workletsModuleProxy.runOnUISync(worklet);
|
|
94
97
|
}
|
|
95
98
|
createWorkletRuntime(name, initializer, useDefaultQueue, customQueue, enableEventLoop) {
|
|
96
99
|
return this.#workletsModuleProxy.createWorkletRuntime(name, initializer, useDefaultQueue, customQueue, enableEventLoop);
|
|
@@ -98,6 +101,9 @@ See https://docs.swmansion.com/react-native-worklets/docs/guides/troubleshooting
|
|
|
98
101
|
scheduleOnRuntime(workletRuntime, serializableWorklet) {
|
|
99
102
|
return this.#workletsModuleProxy.scheduleOnRuntime(workletRuntime, serializableWorklet);
|
|
100
103
|
}
|
|
104
|
+
runOnRuntimeSync(workletRuntime, worklet) {
|
|
105
|
+
return this.#workletsModuleProxy.runOnRuntimeSync(workletRuntime, worklet);
|
|
106
|
+
}
|
|
101
107
|
createSynchronizable(value) {
|
|
102
108
|
return this.#workletsModuleProxy.createSynchronizable(value);
|
|
103
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["checkCppVersion","jsVersion","WorkletsError","RuntimeKind","WorkletsTurboModule","NativeWorklets","workletsModuleProxy","serializableUndefined","serializableNull","serializableTrue","serializableFalse","constructor","globalThis","_WORKLETS_VERSION_JS","global","__workletsModuleProxy","undefined","__RUNTIME_KIND","ReactNative","installTurboModule","__DEV__","createSerializableNull","createSerializableUndefined","createSerializableBoolean","createSerializable","value","shouldPersistRemote","nativeStateSource","createSerializableImport","from","to","createSerializableString","str","createSerializableNumber","num","bool","createSerializableBigInt","bigInt","createSerializableTurboModuleLike","props","proto","createSerializableObject","obj","shouldRetainRemote","createSerializableHostObject","createSerializableArray","array","createSerializableMap","keys","values","createSerializableSet","createSerializableInitializer","createSerializableFunction","func","createSerializableWorklet","worklet","createCustomSerializable","data","typeId","registerCustomSerializable","determine","pack","unpack","scheduleOnUI","serializable","
|
|
1
|
+
{"version":3,"names":["checkCppVersion","jsVersion","WorkletsError","RuntimeKind","WorkletsTurboModule","NativeWorklets","workletsModuleProxy","serializableUndefined","serializableNull","serializableTrue","serializableFalse","constructor","globalThis","_WORKLETS_VERSION_JS","global","__workletsModuleProxy","undefined","__RUNTIME_KIND","ReactNative","installTurboModule","__DEV__","_WORKLETS_BUNDLE_MODE_ENABLED","console","log","createSerializableNull","createSerializableUndefined","createSerializableBoolean","createSerializable","value","shouldPersistRemote","nativeStateSource","createSerializableImport","from","to","createSerializableString","str","createSerializableNumber","num","bool","createSerializableBigInt","bigInt","createSerializableTurboModuleLike","props","proto","createSerializableObject","obj","shouldRetainRemote","createSerializableHostObject","createSerializableArray","array","createSerializableMap","keys","values","createSerializableSet","createSerializableInitializer","createSerializableFunction","func","createSerializableWorklet","worklet","createCustomSerializable","data","typeId","registerCustomSerializable","determine","pack","unpack","scheduleOnUI","serializable","runOnUISync","createWorkletRuntime","name","initializer","useDefaultQueue","customQueue","enableEventLoop","scheduleOnRuntime","workletRuntime","serializableWorklet","runOnRuntimeSync","createSynchronizable","synchronizableGetDirty","synchronizableRef","synchronizableGetBlocking","synchronizableSetBlocking","synchronizableLock","synchronizableUnlock","reportFatalErrorOnJS","message","stack","jsEngine","getStaticFeatureFlag","setDynamicFeatureFlag","WorkletsModule"],"sourceRoot":"../../../src","sources":["WorkletsModule/NativeWorklets.native.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { WorkletsError } from '../debug/WorkletsError';
|
|
4
|
+
import { isWorkletRuntime } from '../runtimeKind';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Evaluating HMR updates on Worklet Runtimes leads to verbose warnings which
|
|
8
|
+
* don't affect runtime. This function silences those warnings by providing a
|
|
9
|
+
* dummy Refresh module to the global scope.
|
|
10
|
+
*
|
|
11
|
+
* Use only in dev builds.
|
|
12
|
+
*/
|
|
13
|
+
export function silenceHMRWarnings() {
|
|
14
|
+
assertWorkletRuntime('silenceHMRWarnings');
|
|
15
|
+
const Refresh = new Proxy({}, {
|
|
16
|
+
get() {
|
|
17
|
+
return () => {};
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
globalThis.__r.Refresh = Refresh;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Importing `react-native` on Worklet Runtimes will result in a crash due to
|
|
25
|
+
* the fact that React Native will try to set itself up as on the React Native
|
|
26
|
+
* runtime. To provide better developer experience we override the main React
|
|
27
|
+
* Native module with a proxy that puts an actionable warning.
|
|
28
|
+
*
|
|
29
|
+
* Note that this doesn't affect deep imports.
|
|
30
|
+
*
|
|
31
|
+
* Use only in dev builds.
|
|
32
|
+
*/
|
|
33
|
+
export function disallowRNImports() {
|
|
34
|
+
assertWorkletRuntime('disallowRNImports');
|
|
35
|
+
const modules = require.getModules();
|
|
36
|
+
const ReactNativeModuleId = require.resolveWeak('react-native');
|
|
37
|
+
const moduleFactory = makeModuleFactory(module => {
|
|
38
|
+
module.exports = new Proxy({}, {
|
|
39
|
+
get: function get(_target, prop) {
|
|
40
|
+
globalThis.console.warn(`You tried to import '${String(prop)}' from 'react-native' module on a Worklet Runtime. Using 'react-native' module on a Worklet Runtime is not allowed.`,
|
|
41
|
+
// eslint-disable-next-line reanimated/use-worklets-error
|
|
42
|
+
new Error().stack);
|
|
43
|
+
return {
|
|
44
|
+
get() {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
const mockModule = {
|
|
52
|
+
dependencyMap: [],
|
|
53
|
+
moduleFactory,
|
|
54
|
+
hasError: false,
|
|
55
|
+
importedAll: {},
|
|
56
|
+
importedDefault: {},
|
|
57
|
+
isInitialized: false,
|
|
58
|
+
publicModule: {
|
|
59
|
+
exports: {}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
modules.set(ReactNativeModuleId, mockModule);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* To use code from React Native that obtains TurboModules we need to mock the
|
|
67
|
+
* registry even if the TurboModules aren't actually used.
|
|
68
|
+
*
|
|
69
|
+
* This is needed for example for the XHR setup code that is imported from React
|
|
70
|
+
* Native.
|
|
71
|
+
*/
|
|
72
|
+
export function mockTurboModuleRegistry() {
|
|
73
|
+
const modules = require.getModules();
|
|
74
|
+
const TurboModuleRegistryId = require.resolveWeak('react-native/Libraries/TurboModule/TurboModuleRegistry');
|
|
75
|
+
const TurboModules = new Map();
|
|
76
|
+
TurboModules.set('Networking', {});
|
|
77
|
+
globalThis.TurboModules = TurboModules;
|
|
78
|
+
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
80
|
+
const moduleFactory = makeModuleFactory(module => {
|
|
81
|
+
function get(name) {
|
|
82
|
+
return globalThis.TurboModules.get(name);
|
|
83
|
+
}
|
|
84
|
+
function getEnforcing(name) {
|
|
85
|
+
return globalThis.TurboModules.get(name);
|
|
86
|
+
}
|
|
87
|
+
module.exports.get = get;
|
|
88
|
+
module.exports.getEnforcing = getEnforcing;
|
|
89
|
+
});
|
|
90
|
+
const metroModule = {
|
|
91
|
+
dependencyMap: [],
|
|
92
|
+
factory: moduleFactory,
|
|
93
|
+
hasError: false,
|
|
94
|
+
importedAll: {},
|
|
95
|
+
importedDefault: {},
|
|
96
|
+
isInitialized: false,
|
|
97
|
+
publicModule: {
|
|
98
|
+
exports: {}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
modules.set(TurboModuleRegistryId, metroModule);
|
|
102
|
+
}
|
|
103
|
+
function assertWorkletRuntime(functionName) {
|
|
104
|
+
if (!isWorkletRuntime()) {
|
|
105
|
+
throw new WorkletsError(`${functionName} can be used only on Worklet Runtimes.`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Module factory mimicking the one used by Metro bundler. */
|
|
110
|
+
function makeModuleFactory(moduleImpl) {
|
|
111
|
+
return function (_global, _require, _importDefault, _importAll, module, _exports, _dependencyMap) {
|
|
112
|
+
moduleImpl(module);
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=metroOverrides.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WorkletsError","isWorkletRuntime","silenceHMRWarnings","assertWorkletRuntime","Refresh","Proxy","get","globalThis","__r","disallowRNImports","modules","require","getModules","ReactNativeModuleId","resolveWeak","moduleFactory","makeModuleFactory","module","exports","_target","prop","console","warn","String","Error","stack","undefined","mockModule","dependencyMap","hasError","importedAll","importedDefault","isInitialized","publicModule","set","mockTurboModuleRegistry","TurboModuleRegistryId","TurboModules","Map","name","getEnforcing","metroModule","factory","functionName","moduleImpl","_global","_require","_importDefault","_importAll","_exports","_dependencyMap"],"sourceRoot":"../../../src","sources":["bundleMode/metroOverrides.native.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import { WorkletsError } from '../debug/WorkletsError';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Mocks necessary networking TurboModules on Worklet Runtimes to prevent
|
|
7
|
+
* crashes when code running on Worklet Runtimes tries to use networking APIs.
|
|
8
|
+
* The NetworkingModule itself is injected via C++.
|
|
9
|
+
*/
|
|
10
|
+
export function initializeNetworking() {
|
|
11
|
+
const TurboModules = globalThis.TurboModules;
|
|
12
|
+
TurboModules.set('FileReaderModule', makeMockTurboModule('FileReaderModule'));
|
|
13
|
+
TurboModules.set('PlatformConstants', makeMockTurboModule('PlatformConstants'));
|
|
14
|
+
TurboModules.set('WebSocketModule', makeMockTurboModule('WebSocketModule'));
|
|
15
|
+
TurboModules.set('BlobModule', makeMockTurboModule('BlobModule', ['addNetworkingHandler']));
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* This require statement below is the key part of the implementation here. It
|
|
19
|
+
* pulls all the code that properly sets up XHR on a Runtime, using underlying
|
|
20
|
+
* C++ NetworkingModule. Thanks to that we can have the same JavaScript
|
|
21
|
+
* implementation for fetch on all runtimes in the app and we don't have to
|
|
22
|
+
* write the code ourselves.
|
|
23
|
+
*/
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
25
|
+
require('react-native/Libraries/Core/setUpXHR');
|
|
26
|
+
}
|
|
27
|
+
const noopMethods = ['getConstants'];
|
|
28
|
+
function makeMockTurboModule(name, extraNoopMethods) {
|
|
29
|
+
const proxy = new Proxy({}, {
|
|
30
|
+
get: function get(_target, prop) {
|
|
31
|
+
if ([...noopMethods, ...(extraNoopMethods ?? [])].includes(prop)) {
|
|
32
|
+
return () => {
|
|
33
|
+
return () => {};
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
throw new WorkletsError(`You tried to call method '${String(prop)}' from '${name}' TurboModule on a Worklet Runtime. Using '${name}' TurboModule on a Worklet Runtime is not allowed.`);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return proxy;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=network.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WorkletsError","initializeNetworking","TurboModules","globalThis","set","makeMockTurboModule","require","noopMethods","name","extraNoopMethods","proxy","Proxy","get","_target","prop","includes","String"],"sourceRoot":"../../../src","sources":["bundleMode/network.native.ts"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,aAAa,QAAQ,wBAAwB;;AAEtD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAA,EAAG;EACrC,MAAMC,YAAY,GAAGC,UAAU,CAACD,YAAY;EAE5CA,YAAY,CAACE,GAAG,CAAC,kBAAkB,EAAEC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;EAC7EH,YAAY,CAACE,GAAG,CACd,mBAAmB,EACnBC,mBAAmB,CAAC,mBAAmB,CACzC,CAAC;EACDH,YAAY,CAACE,GAAG,CAAC,iBAAiB,EAAEC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;EAC3EH,YAAY,CAACE,GAAG,CACd,YAAY,EACZC,mBAAmB,CAAC,YAAY,EAAE,CAAC,sBAAsB,CAAC,CAC5D,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE;EACAC,OAAO,CAAC,sCAAsC,CAAC;AACjD;AAEA,MAAMC,WAAW,GAAG,CAAC,cAAc,CAAC;AAEpC,SAASF,mBAAmBA,CAACG,IAAY,EAAEC,gBAA2B,EAAE;EACtE,MAAMC,KAAK,GAAG,IAAIC,KAAK,CACrB,CAAC,CAAC,EACF;IACEC,GAAG,EAAE,SAASA,GAAGA,CAACC,OAAO,EAAEC,IAAI,EAAE;MAC/B,IACE,CAAC,GAAGP,WAAW,EAAE,IAAIE,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAACM,QAAQ,CAACD,IAAc,CAAC,EACtE;QACA,OAAO,MAAM;UACX,OAAO,MAAM,CAAC,CAAC;QACjB,CAAC;MACH;MACA,MAAM,IAAId,aAAa,CACrB,6BAA6BgB,MAAM,CACjCF,IACF,CAAC,WAAWN,IAAI,8CAA8CA,IAAI,oDACpE,CAAC;IACH;EACF,CACF,CAAC;EAED,OAAOE,KAAK;AACd","ignoreList":[]}
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* version used to build the native part of the library in runtime. Remember to
|
|
6
6
|
* keep this in sync with the version declared in `package.json`
|
|
7
7
|
*/
|
|
8
|
-
export const jsVersion = '0.
|
|
8
|
+
export const jsVersion = '0.8.0-bundle-mode-preview-1';
|
|
9
9
|
//# sourceMappingURL=jsVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsVersion"],"sourceRoot":"../../../src","sources":["debug/jsVersion.ts"],"mappings":"AAAA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,SAAS,GAAG,
|
|
1
|
+
{"version":3,"names":["jsVersion"],"sourceRoot":"../../../src","sources":["debug/jsVersion.ts"],"mappings":"AAAA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,SAAS,GAAG,6BAA6B","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DefaultStaticFeatureFlags","RUNTIME_TEST_FLAG","IOS_DYNAMIC_FRAMERATE_ENABLED"],"sourceRoot":"../../../src","sources":["featureFlags/types.ts"],"mappings":"AAAA,YAAY;;AAgBZ;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,yBAAyB,GAAG;EACvCC,iBAAiB,EAAE,KAAK;EACxBC,6BAA6B,EAAE;AACjC,CAAkD","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["DefaultStaticFeatureFlags","RUNTIME_TEST_FLAG","BUNDLE_MODE_ENABLED","FETCH_PREVIEW_ENABLED","IOS_DYNAMIC_FRAMERATE_ENABLED"],"sourceRoot":"../../../src","sources":["featureFlags/types.ts"],"mappings":"AAAA,YAAY;;AAgBZ;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,yBAAyB,GAAG;EACvCC,iBAAiB,EAAE,KAAK;EACxBC,mBAAmB,EAAE,KAAK;EAC1BC,qBAAqB,EAAE,KAAK;EAC5BC,6BAA6B,EAAE;AACjC,CAAkD","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { init } from './initializers/initializers';
|
|
4
4
|
import { bundleModeInit } from './initializers/workletRuntimeEntry';
|
|
5
|
+
|
|
6
|
+
// is-tree-shakable-suppress
|
|
5
7
|
init();
|
|
6
8
|
|
|
7
9
|
// @ts-expect-error We must trick the bundler to include
|
|
@@ -16,8 +18,8 @@ export { isSynchronizable } from './memory/isSynchronizable';
|
|
|
16
18
|
export { createSerializable, isSerializableRef, registerCustomSerializable } from './memory/serializable';
|
|
17
19
|
export { serializableMappingCache } from './memory/serializableMappingCache';
|
|
18
20
|
export { createSynchronizable } from './memory/synchronizable';
|
|
19
|
-
export { getRuntimeKind, RuntimeKind } from './runtimeKind';
|
|
20
|
-
export { createWorkletRuntime, runOnRuntime, scheduleOnRuntime } from './runtimes';
|
|
21
|
+
export { getRuntimeKind, isRNRuntime, isUIRuntime, isWorkerRuntime, isWorkletRuntime, RuntimeKind } from './runtimeKind';
|
|
22
|
+
export { createWorkletRuntime, runOnRuntime, runOnRuntimeSync, scheduleOnRuntime } from './runtimes';
|
|
21
23
|
export { callMicrotasks, executeOnUIRuntimeSync, runOnJS, runOnUI, runOnUIAsync, runOnUISync, scheduleOnRN, scheduleOnUI,
|
|
22
24
|
// eslint-disable-next-line camelcase
|
|
23
25
|
unstable_eventLoopTask } from './threads';
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["init","bundleModeInit","globalThis","_ALWAYS_FALSE","isShareableRef","makeShareable","makeShareableCloneOnUIRecursive","makeShareableCloneRecursive","shareableMappingCache","getDynamicFeatureFlag","getStaticFeatureFlag","setDynamicFeatureFlag","isSynchronizable","createSerializable","isSerializableRef","registerCustomSerializable","serializableMappingCache","createSynchronizable","getRuntimeKind","RuntimeKind","createWorkletRuntime","runOnRuntime","scheduleOnRuntime","callMicrotasks","executeOnUIRuntimeSync","runOnJS","runOnUI","runOnUIAsync","runOnUISync","scheduleOnRN","scheduleOnUI","unstable_eventLoopTask","isWorkletFunction","WorkletsModule"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,IAAI,QAAQ,6BAA6B;AAClD,SAASC,cAAc,QAAQ,oCAAoC;
|
|
1
|
+
{"version":3,"names":["init","bundleModeInit","globalThis","_ALWAYS_FALSE","isShareableRef","makeShareable","makeShareableCloneOnUIRecursive","makeShareableCloneRecursive","shareableMappingCache","getDynamicFeatureFlag","getStaticFeatureFlag","setDynamicFeatureFlag","isSynchronizable","createSerializable","isSerializableRef","registerCustomSerializable","serializableMappingCache","createSynchronizable","getRuntimeKind","isRNRuntime","isUIRuntime","isWorkerRuntime","isWorkletRuntime","RuntimeKind","createWorkletRuntime","runOnRuntime","runOnRuntimeSync","scheduleOnRuntime","callMicrotasks","executeOnUIRuntimeSync","runOnJS","runOnUI","runOnUIAsync","runOnUISync","scheduleOnRN","scheduleOnUI","unstable_eventLoopTask","isWorkletFunction","WorkletsModule"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,IAAI,QAAQ,6BAA6B;AAClD,SAASC,cAAc,QAAQ,oCAAoC;;AAEnE;AACAD,IAAI,CAAC,CAAC;;AAEN;AACA;AACA,IAAIE,UAAU,CAACC,aAAa,EAAE;EAC5B;EACAF,cAAc,CAAC,CAAC;AAClB;AAEA,SACEG,cAAc,EACdC,aAAa,EAEbC,+BAA+B,EAC/BC,2BAA2B,EAC3BC,qBAAqB,QAEhB,cAAc;AACrB,SACEC,qBAAqB,EACrBC,oBAAoB,EACpBC,qBAAqB,QAChB,6BAA6B;AACpC,SAASC,gBAAgB,QAAQ,2BAA2B;AAC5D,SACEC,kBAAkB,EAClBC,iBAAiB,EACjBC,0BAA0B,QACrB,uBAAuB;AAC9B,SAASC,wBAAwB,QAAQ,mCAAmC;AAC5E,SAASC,oBAAoB,QAAQ,yBAAyB;AAO9D,SACEC,cAAc,EACdC,WAAW,EACXC,WAAW,EACXC,eAAe,EACfC,gBAAgB,EAChBC,WAAW,QACN,eAAe;AACtB,SACEC,oBAAoB,EACpBC,YAAY,EACZC,gBAAgB,EAChBC,iBAAiB,QACZ,YAAY;AACnB,SACEC,cAAc,EACdC,sBAAsB,EACtBC,OAAO,EACPC,OAAO,EACPC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,YAAY;AACZ;AACAC,sBAAsB,QACjB,WAAW;AAMlB,SAASC,iBAAiB,QAAQ,mBAAmB;AACrD,SAASC,cAAc,QAAQ,iCAAiC","ignoreList":[]}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
import { disallowRNImports, mockTurboModuleRegistry, silenceHMRWarnings } from '../bundleMode/metroOverrides';
|
|
4
|
+
import { initializeNetworking } from '../bundleMode/network';
|
|
3
5
|
import { setupCallGuard } from '../callGuard';
|
|
4
6
|
import { registerReportFatalRemoteError } from '../debug/errors';
|
|
5
7
|
import { registerWorkletsError, WorkletsError } from '../debug/WorkletsError';
|
|
8
|
+
import { getStaticFeatureFlag } from '../featureFlags/featureFlags';
|
|
6
9
|
import { bundleValueUnpacker } from '../memory/bundleUnpacker';
|
|
7
10
|
import { __installUnpacker as installCustomSerializableUnpacker } from '../memory/customSerializableUnpacker';
|
|
11
|
+
import { makeShareableCloneOnUIRecursive } from '../memory/serializable';
|
|
8
12
|
import { __installUnpacker as installSynchronizableUnpacker } from '../memory/synchronizableUnpacker';
|
|
9
13
|
import { setupSetImmediate } from '../runLoop/common/setImmediatePolyfill';
|
|
10
14
|
import { setupSetInterval } from '../runLoop/common/setIntervalPolyfill';
|
|
@@ -73,6 +77,11 @@ export function setupConsole(boundCapturableConsole) {
|
|
|
73
77
|
info: (...args) => scheduleOnRN(boundCapturableConsole.info, ...args)
|
|
74
78
|
};
|
|
75
79
|
}
|
|
80
|
+
export function setupSerializer() {
|
|
81
|
+
'worklet';
|
|
82
|
+
|
|
83
|
+
globalThis.__serializer = makeShareableCloneOnUIRecursive;
|
|
84
|
+
}
|
|
76
85
|
let initialized = false;
|
|
77
86
|
export function init() {
|
|
78
87
|
if (initialized) {
|
|
@@ -90,7 +99,7 @@ export function init() {
|
|
|
90
99
|
|
|
91
100
|
/** A function that should be run on any kind of runtime. */
|
|
92
101
|
function initializeRuntime() {
|
|
93
|
-
if (globalThis.
|
|
102
|
+
if (globalThis._WORKLETS_BUNDLE_MODE_ENABLED) {
|
|
94
103
|
globalThis.__valueUnpacker = bundleValueUnpacker;
|
|
95
104
|
}
|
|
96
105
|
installSynchronizableUnpacker();
|
|
@@ -112,47 +121,15 @@ function initializeRNRuntime() {
|
|
|
112
121
|
|
|
113
122
|
/** A function that should be run only on Worklet runtimes. */
|
|
114
123
|
function initializeWorkletRuntime() {
|
|
115
|
-
if (globalThis.
|
|
124
|
+
if (globalThis._WORKLETS_BUNDLE_MODE_ENABLED) {
|
|
116
125
|
setupCallGuard();
|
|
117
126
|
if (__DEV__) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
return () => {};
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
globalThis.__r.Refresh = Refresh;
|
|
128
|
-
|
|
129
|
-
/* Gracefully handle unwanted imports from React Native. */
|
|
130
|
-
const modules = require.getModules();
|
|
131
|
-
const ReactNativeModuleId = require.resolveWeak('react-native');
|
|
132
|
-
const factory = function (_global, _require, _importDefault, _importAll, module, _exports, _dependencyMap) {
|
|
133
|
-
module.exports = new Proxy({}, {
|
|
134
|
-
get: function get(_target, prop) {
|
|
135
|
-
globalThis.console.warn(`You tried to import '${String(prop)}' from 'react-native' module on a Worklet Runtime. Using 'react-native' module on a Worklet Runtime is not allowed.`);
|
|
136
|
-
return {
|
|
137
|
-
get() {
|
|
138
|
-
return undefined;
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
};
|
|
144
|
-
const mod = {
|
|
145
|
-
dependencyMap: [],
|
|
146
|
-
factory,
|
|
147
|
-
hasError: false,
|
|
148
|
-
importedAll: {},
|
|
149
|
-
importedDefault: {},
|
|
150
|
-
isInitialized: false,
|
|
151
|
-
publicModule: {
|
|
152
|
-
exports: {}
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
modules.set(ReactNativeModuleId, mod);
|
|
127
|
+
silenceHMRWarnings();
|
|
128
|
+
disallowRNImports();
|
|
129
|
+
}
|
|
130
|
+
if (getStaticFeatureFlag('FETCH_PREVIEW_ENABLED')) {
|
|
131
|
+
mockTurboModuleRegistry();
|
|
132
|
+
initializeNetworking();
|
|
156
133
|
}
|
|
157
134
|
}
|
|
158
135
|
}
|
|
@@ -165,20 +142,17 @@ function installRNBindingsOnUIRuntime() {
|
|
|
165
142
|
if (!WorkletsModule) {
|
|
166
143
|
throw new WorkletsError('Worklets are trying to initialize the UI runtime without a valid WorkletsModule');
|
|
167
144
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
/** In bundle mode Runtimes setup their callGuard themselves. */
|
|
145
|
+
if (!globalThis._WORKLETS_BUNDLE_MODE_ENABLED) {
|
|
146
|
+
/** In Bundle Mode Runtimes setup their callGuard themselves. */
|
|
171
147
|
runOnUISync(setupCallGuard);
|
|
172
148
|
|
|
173
|
-
/**
|
|
174
|
-
* Register WorkletsError in the UI runtime global scope. (we are using
|
|
175
|
-
* `executeOnUIRuntimeSync` here to make sure that the changes are applied
|
|
176
|
-
* before any async operations are executed on the UI runtime).
|
|
177
|
-
*
|
|
178
|
-
* There's no need to register the error in bundle mode.
|
|
179
|
-
*/
|
|
149
|
+
/** In Bundle Mode the error is taken from the bundle. */
|
|
180
150
|
runOnUISync(registerWorkletsError);
|
|
151
|
+
|
|
152
|
+
/** In Bundle Mode the serializer is taken from the bundle. */
|
|
153
|
+
runOnUISync(setupSerializer);
|
|
181
154
|
}
|
|
155
|
+
const runtimeBoundCapturableConsole = getMemorySafeCapturableConsole();
|
|
182
156
|
runOnUISync(() => {
|
|
183
157
|
'worklet';
|
|
184
158
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["setupCallGuard","registerReportFatalRemoteError","registerWorkletsError","WorkletsError","bundleValueUnpacker","__installUnpacker","installCustomSerializableUnpacker","installSynchronizableUnpacker","setupSetImmediate","setupSetInterval","setupRequestAnimationFrame","setupSetTimeout","RuntimeKind","runOnUISync","scheduleOnRN","setupMicrotasks","isWorkletFunction","WorkletsModule","globalThis","__RUNTIME_KIND","undefined","ReactNative","capturableConsole","getMemorySafeCapturableConsole","consoleCopy","Object","fromEntries","entries","console","map","methodName","method","methodWrapper","args","name","defineProperty","value","writable","setupConsole","boundCapturableConsole","assert","debug","log","warn","error","info","initialized","init","initializeRuntime","initializeWorkletRuntime","initializeRNRuntime","installRNBindingsOnUIRuntime","
|
|
1
|
+
{"version":3,"names":["disallowRNImports","mockTurboModuleRegistry","silenceHMRWarnings","initializeNetworking","setupCallGuard","registerReportFatalRemoteError","registerWorkletsError","WorkletsError","getStaticFeatureFlag","bundleValueUnpacker","__installUnpacker","installCustomSerializableUnpacker","makeShareableCloneOnUIRecursive","installSynchronizableUnpacker","setupSetImmediate","setupSetInterval","setupRequestAnimationFrame","setupSetTimeout","RuntimeKind","runOnUISync","scheduleOnRN","setupMicrotasks","isWorkletFunction","WorkletsModule","globalThis","__RUNTIME_KIND","undefined","ReactNative","capturableConsole","getMemorySafeCapturableConsole","consoleCopy","Object","fromEntries","entries","console","map","methodName","method","methodWrapper","args","name","defineProperty","value","writable","setupConsole","boundCapturableConsole","assert","debug","log","warn","error","info","setupSerializer","__serializer","initialized","init","initializeRuntime","initializeWorkletRuntime","initializeRNRuntime","installRNBindingsOnUIRuntime","_WORKLETS_BUNDLE_MODE_ENABLED","__valueUnpacker","__DEV__","testWorklet","runtimeBoundCapturableConsole"],"sourceRoot":"../../../src","sources":["initializers/initializers.native.ts"],"mappings":"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","ignoreList":[]}
|