* @internal * Re-add each metadata value. * Attempt to add new env container metadata, but keep old data if it does not fit.
(originalMetadata: ClientMetadata)
| 207 | * Attempt to add new env container metadata, but keep old data if it does not fit. |
| 208 | */ |
| 209 | async function addContainerMetadata(originalMetadata: ClientMetadata): Promise<ClientMetadata> { |
| 210 | const containerMetadata = await getContainerMetadata(); |
| 211 | if (Object.keys(containerMetadata).length === 0) return originalMetadata; |
| 212 | |
| 213 | const extendedMetadata = new LimitedSizeDocument(512); |
| 214 | |
| 215 | const extendedEnvMetadata: NonNullable<ClientMetadata['env']> = { |
| 216 | ...originalMetadata?.env, |
| 217 | container: containerMetadata |
| 218 | }; |
| 219 | |
| 220 | for (const [key, val] of Object.entries(originalMetadata)) { |
| 221 | if (key !== 'env') { |
| 222 | extendedMetadata.ifItFitsItSits(key, val); |
| 223 | } else { |
| 224 | if (!extendedMetadata.ifItFitsItSits('env', extendedEnvMetadata)) { |
| 225 | // add in old data if newer / extended metadata does not fit |
| 226 | extendedMetadata.ifItFitsItSits('env', val); |
| 227 | } |
| 228 | } |
| 229 | } |
| 230 | |
| 231 | if (!('env' in originalMetadata)) { |
| 232 | extendedMetadata.ifItFitsItSits('env', extendedEnvMetadata); |
| 233 | } |
| 234 | |
| 235 | return extendedMetadata.toObject() as ClientMetadata; |
| 236 | } |
| 237 | |
| 238 | /** |
| 239 | * Collects FaaS metadata. |
no test coverage detected