Polyfill WebSocket on Node
This commit is contained in:
parent
fcd0cb84fe
commit
85648c9466
5 changed files with 1427 additions and 272 deletions
1669
frontend/package-lock.json
generated
1669
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -23,6 +23,7 @@
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^29.5.14",
|
||||||
"@types/node": "^22.13.10",
|
"@types/node": "^22.13.10",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
|
"sync_lib": "file:../../backend/sync_lib/pkg",
|
||||||
"ts-jest": "^29.2.6",
|
"ts-jest": "^29.2.6",
|
||||||
"ts-loader": "^9.5.2",
|
"ts-loader": "^9.5.2",
|
||||||
"tslib": "2.8.1",
|
"tslib": "2.8.1",
|
||||||
|
|
@ -30,6 +31,6 @@
|
||||||
"webpack": "^5.98.0",
|
"webpack": "^5.98.0",
|
||||||
"webpack-cli": "^6.0.1",
|
"webpack-cli": "^6.0.1",
|
||||||
"webpack-merge": "^6.0.1",
|
"webpack-merge": "^6.0.1",
|
||||||
"sync_lib": "file:../../backend/sync_lib/pkg"
|
"ws": "^8.18.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -249,6 +249,15 @@ export class Syncer {
|
||||||
const wsUri = new URL(settings.remoteUri);
|
const wsUri = new URL(settings.remoteUri);
|
||||||
wsUri.protocol = wsUri.protocol === "https" ? "wss" : "ws";
|
wsUri.protocol = wsUri.protocol === "https" ? "wss" : "ws";
|
||||||
wsUri.pathname = `/vaults/${settings.vaultName}/ws`;
|
wsUri.pathname = `/vaults/${settings.vaultName}/ws`;
|
||||||
|
|
||||||
|
if (
|
||||||
|
typeof globalThis !== "undefined" &&
|
||||||
|
typeof globalThis.WebSocket === "undefined"
|
||||||
|
) {
|
||||||
|
// polyfill for WebSocket in Node.js
|
||||||
|
globalThis.WebSocket = require("ws");
|
||||||
|
}
|
||||||
|
|
||||||
this.applyRemoteChangesWebSocket = new WebSocket(wsUri);
|
this.applyRemoteChangesWebSocket = new WebSocket(wsUri);
|
||||||
|
|
||||||
this.applyRemoteChangesWebSocket.onmessage = (event): void =>
|
this.applyRemoteChangesWebSocket.onmessage = (event): void =>
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ const common = {
|
||||||
minimize: false
|
minimize: false
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: [".ts"],
|
extensions: [".ts", ".js"],
|
||||||
alias: {
|
alias: {
|
||||||
root: __dirname,
|
root: __dirname,
|
||||||
src: path.resolve(__dirname, "src")
|
src: path.resolve(__dirname, "src")
|
||||||
|
|
@ -42,6 +42,11 @@ module.exports = [
|
||||||
type: "umd"
|
type: "umd"
|
||||||
},
|
},
|
||||||
globalObject: "this"
|
globalObject: "this"
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
fallback: {
|
||||||
|
ws: false // Exclude `ws` from the browser bundle
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
merge(common, {
|
merge(common, {
|
||||||
|
|
@ -50,6 +55,10 @@ module.exports = [
|
||||||
path: path.resolve(__dirname, "dist"),
|
path: path.resolve(__dirname, "dist"),
|
||||||
filename: "sync-client.node.js",
|
filename: "sync-client.node.js",
|
||||||
libraryTarget: "commonjs2"
|
libraryTarget: "commonjs2"
|
||||||
|
},
|
||||||
|
externals: {
|
||||||
|
bufferutil: "bufferutil",
|
||||||
|
"utf-8-validate": "utf-8-validate" // required for ws: https://github.com/websockets/ws/issues/2245#issuecomment-2250318733
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
"typescript": "5.8.2",
|
"typescript": "5.8.2",
|
||||||
"uuid": "^11.1.0",
|
"uuid": "^11.1.0",
|
||||||
"webpack": "^5.98.0",
|
"webpack": "^5.98.0",
|
||||||
"webpack-cli": "^6.0.1"
|
"webpack-cli": "^6.0.1",
|
||||||
|
"bufferutil": "^4.0.9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue