@aws-sdk/credential-provider-process 3.34.0 → 3.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.35.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.34.0...v3.35.0) (2021-10-04)
7
+
8
+ **Note:** Version bump only for package @aws-sdk/credential-provider-process
9
+
10
+
11
+
12
+
13
+
6
14
  # [3.34.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.33.0...v3.34.0) (2021-09-24)
7
15
 
8
16
 
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromProcess = exports.ENV_PROFILE = void 0;
4
+ const property_provider_1 = require("@aws-sdk/property-provider");
5
+ const util_credentials_1 = require("@aws-sdk/util-credentials");
6
+ const child_process_1 = require("child_process");
7
+ exports.ENV_PROFILE = "AWS_PROFILE";
8
+ const fromProcess = (init = {}) => async () => {
9
+ const profiles = await util_credentials_1.parseKnownFiles(init);
10
+ return resolveProcessCredentials(util_credentials_1.getMasterProfileName(init), profiles);
11
+ };
12
+ exports.fromProcess = fromProcess;
13
+ const resolveProcessCredentials = async (profileName, profiles) => {
14
+ const profile = profiles[profileName];
15
+ if (profiles[profileName]) {
16
+ const credentialProcess = profile["credential_process"];
17
+ if (credentialProcess !== undefined) {
18
+ return await execPromise(credentialProcess)
19
+ .then((processResult) => {
20
+ let data;
21
+ try {
22
+ data = JSON.parse(processResult);
23
+ }
24
+ catch (_a) {
25
+ throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);
26
+ }
27
+ const { Version: version, AccessKeyId: accessKeyId, SecretAccessKey: secretAccessKey, SessionToken: sessionToken, Expiration: expiration, } = data;
28
+ if (version !== 1) {
29
+ throw Error(`Profile ${profileName} credential_process did not return Version 1.`);
30
+ }
31
+ if (accessKeyId === undefined || secretAccessKey === undefined) {
32
+ throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);
33
+ }
34
+ let expirationUnix;
35
+ if (expiration) {
36
+ const currentTime = new Date();
37
+ const expireTime = new Date(expiration);
38
+ if (expireTime < currentTime) {
39
+ throw Error(`Profile ${profileName} credential_process returned expired credentials.`);
40
+ }
41
+ expirationUnix = Math.floor(new Date(expiration).valueOf() / 1000);
42
+ }
43
+ return {
44
+ accessKeyId,
45
+ secretAccessKey,
46
+ sessionToken,
47
+ expirationUnix,
48
+ };
49
+ })
50
+ .catch((error) => {
51
+ throw new property_provider_1.CredentialsProviderError(error.message);
52
+ });
53
+ }
54
+ else {
55
+ throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`);
56
+ }
57
+ }
58
+ else {
59
+ throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`);
60
+ }
61
+ };
62
+ const execPromise = (command) => new Promise(function (resolve, reject) {
63
+ child_process_1.exec(command, (error, stdout) => {
64
+ if (error) {
65
+ reject(error);
66
+ return;
67
+ }
68
+ resolve(stdout.trim());
69
+ });
70
+ });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0VBQXNFO0FBR3RFLGdFQUFxRztBQUNyRyxpREFBcUM7QUFLeEIsUUFBQSxXQUFXLEdBQUcsYUFBYSxDQUFDO0FBUWxDLE1BQU0sV0FBVyxHQUN0QixDQUFDLE9BQXdCLEVBQUUsRUFBc0IsRUFBRSxDQUNuRCxLQUFLLElBQUksRUFBRTtJQUNULE1BQU0sUUFBUSxHQUFHLE1BQU0sa0NBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxPQUFPLHlCQUF5QixDQUFDLHVDQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQUxTLFFBQUEsV0FBVyxlQUtwQjtBQUVKLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxFQUFFLFdBQW1CLEVBQUUsUUFBdUIsRUFBd0IsRUFBRTtJQUM3RyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFdEMsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDekIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxJQUFJLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtZQUNuQyxPQUFPLE1BQU0sV0FBVyxDQUFDLGlCQUFpQixDQUFDO2lCQUN4QyxJQUFJLENBQUMsQ0FBQyxhQUFrQixFQUFFLEVBQUU7Z0JBQzNCLElBQUksSUFBSSxDQUFDO2dCQUNULElBQUk7b0JBQ0YsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ2xDO2dCQUFDLFdBQU07b0JBQ04sTUFBTSxLQUFLLENBQUMsV0FBVyxXQUFXLDRDQUE0QyxDQUFDLENBQUM7aUJBQ2pGO2dCQUVELE1BQU0sRUFDSixPQUFPLEVBQUUsT0FBTyxFQUNoQixXQUFXLEVBQUUsV0FBVyxFQUN4QixlQUFlLEVBQUUsZUFBZSxFQUNoQyxZQUFZLEVBQUUsWUFBWSxFQUMxQixVQUFVLEVBQUUsVUFBVSxHQUN2QixHQUFHLElBQUksQ0FBQztnQkFFVCxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUU7b0JBQ2pCLE1BQU0sS0FBSyxDQUFDLFdBQVcsV0FBVywrQ0FBK0MsQ0FBQyxDQUFDO2lCQUNwRjtnQkFFRCxJQUFJLFdBQVcsS0FBSyxTQUFTLElBQUksZUFBZSxLQUFLLFNBQVMsRUFBRTtvQkFDOUQsTUFBTSxLQUFLLENBQUMsV0FBVyxXQUFXLG1EQUFtRCxDQUFDLENBQUM7aUJBQ3hGO2dCQUVELElBQUksY0FBYyxDQUFDO2dCQUVuQixJQUFJLFVBQVUsRUFBRTtvQkFDZCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDeEMsSUFBSSxVQUFVLEdBQUcsV0FBVyxFQUFFO3dCQUM1QixNQUFNLEtBQUssQ0FBQyxXQUFXLFdBQVcsbURBQW1ELENBQUMsQ0FBQztxQkFDeEY7b0JBQ0QsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7aUJBQ3BFO2dCQUVELE9BQU87b0JBQ0wsV0FBVztvQkFDWCxlQUFlO29CQUNmLFlBQVk7b0JBQ1osY0FBYztpQkFDZixDQUFDO1lBQ0osQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO2dCQUN0QixNQUFNLElBQUksNENBQXdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNMLE1BQU0sSUFBSSw0Q0FBd0IsQ0FBQyxXQUFXLFdBQVcsc0NBQXNDLENBQUMsQ0FBQztTQUNsRztLQUNGO1NBQU07UUFLTCxNQUFNLElBQUksNENBQXdCLENBQUMsV0FBVyxXQUFXLGlEQUFpRCxDQUFDLENBQUM7S0FDN0c7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQ3RDLElBQUksT0FBTyxDQUFDLFVBQVUsT0FBTyxFQUFFLE1BQU07SUFDbkMsb0JBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDOUIsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDZCxPQUFPO1NBQ1I7UUFFRCxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvciB9IGZyb20gXCJAYXdzLXNkay9wcm9wZXJ0eS1wcm92aWRlclwiO1xuaW1wb3J0IHsgUGFyc2VkSW5pRGF0YSB9IGZyb20gXCJAYXdzLXNkay9zaGFyZWQtaW5pLWZpbGUtbG9hZGVyXCI7XG5pbXBvcnQgeyBDcmVkZW50aWFsUHJvdmlkZXIsIENyZWRlbnRpYWxzIH0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRNYXN0ZXJQcm9maWxlTmFtZSwgcGFyc2VLbm93bkZpbGVzLCBTb3VyY2VQcm9maWxlSW5pdCB9IGZyb20gXCJAYXdzLXNkay91dGlsLWNyZWRlbnRpYWxzXCI7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEVOVl9QUk9GSUxFID0gXCJBV1NfUFJPRklMRVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZyb21Qcm9jZXNzSW5pdCBleHRlbmRzIFNvdXJjZVByb2ZpbGVJbml0IHt9XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNyZWRlbnRpYWwgcHJvdmlkZXIgdGhhdCB3aWxsIHJlYWQgZnJvbSBhIGNyZWRlbnRpYWxfcHJvY2VzcyBzcGVjaWZpZWRcbiAqIGluIGluaSBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGZyb21Qcm9jZXNzID1cbiAgKGluaXQ6IEZyb21Qcm9jZXNzSW5pdCA9IHt9KTogQ3JlZGVudGlhbFByb3ZpZGVyID0+XG4gIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlcyA9IGF3YWl0IHBhcnNlS25vd25GaWxlcyhpbml0KTtcbiAgICByZXR1cm4gcmVzb2x2ZVByb2Nlc3NDcmVkZW50aWFscyhnZXRNYXN0ZXJQcm9maWxlTmFtZShpbml0KSwgcHJvZmlsZXMpO1xuICB9O1xuXG5jb25zdCByZXNvbHZlUHJvY2Vzc0NyZWRlbnRpYWxzID0gYXN5bmMgKHByb2ZpbGVOYW1lOiBzdHJpbmcsIHByb2ZpbGVzOiBQYXJzZWRJbmlEYXRhKTogUHJvbWlzZTxDcmVkZW50aWFscz4gPT4ge1xuICBjb25zdCBwcm9maWxlID0gcHJvZmlsZXNbcHJvZmlsZU5hbWVdO1xuXG4gIGlmIChwcm9maWxlc1twcm9maWxlTmFtZV0pIHtcbiAgICBjb25zdCBjcmVkZW50aWFsUHJvY2VzcyA9IHByb2ZpbGVbXCJjcmVkZW50aWFsX3Byb2Nlc3NcIl07XG4gICAgaWYgKGNyZWRlbnRpYWxQcm9jZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCBleGVjUHJvbWlzZShjcmVkZW50aWFsUHJvY2VzcylcbiAgICAgICAgLnRoZW4oKHByb2Nlc3NSZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShwcm9jZXNzUmVzdWx0KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBpbnZhbGlkIEpTT04uYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgIEFjY2Vzc0tleUlkOiBhY2Nlc3NLZXlJZCxcbiAgICAgICAgICAgIFNlY3JldEFjY2Vzc0tleTogc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgICAgICAgU2Vzc2lvblRva2VuOiBzZXNzaW9uVG9rZW4sXG4gICAgICAgICAgICBFeHBpcmF0aW9uOiBleHBpcmF0aW9uLFxuICAgICAgICAgIH0gPSBkYXRhO1xuXG4gICAgICAgICAgaWYgKHZlcnNpb24gIT09IDEpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyBkaWQgbm90IHJldHVybiBWZXJzaW9uIDEuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGFjY2Vzc0tleUlkID09PSB1bmRlZmluZWQgfHwgc2VjcmV0QWNjZXNzS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBpbnZhbGlkIGNyZWRlbnRpYWxzLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBleHBpcmF0aW9uVW5peDtcblxuICAgICAgICAgIGlmIChleHBpcmF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBjb25zdCBleHBpcmVUaW1lID0gbmV3IERhdGUoZXhwaXJhdGlvbik7XG4gICAgICAgICAgICBpZiAoZXhwaXJlVGltZSA8IGN1cnJlbnRUaW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBleHBpcmVkIGNyZWRlbnRpYWxzLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhwaXJhdGlvblVuaXggPSBNYXRoLmZsb29yKG5ldyBEYXRlKGV4cGlyYXRpb24pLnZhbHVlT2YoKSAvIDEwMDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY2Nlc3NLZXlJZCxcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleSxcbiAgICAgICAgICAgIHNlc3Npb25Ub2tlbixcbiAgICAgICAgICAgIGV4cGlyYXRpb25Vbml4LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBDcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gZGlkIG5vdCBjb250YWluIGNyZWRlbnRpYWxfcHJvY2Vzcy5gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgdGhlIHByb2ZpbGUgY2Fubm90IGJlIHBhcnNlZCBvciBkb2VzIG5vdCBjb250YWluIHRoZSBkZWZhdWx0IG9yXG4gICAgLy8gc3BlY2lmaWVkIHByb2ZpbGUgdGhyb3cgYW4gZXJyb3IuIFRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSB0ZXJtaW5hbFxuICAgIC8vIHJlc29sdXRpb24gZXJyb3IgaWYgYSBwcm9maWxlIGhhcyBiZWVuIHNwZWNpZmllZCBieSB0aGUgdXNlciAod2hldGhlciB2aWFcbiAgICAvLyBhIHBhcmFtZXRlciwgYW5lbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgYW5vdGhlciBwcm9maWxlJ3MgYHNvdXJjZV9wcm9maWxlYCBrZXkpLlxuICAgIHRocm93IG5ldyBDcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gY291bGQgbm90IGJlIGZvdW5kIGluIHNoYXJlZCBjcmVkZW50aWFscyBmaWxlLmApO1xuICB9XG59O1xuXG5jb25zdCBleGVjUHJvbWlzZSA9IChjb21tYW5kOiBzdHJpbmcpID0+XG4gIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBleGVjKGNvbW1hbmQsIChlcnJvciwgc3Rkb3V0KSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHN0ZG91dC50cmltKCkpO1xuICAgIH0pO1xuICB9KTtcbiJdfQ==
@@ -0,0 +1,83 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { CredentialsProviderError } from "@aws-sdk/property-provider";
3
+ import { getMasterProfileName, parseKnownFiles } from "@aws-sdk/util-credentials";
4
+ import { exec } from "child_process";
5
+ export var ENV_PROFILE = "AWS_PROFILE";
6
+ export var fromProcess = function (init) {
7
+ if (init === void 0) { init = {}; }
8
+ return function () { return __awaiter(void 0, void 0, void 0, function () {
9
+ var profiles;
10
+ return __generator(this, function (_a) {
11
+ switch (_a.label) {
12
+ case 0: return [4, parseKnownFiles(init)];
13
+ case 1:
14
+ profiles = _a.sent();
15
+ return [2, resolveProcessCredentials(getMasterProfileName(init), profiles)];
16
+ }
17
+ });
18
+ }); };
19
+ };
20
+ var resolveProcessCredentials = function (profileName, profiles) { return __awaiter(void 0, void 0, void 0, function () {
21
+ var profile, credentialProcess;
22
+ return __generator(this, function (_a) {
23
+ switch (_a.label) {
24
+ case 0:
25
+ profile = profiles[profileName];
26
+ if (!profiles[profileName]) return [3, 4];
27
+ credentialProcess = profile["credential_process"];
28
+ if (!(credentialProcess !== undefined)) return [3, 2];
29
+ return [4, execPromise(credentialProcess)
30
+ .then(function (processResult) {
31
+ var data;
32
+ try {
33
+ data = JSON.parse(processResult);
34
+ }
35
+ catch (_a) {
36
+ throw Error("Profile " + profileName + " credential_process returned invalid JSON.");
37
+ }
38
+ var version = data.Version, accessKeyId = data.AccessKeyId, secretAccessKey = data.SecretAccessKey, sessionToken = data.SessionToken, expiration = data.Expiration;
39
+ if (version !== 1) {
40
+ throw Error("Profile " + profileName + " credential_process did not return Version 1.");
41
+ }
42
+ if (accessKeyId === undefined || secretAccessKey === undefined) {
43
+ throw Error("Profile " + profileName + " credential_process returned invalid credentials.");
44
+ }
45
+ var expirationUnix;
46
+ if (expiration) {
47
+ var currentTime = new Date();
48
+ var expireTime = new Date(expiration);
49
+ if (expireTime < currentTime) {
50
+ throw Error("Profile " + profileName + " credential_process returned expired credentials.");
51
+ }
52
+ expirationUnix = Math.floor(new Date(expiration).valueOf() / 1000);
53
+ }
54
+ return {
55
+ accessKeyId: accessKeyId,
56
+ secretAccessKey: secretAccessKey,
57
+ sessionToken: sessionToken,
58
+ expirationUnix: expirationUnix,
59
+ };
60
+ })
61
+ .catch(function (error) {
62
+ throw new CredentialsProviderError(error.message);
63
+ })];
64
+ case 1: return [2, _a.sent()];
65
+ case 2: throw new CredentialsProviderError("Profile " + profileName + " did not contain credential_process.");
66
+ case 3: return [3, 5];
67
+ case 4: throw new CredentialsProviderError("Profile " + profileName + " could not be found in shared credentials file.");
68
+ case 5: return [2];
69
+ }
70
+ });
71
+ }); };
72
+ var execPromise = function (command) {
73
+ return new Promise(function (resolve, reject) {
74
+ exec(command, function (error, stdout) {
75
+ if (error) {
76
+ reject(error);
77
+ return;
78
+ }
79
+ resolve(stdout.trim());
80
+ });
81
+ });
82
+ };
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQXFCLE1BQU0sMkJBQTJCLENBQUM7QUFDckcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUtyQyxNQUFNLENBQUMsSUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDO0FBUXpDLE1BQU0sQ0FBQyxJQUFNLFdBQVcsR0FDdEIsVUFBQyxJQUEwQjtJQUExQixxQkFBQSxFQUFBLFNBQTBCO0lBQzNCLE9BQUE7Ozs7d0JBQ21CLFdBQU0sZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFBOztvQkFBdEMsUUFBUSxHQUFHLFNBQTJCO29CQUM1QyxXQUFPLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFDOzs7U0FDeEU7QUFIRCxDQUdDLENBQUM7QUFFSixJQUFNLHlCQUF5QixHQUFHLFVBQU8sV0FBbUIsRUFBRSxRQUF1Qjs7Ozs7Z0JBQzdFLE9BQU8sR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7cUJBRWxDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBckIsY0FBcUI7Z0JBQ2pCLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO3FCQUNwRCxDQUFBLGlCQUFpQixLQUFLLFNBQVMsQ0FBQSxFQUEvQixjQUErQjtnQkFDMUIsV0FBTSxXQUFXLENBQUMsaUJBQWlCLENBQUM7eUJBQ3hDLElBQUksQ0FBQyxVQUFDLGFBQWtCO3dCQUN2QixJQUFJLElBQUksQ0FBQzt3QkFDVCxJQUFJOzRCQUNGLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3lCQUNsQzt3QkFBQyxXQUFNOzRCQUNOLE1BQU0sS0FBSyxDQUFDLGFBQVcsV0FBVywrQ0FBNEMsQ0FBQyxDQUFDO3lCQUNqRjt3QkFHQyxJQUFTLE9BQU8sR0FLZCxJQUFJLFFBTFUsRUFDSCxXQUFXLEdBSXRCLElBQUksWUFKa0IsRUFDUCxlQUFlLEdBRzlCLElBQUksZ0JBSDBCLEVBQ2xCLFlBQVksR0FFeEIsSUFBSSxhQUZvQixFQUNkLFVBQVUsR0FDcEIsSUFBSSxXQURnQixDQUNmO3dCQUVULElBQUksT0FBTyxLQUFLLENBQUMsRUFBRTs0QkFDakIsTUFBTSxLQUFLLENBQUMsYUFBVyxXQUFXLGtEQUErQyxDQUFDLENBQUM7eUJBQ3BGO3dCQUVELElBQUksV0FBVyxLQUFLLFNBQVMsSUFBSSxlQUFlLEtBQUssU0FBUyxFQUFFOzRCQUM5RCxNQUFNLEtBQUssQ0FBQyxhQUFXLFdBQVcsc0RBQW1ELENBQUMsQ0FBQzt5QkFDeEY7d0JBRUQsSUFBSSxjQUFjLENBQUM7d0JBRW5CLElBQUksVUFBVSxFQUFFOzRCQUNkLElBQU0sV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7NEJBQy9CLElBQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUN4QyxJQUFJLFVBQVUsR0FBRyxXQUFXLEVBQUU7Z0NBQzVCLE1BQU0sS0FBSyxDQUFDLGFBQVcsV0FBVyxzREFBbUQsQ0FBQyxDQUFDOzZCQUN4Rjs0QkFDRCxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQzt5QkFDcEU7d0JBRUQsT0FBTzs0QkFDTCxXQUFXLGFBQUE7NEJBQ1gsZUFBZSxpQkFBQTs0QkFDZixZQUFZLGNBQUE7NEJBQ1osY0FBYyxnQkFBQTt5QkFDZixDQUFDO29CQUNKLENBQUMsQ0FBQzt5QkFDRCxLQUFLLENBQUMsVUFBQyxLQUFZO3dCQUNsQixNQUFNLElBQUksd0JBQXdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNwRCxDQUFDLENBQUMsRUFBQTtvQkE3Q0osV0FBTyxTQTZDSCxFQUFDO29CQUVMLE1BQU0sSUFBSSx3QkFBd0IsQ0FBQyxhQUFXLFdBQVcseUNBQXNDLENBQUMsQ0FBQzs7b0JBT25HLE1BQU0sSUFBSSx3QkFBd0IsQ0FBQyxhQUFXLFdBQVcsb0RBQWlELENBQUMsQ0FBQzs7OztLQUUvRyxDQUFDO0FBRUYsSUFBTSxXQUFXLEdBQUcsVUFBQyxPQUFlO0lBQ2xDLE9BQUEsSUFBSSxPQUFPLENBQUMsVUFBVSxPQUFPLEVBQUUsTUFBTTtRQUNuQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQUMsS0FBSyxFQUFFLE1BQU07WUFDMUIsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNkLE9BQU87YUFDUjtZQUVELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQVRGLENBU0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvciB9IGZyb20gXCJAYXdzLXNkay9wcm9wZXJ0eS1wcm92aWRlclwiO1xuaW1wb3J0IHsgUGFyc2VkSW5pRGF0YSB9IGZyb20gXCJAYXdzLXNkay9zaGFyZWQtaW5pLWZpbGUtbG9hZGVyXCI7XG5pbXBvcnQgeyBDcmVkZW50aWFsUHJvdmlkZXIsIENyZWRlbnRpYWxzIH0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRNYXN0ZXJQcm9maWxlTmFtZSwgcGFyc2VLbm93bkZpbGVzLCBTb3VyY2VQcm9maWxlSW5pdCB9IGZyb20gXCJAYXdzLXNkay91dGlsLWNyZWRlbnRpYWxzXCI7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEVOVl9QUk9GSUxFID0gXCJBV1NfUFJPRklMRVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZyb21Qcm9jZXNzSW5pdCBleHRlbmRzIFNvdXJjZVByb2ZpbGVJbml0IHt9XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNyZWRlbnRpYWwgcHJvdmlkZXIgdGhhdCB3aWxsIHJlYWQgZnJvbSBhIGNyZWRlbnRpYWxfcHJvY2VzcyBzcGVjaWZpZWRcbiAqIGluIGluaSBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGZyb21Qcm9jZXNzID1cbiAgKGluaXQ6IEZyb21Qcm9jZXNzSW5pdCA9IHt9KTogQ3JlZGVudGlhbFByb3ZpZGVyID0+XG4gIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlcyA9IGF3YWl0IHBhcnNlS25vd25GaWxlcyhpbml0KTtcbiAgICByZXR1cm4gcmVzb2x2ZVByb2Nlc3NDcmVkZW50aWFscyhnZXRNYXN0ZXJQcm9maWxlTmFtZShpbml0KSwgcHJvZmlsZXMpO1xuICB9O1xuXG5jb25zdCByZXNvbHZlUHJvY2Vzc0NyZWRlbnRpYWxzID0gYXN5bmMgKHByb2ZpbGVOYW1lOiBzdHJpbmcsIHByb2ZpbGVzOiBQYXJzZWRJbmlEYXRhKTogUHJvbWlzZTxDcmVkZW50aWFscz4gPT4ge1xuICBjb25zdCBwcm9maWxlID0gcHJvZmlsZXNbcHJvZmlsZU5hbWVdO1xuXG4gIGlmIChwcm9maWxlc1twcm9maWxlTmFtZV0pIHtcbiAgICBjb25zdCBjcmVkZW50aWFsUHJvY2VzcyA9IHByb2ZpbGVbXCJjcmVkZW50aWFsX3Byb2Nlc3NcIl07XG4gICAgaWYgKGNyZWRlbnRpYWxQcm9jZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCBleGVjUHJvbWlzZShjcmVkZW50aWFsUHJvY2VzcylcbiAgICAgICAgLnRoZW4oKHByb2Nlc3NSZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShwcm9jZXNzUmVzdWx0KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBpbnZhbGlkIEpTT04uYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgIEFjY2Vzc0tleUlkOiBhY2Nlc3NLZXlJZCxcbiAgICAgICAgICAgIFNlY3JldEFjY2Vzc0tleTogc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgICAgICAgU2Vzc2lvblRva2VuOiBzZXNzaW9uVG9rZW4sXG4gICAgICAgICAgICBFeHBpcmF0aW9uOiBleHBpcmF0aW9uLFxuICAgICAgICAgIH0gPSBkYXRhO1xuXG4gICAgICAgICAgaWYgKHZlcnNpb24gIT09IDEpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyBkaWQgbm90IHJldHVybiBWZXJzaW9uIDEuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGFjY2Vzc0tleUlkID09PSB1bmRlZmluZWQgfHwgc2VjcmV0QWNjZXNzS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBpbnZhbGlkIGNyZWRlbnRpYWxzLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBleHBpcmF0aW9uVW5peDtcblxuICAgICAgICAgIGlmIChleHBpcmF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBjb25zdCBleHBpcmVUaW1lID0gbmV3IERhdGUoZXhwaXJhdGlvbik7XG4gICAgICAgICAgICBpZiAoZXhwaXJlVGltZSA8IGN1cnJlbnRUaW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBleHBpcmVkIGNyZWRlbnRpYWxzLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhwaXJhdGlvblVuaXggPSBNYXRoLmZsb29yKG5ldyBEYXRlKGV4cGlyYXRpb24pLnZhbHVlT2YoKSAvIDEwMDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY2Nlc3NLZXlJZCxcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleSxcbiAgICAgICAgICAgIHNlc3Npb25Ub2tlbixcbiAgICAgICAgICAgIGV4cGlyYXRpb25Vbml4LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBDcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gZGlkIG5vdCBjb250YWluIGNyZWRlbnRpYWxfcHJvY2Vzcy5gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgdGhlIHByb2ZpbGUgY2Fubm90IGJlIHBhcnNlZCBvciBkb2VzIG5vdCBjb250YWluIHRoZSBkZWZhdWx0IG9yXG4gICAgLy8gc3BlY2lmaWVkIHByb2ZpbGUgdGhyb3cgYW4gZXJyb3IuIFRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSB0ZXJtaW5hbFxuICAgIC8vIHJlc29sdXRpb24gZXJyb3IgaWYgYSBwcm9maWxlIGhhcyBiZWVuIHNwZWNpZmllZCBieSB0aGUgdXNlciAod2hldGhlciB2aWFcbiAgICAvLyBhIHBhcmFtZXRlciwgYW5lbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgYW5vdGhlciBwcm9maWxlJ3MgYHNvdXJjZV9wcm9maWxlYCBrZXkpLlxuICAgIHRocm93IG5ldyBDcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gY291bGQgbm90IGJlIGZvdW5kIGluIHNoYXJlZCBjcmVkZW50aWFscyBmaWxlLmApO1xuICB9XG59O1xuXG5jb25zdCBleGVjUHJvbWlzZSA9IChjb21tYW5kOiBzdHJpbmcpID0+XG4gIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBleGVjKGNvbW1hbmQsIChlcnJvciwgc3Rkb3V0KSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHN0ZG91dC50cmltKCkpO1xuICAgIH0pO1xuICB9KTtcbiJdfQ==
File without changes
File without changes
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@aws-sdk/credential-provider-process",
3
- "version": "3.34.0",
3
+ "version": "3.35.0",
4
4
  "description": "AWS credential provider that sources credential_process from ~/.aws/credentials and ~/.aws/config",
