@softchef/cdk-iot-device-management
Version:
IoT device management is composed of things, thing types, thing groups, jobs, files API services. The constructs can be used independently, that are based on full-managed service to create an API Gateway & Lambda function.
42 lines (41 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultUserAgent = exports.UA_APP_ID_INI_NAME = exports.UA_APP_ID_ENV_NAME = void 0;
const node_config_provider_1 = require("@aws-sdk/node-config-provider");
const os_1 = require("os");
const process_1 = require("process");
const is_crt_available_1 = require("./is-crt-available");
exports.UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID";
exports.UA_APP_ID_INI_NAME = "sdk-ua-app-id";
const defaultUserAgent = ({ serviceId, clientVersion }) => {
const sections = [
["aws-sdk-js", clientVersion],
[`os/${os_1.platform()}`, os_1.release()],
["lang/js"],
["md/nodejs", `${process_1.versions.node}`],
];
const crtAvailable = is_crt_available_1.isCrtAvailable();
if (crtAvailable) {
sections.push(crtAvailable);
}
if (serviceId) {
sections.push([`api/${serviceId}`, clientVersion]);
}
if (process_1.env.AWS_EXECUTION_ENV) {
sections.push([`exec-env/${process_1.env.AWS_EXECUTION_ENV}`]);
}
const appIdPromise = node_config_provider_1.loadConfig({
environmentVariableSelector: (env) => env[exports.UA_APP_ID_ENV_NAME],
configFileSelector: (profile) => profile[exports.UA_APP_ID_INI_NAME],
default: undefined,
})();
let resolvedUserAgent = undefined;
return async () => {
if (!resolvedUserAgent) {
const appId = await appIdPromise;
resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections];
}
return resolvedUserAgent;
};
};
exports.defaultUserAgent = defaultUserAgent;