From 43429314c0989b423e116be3e9f222eba5b636c3 Mon Sep 17 00:00:00 2001 From: vnugent Date: Sun, 19 Nov 2023 14:54:18 -0500 Subject: include webext-bridge modified source --- .../src/webext-bridge/internal/connection-args.ts | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 extension/src/webext-bridge/internal/connection-args.ts (limited to 'extension/src/webext-bridge/internal/connection-args.ts') diff --git a/extension/src/webext-bridge/internal/connection-args.ts b/extension/src/webext-bridge/internal/connection-args.ts new file mode 100644 index 0000000..9b93e19 --- /dev/null +++ b/extension/src/webext-bridge/internal/connection-args.ts @@ -0,0 +1,31 @@ +import type { EndpointFingerprint } from './endpoint-fingerprint' + +export interface ConnectionArgs { + endpointName: string + fingerprint: EndpointFingerprint +} + +const isValidConnectionArgs = ( + args: unknown, + requiredKeys: (keyof ConnectionArgs)[] = ['endpointName', 'fingerprint'], +): args is ConnectionArgs => + typeof args === 'object' + && args !== null + && requiredKeys.every(k => k in args) + +export const encodeConnectionArgs = (args: ConnectionArgs) => { + if (!isValidConnectionArgs(args)) + throw new TypeError('Invalid connection args') + + return JSON.stringify(args) +} + +export const decodeConnectionArgs = (encodedArgs: string): ConnectionArgs => { + try { + const args = JSON.parse(encodedArgs) + return isValidConnectionArgs(args) ? args : null + } + catch (error) { + return null + } +} -- cgit