react-native-worklets 0.12.0-nightly-20260809-d10808bc5 → 0.12.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 +1 -0
- package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.cpp +32 -0
- package/Common/cpp/worklets/RunLoop/EventLoop.cpp +16 -7
- package/Common/cpp/worklets/RunLoop/EventLoop.h +4 -2
- package/Common/cpp/worklets/Tools/WorkletsJSIUtils.h +23 -0
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +15 -11
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +32 -35
- package/android/src/networking/com/swmansion/worklets/WorkletsModule.kt +24 -6
- package/android/src/no-networking/com/swmansion/worklets/WorkletsModule.kt +24 -6
- package/lib/module/debug/jsVersion.js +1 -1
- package/lib/module/debug/jsVersion.js.map +1 -1
- package/lib/module/mock.js +58 -17
- package/lib/module/mock.js.map +1 -1
- package/lib/module/runLoop/uiRuntime/requestAnimationFrame.js +1 -2
- package/lib/module/runLoop/uiRuntime/requestAnimationFrame.js.map +1 -1
- package/lib/module/runLoop/workletRuntime/taskQueue.js +0 -1
- package/lib/module/runLoop/workletRuntime/taskQueue.js.map +1 -1
- package/lib/module/runtimes.native.js +0 -6
- package/lib/module/runtimes.native.js.map +1 -1
- package/lib/typescript/debug/jsVersion.d.ts +1 -1
- package/lib/typescript/debug/jsVersion.d.ts.map +1 -1
- package/lib/typescript/runLoop/uiRuntime/requestAnimationFrame.d.ts.map +1 -1
- package/lib/typescript/runLoop/workletRuntime/taskQueue.d.ts.map +1 -1
- package/lib/typescript/runtimes.native.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/debug/jsVersion.ts +1 -1
- package/src/mock.ts +85 -23
- package/src/runLoop/uiRuntime/requestAnimationFrame.ts +1 -2
- package/src/runLoop/workletRuntime/taskQueue.ts +0 -1
- package/src/runtimes.native.ts +0 -6
|
@@ -9,11 +9,40 @@
|
|
|
9
9
|
#include <thread>
|
|
10
10
|
#include <utility>
|
|
11
11
|
|
|
12
|
+
#if __APPLE__
|
|
13
|
+
extern "C" {
|
|
14
|
+
void *objc_autoreleasePoolPush(void);
|
|
15
|
+
void objc_autoreleasePoolPop(void *pool);
|
|
16
|
+
}
|
|
17
|
+
#endif // __APPLE__
|
|
18
|
+
|
|
12
19
|
namespace worklets {
|
|
13
20
|
|
|
14
21
|
using namespace facebook;
|
|
15
22
|
|
|
23
|
+
#if __APPLE__
|
|
24
|
+
namespace {
|
|
25
|
+
|
|
26
|
+
class ScopedAutoreleasePool {
|
|
27
|
+
public:
|
|
28
|
+
ScopedAutoreleasePool() : pool_(objc_autoreleasePoolPush()) {}
|
|
29
|
+
~ScopedAutoreleasePool() {
|
|
30
|
+
objc_autoreleasePoolPop(pool_);
|
|
31
|
+
}
|
|
32
|
+
ScopedAutoreleasePool(const ScopedAutoreleasePool &) = delete;
|
|
33
|
+
ScopedAutoreleasePool &operator=(const ScopedAutoreleasePool &) = delete;
|
|
34
|
+
|
|
35
|
+
private:
|
|
36
|
+
void *const pool_;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
} // namespace
|
|
40
|
+
#endif // __APPLE__
|
|
41
|
+
|
|
16
42
|
void AsyncQueueImpl::runLoop(const std::shared_ptr<AsyncQueueState> &state) {
|
|
43
|
+
#if __APPLE__
|
|
44
|
+
const ScopedAutoreleasePool threadAutoreleasePool;
|
|
45
|
+
#endif // __APPLE__
|
|
17
46
|
while (state->running) {
|
|
18
47
|
std::unique_lock<std::mutex> lock(state->mutex);
|
|
19
48
|
state->cv.wait(lock, [state] { return !state->queue.empty() || !state->running; });
|
|
@@ -26,6 +55,9 @@ void AsyncQueueImpl::runLoop(const std::shared_ptr<AsyncQueueState> &state) {
|
|
|
26
55
|
auto job = std::move(state->queue.front());
|
|
27
56
|
state->queue.pop();
|
|
28
57
|
lock.unlock();
|
|
58
|
+
#if __APPLE__
|
|
59
|
+
const ScopedAutoreleasePool autoreleasePool;
|
|
60
|
+
#endif // __APPLE__
|
|
29
61
|
job();
|
|
30
62
|
}
|
|
31
63
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#include <worklets/RunLoop/EventLoop.h>
|
|
2
|
+
#include <worklets/Tools/WorkletsJSIUtils.h>
|
|
2
3
|
|
|
3
4
|
#include <memory>
|
|
4
5
|
#include <string>
|
|
@@ -11,8 +12,13 @@ namespace worklets {
|
|
|
11
12
|
EventLoop::EventLoop(
|
|
12
13
|
const std::string &name,
|
|
13
14
|
const std::shared_ptr<jsi::Runtime> &runtime,
|
|
14
|
-
const std::shared_ptr<AsyncQueue> &queue
|
|
15
|
-
|
|
15
|
+
const std::shared_ptr<AsyncQueue> &queue,
|
|
16
|
+
const std::shared_ptr<std::recursive_mutex> &runtimeMutex)
|
|
17
|
+
: runtime_(runtime),
|
|
18
|
+
queue_(queue),
|
|
19
|
+
runtimeMutex_(runtimeMutex),
|
|
20
|
+
timeoutsQueueState_(std::make_shared<TimeoutsQueueState>()),
|
|
21
|
+
name_(name) {}
|
|
16
22
|
|
|
17
23
|
EventLoop::~EventLoop() {
|
|
18
24
|
{
|
|
@@ -76,11 +82,14 @@ void EventLoop::run() {
|
|
|
76
82
|
}
|
|
77
83
|
|
|
78
84
|
void EventLoop::pushTask(std::function<void(jsi::Runtime &rt)> &&job) {
|
|
79
|
-
queue_->push(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
queue_->push(
|
|
86
|
+
[weakRuntime = std::weak_ptr<jsi::Runtime>{runtime_}, runtimeMutex = runtimeMutex_, job = std::move(job)] {
|
|
87
|
+
if (auto runtime = weakRuntime.lock()) {
|
|
88
|
+
std::unique_lock lock(*runtimeMutex);
|
|
89
|
+
job(*runtime);
|
|
90
|
+
jsi_utils::drainMicrotasks(*runtime);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
84
93
|
}
|
|
85
94
|
|
|
86
95
|
void EventLoop::pushTimeout(std::function<void(jsi::Runtime &rt)> &&job, int64_t delay) {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
#include <atomic>
|
|
7
7
|
#include <condition_variable>
|
|
8
8
|
#include <memory>
|
|
9
|
-
#include <
|
|
9
|
+
#include <mutex>
|
|
10
10
|
#include <string>
|
|
11
11
|
#include <vector>
|
|
12
12
|
|
|
@@ -34,7 +34,8 @@ class EventLoop : public std::enable_shared_from_this<EventLoop> {
|
|
|
34
34
|
EventLoop(
|
|
35
35
|
const std::string &name,
|
|
36
36
|
const std::shared_ptr<jsi::Runtime> &runtime,
|
|
37
|
-
const std::shared_ptr<AsyncQueue> &queue
|
|
37
|
+
const std::shared_ptr<AsyncQueue> &queue,
|
|
38
|
+
const std::shared_ptr<std::recursive_mutex> &runtimeMutex);
|
|
38
39
|
~EventLoop();
|
|
39
40
|
void run();
|
|
40
41
|
void pushTask(std::function<void(jsi::Runtime &rt)> &&job);
|
|
@@ -43,6 +44,7 @@ class EventLoop : public std::enable_shared_from_this<EventLoop> {
|
|
|
43
44
|
private:
|
|
44
45
|
const std::shared_ptr<jsi::Runtime> runtime_;
|
|
45
46
|
const std::shared_ptr<AsyncQueue> queue_;
|
|
47
|
+
const std::shared_ptr<std::recursive_mutex> runtimeMutex_;
|
|
46
48
|
const std::shared_ptr<TimeoutsQueueState> timeoutsQueueState_;
|
|
47
49
|
const std::string name_;
|
|
48
50
|
|
|
@@ -11,6 +11,29 @@ using namespace facebook;
|
|
|
11
11
|
|
|
12
12
|
namespace worklets::jsi_utils {
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Drains Hermes microtasks - we don't use these, but Hermes WeakRefs are
|
|
16
|
+
* cleaned during Hermes microtask checkpoint.
|
|
17
|
+
*/
|
|
18
|
+
inline void triggerWeakRefCleanup(jsi::Runtime &rt) {
|
|
19
|
+
rt.drainMicrotasks();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Drains both Worklets and Hermes microtasks.
|
|
24
|
+
*/
|
|
25
|
+
inline void drainMicrotasks(jsi::Runtime &rt) {
|
|
26
|
+
auto callMicrotasks = rt.global().getProperty(rt, "__callMicrotasks");
|
|
27
|
+
if (callMicrotasks.isObject()) {
|
|
28
|
+
auto callMicrotasksObject = callMicrotasks.getObject(rt);
|
|
29
|
+
if (callMicrotasksObject.isFunction(rt)) {
|
|
30
|
+
callMicrotasksObject.getFunction(rt).call(rt);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
triggerWeakRefCleanup(rt);
|
|
35
|
+
}
|
|
36
|
+
|
|
14
37
|
// `get` functions take a pointer to `jsi::Value` and
|
|
15
38
|
// call an appropriate method to cast to the native type
|
|
16
39
|
template <typename T>
|
|
@@ -45,10 +45,10 @@ class LockableRuntime : public jsi::WithRuntimeDecorator<AroundLock> {
|
|
|
45
45
|
runtime_(std::move(runtime)) {}
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
static std::shared_ptr<jsi::Runtime>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
auto hermesRuntime = facebook::hermes::makeHermesRuntime();
|
|
48
|
+
static std::shared_ptr<jsi::Runtime>
|
|
49
|
+
makeRuntime(const std::shared_ptr<std::recursive_mutex> &runtimeMutex, bool enableLocking, bool enableMicrotaskQueue) {
|
|
50
|
+
auto config = ::hermes::vm::RuntimeConfig::Builder().withMicrotaskQueue(enableMicrotaskQueue).build();
|
|
51
|
+
auto hermesRuntime = facebook::hermes::makeHermesRuntime(config);
|
|
52
52
|
std::shared_ptr<jsi::Runtime> jsiRuntime = std::make_shared<WorkletHermesRuntime>(std::move(hermesRuntime));
|
|
53
53
|
if (!enableLocking) {
|
|
54
54
|
return jsiRuntime;
|
|
@@ -66,7 +66,8 @@ WorkletRuntime::WorkletRuntime(
|
|
|
66
66
|
: runtimeId_(runtimeId),
|
|
67
67
|
enableLocking_(enableLocking),
|
|
68
68
|
runtimeMutex_(std::make_shared<std::recursive_mutex>()),
|
|
69
|
-
|
|
69
|
+
microtaskQueueEnabled_(enableEventLoop || runtimeKind == RuntimeData::RuntimeKind::UI),
|
|
70
|
+
runtime_(makeRuntime(runtimeMutex_, enableLocking_, microtaskQueueEnabled_)),
|
|
70
71
|
runtimeKind_(runtimeKind),
|
|
71
72
|
name_(name),
|
|
72
73
|
queue_(queue) {
|
|
@@ -77,7 +78,7 @@ WorkletRuntime::WorkletRuntime(
|
|
|
77
78
|
jsi::Runtime &rt = *runtime_;
|
|
78
79
|
WorkletRuntimeCollector::install(rt);
|
|
79
80
|
if (enableEventLoop) {
|
|
80
|
-
eventLoop_ = std::make_shared<EventLoop>(name_, runtime_, queue_);
|
|
81
|
+
eventLoop_ = std::make_shared<EventLoop>(name_, runtime_, queue_, runtimeMutex_);
|
|
81
82
|
eventLoop_->run();
|
|
82
83
|
}
|
|
83
84
|
}
|
|
@@ -147,13 +148,14 @@ void WorkletRuntime::legacyModeInit(const std::shared_ptr<UnpackerLoader> &unpac
|
|
|
147
148
|
|
|
148
149
|
void WorkletRuntime::schedule(jsi::Function &&function) const {
|
|
149
150
|
scheduleImpl([function = std::make_shared<jsi::Function>(std::move(function))](const WorkletRuntime &workletRuntime) {
|
|
150
|
-
workletRuntime.runSyncImpl(*function);
|
|
151
|
+
workletRuntime.runSyncImpl<MicrotaskCheckpoint::Run>(*function);
|
|
151
152
|
});
|
|
152
153
|
}
|
|
153
154
|
|
|
154
155
|
void WorkletRuntime::schedule(std::shared_ptr<SerializableWorklet> worklet) const {
|
|
155
|
-
scheduleImpl(
|
|
156
|
-
|
|
156
|
+
scheduleImpl([worklet = std::move(worklet)](const WorkletRuntime &workletRuntime) {
|
|
157
|
+
workletRuntime.runSyncImpl<MicrotaskCheckpoint::Run>(worklet);
|
|
158
|
+
});
|
|
157
159
|
}
|
|
158
160
|
|
|
159
161
|
void WorkletRuntime::schedule(std::vector<std::shared_ptr<SerializableWorklet>> worklets) const {
|
|
@@ -173,7 +175,7 @@ void WorkletRuntime::scheduleWithStack(
|
|
|
173
175
|
std::optional<std::string> scheduleStack) const {
|
|
174
176
|
scheduleImpl([worklet = std::move(worklet),
|
|
175
177
|
scheduleStack = std::move(scheduleStack)](const WorkletRuntime &workletRuntime) {
|
|
176
|
-
workletRuntime.runSyncImpl<MicrotaskCheckpoint::
|
|
178
|
+
workletRuntime.runSyncImpl<MicrotaskCheckpoint::Run, jsi::Value, ScheduleStack::Requested>(worklet, scheduleStack);
|
|
177
179
|
});
|
|
178
180
|
}
|
|
179
181
|
|
|
@@ -195,7 +197,9 @@ void WorkletRuntime::scheduleWithStack(
|
|
|
195
197
|
#endif // NDEBUG
|
|
196
198
|
|
|
197
199
|
void WorkletRuntime::schedule(std::function<void(jsi::Runtime &)> job) const {
|
|
198
|
-
scheduleImpl([job = std::move(job)](const WorkletRuntime &workletRuntime) {
|
|
200
|
+
scheduleImpl([job = std::move(job)](const WorkletRuntime &workletRuntime) {
|
|
201
|
+
workletRuntime.runSyncImpl<MicrotaskCheckpoint::Run>(job);
|
|
202
|
+
});
|
|
199
203
|
}
|
|
200
204
|
|
|
201
205
|
void WorkletRuntime::scheduleImpl(ScheduledJob job) const {
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
#include <worklets/Tools/JSLogger.h>
|
|
11
11
|
#include <worklets/Tools/JSScheduler.h>
|
|
12
12
|
#include <worklets/Tools/ScriptBuffer.h>
|
|
13
|
+
#include <worklets/Tools/WorkletsJSIUtils.h>
|
|
13
14
|
#include <worklets/WorkletRuntime/RuntimeBindings.h>
|
|
14
15
|
#include <worklets/WorkletRuntime/RuntimeData.h>
|
|
15
16
|
|
|
@@ -49,7 +50,7 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
49
50
|
/**
|
|
50
51
|
* Schedules a std::function to run asynchronously.
|
|
51
52
|
*
|
|
52
|
-
*
|
|
53
|
+
* Runs a single microtask checkpoint on completion.
|
|
53
54
|
*/
|
|
54
55
|
void schedule(std::function<void(jsi::Runtime &)> job) const;
|
|
55
56
|
|
|
@@ -59,14 +60,14 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
59
60
|
* The jsi::Function has to originate from this runtime, otherwise it will
|
|
60
61
|
crash.
|
|
61
62
|
*
|
|
62
|
-
*
|
|
63
|
+
* Runs a single microtask checkpoint on completion.
|
|
63
64
|
*/
|
|
64
65
|
void schedule(jsi::Function &&function) const;
|
|
65
66
|
|
|
66
67
|
/**
|
|
67
68
|
* Schedules a serialized worklet to run asynchronously.
|
|
68
69
|
*
|
|
69
|
-
*
|
|
70
|
+
* Runs a single microtask checkpoint on completion.
|
|
70
71
|
*/
|
|
71
72
|
void schedule(std::shared_ptr<SerializableWorklet> worklet) const;
|
|
72
73
|
|
|
@@ -81,7 +82,7 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
81
82
|
* Schedules a serialized worklet to run asynchronously on the worklet runtime,
|
|
82
83
|
* remembering the call site that scheduled it for error reporting.
|
|
83
84
|
*
|
|
84
|
-
*
|
|
85
|
+
* Runs a single microtask checkpoint on completion.
|
|
85
86
|
*/
|
|
86
87
|
void scheduleWithStack(std::shared_ptr<SerializableWorklet> worklet, std::optional<std::string> scheduleStack) const;
|
|
87
88
|
|
|
@@ -203,8 +204,6 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
203
204
|
* call site that scheduled it for error reporting.
|
|
204
205
|
*
|
|
205
206
|
* TResult must be either jsi::Value or std::shared_ptr<Serializable>.
|
|
206
|
-
*
|
|
207
|
-
* The runtime lock is held until the microtask checkpoint completes.
|
|
208
207
|
*/
|
|
209
208
|
template <SyncCallResult TResult, RuntimeCallable TCallable, typename... TArgs>
|
|
210
209
|
auto runSyncWithStackAndDrainMicrotasks(
|
|
@@ -307,13 +306,13 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
307
306
|
SyncCallResult TResult = jsi::Value,
|
|
308
307
|
ScheduleStack TScheduleStack = ScheduleStack::NotRequested,
|
|
309
308
|
typename TCallable,
|
|
310
|
-
typename...
|
|
309
|
+
typename... TArgs>
|
|
311
310
|
requires RuntimeJob<TCallable> || RuntimeCallable<TCallable>
|
|
312
|
-
auto runSyncImpl(TCallable &&callable,
|
|
311
|
+
auto runSyncImpl(TCallable &&callable, TArgs &&...args) const -> decltype(auto) {
|
|
313
312
|
jsi::Runtime &rt = getJSIRuntime();
|
|
314
313
|
if constexpr (std::is_same_v<std::remove_cvref_t<TCallable>, std::shared_ptr<SerializableWorklet>>) {
|
|
315
314
|
auto function = callable->toJSValue(rt).getObject(rt).getFunction(rt);
|
|
316
|
-
return runSyncImpl<TCheckpoint, TResult, TScheduleStack>(function, std::forward<
|
|
315
|
+
return runSyncImpl<TCheckpoint, TResult, TScheduleStack>(function, std::forward<TArgs>(args)...);
|
|
317
316
|
} else {
|
|
318
317
|
auto stackPolicyInvocation = [&]<typename TScheduleStackContext, typename... TCallArgs>(
|
|
319
318
|
TScheduleStackContext &&scheduleStackContext,
|
|
@@ -322,7 +321,11 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
322
321
|
if constexpr (RuntimeJob<TCallable>) {
|
|
323
322
|
return std::forward<TCallable>(callable)(rt);
|
|
324
323
|
} else {
|
|
325
|
-
auto result = this->invoke(
|
|
324
|
+
auto result = this->invoke(
|
|
325
|
+
rt,
|
|
326
|
+
callable,
|
|
327
|
+
std::forward<TScheduleStackContext>(scheduleStackContext),
|
|
328
|
+
std::forward<TCallArgs>(callArgs)...);
|
|
326
329
|
if constexpr (std::is_same_v<TResult, std::shared_ptr<Serializable>>) {
|
|
327
330
|
return extractSerializableOrThrow(rt, result);
|
|
328
331
|
} else {
|
|
@@ -331,10 +334,11 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
331
334
|
}
|
|
332
335
|
};
|
|
333
336
|
|
|
334
|
-
return invokeWithMicrotaskCheckpointPolicyImpl<TCheckpoint>(microtaskPolicyInvocation);
|
|
337
|
+
return invokeWithMicrotaskCheckpointPolicyImpl<TCheckpoint>(std::move(microtaskPolicyInvocation));
|
|
335
338
|
};
|
|
336
339
|
|
|
337
|
-
return invokeWithStackPolicyImpl<TScheduleStack, TCallable>(
|
|
340
|
+
return invokeWithStackPolicyImpl<TScheduleStack, TCallable>(
|
|
341
|
+
std::move(stackPolicyInvocation), std::forward<TArgs>(args)...);
|
|
338
342
|
}
|
|
339
343
|
}
|
|
340
344
|
|
|
@@ -353,7 +357,8 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
353
357
|
std::is_same_v<std::remove_cvref_t<TScheduleStackArg>, std::optional<std::string>>,
|
|
354
358
|
"[Worklets] The first argument must be an optional scheduling stack.");
|
|
355
359
|
return std::forward<TInvoker>(invoke)(
|
|
356
|
-
RequestedScheduleStack{
|
|
360
|
+
RequestedScheduleStack{std::forward<TScheduleStackArg>(scheduleStack)},
|
|
361
|
+
std::forward<TCallArgs>(callArgs)...);
|
|
357
362
|
}(std::forward<TArgs>(args)...);
|
|
358
363
|
} else
|
|
359
364
|
#endif // NDEBUG
|
|
@@ -367,18 +372,19 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
367
372
|
*/
|
|
368
373
|
template <MicrotaskCheckpoint TCheckpoint, typename TInvoker>
|
|
369
374
|
auto invokeWithMicrotaskCheckpointPolicyImpl(TInvoker &&invoke) const -> std::invoke_result_t<TInvoker> {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
using Result = std::invoke_result_t<TInvoker>;
|
|
374
|
-
if constexpr (std::is_void_v<Result>) {
|
|
375
|
-
std::forward<TInvoker>(invoke)();
|
|
375
|
+
using Result = std::invoke_result_t<TInvoker>;
|
|
376
|
+
const auto checkpoint = [&]() {
|
|
377
|
+
if constexpr (TCheckpoint == MicrotaskCheckpoint::Run) {
|
|
376
378
|
drainMicrotasksImpl();
|
|
377
|
-
} else {
|
|
378
|
-
auto result = std::forward<TInvoker>(invoke)();
|
|
379
|
-
drainMicrotasksImpl();
|
|
380
|
-
return result;
|
|
381
379
|
}
|
|
380
|
+
};
|
|
381
|
+
if constexpr (std::is_void_v<Result>) {
|
|
382
|
+
std::forward<TInvoker>(invoke)();
|
|
383
|
+
checkpoint();
|
|
384
|
+
} else {
|
|
385
|
+
Result result = std::forward<TInvoker>(invoke)();
|
|
386
|
+
checkpoint();
|
|
387
|
+
return std::forward<Result>(result);
|
|
382
388
|
}
|
|
383
389
|
}
|
|
384
390
|
|
|
@@ -386,18 +392,8 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
386
392
|
* Assumes the caller acquired the runtime lock.
|
|
387
393
|
*/
|
|
388
394
|
void drainMicrotasksImpl() const {
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
// UI Runtime doesn't have a C++-kind Event Loop, but one polyfilled in JS.
|
|
392
|
-
return;
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
auto callMicrotasks = rt.global().getProperty(rt, "__callMicrotasks");
|
|
396
|
-
if (callMicrotasks.isObject()) {
|
|
397
|
-
auto callMicrotasksObject = callMicrotasks.getObject(rt);
|
|
398
|
-
if (callMicrotasksObject.isFunction(rt)) {
|
|
399
|
-
callMicrotasksObject.getFunction(rt).call(rt);
|
|
400
|
-
}
|
|
395
|
+
if (microtaskQueueEnabled_) {
|
|
396
|
+
jsi_utils::drainMicrotasks(getJSIRuntime());
|
|
401
397
|
}
|
|
402
398
|
}
|
|
403
399
|
|
|
@@ -445,6 +441,7 @@ class WorkletRuntime : public jsi::HostObject, public std::enable_shared_from_th
|
|
|
445
441
|
const RuntimeData::RuntimeId runtimeId_;
|
|
446
442
|
const bool enableLocking_;
|
|
447
443
|
const std::shared_ptr<std::recursive_mutex> runtimeMutex_;
|
|
444
|
+
const bool microtaskQueueEnabled_;
|
|
448
445
|
const std::shared_ptr<jsi::Runtime> runtime_;
|
|
449
446
|
std::shared_ptr<JSScheduler> jsScheduler_;
|
|
450
447
|
const RuntimeData::RuntimeKind runtimeKind_;
|
|
@@ -14,7 +14,6 @@ import com.facebook.react.turbomodule.core.CallInvokerHolderImpl
|
|
|
14
14
|
import com.facebook.soloader.SoLoader
|
|
15
15
|
import com.swmansion.worklets.runloop.AnimationFrameCallback
|
|
16
16
|
import com.swmansion.worklets.runloop.AnimationFrameQueue
|
|
17
|
-
import java.util.concurrent.atomic.AtomicBoolean
|
|
18
17
|
|
|
19
18
|
@Suppress("KotlinJniMissingFunction")
|
|
20
19
|
@ReactModule(name = WorkletsModule.NAME)
|
|
@@ -50,7 +49,8 @@ class WorkletsModule(
|
|
|
50
49
|
* Invalidating concurrently could be fatal. It shouldn't happen in a normal flow, but it doesn't
|
|
51
50
|
* cost us much to add synchronization for extra safety.
|
|
52
51
|
*/
|
|
53
|
-
private val
|
|
52
|
+
private val mInvalidationLock = Any()
|
|
53
|
+
private var mInvalidated = false
|
|
54
54
|
|
|
55
55
|
@OptIn(FrameworkAPI::class)
|
|
56
56
|
private external fun initHybrid(
|
|
@@ -159,9 +159,17 @@ class WorkletsModule(
|
|
|
159
159
|
return mSlowAnimationsEnabled
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
+
override fun initialize() {
|
|
163
|
+
reactApplicationContext.addLifecycleEventListener(this)
|
|
164
|
+
}
|
|
165
|
+
|
|
162
166
|
override fun invalidate() {
|
|
163
|
-
|
|
164
|
-
|
|
167
|
+
synchronized(mInvalidationLock) {
|
|
168
|
+
if (mInvalidated) {
|
|
169
|
+
return
|
|
170
|
+
}
|
|
171
|
+
mInvalidated = true
|
|
172
|
+
reactApplicationContext.removeLifecycleEventListener(this)
|
|
165
173
|
}
|
|
166
174
|
if (mHybridData != null && mHybridData!!.isValid) {
|
|
167
175
|
invalidateCpp()
|
|
@@ -174,11 +182,21 @@ class WorkletsModule(
|
|
|
174
182
|
private external fun startCpp()
|
|
175
183
|
|
|
176
184
|
override fun onHostResume() {
|
|
177
|
-
|
|
185
|
+
synchronized(mInvalidationLock) {
|
|
186
|
+
if (mInvalidated) {
|
|
187
|
+
return
|
|
188
|
+
}
|
|
189
|
+
mAnimationFrameQueue.resume()
|
|
190
|
+
}
|
|
178
191
|
}
|
|
179
192
|
|
|
180
193
|
override fun onHostPause() {
|
|
181
|
-
|
|
194
|
+
synchronized(mInvalidationLock) {
|
|
195
|
+
if (mInvalidated) {
|
|
196
|
+
return
|
|
197
|
+
}
|
|
198
|
+
mAnimationFrameQueue.pause()
|
|
199
|
+
}
|
|
182
200
|
}
|
|
183
201
|
|
|
184
202
|
override fun onHostDestroy() {}
|
|
@@ -11,7 +11,6 @@ import com.facebook.react.turbomodule.core.CallInvokerHolderImpl
|
|
|
11
11
|
import com.facebook.soloader.SoLoader
|
|
12
12
|
import com.swmansion.worklets.runloop.AnimationFrameCallback
|
|
13
13
|
import com.swmansion.worklets.runloop.AnimationFrameQueue
|
|
14
|
-
import java.util.concurrent.atomic.AtomicBoolean
|
|
15
14
|
|
|
16
15
|
@Suppress("KotlinJniMissingFunction")
|
|
17
16
|
@ReactModule(name = WorkletsModule.NAME)
|
|
@@ -46,7 +45,8 @@ class WorkletsModule(
|
|
|
46
45
|
* Invalidating concurrently could be fatal. It shouldn't happen in a normal flow, but it doesn't
|
|
47
46
|
* cost us much to add synchronization for extra safety.
|
|
48
47
|
*/
|
|
49
|
-
private val
|
|
48
|
+
private val mInvalidationLock = Any()
|
|
49
|
+
private var mInvalidated = false
|
|
50
50
|
|
|
51
51
|
@OptIn(FrameworkAPI::class)
|
|
52
52
|
private external fun initHybrid(
|
|
@@ -115,9 +115,17 @@ class WorkletsModule(
|
|
|
115
115
|
return mSlowAnimationsEnabled
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
override fun initialize() {
|
|
119
|
+
reactApplicationContext.addLifecycleEventListener(this)
|
|
120
|
+
}
|
|
121
|
+
|
|
118
122
|
override fun invalidate() {
|
|
119
|
-
|
|
120
|
-
|
|
123
|
+
synchronized(mInvalidationLock) {
|
|
124
|
+
if (mInvalidated) {
|
|
125
|
+
return
|
|
126
|
+
}
|
|
127
|
+
mInvalidated = true
|
|
128
|
+
reactApplicationContext.removeLifecycleEventListener(this)
|
|
121
129
|
}
|
|
122
130
|
if (mHybridData != null && mHybridData!!.isValid) {
|
|
123
131
|
invalidateCpp()
|
|
@@ -130,11 +138,21 @@ class WorkletsModule(
|
|
|
130
138
|
private external fun startCpp()
|
|
131
139
|
|
|
132
140
|
override fun onHostResume() {
|
|
133
|
-
|
|
141
|
+
synchronized(mInvalidationLock) {
|
|
142
|
+
if (mInvalidated) {
|
|
143
|
+
return
|
|
144
|
+
}
|
|
145
|
+
mAnimationFrameQueue.resume()
|
|
146
|
+
}
|
|
134
147
|
}
|
|
135
148
|
|
|
136
149
|
override fun onHostPause() {
|
|
137
|
-
|
|
150
|
+
synchronized(mInvalidationLock) {
|
|
151
|
+
if (mInvalidated) {
|
|
152
|
+
return
|
|
153
|
+
}
|
|
154
|
+
mAnimationFrameQueue.pause()
|
|
155
|
+
}
|
|
138
156
|
}
|
|
139
157
|
|
|
140
158
|
override fun onHostDestroy() {}
|
|
@@ -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.12.0
|
|
8
|
+
export const jsVersion = '0.12.0';
|
|
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,QAAQ","ignoreList":[]}
|
package/lib/module/mock.js
CHANGED
|
@@ -5,6 +5,8 @@ import { RuntimeKind } from "./runtimeKind.js";
|
|
|
5
5
|
import { isWorkletFunction } from "./workletFunction.js";
|
|
6
6
|
const NOOP = () => {};
|
|
7
7
|
const NOOP_FACTORY = () => NOOP;
|
|
8
|
+
const UI_RUNTIME_HOLDER = {};
|
|
9
|
+
const UI_SCHEDULER_HOLDER = {};
|
|
8
10
|
const ID = value => value;
|
|
9
11
|
const IMMEDIATE_CALLBACK_INVOCATION = callback => callback();
|
|
10
12
|
globalThis._WORKLET = false;
|
|
@@ -19,30 +21,60 @@ globalThis._getAnimationTimestamp = () => performance.now();
|
|
|
19
21
|
// @ts-ignore TypeScript uses Node definition for rAF, setTimeout, etc which returns a Timeout object rather than a number
|
|
20
22
|
globalThis.requestAnimationFrame = mockedRequestAnimationFrame;
|
|
21
23
|
const WorkletAPI = {
|
|
24
|
+
callMicrotasks: NOOP,
|
|
25
|
+
createSerializable: ID,
|
|
26
|
+
createShareable(_hostRuntimeId, initial) {
|
|
27
|
+
let value = initial;
|
|
28
|
+
const set = next => {
|
|
29
|
+
value = typeof next === 'function' ? next(value) : next;
|
|
30
|
+
};
|
|
31
|
+
return {
|
|
32
|
+
isHost: false,
|
|
33
|
+
__shareableRef: true,
|
|
34
|
+
getAsync: () => Promise.resolve(value),
|
|
35
|
+
getSync: () => value,
|
|
36
|
+
setAsync: set,
|
|
37
|
+
setSync: set
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
createSynchronizable: ID,
|
|
41
|
+
createWorkletRuntime: NOOP_FACTORY,
|
|
42
|
+
executeOnUIRuntimeSync: ID,
|
|
43
|
+
getDynamicFeatureFlag: () => false,
|
|
44
|
+
getRuntimeKind: () => RuntimeKind.ReactNative,
|
|
45
|
+
getStaticFeatureFlag: () => false,
|
|
46
|
+
getUIRuntimeHolder: () => UI_RUNTIME_HOLDER,
|
|
47
|
+
getUISchedulerHolder: () => UI_SCHEDULER_HOLDER,
|
|
48
|
+
isBundleModeEnabled: () => false,
|
|
49
|
+
isRNRuntime: () => true,
|
|
50
|
+
isSerializableRef: ID,
|
|
51
|
+
isShareable: value => typeof value === 'object' && value !== null && !!value.__shareableRef,
|
|
22
52
|
isShareableRef: () => true,
|
|
53
|
+
isSynchronizable: () => false,
|
|
54
|
+
isUIRuntime: () => false,
|
|
55
|
+
// maybe it should be true?
|
|
56
|
+
isWorkerRuntime: () => false,
|
|
57
|
+
isWorkletFunction: isWorkletFunction,
|
|
58
|
+
isWorkletRuntime: () => false,
|
|
23
59
|
makeShareable: ID,
|
|
24
60
|
makeShareableCloneOnUIRecursive: ID,
|
|
25
61
|
makeShareableCloneRecursive: ID,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
getRuntimeKind: () => RuntimeKind.ReactNative,
|
|
31
|
-
RuntimeKind: RuntimeKind,
|
|
32
|
-
createWorkletRuntime: NOOP_FACTORY,
|
|
62
|
+
registerCustomSerializable: NOOP,
|
|
63
|
+
runOnJS(fun) {
|
|
64
|
+
return (...args) => queueMicrotask(args.length ? () => fun(...args) : fun);
|
|
65
|
+
},
|
|
33
66
|
runOnRuntime: ID,
|
|
34
67
|
runOnRuntimeAsync(_workletRuntime, worklet, ...args) {
|
|
35
68
|
return WorkletAPI.runOnUIAsync(worklet, ...args);
|
|
36
69
|
},
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return (...args) => queueMicrotask(args.length ? () => fun(...args) : fun);
|
|
70
|
+
runOnRuntimeAsyncWithId(_runtimeId, worklet, ...args) {
|
|
71
|
+
return WorkletAPI.runOnUIAsync(worklet, ...args);
|
|
72
|
+
},
|
|
73
|
+
runOnRuntimeSync(_workletRuntime, worklet, ...args) {
|
|
74
|
+
return worklet(...args);
|
|
75
|
+
},
|
|
76
|
+
runOnRuntimeSyncWithId(_runtimeId, worklet, ...args) {
|
|
77
|
+
return worklet(...args);
|
|
46
78
|
},
|
|
47
79
|
runOnUI(worklet) {
|
|
48
80
|
return (...args) => {
|
|
@@ -69,13 +101,22 @@ const WorkletAPI = {
|
|
|
69
101
|
});
|
|
70
102
|
},
|
|
71
103
|
runOnUISync: IMMEDIATE_CALLBACK_INVOCATION,
|
|
104
|
+
RuntimeKind: RuntimeKind,
|
|
72
105
|
scheduleOnRN(fun, ...args) {
|
|
73
106
|
WorkletAPI.runOnJS(fun)(...args);
|
|
74
107
|
},
|
|
108
|
+
scheduleOnRuntime: IMMEDIATE_CALLBACK_INVOCATION,
|
|
109
|
+
scheduleOnRuntimeWithId(_runtimeId, worklet, ...args) {
|
|
110
|
+
WorkletAPI.scheduleOnUI(worklet, ...args);
|
|
111
|
+
},
|
|
75
112
|
scheduleOnUI(worklet, ...args) {
|
|
76
113
|
WorkletAPI.runOnUI(worklet)(...args);
|
|
77
114
|
},
|
|
78
|
-
|
|
115
|
+
serializableMappingCache: new Map(),
|
|
116
|
+
setDynamicFeatureFlag: NOOP,
|
|
117
|
+
shareableMappingCache: new Map(),
|
|
118
|
+
toggleSlowAnimationsOnUIRuntime: () => false,
|
|
119
|
+
UIRuntimeId: RuntimeKind.UI,
|
|
79
120
|
WorkletsModule: {}
|
|
80
121
|
};
|
|
81
122
|
module.exports = {
|
package/lib/module/mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mockedRequestAnimationFrame","RuntimeKind","isWorkletFunction","NOOP","NOOP_FACTORY","ID","value","IMMEDIATE_CALLBACK_INVOCATION","callback","globalThis","_WORKLET","__RUNTIME_KIND","ReactNative","_log","console","log","_getAnimationTimestamp","performance","now","requestAnimationFrame","WorkletAPI","
|
|
1
|
+
{"version":3,"names":["mockedRequestAnimationFrame","RuntimeKind","isWorkletFunction","NOOP","NOOP_FACTORY","UI_RUNTIME_HOLDER","UI_SCHEDULER_HOLDER","ID","value","IMMEDIATE_CALLBACK_INVOCATION","callback","globalThis","_WORKLET","__RUNTIME_KIND","ReactNative","_log","console","log","_getAnimationTimestamp","performance","now","requestAnimationFrame","WorkletAPI","callMicrotasks","createSerializable","createShareable","_hostRuntimeId","initial","set","next","isHost","__shareableRef","getAsync","Promise","resolve","getSync","setAsync","setSync","createSynchronizable","createWorkletRuntime","executeOnUIRuntimeSync","getDynamicFeatureFlag","getRuntimeKind","getStaticFeatureFlag","getUIRuntimeHolder","getUISchedulerHolder","isBundleModeEnabled","isRNRuntime","isSerializableRef","isShareable","isShareableRef","isSynchronizable","isUIRuntime","isWorkerRuntime","isWorkletRuntime","makeShareable","makeShareableCloneOnUIRecursive","makeShareableCloneRecursive","registerCustomSerializable","runOnJS","fun","args","queueMicrotask","length","runOnRuntime","runOnRuntimeAsync","_workletRuntime","worklet","runOnUIAsync","runOnRuntimeAsyncWithId","_runtimeId","runOnRuntimeSync","runOnRuntimeSyncWithId","runOnUI","result","runOnUISync","scheduleOnRN","scheduleOnRuntime","scheduleOnRuntimeWithId","scheduleOnUI","serializableMappingCache","Map","setDynamicFeatureFlag","shareableMappingCache","toggleSlowAnimationsOnUIRuntime","UIRuntimeId","UI","WorkletsModule","module","exports","__esModule"],"sourceRoot":"../../src","sources":["mock.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
export function setupRequestAnimationFrame() {
|
|
4
4
|
'worklet';
|
|
5
5
|
|
|
6
|
-
const callMicrotasks = globalThis.__callMicrotasks;
|
|
7
6
|
let queuedCallbacks = [];
|
|
8
7
|
let queuedCallbacksBegin = 0;
|
|
9
8
|
let queuedCallbacksEnd = 0;
|
|
@@ -21,7 +20,7 @@ export function setupRequestAnimationFrame() {
|
|
|
21
20
|
callback(timestamp);
|
|
22
21
|
}
|
|
23
22
|
flushedCallbacksBegin = flushedCallbacksEnd;
|
|
24
|
-
|
|
23
|
+
globalThis.__callMicrotasks();
|
|
25
24
|
const finalizers = queuedFinalizers;
|
|
26
25
|
queuedFinalizers = [];
|
|
27
26
|
for (const finalizer of finalizers) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["setupRequestAnimationFrame","
|
|
1
|
+
{"version":3,"names":["setupRequestAnimationFrame","queuedCallbacks","queuedCallbacksBegin","queuedCallbacksEnd","flushedCallbacks","flushedCallbacksBegin","flushedCallbacksEnd","queuedFinalizers","executeQueue","timestamp","callback","globalThis","__callMicrotasks","finalizers","finalizer","requestAnimationFrame","handle","push","cancelAnimationFrame","nativeFlushQueue","flushQueue","__nativeRequestAnimationFrame","__frameTimestamp","undefined","requestAnimationFrameFinalizer","__flushAnimationFrame","eventTimestamp"],"sourceRoot":"../../../../src","sources":["runLoop/uiRuntime/requestAnimationFrame.ts"],"mappings":"AAAA,YAAY;;AAEZ,OAAO,SAASA,0BAA0BA,CAAA,EAAG;EAC3C,SAAS;;EAET,IAAIC,eAAgD,GAAG,EAAE;EACzD,IAAIC,oBAAoB,GAAG,CAAC;EAC5B,IAAIC,kBAAkB,GAAG,CAAC;EAE1B,IAAIC,gBAAgB,GAAGH,eAAe;EACtC,IAAII,qBAAqB,GAAG,CAAC;EAC7B,IAAIC,mBAAmB,GAAG,CAAC;EAE3B,IAAIC,gBAAgC,GAAG,EAAE;EAEzC,SAASC,YAAYA,CAACC,SAAiB,EAAE;IACvCL,gBAAgB,GAAGH,eAAe;IAClCA,eAAe,GAAG,EAAE;IAEpBI,qBAAqB,GAAGH,oBAAoB;IAC5CI,mBAAmB,GAAGH,kBAAkB;IACxCD,oBAAoB,GAAGC,kBAAkB;IAEzC,KAAK,MAAMO,QAAQ,IAAIN,gBAAgB,EAAE;MACvCM,QAAQ,CAACD,SAAS,CAAC;IACrB;IAEAJ,qBAAqB,GAAGC,mBAAmB;IAE3CK,UAAU,CAACC,gBAAgB,CAAC,CAAC;IAE7B,MAAMC,UAAU,GAAGN,gBAAgB;IACnCA,gBAAgB,GAAG,EAAE;IACrB,KAAK,MAAMO,SAAS,IAAID,UAAU,EAAE;MAClCC,SAAS,CAAC,CAAC;IACb;EACF;EAEA,SAASC,qBAAqBA,CAC5BL,QAAqC,EAC7B;IACR,MAAMM,MAAM,GAAGb,kBAAkB,EAAE;IACnCF,eAAe,CAACgB,IAAI,CAACP,QAAQ,CAAC;IAC9B,OAAOM,MAAM;EACf;EAEA,SAASE,oBAAoBA,CAACF,MAAc,EAAE;IAC5C,IAAIA,MAAM,GAAGX,qBAAqB,IAAIW,MAAM,IAAIb,kBAAkB,EAAE;MAClE;IACF;IAEA,IAAIa,MAAM,GAAGV,mBAAmB,EAAE;MAChCF,gBAAgB,CAACY,MAAM,GAAGX,qBAAqB,CAAC,GAAG,MAAM,CAAC,CAAC;IAC7D,CAAC,MAAM;MACLJ,eAAe,CAACe,MAAM,GAAGd,oBAAoB,CAAC,GAAG,MAAM,CAAC,CAAC;IAC3D;EACF;EAEA,SAASiB,gBAAgBA,CAACV,SAAiB,EAAE;IAC3CW,UAAU,CAACX,SAAS,CAAC;;IAErB;IACAE,UAAU,CAACU,6BAA6B,CAACF,gBAAgB,CAAC;EAC5D;EAEA,SAASC,UAAUA,CAACX,SAAiB,EAAE;IACrCE,UAAU,CAACW,gBAAgB,GAAGb,SAAS;IACvCD,YAAY,CAACC,SAAS,CAAC;IACvBE,UAAU,CAACW,gBAAgB,GAAGC,SAAS;EACzC;EAEAZ,UAAU,CAACI,qBAAqB,GAAGA,qBAAqB;EACxDJ,UAAU,CAACO,oBAAoB,GAC7BA,oBAA8D;EAChEP,UAAU,CAACa,8BAA8B,GAAId,QAAoB,IAAK;IACpEH,gBAAgB,CAACU,IAAI,CAACP,QAAQ,CAAC;EACjC,CAAC;;EAED;EACAC,UAAU,CAACU,6BAA6B,CAACF,gBAAgB,CAAC;;EAE1D;EACAR,UAAU,CAACc,qBAAqB,GAAIC,cAAsB,IAAK;IAC7DN,UAAU,CAACM,cAAc,CAAC;EAC5B,CAAC;AACH","ignoreList":[]}
|
|
@@ -12,7 +12,6 @@ export function setupTaskQueue() {
|
|
|
12
12
|
const task = queue.timeoutCallbacks.get(handlerId);
|
|
13
13
|
task?.();
|
|
14
14
|
queue.timeoutCallbacks.delete(handlerId);
|
|
15
|
-
globalThis.__callMicrotasks();
|
|
16
15
|
};
|
|
17
16
|
globalThis.__callMicrotasks = function callMicrotasks() {
|
|
18
17
|
for (let i = 0; i < queue.microtasks.length; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["setupTaskQueue","queue","microtasks","timeoutCallbacks","Map","globalThis","_taskQueue","__runTimeoutCallback","handlerId","task","get","delete","__callMicrotasks","callMicrotasks","i","length","pushMicrotask","callback","push","pushTask","delay","set","_scheduleTimeoutCallback"],"sourceRoot":"../../../../src","sources":["runLoop/workletRuntime/taskQueue.ts"],"mappings":"AAAA,YAAY;;AASZ,OAAO,SAASA,cAAcA,CAAA,EAAG;EAC/B,SAAS;;EACT,MAAMC,KAAY,GAAG;IACnBC,UAAU,EAAE,EAAE;IACdC,gBAAgB,EAAE,IAAIC,GAAG,CAAC;EAC5B,CAAC;EACDC,UAAU,CAACC,UAAU,GAAGL,KAAK;EAE7BI,UAAU,CAACE,oBAAoB,GAAG,UAAUC,SAAiB,EAAE;IAC7D,MAAMC,IAAI,GAAGR,KAAK,CAACE,gBAAgB,CAACO,GAAG,CAACF,SAAS,CAAC;IAClDC,IAAI,GAAG,CAAC;IACRR,KAAK,CAACE,gBAAgB,CAACQ,MAAM,CAACH,SAAS,CAAC;
|
|
1
|
+
{"version":3,"names":["setupTaskQueue","queue","microtasks","timeoutCallbacks","Map","globalThis","_taskQueue","__runTimeoutCallback","handlerId","task","get","delete","__callMicrotasks","callMicrotasks","i","length","pushMicrotask","callback","push","pushTask","delay","set","_scheduleTimeoutCallback"],"sourceRoot":"../../../../src","sources":["runLoop/workletRuntime/taskQueue.ts"],"mappings":"AAAA,YAAY;;AASZ,OAAO,SAASA,cAAcA,CAAA,EAAG;EAC/B,SAAS;;EACT,MAAMC,KAAY,GAAG;IACnBC,UAAU,EAAE,EAAE;IACdC,gBAAgB,EAAE,IAAIC,GAAG,CAAC;EAC5B,CAAC;EACDC,UAAU,CAACC,UAAU,GAAGL,KAAK;EAE7BI,UAAU,CAACE,oBAAoB,GAAG,UAAUC,SAAiB,EAAE;IAC7D,MAAMC,IAAI,GAAGR,KAAK,CAACE,gBAAgB,CAACO,GAAG,CAACF,SAAS,CAAC;IAClDC,IAAI,GAAG,CAAC;IACRR,KAAK,CAACE,gBAAgB,CAACQ,MAAM,CAACH,SAAS,CAAC;EAC1C,CAAC;EAEDH,UAAU,CAACO,gBAAgB,GAAG,SAASC,cAAcA,CAAA,EAAG;IACtD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGb,KAAK,CAACC,UAAU,CAACa,MAAM,EAAED,CAAC,EAAE,EAAE;MAChDb,KAAK,CAACC,UAAU,CAACY,CAAC,CAAC,CAAC,CAAC;IACvB;IACAb,KAAK,CAACC,UAAU,GAAG,EAAE;EACvB,CAAC;AACH;AAEA,OAAO,SAASc,aAAaA,CAACC,QAAkB,EAAE;EAChD,SAAS;;EACT,MAAMhB,KAAK,GAAGI,UAAU,CAACC,UAAU;EACnCL,KAAK,CAACC,UAAU,CAACgB,IAAI,CAACD,QAAQ,CAAC;AACjC;AAEA,OAAO,SAASE,QAAQA,CAACF,QAAkB,EAAET,SAAiB,EAAEY,KAAa,EAAE;EAC7E,SAAS;;EACT,MAAMnB,KAAK,GAAGI,UAAU,CAACC,UAAU;EACnCL,KAAK,CAACE,gBAAgB,CAACkB,GAAG,CAACb,SAAS,EAAES,QAAQ,CAAC;EAC/CZ,UAAU,CAACiB,wBAAwB,CAACF,KAAK,EAAEZ,SAAS,CAAC;AACvD","ignoreList":[]}
|
|
@@ -121,7 +121,6 @@ export function scheduleOnRuntime(workletRuntime, worklet, ...args) {
|
|
|
121
121
|
'worklet';
|
|
122
122
|
|
|
123
123
|
worklet(...args);
|
|
124
|
-
globalThis.__callMicrotasks?.();
|
|
125
124
|
}), SHOULD_CAPTURE_SCHEDULE_STACK ? new Error().stack : undefined);
|
|
126
125
|
}
|
|
127
126
|
if (!isBundleModeEnabled()) {
|
|
@@ -135,7 +134,6 @@ if (!isBundleModeEnabled()) {
|
|
|
135
134
|
'worklet';
|
|
136
135
|
|
|
137
136
|
worklet(...args);
|
|
138
|
-
globalThis.__callMicrotasks?.();
|
|
139
137
|
}));
|
|
140
138
|
}
|
|
141
139
|
serializableMappingCache.set(scheduleOnRuntime, createSerializable(scheduleOnRuntimeWorklet));
|
|
@@ -171,7 +169,6 @@ export function scheduleOnRuntimeWithId(runtimeId, worklet, ...args) {
|
|
|
171
169
|
'worklet';
|
|
172
170
|
|
|
173
171
|
worklet(...args);
|
|
174
|
-
globalThis.__callMicrotasks?.();
|
|
175
172
|
}), SHOULD_CAPTURE_SCHEDULE_STACK ? new Error().stack : undefined);
|
|
176
173
|
}
|
|
177
174
|
if (!isBundleModeEnabled()) {
|
|
@@ -185,7 +182,6 @@ if (!isBundleModeEnabled()) {
|
|
|
185
182
|
'worklet';
|
|
186
183
|
|
|
187
184
|
worklet(...args);
|
|
188
|
-
globalThis.__callMicrotasks?.();
|
|
189
185
|
}));
|
|
190
186
|
}
|
|
191
187
|
serializableMappingCache.set(scheduleOnRuntimeWithId, createSerializable(scheduleOnRuntimeWithIdWorklet));
|
|
@@ -313,7 +309,6 @@ export function runOnRuntimeAsync(workletRuntime, worklet, ...args) {
|
|
|
313
309
|
const serializedError = globalThis.__serializer(error);
|
|
314
310
|
globalThis.__workletsModuleProxy.handlePromise(reject, serializedError);
|
|
315
311
|
}
|
|
316
|
-
globalThis.__callMicrotasks?.();
|
|
317
312
|
}), scheduleStack);
|
|
318
313
|
});
|
|
319
314
|
}
|
|
@@ -361,7 +356,6 @@ export function runOnRuntimeAsyncWithId(runtimeId, worklet, ...args) {
|
|
|
361
356
|
const serializedError = globalThis.__serializer(error);
|
|
362
357
|
globalThis.__workletsModuleProxy.handlePromise(reject, serializedError);
|
|
363
358
|
}
|
|
364
|
-
globalThis.__callMicrotasks?.();
|
|
365
359
|
}), scheduleStack);
|
|
366
360
|
});
|
|
367
361
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isBundleModeEnabled","getStaticFeatureFlag","addNoBundleModeGuardImplementation","getMemorySafeCapturableConsole","setupConsole","setupConsoleForwarding","setupSerializer","createSerializable","makeShareableCloneOnUIRecursive","serializableMappingCache","setupRunLoop","RuntimeKind","isWorkletFunction","WorkletsModule","SHOULD_CAPTURE_SCHEDULE_STACK","__DEV__","UIRuntimeId","UI","createWorkletRuntime","nameOrConfig","initializer","runtimeBoundCapturableConsole","globalThis","_WORKLETS_BUNDLE_MODE_ENABLED","name","initializerFn","queue","animationQueuePollingRate","enableEventLoop","enableLocking","undefined","useDefaultQueue","customQueue","Math","round","Error","scheduleOnRuntime","workletRuntime","worklet","args","
|
|
1
|
+
{"version":3,"names":["isBundleModeEnabled","getStaticFeatureFlag","addNoBundleModeGuardImplementation","getMemorySafeCapturableConsole","setupConsole","setupConsoleForwarding","setupSerializer","createSerializable","makeShareableCloneOnUIRecursive","serializableMappingCache","setupRunLoop","RuntimeKind","isWorkletFunction","WorkletsModule","SHOULD_CAPTURE_SCHEDULE_STACK","__DEV__","UIRuntimeId","UI","createWorkletRuntime","nameOrConfig","initializer","runtimeBoundCapturableConsole","globalThis","_WORKLETS_BUNDLE_MODE_ENABLED","name","initializerFn","queue","animationQueuePollingRate","enableEventLoop","enableLocking","undefined","useDefaultQueue","customQueue","Math","round","Error","scheduleOnRuntime","workletRuntime","worklet","args","stack","scheduleOnRuntimeWorklet","__workletsModuleProxy","__serializer","set","scheduleOnRuntimeWithId","runtimeId","scheduleOnRuntimeWithIdWorklet","runOnRuntime","runOnRuntimeSync","result","runOnRuntimeSyncWithId","runOnRuntimeAsync","Promise","resolve","reject","scheduleStack","serializedResult","handlePromise","error","serializedError","runOnRuntimeAsyncWithId","getUIRuntimeHolder","getUISchedulerHolder"],"sourceRoot":"../../src","sources":["runtimes.native.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* version used to build the native part of the library in runtime. Remember to
|
|
4
4
|
* keep this in sync with the version declared in `package.json`
|
|
5
5
|
*/
|
|
6
|
-
export declare const jsVersion = "0.12.0
|
|
6
|
+
export declare const jsVersion = "0.12.0";
|
|
7
7
|
//# sourceMappingURL=jsVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsVersion.d.ts","sourceRoot":"","sources":["../../../src/debug/jsVersion.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"jsVersion.d.ts","sourceRoot":"","sources":["../../../src/debug/jsVersion.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,SAAS,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestAnimationFrame.d.ts","sourceRoot":"","sources":["../../../../src/runLoop/uiRuntime/requestAnimationFrame.ts"],"names":[],"mappings":"AAEA,wBAAgB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"requestAnimationFrame.d.ts","sourceRoot":"","sources":["../../../../src/runLoop/uiRuntime/requestAnimationFrame.ts"],"names":[],"mappings":"AAEA,wBAAgB,0BAA0B,SAmFzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskQueue.d.ts","sourceRoot":"","sources":["../../../../src/runLoop/workletRuntime/taskQueue.ts"],"names":[],"mappings":"AAEA,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAE3B,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAgB,cAAc,
|
|
1
|
+
{"version":3,"file":"taskQueue.d.ts","sourceRoot":"","sources":["../../../../src/runLoop/workletRuntime/taskQueue.ts"],"names":[],"mappings":"AAEA,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAE3B,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAgB,cAAc,SAoB7B;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,QAI/C;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAK5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimes.native.d.ts","sourceRoot":"","sources":["../../src/runtimes.native.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAOjB;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAqB,CAAC,CAAC;AAE/C;;;;;;;;GAQG;AAEH,wBAAgB,oBAAoB,CAClC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,cAAc,CAAC;AAElB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,IAAI,GACvB,cAAc,CAAC;AA2ElB;;;;;;;;;;;;;;;;;GAiBG;AAGH,wBAAgB,iBAAiB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,WAAW,EACnE,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,WAAW,EACvC,GAAG,IAAI,EAAE,IAAI,GACZ,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"runtimes.native.d.ts","sourceRoot":"","sources":["../../src/runtimes.native.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAOjB;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAqB,CAAC,CAAC;AAE/C;;;;;;;;GAQG;AAEH,wBAAgB,oBAAoB,CAClC,MAAM,CAAC,EAAE,oBAAoB,GAC5B,cAAc,CAAC;AAElB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,IAAI,GACvB,cAAc,CAAC;AA2ElB;;;;;;;;;;;;;;;;;GAiBG;AAGH,wBAAgB,iBAAiB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,WAAW,EACnE,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,WAAW,EACvC,GAAG,IAAI,EAAE,IAAI,GACZ,IAAI,CAAC;AAmDR;;;;;;;;;;;;;;;;;;GAkBG;AAGH,wBAAgB,uBAAuB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,WAAW,EACzE,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,WAAW,EACvC,GAAG,IAAI,EAAE,IAAI,GACZ,IAAI,CAAC;AAmDR;;;;GAIG;AAGH,wBAAgB,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,WAAW,EAC9D,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,WAAW,GACtC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAmBtC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,WAAW,EAClE,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,WAAW,EACvC,GAAG,IAAI,EAAE,IAAI,GACZ,WAAW,CAgBb;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,WAAW,EACxE,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,WAAW,EACvC,GAAG,IAAI,EAAE,IAAI,GACZ,WAAW,CAAC;AAwBf;;;;;;;;;;;;;;;GAeG;AAGH,wBAAgB,iBAAiB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,WAAW,EACnE,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,WAAW,EACvC,GAAG,IAAI,EAAE,IAAI,GACZ,OAAO,CAAC,WAAW,CAAC,CAAC;AAmDxB;;;;;;;;;;;;;;;;;;GAkBG;AAGH,wBAAgB,uBAAuB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,WAAW,EACzE,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,WAAW,EACvC,GAAG,IAAI,EAAE,IAAI,GACZ,OAAO,CAAC,WAAW,CAAC,CAAC;AA4DxB,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-worklets",
|
|
3
|
-
"version": "0.12.0
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "The React Native multithreading library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"lint:clang-tidy": "yarn lint:clang-tidy:ios && yarn lint:clang-tidy:android",
|
|
29
29
|
"lint:clang-tidy:ios": "../../scripts/llvm-tools/clang-tidy-lint.sh --platform=ios",
|
|
30
30
|
"lint:clang-tidy:android": "../../scripts/llvm-tools/clang-tidy-lint.sh --platform=android",
|
|
31
|
-
"lint:js": "eslint src && yarn run --top-level oxfmt --check src",
|
|
31
|
+
"lint:js": "eslint src && yarn run --top-level oxfmt --check src && yarn validate-mock",
|
|
32
32
|
"lint:plugin": "yarn workspace babel-plugin-worklets lint",
|
|
33
33
|
"prepack": "yarn build",
|
|
34
34
|
"set-version": "node scripts/set-version.js",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"type:check:legacy-rn-types:app": "yarn workspace common-app type:check:legacy-rn-types",
|
|
45
45
|
"type:check:legacy-rn-types:tests": "../../scripts/test-ts.sh --customConditions react-native-legacy-deep-imports __typetests__",
|
|
46
46
|
"tree-shake:check:web": "yarn is-tree-shakable --resolution web",
|
|
47
|
+
"validate-mock": "node --experimental-strip-types ../../scripts/validate-mock.mts --source src/index.ts --mock src/mock.ts --tsConfig tsconfig.native.json",
|
|
47
48
|
"validate-peers": "node ../../scripts/validate-compatibility-peer-dependencies.js"
|
|
48
49
|
},
|
|
49
50
|
"repository": {
|
package/src/debug/jsVersion.ts
CHANGED
package/src/mock.ts
CHANGED
|
@@ -6,6 +6,8 @@ import { isWorkletFunction } from './workletFunction';
|
|
|
6
6
|
|
|
7
7
|
const NOOP = () => {};
|
|
8
8
|
const NOOP_FACTORY = () => NOOP;
|
|
9
|
+
const UI_RUNTIME_HOLDER = {};
|
|
10
|
+
const UI_SCHEDULER_HOLDER = {};
|
|
9
11
|
const ID = <TValue>(value: TValue) => value;
|
|
10
12
|
const IMMEDIATE_CALLBACK_INVOCATION = <TCallback>(callback: () => TCallback) =>
|
|
11
13
|
callback();
|
|
@@ -23,32 +25,50 @@ globalThis._getAnimationTimestamp = () => performance.now();
|
|
|
23
25
|
globalThis.requestAnimationFrame = mockedRequestAnimationFrame;
|
|
24
26
|
|
|
25
27
|
const WorkletAPI = {
|
|
28
|
+
callMicrotasks: NOOP,
|
|
29
|
+
createSerializable: ID,
|
|
30
|
+
createShareable<TValue>(_hostRuntimeId: number, initial: TValue) {
|
|
31
|
+
let value = initial;
|
|
32
|
+
const set = (next: TValue | ((prev: TValue) => TValue)) => {
|
|
33
|
+
value =
|
|
34
|
+
typeof next === 'function'
|
|
35
|
+
? (next as (prev: TValue) => TValue)(value)
|
|
36
|
+
: next;
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
isHost: false,
|
|
40
|
+
__shareableRef: true,
|
|
41
|
+
getAsync: () => Promise.resolve(value),
|
|
42
|
+
getSync: () => value,
|
|
43
|
+
setAsync: set,
|
|
44
|
+
setSync: set,
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
createSynchronizable: ID,
|
|
48
|
+
createWorkletRuntime: NOOP_FACTORY,
|
|
49
|
+
executeOnUIRuntimeSync: ID,
|
|
50
|
+
getDynamicFeatureFlag: () => false,
|
|
51
|
+
getRuntimeKind: () => RuntimeKind.ReactNative,
|
|
52
|
+
getStaticFeatureFlag: () => false,
|
|
53
|
+
getUIRuntimeHolder: () => UI_RUNTIME_HOLDER,
|
|
54
|
+
getUISchedulerHolder: () => UI_SCHEDULER_HOLDER,
|
|
55
|
+
isBundleModeEnabled: () => false,
|
|
56
|
+
isRNRuntime: () => true,
|
|
57
|
+
isSerializableRef: ID,
|
|
58
|
+
isShareable: (value: unknown) =>
|
|
59
|
+
typeof value === 'object' &&
|
|
60
|
+
value !== null &&
|
|
61
|
+
!!(value as Record<string, unknown>).__shareableRef,
|
|
26
62
|
isShareableRef: () => true,
|
|
63
|
+
isSynchronizable: () => false,
|
|
64
|
+
isUIRuntime: () => false, // maybe it should be true?
|
|
65
|
+
isWorkerRuntime: () => false,
|
|
66
|
+
isWorkletFunction: isWorkletFunction,
|
|
67
|
+
isWorkletRuntime: () => false,
|
|
27
68
|
makeShareable: ID,
|
|
28
69
|
makeShareableCloneOnUIRecursive: ID,
|
|
29
70
|
makeShareableCloneRecursive: ID,
|
|
30
|
-
|
|
31
|
-
getStaticFeatureFlag: () => false,
|
|
32
|
-
setDynamicFeatureFlag: NOOP,
|
|
33
|
-
isSynchronizable: () => false,
|
|
34
|
-
getRuntimeKind: () => RuntimeKind.ReactNative,
|
|
35
|
-
RuntimeKind: RuntimeKind,
|
|
36
|
-
createWorkletRuntime: NOOP_FACTORY,
|
|
37
|
-
runOnRuntime: ID,
|
|
38
|
-
runOnRuntimeAsync<Args extends unknown[], ReturnValue>(
|
|
39
|
-
_workletRuntime: unknown,
|
|
40
|
-
worklet: (...args: Args) => ReturnValue,
|
|
41
|
-
...args: Args
|
|
42
|
-
): Promise<ReturnValue> {
|
|
43
|
-
return WorkletAPI.runOnUIAsync(worklet, ...args);
|
|
44
|
-
},
|
|
45
|
-
scheduleOnRuntime: IMMEDIATE_CALLBACK_INVOCATION,
|
|
46
|
-
createSerializable: ID,
|
|
47
|
-
isSerializableRef: ID,
|
|
48
|
-
serializableMappingCache: new Map(),
|
|
49
|
-
createSynchronizable: ID,
|
|
50
|
-
callMicrotasks: NOOP,
|
|
51
|
-
executeOnUIRuntimeSync: ID,
|
|
71
|
+
registerCustomSerializable: NOOP,
|
|
52
72
|
runOnJS<Args extends unknown[], ReturnValue>(
|
|
53
73
|
fun: (...args: Args) => ReturnValue
|
|
54
74
|
): (...args: Args) => void {
|
|
@@ -59,6 +79,35 @@ const WorkletAPI = {
|
|
|
59
79
|
: (fun as () => ReturnValue)
|
|
60
80
|
);
|
|
61
81
|
},
|
|
82
|
+
runOnRuntime: ID,
|
|
83
|
+
runOnRuntimeAsync<Args extends unknown[], ReturnValue>(
|
|
84
|
+
_workletRuntime: unknown,
|
|
85
|
+
worklet: (...args: Args) => ReturnValue,
|
|
86
|
+
...args: Args
|
|
87
|
+
): Promise<ReturnValue> {
|
|
88
|
+
return WorkletAPI.runOnUIAsync(worklet, ...args);
|
|
89
|
+
},
|
|
90
|
+
runOnRuntimeAsyncWithId<Args extends unknown[], ReturnValue>(
|
|
91
|
+
_runtimeId: number,
|
|
92
|
+
worklet: (...args: Args) => ReturnValue,
|
|
93
|
+
...args: Args
|
|
94
|
+
): Promise<ReturnValue> {
|
|
95
|
+
return WorkletAPI.runOnUIAsync(worklet, ...args);
|
|
96
|
+
},
|
|
97
|
+
runOnRuntimeSync<Args extends unknown[], ReturnValue>(
|
|
98
|
+
_workletRuntime: unknown,
|
|
99
|
+
worklet: (...args: Args) => ReturnValue,
|
|
100
|
+
...args: Args
|
|
101
|
+
): ReturnValue {
|
|
102
|
+
return worklet(...args);
|
|
103
|
+
},
|
|
104
|
+
runOnRuntimeSyncWithId<Args extends unknown[], ReturnValue>(
|
|
105
|
+
_runtimeId: number,
|
|
106
|
+
worklet: (...args: Args) => ReturnValue,
|
|
107
|
+
...args: Args
|
|
108
|
+
): ReturnValue {
|
|
109
|
+
return worklet(...args);
|
|
110
|
+
},
|
|
62
111
|
runOnUI<Args extends unknown[], ReturnValue>(
|
|
63
112
|
worklet: (...args: Args) => ReturnValue
|
|
64
113
|
): (...args: Args) => void {
|
|
@@ -89,19 +138,32 @@ const WorkletAPI = {
|
|
|
89
138
|
});
|
|
90
139
|
},
|
|
91
140
|
runOnUISync: IMMEDIATE_CALLBACK_INVOCATION,
|
|
141
|
+
RuntimeKind: RuntimeKind,
|
|
92
142
|
scheduleOnRN<Args extends unknown[], ReturnValue>(
|
|
93
143
|
fun: (...args: Args) => ReturnValue,
|
|
94
144
|
...args: Args
|
|
95
145
|
): void {
|
|
96
146
|
WorkletAPI.runOnJS(fun)(...args);
|
|
97
147
|
},
|
|
148
|
+
scheduleOnRuntime: IMMEDIATE_CALLBACK_INVOCATION,
|
|
149
|
+
scheduleOnRuntimeWithId<Args extends unknown[], ReturnValue>(
|
|
150
|
+
_runtimeId: number,
|
|
151
|
+
worklet: (...args: Args) => ReturnValue,
|
|
152
|
+
...args: Args
|
|
153
|
+
): void {
|
|
154
|
+
WorkletAPI.scheduleOnUI(worklet, ...args);
|
|
155
|
+
},
|
|
98
156
|
scheduleOnUI<Args extends unknown[], ReturnValue>(
|
|
99
157
|
worklet: (...args: Args) => ReturnValue,
|
|
100
158
|
...args: Args
|
|
101
159
|
): void {
|
|
102
160
|
WorkletAPI.runOnUI(worklet)(...args);
|
|
103
161
|
},
|
|
104
|
-
|
|
162
|
+
serializableMappingCache: new Map(),
|
|
163
|
+
setDynamicFeatureFlag: NOOP,
|
|
164
|
+
shareableMappingCache: new Map(),
|
|
165
|
+
toggleSlowAnimationsOnUIRuntime: () => false,
|
|
166
|
+
UIRuntimeId: RuntimeKind.UI,
|
|
105
167
|
WorkletsModule: {},
|
|
106
168
|
};
|
|
107
169
|
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
export function setupRequestAnimationFrame() {
|
|
4
4
|
'worklet';
|
|
5
|
-
const callMicrotasks = globalThis.__callMicrotasks;
|
|
6
5
|
|
|
7
6
|
let queuedCallbacks: ((timestamp: number) => void)[] = [];
|
|
8
7
|
let queuedCallbacksBegin = 0;
|
|
@@ -28,7 +27,7 @@ export function setupRequestAnimationFrame() {
|
|
|
28
27
|
|
|
29
28
|
flushedCallbacksBegin = flushedCallbacksEnd;
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
globalThis.__callMicrotasks();
|
|
32
31
|
|
|
33
32
|
const finalizers = queuedFinalizers;
|
|
34
33
|
queuedFinalizers = [];
|
package/src/runtimes.native.ts
CHANGED
|
@@ -182,7 +182,6 @@ export function scheduleOnRuntime<Args extends unknown[], ReturnValue>(
|
|
|
182
182
|
createSerializable(() => {
|
|
183
183
|
'worklet';
|
|
184
184
|
worklet(...args);
|
|
185
|
-
globalThis.__callMicrotasks?.();
|
|
186
185
|
}),
|
|
187
186
|
SHOULD_CAPTURE_SCHEDULE_STACK ? new Error().stack : undefined
|
|
188
187
|
);
|
|
@@ -206,7 +205,6 @@ if (!isBundleModeEnabled()) {
|
|
|
206
205
|
globalThis.__serializer(() => {
|
|
207
206
|
'worklet';
|
|
208
207
|
worklet(...args);
|
|
209
|
-
globalThis.__callMicrotasks?.();
|
|
210
208
|
})
|
|
211
209
|
);
|
|
212
210
|
}
|
|
@@ -260,7 +258,6 @@ export function scheduleOnRuntimeWithId<Args extends unknown[], ReturnValue>(
|
|
|
260
258
|
createSerializable(() => {
|
|
261
259
|
'worklet';
|
|
262
260
|
worklet(...args);
|
|
263
|
-
globalThis.__callMicrotasks?.();
|
|
264
261
|
}),
|
|
265
262
|
SHOULD_CAPTURE_SCHEDULE_STACK ? new Error().stack : undefined
|
|
266
263
|
);
|
|
@@ -284,7 +281,6 @@ if (!isBundleModeEnabled()) {
|
|
|
284
281
|
globalThis.__serializer(() => {
|
|
285
282
|
'worklet';
|
|
286
283
|
worklet(...args);
|
|
287
|
-
globalThis.__callMicrotasks?.();
|
|
288
284
|
})
|
|
289
285
|
);
|
|
290
286
|
}
|
|
@@ -480,7 +476,6 @@ export function runOnRuntimeAsync<Args extends unknown[], ReturnValue>(
|
|
|
480
476
|
serializedError
|
|
481
477
|
);
|
|
482
478
|
}
|
|
483
|
-
globalThis.__callMicrotasks?.();
|
|
484
479
|
}),
|
|
485
480
|
scheduleStack
|
|
486
481
|
);
|
|
@@ -555,7 +550,6 @@ export function runOnRuntimeAsyncWithId<Args extends unknown[], ReturnValue>(
|
|
|
555
550
|
serializedError
|
|
556
551
|
);
|
|
557
552
|
}
|
|
558
|
-
globalThis.__callMicrotasks?.();
|
|
559
553
|
}),
|
|
560
554
|
scheduleStack
|
|
561
555
|
);
|