mirror of
https://github.com/tvytlx/ai-agent-deep-dive.git
synced 2026-04-05 16:44:48 +08:00
Add extracted source directory and README navigation
This commit is contained in:
112
extracted-source/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs
generated
vendored
Normal file
112
extracted-source/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs
generated
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
/*! @azure/msal-common v15.13.1 2025-10-29 */
|
||||
'use strict';
|
||||
import { Constants, HttpStatus, RegionDiscoverySources } from '../utils/Constants.mjs';
|
||||
import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';
|
||||
import { invokeAsync } from '../utils/FunctionWrappers.mjs';
|
||||
|
||||
/*
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License.
|
||||
*/
|
||||
class RegionDiscovery {
|
||||
constructor(networkInterface, logger, performanceClient, correlationId) {
|
||||
this.networkInterface = networkInterface;
|
||||
this.logger = logger;
|
||||
this.performanceClient = performanceClient;
|
||||
this.correlationId = correlationId;
|
||||
}
|
||||
/**
|
||||
* Detect the region from the application's environment.
|
||||
*
|
||||
* @returns Promise<string | null>
|
||||
*/
|
||||
async detectRegion(environmentRegion, regionDiscoveryMetadata) {
|
||||
this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);
|
||||
// Initialize auto detected region with the region from the envrionment
|
||||
let autodetectedRegionName = environmentRegion;
|
||||
// Check if a region was detected from the environment, if not, attempt to get the region from IMDS
|
||||
if (!autodetectedRegionName) {
|
||||
const options = RegionDiscovery.IMDS_OPTIONS;
|
||||
try {
|
||||
const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options);
|
||||
if (localIMDSVersionResponse.status === HttpStatus.SUCCESS) {
|
||||
autodetectedRegionName = localIMDSVersionResponse.body;
|
||||
regionDiscoveryMetadata.region_source =
|
||||
RegionDiscoverySources.IMDS;
|
||||
}
|
||||
// If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.
|
||||
if (localIMDSVersionResponse.status === HttpStatus.BAD_REQUEST) {
|
||||
const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options);
|
||||
if (!currentIMDSVersion) {
|
||||
regionDiscoveryMetadata.region_source =
|
||||
RegionDiscoverySources.FAILED_AUTO_DETECTION;
|
||||
return null;
|
||||
}
|
||||
const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options);
|
||||
if (currentIMDSVersionResponse.status === HttpStatus.SUCCESS) {
|
||||
autodetectedRegionName =
|
||||
currentIMDSVersionResponse.body;
|
||||
regionDiscoveryMetadata.region_source =
|
||||
RegionDiscoverySources.IMDS;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
regionDiscoveryMetadata.region_source =
|
||||
RegionDiscoverySources.FAILED_AUTO_DETECTION;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else {
|
||||
regionDiscoveryMetadata.region_source =
|
||||
RegionDiscoverySources.ENVIRONMENT_VARIABLE;
|
||||
}
|
||||
// If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION
|
||||
if (!autodetectedRegionName) {
|
||||
regionDiscoveryMetadata.region_source =
|
||||
RegionDiscoverySources.FAILED_AUTO_DETECTION;
|
||||
}
|
||||
return autodetectedRegionName || null;
|
||||
}
|
||||
/**
|
||||
* Make the call to the IMDS endpoint
|
||||
*
|
||||
* @param imdsEndpointUrl
|
||||
* @returns Promise<NetworkResponse<string>>
|
||||
*/
|
||||
async getRegionFromIMDS(version, options) {
|
||||
this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);
|
||||
return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);
|
||||
}
|
||||
/**
|
||||
* Get the most recent version of the IMDS endpoint available
|
||||
*
|
||||
* @returns Promise<string | null>
|
||||
*/
|
||||
async getCurrentVersion(options) {
|
||||
this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);
|
||||
try {
|
||||
const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options);
|
||||
// When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.
|
||||
if (response.status === HttpStatus.BAD_REQUEST &&
|
||||
response.body &&
|
||||
response.body["newest-versions"] &&
|
||||
response.body["newest-versions"].length > 0) {
|
||||
return response.body["newest-versions"][0];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Options for the IMDS endpoint request
|
||||
RegionDiscovery.IMDS_OPTIONS = {
|
||||
headers: {
|
||||
Metadata: "true",
|
||||
},
|
||||
};
|
||||
|
||||
export { RegionDiscovery };
|
||||
//# sourceMappingURL=RegionDiscovery.mjs.map
|
||||
Reference in New Issue
Block a user