Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit cc5718e

Browse files
author
exoego
committed
Add worker_threads module
1 parent eb3f691 commit cc5718e

File tree

6 files changed

+119
-0
lines changed

6 files changed

+119
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.scalajs.nodejs.worker_threads
2+
3+
import com.thoughtworks.enableMembersIf
4+
5+
import scala.scalajs.js
6+
import scala.scalajs.js.annotation.JSImport
7+
8+
@enableMembersIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
9+
@js.native
10+
@JSImport("worker_threads", "MessageChannel")
11+
class MessageChannel extends js.Object {
12+
def port1: MessagePort = js.native
13+
def port2: MessagePort = js.native
14+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.scalajs.nodejs.worker_threads
2+
3+
import com.thoughtworks.enableMembersIf
4+
import io.scalajs.nodejs.events.IEventEmitter
5+
6+
import scala.scalajs.js
7+
import scala.scalajs.js.annotation.JSImport
8+
9+
@enableMembersIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
10+
@js.native
11+
@JSImport("worker_threads", "MessageChannel")
12+
class MessagePort extends IEventEmitter with MessagePoster {
13+
14+
def ref(): Unit = js.native
15+
def start(): Unit = js.native
16+
def unref(): Unit = js.native
17+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.scalajs.nodejs.worker_threads
2+
3+
import com.thoughtworks.enableMembersIf
4+
5+
import scala.scalajs.js
6+
7+
@enableMembersIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
8+
@js.native
9+
trait MessagePoster extends js.Object {
10+
11+
def postMessage(value: js.Any): Unit = js.native
12+
13+
def postMessage(value: js.Any, transferList: js.Array[js.|[js.typedarray.ArrayBuffer, MessagePort]]): Unit = js.native
14+
15+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.scalajs.nodejs.worker_threads
2+
3+
import com.thoughtworks.enableMembersIf
4+
5+
import scala.scalajs.js
6+
import scala.scalajs.js.annotation.JSImport
7+
8+
@enableMembersIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
9+
@js.native
10+
@JSImport("worker_threads", "Worker")
11+
class Worker(filename: String, workerOptions: WorkerOptions = js.native) extends js.Object with MessagePoster {
12+
def ref(): Unit = js.native
13+
def unref(): Unit = js.native
14+
15+
// TODO: No need to UnderOr when Node.js v10 dropepd
16+
def terminate(): js.UndefOr[js.Promise[Unit]] = js.native
17+
18+
def threadId: Int = js.native
19+
20+
def stderr: io.scalajs.nodejs.stream.Readable = js.native
21+
def stdout: io.scalajs.nodejs.stream.Readable = js.native
22+
def stdin: js.|[io.scalajs.nodejs.stream.Writable, Null] = js.native
23+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.scalajs.nodejs.worker_threads
2+
3+
import io.scalajs.nodejs.process
4+
5+
import scala.scalajs.js
6+
7+
class WorkerOptions(
8+
var env: js.UndefOr[process.Environment] = js.undefined,
9+
var eval: js.UndefOr[Boolean] = js.undefined,
10+
var execArgv: js.UndefOr[js.Array[String]] = js.undefined,
11+
var stdin: js.UndefOr[Boolean] = js.undefined,
12+
var stdout: js.UndefOr[Boolean] = js.undefined,
13+
var stderr: js.UndefOr[Boolean] = js.undefined,
14+
var workerData: js.UndefOr[js.Any] = js.undefined
15+
) extends js.Object
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package io.scalajs.nodejs.worker_threads
2+
3+
import com.thoughtworks.enableIf
4+
5+
import scala.scalajs.js
6+
import scala.scalajs.js.annotation.JSImport
7+
8+
@js.native
9+
trait WorkerThreads extends js.Object {
10+
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
11+
def isMainThread: Boolean = js.native
12+
13+
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
14+
def parentPort: js.|[MessagePort, Null] = js.native
15+
16+
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
17+
def SHARE_ENV: js.Symbol = js.native
18+
19+
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
20+
def threadId: Int = js.native
21+
22+
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
23+
def workerData: js.Any = js.native
24+
25+
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs12)
26+
def moveMessagePortToContext(port: MessagePort,
27+
contextifiedSandbox: io.scalajs.nodejs.vm.ScriptContext): MessagePort = js.native
28+
29+
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs12)
30+
def receiveMessageOnPort(port: MessagePort): js.UndefOr[js.Object] = js.native
31+
}
32+
33+
@js.native
34+
@JSImport("worker_threads", JSImport.Namespace)
35+
object WorkerThreads extends WorkerThreads

0 commit comments

Comments
 (0)