react-native-worklets 0.7.4 → 0.8.0-bundle-mode-preview-2
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/.worklets/dummy.md +1 -0
- 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 +1 -1
- 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 +15 -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.d.ts +3 -0
- package/bundleMode/index.js +103 -48
- package/compatibility.json +5 -2
- 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 +14 -43
- 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 +1 -1
- 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 +32 -2
- 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.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/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 +11 -13
- package/plugin/index.d.ts +109 -0
- package/plugin/index.js +60 -13
- 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 +19 -63
- 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 +1 -1
- package/src/platformChecker.ts +3 -2
- package/src/privateGlobals.d.ts +3 -1
- package/src/runtimeKind.ts +47 -0
- package/src/runtimes.native.ts +41 -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.d.ts
CHANGED
package/bundleMode/index.js
CHANGED
|
@@ -1,10 +1,92 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
// @ts-nocheck
|
|
2
3
|
const path = require('path');
|
|
3
4
|
|
|
5
|
+
let getDefaultConfig = () => ({});
|
|
6
|
+
try {
|
|
7
|
+
getDefaultConfig = require('@react-native/metro-config').getDefaultConfig;
|
|
8
|
+
} catch {
|
|
9
|
+
/* empty */
|
|
10
|
+
}
|
|
11
|
+
|
|
4
12
|
const workletsPackageParentDir = path.resolve(__dirname, '../..');
|
|
5
13
|
|
|
6
14
|
const defaults = getDefaultConfig(__dirname);
|
|
7
15
|
|
|
16
|
+
const workletsDirPath = path.join('react-native-worklets', '.worklets');
|
|
17
|
+
|
|
18
|
+
function bundleModeResolveRequest(
|
|
19
|
+
/** @type {any} */ context,
|
|
20
|
+
/** @type {string} */ moduleName,
|
|
21
|
+
/** @type {any} */ platform
|
|
22
|
+
) {
|
|
23
|
+
if (moduleName.startsWith(workletsDirPath)) {
|
|
24
|
+
const fullModuleName = path.join(workletsPackageParentDir, moduleName);
|
|
25
|
+
return { type: 'sourceFile', filePath: fullModuleName };
|
|
26
|
+
}
|
|
27
|
+
return context.resolveRequest(context, moduleName, platform);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Use in React Native Community projects. */
|
|
31
|
+
const bundleModeMetroConfig = {
|
|
32
|
+
serializer: {
|
|
33
|
+
getModulesRunBeforeMainModule(/** @type {string} dirname */ dirname) {
|
|
34
|
+
return [
|
|
35
|
+
...getEntryPoints(),
|
|
36
|
+
...(defaults?.serializer?.getModulesRunBeforeMainModule?.(dirname) ||
|
|
37
|
+
[]),
|
|
38
|
+
];
|
|
39
|
+
},
|
|
40
|
+
createModuleIdFactory: bundleModeCreateModuleIdFactory,
|
|
41
|
+
},
|
|
42
|
+
resolver: {
|
|
43
|
+
resolveRequest: (
|
|
44
|
+
/** @type {any} */ context,
|
|
45
|
+
/** @type {string} */ moduleName,
|
|
46
|
+
/** @type {any} */ platform
|
|
47
|
+
) => {
|
|
48
|
+
if (moduleName.startsWith(workletsDirPath)) {
|
|
49
|
+
const fullModuleName = path.join(workletsPackageParentDir, moduleName);
|
|
50
|
+
return { type: 'sourceFile', filePath: fullModuleName };
|
|
51
|
+
}
|
|
52
|
+
return context.resolveRequest(context, moduleName, platform);
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/** Use in Expo projects. */
|
|
58
|
+
function getBundleModeMetroConfig(config) {
|
|
59
|
+
const currentGetModulesRunBeforeMainModule =
|
|
60
|
+
config?.serializer?.getModulesRunBeforeMainModule;
|
|
61
|
+
|
|
62
|
+
config.serializer.getModulesRunBeforeMainModule = (
|
|
63
|
+
/** @type {string} dirname */ dirname
|
|
64
|
+
) => [
|
|
65
|
+
...getEntryPoints(),
|
|
66
|
+
...(currentGetModulesRunBeforeMainModule?.(dirname) || []),
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
config.serializer.createModuleIdFactory = bundleModeCreateModuleIdFactory;
|
|
70
|
+
|
|
71
|
+
config.resolver.resolveRequest = bundleModeResolveRequest;
|
|
72
|
+
|
|
73
|
+
const currentGetTransformOptions = config?.transformer?.getTransformOptions;
|
|
74
|
+
config.transformer.getTransformOptions = async () => {
|
|
75
|
+
const options = currentGetTransformOptions
|
|
76
|
+
? await currentGetTransformOptions()
|
|
77
|
+
: {};
|
|
78
|
+
return {
|
|
79
|
+
...options,
|
|
80
|
+
transform: {
|
|
81
|
+
...options.transform,
|
|
82
|
+
inlineRequires: true,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
return config;
|
|
88
|
+
}
|
|
89
|
+
|
|
8
90
|
function getEntryPoints() {
|
|
9
91
|
const entryPoints = [];
|
|
10
92
|
try {
|
|
@@ -28,52 +110,25 @@ function getEntryPoints() {
|
|
|
28
110
|
return entryPoints;
|
|
29
111
|
}
|
|
30
112
|
|
|
113
|
+
function bundleModeCreateModuleIdFactory() {
|
|
114
|
+
let nextId = 0;
|
|
115
|
+
const idFileMap = new Map();
|
|
116
|
+
return (/** @type {string} */ moduleName) => {
|
|
117
|
+
if (idFileMap.has(moduleName)) {
|
|
118
|
+
return idFileMap.get(moduleName);
|
|
119
|
+
}
|
|
120
|
+
if (moduleName.includes(workletsDirPath)) {
|
|
121
|
+
const base = path.basename(moduleName, '.js');
|
|
122
|
+
const id = Number(base);
|
|
123
|
+
idFileMap.set(moduleName, id);
|
|
124
|
+
return id;
|
|
125
|
+
}
|
|
126
|
+
idFileMap.set(moduleName, nextId++);
|
|
127
|
+
return idFileMap.get(moduleName);
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
31
131
|
module.exports = {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
getModulesRunBeforeMainModule(/** @type {string} dirname */ dirname) {
|
|
35
|
-
return [
|
|
36
|
-
...getEntryPoints(),
|
|
37
|
-
...defaults.serializer.getModulesRunBeforeMainModule(dirname),
|
|
38
|
-
];
|
|
39
|
-
},
|
|
40
|
-
createModuleIdFactory() {
|
|
41
|
-
let nextId = 0;
|
|
42
|
-
const idFileMap = new Map();
|
|
43
|
-
return (/** @type {string} */ moduleName) => {
|
|
44
|
-
if (idFileMap.has(moduleName)) {
|
|
45
|
-
return idFileMap.get(moduleName);
|
|
46
|
-
}
|
|
47
|
-
if (
|
|
48
|
-
moduleName.includes('react-native-worklets/__generatedWorklets/')
|
|
49
|
-
) {
|
|
50
|
-
const base = path.basename(moduleName, '.js');
|
|
51
|
-
const id = Number(base);
|
|
52
|
-
idFileMap.set(moduleName, id);
|
|
53
|
-
return id;
|
|
54
|
-
}
|
|
55
|
-
idFileMap.set(moduleName, nextId++);
|
|
56
|
-
return idFileMap.get(moduleName);
|
|
57
|
-
};
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
resolver: {
|
|
61
|
-
resolveRequest: (
|
|
62
|
-
/** @type {any} */ context,
|
|
63
|
-
/** @type {string} */ moduleName,
|
|
64
|
-
/** @type {any} */ platform
|
|
65
|
-
) => {
|
|
66
|
-
if (
|
|
67
|
-
moduleName.startsWith('react-native-worklets/__generatedWorklets/')
|
|
68
|
-
) {
|
|
69
|
-
const fullModuleName = path.join(
|
|
70
|
-
workletsPackageParentDir,
|
|
71
|
-
moduleName
|
|
72
|
-
);
|
|
73
|
-
return { type: 'sourceFile', filePath: fullModuleName };
|
|
74
|
-
}
|
|
75
|
-
return context.resolveRequest(context, moduleName, platform);
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
},
|
|
132
|
+
getBundleModeMetroConfig,
|
|
133
|
+
bundleModeMetroConfig,
|
|
79
134
|
};
|
package/compatibility.json
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
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
4
|
},
|
|
5
|
-
"0.
|
|
5
|
+
"0.8.x": {
|
|
6
6
|
"react-native": ["0.79", "0.80", "0.81", "0.82", "0.83", "0.84"]
|
|
7
7
|
},
|
|
8
|
+
"0.7.x": {
|
|
9
|
+
"react-native": ["0.79", "0.80", "0.81", "0.82", "0.83"]
|
|
10
|
+
},
|
|
8
11
|
"0.6.x": {
|
|
9
12
|
"react-native": ["0.78", "0.79", "0.80", "0.81", "0.82"]
|
|
10
13
|
},
|
|
@@ -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-2';
|
|
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":[]}
|