diff options
author | vnugent <public@vaughnnugent.com> | 2023-11-19 14:54:18 -0500 |
---|---|---|
committer | vnugent <public@vaughnnugent.com> | 2023-11-19 14:54:18 -0500 |
commit | 43429314c0989b423e116be3e9f222eba5b636c3 (patch) | |
tree | 78d394b1a995fa137fc542050e730ee76b423561 /extension/src/webext-bridge/internal/connection-args.ts | |
parent | bc7b86a242673d7831f6105d000995d9f4d63e09 (diff) |
include webext-bridge modified source
Diffstat (limited to 'extension/src/webext-bridge/internal/connection-args.ts')
-rw-r--r-- | extension/src/webext-bridge/internal/connection-args.ts | 31 |
1 files changed, 31 insertions, 0 deletions
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 + } +} |