thread-stream 0.12.1 → 0.13.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.
@@ -19,7 +19,7 @@ jobs:
19
19
 
20
20
  steps:
21
21
 
22
- - uses: actions/checkout@v2.3.5
22
+ - uses: actions/checkout@v2.4.0
23
23
 
24
24
  - name: Use Node.js
25
25
  uses: actions/setup-node@v2.4.1
@@ -55,6 +55,6 @@ jobs:
55
55
  needs: test
56
56
  runs-on: ubuntu-latest
57
57
  steps:
58
- - uses: fastify/github-action-merge-dependabot@v2.4.0
58
+ - uses: fastify/github-action-merge-dependabot@v2.5.0
59
59
  with:
60
60
  github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -17,7 +17,7 @@ jobs:
17
17
  os: [macOS-latest, windows-latest]
18
18
  node-version: [12, 14, 16]
19
19
  steps:
20
- - uses: actions/checkout@v2.3.5
20
+ - uses: actions/checkout@v2.4.0
21
21
  - name: Use Node.js ${{ matrix.node-version }}
22
22
  uses: actions/setup-node@v2.4.1
23
23
  with:
@@ -39,7 +39,7 @@ jobs:
39
39
  os: [macOS-latest]
40
40
  node-version: [12, 14, 16]
41
41
  steps:
42
- - uses: actions/checkout@v2.3.5
42
+ - uses: actions/checkout@v2.4.0
43
43
  - name: Use Node.js ${{ matrix.node-version }}
44
44
  uses: actions/setup-node@v2.4.1
45
45
  with:
package/index.js CHANGED
@@ -44,7 +44,8 @@ const registry = new FinalizationRegistry((worker) => {
44
44
  function createWorker (stream, opts) {
45
45
  const { filename, workerData } = opts
46
46
 
47
- const toExecute = join(__dirname, 'lib', 'worker.js')
47
+ const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}
48
+ const toExecute = bundlerOverrides['thread-stream-worker'] || join(__dirname, 'lib', 'worker.js')
48
49
 
49
50
  const worker = new Worker(toExecute, {
50
51
  ...opts.workerOpts,
package/lib/worker.js CHANGED
@@ -1,5 +1,6 @@
1
1
  'use strict'
2
2
 
3
+ const { realImport, realRequire } = require('real-require')
3
4
  const { workerData, parentPort } = require('worker_threads')
4
5
  const { WRITE_INDEX, READ_INDEX } = require('./indexes')
5
6
  const { waitDiff } = require('./wait')
@@ -17,7 +18,7 @@ const data = Buffer.from(dataBuf)
17
18
  async function start () {
18
19
  let fn
19
20
  try {
20
- fn = (await import(workerData.filename)).default
21
+ fn = (await realImport(workerData.filename)).default
21
22
  } catch (error) {
22
23
  // A yarn user that tries to start a ThreadStream for an external module
23
24
  // provides a filename pointing to a zip file.
@@ -29,7 +30,7 @@ async function start () {
29
30
  // The error codes may change based on the node.js version (ENOTDIR > 12, ERR_MODULE_NOT_FOUND <= 12 )
30
31
  if ((error.code === 'ENOTDIR' || error.code === 'ERR_MODULE_NOT_FOUND') &&
31
32
  workerData.filename.startsWith('file://')) {
32
- fn = require(workerData.filename.replace('file://', ''))
33
+ fn = realRequire(workerData.filename.replace('file://', ''))
33
34
  } else {
34
35
  throw error
35
36
  }
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "thread-stream",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "description": "A streaming way to send data to a Node.js Worker Thread",
5
5
  "main": "index.js",
6
+ "dependencies": {
7
+ "real-require": "^0.1.0"
8
+ },
6
9
  "devDependencies": {
7
10
  "desm": "^1.1.0",
8
11
  "fastbench": "^1.0.1",
@@ -0,0 +1,33 @@
1
+ 'use strict'
2
+
3
+ const { test } = require('tap')
4
+ const { join } = require('path')
5
+ const { file } = require('./helper')
6
+ const ThreadStream = require('..')
7
+
8
+ test('bundlers support', function (t) {
9
+ t.plan(1)
10
+
11
+ globalThis.__bundlerPathsOverrides = {
12
+ 'thread-stream-worker': join(__dirname, 'custom-worker.js')
13
+ }
14
+
15
+ const dest = file()
16
+
17
+ process.on('uncaughtException', error => {
18
+ console.log(error)
19
+ })
20
+
21
+ const stream = new ThreadStream({
22
+ filename: join(__dirname, 'to-file.js'),
23
+ workerData: { dest },
24
+ sync: true
25
+ })
26
+
27
+ stream.worker.removeAllListeners('message')
28
+ stream.worker.once('message', message => {
29
+ t.equal(message.code, 'CUSTOM-WORKER-CALLED')
30
+ })
31
+
32
+ stream.end()
33
+ })
@@ -0,0 +1,9 @@
1
+ 'use strict'
2
+
3
+ const { parentPort } = require('worker_threads')
4
+
5
+ parentPort.postMessage({
6
+ code: 'CUSTOM-WORKER-CALLED'
7
+ })
8
+
9
+ require('../lib/worker')