aboutsummaryrefslogtreecommitdiff
path: root/extension/src/webext-bridge/internal/connection-args.ts
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2023-11-19 14:54:18 -0500
committerLibravatar vnugent <public@vaughnnugent.com>2023-11-19 14:54:18 -0500
commit43429314c0989b423e116be3e9f222eba5b636c3 (patch)
tree78d394b1a995fa137fc542050e730ee76b423561 /extension/src/webext-bridge/internal/connection-args.ts
parentbc7b86a242673d7831f6105d000995d9f4d63e09 (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.ts31
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
+ }
+}