{"version":3,"file":"AzureAppServiceDetector.js","sourceRoot":"","sources":["../../../src/detectors/AzureAppServiceDetector.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,oCASkB;AAClB,8EAAwE;AACxE,wCASoB;AACpB,oCAIkB;AAElB,MAAM,8BAA8B,GAAG;IACrC,CAAC,2BAAiB,CAAC,EAAE,mBAAW;IAChC,CAAC,0CAAgC,CAAC,EAAE,yBAAiB;IACrD,CAAC,sBAAY,CAAC,EAAE,wBAAgB;IAChC,CAAC,kCAAwB,CAAC,EAAE,2BAAmB;IAC/C,CAAC,kDAA0C,CAAC,EAAE,8BAAsB;CACrE,CAAC;AAEF;;;GAGG;AACH,MAAM,uBAAuB;IACpB,MAAM;QACX,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAiB,CAAC,CAAC;QACvD,IAAI,eAAe,IAAI,CAAC,IAAA,uBAAe,GAAE,IAAI,CAAC,IAAA,4BAAoB,GAAE,EAAE;YACpE,UAAU,GAAG;gBACX,GAAG,UAAU;gBACb,CAAC,wCAAiB,CAAC,EAAE,eAAe;aACrC,CAAC;YACF,UAAU,GAAG;gBACX,GAAG,UAAU;gBACb,CAAC,6BAAmB,CAAC,EAAE,oCAA0B;aAClD,CAAC;YACF,UAAU,GAAG;gBACX,GAAG,UAAU;gBACb,CAAC,6BAAmB,CAAC,EAAE,gDAAsC;aAC9D,CAAC;YAEF,MAAM,gBAAgB,GAAG,IAAA,2BAAmB,EAAC,eAAe,CAAC,CAAC;YAC9D,IAAI,gBAAgB,EAAE;gBACpB,UAAU,GAAG;oBACX,GAAG,UAAU;oBACb,GAAG,EAAE,CAAC,4CAAoC,CAAC,EAAE,gBAAgB,EAAE;iBAChE,CAAC;aACH;YAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CACvC,8BAA8B,CAC/B,EAAE;gBACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,MAAM,EAAE;oBACV,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;iBACtD;aACF;SACF;QACD,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;CACF;AAEY,QAAA,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ResourceDetector, DetectedResource } from '@opentelemetry/resources';\nimport {\n  AZURE_APP_SERVICE_STAMP_RESOURCE_ATTRIBUTE,\n  REGION_NAME,\n  WEBSITE_HOME_STAMPNAME,\n  WEBSITE_HOSTNAME,\n  WEBSITE_INSTANCE_ID,\n  WEBSITE_SITE_NAME,\n  WEBSITE_SLOT_NAME,\n  CLOUD_RESOURCE_ID_RESOURCE_ATTRIBUTE,\n} from '../types';\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_CLOUD_REGION,\n  ATTR_DEPLOYMENT_ENVIRONMENT_NAME,\n  ATTR_HOST_ID,\n  ATTR_SERVICE_INSTANCE_ID,\n  ATTR_CLOUD_PROVIDER,\n  CLOUD_PROVIDER_VALUE_AZURE,\n  ATTR_CLOUD_PLATFORM,\n  CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE,\n} from '../semconv';\nimport {\n  getAzureResourceUri,\n  isAzureContainerApps,\n  isAzureFunction,\n} from '../utils';\n\nconst APP_SERVICE_ATTRIBUTE_ENV_VARS = {\n  [ATTR_CLOUD_REGION]: REGION_NAME,\n  [ATTR_DEPLOYMENT_ENVIRONMENT_NAME]: WEBSITE_SLOT_NAME,\n  [ATTR_HOST_ID]: WEBSITE_HOSTNAME,\n  [ATTR_SERVICE_INSTANCE_ID]: WEBSITE_INSTANCE_ID,\n  [AZURE_APP_SERVICE_STAMP_RESOURCE_ATTRIBUTE]: WEBSITE_HOME_STAMPNAME,\n};\n\n/**\n * The AzureAppServiceDetector can be used to detect if a process is running in an Azure App Service\n * @returns a {@link Resource} populated with data about the environment or an empty Resource if detection fails.\n */\nclass AzureAppServiceDetector implements ResourceDetector {\n  public detect(): DetectedResource {\n    let attributes = {};\n    const websiteSiteName = process.env[WEBSITE_SITE_NAME];\n    if (websiteSiteName && !isAzureFunction() && !isAzureContainerApps()) {\n      attributes = {\n        ...attributes,\n        [ATTR_SERVICE_NAME]: websiteSiteName,\n      };\n      attributes = {\n        ...attributes,\n        [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AZURE,\n      };\n      attributes = {\n        ...attributes,\n        [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE,\n      };\n\n      const azureResourceUri = getAzureResourceUri(websiteSiteName);\n      if (azureResourceUri) {\n        attributes = {\n          ...attributes,\n          ...{ [CLOUD_RESOURCE_ID_RESOURCE_ATTRIBUTE]: azureResourceUri },\n        };\n      }\n\n      for (const [key, value] of Object.entries(\n        APP_SERVICE_ATTRIBUTE_ENV_VARS\n      )) {\n        const envVar = process.env[value];\n        if (envVar) {\n          attributes = { ...attributes, ...{ [key]: envVar } };\n        }\n      }\n    }\n    return { attributes };\n  }\n}\n\nexport const azureAppServiceDetector = new AzureAppServiceDetector();\n"]}