( payloadArg: string, )
| 3 | import { resolvePayloadInput } from '../utils/payload-input.ts'; |
| 4 | |
| 5 | export async function readNotificationPayload( |
| 6 | payloadArg: string, |
| 7 | ): Promise<Record<string, unknown>> { |
| 8 | const source = resolvePayloadInput(payloadArg, { subject: 'Push payload' }); |
| 9 | const payloadText = |
| 10 | source.kind === 'inline' ? source.text : await readPushPayloadFile(source.path); |
| 11 | try { |
| 12 | const parsed = JSON.parse(payloadText) as unknown; |
| 13 | if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) { |
| 14 | throw new AppError('INVALID_ARGS', 'push payload must be a JSON object'); |
| 15 | } |
| 16 | return parsed as Record<string, unknown>; |
| 17 | } catch (error) { |
| 18 | if (error instanceof AppError) throw error; |
| 19 | throw new AppError('INVALID_ARGS', `Invalid push payload JSON: ${payloadArg}`); |
| 20 | } |
| 21 | } |
| 22 | |
| 23 | async function readPushPayloadFile(payloadPath: string): Promise<string> { |
| 24 | try { |
no test coverage detected
searching dependent graphs…