worker-relay error timeout
continuous-integration/drone/push Build was killed
Details
continuous-integration/drone/push Build was killed
Details
This commit is contained in:
parent
be48c9cc37
commit
ed7929db50
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@snort/worker-relay",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.2",
|
||||
"description": "A nostr relay in a service worker",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
|
@ -16,7 +16,7 @@
|
|||
"dist"
|
||||
],
|
||||
"dependencies": {
|
||||
"@sqlite.org/sqlite-wasm": "^3.44.2-build3",
|
||||
"@sqlite.org/sqlite-wasm": "^3.45.1-build1",
|
||||
"debug": "^4.3.4",
|
||||
"eventemitter3": "^5.0.1",
|
||||
"uuid": "^9.0.1"
|
||||
|
|
|
@ -3,7 +3,6 @@ import {
|
|||
NostrEvent,
|
||||
OkResponse,
|
||||
ReqCommand,
|
||||
ReqFilter,
|
||||
WorkerMessage,
|
||||
WorkerMessageCommand,
|
||||
} from "./types";
|
||||
|
@ -13,6 +12,9 @@ export class WorkerRelayInterface {
|
|||
#worker: Worker;
|
||||
#commandQueue: Map<string, (v: unknown, ports: ReadonlyArray<MessagePort>) => void> = new Map();
|
||||
|
||||
// Command timeout
|
||||
timeout: number = 30_000;
|
||||
|
||||
constructor(path: string) {
|
||||
this.#worker = new Worker(path, { type: "module" });
|
||||
this.#worker.onmessage = e => {
|
||||
|
@ -61,7 +63,7 @@ export class WorkerRelayInterface {
|
|||
return this.#workerRpc<[string, EventMetadata], void>("setEventMetadata", [id, meta]);
|
||||
}
|
||||
|
||||
#workerRpc<T, R>(cmd: WorkerMessageCommand, args?: T) {
|
||||
async #workerRpc<T, R>(cmd: WorkerMessageCommand, args?: T) {
|
||||
const id = uuid();
|
||||
const msg = {
|
||||
id,
|
||||
|
@ -69,9 +71,17 @@ export class WorkerRelayInterface {
|
|||
args,
|
||||
} as WorkerMessage<T>;
|
||||
this.#worker.postMessage(msg);
|
||||
return new Promise<R>(resolve => {
|
||||
return await new Promise<R>((resolve, reject) => {
|
||||
const t = setTimeout(() => {
|
||||
reject(new Error("Timeout"));
|
||||
}, this.timeout);
|
||||
this.#commandQueue.set(id, (v, port) => {
|
||||
const cmdReply = v as WorkerMessage<R>;
|
||||
clearTimeout(t);
|
||||
const cmdReply = v as WorkerMessage<R & { error?: any }>;
|
||||
if (cmdReply.args.error) {
|
||||
reject(cmdReply.args.error);
|
||||
return;
|
||||
}
|
||||
resolve(cmdReply.args);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -151,7 +151,6 @@ globalThis.onmessage = async ev => {
|
|||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
reply(msg.id, { error: JSON.stringify(e) });
|
||||
}
|
||||
};
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"module": "ESNext",
|
||||
"strict": true,
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"inlineSourceMap": true,
|
||||
"outDir": "dist",
|
||||
"skipLibCheck": true
|
||||
|
|
24
yarn.lock
24
yarn.lock
|
@ -3023,7 +3023,7 @@ __metadata:
|
|||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@snort/shared@^1.0.11, @snort/shared@^1.0.13, @snort/shared@^1.0.6, @snort/shared@workspace:*, @snort/shared@workspace:packages/shared":
|
||||
"@snort/shared@^1.0.14, @snort/shared@^1.0.6, @snort/shared@workspace:*, @snort/shared@workspace:packages/shared":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@snort/shared@workspace:packages/shared"
|
||||
dependencies:
|
||||
|
@ -3042,8 +3042,8 @@ __metadata:
|
|||
version: 0.0.0-use.local
|
||||
resolution: "@snort/system-react@workspace:packages/system-react"
|
||||
dependencies:
|
||||
"@snort/shared": ^1.0.13
|
||||
"@snort/system": ^1.2.8
|
||||
"@snort/shared": ^1.0.14
|
||||
"@snort/system": ^1.2.12
|
||||
"@types/react": ^18.2.14
|
||||
react: ^18.2.0
|
||||
typescript: ^5.2.2
|
||||
|
@ -3071,14 +3071,14 @@ __metadata:
|
|||
version: 0.0.0-use.local
|
||||
resolution: "@snort/system-web@workspace:packages/system-web"
|
||||
dependencies:
|
||||
"@snort/shared": ^1.0.11
|
||||
"@snort/system": ^1.2.0
|
||||
"@snort/shared": ^1.0.14
|
||||
"@snort/system": ^1.2.11
|
||||
dexie: ^3.2.4
|
||||
typescript: ^5.2.2
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@snort/system@^1.0.21, @snort/system@^1.2.0, @snort/system@^1.2.8, @snort/system@workspace:*, @snort/system@workspace:packages/system":
|
||||
"@snort/system@^1.0.21, @snort/system@^1.2.11, @snort/system@^1.2.12, @snort/system@workspace:*, @snort/system@workspace:packages/system":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@snort/system@workspace:packages/system"
|
||||
dependencies:
|
||||
|
@ -3087,7 +3087,7 @@ __metadata:
|
|||
"@noble/hashes": ^1.3.2
|
||||
"@peculiar/webcrypto": ^1.4.3
|
||||
"@scure/base": ^1.1.2
|
||||
"@snort/shared": ^1.0.13
|
||||
"@snort/shared": ^1.0.14
|
||||
"@stablelib/xchacha20": ^1.0.1
|
||||
"@types/debug": ^4.1.8
|
||||
"@types/jest": ^29.5.11
|
||||
|
@ -3114,7 +3114,7 @@ __metadata:
|
|||
version: 0.0.0-use.local
|
||||
resolution: "@snort/worker-relay@workspace:packages/worker-relay"
|
||||
dependencies:
|
||||
"@sqlite.org/sqlite-wasm": ^3.44.2-build3
|
||||
"@sqlite.org/sqlite-wasm": ^3.45.1-build1
|
||||
"@types/debug": ^4.1.12
|
||||
"@types/uuid": ^9.0.7
|
||||
debug: ^4.3.4
|
||||
|
@ -3131,12 +3131,12 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@sqlite.org/sqlite-wasm@npm:^3.44.2-build3":
|
||||
version: 3.44.2-build3
|
||||
resolution: "@sqlite.org/sqlite-wasm@npm:3.44.2-build3"
|
||||
"@sqlite.org/sqlite-wasm@npm:^3.45.1-build1":
|
||||
version: 3.45.1-build1
|
||||
resolution: "@sqlite.org/sqlite-wasm@npm:3.45.1-build1"
|
||||
bin:
|
||||
sqlite-wasm: bin/index.js
|
||||
checksum: 6df10114fcd5d41d61706496a4ad3ea303b71e844ccda6ded62009ec8f2b0f97547a1713b7a4c4e2e8b0691fca2d9127d0e099fff6802dd699bb7f3d0af2191c
|
||||
checksum: 5d1beb4c120a4838fe2186af0c8a3c6d763629ce5fbfde482cbee2b96bc61da11b0296c83193b88755516a5d4c5773b4cbba2076457893825d4cc0c8b123f429
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
Loading…
Reference in New Issue