@@ -47,11 +47,14 @@ export interface ClientMetadata {
47
47
} ;
48
48
/** FaaS environment information */
49
49
env ?: {
50
- name : 'aws.lambda' | 'gcp.func' | 'azure.func' | 'vercel' ;
50
+ name ? : 'aws.lambda' | 'gcp.func' | 'azure.func' | 'vercel' ;
51
51
timeout_sec ?: Int32 ;
52
52
memory_mb ?: Int32 ;
53
53
region ?: string ;
54
- url ?: string ;
54
+ container ?: {
55
+ runtime ?: string ;
56
+ orchestrator ?: string ;
57
+ } ;
55
58
} ;
56
59
}
57
60
@@ -194,15 +197,17 @@ export async function makeClientMetadata(
194
197
}
195
198
196
199
let dockerPromise : Promise < boolean > ;
200
+ type ContainerMetadata = NonNullable < NonNullable < ClientMetadata [ 'env' ] > [ 'container' ] > ;
197
201
/** @internal */
198
- async function getContainerMetadata ( ) {
199
- const containerMetadata : Record < string , any > = { } ;
202
+ async function getContainerMetadata ( ) : Promise < ContainerMetadata > {
200
203
dockerPromise ??= fileIsAccessible ( '/.dockerenv' ) ;
201
204
const isDocker = await dockerPromise ;
202
205
203
206
const { KUBERNETES_SERVICE_HOST = '' } = process . env ;
204
207
const isKubernetes = KUBERNETES_SERVICE_HOST . length > 0 ? true : false ;
205
208
209
+ const containerMetadata : ContainerMetadata = { } ;
210
+
206
211
if ( isDocker ) containerMetadata . runtime = 'docker' ;
207
212
if ( isKubernetes ) containerMetadata . orchestrator = 'kubernetes' ;
208
213
@@ -220,7 +225,10 @@ async function addContainerMetadata(originalMetadata: ClientMetadata): Promise<C
220
225
221
226
const extendedMetadata = new LimitedSizeDocument ( 512 ) ;
222
227
223
- const extendedEnvMetadata = { ...originalMetadata ?. env , container : containerMetadata } ;
228
+ const extendedEnvMetadata : NonNullable < ClientMetadata [ 'env' ] > = {
229
+ ...originalMetadata ?. env ,
230
+ container : containerMetadata
231
+ } ;
224
232
225
233
for ( const [ key , val ] of Object . entries ( originalMetadata ) ) {
226
234
if ( key !== 'env' ) {
0 commit comments