5
- "main": "./dist/cjs/index.js",
6
- "module": "./dist/es/index.js",
5
+ "main": "./dist-cjs/index.js",
6
+ "module": "./dist-es/index.js",
7
7
  "scripts": {
8
8
  "build": "yarn build:cjs && yarn build:es && yarn build:types",
9
9
  "build:cjs": "tsc -p tsconfig.cjs.json",
10
10
  "build:es": "tsc -p tsconfig.es.json",
11
11
  "build:types": "tsc -p tsconfig.types.json",
12
- "downlevel-dts": "downlevel-dts dist/types dist/types/ts3.4",
12
+ "downlevel-dts": "downlevel-dts dist-types dist-types/ts3.4",
13
13
  "test": "jest"
14
14
  },
15
15
  "keywords": [
@@ -22,10 +22,10 @@
22
22
  },
23
23
  "license": "Apache-2.0",
24
24
  "dependencies": {
25
- "@aws-sdk/property-provider": "3.34.0",
26
- "@aws-sdk/shared-ini-file-loader": "3.34.0",
27
- "@aws-sdk/types": "3.34.0",
28
- "@aws-sdk/util-credentials": "3.34.0",
25
+ "@aws-sdk/property-provider": "3.35.0",
26
+ "@aws-sdk/shared-ini-file-loader": "3.35.0",
27
+ "@aws-sdk/types": "3.35.0",
28
+ "@aws-sdk/util-credentials": "3.35.0",
29
29
  "tslib": "^2.3.0"
30
30
  },
