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