bare-worker 4.1.5 → 4.1.8
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/index.js +31 -17
- package/lib/message-channel.js +3 -0
- package/lib/message-port.js +7 -0
- package/lib/worker-state.js +9 -7
- package/package.json +6 -3
- package/lib/preloads.js +0 -11
package/index.js
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
const Thread = require('bare-thread')
|
|
2
2
|
const Channel = require('bare-channel')
|
|
3
3
|
const WorkerState = require('./lib/worker-state')
|
|
4
|
+
const MessageChannel = require('./lib/message-channel')
|
|
5
|
+
const MessagePort = require('./lib/message-port')
|
|
4
6
|
const constants = require('./lib/constants')
|
|
5
|
-
const preloads = require('./lib/preloads')
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
const preloads = new Map()
|
|
9
|
+
|
|
10
|
+
let environmentData = new Map()
|
|
11
|
+
let parentPort = null
|
|
12
|
+
let workerData = null
|
|
9
13
|
|
|
10
14
|
if (WorkerState.parent) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
for (const [entry, source] of WorkerState.parent.preloads) {
|
|
16
|
+
preloads.set(entry, source)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
parentPort = WorkerState.parent.port
|
|
20
|
+
workerData = WorkerState.parent.data
|
|
21
|
+
environmentData = WorkerState.parent.environmentData
|
|
16
22
|
}
|
|
17
23
|
|
|
18
24
|
const worker = Thread.prepare(require.resolve('./lib/worker-thread'), { shared: true })
|
|
@@ -32,7 +38,8 @@ module.exports = exports = class Worker extends MessagePort {
|
|
|
32
38
|
source: Thread.prepare(entry, { shared: true }),
|
|
33
39
|
channel: channel.handle,
|
|
34
40
|
data: workerData,
|
|
35
|
-
preloads
|
|
41
|
+
preloads,
|
|
42
|
+
environmentData
|
|
36
43
|
}
|
|
37
44
|
})
|
|
38
45
|
|
|
@@ -55,6 +62,10 @@ module.exports = exports = class Worker extends MessagePort {
|
|
|
55
62
|
return this._terminating.promise
|
|
56
63
|
}
|
|
57
64
|
|
|
65
|
+
async [Symbol.asyncDispose]() {
|
|
66
|
+
await this.terminate()
|
|
67
|
+
}
|
|
68
|
+
|
|
58
69
|
[Symbol.for('bare.inspect')]() {
|
|
59
70
|
return {
|
|
60
71
|
__proto__: { constructor: Worker },
|
|
@@ -74,21 +85,24 @@ module.exports = exports = class Worker extends MessagePort {
|
|
|
74
85
|
}
|
|
75
86
|
}
|
|
76
87
|
|
|
88
|
+
exports.setEnvironmentData = function setEnvironmentData(key, value) {
|
|
89
|
+
environmentData.set(key, value)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
exports.getEnvironmentData = function getEnvironmentData(key) {
|
|
93
|
+
return environmentData.get(key)
|
|
94
|
+
}
|
|
95
|
+
|
|
77
96
|
exports.Worker = exports
|
|
78
97
|
|
|
79
98
|
exports.MessageChannel = MessageChannel
|
|
80
99
|
exports.MessagePort = MessagePort
|
|
81
100
|
|
|
101
|
+
exports.parentPort = parentPort
|
|
102
|
+
exports.workerData = workerData
|
|
103
|
+
|
|
82
104
|
exports.isMainThread = Thread.isMainThread
|
|
83
105
|
|
|
84
106
|
exports.preload = function preload(entry) {
|
|
85
107
|
preloads.set(entry, Thread.prepare(entry, { shared: true }))
|
|
86
108
|
}
|
|
87
|
-
|
|
88
|
-
if (WorkerState.parent) {
|
|
89
|
-
exports.parentPort = WorkerState.parent.port
|
|
90
|
-
exports.workerData = WorkerState.parent.data
|
|
91
|
-
} else {
|
|
92
|
-
exports.parentPort = null
|
|
93
|
-
exports.workerData = null
|
|
94
|
-
}
|
package/lib/message-channel.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const Channel = require('bare-channel')
|
|
2
|
+
const WorkerState = require('./worker-state')
|
|
2
3
|
const MessagePort = require('./message-port')
|
|
3
4
|
|
|
4
5
|
module.exports = class MessageChannel {
|
|
@@ -9,3 +10,5 @@ module.exports = class MessageChannel {
|
|
|
9
10
|
this.port2 = new MessagePort(channel)
|
|
10
11
|
}
|
|
11
12
|
}
|
|
13
|
+
|
|
14
|
+
if (WorkerState.parent) module.exports = WorkerState.parent.MessageChannel
|
package/lib/message-port.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const EventEmitter = require('bare-events')
|
|
2
2
|
const Channel = require('bare-channel')
|
|
3
|
+
const WorkerState = require('./worker-state')
|
|
3
4
|
const constants = require('./constants')
|
|
4
5
|
const errors = require('./errors')
|
|
5
6
|
|
|
@@ -58,6 +59,10 @@ module.exports = exports = class MessagePort extends EventEmitter {
|
|
|
58
59
|
this._unref()
|
|
59
60
|
}
|
|
60
61
|
|
|
62
|
+
hasRef() {
|
|
63
|
+
return (this._state & constants.state.REFED) !== 0
|
|
64
|
+
}
|
|
65
|
+
|
|
61
66
|
[Symbol.for('bare.inspect')]() {
|
|
62
67
|
return {
|
|
63
68
|
__proto__: { constructor: MessagePort },
|
|
@@ -214,6 +219,8 @@ module.exports = exports = class MessagePort extends EventEmitter {
|
|
|
214
219
|
static _ports = new Set()
|
|
215
220
|
}
|
|
216
221
|
|
|
222
|
+
if (WorkerState.parent) module.exports = WorkerState.parent.MessagePort
|
|
223
|
+
|
|
217
224
|
Bare.on('beforeExit', (exitCode) => {
|
|
218
225
|
for (const port of exports._ports) port._beforeExit(exitCode)
|
|
219
226
|
})
|
package/lib/worker-state.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
const Channel = require('bare-channel')
|
|
2
|
-
const MessageChannel = require('./message-channel')
|
|
3
|
-
const MessagePort = require('./message-port')
|
|
4
2
|
|
|
5
3
|
const state = Symbol.for('bare.worker.state')
|
|
6
4
|
const kind = Symbol.for('bare.worker.state.kind')
|
|
@@ -11,15 +9,19 @@ class WorkerState {
|
|
|
11
9
|
}
|
|
12
10
|
|
|
13
11
|
constructor() {
|
|
14
|
-
|
|
12
|
+
this._MessageChannel = require('./message-channel')
|
|
13
|
+
this._MessagePort = require('./message-port')
|
|
14
|
+
|
|
15
|
+
const { source, preloads, data, environmentData, channel: handle } = Bare.Thread.self.data
|
|
15
16
|
|
|
16
17
|
this.source = source
|
|
17
18
|
this.preloads = preloads
|
|
18
19
|
this.data = Bare.Thread.self.data = data
|
|
20
|
+
this.environmentData = environmentData
|
|
19
21
|
|
|
20
|
-
const channel = Channel.from(handle, { interfaces: [
|
|
22
|
+
const channel = Channel.from(handle, { interfaces: [this._MessagePort] })
|
|
21
23
|
|
|
22
|
-
this.port = new
|
|
24
|
+
this.port = new this._MessagePort(channel)
|
|
23
25
|
this.port._online()
|
|
24
26
|
|
|
25
27
|
global[state] = this
|
|
@@ -30,11 +32,11 @@ class WorkerState {
|
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
get MessageChannel() {
|
|
33
|
-
return
|
|
35
|
+
return this._MessageChannel
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
get MessagePort() {
|
|
37
|
-
return
|
|
39
|
+
return this._MessagePort
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
42
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bare-worker",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.8",
|
|
4
4
|
"description": "Higher-level worker threads for JavaScript",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
"lib"
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
|
-
"
|
|
20
|
+
"format": "prettier --write . && lunte --fix",
|
|
21
|
+
"lint": "prettier --check . && lunte",
|
|
22
|
+
"test": "brittle-bare --coverage test.js"
|
|
21
23
|
},
|
|
22
24
|
"repository": {
|
|
23
25
|
"type": "git",
|
|
@@ -33,10 +35,11 @@
|
|
|
33
35
|
"bare-channel": "^5.1.5",
|
|
34
36
|
"bare-events": "^2.2.1",
|
|
35
37
|
"bare-module": "^6.0.1",
|
|
36
|
-
"bare-thread": "^1.
|
|
38
|
+
"bare-thread": "^1.2.2"
|
|
37
39
|
},
|
|
38
40
|
"devDependencies": {
|
|
39
41
|
"brittle": "^3.2.1",
|
|
42
|
+
"lunte": "^1.8.0",
|
|
40
43
|
"prettier": "^3.4.1",
|
|
41
44
|
"prettier-config-holepunch": "^2.0.0"
|
|
42
45
|
}
|
package/lib/preloads.js
DELETED