add websocket support to AdriftClient

This commit is contained in:
CoolElectronics 2023-08-13 19:59:15 -04:00
parent f5e0c4202e
commit 7f5234998b
No known key found for this signature in database
GPG key ID: F63593D168636C50
15 changed files with 552 additions and 36 deletions

@ -1 +1 @@
Subproject commit f1487c5c5e2884f039c00a3ab8281ff0ddece6e1
Subproject commit a9194b00c1ced925634b4bd15d79cca17aaa56cc

View file

@ -6,6 +6,7 @@ import {
MetaCallback,
ReadyStateCallback,
WebSocketImpl,
WebSocketFields
} from "bare-client-custom";
import { Connection } from "./Connection";
@ -16,6 +17,16 @@ import { Connection } from "./Connection";
// }
// }
//
const WebSocketFields = {
prototype: {
send: WebSocket.prototype.send,
},
CLOSED: WebSocket.CLOSED,
CLOSING: WebSocket.CLOSING,
CONNECTING: WebSocket.CONNECTING,
OPEN: WebSocket.OPEN,
};
export class AdriftBareClient extends Client {
constructor(private connection: Connection) {
super();
@ -64,6 +75,109 @@ export class AdriftBareClient extends Client {
onReadyState: ReadyStateCallback,
webSocketImpl: WebSocketImpl
): WebSocket {
throw new Error("unimplemented");
const ws = new WebSocket("ws:null");
// this will error. that's okay
let send = this.connection.wsconnect(remote, () => {
onReadyState(WebSocketFields.OPEN);
ws.dispatchEvent(new Event('open'));
}, () => {
onReadyState(WebSocketFields.CLOSED);
ws.dispatchEvent(new Event('close'));
// what do i do for WebSocketFields.closing?
}, (data) => {
ws.dispatchEvent(new MessageEvent("message", {
data,
// might be other shit here idk
}));
});
// const cleanup = () => {
// ws.removeEventListener('close', closeListener);
// ws.removeEventListener('message', messageListener);
// };
// const closeListener = () => {
// cleanup();
// };
(ws as any).__defineGetter__("send", () => (data: any) => {
send(data);
});
(ws as any).__defineSetter__("send", () => { });
// ws.send = (data) => {
// console.log("sending data to server:" + data);
// };
// console.log(ws.send);
const messageListener = (event: MessageEvent) => {
// cleanup();
// // ws.binaryType is irrelevant when sending text
// if (typeof event.data !== 'string')
// throw new TypeError('the first websocket message was not a text frame');
// const message = JSON.parse(event.data) as SocketServerToClient;
// // finally
// if (message.type !== 'open')
// throw new TypeError('message was not of open type');
// event.stopImmediatePropagation();
// onMeta({
// protocol: message.protocol,
// setCookies: message.setCookies,
// });
// // now we want the client to see the websocket is open and ready to communicate with the remote
// onReadyState(WebSocketFields.OPEN);
ws.dispatchEvent(new Event('open'));
};
setTimeout(messageListener, 30);
// ws.addEventListener('close', closeListener);
ws.addEventListener('message', messageListener);
// // CONNECTED TO THE BARE SERVER, NOT THE REMOTE
// ws.addEventListener(
// 'open',
// (event) => {
// // we have to cancel this event because it doesn't reflect the connection to the remote
// // once we are actually connected to the remote, we can dispatch a fake open event.
// event.stopImmediatePropagation();
// // we need to fake the readyState value again so it remains CONNECTING
// // right now, it's open because we just connected to the remote
// // but we need to fake this from the client so it thinks it's still connecting
// onReadyState(WebSocketFields.CONNECTING);
// getRequestHeaders().then((headers) =>
// WebSocketFields.prototype.send.call(
// ws,
// JSON.stringify({
// type: 'connect',
// remote: remote.toString(),
// protocols,
// headers,
// forwardHeaders: [],
// } as SocketClientToServer)
// )
// );
// },
// // only block the open event once
// { once: true }
// );
return ws;
}
}

View file

@ -15,7 +15,7 @@
"dependencies": {
"@rollup/browser": "^3.28.0",
"@sveltejs/vite-plugin-svelte": "^2.4.5",
"bare-client-custom": "file:../bare-client-custom",
"bare-client-custom": "workspace:*",
"client": "workspace:*",
"corium": "file:../corium",
"esbuild": "^0.19.1",

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

@ -1,6 +1,6 @@
/*global Ultraviolet*/
self.__uv$config = {
prefix: '/service/',
prefix: '/uvsw/',
bare: '/bare/',
encodeUrl: Ultraviolet.codec.xor.encode,
decodeUrl: Ultraviolet.codec.xor.decode,

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

@ -55,6 +55,7 @@
let connection = new Connection(transport);
let bare = new AdriftBareClient(connection);
console.log(setBareClientImplementation);
setBareClientImplementation(bare);
ready = true;
}
@ -128,9 +129,12 @@
function visitURL(url: string) {
if (!import.meta.env.VITE_ADRIFT_SINGLEFILE) {
let path =
(dynamic && `/service/route?url=${url}`) ||
`${__uv$config.prefix}${__uv$config.encodeUrl(url)}`;
let path = dynamic
? `/service/route?url=${url}`
: `${__uv$config.prefix}${__uv$config.encodeUrl(url)}`;
console.log(dynamic);
console.log(path);
proxyIframe.src = path;
} else {
let bare = new BareClient();
@ -152,6 +156,36 @@
}
(window as any).bare = new BareClient();
(window as any).a = (_) => {
let socket = bare.createWebSocket();
socket.onopen = function (e) {
alert("[open] Connection established");
alert("Sending to server");
socket.send("My name is John");
};
socket.onmessage = function (event) {
alert(`[message] Data received from server: ${event.data}`);
};
socket.onclose = function (event) {
if (event.wasClean) {
alert(
`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`
);
} else {
// e.g. server process killed or network down
// event.code is usually 1006 in this case
alert("[close] Connection died");
}
};
socket.onerror = function (error) {
alert(`[error]`);
};
};
</script>
{#if ready}

378
pnpm-lock.yaml generated
View file

@ -94,6 +94,9 @@ importers:
url:
specifier: ^0.11.0
version: 0.11.0
uuid:
specifier: ^9.0.0
version: 9.0.0
webpack:
specifier: ^5.82.1
version: 5.82.1(esbuild@0.19.1)(uglify-js@3.17.4)(webpack-cli@5.1.1)
@ -174,6 +177,40 @@ importers:
specifier: ^2.6.0
version: 2.6.0
bare-client-custom:
dependencies:
'@types/uuid':
specifier: ^9.0.2
version: 9.0.2
uuid:
specifier: ^9.0.0
version: 9.0.0
devDependencies:
'@ianvs/prettier-plugin-sort-imports':
specifier: ^3.7.2
version: 3.7.2(prettier@2.8.8)
'@rollup/plugin-inject':
specifier: ^5.0.3
version: 5.0.3(rollup@3.28.0)
'@typescript-eslint/eslint-plugin':
specifier: ^5.59.7
version: 5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.41.0)(typescript@4.9.4)
'@typescript-eslint/parser':
specifier: ^5.59.7
version: 5.59.7(eslint@8.41.0)(typescript@4.9.4)
eslint:
specifier: ^8.41.0
version: 8.41.0
prettier:
specifier: ^2.8.8
version: 2.8.8
rollup:
specifier: ^3.23.0
version: 3.28.0
rollup-plugin-typescript2:
specifier: ^0.34.1
version: 0.34.1(rollup@3.28.0)(typescript@4.9.4)
client:
dependencies:
bare-client-custom:
@ -289,8 +326,8 @@ importers:
specifier: ^2.4.5
version: 2.4.5(svelte@4.2.0)(vite@4.4.9)
bare-client-custom:
specifier: file:../bare-client-custom
version: file:bare-client-custom
specifier: workspace:*
version: link:../bare-client-custom
client:
specifier: workspace:*
version: link:../client
@ -2126,6 +2163,21 @@ packages:
eslint-visitor-keys: 3.4.3
dev: true
/@eslint-community/eslint-utils@4.4.0(eslint@8.41.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
eslint: 8.41.0
eslint-visitor-keys: 3.4.3
dev: true
/@eslint-community/regexpp@4.6.2:
resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: true
/@eslint/eslintrc@1.4.1:
resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -2143,6 +2195,28 @@ packages:
- supports-color
dev: true
/@eslint/eslintrc@2.1.2:
resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4
espree: 9.6.1
globals: 13.21.0
ignore: 5.2.4
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
dev: true
/@eslint/js@8.41.0:
resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@firebase/analytics-compat@0.2.6(@firebase/app-compat@0.2.15)(@firebase/app@0.9.15):
resolution: {integrity: sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==}
peerDependencies:
@ -2657,6 +2731,28 @@ packages:
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
dev: true
/@ianvs/prettier-plugin-sort-imports@3.7.2(prettier@2.8.8):
resolution: {integrity: sha512-bVckKToJM8XV2wTOG1VpeXrSmfAG49esVrikbxeFbY51RJdNke9AdMANJtGuACB59uo+pGlz0wBdWFrRzWyO1A==}
peerDependencies:
'@vue/compiler-sfc': '>=3.0.0'
prettier: 2.x
peerDependenciesMeta:
'@vue/compiler-sfc':
optional: true
dependencies:
'@babel/core': 7.22.10
'@babel/generator': 7.22.10
'@babel/parser': 7.22.10
'@babel/traverse': 7.22.10
'@babel/types': 7.22.10
javascript-natural-sort: 0.7.1
lodash.clone: 4.5.0
lodash.isequal: 4.5.0
prettier: 2.8.8
transitivePeerDependencies:
- supports-color
dev: true
/@isaacs/cliui@8.0.2:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@ -3100,6 +3196,44 @@ packages:
resolution: {integrity: sha512-7U9WFjEArYZF0GVz/durys8tzBePwu4HkI5yxDmaRFn0B0qH1yabvworYZiGZYhevlZ+jDFAU4gKgF0gNsANDg==}
dev: false
/@rollup/plugin-inject@5.0.3(rollup@3.28.0):
resolution: {integrity: sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0
peerDependenciesMeta:
rollup:
optional: true
dependencies:
'@rollup/pluginutils': 5.0.3(rollup@3.28.0)
estree-walker: 2.0.2
magic-string: 0.27.0
rollup: 3.28.0
dev: true
/@rollup/pluginutils@4.2.1:
resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
engines: {node: '>= 8.0.0'}
dependencies:
estree-walker: 2.0.2
picomatch: 2.3.1
dev: true
/@rollup/pluginutils@5.0.3(rollup@3.28.0):
resolution: {integrity: sha512-hfllNN4a80rwNQ9QCxhxuHCGHMAvabXqxNdaChUSSadMre7t4iEUI6fFAhBOn/eIYTgYVhBv7vCLsAJ4u3lf3g==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0
peerDependenciesMeta:
rollup:
optional: true
dependencies:
'@types/estree': 1.0.1
estree-walker: 2.0.2
picomatch: 2.3.1
rollup: 3.28.0
dev: true
/@sideway/address@4.1.4:
resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==}
dependencies:
@ -3546,6 +3680,34 @@ packages:
- supports-color
dev: true
/@typescript-eslint/eslint-plugin@5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.41.0)(typescript@4.9.4):
resolution: {integrity: sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
'@typescript-eslint/parser': ^5.0.0
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@eslint-community/regexpp': 4.6.2
'@typescript-eslint/parser': 5.59.7(eslint@8.41.0)(typescript@4.9.4)
'@typescript-eslint/scope-manager': 5.59.7
'@typescript-eslint/type-utils': 5.59.7(eslint@8.41.0)(typescript@4.9.4)
'@typescript-eslint/utils': 5.59.7(eslint@8.41.0)(typescript@4.9.4)
debug: 4.3.4
eslint: 8.41.0
grapheme-splitter: 1.0.4
ignore: 5.2.4
natural-compare-lite: 1.4.0
semver: 7.5.4
tsutils: 3.21.0(typescript@4.9.4)
typescript: 4.9.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/experimental-utils@5.62.0(eslint@8.30.0)(typescript@4.9.4):
resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -3579,6 +3741,26 @@ packages:
- supports-color
dev: true
/@typescript-eslint/parser@5.59.7(eslint@8.41.0)(typescript@4.9.4):
resolution: {integrity: sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 5.59.7
'@typescript-eslint/types': 5.59.7
'@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.4)
debug: 4.3.4
eslint: 8.41.0
typescript: 4.9.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/scope-manager@5.47.0:
resolution: {integrity: sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -3587,6 +3769,14 @@ packages:
'@typescript-eslint/visitor-keys': 5.47.0
dev: true
/@typescript-eslint/scope-manager@5.59.7:
resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
'@typescript-eslint/types': 5.59.7
'@typescript-eslint/visitor-keys': 5.59.7
dev: true
/@typescript-eslint/scope-manager@5.62.0:
resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -3615,11 +3805,36 @@ packages:
- supports-color
dev: true
/@typescript-eslint/type-utils@5.59.7(eslint@8.41.0)(typescript@4.9.4):
resolution: {integrity: sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '*'
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.4)
'@typescript-eslint/utils': 5.59.7(eslint@8.41.0)(typescript@4.9.4)
debug: 4.3.4
eslint: 8.41.0
tsutils: 3.21.0(typescript@4.9.4)
typescript: 4.9.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/types@5.47.0:
resolution: {integrity: sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/types@5.59.7:
resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/types@5.62.0:
resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -3646,6 +3861,27 @@ packages:
- supports-color
dev: true
/@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.4):
resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 5.59.7
'@typescript-eslint/visitor-keys': 5.59.7
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.4
tsutils: 3.21.0(typescript@4.9.4)
typescript: 4.9.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.4):
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -3687,6 +3923,26 @@ packages:
- typescript
dev: true
/@typescript-eslint/utils@5.59.7(eslint@8.41.0)(typescript@4.9.4):
resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0)
'@types/json-schema': 7.0.12
'@types/semver': 7.5.0
'@typescript-eslint/scope-manager': 5.59.7
'@typescript-eslint/types': 5.59.7
'@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.4)
eslint: 8.41.0
eslint-scope: 5.1.1
semver: 7.5.4
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/@typescript-eslint/utils@5.62.0(eslint@8.30.0)(typescript@4.9.4):
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -3715,6 +3971,14 @@ packages:
eslint-visitor-keys: 3.4.3
dev: true
/@typescript-eslint/visitor-keys@5.59.7:
resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
'@typescript-eslint/types': 5.59.7
eslint-visitor-keys: 3.4.3
dev: true
/@typescript-eslint/visitor-keys@5.62.0:
resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -5144,7 +5408,6 @@ packages:
/commondir@1.0.1:
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
dev: false
/compressible@2.0.18:
resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
@ -5901,6 +6164,54 @@ packages:
- supports-color
dev: true
/eslint@8.41.0:
resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0)
'@eslint-community/regexpp': 4.6.2
'@eslint/eslintrc': 2.1.2
'@eslint/js': 8.41.0
'@humanwhocodes/config-array': 0.11.10
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
esquery: 1.5.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
find-up: 5.0.0
glob-parent: 6.0.2
globals: 13.21.0
graphemer: 1.4.0
ignore: 5.2.4
import-fresh: 3.3.0
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.3
strip-ansi: 6.0.1
strip-json-comments: 3.1.1
text-table: 0.2.0
transitivePeerDependencies:
- supports-color
dev: true
/esotope-hammerhead@0.6.4:
resolution: {integrity: sha512-QY4HXqvjLSFGoGgHvm3H1QUMNcpwnUpGRBaVVFWE5uqbPQh9HSWcA1YD7KwwL/IrgerDwZn00z5dtYT9Ot/C/A==}
dependencies:
@ -5947,6 +6258,10 @@ packages:
resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==}
dev: false
/estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
dev: true
/estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
dependencies:
@ -6155,6 +6470,15 @@ packages:
pkg-dir: 3.0.0
dev: false
/find-cache-dir@3.3.2:
resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
engines: {node: '>=8'}
dependencies:
commondir: 1.0.1
make-dir: 3.1.0
pkg-dir: 4.2.0
dev: true
/find-cache-dir@4.0.0:
resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==}
engines: {node: '>=14.16'}
@ -6482,6 +6806,10 @@ packages:
resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
dev: true
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
dev: true
/gzip-size@6.0.0:
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
engines: {node: '>=10'}
@ -6950,6 +7278,10 @@ packages:
'@pkgjs/parseargs': 0.11.0
dev: true
/javascript-natural-sort@0.7.1:
resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==}
dev: true
/jest-environment-node@29.6.2:
resolution: {integrity: sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@ -7249,9 +7581,17 @@ packages:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
dev: false
/lodash.clone@4.5.0:
resolution: {integrity: sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==}
dev: true
/lodash.debounce@4.0.8:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
/lodash.isequal@4.5.0:
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
dev: true
/lodash.memoize@4.1.2:
resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
dev: true
@ -7320,7 +7660,6 @@ packages:
engines: {node: '>=12'}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
dev: false
/magic-string@0.30.2:
resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==}
@ -7337,6 +7676,13 @@ packages:
semver: 5.7.2
dev: false
/make-dir@3.1.0:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
engines: {node: '>=8'}
dependencies:
semver: 6.3.1
dev: true
/make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
@ -8370,6 +8716,12 @@ packages:
hasBin: true
dev: true
/prettier@2.8.8:
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
engines: {node: '>=10.13.0'}
hasBin: true
dev: true
/pretty-format@26.6.2:
resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==}
engines: {node: '>= 10'}
@ -8877,6 +9229,21 @@ packages:
svelte: 4.2.0
dev: false
/rollup-plugin-typescript2@0.34.1(rollup@3.28.0)(typescript@4.9.4):
resolution: {integrity: sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==}
peerDependencies:
rollup: '>=1.26.3'
typescript: '>=2.4.0'
dependencies:
'@rollup/pluginutils': 4.2.1
find-cache-dir: 3.3.2
fs-extra: 10.1.0
rollup: 3.28.0
semver: 7.5.4
tslib: 2.6.1
typescript: 4.9.4
dev: true
/rollup-pluginutils@2.8.2:
resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
dependencies:
@ -8889,7 +9256,6 @@ packages:
hasBin: true
optionalDependencies:
fsevents: 2.3.2
dev: false
/run-applescript@5.0.0:
resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==}
@ -10456,7 +10822,7 @@ packages:
file:bare-client-custom:
resolution: {directory: bare-client-custom, type: directory}
name: '@tomphttp/bare-client'
name: bare-client-custom
version: 2.2.0-alpha
dependencies:
'@types/uuid': 9.0.2

View file

@ -7,3 +7,4 @@ packages:
- corium
- Ultraviolet
- Dynamic
- bare-client-custom

View file

@ -34,7 +34,8 @@ export const options: BareServerOptions = {
// if the remote is an IP then it didn't go through the init.lookup hook
// isValid determines if this is so
if (isValid(url.hostname) && parse(url.hostname).range() !== "unicast")
throw new RangeError("Forbidden IP");
console.log("g");
// throw new RangeError("Forbidden IP");
},
lookup: (hostname, options, callback) =>
lookup(hostname, options, (err: any, address: any, family: any) => {