(secret: string)
| 4 | |
| 5 | /** Decode a base64url-encoded work secret and validate its version. */ |
| 6 | export function decodeWorkSecret(secret: string): WorkSecret { |
| 7 | const json = Buffer.from(secret, 'base64url').toString('utf-8') |
| 8 | const parsed: unknown = jsonParse(json) |
| 9 | if ( |
| 10 | !parsed || |
| 11 | typeof parsed !== 'object' || |
| 12 | !('version' in parsed) || |
| 13 | parsed.version !== 1 |
| 14 | ) { |
| 15 | throw new Error( |
| 16 | `Unsupported work secret version: ${parsed && typeof parsed === 'object' && 'version' in parsed ? parsed.version : 'unknown'}`, |
| 17 | ) |
| 18 | } |
| 19 | const obj = parsed as Record<string, unknown> |
| 20 | if ( |
| 21 | typeof obj.session_ingress_token !== 'string' || |
| 22 | obj.session_ingress_token.length === 0 |
| 23 | ) { |
| 24 | throw new Error( |
| 25 | 'Invalid work secret: missing or empty session_ingress_token', |
| 26 | ) |
| 27 | } |
| 28 | if (typeof obj.api_base_url !== 'string') { |
| 29 | throw new Error('Invalid work secret: missing api_base_url') |
| 30 | } |
| 31 | return parsed as WorkSecret |
| 32 | } |
| 33 | |
| 34 | /** |
| 35 | * Build a WebSocket SDK URL from the API base URL and session ID. |
no test coverage detected