@rn-org/react-native-thread 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -83
- package/lib/module/babel-plugin.js +52 -1
- package/lib/module/babel-plugin.js.map +1 -1
- package/lib/module/index.js +3 -20
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -5
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +3 -6
- package/src/babel-plugin.js +59 -1
- package/src/index.tsx +8 -23
package/README.md
CHANGED
|
@@ -19,7 +19,6 @@ Run JavaScript on real background threads in React Native — no Workers, no Wor
|
|
|
19
19
|
- [destroyThread](#destroythread)
|
|
20
20
|
- [onMessage](#onmessage)
|
|
21
21
|
- [ThreadHandle](#threadhandle)
|
|
22
|
-
- [ThreadError](#threaderror)
|
|
23
22
|
- [ThreadInfo](#threadinfo)
|
|
24
23
|
- [ThreadTask](#threadtask)
|
|
25
24
|
- [Thread globals](#thread-globals)
|
|
@@ -44,12 +43,13 @@ Run JavaScript on real background threads in React Native — no Workers, no Wor
|
|
|
44
43
|
- **True background threads** — each thread runs its own isolated **Hermes** runtime on a dedicated OS-level thread; the main React Native runtime is never blocked. Works on both **iOS** and **Android**.
|
|
45
44
|
- **Unlimited threads** — create as many threads as you need; each is isolated.
|
|
46
45
|
- **Shared thread** (`runOnJS`) — fire-and-forget tasks on a single persistent background thread; no teardown required.
|
|
47
|
-
- **
|
|
48
|
-
- **Parameter injection** — pass values from the main thread into the background function as
|
|
46
|
+
- **Promise-based `run()`** — `thread.run(fn, params)` returns a `Promise` that resolves with the value passed to `resolve(data)` and rejects on uncaught thread errors. Chain `.then()` / `.catch()` or use `await`.
|
|
47
|
+
- **Parameter injection** — pass values from the main thread into the background function as `(args, resolve) => { ... }`. Supports primitives, objects, arrays, **and functions**.
|
|
48
|
+
- **`resolve` as second param** — the callback to send a result back is passed directly as the second argument to your task function — no globals needed.
|
|
49
49
|
- **Function params** — pass functions (including imported ones) alongside plain data in the params object. The Babel plugin extracts their source at compile time and captures closed-over variables transitively.
|
|
50
50
|
- **Cross-module function params** — functions imported from other files (e.g. `import { compute } from './math'`) are automatically resolved and inlined by the Babel plugin.
|
|
51
51
|
- **Named threads** — give threads friendly names; list or destroy them by name.
|
|
52
|
-
- **Error handling** — thread exceptions are automatically caught and forwarded to the main thread
|
|
52
|
+
- **Error handling** — thread exceptions are automatically caught and forwarded to the main thread via the rejected `Promise`.
|
|
53
53
|
- **Full `console` support** — `console.log/info/warn/error/debug` work inside threads and appear in Logcat / Xcode logs.
|
|
54
54
|
- **Timer support** — `setTimeout`, `setInterval`, `clearTimeout`, and `clearInterval` work inside threads.
|
|
55
55
|
- **Hermes-safe** — ships a Babel plugin that extracts function source at compile time so Hermes bytecode never breaks serialisation. Required on both iOS and Android since both platforms use Hermes.
|
|
@@ -130,28 +130,29 @@ runOnJS((args) => {
|
|
|
130
130
|
// ── 2. Create a named, persistent thread ────────────────────────────────────
|
|
131
131
|
const thread = createThread('MyThread');
|
|
132
132
|
|
|
133
|
-
// Send work + params (
|
|
134
|
-
thread.run(
|
|
135
|
-
(args) => {
|
|
136
|
-
var
|
|
137
|
-
for (var i = 0; i < args.limit; i++)
|
|
138
|
-
|
|
133
|
+
// Send work + params — thread.run() returns a Promise
|
|
134
|
+
const result = await thread.run(
|
|
135
|
+
(args, resolve) => {
|
|
136
|
+
var sum = 0;
|
|
137
|
+
for (var i = 0; i < args.limit; i++) sum += i;
|
|
138
|
+
resolve({ sum });
|
|
139
139
|
},
|
|
140
140
|
{ limit: 1_000_000 }
|
|
141
141
|
);
|
|
142
|
+
console.log(result); // { sum: 499999500000 }
|
|
142
143
|
|
|
143
144
|
// ── 2b. Pass functions as params ────────────────────────────────────────────
|
|
144
145
|
function multiply(a, b) {
|
|
145
146
|
return a * b;
|
|
146
147
|
}
|
|
147
148
|
|
|
148
|
-
thread.run(
|
|
149
|
-
(args) => {
|
|
150
|
-
|
|
151
|
-
resolveThreadMessage(result);
|
|
149
|
+
const product = await thread.run(
|
|
150
|
+
(args, resolve) => {
|
|
151
|
+
resolve(args.multiply(args.x, args.y));
|
|
152
152
|
},
|
|
153
153
|
{ x: 6, y: 7, multiply }
|
|
154
154
|
);
|
|
155
|
+
console.log(product); // 42
|
|
155
156
|
|
|
156
157
|
// Async function params work too — the Babel plugin transforms async/await
|
|
157
158
|
// to generator-based code before sending to the Hermes thread runtime:
|
|
@@ -163,21 +164,22 @@ const isPrime = async (num) => {
|
|
|
163
164
|
return 'Prime';
|
|
164
165
|
};
|
|
165
166
|
|
|
166
|
-
thread.run(
|
|
167
|
-
async (args) => {
|
|
167
|
+
const verdict = await thread.run(
|
|
168
|
+
async (args, resolve) => {
|
|
168
169
|
const result = await args.isPrime(args.num);
|
|
169
|
-
|
|
170
|
+
resolve(`${args.num} is ${result}`);
|
|
170
171
|
},
|
|
171
172
|
{ num: 17, isPrime }
|
|
172
173
|
);
|
|
174
|
+
console.log(verdict); // '17 is Prime'
|
|
173
175
|
|
|
174
176
|
// Functions that close over outer variables work too:
|
|
175
177
|
const factor = 10;
|
|
176
178
|
const scale = (n) => n * factor;
|
|
177
179
|
|
|
178
|
-
thread.run(
|
|
179
|
-
(args) => {
|
|
180
|
-
|
|
180
|
+
const scaled = await thread.run(
|
|
181
|
+
(args, resolve) => {
|
|
182
|
+
resolve(args.scale(5)); // 50
|
|
181
183
|
},
|
|
182
184
|
{ scale }
|
|
183
185
|
);
|
|
@@ -185,28 +187,36 @@ thread.run(
|
|
|
185
187
|
// Imported functions are also supported:
|
|
186
188
|
import { checkEvenOdd } from './utils';
|
|
187
189
|
|
|
188
|
-
thread.run(
|
|
189
|
-
(args) => {
|
|
190
|
-
|
|
190
|
+
const parity = await thread.run(
|
|
191
|
+
(args, resolve) => {
|
|
192
|
+
resolve(args.checkEvenOdd(args.num));
|
|
191
193
|
},
|
|
192
194
|
{ num: 42, checkEvenOdd }
|
|
193
195
|
);
|
|
194
196
|
|
|
195
|
-
//
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
197
|
+
// Error handling — thread.run() rejects if the thread throws
|
|
198
|
+
try {
|
|
199
|
+
const data = await thread.run((args, resolve) => {
|
|
200
|
+
throw new Error('something went wrong');
|
|
201
|
+
});
|
|
202
|
+
} catch (err) {
|
|
203
|
+
console.warn(err.message); // 'something went wrong'
|
|
204
|
+
}
|
|
199
205
|
|
|
200
|
-
//
|
|
201
|
-
|
|
202
|
-
|
|
206
|
+
// Or with .then() / .catch()
|
|
207
|
+
thread
|
|
208
|
+
.run(async (args, resolve) => {
|
|
209
|
+
const result = await args.isPrime(args.num);
|
|
210
|
+
resolve(`${args.num} is ${result}`);
|
|
211
|
+
}, { num: 17, isPrime })
|
|
212
|
+
.then((data) => console.log(data))
|
|
213
|
+
.catch((err) => console.warn(err.message));
|
|
203
214
|
|
|
204
215
|
// ── 3. List all running threads ─────────────────────────────────────────────
|
|
205
216
|
console.log(getThreads());
|
|
206
217
|
// [{ id: 1, name: 'RNOrgThread' }, { id: 2, name: 'MyThread' }]
|
|
207
218
|
|
|
208
219
|
// ── 4. Clean up ─────────────────────────────────────────────────────────────
|
|
209
|
-
unsubscribe();
|
|
210
220
|
thread.destroy(); // by handle
|
|
211
221
|
destroyThread('MyThread'); // by name — same effect
|
|
212
222
|
destroyThread(2); // by id — same effect
|
|
@@ -334,13 +344,8 @@ Object returned by `createThread` and `runOnNewJS`.
|
|
|
334
344
|
type ThreadHandle = {
|
|
335
345
|
readonly id: number;
|
|
336
346
|
readonly name: string;
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
onMessage(handler: (data: unknown) => void): () => void;
|
|
340
|
-
/** Promise variant — resolves on success, rejects on thread error. */
|
|
341
|
-
onMessage(): Promise<unknown>;
|
|
342
|
-
/** Subscribe to errors thrown inside this thread. Returns unsubscribe fn. */
|
|
343
|
-
onError(handler: (error: ThreadError) => void): () => void;
|
|
347
|
+
/** Runs task on this thread. Resolves with the value passed to resolve(), rejects on error. */
|
|
348
|
+
run(task: ThreadTask, params?: unknown): Promise<unknown>;
|
|
344
349
|
destroy(): void;
|
|
345
350
|
};
|
|
346
351
|
```
|
|
@@ -349,27 +354,11 @@ type ThreadHandle = {
|
|
|
349
354
|
|---|---|
|
|
350
355
|
| `id` | Numeric ID assigned by the native layer. |
|
|
351
356
|
| `name` | Display name provided at creation (or the default `RNThread-<id>`). |
|
|
352
|
-
| `run(task, params?)` | Execute `task` on this thread. `
|
|
353
|
-
| `onMessage(handler)` | Subscribe to `resolveThreadMessage` output from **this thread only**. Error messages are filtered out. Returns an unsubscribe function. |
|
|
354
|
-
| `onMessage()` | Returns a `Promise` that resolves with the next message from **this thread only**, or **rejects** with an `Error` if the thread threw. Auto-unsubscribes. |
|
|
355
|
-
| `onError(handler)` | Subscribe to uncaught exceptions from **this thread only**. The handler receives a `ThreadError` with `message` and `stack`. Returns an unsubscribe function. |
|
|
357
|
+
| `run(task, params?)` | Execute `task` on this thread. Returns a `Promise` that resolves with the value passed to `resolve(data)` inside the task, or rejects if the thread throws. Can be called multiple times. |
|
|
356
358
|
| `destroy()` | Shut down the thread and remove it from the registry. Equivalent to calling `destroyThread(handle.id)`. |
|
|
357
359
|
|
|
358
360
|
---
|
|
359
361
|
|
|
360
|
-
### `ThreadError`
|
|
361
|
-
|
|
362
|
-
```ts
|
|
363
|
-
type ThreadError = {
|
|
364
|
-
message: string;
|
|
365
|
-
stack: string;
|
|
366
|
-
};
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
Received by `ThreadHandle.onError` when a thread throws an uncaught exception. The `message` is the error's `.message` and `stack` is the `.stack` trace from the thread engine.
|
|
370
|
-
|
|
371
|
-
---
|
|
372
|
-
|
|
373
362
|
### `ThreadInfo`
|
|
374
363
|
|
|
375
364
|
```ts
|
|
@@ -386,10 +375,12 @@ Returned by `getThreads()`.
|
|
|
386
375
|
### `ThreadTask`
|
|
387
376
|
|
|
388
377
|
```ts
|
|
389
|
-
type ThreadTask =
|
|
378
|
+
type ThreadTask =
|
|
379
|
+
| ((args: any, resolve: (data: unknown) => void) => void)
|
|
380
|
+
| string;
|
|
390
381
|
```
|
|
391
382
|
|
|
392
|
-
Either an arrow function / function expression (transformed by the Babel plugin) or a raw JS code string. When a function is used, `params` is passed as
|
|
383
|
+
Either an arrow function / function expression (transformed by the Babel plugin) or a raw JS code string. When a function is used, `params` is passed as `args` (first argument) and the resolve callback as `resolve` (second argument). Call `resolve(data)` to return a value to the caller.
|
|
393
384
|
|
|
394
385
|
---
|
|
395
386
|
|
|
@@ -406,20 +397,14 @@ declare function resolveThreadMessage(data: unknown): void
|
|
|
406
397
|
Sends `data` back to the main JS thread. The value is JSON-serialised in the background thread and JSON-parsed before reaching the `onMessage` handler. Must be JSON-serialisable (`object`, `array`, `string`, `number`, `boolean`, or `null`).
|
|
407
398
|
|
|
408
399
|
```ts
|
|
409
|
-
thread.run((args) => {
|
|
410
|
-
|
|
400
|
+
const data = await thread.run((args, resolve) => {
|
|
401
|
+
resolve({ status: 'done', value: args.multiply * 2 });
|
|
411
402
|
}, { multiply: 21 });
|
|
412
|
-
|
|
413
|
-
// Callback
|
|
414
|
-
thread.onMessage((data) => {
|
|
415
|
-
console.log(data); // { status: 'done', value: 42 }
|
|
416
|
-
});
|
|
417
|
-
|
|
418
|
-
// Promise
|
|
419
|
-
const data = await thread.onMessage();
|
|
420
403
|
console.log(data); // { status: 'done', value: 42 }
|
|
421
404
|
```
|
|
422
405
|
|
|
406
|
+
> `resolveThreadMessage` is also available as a global inside the thread (useful for raw code strings), and is the same function that `resolve` points to.
|
|
407
|
+
|
|
423
408
|
---
|
|
424
409
|
|
|
425
410
|
### `console`
|
|
@@ -460,29 +445,30 @@ Injected by the library when you pass a second argument to `run()`, `runOnJS()`,
|
|
|
460
445
|
You can access the params value in two ways:
|
|
461
446
|
|
|
462
447
|
```ts
|
|
463
|
-
// Option A — args callback
|
|
464
|
-
thread.run(
|
|
465
|
-
(args) => {
|
|
448
|
+
// Option A — args/resolve callback parameters
|
|
449
|
+
await thread.run(
|
|
450
|
+
(args, resolve) => {
|
|
466
451
|
for (var i = 0; i < args.iterations; i++) {
|
|
467
452
|
// ...
|
|
468
453
|
}
|
|
469
|
-
|
|
454
|
+
resolve('done');
|
|
470
455
|
},
|
|
471
456
|
{ iterations: 50_000 }
|
|
472
457
|
);
|
|
473
458
|
|
|
474
|
-
// Option B — __params__ global
|
|
475
|
-
|
|
476
|
-
|
|
459
|
+
// Option B — __params__ global + resolveThreadMessage global
|
|
460
|
+
// (works in both functions and raw code strings)
|
|
461
|
+
await thread.run(
|
|
462
|
+
(args, resolve) => {
|
|
477
463
|
for (var i = 0; i < __params__.iterations; i++) {
|
|
478
464
|
// ...
|
|
479
465
|
}
|
|
480
|
-
|
|
466
|
+
resolve('done');
|
|
481
467
|
},
|
|
482
468
|
{ iterations: 50_000 }
|
|
483
469
|
);
|
|
484
470
|
|
|
485
|
-
// Option C — raw code string (
|
|
471
|
+
// Option C — raw code string (__params__ and resolveThreadMessage globals)
|
|
486
472
|
thread.run(
|
|
487
473
|
'for (var i = 0; i < __params__.iterations; i++) {} resolveThreadMessage("done")',
|
|
488
474
|
{ iterations: 50_000 }
|
|
@@ -509,17 +495,17 @@ The included Babel plugin runs at **compile time** — before Hermes touches the
|
|
|
509
495
|
|
|
510
496
|
#### Task function (first argument)
|
|
511
497
|
|
|
512
|
-
Arrow functions and function expressions (including `async`) are replaced with a string literal wrapped as an IIFE. `async`/`await` is transformed to generator-based code because Hermes' eval-mode compiler does not support async syntax:
|
|
498
|
+
Arrow functions and function expressions (including `async`) are replaced with a string literal wrapped as an IIFE. `async`/`await` is transformed to generator-based code because Hermes' eval-mode compiler does not support async syntax. The generated call passes both `__params__` and the global `resolveThreadMessage` so they arrive as `args` and `resolve` respectively:
|
|
513
499
|
|
|
514
500
|
```js
|
|
515
501
|
// Input (your source)
|
|
516
|
-
thread.run(async (args) => {
|
|
502
|
+
thread.run(async (args, resolve) => {
|
|
517
503
|
const result = await args.compute(args.num);
|
|
518
|
-
|
|
504
|
+
resolve(result);
|
|
519
505
|
}, { num: 42, compute });
|
|
520
506
|
|
|
521
507
|
// Output (what Hermes compiles) — async transformed, compute inlined
|
|
522
|
-
thread.run("((function(){ ... _asyncToGenerator ... })())(__params__)", {
|
|
508
|
+
thread.run("((function(){ ... _asyncToGenerator ... })())(__params__, resolveThreadMessage)", {
|
|
523
509
|
num: 42,
|
|
524
510
|
compute: { __rnThreadFn: "(function(){ ... })()" }
|
|
525
511
|
});
|
|
@@ -566,9 +552,9 @@ thread.run(fn, { checkEvenOdd });
|
|
|
566
552
|
|
|
567
553
|
| Pattern | Task transformed | Params transformed |
|
|
568
554
|
|---|---|---|
|
|
569
|
-
| `runOnJS(() => { ... }, { fn })` | Yes | Yes |
|
|
570
|
-
| `runOnNewJS(() => { ... }, { fn })` | Yes | Yes |
|
|
571
|
-
| `anyHandle.run(() => { ... }, { fn })` | Yes | Yes |
|
|
555
|
+
| `runOnJS((args) => { ... }, { fn })` | Yes | Yes |
|
|
556
|
+
| `runOnNewJS((args, resolve) => { ... }, { fn })` | Yes | Yes |
|
|
557
|
+
| `anyHandle.run((args, resolve) => { ... }, { fn })` | Yes | Yes |
|
|
572
558
|
| Raw code string `run("...", { fn })` | No (already a string) | Yes |
|
|
573
559
|
|
|
574
560
|
### What the plugin captures in params
|
|
@@ -297,7 +297,7 @@ module.exports = function reactNativeThreadPlugin({
|
|
|
297
297
|
}
|
|
298
298
|
const originalCode = state.file.code;
|
|
299
299
|
const fnSource = transpileForThread(originalCode.slice(argNode.start, argNode.end), state);
|
|
300
|
-
const iife = `(${fnSource})(__params__)`;
|
|
300
|
+
const iife = `(${fnSource})(__params__, resolveThreadMessage)`;
|
|
301
301
|
callPath.node.arguments[index] = t.stringLiteral(iife);
|
|
302
302
|
}
|
|
303
303
|
|
|
@@ -416,12 +416,51 @@ module.exports = function reactNativeThreadPlugin({
|
|
|
416
416
|
return {
|
|
417
417
|
name: 'react-native-thread',
|
|
418
418
|
visitor: {
|
|
419
|
+
// Collect the local names that were actually imported from this library
|
|
420
|
+
// so we never accidentally intercept same-named APIs (e.g. Reanimated's
|
|
421
|
+
// runOnJS / runOnNewJS) or generic .run() methods from other libraries.
|
|
422
|
+
Program: {
|
|
423
|
+
enter(programPath, state) {
|
|
424
|
+
const threadLocalNames = new Set(); // runOnJS, runOnNewJS, createThread …
|
|
425
|
+
const threadHandleNames = new Set(); // const t = createThread(…)
|
|
426
|
+
|
|
427
|
+
programPath.traverse({
|
|
428
|
+
ImportDeclaration(importPath) {
|
|
429
|
+
if (importPath.node.source.value === '@rn-org/react-native-thread') {
|
|
430
|
+
for (const specifier of importPath.node.specifiers) {
|
|
431
|
+
threadLocalNames.add(specifier.local.name);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
|
|
437
|
+
// Second pass: track variables initialised by a library call so
|
|
438
|
+
// that `thread.run(fn)` is only transformed for real thread handles.
|
|
439
|
+
if (threadLocalNames.size > 0) {
|
|
440
|
+
programPath.traverse({
|
|
441
|
+
VariableDeclarator(varPath) {
|
|
442
|
+
if (t.isIdentifier(varPath.node.id) && t.isCallExpression(varPath.node.init) && t.isIdentifier(varPath.node.init.callee) && threadLocalNames.has(varPath.node.init.callee.name)) {
|
|
443
|
+
threadHandleNames.add(varPath.node.id.name);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
state.rnThreadLocalNames = threadLocalNames;
|
|
449
|
+
state.rnThreadHandleNames = threadHandleNames;
|
|
450
|
+
}
|
|
451
|
+
},
|
|
419
452
|
CallExpression(path, state) {
|
|
420
453
|
const {
|
|
421
454
|
callee,
|
|
422
455
|
arguments: args
|
|
423
456
|
} = path.node;
|
|
457
|
+
const localNames = state.rnThreadLocalNames;
|
|
458
|
+
const handleNames = state.rnThreadHandleNames;
|
|
459
|
+
|
|
460
|
+
// runOnJS / runOnNewJS — only when imported from THIS library,
|
|
461
|
+
// not Reanimated's same-named exports.
|
|
424
462
|
if (t.isIdentifier(callee) && TOP_LEVEL_API.has(callee.name)) {
|
|
463
|
+
if (!localNames || !localNames.has(callee.name)) return;
|
|
425
464
|
if (args.length >= 1) {
|
|
426
465
|
maybeTransformArg(path, state, args[0], 0);
|
|
427
466
|
}
|
|
@@ -430,7 +469,19 @@ module.exports = function reactNativeThreadPlugin({
|
|
|
430
469
|
}
|
|
431
470
|
return;
|
|
432
471
|
}
|
|
472
|
+
|
|
473
|
+
// thread.run() — only on identifiers we can trace to a thread handle.
|
|
433
474
|
if (t.isMemberExpression(callee) && !callee.computed && t.isIdentifier(callee.property) && METHOD_API.has(callee.property.name)) {
|
|
475
|
+
// If we have no thread imports at all in this file, skip entirely.
|
|
476
|
+
if (!localNames || localNames.size === 0) return;
|
|
477
|
+
// If the object is an identifier we can check, require it to be a
|
|
478
|
+
// known handle. If it's a complex expression (memberExpr, call, …)
|
|
479
|
+
// we skip to avoid false positives.
|
|
480
|
+
if (t.isIdentifier(callee.object)) {
|
|
481
|
+
if (!handleNames || !handleNames.has(callee.object.name)) return;
|
|
482
|
+
} else {
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
434
485
|
if (args.length >= 1) {
|
|
435
486
|
maybeTransformArg(path, state, args[0], 0);
|
|
436
487
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nodePath","require","fs","TOP_LEVEL_API","Set","METHOD_API","SKIP_KEYS","module","exports","reactNativeThreadPlugin","types","t","babel","parser","RESOLVE_EXTS","resolveImportedFnSource","importSource","exportName","state","currentFile","filename","file","opts","startsWith","dir","dirname","resolvedFile","ext","candidate","resolve","existsSync","statSync","isFile","source","readFileSync","ast","parse","sourceType","plugins","stmt","program","body","isExportNamedDeclaration","declaration","isFunctionDeclaration","id","name","raw","slice","start","end","transpileForThread","isVariableDeclaration","decl","declarations","isVariableDeclarator","isIdentifier","init","isFunctionExpression","isArrowFunctionExpression","collectReferencedIds","node","ids","walk","n","skipId","Array","isArray","forEach","el","type","add","isMemberExpression","object","computed","property","isObjectProperty","key","value","Object","keys","has","collectLocalNames","fnNode","names","params","p","isAssignmentPattern","left","isRestElement","argument","getCaptureDecls","scope","captures","seen","capture","targetFnNode","referenced","locals","binding","getBinding","bNode","path","isLiteral","initSrc","code","push","declaratorSrc","eqIdx","indexOf","rawInit","trim","test","fnSrc","babelCore","fn","isTS","hasAsync","replace","isTSX","asyncPluginLoaded","length","MARKER","inputCode","result","transformSync","configFile","babelrc","output","idx","lastIndexOf","includes","helpers","substring","expr","maybeTransformArg","callPath","argNode","index","originalCode","fnSource","iife","arguments","stringLiteral","extractFnSource","isImported","parsed","expression","isImportSpecifier","isImportDefaultSpecifier","importDecl","parentPath","imported","join","tagFnValue","objectExpression","objectProperty","identifier","maybeTransformParams","paramsNode","isObjectExpression","prop","properties","shorthand","isArrayExpression","maybeTransformArrayParams","arrNode","i","elements","visitor","CallExpression","callee","args"],"sourceRoot":"../../src","sources":["babel-plugin.js"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["nodePath","require","fs","TOP_LEVEL_API","Set","METHOD_API","SKIP_KEYS","module","exports","reactNativeThreadPlugin","types","t","babel","parser","RESOLVE_EXTS","resolveImportedFnSource","importSource","exportName","state","currentFile","filename","file","opts","startsWith","dir","dirname","resolvedFile","ext","candidate","resolve","existsSync","statSync","isFile","source","readFileSync","ast","parse","sourceType","plugins","stmt","program","body","isExportNamedDeclaration","declaration","isFunctionDeclaration","id","name","raw","slice","start","end","transpileForThread","isVariableDeclaration","decl","declarations","isVariableDeclarator","isIdentifier","init","isFunctionExpression","isArrowFunctionExpression","collectReferencedIds","node","ids","walk","n","skipId","Array","isArray","forEach","el","type","add","isMemberExpression","object","computed","property","isObjectProperty","key","value","Object","keys","has","collectLocalNames","fnNode","names","params","p","isAssignmentPattern","left","isRestElement","argument","getCaptureDecls","scope","captures","seen","capture","targetFnNode","referenced","locals","binding","getBinding","bNode","path","isLiteral","initSrc","code","push","declaratorSrc","eqIdx","indexOf","rawInit","trim","test","fnSrc","babelCore","fn","isTS","hasAsync","replace","isTSX","asyncPluginLoaded","length","MARKER","inputCode","result","transformSync","configFile","babelrc","output","idx","lastIndexOf","includes","helpers","substring","expr","maybeTransformArg","callPath","argNode","index","originalCode","fnSource","iife","arguments","stringLiteral","extractFnSource","isImported","parsed","expression","isImportSpecifier","isImportDefaultSpecifier","importDecl","parentPath","imported","join","tagFnValue","objectExpression","objectProperty","identifier","maybeTransformParams","paramsNode","isObjectExpression","prop","properties","shorthand","isArrayExpression","maybeTransformArrayParams","arrNode","i","elements","visitor","Program","enter","programPath","threadLocalNames","threadHandleNames","traverse","ImportDeclaration","importPath","specifier","specifiers","local","size","VariableDeclarator","varPath","isCallExpression","callee","rnThreadLocalNames","rnThreadHandleNames","CallExpression","args","localNames","handleNames"],"sourceRoot":"../../src","sources":["babel-plugin.js"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -64,8 +64,8 @@ function toCode(task, params) {
|
|
|
64
64
|
}
|
|
65
65
|
return '/* bytecode: no-op */';
|
|
66
66
|
}
|
|
67
|
-
const argsStr = params !== undefined ? _serializeValue(params) : '';
|
|
68
|
-
return _wrapWithErrorHandler(`(${src})(${argsStr})`);
|
|
67
|
+
const argsStr = params !== undefined ? _serializeValue(params) : 'undefined';
|
|
68
|
+
return _wrapWithErrorHandler(`(${src})(${argsStr}, resolveThreadMessage)`);
|
|
69
69
|
}
|
|
70
70
|
const SHARED_THREAD_NAME = 'RNOrgThread';
|
|
71
71
|
let _sharedThreadId = null;
|
|
@@ -162,14 +162,6 @@ function createThreadHandle(id, name) {
|
|
|
162
162
|
id,
|
|
163
163
|
name,
|
|
164
164
|
run(task, params) {
|
|
165
|
-
ReactNativeThread.runOnThread(id, toCode(task, params));
|
|
166
|
-
},
|
|
167
|
-
onMessage: function (handler) {
|
|
168
|
-
if (handler) {
|
|
169
|
-
return onMessage((data, threadId) => {
|
|
170
|
-
if (threadId === id && !_isThreadError(data)) handler(data);
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
165
|
return new Promise((resolve, reject) => {
|
|
174
166
|
const unsub = onMessage((data, threadId) => {
|
|
175
167
|
if (threadId === id) {
|
|
@@ -183,16 +175,7 @@ function createThreadHandle(id, name) {
|
|
|
183
175
|
}
|
|
184
176
|
}
|
|
185
177
|
});
|
|
186
|
-
|
|
187
|
-
},
|
|
188
|
-
onError(handler) {
|
|
189
|
-
return onMessage((data, threadId) => {
|
|
190
|
-
if (threadId === id && _isThreadError(data)) {
|
|
191
|
-
handler({
|
|
192
|
-
message: data.message,
|
|
193
|
-
stack: data.stack
|
|
194
|
-
});
|
|
195
|
-
}
|
|
178
|
+
ReactNativeThread.runOnThread(id, toCode(task, params));
|
|
196
179
|
});
|
|
197
180
|
},
|
|
198
181
|
destroy() {
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","ReactNativeThread","_emitter","RN_THREAD_MESSAGE_EVENT","_registry","Map","_findByName","name","info","values","undefined","_register","id","set","_unregister","delete","_isBytecode","src","includes","test","_serializeValue","value","toString","__DEV__","console","warn","JSON","stringify","String","Array","isArray","map","join","rec","__rnThreadFn","entries","Object","k","v","_wrapWithErrorHandler","code","toCode","task","params","paramsCode","argsStr","SHARED_THREAD_NAME","_sharedThreadId","getSharedThread","createThread","runOnJS","runOnThread","runOnNewJS","existing","createThreadHandle","resolvedName","getThreads","from","destroyThread","idOrName","targetId","has","onMessage","handler","sub","addListener","event","parsed","data","parse","threadId","remove","Promise","resolve","_isThreadError","__rnThreadError","run","reject","unsub","err","Error","message","stack","
|
|
1
|
+
{"version":3,"names":["NativeEventEmitter","ReactNativeThread","_emitter","RN_THREAD_MESSAGE_EVENT","_registry","Map","_findByName","name","info","values","undefined","_register","id","set","_unregister","delete","_isBytecode","src","includes","test","_serializeValue","value","toString","__DEV__","console","warn","JSON","stringify","String","Array","isArray","map","join","rec","__rnThreadFn","entries","Object","k","v","_wrapWithErrorHandler","code","toCode","task","params","paramsCode","argsStr","SHARED_THREAD_NAME","_sharedThreadId","getSharedThread","createThread","runOnJS","runOnThread","runOnNewJS","existing","createThreadHandle","resolvedName","getThreads","from","destroyThread","idOrName","targetId","has","onMessage","handler","sub","addListener","event","parsed","data","parse","threadId","remove","Promise","resolve","_isThreadError","__rnThreadError","run","reject","unsub","err","Error","message","stack","destroy"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ThreadTask = ((args
|
|
1
|
+
export type ThreadTask = ((args: any, resolveThreadMessage: (data: unknown) => void) => void) | string;
|
|
2
2
|
export type ThreadInfo = {
|
|
3
3
|
readonly id: number;
|
|
4
4
|
readonly name: string;
|
|
@@ -10,10 +10,7 @@ export type ThreadError = {
|
|
|
10
10
|
export type ThreadHandle = {
|
|
11
11
|
readonly id: number;
|
|
12
12
|
readonly name: string;
|
|
13
|
-
run(task: ThreadTask, params?: unknown):
|
|
14
|
-
onMessage(handler: (data: unknown) => void): () => void;
|
|
15
|
-
onMessage(): Promise<unknown>;
|
|
16
|
-
onError(handler: (error: ThreadError) => void): () => void;
|
|
13
|
+
run(task: ThreadTask, params?: unknown): Promise<unknown>;
|
|
17
14
|
destroy(): void;
|
|
18
15
|
};
|
|
19
16
|
export declare function runOnJS(task: ThreadTask, params?: unknown): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAClB,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC,GACpE,MAAM,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAoGF,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAEhE;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,UAAU,EAChB,MAAM,CAAC,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,YAAY,CAYd;AAED,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAWxD;AAED,wBAAgB,UAAU,IAAI,UAAU,EAAE,CAEzC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0B7D;AAED,wBAAgB,SAAS,CACvB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GACjD,MAAM,IAAI,CAAC;AACd,wBAAgB,SAAS,IAAI,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rn-org/react-native-thread",
|
|
3
|
-
"version": "0.8.
|
|
4
|
-
"description": "Run JavaScript on real background threads in React Native — no Workers, no Worklets. Uses
|
|
3
|
+
"version": "0.8.3",
|
|
4
|
+
"description": "Run JavaScript on real background threads in React Native — no Workers, no Worklets. Uses Hermes on both iOS and Android, each on a dedicated OS-level thread. Built as a New Architecture TurboModule.",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
|
-
"react-native": "./src/index.tsx",
|
|
7
6
|
"types": "./lib/typescript/src/index.d.ts",
|
|
8
7
|
"exports": {
|
|
9
8
|
".": {
|
|
10
|
-
"react-native": "./src/index.tsx",
|
|
11
9
|
"source": "./src/index.tsx",
|
|
12
10
|
"types": "./lib/typescript/src/index.d.ts",
|
|
13
11
|
"default": "./lib/module/index.js"
|
|
@@ -51,8 +49,7 @@
|
|
|
51
49
|
"thread",
|
|
52
50
|
"background-thread",
|
|
53
51
|
"multithreading",
|
|
54
|
-
"
|
|
55
|
-
"rhino",
|
|
52
|
+
"hermes",
|
|
56
53
|
"turbo-module",
|
|
57
54
|
"new-architecture",
|
|
58
55
|
"worker",
|
package/src/babel-plugin.js
CHANGED
|
@@ -373,7 +373,7 @@ module.exports = function reactNativeThreadPlugin({ types: t, ...babel }) {
|
|
|
373
373
|
originalCode.slice(argNode.start, argNode.end),
|
|
374
374
|
state
|
|
375
375
|
);
|
|
376
|
-
const iife = `(${fnSource})(__params__)`;
|
|
376
|
+
const iife = `(${fnSource})(__params__, resolveThreadMessage)`;
|
|
377
377
|
|
|
378
378
|
callPath.node.arguments[index] = t.stringLiteral(iife);
|
|
379
379
|
}
|
|
@@ -521,10 +521,57 @@ module.exports = function reactNativeThreadPlugin({ types: t, ...babel }) {
|
|
|
521
521
|
return {
|
|
522
522
|
name: 'react-native-thread',
|
|
523
523
|
visitor: {
|
|
524
|
+
// Collect the local names that were actually imported from this library
|
|
525
|
+
// so we never accidentally intercept same-named APIs (e.g. Reanimated's
|
|
526
|
+
// runOnJS / runOnNewJS) or generic .run() methods from other libraries.
|
|
527
|
+
Program: {
|
|
528
|
+
enter(programPath, state) {
|
|
529
|
+
const threadLocalNames = new Set(); // runOnJS, runOnNewJS, createThread …
|
|
530
|
+
const threadHandleNames = new Set(); // const t = createThread(…)
|
|
531
|
+
|
|
532
|
+
programPath.traverse({
|
|
533
|
+
ImportDeclaration(importPath) {
|
|
534
|
+
if (
|
|
535
|
+
importPath.node.source.value === '@rn-org/react-native-thread'
|
|
536
|
+
) {
|
|
537
|
+
for (const specifier of importPath.node.specifiers) {
|
|
538
|
+
threadLocalNames.add(specifier.local.name);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
},
|
|
542
|
+
});
|
|
543
|
+
|
|
544
|
+
// Second pass: track variables initialised by a library call so
|
|
545
|
+
// that `thread.run(fn)` is only transformed for real thread handles.
|
|
546
|
+
if (threadLocalNames.size > 0) {
|
|
547
|
+
programPath.traverse({
|
|
548
|
+
VariableDeclarator(varPath) {
|
|
549
|
+
if (
|
|
550
|
+
t.isIdentifier(varPath.node.id) &&
|
|
551
|
+
t.isCallExpression(varPath.node.init) &&
|
|
552
|
+
t.isIdentifier(varPath.node.init.callee) &&
|
|
553
|
+
threadLocalNames.has(varPath.node.init.callee.name)
|
|
554
|
+
) {
|
|
555
|
+
threadHandleNames.add(varPath.node.id.name);
|
|
556
|
+
}
|
|
557
|
+
},
|
|
558
|
+
});
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
state.rnThreadLocalNames = threadLocalNames;
|
|
562
|
+
state.rnThreadHandleNames = threadHandleNames;
|
|
563
|
+
},
|
|
564
|
+
},
|
|
565
|
+
|
|
524
566
|
CallExpression(path, state) {
|
|
525
567
|
const { callee, arguments: args } = path.node;
|
|
568
|
+
const localNames = state.rnThreadLocalNames;
|
|
569
|
+
const handleNames = state.rnThreadHandleNames;
|
|
526
570
|
|
|
571
|
+
// runOnJS / runOnNewJS — only when imported from THIS library,
|
|
572
|
+
// not Reanimated's same-named exports.
|
|
527
573
|
if (t.isIdentifier(callee) && TOP_LEVEL_API.has(callee.name)) {
|
|
574
|
+
if (!localNames || !localNames.has(callee.name)) return;
|
|
528
575
|
if (args.length >= 1) {
|
|
529
576
|
maybeTransformArg(path, state, args[0], 0);
|
|
530
577
|
}
|
|
@@ -534,12 +581,23 @@ module.exports = function reactNativeThreadPlugin({ types: t, ...babel }) {
|
|
|
534
581
|
return;
|
|
535
582
|
}
|
|
536
583
|
|
|
584
|
+
// thread.run() — only on identifiers we can trace to a thread handle.
|
|
537
585
|
if (
|
|
538
586
|
t.isMemberExpression(callee) &&
|
|
539
587
|
!callee.computed &&
|
|
540
588
|
t.isIdentifier(callee.property) &&
|
|
541
589
|
METHOD_API.has(callee.property.name)
|
|
542
590
|
) {
|
|
591
|
+
// If we have no thread imports at all in this file, skip entirely.
|
|
592
|
+
if (!localNames || localNames.size === 0) return;
|
|
593
|
+
// If the object is an identifier we can check, require it to be a
|
|
594
|
+
// known handle. If it's a complex expression (memberExpr, call, …)
|
|
595
|
+
// we skip to avoid false positives.
|
|
596
|
+
if (t.isIdentifier(callee.object)) {
|
|
597
|
+
if (!handleNames || !handleNames.has(callee.object.name)) return;
|
|
598
|
+
} else {
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
543
601
|
if (args.length >= 1) {
|
|
544
602
|
maybeTransformArg(path, state, args[0], 0);
|
|
545
603
|
}
|
package/src/index.tsx
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { NativeEventEmitter } from 'react-native';
|
|
2
2
|
import ReactNativeThread from './NativeReactNativeThread';
|
|
3
3
|
|
|
4
|
-
export type ThreadTask =
|
|
4
|
+
export type ThreadTask =
|
|
5
|
+
| ((args: any, resolveThreadMessage: (data: unknown) => void) => void)
|
|
6
|
+
| string;
|
|
5
7
|
|
|
6
8
|
export type ThreadInfo = {
|
|
7
9
|
readonly id: number;
|
|
@@ -16,10 +18,7 @@ export type ThreadError = {
|
|
|
16
18
|
export type ThreadHandle = {
|
|
17
19
|
readonly id: number;
|
|
18
20
|
readonly name: string;
|
|
19
|
-
run(task: ThreadTask, params?: unknown):
|
|
20
|
-
onMessage(handler: (data: unknown) => void): () => void;
|
|
21
|
-
onMessage(): Promise<unknown>;
|
|
22
|
-
onError(handler: (error: ThreadError) => void): () => void;
|
|
21
|
+
run(task: ThreadTask, params?: unknown): Promise<unknown>;
|
|
23
22
|
destroy(): void;
|
|
24
23
|
};
|
|
25
24
|
|
|
@@ -106,8 +105,8 @@ function toCode(task: ThreadTask, params?: unknown): string {
|
|
|
106
105
|
return '/* bytecode: no-op */';
|
|
107
106
|
}
|
|
108
107
|
|
|
109
|
-
const argsStr = params !== undefined ? _serializeValue(params) : '';
|
|
110
|
-
return _wrapWithErrorHandler(`(${src})(${argsStr})`);
|
|
108
|
+
const argsStr = params !== undefined ? _serializeValue(params) : 'undefined';
|
|
109
|
+
return _wrapWithErrorHandler(`(${src})(${argsStr}, resolveThreadMessage)`);
|
|
111
110
|
}
|
|
112
111
|
|
|
113
112
|
const SHARED_THREAD_NAME = 'RNOrgThread';
|
|
@@ -232,15 +231,7 @@ function createThreadHandle(id: number, name: string): ThreadHandle {
|
|
|
232
231
|
return {
|
|
233
232
|
id,
|
|
234
233
|
name,
|
|
235
|
-
run(task: ThreadTask, params?: unknown) {
|
|
236
|
-
ReactNativeThread.runOnThread(id, toCode(task, params));
|
|
237
|
-
},
|
|
238
|
-
onMessage: function (handler?: (data: unknown) => void) {
|
|
239
|
-
if (handler) {
|
|
240
|
-
return onMessage((data, threadId) => {
|
|
241
|
-
if (threadId === id && !_isThreadError(data)) handler(data);
|
|
242
|
-
});
|
|
243
|
-
}
|
|
234
|
+
run(task: ThreadTask, params?: unknown): Promise<unknown> {
|
|
244
235
|
return new Promise<unknown>((resolve, reject) => {
|
|
245
236
|
const unsub = onMessage((data, threadId) => {
|
|
246
237
|
if (threadId === id) {
|
|
@@ -254,13 +245,7 @@ function createThreadHandle(id: number, name: string): ThreadHandle {
|
|
|
254
245
|
}
|
|
255
246
|
}
|
|
256
247
|
});
|
|
257
|
-
|
|
258
|
-
} as ThreadHandle['onMessage'],
|
|
259
|
-
onError(handler: (error: ThreadError) => void) {
|
|
260
|
-
return onMessage((data, threadId) => {
|
|
261
|
-
if (threadId === id && _isThreadError(data)) {
|
|
262
|
-
handler({ message: data.message, stack: data.stack });
|
|
263
|
-
}
|
|
248
|
+
ReactNativeThread.runOnThread(id, toCode(task, params));
|
|
264
249
|
});
|
|
265
250
|
},
|
|
266
251
|
destroy() {
|