31
31
  "devDependencies": {
@@ -34,14 +34,14 @@
34
34
  "jest": "^26.1.0",
35
35
  "typescript": "~4.3.5"
36
36
  },
37
- "types": "./dist/types/index.d.ts",
37
+ "types": "./dist-types/index.d.ts",
38
38
  "engines": {
39
39
  "node": ">= 10.0.0"
40
40
  },
41
41
  "typesVersions": {
42
42
  "<4.0": {
43
- "dist/types/*": [
44
- "dist/types/ts3.4/*"
43
+ "dist-types/*": [
44
+ "dist-types/ts3.4/*"
45
45
  ]
46
46
  }
47
47
  },
package/tsconfig.cjs.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "baseUrl": ".",
4
- "outDir": "dist/cjs",
4
+ "outDir": "dist-cjs",
5
5
  "rootDir": "src"
6
6
  },
7
7
  "extends": "../../tsconfig.cjs.json",
package/tsconfig.es.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "compilerOptions": {
3
3
  "baseUrl": ".",
4
4
  "lib": ["es5", "es2015.promise", "es2015.collection"],
5
- "outDir": "dist/es",
5
+ "outDir": "dist-es",
6
6
  "rootDir": "src"
7
7
  },
8
8
  "extends": "../../tsconfig.es.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "baseUrl": ".",
