First Commit

This commit is contained in:
2025-08-28 19:35:28 -07:00
commit 264e65006a
488 changed files with 155661 additions and 0 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,336 @@
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var webSocketMockSource_exports = {};
__export(webSocketMockSource_exports, {
source: () => source
});
module.exports = __toCommonJS(webSocketMockSource_exports);
const source = `
var __commonJS = obj => {
let required = false;
let result;
return function __require() {
if (!required) {
required = true;
let fn;
for (const name in obj) { fn = obj[name]; break; }
const module = { exports: {} };
fn(module.exports, module);
result = module.exports;
}
return result;
}
};
var __export = (target, all) => {for (var name in all) target[name] = all[name];};
var __toESM = mod => ({ ...mod, 'default': mod });
var __toCommonJS = mod => ({ ...mod, __esModule: true });
// packages/injected/src/webSocketMock.ts
var webSocketMock_exports = {};
__export(webSocketMock_exports, {
inject: () => inject
});
module.exports = __toCommonJS(webSocketMock_exports);
function inject(globalThis) {
if (globalThis.__pwWebSocketDispatch)
return;
function generateId() {
const bytes = new Uint8Array(32);
globalThis.crypto.getRandomValues(bytes);
const hex = "0123456789abcdef";
return [...bytes].map((value) => {
const high = Math.floor(value / 16);
const low = value % 16;
return hex[high] + hex[low];
}).join("");
}
function bufferToData(b) {
let s = "";
for (let i = 0; i < b.length; i++)
s += String.fromCharCode(b[i]);
return { data: globalThis.btoa(s), isBase64: true };
}
function stringToBuffer(s) {
s = globalThis.atob(s);
const b = new Uint8Array(s.length);
for (let i = 0; i < s.length; i++)
b[i] = s.charCodeAt(i);
return b.buffer;
}
function messageToData(message, cb) {
if (message instanceof globalThis.Blob)
return message.arrayBuffer().then((buffer) => cb(bufferToData(new Uint8Array(buffer))));
if (typeof message === "string")
return cb({ data: message, isBase64: false });
if (ArrayBuffer.isView(message))
return cb(bufferToData(new Uint8Array(message.buffer, message.byteOffset, message.byteLength)));
return cb(bufferToData(new Uint8Array(message)));
}
function dataToMessage(data, binaryType) {
if (!data.isBase64)
return data.data;
const buffer = stringToBuffer(data.data);
return binaryType === "arraybuffer" ? buffer : new Blob([buffer]);
}
const binding = globalThis.__pwWebSocketBinding;
const NativeWebSocket = globalThis.WebSocket;
const idToWebSocket = /* @__PURE__ */ new Map();
globalThis.__pwWebSocketDispatch = (request) => {
const ws = idToWebSocket.get(request.id);
if (!ws)
return;
if (request.type === "connect")
ws._apiConnect();
if (request.type === "passthrough")
ws._apiPassThrough();
if (request.type === "ensureOpened")
ws._apiEnsureOpened();
if (request.type === "sendToPage")
ws._apiSendToPage(dataToMessage(request.data, ws.binaryType));
if (request.type === "closePage")
ws._apiClosePage(request.code, request.reason, request.wasClean);
if (request.type === "sendToServer")
ws._apiSendToServer(dataToMessage(request.data, ws.binaryType));
if (request.type === "closeServer")
ws._apiCloseServer(request.code, request.reason, request.wasClean);
};
const _WebSocketMock = class _WebSocketMock extends EventTarget {
constructor(url, protocols) {
var _a, _b;
super();
// WebSocket.CLOSED
this.CONNECTING = 0;
// WebSocket.CONNECTING
this.OPEN = 1;
// WebSocket.OPEN
this.CLOSING = 2;
// WebSocket.CLOSING
this.CLOSED = 3;
// WebSocket.CLOSED
this._oncloseListener = null;
this._onerrorListener = null;
this._onmessageListener = null;
this._onopenListener = null;
this.bufferedAmount = 0;
this.extensions = "";
this.protocol = "";
this.readyState = 0;
this._origin = "";
this._passthrough = false;
this._wsBufferedMessages = [];
this._binaryType = "blob";
this.url = new URL(url, globalThis.window.document.baseURI).href.replace(/^http/, "ws");
this._origin = (_b = (_a = URL.parse(this.url)) == null ? void 0 : _a.origin) != null ? _b : "";
this._protocols = protocols;
this._id = generateId();
idToWebSocket.set(this._id, this);
binding({ type: "onCreate", id: this._id, url: this.url });
}
// --- native WebSocket implementation ---
get binaryType() {
return this._binaryType;
}
set binaryType(type) {
this._binaryType = type;
if (this._ws)
this._ws.binaryType = type;
}
get onclose() {
return this._oncloseListener;
}
set onclose(listener) {
if (this._oncloseListener)
this.removeEventListener("close", this._oncloseListener);
this._oncloseListener = listener;
if (this._oncloseListener)
this.addEventListener("close", this._oncloseListener);
}
get onerror() {
return this._onerrorListener;
}
set onerror(listener) {
if (this._onerrorListener)
this.removeEventListener("error", this._onerrorListener);
this._onerrorListener = listener;
if (this._onerrorListener)
this.addEventListener("error", this._onerrorListener);
}
get onopen() {
return this._onopenListener;
}
set onopen(listener) {
if (this._onopenListener)
this.removeEventListener("open", this._onopenListener);
this._onopenListener = listener;
if (this._onopenListener)
this.addEventListener("open", this._onopenListener);
}
get onmessage() {
return this._onmessageListener;
}
set onmessage(listener) {
if (this._onmessageListener)
this.removeEventListener("message", this._onmessageListener);
this._onmessageListener = listener;
if (this._onmessageListener)
this.addEventListener("message", this._onmessageListener);
}
send(message) {
if (this.readyState === _WebSocketMock.CONNECTING)
throw new DOMException(\`Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.\`);
if (this.readyState !== _WebSocketMock.OPEN)
throw new DOMException(\`WebSocket is already in CLOSING or CLOSED state.\`);
if (this._passthrough) {
if (this._ws)
this._apiSendToServer(message);
} else {
messageToData(message, (data) => binding({ type: "onMessageFromPage", id: this._id, data }));
}
}
close(code, reason) {
if (code !== void 0 && code !== 1e3 && (code < 3e3 || code > 4999))
throw new DOMException(\`Failed to execute 'close' on 'WebSocket': The close code must be either 1000, or between 3000 and 4999. \${code} is neither.\`);
if (this.readyState === _WebSocketMock.OPEN || this.readyState === _WebSocketMock.CONNECTING)
this.readyState = _WebSocketMock.CLOSING;
if (this._passthrough)
this._apiCloseServer(code, reason, true);
else
binding({ type: "onClosePage", id: this._id, code, reason, wasClean: true });
}
// --- methods called from the routing API ---
_apiEnsureOpened() {
if (!this._ws)
this._ensureOpened();
}
_apiSendToPage(message) {
this._ensureOpened();
if (this.readyState !== _WebSocketMock.OPEN)
throw new DOMException(\`WebSocket is already in CLOSING or CLOSED state.\`);
this.dispatchEvent(new MessageEvent("message", { data: message, origin: this._origin, cancelable: true }));
}
_apiSendToServer(message) {
if (!this._ws)
throw new Error("Cannot send a message before connecting to the server");
if (this._ws.readyState === _WebSocketMock.CONNECTING)
this._wsBufferedMessages.push(message);
else
this._ws.send(message);
}
_apiConnect() {
if (this._ws)
throw new Error("Can only connect to the server once");
this._ws = new NativeWebSocket(this.url, this._protocols);
this._ws.binaryType = this._binaryType;
this._ws.onopen = () => {
for (const message of this._wsBufferedMessages)
this._ws.send(message);
this._wsBufferedMessages = [];
this._ensureOpened();
};
this._ws.onclose = (event) => {
this._onWSClose(event.code, event.reason, event.wasClean);
};
this._ws.onmessage = (event) => {
if (this._passthrough)
this._apiSendToPage(event.data);
else
messageToData(event.data, (data) => binding({ type: "onMessageFromServer", id: this._id, data }));
};
this._ws.onerror = () => {
const event = new Event("error", { cancelable: true });
this.dispatchEvent(event);
};
}
// This method connects to the server, and passes all messages through,
// as if WebSocketMock was not engaged.
_apiPassThrough() {
this._passthrough = true;
this._apiConnect();
}
_apiCloseServer(code, reason, wasClean) {
if (!this._ws) {
this._onWSClose(code, reason, wasClean);
return;
}
if (this._ws.readyState === _WebSocketMock.CONNECTING || this._ws.readyState === _WebSocketMock.OPEN)
this._ws.close(code, reason);
}
_apiClosePage(code, reason, wasClean) {
if (this.readyState === _WebSocketMock.CLOSED)
return;
this.readyState = _WebSocketMock.CLOSED;
this.dispatchEvent(new CloseEvent("close", { code, reason, wasClean, cancelable: true }));
this._maybeCleanup();
if (this._passthrough)
this._apiCloseServer(code, reason, wasClean);
else
binding({ type: "onClosePage", id: this._id, code, reason, wasClean });
}
// --- internals ---
_ensureOpened() {
var _a;
if (this.readyState !== _WebSocketMock.CONNECTING)
return;
this.extensions = ((_a = this._ws) == null ? void 0 : _a.extensions) || "";
if (this._ws)
this.protocol = this._ws.protocol;
else if (Array.isArray(this._protocols))
this.protocol = this._protocols[0] || "";
else
this.protocol = this._protocols || "";
this.readyState = _WebSocketMock.OPEN;
this.dispatchEvent(new Event("open", { cancelable: true }));
}
_onWSClose(code, reason, wasClean) {
if (this._passthrough)
this._apiClosePage(code, reason, wasClean);
else
binding({ type: "onCloseServer", id: this._id, code, reason, wasClean });
if (this._ws) {
this._ws.onopen = null;
this._ws.onclose = null;
this._ws.onmessage = null;
this._ws.onerror = null;
this._ws = void 0;
this._wsBufferedMessages = [];
}
this._maybeCleanup();
}
_maybeCleanup() {
if (this.readyState === _WebSocketMock.CLOSED && !this._ws)
idToWebSocket.delete(this._id);
}
};
_WebSocketMock.CONNECTING = 0;
// WebSocket.CONNECTING
_WebSocketMock.OPEN = 1;
// WebSocket.OPEN
_WebSocketMock.CLOSING = 2;
// WebSocket.CLOSING
_WebSocketMock.CLOSED = 3;
let WebSocketMock = _WebSocketMock;
globalThis.WebSocket = class WebSocket extends WebSocketMock {
};
}
`;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
source
});