diff options
Diffstat (limited to 'shim/ws-shim/src/lib.ts')
-rw-r--r-- | shim/ws-shim/src/lib.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/shim/ws-shim/src/lib.ts b/shim/ws-shim/src/lib.ts new file mode 100644 index 0000000..ec61a90 --- /dev/null +++ b/shim/ws-shim/src/lib.ts @@ -0,0 +1,38 @@ +import type { RelayMessage, ShimRequest, ShimResponse } from "./types"; + +export function parseRelayMsg(message: RelayMessage): ShimResponse["msg"] { + switch (message[0]) { + case "EVENT": { + const [, subscription_id, event] = message; + return { event: { subscription_id, event } }; + } + + case "OK": { + const [, event_id, accepted, msg] = message; + return { ok: { event_id, accepted, message: msg } }; + } + + case "EOSE": { + const [, subscriptionId] = message; + return { eose: subscriptionId }; + } + + case "CLOSED": { + const [, subscription_id, msg] = message; + return { closed: { subscription_id, message: msg } }; + } + + case "NOTICE": { + const [, messag] = message; + return { notice: messag }; + } + + case "AUTH": { + const [, challenge] = message; + return { auth: challenge }; + } + } +} +export function wait(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} |