4
- "declarationDir": "dist/types",
4
+ "declarationDir": "dist-types",
5
5
  "rootDir": "src"
6
6
  },
7
7
  "extends": "../../tsconfig.types.json",
package/dist/cjs/index.js DELETED
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fromProcess = exports.ENV_PROFILE = void 0;
4
- const property_provider_1 = require("@aws-sdk/property-provider");
5
- const util_credentials_1 = require("@aws-sdk/util-credentials");
6
- const child_process_1 = require("child_process");
7
- exports.ENV_PROFILE = "AWS_PROFILE";
8
- const fromProcess = (init = {}) => async () => {
9
- const profiles = await util_credentials_1.parseKnownFiles(init);
10
- return resolveProcessCredentials(util_credentials_1.getMasterProfileName(init), profiles);
11
- };
12
- exports.fromProcess = fromProcess;
13
- const resolveProcessCredentials = async (profileName, profiles) => {
14
- const profile = profiles[profileName];
15
- if (profiles[profileName]) {
16
- const credentialProcess = profile["credential_process"];
17
- if (credentialProcess !== undefined) {
18
- return await execPromise(credentialProcess)
19
- .then((processResult) => {
20
- let data;
21
- try {
22
- data = JSON.parse(processResult);
23
- }
24
- catch (_a) {
25
- throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);
26
- }
27
- const { Version: version, AccessKeyId: accessKeyId, SecretAccessKey: secretAccessKey, SessionToken: sessionToken, Expiration: expiration, } = data;
28
- if (version !== 1) {
29
- throw Error(`Profile ${profileName} credential_process did not return Version 1.`);
30
- }
31
- if (accessKeyId === undefined || secretAccessKey === undefined) {
32
- throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);
33
- }
34
- let expirationUnix;
35
- if (expiration) {
36
- const currentTime = new Date();
37
- const expireTime = new Date(expiration);
38
- if (expireTime < currentTime) {
39
- throw Error(`Profile ${profileName} credential_process returned expired credentials.`);
40
- }
41
- expirationUnix = Math.floor(new Date(expiration).valueOf() / 1000);
42
- }
43
- return {
44
- accessKeyId,
45
- secretAccessKey,
46
- sessionToken,
47
- expirationUnix,
48
- };
49
- })
50
- .catch((error) => {
51
- throw new property_provider_1.CredentialsProviderError(error.message);
52
- });
53
- }
54
- else {
55
- throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`);
56
- }
57
- }
58
- else {
59
- throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`);
60
- }
61
- };
62
- const execPromise = (command) => new Promise(function (resolve, reject) {
63
- child_process_1.exec(command, (error, stdout) => {
64
- if (error) {
65
- reject(error);
66
- return;
67
- }
68
- resolve(stdout.trim());
69
- });
70
- });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0VBQXNFO0FBR3RFLGdFQUFxRztBQUNyRyxpREFBcUM7QUFLeEIsUUFBQSxXQUFXLEdBQUcsYUFBYSxDQUFDO0FBUWxDLE1BQU0sV0FBVyxHQUN0QixDQUFDLE9BQXdCLEVBQUUsRUFBc0IsRUFBRSxDQUNuRCxLQUFLLElBQUksRUFBRTtJQUNULE1BQU0sUUFBUSxHQUFHLE1BQU0sa0NBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxPQUFPLHlCQUF5QixDQUFDLHVDQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQUxTLFFBQUEsV0FBVyxlQUtwQjtBQUVKLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxFQUFFLFdBQW1CLEVBQUUsUUFBdUIsRUFBd0IsRUFBRTtJQUM3RyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFdEMsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDekIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxJQUFJLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtZQUNuQyxPQUFPLE1BQU0sV0FBVyxDQUFDLGlCQUFpQixDQUFDO2lCQUN4QyxJQUFJLENBQUMsQ0FBQyxhQUFrQixFQUFFLEVBQUU7Z0JBQzNCLElBQUksSUFBSSxDQUFDO2dCQUNULElBQUk7b0JBQ0YsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ2xDO2dCQUFDLFdBQU07b0JBQ04sTUFBTSxLQUFLLENBQUMsV0FBVyxXQUFXLDRDQUE0QyxDQUFDLENBQUM7aUJBQ2pGO2dCQUVELE1BQU0sRUFDSixPQUFPLEVBQUUsT0FBTyxFQUNoQixXQUFXLEVBQUUsV0FBVyxFQUN4QixlQUFlLEVBQUUsZUFBZSxFQUNoQyxZQUFZLEVBQUUsWUFBWSxFQUMxQixVQUFVLEVBQUUsVUFBVSxHQUN2QixHQUFHLElBQUksQ0FBQztnQkFFVCxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUU7b0JBQ2pCLE1BQU0sS0FBSyxDQUFDLFdBQVcsV0FBVywrQ0FBK0MsQ0FBQyxDQUFDO2lCQUNwRjtnQkFFRCxJQUFJLFdBQVcsS0FBSyxTQUFTLElBQUksZUFBZSxLQUFLLFNBQVMsRUFBRTtvQkFDOUQsTUFBTSxLQUFLLENBQUMsV0FBVyxXQUFXLG1EQUFtRCxDQUFDLENBQUM7aUJBQ3hGO2dCQUVELElBQUksY0FBYyxDQUFDO2dCQUVuQixJQUFJLFVBQVUsRUFBRTtvQkFDZCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDeEMsSUFBSSxVQUFVLEdBQUcsV0FBVyxFQUFFO3dCQUM1QixNQUFNLEtBQUssQ0FBQyxXQUFXLFdBQVcsbURBQW1ELENBQUMsQ0FBQztxQkFDeEY7b0JBQ0QsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7aUJBQ3BFO2dCQUVELE9BQU87b0JBQ0wsV0FBVztvQkFDWCxlQUFlO29CQUNmLFlBQVk7b0JBQ1osY0FBYztpQkFDZixDQUFDO1lBQ0osQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO2dCQUN0QixNQUFNLElBQUksNENBQXdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNMLE1BQU0sSUFBSSw0Q0FBd0IsQ0FBQyxXQUFXLFdBQVcsc0NBQXNDLENBQUMsQ0FBQztTQUNsRztLQUNGO1NBQU07UUFLTCxNQUFNLElBQUksNENBQXdCLENBQUMsV0FBVyxXQUFXLGlEQUFpRCxDQUFDLENBQUM7S0FDN0c7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQ3RDLElBQUksT0FBTyxDQUFDLFVBQVUsT0FBTyxFQUFFLE1BQU07SUFDbkMsb0JBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDOUIsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDZCxPQUFPO1NBQ1I7UUFFRCxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvciB9IGZyb20gXCJAYXdzLXNkay9wcm9wZXJ0eS1wcm92aWRlclwiO1xuaW1wb3J0IHsgUGFyc2VkSW5pRGF0YSB9IGZyb20gXCJAYXdzLXNkay9zaGFyZWQtaW5pLWZpbGUtbG9hZGVyXCI7XG5pbXBvcnQgeyBDcmVkZW50aWFsUHJvdmlkZXIsIENyZWRlbnRpYWxzIH0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRNYXN0ZXJQcm9maWxlTmFtZSwgcGFyc2VLbm93bkZpbGVzLCBTb3VyY2VQcm9maWxlSW5pdCB9IGZyb20gXCJAYXdzLXNkay91dGlsLWNyZWRlbnRpYWxzXCI7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEVOVl9QUk9GSUxFID0gXCJBV1NfUFJPRklMRVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZyb21Qcm9jZXNzSW5pdCBleHRlbmRzIFNvdXJjZVByb2ZpbGVJbml0IHt9XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNyZWRlbnRpYWwgcHJvdmlkZXIgdGhhdCB3aWxsIHJlYWQgZnJvbSBhIGNyZWRlbnRpYWxfcHJvY2VzcyBzcGVjaWZpZWRcbiAqIGluIGluaSBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGZyb21Qcm9jZXNzID1cbiAgKGluaXQ6IEZyb21Qcm9jZXNzSW5pdCA9IHt9KTogQ3JlZGVudGlhbFByb3ZpZGVyID0+XG4gIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlcyA9IGF3YWl0IHBhcnNlS25vd25GaWxlcyhpbml0KTtcbiAgICByZXR1cm4gcmVzb2x2ZVByb2Nlc3NDcmVkZW50aWFscyhnZXRNYXN0ZXJQcm9maWxlTmFtZShpbml0KSwgcHJvZmlsZXMpO1xuICB9O1xuXG5jb25zdCByZXNvbHZlUHJvY2Vzc0NyZWRlbnRpYWxzID0gYXN5bmMgKHByb2ZpbGVOYW1lOiBzdHJpbmcsIHByb2ZpbGVzOiBQYXJzZWRJbmlEYXRhKTogUHJvbWlzZTxDcmVkZW50aWFscz4gPT4ge1xuICBjb25zdCBwcm9maWxlID0gcHJvZmlsZXNbcHJvZmlsZU5hbWVdO1xuXG4gIGlmIChwcm9maWxlc1twcm9maWxlTmFtZV0pIHtcbiAgICBjb25zdCBjcmVkZW50aWFsUHJvY2VzcyA9IHByb2ZpbGVbXCJjcmVkZW50aWFsX3Byb2Nlc3NcIl07XG4gICAgaWYgKGNyZWRlbnRpYWxQcm9jZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCBleGVjUHJvbWlzZShjcmVkZW50aWFsUHJvY2VzcylcbiAgICAgICAgLnRoZW4oKHByb2Nlc3NSZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShwcm9jZXNzUmVzdWx0KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBpbnZhbGlkIEpTT04uYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgIEFjY2Vzc0tleUlkOiBhY2Nlc3NLZXlJZCxcbiAgICAgICAgICAgIFNlY3JldEFjY2Vzc0tleTogc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgICAgICAgU2Vzc2lvblRva2VuOiBzZXNzaW9uVG9rZW4sXG4gICAgICAgICAgICBFeHBpcmF0aW9uOiBleHBpcmF0aW9uLFxuICAgICAgICAgIH0gPSBkYXRhO1xuXG4gICAgICAgICAgaWYgKHZlcnNpb24gIT09IDEpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyBkaWQgbm90IHJldHVybiBWZXJzaW9uIDEuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGFjY2Vzc0tleUlkID09PSB1bmRlZmluZWQgfHwgc2VjcmV0QWNjZXNzS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBpbnZhbGlkIGNyZWRlbnRpYWxzLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBleHBpcmF0aW9uVW5peDtcblxuICAgICAgICAgIGlmIChleHBpcmF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBjb25zdCBleHBpcmVUaW1lID0gbmV3IERhdGUoZXhwaXJhdGlvbik7XG4gICAgICAgICAgICBpZiAoZXhwaXJlVGltZSA8IGN1cnJlbnRUaW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBleHBpcmVkIGNyZWRlbnRpYWxzLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhwaXJhdGlvblVuaXggPSBNYXRoLmZsb29yKG5ldyBEYXRlKGV4cGlyYXRpb24pLnZhbHVlT2YoKSAvIDEwMDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY2Nlc3NLZXlJZCxcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleSxcbiAgICAgICAgICAgIHNlc3Npb25Ub2tlbixcbiAgICAgICAgICAgIGV4cGlyYXRpb25Vbml4LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBDcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gZGlkIG5vdCBjb250YWluIGNyZWRlbnRpYWxfcHJvY2Vzcy5gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgdGhlIHByb2ZpbGUgY2Fubm90IGJlIHBhcnNlZCBvciBkb2VzIG5vdCBjb250YWluIHRoZSBkZWZhdWx0IG9yXG4gICAgLy8gc3BlY2lmaWVkIHByb2ZpbGUgdGhyb3cgYW4gZXJyb3IuIFRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSB0ZXJtaW5hbFxuICAgIC8vIHJlc29sdXRpb24gZXJyb3IgaWYgYSBwcm9maWxlIGhhcyBiZWVuIHNwZWNpZmllZCBieSB0aGUgdXNlciAod2hldGhlciB2aWFcbiAgICAvLyBhIHBhcmFtZXRlciwgYW5lbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgYW5vdGhlciBwcm9maWxlJ3MgYHNvdXJjZV9wcm9maWxlYCBrZXkpLlxuICAgIHRocm93IG5ldyBDcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gY291bGQgbm90IGJlIGZvdW5kIGluIHNoYXJlZCBjcmVkZW50aWFscyBmaWxlLmApO1xuICB9XG59O1xuXG5jb25zdCBleGVjUHJvbWlzZSA9IChjb21tYW5kOiBzdHJpbmcpID0+XG4gIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBleGVjKGNvbW1hbmQsIChlcnJvciwgc3Rkb3V0KSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHN0ZG91dC50cmltKCkpO1xuICAgIH0pO1xuICB9KTtcbiJdfQ==
package/dist/es/index.js DELETED
@@ -1,95 +0,0 @@
1
- import { __awaiter, __generator } from "tslib";
2
- import { CredentialsProviderError } from "@aws-sdk/property-provider";
3
- import { getMasterProfileName, parseKnownFiles } from "@aws-sdk/util-credentials";
4
- import { exec } from "child_process";
5
- /**
6
- * @internal
7
- */
8
- export var ENV_PROFILE = "AWS_PROFILE";
9
- /**
10
- * Creates a credential provider that will read from a credential_process specified
11
- * in ini files.
12
- */
13
- export var fromProcess = function (init) {
14
- if (init === void 0) { init = {}; }
15
- return function () { return __awaiter(void 0, void 0, void 0, function () {
16
- var profiles;
17
- return __generator(this, function (_a) {
18
- switch (_a.label) {
19
- case 0: return [4 /*yield*/, parseKnownFiles(init)];
20
- case 1:
21
- profiles = _a.sent();
22
- return [2 /*return*/, resolveProcessCredentials(getMasterProfileName(init), profiles)];
23
- }
24
- });
25
- }); };
26
- };
27
- var resolveProcessCredentials = function (profileName, profiles) { return __awaiter(void 0, void 0, void 0, function () {
28
- var profile, credentialProcess;
29
- return __generator(this, function (_a) {
30
- switch (_a.label) {
31
- case 0:
32
- profile = profiles[profileName];
33
- if (!profiles[profileName]) return [3 /*break*/, 4];
34
- credentialProcess = profile["credential_process"];
35
- if (!(credentialProcess !== undefined)) return [3 /*break*/, 2];
36
- return [4 /*yield*/, execPromise(credentialProcess)
37
- .then(function (processResult) {
38
- var data;
39
- try {
40
- data = JSON.parse(processResult);
41
- }
42
- catch (_a) {
43
- throw Error("Profile " + profileName + " credential_process returned invalid JSON.");
44
- }
45
- var version = data.Version, accessKeyId = data.AccessKeyId, secretAccessKey = data.SecretAccessKey, sessionToken = data.SessionToken, expiration = data.Expiration;
46
- if (version !== 1) {
47
- throw Error("Profile " + profileName + " credential_process did not return Version 1.");
48
- }
49
- if (accessKeyId === undefined || secretAccessKey === undefined) {
50
- throw Error("Profile " + profileName + " credential_process returned invalid credentials.");
51
- }
52
- var expirationUnix;
53
- if (expiration) {
54
- var currentTime = new Date();
55
- var expireTime = new Date(expiration);
56
- if (expireTime < currentTime) {
57
- throw Error("Profile " + profileName + " credential_process returned expired credentials.");
58
- }
59
- expirationUnix = Math.floor(new Date(expiration).valueOf() / 1000);
60
- }
61
- return {
62
- accessKeyId: accessKeyId,
63
- secretAccessKey: secretAccessKey,
64
- sessionToken: sessionToken,
65
- expirationUnix: expirationUnix,
66
- };
67
- })
68
- .catch(function (error) {
69
- throw new CredentialsProviderError(error.message);
70
- })];
71
- case 1: return [2 /*return*/, _a.sent()];
72
- case 2: throw new CredentialsProviderError("Profile " + profileName + " did not contain credential_process.");
73
- case 3: return [3 /*break*/, 5];
74
- case 4:
75
- // If the profile cannot be parsed or does not contain the default or
76
- // specified profile throw an error. This should be considered a terminal
77
- // resolution error if a profile has been specified by the user (whether via
78
- // a parameter, anenvironment variable, or another profile's `source_profile` key).
79
- throw new CredentialsProviderError("Profile " + profileName + " could not be found in shared credentials file.");
80
- case 5: return [2 /*return*/];
81
- }
82
- });
83
- }); };
84
- var execPromise = function (command) {
85
- return new Promise(function (resolve, reject) {
86
- exec(command, function (error, stdout) {
87
- if (error) {
88
- reject(error);
89
- return;
90
- }
91
- resolve(stdout.trim());
92
- });
93
- });
94
- };
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQXFCLE1BQU0sMkJBQTJCLENBQUM7QUFDckcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxJQUFNLFdBQVcsR0FBRyxhQUFhLENBQUM7QUFJekM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLElBQU0sV0FBVyxHQUN0QixVQUFDLElBQTBCO0lBQTFCLHFCQUFBLEVBQUEsU0FBMEI7SUFDM0IsT0FBQTs7Ozt3QkFDbUIscUJBQU0sZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFBOztvQkFBdEMsUUFBUSxHQUFHLFNBQTJCO29CQUM1QyxzQkFBTyx5QkFBeUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBQzs7O1NBQ3hFO0FBSEQsQ0FHQyxDQUFDO0FBRUosSUFBTSx5QkFBeUIsR0FBRyxVQUFPLFdBQW1CLEVBQUUsUUFBdUI7Ozs7O2dCQUM3RSxPQUFPLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3FCQUVsQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQXJCLHdCQUFxQjtnQkFDakIsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7cUJBQ3BELENBQUEsaUJBQWlCLEtBQUssU0FBUyxDQUFBLEVBQS9CLHdCQUErQjtnQkFDMUIscUJBQU0sV0FBVyxDQUFDLGlCQUFpQixDQUFDO3lCQUN4QyxJQUFJLENBQUMsVUFBQyxhQUFrQjt3QkFDdkIsSUFBSSxJQUFJLENBQUM7d0JBQ1QsSUFBSTs0QkFDRixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQzt5QkFDbEM7d0JBQUMsV0FBTTs0QkFDTixNQUFNLEtBQUssQ0FBQyxhQUFXLFdBQVcsK0NBQTRDLENBQUMsQ0FBQzt5QkFDakY7d0JBR0MsSUFBUyxPQUFPLEdBS2QsSUFBSSxRQUxVLEVBQ0gsV0FBVyxHQUl0QixJQUFJLFlBSmtCLEVBQ1AsZUFBZSxHQUc5QixJQUFJLGdCQUgwQixFQUNsQixZQUFZLEdBRXhCLElBQUksYUFGb0IsRUFDZCxVQUFVLEdBQ3BCLElBQUksV0FEZ0IsQ0FDZjt3QkFFVCxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUU7NEJBQ2pCLE1BQU0sS0FBSyxDQUFDLGFBQVcsV0FBVyxrREFBK0MsQ0FBQyxDQUFDO3lCQUNwRjt3QkFFRCxJQUFJLFdBQVcsS0FBSyxTQUFTLElBQUksZUFBZSxLQUFLLFNBQVMsRUFBRTs0QkFDOUQsTUFBTSxLQUFLLENBQUMsYUFBVyxXQUFXLHNEQUFtRCxDQUFDLENBQUM7eUJBQ3hGO3dCQUVELElBQUksY0FBYyxDQUFDO3dCQUVuQixJQUFJLFVBQVUsRUFBRTs0QkFDZCxJQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDOzRCQUMvQixJQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzs0QkFDeEMsSUFBSSxVQUFVLEdBQUcsV0FBVyxFQUFFO2dDQUM1QixNQUFNLEtBQUssQ0FBQyxhQUFXLFdBQVcsc0RBQW1ELENBQUMsQ0FBQzs2QkFDeEY7NEJBQ0QsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7eUJBQ3BFO3dCQUVELE9BQU87NEJBQ0wsV0FBVyxhQUFBOzRCQUNYLGVBQWUsaUJBQUE7NEJBQ2YsWUFBWSxjQUFBOzRCQUNaLGNBQWMsZ0JBQUE7eUJBQ2YsQ0FBQztvQkFDSixDQUFDLENBQUM7eUJBQ0QsS0FBSyxDQUFDLFVBQUMsS0FBWTt3QkFDbEIsTUFBTSxJQUFJLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDcEQsQ0FBQyxDQUFDLEVBQUE7b0JBN0NKLHNCQUFPLFNBNkNILEVBQUM7b0JBRUwsTUFBTSxJQUFJLHdCQUF3QixDQUFDLGFBQVcsV0FBVyx5Q0FBc0MsQ0FBQyxDQUFDOzs7WUFHbkcscUVBQXFFO1lBQ3JFLHlFQUF5RTtZQUN6RSw0RUFBNEU7WUFDNUUsbUZBQW1GO1lBQ25GLE1BQU0sSUFBSSx3QkFBd0IsQ0FBQyxhQUFXLFdBQVcsb0RBQWlELENBQUMsQ0FBQzs7OztLQUUvRyxDQUFDO0FBRUYsSUFBTSxXQUFXLEdBQUcsVUFBQyxPQUFlO0lBQ2xDLE9BQUEsSUFBSSxPQUFPLENBQUMsVUFBVSxPQUFPLEVBQUUsTUFBTTtRQUNuQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQUMsS0FBSyxFQUFFLE1BQU07WUFDMUIsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNkLE9BQU87YUFDUjtZQUVELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQVRGLENBU0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvciB9IGZyb20gXCJAYXdzLXNkay9wcm9wZXJ0eS1wcm92aWRlclwiO1xuaW1wb3J0IHsgUGFyc2VkSW5pRGF0YSB9IGZyb20gXCJAYXdzLXNkay9zaGFyZWQtaW5pLWZpbGUtbG9hZGVyXCI7XG5pbXBvcnQgeyBDcmVkZW50aWFsUHJvdmlkZXIsIENyZWRlbnRpYWxzIH0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRNYXN0ZXJQcm9maWxlTmFtZSwgcGFyc2VLbm93bkZpbGVzLCBTb3VyY2VQcm9maWxlSW5pdCB9IGZyb20gXCJAYXdzLXNkay91dGlsLWNyZWRlbnRpYWxzXCI7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEVOVl9QUk9GSUxFID0gXCJBV1NfUFJPRklMRVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZyb21Qcm9jZXNzSW5pdCBleHRlbmRzIFNvdXJjZVByb2ZpbGVJbml0IHt9XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNyZWRlbnRpYWwgcHJvdmlkZXIgdGhhdCB3aWxsIHJlYWQgZnJvbSBhIGNyZWRlbnRpYWxfcHJvY2VzcyBzcGVjaWZpZWRcbiAqIGluIGluaSBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGZyb21Qcm9jZXNzID1cbiAgKGluaXQ6IEZyb21Qcm9jZXNzSW5pdCA9IHt9KTogQ3JlZGVudGlhbFByb3ZpZGVyID0+XG4gIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlcyA9IGF3YWl0IHBhcnNlS25vd25GaWxlcyhpbml0KTtcbiAgICByZXR1cm4gcmVzb2x2ZVByb2Nlc3NDcmVkZW50aWFscyhnZXRNYXN0ZXJQcm9maWxlTmFtZShpbml0KSwgcHJvZmlsZXMpO1xuICB9O1xuXG5jb25zdCByZXNvbHZlUHJvY2Vzc0NyZWRlbnRpYWxzID0gYXN5bmMgKHByb2ZpbGVOYW1lOiBzdHJpbmcsIHByb2ZpbGVzOiBQYXJzZWRJbmlEYXRhKTogUHJvbWlzZTxDcmVkZW50aWFscz4gPT4ge1xuICBjb25zdCBwcm9maWxlID0gcHJvZmlsZXNbcHJvZmlsZU5hbWVdO1xuXG4gIGlmIChwcm9maWxlc1twcm9maWxlTmFtZV0pIHtcbiAgICBjb25zdCBjcmVkZW50aWFsUHJvY2VzcyA9IHByb2ZpbGVbXCJjcmVkZW50aWFsX3Byb2Nlc3NcIl07XG4gICAgaWYgKGNyZWRlbnRpYWxQcm9jZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCBleGVjUHJvbWlzZShjcmVkZW50aWFsUHJvY2VzcylcbiAgICAgICAgLnRoZW4oKHByb2Nlc3NSZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShwcm9jZXNzUmVzdWx0KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBpbnZhbGlkIEpTT04uYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgIEFjY2Vzc0tleUlkOiBhY2Nlc3NLZXlJZCxcbiAgICAgICAgICAgIFNlY3JldEFjY2Vzc0tleTogc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgICAgICAgU2Vzc2lvblRva2VuOiBzZXNzaW9uVG9rZW4sXG4gICAgICAgICAgICBFeHBpcmF0aW9uOiBleHBpcmF0aW9uLFxuICAgICAgICAgIH0gPSBkYXRhO1xuXG4gICAgICAgICAgaWYgKHZlcnNpb24gIT09IDEpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyBkaWQgbm90IHJldHVybiBWZXJzaW9uIDEuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGFjY2Vzc0tleUlkID09PSB1bmRlZmluZWQgfHwgc2VjcmV0QWNjZXNzS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBpbnZhbGlkIGNyZWRlbnRpYWxzLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBleHBpcmF0aW9uVW5peDtcblxuICAgICAgICAgIGlmIChleHBpcmF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBjb25zdCBleHBpcmVUaW1lID0gbmV3IERhdGUoZXhwaXJhdGlvbik7XG4gICAgICAgICAgICBpZiAoZXhwaXJlVGltZSA8IGN1cnJlbnRUaW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKGBQcm9maWxlICR7cHJvZmlsZU5hbWV9IGNyZWRlbnRpYWxfcHJvY2VzcyByZXR1cm5lZCBleHBpcmVkIGNyZWRlbnRpYWxzLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhwaXJhdGlvblVuaXggPSBNYXRoLmZsb29yKG5ldyBEYXRlKGV4cGlyYXRpb24pLnZhbHVlT2YoKSAvIDEwMDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY2Nlc3NLZXlJZCxcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleSxcbiAgICAgICAgICAgIHNlc3Npb25Ub2tlbixcbiAgICAgICAgICAgIGV4cGlyYXRpb25Vbml4LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBDcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gZGlkIG5vdCBjb250YWluIGNyZWRlbnRpYWxfcHJvY2Vzcy5gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgdGhlIHByb2ZpbGUgY2Fubm90IGJlIHBhcnNlZCBvciBkb2VzIG5vdCBjb250YWluIHRoZSBkZWZhdWx0IG9yXG4gICAgLy8gc3BlY2lmaWVkIHByb2ZpbGUgdGhyb3cgYW4gZXJyb3IuIFRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSB0ZXJtaW5hbFxuICAgIC8vIHJlc29sdXRpb24gZXJyb3IgaWYgYSBwcm9maWxlIGhhcyBiZWVuIHNwZWNpZmllZCBieSB0aGUgdXNlciAod2hldGhlciB2aWFcbiAgICAvLyBhIHBhcmFtZXRlciwgYW5lbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgYW5vdGhlciBwcm9maWxlJ3MgYHNvdXJjZV9wcm9maWxlYCBrZXkpLlxuICAgIHRocm93IG5ldyBDcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gY291bGQgbm90IGJlIGZvdW5kIGluIHNoYXJlZCBjcmVkZW50aWFscyBmaWxlLmApO1xuICB9XG59O1xuXG5jb25zdCBleGVjUHJvbWlzZSA9IChjb21tYW5kOiBzdHJpbmcpID0+XG4gIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBleGVjKGNvbW1hbmQsIChlcnJvciwgc3Rkb3V0KSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHN0ZG91dC50cmltKCkpO1xuICAgIH0pO1xuICB9KTtcbiJdfQ==