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

Add worker_threads module #93

Merged
merged 1 commit into from
Oct 3, 2019
Merged
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.scalajs.nodejs.worker_threads

import com.thoughtworks.enableMembersIf

import scala.scalajs.js
import scala.scalajs.js.annotation.JSImport

@enableMembersIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
@js.native
@JSImport("worker_threads", "MessageChannel")
class MessageChannel extends js.Object {
def port1: MessagePort = js.native
def port2: MessagePort = js.native
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.scalajs.nodejs.worker_threads

import com.thoughtworks.enableMembersIf
import io.scalajs.nodejs.events.IEventEmitter

import scala.scalajs.js
import scala.scalajs.js.annotation.JSImport

@enableMembersIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
@js.native
@JSImport("worker_threads", "MessageChannel")
class MessagePort extends IEventEmitter with MessagePoster {

def ref(): Unit = js.native
def start(): Unit = js.native
def unref(): Unit = js.native
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package io.scalajs.nodejs.worker_threads

import com.thoughtworks.enableMembersIf

import scala.scalajs.js

@enableMembersIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
@js.native
trait MessagePoster extends js.Object {

def postMessage(value: js.Any): Unit = js.native

def postMessage(value: js.Any, transferList: js.Array[js.|[js.typedarray.ArrayBuffer, MessagePort]]): Unit = js.native

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package io.scalajs.nodejs.worker_threads

import com.thoughtworks.enableMembersIf

import scala.scalajs.js
import scala.scalajs.js.annotation.JSImport

@enableMembersIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
@js.native
@JSImport("worker_threads", "Worker")
class Worker(filename: String, workerOptions: WorkerOptions = js.native) extends js.Object with MessagePoster {
def ref(): Unit = js.native
def unref(): Unit = js.native

// TODO: No need to UnderOr when Node.js v10 dropepd
def terminate(): js.UndefOr[js.Promise[Unit]] = js.native

def threadId: Int = js.native

def stderr: io.scalajs.nodejs.stream.Readable = js.native
def stdout: io.scalajs.nodejs.stream.Readable = js.native
def stdin: js.|[io.scalajs.nodejs.stream.Writable, Null] = js.native
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package io.scalajs.nodejs.worker_threads

import io.scalajs.nodejs.process

import scala.scalajs.js

class WorkerOptions(
var env: js.UndefOr[process.Environment] = js.undefined,
var eval: js.UndefOr[Boolean] = js.undefined,
var execArgv: js.UndefOr[js.Array[String]] = js.undefined,
var stdin: js.UndefOr[Boolean] = js.undefined,
var stdout: js.UndefOr[Boolean] = js.undefined,
var stderr: js.UndefOr[Boolean] = js.undefined,
var workerData: js.UndefOr[js.Any] = js.undefined
) extends js.Object
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package io.scalajs.nodejs.worker_threads

import com.thoughtworks.enableIf

import scala.scalajs.js
import scala.scalajs.js.annotation.JSImport

@js.native
trait WorkerThreads extends js.Object {
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
def isMainThread: Boolean = js.native

@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
def parentPort: js.|[MessagePort, Null] = js.native

@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
def SHARE_ENV: js.Symbol = js.native

@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
def threadId: Int = js.native

@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
def workerData: js.Any = js.native

@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs12)
def moveMessagePortToContext(port: MessagePort,
contextifiedSandbox: io.scalajs.nodejs.vm.ScriptContext): MessagePort = js.native

@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs12)
def receiveMessageOnPort(port: MessagePort): js.UndefOr[js.Object] = js.native
}

@js.native
@JSImport("worker_threads", JSImport.Namespace)
object WorkerThreads extends WorkerThreads