@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 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
- - **Per-thread message passing** call `resolveThreadMessage(data)` from any thread, receive it on the main thread with `onMessage` (callback or `await`).
48
- - **Parameter injection** — pass values from the main thread into the background function as a typed argument `(args) => { ... }`. Supports primitives, objects, arrays, **and functions**.
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. Use `onError` or `.catch()` on the `onMessage()` promise.
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 (including plain values)
134
- thread.run(
135
- (args) => {
136
- var result = 0;
137
- for (var i = 0; i < args.limit; i++) result += i;
138
- resolveThreadMessage({ sum: result });
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
- const result = args.multiply(args.x, args.y);
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
- resolveThreadMessage(`${args.num} is ${result}`);
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
- resolveThreadMessage(args.scale(5)); // 50
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
- resolveThreadMessage(args.checkEvenOdd(args.num));
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
- // Option Acallback
196
- const unsubscribe = thread.onMessage((data) => {
197
- console.log('Result from thread:', data);
198
- });
197
+ // Error handlingthread.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
- // Option B promise (resolves on the next message)
201
- const data = await thread.onMessage();
202
- console.log('Result from thread:', data);
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
- run(task: ThreadTask, params?: unknown): void;
338
- /** Callback variant fires on every successful message. Returns unsubscribe fn. */
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. `params` is passed as the first argument to the function. Can be called multiple times. |
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 = ((args?: any) => void) | string;
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 the first argument (`args`).
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
- resolveThreadMessage({ status: 'done', value: args.multiply * 2 });
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 parameter
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
- resolveThreadMessage('done');
454
+ resolve('done');
470
455
  },
471
456
  { iterations: 50_000 }
472
457
  );
473
458
 
474
- // Option B — __params__ global (works in both functions and raw code strings)
475
- thread.run(
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
- resolveThreadMessage('done');
466
+ resolve('done');
481
467
  },
482
468
  { iterations: 50_000 }
483
469
  );
484
470
 
