Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ async function start () {
// The error codes may change based on the node.js version (ENOTDIR > 12, ERR_MODULE_NOT_FOUND <= 12 )
if ((error.code === 'ENOTDIR' || error.code === 'ERR_MODULE_NOT_FOUND') &&
filename.startsWith('file://')) {
worker = realRequire(decodeURIComponent(filename.replace('file://', '')))
worker = realRequire(decodeURIComponent(filename.replace(process.platform === 'win32' ? 'file:///' : 'file://', '')))
} else if (error.code === undefined || error.code === 'ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING') {
// When bundled with pkg, an undefined error is thrown when called with realImport
// When bundled with pkg and using node v20, an ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING error is thrown when called with realImport
Expand Down
1 change: 1 addition & 0 deletions test/pkg/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/index-*
40 changes: 31 additions & 9 deletions test/pkg/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,39 @@ process.on('uncaughtException', (error) => {
process.exit(1)
})

const stream = new ThreadStream({
filename: join(__dirname, '..', 'to-file.js'),
workerData: { dest },
sync: true
const stream1Promise = new Promise((resolve) => {
const stream = new ThreadStream({
filename: join(__dirname, '..', 'to-file.js'),
workerData: { dest },
sync: true
})

stream.worker.removeAllListeners('message')
stream.worker.once('message', (message) => {
assert.strictEqual(message.code, 'CUSTOM-WORKER-CALLED')
resolve()
})

stream.end()
})

stream.worker.removeAllListeners('message')
stream.worker.once('message', (message) => {
assert.strictEqual(message.code, 'CUSTOM-WORKER-CALLED')
const stream2Promise = new Promise((resolve) => {
const stream = new ThreadStream({
filename: join(__dirname, '..', 'to-file-worker.js'),
workerData: { dest },
sync: true
})

stream.worker.removeAllListeners('message')
stream.worker.once('message', (message) => {
assert.strictEqual(message.code, 'CUSTOM-WORKER-CALLED')
resolve()
})

stream.end()
})

Promise.all([stream1Promise, stream2Promise]).then(() => {
console.log('pkg test passed')
process.exit(0)
})

stream.end()
5 changes: 3 additions & 2 deletions test/pkg/pkg.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"pkg": {
"assets": [
"../custom-worker.js",
"../to-file.js"
"../to-file.js",
"../to-file-worker.js"
],
"targets": [
"node20",
Expand All @@ -11,4 +12,4 @@
],
"outputPath": "test/pkg"
}
}
}
14 changes: 14 additions & 0 deletions test/to-file-worker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
'use strict'

const { join } = require('path')
const ThreadStream = require('../..')

async function run (opts) {
return new ThreadStream({
filename: join(__dirname, '..', 'to-file.js'),
workerData: opts,
sync: true
})
}

module.exports = run
Loading