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 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
- let MessageChannel
8
- let MessagePort
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
- MessageChannel = WorkerState.parent.MessageChannel
12
- MessagePort = WorkerState.parent.MessagePort
13
- } else {
14
- MessageChannel = require('./lib/message-channel')
15
- MessagePort = require('./lib/message-port')
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
- }
@@ -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
@@ -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
  })
@@ -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
- const { source, preloads, data, channel: handle } = Bare.Thread.self.data
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: [MessagePort] })
22
+ const channel = Channel.from(handle, { interfaces: [this._MessagePort] })
21
23
 
22
- this.port = new MessagePort(channel)
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 MessageChannel
35
+ return this._MessageChannel
34
36
  }
35
37
 
36
38
  get MessagePort() {
37
- return MessagePort
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.5",
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
- "test": "prettier . --check && bare test.js"
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.1.3"
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
@@ -1,11 +0,0 @@
1
- const WorkerState = require('./worker-state')
2
-
3
- const preloads = new Map()
4
-
5
- if (WorkerState.parent) {
6
- for (const [entry, source] of WorkerState.parent.preloads) {
7
- preloads.set(entry, source)
8
- }
9
- }
10
-
11
- module.exports = preloads