485
- // Option C — raw code string (only __params__ is available)
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
- resolveThreadMessage(result);
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":[]}
@@ -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() {
@@ -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","onError","destroy"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,iBAAiB,MAAM,8BAA2B;AAwBzD,MAAMC,QAAQ,GAAG,IAAIF,kBAAkB,CAACC,iBAAiB,CAAC;AAC1D,MAAME,uBAAuB,GAAG,iBAAiB;AAEjD,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAqB,CAAC;AAE/C,SAASC,WAAWA,CAACC,IAAY,EAA0B;EACzD,KAAK,MAAMC,IAAI,IAAIJ,SAAS,CAACK,MAAM,CAAC,CAAC,EAAE;IACrC,IAAID,IAAI,CAACD,IAAI,KAAKA,IAAI,EAAE,OAAOC,IAAI;EACrC;EACA,OAAOE,SAAS;AAClB;AAEA,SAASC,SAASA,CAACC,EAAU,EAAEL,IAAY,EAAQ;EACjDH,SAAS,CAACS,GAAG,CAACD,EAAE,EAAE;IAAEA,EAAE;IAAEL;EAAK,CAAC,CAAC;AACjC;AAEA,SAASO,WAAWA,CAACF,EAAU,EAAQ;EACrCR,SAAS,CAACW,MAAM,CAACH,EAAE,CAAC;AACtB;AAEA,SAASI,WAAWA,CAACC,GAAW,EAAW;EACzC,OACEA,GAAG,CAACC,QAAQ,CAAC,YAAY,CAAC,IAC1B,0CAA0C,CAACC,IAAI,CAACF,GAAG,CAAC;AAExD;AAEA,SAASG,eAAeA,CAACC,KAAc,EAAU;EAC/C,IAAIA,KAAK,KAAKX,SAAS,EAAE,OAAO,WAAW;EAC3C,IAAIW,KAAK,KAAK,IAAI,EAAE,OAAO,MAAM;EACjC,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE;IAC/B,MAAMJ,GAAG,GAAGI,KAAK,CAACC,QAAQ,CAAC,CAAC;IAC5B,IAAIN,WAAW,CAACC,GAAG,CAAC,EAAE;MACpB,IAAIM,OAAO,EAAE;QACXC,OAAO,CAACC,IAAI,CACV,iFAAiF,GAC/E,6EACJ,CAAC;MACH;MACA,OAAO,WAAW;IACpB;IACA,OAAOR,GAAG;EACZ;EACA,IAAI,OAAOI,KAAK,KAAK,QAAQ,EAAE,OAAOK,IAAI,CAACC,SAAS,CAACN,KAAK,CAAC;EAC3D,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,SAAS,EACzD,OAAOO,MAAM,CAACP,KAAK,CAAC;EACtB,IAAIQ,KAAK,CAACC,OAAO,CAACT,KAAK,CAAC,EACtB,OAAO,GAAG,GAAGA,KAAK,CAACU,GAAG,CAACX,eAAe,CAAC,CAACY,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;EACzD,IAAI,OAAOX,KAAK,KAAK,QAAQ,EAAE;IAC7B,MAAMY,GAAG,GAAGZ,KAAgC;IAC5C,IAAI,OAAOY,GAAG,CAACC,YAAY,KAAK,QAAQ,EAAE;MACxC,OAAO,GAAG,GAAGD,GAAG,CAACC,YAAY,GAAG,GAAG;IACrC;IACA,MAAMC,OAAO,GAAGC,MAAM,CAACD,OAAO,CAACF,GAAG,CAAC,CAChCF,GAAG,CAAC,CAAC,CAACM,CAAC,EAAEC,CAAC,CAAC,KAAK,GAAGZ,IAAI,CAACC,SAAS,CAACU,CAAC,CAAC,IAAIjB,eAAe,CAACkB,CAAC,CAAC,EAAE,CAAC,CAC7DN,IAAI,CAAC,GAAG,CAAC;IACZ,OAAO,GAAG,GAAGG,OAAO,GAAG,GAAG;EAC5B;EACA,OAAOP,MAAM,CAACP,KAAK,CAAC;AACtB;AAEA,SAASkB,qBAAqBA,CAACC,IAAY,EAAU;EACnD,OAAO,SAASA,IAAI,yJAAyJ;AAC/K;AAEA,SAASC,MAAMA,CAACC,IAAgB,EAAEC,MAAgB,EAAU;EAC1D,IAAI,OAAOD,IAAI,KAAK,QAAQ,EAAE;IAC5B,MAAME,UAAU,GACdD,MAAM,KAAKjC,SAAS,GAAGU,eAAe,CAACuB,MAAM,CAAC,GAAG,WAAW;IAC9D,OAAOJ,qBAAqB,CAAC,oBAAoBK,UAAU,MAAMF,IAAI,EAAE,CAAC;EAC1E;EAEA,MAAMzB,GAAG,GAAGyB,IAAI,CAACpB,QAAQ,CAAC,CAAC;EAC3B,IAAIN,WAAW,CAACC,GAAG,CAAC,EAAE;IACpB,IAAIM,OAAO,EAAE;MACXC,OAAO,CAACC,IAAI,CACV,8EAA8E,GAC5E,6EACJ,CAAC;IACH;IACA,OAAO,uBAAuB;EAChC;EAEA,MAAMoB,OAAO,GAAGF,MAAM,KAAKjC,SAAS,GAAGU,eAAe,CAACuB,MAAM,CAAC,GAAG,EAAE;EACnE,OAAOJ,qBAAqB,CAAC,IAAItB,GAAG,KAAK4B,OAAO,GAAG,CAAC;AACtD;AAEA,MAAMC,kBAAkB,GAAG,aAAa;AACxC,IAAIC,eAA8B,GAAG,IAAI;AAEzC,SAASC,eAAeA,CAAA,EAAW;EACjC,IAAID,eAAe,KAAK,IAAI,EAAE;IAC5BA,eAAe,GAAG9C,iBAAiB,CAACgD,YAAY,CAAC,CAAC;IAClDtC,SAAS,CAACoC,eAAe,EAAED,kBAAkB,CAAC;EAChD;EACA,OAAOC,eAAe;AACxB;AAEA,OAAO,SAASG,OAAOA,CAACR,IAAgB,EAAEC,MAAgB,EAAQ;EAChE1C,iBAAiB,CAACkD,WAAW,CAACH,eAAe,CAAC,CAAC,EAAEP,MAAM,CAACC,IAAI,EAAEC,MAAM,CAAC,CAAC;AACxE;AAEA,OAAO,SAASS,UAAUA,CACxBV,IAAgB,EAChBC,MAAgB,EAChBpC,IAAa,EACC;EACd,IAAIA,IAAI,IAAI,IAAI,EAAE;IAChB,MAAM8C,QAAQ,GAAG/C,WAAW,CAACC,IAAI,CAAC;IAClC,IAAI8C,QAAQ,EAAE;MACZ,OAAOC,kBAAkB,CAACD,QAAQ,CAACzC,EAAE,EAAEyC,QAAQ,CAAC9C,IAAI,CAAC;IACvD;EACF;EACA,MAAMK,EAAE,GAAGX,iBAAiB,CAACgD,YAAY,CAAC,CAAC;EAC3C,MAAMM,YAAY,GAAGhD,IAAI,IAAI,YAAYK,EAAE,EAAE;EAC7CD,SAAS,CAACC,EAAE,EAAE2C,YAAY,CAAC;EAC3BtD,iBAAiB,CAACkD,WAAW,CAACvC,EAAE,EAAE6B,MAAM,CAACC,IAAI,EAAEC,MAAM,CAAC,CAAC;EACvD,OAAOW,kBAAkB,CAAC1C,EAAE,EAAE2C,YAAY,CAAC;AAC7C;AAEA,OAAO,SAASN,YAAYA,CAAC1C,IAAa,EAAgB;EACxD,IAAIA,IAAI,IAAI,IAAI,EAAE;IAChB,MAAM8C,QAAQ,GAAG/C,WAAW,CAACC,IAAI,CAAC;IAClC,IAAI8C,QAAQ,EAAE;MACZ,OAAOC,kBAAkB,CAACD,QAAQ,CAACzC,EAAE,EAAEyC,QAAQ,CAAC9C,IAAI,CAAC;IACvD;EACF;EACA,MAAMK,EAAE,GAAGX,iBAAiB,CAACgD,YAAY,CAAC,CAAC;EAC3C,MAAMM,YAAY,GAAGhD,IAAI,IAAI,YAAYK,EAAE,EAAE;EAC7CD,SAAS,CAACC,EAAE,EAAE2C,YAAY,CAAC;EAC3B,OAAOD,kBAAkB,CAAC1C,EAAE,EAAE2C,YAAY,CAAC;AAC7C;AAEA,OAAO,SAASC,UAAUA,CAAA,EAAiB;EACzC,OAAO3B,KAAK,CAAC4B,IAAI,CAACrD,SAAS,CAACK,MAAM,CAAC,CAAC,CAAC;AACvC;AAEA,OAAO,SAASiD,aAAaA,CAACC,QAAyB,EAAQ;EAC7D,IAAIC,QAA4B;EAEhC,IAAI,OAAOD,QAAQ,KAAK,QAAQ,EAAE;IAChC,IAAIvD,SAAS,CAACyD,GAAG,CAACF,QAAQ,CAAC,EAAEC,QAAQ,GAAGD,QAAQ;EAClD,CAAC,MAAM;IACL,KAAK,MAAMnD,IAAI,IAAIJ,SAAS,CAACK,MAAM,CAAC,CAAC,EAAE;MACrC,IAAID,IAAI,CAACD,IAAI,KAAKoD,QAAQ,EAAE;QAC1BC,QAAQ,GAAGpD,IAAI,CAACI,EAAE;QAClB;MACF;IACF;EACF;EAEA,IAAIgD,QAAQ,KAAKlD,SAAS,EAAE;IAC1B,IAAIa,OAAO,EAAE;MACXC,OAAO,CAACC,IAAI,CACV,6DAA6DkC,QAAQ,GACvE,CAAC;IACH;IACA;EACF;EAEA7C,WAAW,CAAC8C,QAAQ,CAAC;EACrB,IAAIA,QAAQ,KAAKb,eAAe,EAAEA,eAAe,GAAG,IAAI;EACxD9C,iBAAiB,CAACyD,aAAa,CAACE,QAAQ,CAAC;AAC3C;AAMA,OAAO,SAASE,SAASA,CACvBC,OAAmD,EACU;EAC7D,IAAIA,OAAO,EAAE;IACX,MAAMC,GAAG,GAAG9D,QAAQ,CAAC+D,WAAW,CAAC9D,uBAAuB,EAAG+D,KAAU,IAAK;MACxE,IAAIC,MAAe,GAAGD,KAAK,CAACE,IAAI;MAChC,IAAI;QACFD,MAAM,GAAGzC,IAAI,CAAC2C,KAAK,CAACH,KAAK,CAACE,IAAI,CAAC;MACjC,CAAC,CAAC,MAAM,CAAC;MACTL,OAAO,CAACI,MAAM,EAAED,KAAK,CAACI,QAAkB,CAAC;IAC3C,CAAC,CAAC;IACF,OAAO,MAAMN,GAAG,CAACO,MAAM,CAAC,CAAC;EAC3B;EAEA,OAAO,IAAIC,OAAO,CAAuCC,OAAO,IAAK;IACnE,MAAMT,GAAG,GAAG9D,QAAQ,CAAC+D,WAAW,CAAC9D,uBAAuB,EAAG+D,KAAU,IAAK;MACxE,IAAIC,MAAe,GAAGD,KAAK,CAACE,IAAI;MAChC,IAAI;QACFD,MAAM,GAAGzC,IAAI,CAAC2C,KAAK,CAACH,KAAK,CAACE,IAAI,CAAC;MACjC,CAAC,CAAC,MAAM,CAAC;MACTJ,GAAG,CAACO,MAAM,CAAC,CAAC;MACZE,OAAO,CAAC;QAAEL,IAAI,EAAED,MAAM;QAAEG,QAAQ,EAAEJ,KAAK,CAACI;MAAmB,CAAC,CAAC;IAC/D,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,SAASI,cAAcA,CACrBN,IAAa,EACsD;EACnE,OACE,OAAOA,IAAI,KAAK,QAAQ,IACxBA,IAAI,KAAK,IAAI,IACZA,IAAI,CAASO,eAAe,KAAK,IAAI;AAE1C;AAEA,SAASrB,kBAAkBA,CAAC1C,EAAU,EAAEL,IAAY,EAAgB;EAClE,OAAO;IACLK,EAAE;IACFL,IAAI;IACJqE,GAAGA,CAAClC,IAAgB,EAAEC,MAAgB,EAAE;MACtC1C,iBAAiB,CAACkD,WAAW,CAACvC,EAAE,EAAE6B,MAAM,CAACC,IAAI,EAAEC,MAAM,CAAC,CAAC;IACzD,CAAC;IACDmB,SAAS,EAAE,SAAAA,CAAUC,OAAiC,EAAE;MACtD,IAAIA,OAAO,EAAE;QACX,OAAOD,SAAS,CAAC,CAACM,IAAI,EAAEE,QAAQ,KAAK;UACnC,IAAIA,QAAQ,KAAK1D,EAAE,IAAI,CAAC8D,cAAc,CAACN,IAAI,CAAC,EAAEL,OAAO,CAACK,IAAI,CAAC;QAC7D,CAAC,CAAC;MACJ;MACA,OAAO,IAAII,OAAO,CAAU,CAACC,OAAO,EAAEI,MAAM,KAAK;QAC/C,MAAMC,KAAK,GAAGhB,SAAS,CAAC,CAACM,IAAI,EAAEE,QAAQ,KAAK;UAC1C,IAAIA,QAAQ,KAAK1D,EAAE,EAAE;YACnBkE,KAAK,CAAC,CAAC;YACP,IAAIJ,cAAc,CAACN,IAAI,CAAC,EAAE;cACxB,MAAMW,GAAG,GAAG,IAAIC,KAAK,CAACZ,IAAI,CAACa,OAAO,CAAC;cACnCF,GAAG,CAACG,KAAK,GAAGd,IAAI,CAACc,KAAK;cACtBL,MAAM,CAACE,GAAG,CAAC;YACb,CAAC,MAAM;cACLN,OAAO,CAACL,IAAI,CAAC;YACf;UACF;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAA8B;IAC9Be,OAAOA,CAACpB,OAAqC,EAAE;MAC7C,OAAOD,SAAS,CAAC,CAACM,IAAI,EAAEE,QAAQ,KAAK;QACnC,IAAIA,QAAQ,KAAK1D,EAAE,IAAI8D,cAAc,CAACN,IAAI,CAAC,EAAE;UAC3CL,OAAO,CAAC;YAAEkB,OAAO,EAAEb,IAAI,CAACa,OAAO;YAAEC,KAAK,EAAEd,IAAI,CAACc;UAAM,CAAC,CAAC;QACvD;MACF,CAAC,CAAC;IACJ,CAAC;IACDE,OAAOA,CAAA,EAAG;MACR1B,aAAa,CAAC9C,EAAE,CAAC;IACnB;EACF,CAAC;AACH","ignoreList":[]}
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?: any) => void) | string;
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): void;
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,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC;AAEzD,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,IAAI,CAAC;IAC9C,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACxD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC3D,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"}
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.1",
4
- "description": "Run JavaScript on real background threads in React Native — no Workers, no Worklets. Uses JavaScriptCore on iOS and Mozilla Rhino on Android. Built as a New Architecture TurboModule.",
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
- "javascript-core",
55
- "rhino",
52
+ "hermes",
56
53
  "turbo-module",
57
54
  "new-architecture",
58
55
  "worker",
@@ -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 = ((args?: any) => void) | string;
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): void;
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() {