thread-stream 3.1.0 → 4.1.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/.github/workflows/ci.yml +4 -24
- package/README.md +4 -1
- package/eslint.config.js +10 -0
- package/index.d.ts +7 -0
- package/index.js +124 -21
- package/lib/wait.js +50 -43
- package/lib/worker.js +119 -13
- package/package.json +17 -24
- package/test/base.test.js +60 -86
- package/test/bench.test.js +3 -3
- package/test/bundlers.test.js +8 -9
- package/test/commonjs-fallback.test.js +17 -22
- package/test/context.test.js +6 -6
- package/test/end.test.js +22 -27
- package/test/esm.test.mjs +8 -9
- package/test/event.test.js +10 -9
- package/test/flush-worker.js +68 -0
- package/test/flush.test.js +112 -0
- package/test/helper.js +1 -10
- package/test/indexes.test.js +4 -4
- package/test/message-without-code.js +19 -0
- package/test/multibyte-chars.test.mjs +14 -13
- package/test/pkg/index.js +23 -23
- package/test/pkg/pkg.config.json +3 -4
- package/test/pkg/pkg.test.js +5 -6
- package/test/post-message.test.js +4 -5
- package/test/report-thread-name.js +16 -0
- package/test/string-limit-2.test.js +24 -30
- package/test/string-limit.test.js +24 -29
- package/test/thread-management.test.js +46 -17
- package/test/transpiled.test.js +5 -6
- package/test/ts-native.test.mjs +35 -0
- package/test/ts-node-fallback.test.js +35 -0
- package/test/watch-mode.test.js +30 -0
- package/test/worker-name.test.js +43 -0
- package/.husky/pre-commit +0 -4
- package/.taprc +0 -4
- package/test/never-drain.test.js +0 -57
- package/test/ts.test.ts +0 -33
package/test/base.test.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { test } = require('
|
|
3
|
+
const { test } = require('node:test')
|
|
4
|
+
const assert = require('node:assert')
|
|
4
5
|
const { join } = require('path')
|
|
5
6
|
const { readFile } = require('fs')
|
|
6
7
|
const { file } = require('./helper')
|
|
@@ -8,9 +9,7 @@ const ThreadStream = require('..')
|
|
|
8
9
|
const { MessageChannel } = require('worker_threads')
|
|
9
10
|
const { once } = require('events')
|
|
10
11
|
|
|
11
|
-
test('base sync=true', function (t) {
|
|
12
|
-
t.plan(15)
|
|
13
|
-
|
|
12
|
+
test('base sync=true', function (t, done) {
|
|
14
13
|
const dest = file()
|
|
15
14
|
const stream = new ThreadStream({
|
|
16
15
|
filename: join(__dirname, 'to-file.js'),
|
|
@@ -18,37 +17,35 @@ test('base sync=true', function (t) {
|
|
|
18
17
|
sync: true
|
|
19
18
|
})
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
assert.deepStrictEqual(stream.writableObjectMode, false)
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
assert.deepStrictEqual(stream.writableFinished, false)
|
|
24
23
|
stream.on('finish', () => {
|
|
25
|
-
|
|
24
|
+
assert.deepStrictEqual(stream.writableFinished, true)
|
|
26
25
|
readFile(dest, 'utf8', (err, data) => {
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
assert.ifError(err)
|
|
27
|
+
assert.strictEqual(data, 'hello world\nsomething else\n')
|
|
29
28
|
})
|
|
30
29
|
})
|
|
31
30
|
|
|
32
|
-
|
|
31
|
+
assert.deepStrictEqual(stream.closed, false)
|
|
33
32
|
stream.on('close', () => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
assert.deepStrictEqual(stream.closed, true)
|
|
34
|
+
assert.ok(!stream.writable)
|
|
35
|
+
done()
|
|
37
36
|
})
|
|
38
37
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
assert.deepStrictEqual(stream.writableNeedDrain, false)
|
|
39
|
+
assert.ok(stream.write('hello world\n'))
|
|
40
|
+
assert.ok(stream.write('something else\n'))
|
|
41
|
+
assert.ok(stream.writable)
|
|
43
42
|
|
|
44
|
-
|
|
43
|
+
assert.deepStrictEqual(stream.writableEnded, false)
|
|
45
44
|
stream.end()
|
|
46
|
-
|
|
45
|
+
assert.deepStrictEqual(stream.writableEnded, true)
|
|
47
46
|
})
|
|
48
47
|
|
|
49
|
-
test('overflow sync=true', function (t) {
|
|
50
|
-
t.plan(3)
|
|
51
|
-
|
|
48
|
+
test('overflow sync=true', function (t, done) {
|
|
52
49
|
const dest = file()
|
|
53
50
|
const stream = new ThreadStream({
|
|
54
51
|
bufferSize: 128,
|
|
@@ -73,19 +70,16 @@ test('overflow sync=true', function (t) {
|
|
|
73
70
|
|
|
74
71
|
write()
|
|
75
72
|
|
|
76
|
-
stream.on('finish', () => {
|
|
77
|
-
t.pass('finish emitted')
|
|
78
|
-
})
|
|
79
|
-
|
|
80
73
|
stream.on('close', () => {
|
|
81
74
|
readFile(dest, 'utf8', (err, data) => {
|
|
82
|
-
|
|
83
|
-
|
|
75
|
+
assert.ifError(err)
|
|
76
|
+
assert.strictEqual(data.length, 200)
|
|
77
|
+
done()
|
|
84
78
|
})
|
|
85
79
|
})
|
|
86
80
|
})
|
|
87
81
|
|
|
88
|
-
test('overflow sync=false', function (t) {
|
|
82
|
+
test('overflow sync=false', function (t, done) {
|
|
89
83
|
const dest = file()
|
|
90
84
|
const stream = new ThreadStream({
|
|
91
85
|
bufferSize: 128,
|
|
@@ -96,18 +90,17 @@ test('overflow sync=false', function (t) {
|
|
|
96
90
|
|
|
97
91
|
let count = 0
|
|
98
92
|
|
|
99
|
-
|
|
93
|
+
assert.deepStrictEqual(stream.writableNeedDrain, false)
|
|
100
94
|
|
|
101
95
|
// Write 10 chars, 20 times
|
|
102
96
|
function write () {
|
|
103
97
|
if (count++ === 20) {
|
|
104
|
-
t.pass('end sent')
|
|
105
98
|
stream.end()
|
|
106
99
|
return
|
|
107
100
|
}
|
|
108
101
|
|
|
109
102
|
if (!stream.write('aaaaaaaaaa')) {
|
|
110
|
-
|
|
103
|
+
assert.deepStrictEqual(stream.writableNeedDrain, true)
|
|
111
104
|
}
|
|
112
105
|
// do not wait for drain event
|
|
113
106
|
setImmediate(write)
|
|
@@ -116,26 +109,19 @@ test('overflow sync=false', function (t) {
|
|
|
116
109
|
write()
|
|
117
110
|
|
|
118
111
|
stream.on('drain', () => {
|
|
119
|
-
|
|
120
|
-
t.pass('drain')
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
stream.on('finish', () => {
|
|
124
|
-
t.pass('finish emitted')
|
|
112
|
+
assert.deepStrictEqual(stream.writableNeedDrain, false)
|
|
125
113
|
})
|
|
126
114
|
|
|
127
115
|
stream.on('close', () => {
|
|
128
116
|
readFile(dest, 'utf8', (err, data) => {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
117
|
+
assert.ifError(err)
|
|
118
|
+
assert.strictEqual(data.length, 200)
|
|
119
|
+
done()
|
|
132
120
|
})
|
|
133
121
|
})
|
|
134
122
|
})
|
|
135
123
|
|
|
136
|
-
test('over the bufferSize at startup', function (t) {
|
|
137
|
-
t.plan(6)
|
|
138
|
-
|
|
124
|
+
test('over the bufferSize at startup', function (t, done) {
|
|
139
125
|
const dest = file()
|
|
140
126
|
const stream = new ThreadStream({
|
|
141
127
|
bufferSize: 10,
|
|
@@ -146,25 +132,23 @@ test('over the bufferSize at startup', function (t) {
|
|
|
146
132
|
|
|
147
133
|
stream.on('finish', () => {
|
|
148
134
|
readFile(dest, 'utf8', (err, data) => {
|
|
149
|
-
|
|
150
|
-
|
|
135
|
+
assert.ifError(err)
|
|
136
|
+
assert.strictEqual(data, 'hello world\nsomething else\n')
|
|
151
137
|
})
|
|
152
138
|
})
|
|
153
139
|
|
|
154
140
|
stream.on('close', () => {
|
|
155
|
-
|
|
141
|
+
done()
|
|
156
142
|
})
|
|
157
143
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
144
|
+
assert.ok(stream.write('hello'))
|
|
145
|
+
assert.ok(stream.write(' world\n'))
|
|
146
|
+
assert.ok(stream.write('something else\n'))
|
|
161
147
|
|
|
162
148
|
stream.end()
|
|
163
149
|
})
|
|
164
150
|
|
|
165
|
-
test('over the bufferSize at startup (async)', function (t) {
|
|
166
|
-
t.plan(6)
|
|
167
|
-
|
|
151
|
+
test('over the bufferSize at startup (async)', function (t, done) {
|
|
168
152
|
const dest = file()
|
|
169
153
|
const stream = new ThreadStream({
|
|
170
154
|
bufferSize: 10,
|
|
@@ -173,25 +157,25 @@ test('over the bufferSize at startup (async)', function (t) {
|
|
|
173
157
|
sync: false
|
|
174
158
|
})
|
|
175
159
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
160
|
+
assert.ok(stream.write('hello'))
|
|
161
|
+
assert.ok(!stream.write(' world\n'))
|
|
162
|
+
assert.ok(!stream.write('something else\n'))
|
|
179
163
|
|
|
180
164
|
stream.end()
|
|
181
165
|
|
|
182
166
|
stream.on('finish', () => {
|
|
183
167
|
readFile(dest, 'utf8', (err, data) => {
|
|
184
|
-
|
|
185
|
-
|
|
168
|
+
assert.ifError(err)
|
|
169
|
+
assert.strictEqual(data, 'hello world\nsomething else\n')
|
|
186
170
|
})
|
|
187
171
|
})
|
|
188
172
|
|
|
189
173
|
stream.on('close', () => {
|
|
190
|
-
|
|
174
|
+
done()
|
|
191
175
|
})
|
|
192
176
|
})
|
|
193
177
|
|
|
194
|
-
test('flushSync sync=false', function (t) {
|
|
178
|
+
test('flushSync sync=false', function (t, done) {
|
|
195
179
|
const dest = file()
|
|
196
180
|
const stream = new ThreadStream({
|
|
197
181
|
bufferSize: 128,
|
|
@@ -201,19 +185,14 @@ test('flushSync sync=false', function (t) {
|
|
|
201
185
|
})
|
|
202
186
|
|
|
203
187
|
stream.on('drain', () => {
|
|
204
|
-
t.pass('drain')
|
|
205
188
|
stream.end()
|
|
206
189
|
})
|
|
207
190
|
|
|
208
|
-
stream.on('finish', () => {
|
|
209
|
-
t.pass('finish emitted')
|
|
210
|
-
})
|
|
211
|
-
|
|
212
191
|
stream.on('close', () => {
|
|
213
192
|
readFile(dest, 'utf8', (err, data) => {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
193
|
+
assert.ifError(err)
|
|
194
|
+
assert.strictEqual(data.length, 200)
|
|
195
|
+
done()
|
|
217
196
|
})
|
|
218
197
|
})
|
|
219
198
|
|
|
@@ -224,8 +203,6 @@ test('flushSync sync=false', function (t) {
|
|
|
224
203
|
})
|
|
225
204
|
|
|
226
205
|
test('pass down MessagePorts', async function (t) {
|
|
227
|
-
t.plan(3)
|
|
228
|
-
|
|
229
206
|
const { port1, port2 } = new MessageChannel()
|
|
230
207
|
const stream = new ThreadStream({
|
|
231
208
|
filename: join(__dirname, 'port.js'),
|
|
@@ -235,21 +212,19 @@ test('pass down MessagePorts', async function (t) {
|
|
|
235
212
|
},
|
|
236
213
|
sync: false
|
|
237
214
|
})
|
|
238
|
-
t.
|
|
215
|
+
t.after(() => {
|
|
239
216
|
stream.end()
|
|
240
217
|
})
|
|
241
218
|
|
|
242
|
-
|
|
243
|
-
|
|
219
|
+
assert.ok(stream.write('hello world\n'))
|
|
220
|
+
assert.ok(stream.write('something else\n'))
|
|
244
221
|
|
|
245
222
|
const [strings] = await once(port2, 'message')
|
|
246
223
|
|
|
247
|
-
|
|
224
|
+
assert.strictEqual(strings, 'hello world\nsomething else\n')
|
|
248
225
|
})
|
|
249
226
|
|
|
250
|
-
test('destroy does not error', function (t) {
|
|
251
|
-
t.plan(5)
|
|
252
|
-
|
|
227
|
+
test('destroy does not error', function (t, done) {
|
|
253
228
|
const dest = file()
|
|
254
229
|
const stream = new ThreadStream({
|
|
255
230
|
filename: join(__dirname, 'to-file.js'),
|
|
@@ -258,28 +233,27 @@ test('destroy does not error', function (t) {
|
|
|
258
233
|
})
|
|
259
234
|
|
|
260
235
|
stream.on('ready', () => {
|
|
261
|
-
t.pass('ready emitted')
|
|
262
236
|
stream.worker.terminate()
|
|
263
237
|
})
|
|
264
238
|
|
|
265
239
|
stream.on('error', (err) => {
|
|
266
|
-
|
|
240
|
+
assert.strictEqual(err.message, 'the worker thread exited')
|
|
267
241
|
stream.flush((err) => {
|
|
268
|
-
|
|
242
|
+
assert.strictEqual(err.message, 'the worker has exited')
|
|
269
243
|
})
|
|
270
|
-
|
|
271
|
-
|
|
244
|
+
assert.doesNotThrow(() => stream.flushSync())
|
|
245
|
+
assert.doesNotThrow(() => stream.end())
|
|
246
|
+
done()
|
|
272
247
|
})
|
|
273
248
|
})
|
|
274
249
|
|
|
275
|
-
test('syntax error', function (t) {
|
|
276
|
-
t.plan(1)
|
|
277
|
-
|
|
250
|
+
test('syntax error', function (t, done) {
|
|
278
251
|
const stream = new ThreadStream({
|
|
279
252
|
filename: join(__dirname, 'syntax-error.mjs')
|
|
280
253
|
})
|
|
281
254
|
|
|
282
255
|
stream.on('error', (err) => {
|
|
283
|
-
|
|
256
|
+
assert.strictEqual(err.message, 'Unexpected end of input')
|
|
257
|
+
done()
|
|
284
258
|
})
|
|
285
259
|
})
|
package/test/bench.test.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { test } = require('
|
|
3
|
+
const { test } = require('node:test')
|
|
4
4
|
const { join } = require('path')
|
|
5
5
|
const ThreadStream = require('..')
|
|
6
6
|
const { file } = require('./helper')
|
|
@@ -13,7 +13,7 @@ for (let i = 0; i < 10; i++) {
|
|
|
13
13
|
str += 'hello'
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
test('base', function (t) {
|
|
16
|
+
test('base', function (t, done) {
|
|
17
17
|
const dest = file()
|
|
18
18
|
const stream = new ThreadStream({
|
|
19
19
|
filename: join(__dirname, 'to-file.js'),
|
|
@@ -33,6 +33,6 @@ test('base', function (t) {
|
|
|
33
33
|
}
|
|
34
34
|
benchThreadStream()
|
|
35
35
|
stream.on('finish', function () {
|
|
36
|
-
|
|
36
|
+
done()
|
|
37
37
|
})
|
|
38
38
|
})
|
package/test/bundlers.test.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { test } = require('
|
|
3
|
+
const { test } = require('node:test')
|
|
4
|
+
const assert = require('node:assert')
|
|
4
5
|
const { join } = require('path')
|
|
5
6
|
const { file } = require('./helper')
|
|
6
7
|
const ThreadStream = require('..')
|
|
7
8
|
|
|
8
|
-
test('bundlers support with .js file', function (t) {
|
|
9
|
-
t.plan(1)
|
|
10
|
-
|
|
9
|
+
test('bundlers support with .js file', function (t, done) {
|
|
11
10
|
globalThis.__bundlerPathsOverrides = {
|
|
12
11
|
'thread-stream-worker': join(__dirname, 'custom-worker.js')
|
|
13
12
|
}
|
|
@@ -26,15 +25,14 @@ test('bundlers support with .js file', function (t) {
|
|
|
26
25
|
|
|
27
26
|
stream.worker.removeAllListeners('message')
|
|
28
27
|
stream.worker.once('message', message => {
|
|
29
|
-
|
|
28
|
+
assert.strictEqual(message.code, 'CUSTOM-WORKER-CALLED')
|
|
29
|
+
done()
|
|
30
30
|
})
|
|
31
31
|
|
|
32
32
|
stream.end()
|
|
33
33
|
})
|
|
34
34
|
|
|
35
|
-
test('bundlers support with .mjs file', function (t) {
|
|
36
|
-
t.plan(1)
|
|
37
|
-
|
|
35
|
+
test('bundlers support with .mjs file', function (t, done) {
|
|
38
36
|
globalThis.__bundlerPathsOverrides = {
|
|
39
37
|
'thread-stream-worker': join(__dirname, 'custom-worker.js')
|
|
40
38
|
}
|
|
@@ -53,7 +51,8 @@ test('bundlers support with .mjs file', function (t) {
|
|
|
53
51
|
|
|
54
52
|
stream.worker.removeAllListeners('message')
|
|
55
53
|
stream.worker.once('message', message => {
|
|
56
|
-
|
|
54
|
+
assert.strictEqual(message.code, 'CUSTOM-WORKER-CALLED')
|
|
55
|
+
done()
|
|
57
56
|
})
|
|
58
57
|
|
|
59
58
|
stream.end()
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { test } = require('
|
|
3
|
+
const { test } = require('node:test')
|
|
4
|
+
const assert = require('node:assert')
|
|
4
5
|
const { join } = require('path')
|
|
5
6
|
const { MessageChannel } = require('worker_threads')
|
|
6
7
|
const { once } = require('events')
|
|
@@ -8,11 +9,9 @@ const ThreadStream = require('..')
|
|
|
8
9
|
|
|
9
10
|
const isYarnPnp = process.versions.pnp !== undefined
|
|
10
11
|
|
|
11
|
-
test('yarn module resolution', { skip: !isYarnPnp }, t => {
|
|
12
|
-
t.plan(6)
|
|
13
|
-
|
|
12
|
+
test('yarn module resolution', { skip: !isYarnPnp }, (t, done) => {
|
|
14
13
|
const modulePath = require.resolve('pino-elasticsearch')
|
|
15
|
-
|
|
14
|
+
assert.match(modulePath, /.*\.zip.*/)
|
|
16
15
|
|
|
17
16
|
const stream = new ThreadStream({
|
|
18
17
|
filename: modulePath,
|
|
@@ -20,20 +19,18 @@ test('yarn module resolution', { skip: !isYarnPnp }, t => {
|
|
|
20
19
|
sync: true
|
|
21
20
|
})
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
assert.deepStrictEqual(stream.writableErrored, null)
|
|
24
23
|
stream.on('error', (err) => {
|
|
25
|
-
|
|
26
|
-
t.pass('error emitted')
|
|
24
|
+
assert.deepStrictEqual(stream.writableErrored, err)
|
|
27
25
|
})
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
assert.ok(stream.write('hello world\n'))
|
|
28
|
+
assert.ok(stream.writable)
|
|
31
29
|
stream.end()
|
|
30
|
+
done()
|
|
32
31
|
})
|
|
33
32
|
|
|
34
33
|
test('yarn module resolution for directories with special characters', { skip: !isYarnPnp }, async t => {
|
|
35
|
-
t.plan(3)
|
|
36
|
-
|
|
37
34
|
const { port1, port2 } = new MessageChannel()
|
|
38
35
|
const stream = new ThreadStream({
|
|
39
36
|
filename: join(__dirname, 'dir with spaces', 'test-package.zip', 'worker.js'),
|
|
@@ -43,21 +40,19 @@ test('yarn module resolution for directories with special characters', { skip: !
|
|
|
43
40
|
},
|
|
44
41
|
sync: false
|
|
45
42
|
})
|
|
46
|
-
t.
|
|
43
|
+
t.after(() => {
|
|
47
44
|
stream.end()
|
|
48
45
|
})
|
|
49
46
|
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
assert.ok(stream.write('hello world\n'))
|
|
48
|
+
assert.ok(stream.write('something else\n'))
|
|
52
49
|
|
|
53
50
|
const [strings] = await once(port2, 'message')
|
|
54
51
|
|
|
55
|
-
|
|
52
|
+
assert.strictEqual(strings, 'hello world\nsomething else\n')
|
|
56
53
|
})
|
|
57
54
|
|
|
58
55
|
test('yarn module resolution for typescript commonjs modules', { skip: !isYarnPnp }, async t => {
|
|
59
|
-
t.plan(3)
|
|
60
|
-
|
|
61
56
|
const { port1, port2 } = new MessageChannel()
|
|
62
57
|
const stream = new ThreadStream({
|
|
63
58
|
filename: join(__dirname, 'ts-commonjs-default-export.zip', 'worker.js'),
|
|
@@ -67,14 +62,14 @@ test('yarn module resolution for typescript commonjs modules', { skip: !isYarnPn
|
|
|
67
62
|
},
|
|
68
63
|
sync: false
|
|
69
64
|
})
|
|
70
|
-
t.
|
|
65
|
+
t.after(() => {
|
|
71
66
|
stream.end()
|
|
72
67
|
})
|
|
73
68
|
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
assert.ok(stream.write('hello world\n'))
|
|
70
|
+
assert.ok(stream.write('something else\n'))
|
|
76
71
|
|
|
77
72
|
const [strings] = await once(port2, 'message')
|
|
78
73
|
|
|
79
|
-
|
|
74
|
+
assert.strictEqual(strings, 'hello world\nsomething else\n')
|
|
80
75
|
})
|
package/test/context.test.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { test } = require('
|
|
3
|
+
const { test } = require('node:test')
|
|
4
|
+
const assert = require('node:assert')
|
|
4
5
|
const { join } = require('path')
|
|
5
6
|
const ThreadStream = require('..')
|
|
6
7
|
const { version } = require('../package.json')
|
|
7
|
-
require('why-is-node-running')
|
|
8
8
|
|
|
9
|
-
test('get context', (t) => {
|
|
9
|
+
test('get context', (t, done) => {
|
|
10
10
|
const stream = new ThreadStream({
|
|
11
11
|
filename: join(__dirname, 'get-context.js'),
|
|
12
12
|
workerData: {},
|
|
13
13
|
sync: true
|
|
14
14
|
})
|
|
15
|
-
t.
|
|
15
|
+
t.after(() => stream.end())
|
|
16
16
|
stream.on('context', (ctx) => {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
assert.deepStrictEqual(ctx.threadStreamVersion, version)
|
|
18
|
+
done()
|
|
19
19
|
})
|
|
20
20
|
stream.write('hello')
|
|
21
21
|
})
|
package/test/end.test.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { test } = require('
|
|
3
|
+
const { test } = require('node:test')
|
|
4
|
+
const assert = require('node:assert')
|
|
4
5
|
const { join } = require('path')
|
|
5
6
|
const { readFile } = require('fs')
|
|
6
7
|
const { file } = require('./helper')
|
|
7
8
|
const ThreadStream = require('..')
|
|
8
9
|
|
|
9
|
-
test('destroy support', function (t) {
|
|
10
|
-
t.plan(7)
|
|
11
|
-
|
|
10
|
+
test('destroy support', function (t, done) {
|
|
12
11
|
const dest = file()
|
|
13
12
|
const stream = new ThreadStream({
|
|
14
13
|
filename: join(__dirname, 'to-file-on-destroy.js'),
|
|
@@ -17,25 +16,22 @@ test('destroy support', function (t) {
|
|
|
17
16
|
})
|
|
18
17
|
|
|
19
18
|
stream.on('close', () => {
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
assert.ok(!stream.writable)
|
|
20
|
+
readFile(dest, 'utf8', (err, data) => {
|
|
21
|
+
assert.ifError(err)
|
|
22
|
+
assert.strictEqual(data, 'hello world\nsomething else\n')
|
|
23
|
+
done()
|
|
24
|
+
})
|
|
22
25
|
})
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
assert.ok(stream.write('hello world\n'))
|
|
28
|
+
assert.ok(stream.write('something else\n'))
|
|
29
|
+
assert.ok(stream.writable)
|
|
27
30
|
|
|
28
31
|
stream.end()
|
|
29
|
-
|
|
30
|
-
readFile(dest, 'utf8', (err, data) => {
|
|
31
|
-
t.error(err)
|
|
32
|
-
t.equal(data, 'hello world\nsomething else\n')
|
|
33
|
-
})
|
|
34
32
|
})
|
|
35
33
|
|
|
36
|
-
test('synchronous _final support', function (t) {
|
|
37
|
-
t.plan(7)
|
|
38
|
-
|
|
34
|
+
test('synchronous _final support', function (t, done) {
|
|
39
35
|
const dest = file()
|
|
40
36
|
const stream = new ThreadStream({
|
|
41
37
|
filename: join(__dirname, 'to-file-on-final.js'),
|
|
@@ -44,18 +40,17 @@ test('synchronous _final support', function (t) {
|
|
|
44
40
|
})
|
|
45
41
|
|
|
46
42
|
stream.on('close', () => {
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
assert.ok(!stream.writable)
|
|
44
|
+
readFile(dest, 'utf8', (err, data) => {
|
|
45
|
+
assert.ifError(err)
|
|
46
|
+
assert.strictEqual(data, 'hello world\nsomething else\n')
|
|
47
|
+
done()
|
|
48
|
+
})
|
|
49
49
|
})
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
assert.ok(stream.write('hello world\n'))
|
|
52
|
+
assert.ok(stream.write('something else\n'))
|
|
53
|
+
assert.ok(stream.writable)
|
|
54
54
|
|
|
55
55
|
stream.end()
|
|
56
|
-
|
|
57
|
-
readFile(dest, 'utf8', (err, data) => {
|
|
58
|
-
t.error(err)
|
|
59
|
-
t.equal(data, 'hello world\nsomething else\n')
|
|
60
|
-
})
|
|
61
56
|
})
|
package/test/esm.test.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { test } from '
|
|
1
|
+
import { test } from 'node:test'
|
|
2
|
+
import assert from 'node:assert'
|
|
2
3
|
import { readFile } from 'fs'
|
|
3
4
|
import ThreadStream from '../index.js'
|
|
4
5
|
import { join } from 'desm'
|
|
@@ -6,9 +7,7 @@ import { pathToFileURL } from 'url'
|
|
|
6
7
|
import { file } from './helper.js'
|
|
7
8
|
|
|
8
9
|
function basic (text, filename) {
|
|
9
|
-
test(text, function (t) {
|
|
10
|
-
t.plan(5)
|
|
11
|
-
|
|
10
|
+
test(text, function (t, done) {
|
|
12
11
|
const dest = file()
|
|
13
12
|
const stream = new ThreadStream({
|
|
14
13
|
filename,
|
|
@@ -18,17 +17,17 @@ function basic (text, filename) {
|
|
|
18
17
|
|
|
19
18
|
stream.on('finish', () => {
|
|
20
19
|
readFile(dest, 'utf8', (err, data) => {
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
assert.ifError(err)
|
|
21
|
+
assert.strictEqual(data, 'hello world\nsomething else\n')
|
|
23
22
|
})
|
|
24
23
|
})
|
|
25
24
|
|
|
26
25
|
stream.on('close', () => {
|
|
27
|
-
|
|
26
|
+
done()
|
|
28
27
|
})
|
|
29
28
|
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
assert.ok(stream.write('hello world\n'))
|
|
30
|
+
assert.ok(stream.write('something else\n'))
|
|
32
31
|
|
|
33
32
|
stream.end()
|
|
34
33
|
})
|
package/test/event.test.js
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { test } = require('
|
|
3
|
+
const { test } = require('node:test')
|
|
4
|
+
const assert = require('node:assert')
|
|
4
5
|
const { join } = require('path')
|
|
5
6
|
const ThreadStream = require('..')
|
|
6
7
|
|
|
7
|
-
test('event propagate', t => {
|
|
8
|
+
test('event propagate', (t, done) => {
|
|
8
9
|
const stream = new ThreadStream({
|
|
9
10
|
filename: join(__dirname, 'emit-event.js'),
|
|
10
11
|
workerData: {},
|
|
11
12
|
sync: true
|
|
12
13
|
})
|
|
13
|
-
t.
|
|
14
|
+
t.after(() => stream.end())
|
|
14
15
|
stream.on('socketError', function (a, b, c, n, error) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
assert.deepStrictEqual(a, 'list')
|
|
17
|
+
assert.deepStrictEqual(b, 'of')
|
|
18
|
+
assert.deepStrictEqual(c, 'args')
|
|
19
|
+
assert.deepStrictEqual(n, 123)
|
|
20
|
+
assert.deepStrictEqual(error, new Error('unable to write data to the TCP socket'))
|
|
21
|
+
done()
|
|
21
22
|
})
|
|
22
23
|
stream.write('hello')
|
|
23
24
|
})
|