Backend half
This commit is contained in:
Generated
Vendored
+114
@@ -0,0 +1,114 @@
|
||||
"use strict";
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||
|
||||
// src/index.ts
|
||||
var index_exports = {};
|
||||
__export(index_exports, {
|
||||
fromProcess: () => fromProcess
|
||||
});
|
||||
module.exports = __toCommonJS(index_exports);
|
||||
|
||||
// src/fromProcess.ts
|
||||
var import_shared_ini_file_loader = require("@smithy/shared-ini-file-loader");
|
||||
|
||||
// src/resolveProcessCredentials.ts
|
||||
var import_property_provider = require("@smithy/property-provider");
|
||||
var import_child_process = require("child_process");
|
||||
var import_util = require("util");
|
||||
|
||||
// src/getValidatedProcessCredentials.ts
|
||||
var import_client = require("@aws-sdk/core/client");
|
||||
var getValidatedProcessCredentials = /* @__PURE__ */ __name((profileName, data, profiles) => {
|
||||
if (data.Version !== 1) {
|
||||
throw Error(`Profile ${profileName} credential_process did not return Version 1.`);
|
||||
}
|
||||
if (data.AccessKeyId === void 0 || data.SecretAccessKey === void 0) {
|
||||
throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);
|
||||
}
|
||||
if (data.Expiration) {
|
||||
const currentTime = /* @__PURE__ */ new Date();
|
||||
const expireTime = new Date(data.Expiration);
|
||||
if (expireTime < currentTime) {
|
||||
throw Error(`Profile ${profileName} credential_process returned expired credentials.`);
|
||||
}
|
||||
}
|
||||
let accountId = data.AccountId;
|
||||
if (!accountId && profiles?.[profileName]?.aws_account_id) {
|
||||
accountId = profiles[profileName].aws_account_id;
|
||||
}
|
||||
const credentials = {
|
||||
accessKeyId: data.AccessKeyId,
|
||||
secretAccessKey: data.SecretAccessKey,
|
||||
...data.SessionToken && { sessionToken: data.SessionToken },
|
||||
...data.Expiration && { expiration: new Date(data.Expiration) },
|
||||
...data.CredentialScope && { credentialScope: data.CredentialScope },
|
||||
...accountId && { accountId }
|
||||
};
|
||||
(0, import_client.setCredentialFeature)(credentials, "CREDENTIALS_PROCESS", "w");
|
||||
return credentials;
|
||||
}, "getValidatedProcessCredentials");
|
||||
|
||||
// src/resolveProcessCredentials.ts
|
||||
var resolveProcessCredentials = /* @__PURE__ */ __name(async (profileName, profiles, logger) => {
|
||||
const profile = profiles[profileName];
|
||||
if (profiles[profileName]) {
|
||||
const credentialProcess = profile["credential_process"];
|
||||
if (credentialProcess !== void 0) {
|
||||
const execPromise = (0, import_util.promisify)(import_child_process.exec);
|
||||
try {
|
||||
const { stdout } = await execPromise(credentialProcess);
|
||||
let data;
|
||||
try {
|
||||
data = JSON.parse(stdout.trim());
|
||||
} catch {
|
||||
throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);
|
||||
}
|
||||
return getValidatedProcessCredentials(profileName, data, profiles);
|
||||
} catch (error) {
|
||||
throw new import_property_provider.CredentialsProviderError(error.message, { logger });
|
||||
}
|
||||
} else {
|
||||
throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger });
|
||||
}
|
||||
} else {
|
||||
throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, {
|
||||
logger
|
||||
});
|
||||
}
|
||||
}, "resolveProcessCredentials");
|
||||
|
||||
// src/fromProcess.ts
|
||||
var fromProcess = /* @__PURE__ */ __name((init = {}) => async ({ callerClientConfig } = {}) => {
|
||||
init.logger?.debug("@aws-sdk/credential-provider-process - fromProcess");
|
||||
const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);
|
||||
return resolveProcessCredentials(
|
||||
(0, import_shared_ini_file_loader.getProfileName)({
|
||||
profile: init.profile ?? callerClientConfig?.profile
|
||||
}),
|
||||
profiles,
|
||||
init.logger
|
||||
);
|
||||
}, "fromProcess");
|
||||
// Annotate the CommonJS export names for ESM import in node:
|
||||
|
||||
0 && (module.exports = {
|
||||
fromProcess
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user