rearrage_stuff
This commit is contained in:
20
node_modules/sync-message-port/LICENSE
generated
vendored
Normal file
20
node_modules/sync-message-port/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
Copyright (c) 2024, Google LLC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
133
node_modules/sync-message-port/README.md
generated
vendored
Normal file
133
node_modules/sync-message-port/README.md
generated
vendored
Normal file
@@ -0,0 +1,133 @@
|
||||
# `sync-message-port`
|
||||
|
||||
This package exposes a utility class that encapsulates the ability to send and
|
||||
receive messages with arbitrary structure across Node.js worker boundaries. It
|
||||
can be used as the building block for synchronous versions of APIs that are
|
||||
traditionally only available asynchronously in the Node.js ecosystem by running
|
||||
the asynchronous APIs in a worker and accessing their results synchronously from
|
||||
the main thread.
|
||||
|
||||
See [the `sync-child-process` package] for an example of `sync-message-port` in
|
||||
action.
|
||||
|
||||
[the `sync-child-process` package]: https://github.com/sass/sync-child-process
|
||||
|
||||
[**API Docs**]
|
||||
|
||||
[**API Docs**]: https://sass.github.io/sync-message-port/classes/SyncMessagePort.html
|
||||
|
||||
## Usage
|
||||
|
||||
1. Use [`SyncMessagePort.createChannel()`] to create a message channel that's
|
||||
set up to be compatible with `SyncMessagePort`s. A normal `MessageChannel`
|
||||
won't work!
|
||||
|
||||
2. You can send this `MessageChannel`'s ports across worker boundaries just like
|
||||
any other `MessagePort`. Send one to the worker you want to communicate with
|
||||
synchronously.
|
||||
|
||||
3. Once you're ready to start sending and receiving messages, wrap *both* ports
|
||||
in [`new SyncMessagePort()`], even if one is only ever going to be sending
|
||||
messages and not receiving them.
|
||||
|
||||
4. Use [`SyncMessagePort.postMessage()`] to send messages and
|
||||
`SyncMessagePort.receiveMessage()` to receive them synchronously.
|
||||
|
||||
[`SyncMessagePort.createChannel()`]: https://sass.github.io/sync-message-port/classes/SyncMessagePort.html#createChannel
|
||||
[`new SyncMessagePort()`]: https://sass.github.io/sync-message-port/classes/SyncMessagePort.html#constructor
|
||||
[`SyncMessagePort.postMessage()`]: https://sass.github.io/sync-message-port/classes/SyncMessagePort.html#postMessage
|
||||
[`SyncMessagePort.receiveMessage()`]: https://sass.github.io/sync-message-port/classes/SyncMessagePort.html#receiveMessage
|
||||
|
||||
```js
|
||||
import {Worker} from 'node:worker_threads';
|
||||
import {SyncMessagePort} from 'sync-message-port;
|
||||
// or
|
||||
// const {SyncMessagePort} = require('sync-message-port');
|
||||
|
||||
// Channels must be created using this function. A MessageChannel created by
|
||||
// hand won't work.
|
||||
const channel = SyncMessagePort.createChannel();
|
||||
const localPort = new SyncMessagePort(channel.port1);
|
||||
|
||||
const worker = new Worker(`
|
||||
import {workerData} = require('node:worker_threads');
|
||||
import {SyncMessagePort} from 'sync-message-port';
|
||||
|
||||
const remotePort = new SyncMessagePort(workerData.port);
|
||||
|
||||
setTimeout(() => {
|
||||
remotePort.postMessage("hello from worker!");
|
||||
}, 2000);
|
||||
`, {
|
||||
workerData: {port: channel.port2},
|
||||
transferList: [channel.port2],
|
||||
eval: true,
|
||||
});
|
||||
|
||||
// Note that because workers report errors asynchronously, this won't report an
|
||||
// error if the worker fails to load because the main thread will be
|
||||
// synchronously waiting for its first message.
|
||||
worker.on('error', console.error);
|
||||
|
||||
console.log(localPort.receiveMessage());
|
||||
```
|
||||
|
||||
## Why synchrony?
|
||||
|
||||
Although JavaScript in general and Node.js in particular are typically designed
|
||||
to embrace asynchrony, there are a number of reasons why a synchronous API may
|
||||
be preferable or even necessary.
|
||||
|
||||
### No a/synchronous polymorphism
|
||||
|
||||
Although `async`/`await` and the `Promise` API has substantially improved the
|
||||
usability of writing asynchronous code in JavaScript, it doesn't address one
|
||||
core issue: there's no way to write code that's *polymorphic* over asynchrony.
|
||||
Put in simpler terms, there's no language-level way to write a complex function
|
||||
that takes a callback and to run that functions synchronously if the callback is
|
||||
synchronous and asynchronously otherwise. The only option is to write the
|
||||
function twice.
|
||||
|
||||
This poses a real, practical problem when interacting with libraries. Suppose
|
||||
you have a library that takes a callback option—for example, an HTML
|
||||
sanitization library that takes a callback to determine how to handle a given
|
||||
`<a href="...">`. The library doesn't need to do any IO itself, so it's written
|
||||
synchronously. But what if your callback wants to make an HTTP request to
|
||||
determine how to handle a tag? You're stuck unless you can make that request
|
||||
synchronous. This library makes that possible.
|
||||
|
||||
### Performance considerations
|
||||
|
||||
Asynchrony is generally more performant in situations where there's a large
|
||||
amount of concurrent IO happening. But when performance is CPU-bound, it's often
|
||||
substantially worse due to the overhead of bouncing back and forth between the
|
||||
event loop and user code.
|
||||
|
||||
As a real-world example, the Sass compiler API supports both synchronous and
|
||||
asynchronous code paths to work around the polymorphism problem described above.
|
||||
The logic of these paths is exactly the same—the only difference is that the
|
||||
asynchronous path's functions all return `Promise`s instead of synchronous
|
||||
values. Compiling with the asynchronous path often takes 2-3x longer than with
|
||||
the synchronous path. This means that being able to run plugins synchronously
|
||||
can provide a substantial overall performance gain, even if the plugins
|
||||
themselves lose the benefit of concurrency.
|
||||
|
||||
## How does it work?
|
||||
|
||||
This uses [`Atomics`] and [`SharedArrayBuffer`] under the covers to signal
|
||||
across threads when messages are available, and
|
||||
[`worker_threads.receiveMessageOnPort()`] to actually retrieve messages.
|
||||
|
||||
[`Atomics`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics
|
||||
[`SharedArrayBuffer`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
|
||||
[`worker_threads.receiveMessageOnPort()`]: https://nodejs.org/api/worker_threads.html#workerreceivemessageonportport
|
||||
|
||||
### Can I use this in a browser?
|
||||
|
||||
Unfortunately, no. Browsers don't support any equivalent of
|
||||
`worker_threads.receiveMessageOnPort()`, even within worker threads. You could
|
||||
make a similar package that can transmit only binary data (or data that can be
|
||||
encoded as binary) using only `SharedArrayBuffer`, but that's outside the scope
|
||||
of this package.
|
||||
|
||||
Disclaimer: this is not an official Google product.
|
||||
82
node_modules/sync-message-port/dist/lib/index.d.ts
generated
vendored
Normal file
82
node_modules/sync-message-port/dist/lib/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
import { EventEmitter } from 'events';
|
||||
import { MessageChannel, MessagePort, TransferListItem } from 'worker_threads';
|
||||
/**
|
||||
* Options that can be passed to {@link SyncMessagePort.receiveMessage}.
|
||||
*/
|
||||
export interface ReceiveMessageOptions {
|
||||
/**
|
||||
* The time (in milliseconds) to wait for a message before returning {@link
|
||||
* timeoutValue} (if set) or throwing a [TimeoutException] otherwise.
|
||||
*/
|
||||
timeout?: number;
|
||||
/**
|
||||
* If a message isn't received within {@link timeout} milliseconds, this value
|
||||
* is returned. Ignored if {@link timeout} is not set.
|
||||
*/
|
||||
timeoutValue?: unknown;
|
||||
/**
|
||||
* If the underlying channel is closed before calling {@link
|
||||
* SyncMessagePort.receiveMessage} or while a call is pending, return this
|
||||
* value.
|
||||
*/
|
||||
closedValue?: unknown;
|
||||
}
|
||||
/**
|
||||
* An exception thrown by {@link SyncMessagePort.receiveMessage} if a message
|
||||
* isn't received within {@link ReceivedMessageOptions.timeout} milliseconds.
|
||||
*/
|
||||
export declare class TimeoutException extends Error {
|
||||
constructor(message: string);
|
||||
}
|
||||
/**
|
||||
* A communication port that can receive messages synchronously from another
|
||||
* `SyncMessagePort`.
|
||||
*
|
||||
* This also emits the same asynchronous events as `MessagePort`.
|
||||
*/
|
||||
export declare class SyncMessagePort extends EventEmitter {
|
||||
private readonly port;
|
||||
/** Creates a channel whose ports can be passed to `new SyncMessagePort()`. */
|
||||
static createChannel(): MessageChannel;
|
||||
/**
|
||||
* An Int32 view of the shared buffer.
|
||||
*
|
||||
* Each port sets this to `BufferState.AwaitingMessage` before checking for
|
||||
* new messages in `receiveMessage()`, and each port sets it to
|
||||
* `BufferState.MessageSent` after sending a new message. It's set to
|
||||
* `BufferState.Closed` when the channel is closed.
|
||||
*/
|
||||
private readonly buffer;
|
||||
/**
|
||||
* Creates a new message port. The `port` must be created by
|
||||
* `SyncMessagePort.createChannel()` and must connect to a port passed to
|
||||
* another `SyncMessagePort` in another worker.
|
||||
*/
|
||||
constructor(port: MessagePort);
|
||||
/** See `MessagePort.postMesage()`. */
|
||||
postMessage(value: unknown, transferList?: TransferListItem[]): void;
|
||||
/**
|
||||
* Returns the message sent by the other port, if one is available. This *does
|
||||
* not* block, and will return `undefined` immediately if no message is
|
||||
* available. In order to distinguish between a message with value `undefined`
|
||||
* and no message, a message is return in an object with a `message` field.
|
||||
*
|
||||
* This may not be called while this has a listener for the `'message'` event.
|
||||
* It does *not* throw an error if the port is closed when this is called;
|
||||
* instead, it just returns `undefined`.
|
||||
*/
|
||||
receiveMessageIfAvailable(): {
|
||||
message: unknown;
|
||||
} | undefined;
|
||||
/**
|
||||
* Blocks and returns the next message sent by the other port.
|
||||
*
|
||||
* This may not be called while this has a listener for the `'message'` event.
|
||||
* Throws an error if the channel is closed, including if it closes while this
|
||||
* is waiting for a message, unless {@link ReceiveMessageOptions.closedValue}
|
||||
* is passed.
|
||||
*/
|
||||
receiveMessage(options?: ReceiveMessageOptions): unknown;
|
||||
/** See `MessagePort.close()`. */
|
||||
close(): void;
|
||||
}
|
||||
174
node_modules/sync-message-port/dist/lib/index.js
generated
vendored
Normal file
174
node_modules/sync-message-port/dist/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
"use strict";
|
||||
// Copyright 2021 Google LLC. Use of this source code is governed by an
|
||||
// MIT-style license that can be found in the LICENSE file or at
|
||||
// https://opensource.org/licenses/MIT.
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.SyncMessagePort = exports.TimeoutException = void 0;
|
||||
const assert_1 = require("assert");
|
||||
const events_1 = require("events");
|
||||
const worker_threads_1 = require("worker_threads");
|
||||
/**
|
||||
* An enum of possible states for the shared buffer that two `SyncMessagePort`s
|
||||
* use to communicate.
|
||||
*/
|
||||
var BufferState;
|
||||
(function (BufferState) {
|
||||
/**
|
||||
* The initial state. When an endpoint is ready to receive messages, it'll set
|
||||
* the buffer to this state so that it can use `Atomics.wait()` to be notified
|
||||
* when it switches to `MessageSent`.
|
||||
*/
|
||||
BufferState[BufferState["AwaitingMessage"] = 0] = "AwaitingMessage";
|
||||
/**
|
||||
* The state indicating that a message has been sent. Whenever an endpoint
|
||||
* sends a message, it'll set the buffer to this state so that the other
|
||||
* endpoint's `Atomics.wait()` call terminates.
|
||||
*/
|
||||
BufferState[BufferState["MessageSent"] = 1] = "MessageSent";
|
||||
/**
|
||||
* The bitmask indicating that the channel has been closed. This is masked on
|
||||
* top of AwaitingMessage and MessageSent state. It never transitions to any
|
||||
* other states once closed.
|
||||
*/
|
||||
BufferState[BufferState["Closed"] = 2] = "Closed";
|
||||
})(BufferState || (BufferState = {}));
|
||||
/**
|
||||
* An exception thrown by {@link SyncMessagePort.receiveMessage} if a message
|
||||
* isn't received within {@link ReceivedMessageOptions.timeout} milliseconds.
|
||||
*/
|
||||
class TimeoutException extends Error {
|
||||
constructor(message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
exports.TimeoutException = TimeoutException;
|
||||
/**
|
||||
* A communication port that can receive messages synchronously from another
|
||||
* `SyncMessagePort`.
|
||||
*
|
||||
* This also emits the same asynchronous events as `MessagePort`.
|
||||
*/
|
||||
class SyncMessagePort extends events_1.EventEmitter {
|
||||
port;
|
||||
/** Creates a channel whose ports can be passed to `new SyncMessagePort()`. */
|
||||
static createChannel() {
|
||||
const channel = new worker_threads_1.MessageChannel();
|
||||
// Four bytes is the minimum necessary to use `Atomics.wait()`.
|
||||
const buffer = new SharedArrayBuffer(4);
|
||||
// Queue up messages on each port so the caller doesn't have to explicitly
|
||||
// pass the buffer around along with them.
|
||||
channel.port1.postMessage(buffer);
|
||||
channel.port2.postMessage(buffer);
|
||||
return channel;
|
||||
}
|
||||
/**
|
||||
* An Int32 view of the shared buffer.
|
||||
*
|
||||
* Each port sets this to `BufferState.AwaitingMessage` before checking for
|
||||
* new messages in `receiveMessage()`, and each port sets it to
|
||||
* `BufferState.MessageSent` after sending a new message. It's set to
|
||||
* `BufferState.Closed` when the channel is closed.
|
||||
*/
|
||||
buffer;
|
||||
/**
|
||||
* Creates a new message port. The `port` must be created by
|
||||
* `SyncMessagePort.createChannel()` and must connect to a port passed to
|
||||
* another `SyncMessagePort` in another worker.
|
||||
*/
|
||||
constructor(port) {
|
||||
super();
|
||||
this.port = port;
|
||||
const buffer = (0, worker_threads_1.receiveMessageOnPort)(this.port)?.message;
|
||||
if (!buffer) {
|
||||
throw new Error('new SyncMessagePort() must be passed a port from ' +
|
||||
'SyncMessagePort.createChannel().');
|
||||
}
|
||||
this.buffer = new Int32Array(buffer);
|
||||
this.on('newListener', (event, listener) => {
|
||||
this.port.on(event, listener);
|
||||
});
|
||||
this.on('removeListener', (event, listener) => this.port.removeListener(event, listener));
|
||||
}
|
||||
/** See `MessagePort.postMesage()`. */
|
||||
postMessage(value, transferList) {
|
||||
this.port.postMessage(value, transferList);
|
||||
// If the other port is waiting for a new message, notify it that the
|
||||
// message is ready. Use `Atomics.compareExchange` so that we don't
|
||||
// overwrite the "closed" state.
|
||||
if (Atomics.compareExchange(this.buffer, 0, BufferState.AwaitingMessage, BufferState.MessageSent) === BufferState.AwaitingMessage) {
|
||||
Atomics.notify(this.buffer, 0);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Returns the message sent by the other port, if one is available. This *does
|
||||
* not* block, and will return `undefined` immediately if no message is
|
||||
* available. In order to distinguish between a message with value `undefined`
|
||||
* and no message, a message is return in an object with a `message` field.
|
||||
*
|
||||
* This may not be called while this has a listener for the `'message'` event.
|
||||
* It does *not* throw an error if the port is closed when this is called;
|
||||
* instead, it just returns `undefined`.
|
||||
*/
|
||||
receiveMessageIfAvailable() {
|
||||
if (this.listenerCount('message')) {
|
||||
throw new Error('SyncMessageChannel.receiveMessageIfAvailable() may not be called ' +
|
||||
'while there are message listeners.');
|
||||
}
|
||||
return (0, worker_threads_1.receiveMessageOnPort)(this.port);
|
||||
}
|
||||
/**
|
||||
* Blocks and returns the next message sent by the other port.
|
||||
*
|
||||
* This may not be called while this has a listener for the `'message'` event.
|
||||
* Throws an error if the channel is closed, including if it closes while this
|
||||
* is waiting for a message, unless {@link ReceiveMessageOptions.closedValue}
|
||||
* is passed.
|
||||
*/
|
||||
receiveMessage(options) {
|
||||
if (this.listenerCount('message')) {
|
||||
throw new Error('SyncMessageChannel.receiveMessage() may not be called while there ' +
|
||||
'are message listeners.');
|
||||
}
|
||||
// Set the "new message" indicator to zero before we check for new messages.
|
||||
// That way if the other port sets it to 1 between the call to
|
||||
// `receiveMessageOnPort` and the call to `Atomics.wait()`, we won't
|
||||
// overwrite it. Use `Atomics.compareExchange` so that we don't overwrite
|
||||
// the "closed" state.
|
||||
const previousState = Atomics.compareExchange(this.buffer, 0, BufferState.MessageSent, BufferState.AwaitingMessage);
|
||||
if (previousState === BufferState.Closed) {
|
||||
if (options && 'closedValue' in options)
|
||||
return options.closedValue;
|
||||
throw new Error("The SyncMessagePort's channel is closed.");
|
||||
}
|
||||
let message = (0, worker_threads_1.receiveMessageOnPort)(this.port);
|
||||
if (message)
|
||||
return message.message;
|
||||
// If there's no new message, wait for the other port to flip the "new
|
||||
// message" indicator to 1. If it's been set to 1 since we stored 0, this
|
||||
// will terminate immediately.
|
||||
const result = Atomics.wait(this.buffer, 0, BufferState.AwaitingMessage, options?.timeout);
|
||||
message = (0, worker_threads_1.receiveMessageOnPort)(this.port);
|
||||
if (message)
|
||||
return message.message;
|
||||
if (result === 'timed-out') {
|
||||
if ('timeoutValue' in options)
|
||||
return options.timeoutValue;
|
||||
throw new TimeoutException('SyncMessagePort.receiveMessage() timed out.');
|
||||
}
|
||||
// Update the state to 0b10 after the last message is consumed.
|
||||
const oldState = Atomics.and(this.buffer, 0, BufferState.Closed);
|
||||
// Assert the old state was either 0b10 or 0b11.
|
||||
assert_1.strict.equal(oldState & BufferState.Closed, BufferState.Closed);
|
||||
if (options && 'closedValue' in options)
|
||||
return options.closedValue;
|
||||
throw new Error("The SyncMessagePort's channel is closed.");
|
||||
}
|
||||
/** See `MessagePort.close()`. */
|
||||
close() {
|
||||
Atomics.or(this.buffer, 0, BufferState.Closed);
|
||||
Atomics.notify(this.buffer, 0);
|
||||
this.port.close();
|
||||
}
|
||||
}
|
||||
exports.SyncMessagePort = SyncMessagePort;
|
||||
//# sourceMappingURL=index.js.map
|
||||
1
node_modules/sync-message-port/dist/lib/index.js.map
generated
vendored
Normal file
1
node_modules/sync-message-port/dist/lib/index.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"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"}
|
||||
1
node_modules/sync-message-port/dist/tsconfig.build.tsbuildinfo
generated
vendored
Normal file
1
node_modules/sync-message-port/dist/tsconfig.build.tsbuildinfo
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
42
node_modules/sync-message-port/package.json
generated
vendored
Normal file
42
node_modules/sync-message-port/package.json
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"name": "sync-message-port",
|
||||
"version": "1.1.3",
|
||||
"description": "A Node.js communication port that can pass messages synchronously between workers",
|
||||
"repository": "sass/sync-message-port",
|
||||
"author": "Google Inc.",
|
||||
"license": "MIT",
|
||||
"exports": {
|
||||
"types": "./dist/lib/index.d.ts",
|
||||
"default": "./dist/lib/index.js"
|
||||
},
|
||||
"main": "dist/lib/index.js",
|
||||
"types": "dist/lib/index.d.ts",
|
||||
"files": [
|
||||
"dist/**/*"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=16.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"check": "npm-run-all check:gts check:tsc",
|
||||
"check:gts": "gts check",
|
||||
"check:tsc": "tsc --noEmit",
|
||||
"clean": "gts clean",
|
||||
"compile": "tsc -p tsconfig.build.json",
|
||||
"doc": "typedoc lib/index.ts",
|
||||
"fix": "gts fix",
|
||||
"test": "jest"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^29.4.0",
|
||||
"@types/node": "^22.0.0",
|
||||
"gts": "^6.0.2",
|
||||
"jest": "^29.4.1",
|
||||
"minipass": "7.1.2",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"ts-jest": "^29.0.5",
|
||||
"ts-node": "^10.2.1",
|
||||
"typedoc": "^0.26.11",
|
||||
"typescript": "^5.0.2"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user