(rawData: unknown)
| 138 | } |
| 139 | |
| 140 | private extractPayloadAndMetadata(rawData: unknown): { |
| 141 | payload?: Record<string, unknown>; |
| 142 | metadata?: TraceEventMetadata; |
| 143 | } { |
| 144 | if (!rawData || typeof rawData !== 'object' || Array.isArray(rawData)) { |
| 145 | return { payload: this.toRecord(rawData) }; |
| 146 | } |
| 147 | |
| 148 | const dataObject = rawData as Record<string, unknown>; |
| 149 | const hasPackedFields = '_payload' in dataObject || '_metadata' in dataObject; |
| 150 | |
| 151 | if (!hasPackedFields) { |
| 152 | return { payload: this.toRecord(rawData) }; |
| 153 | } |
| 154 | |
| 155 | const payloadRaw = dataObject._payload as unknown; |
| 156 | const metadataRaw = dataObject._metadata as unknown; |
| 157 | |
| 158 | const payload = this.toRecord(payloadRaw); |
| 159 | const metadata = this.parseMetadata(metadataRaw); |
| 160 | |
| 161 | return { payload, metadata }; |
| 162 | } |
| 163 | |
| 164 | private toTraceError(error: unknown): TraceEventPayload['error'] { |
| 165 | if (!error) { |
no test coverage detected