@aws-sdk/credential-provider-sso 3.32.0 → 3.36.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,44 @@
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.36.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.35.0...v3.36.0) (2021-10-08)
7
+
8
+
9
+ ### Features
10
+
11
+ * publish files in dist-* only ([#2873](https://github.com/aws/aws-sdk-js-v3/issues/2873)) ([53b4243](https://github.com/aws/aws-sdk-js-v3/commit/53b4243b066f25ff2412d5f0dea1036054b2df32))
12
+
13
+
14
+
15
+
16
+
17
+ # [3.35.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.34.0...v3.35.0) (2021-10-04)
18
+
19
+ **Note:** Version bump only for package @aws-sdk/credential-provider-sso
20
+
21
+
22
+
23
+
24
+
25
+ # [3.34.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.33.0...v3.34.0) (2021-09-24)
26
+
27
+
28
+ ### Features
29
+
30
+ * **non-clients:** remove comments from transpiled JS files ([#2813](https://github.com/aws/aws-sdk-js-v3/issues/2813)) ([e6fc7f3](https://github.com/aws/aws-sdk-js-v3/commit/e6fc7f3e0fa74785590ac19e7ed143c916bb9b6e))
31
+
32
+
33
+
34
+
35
+
36
+ # [3.33.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.32.0...v3.33.0) (2021-09-21)
37
+
38
+ **Note:** Version bump only for package @aws-sdk/credential-provider-sso
39
+
40
+
41
+
42
+
43
+
6
44
  # [3.32.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.31.0...v3.32.0) (2021-09-17)
7
45
 
8
46
  **Note:** Version bump only for package @aws-sdk/credential-provider-sso
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSsoProfile = exports.validateSsoProfile = exports.fromSSO = exports.EXPIRE_WINDOW_MS = void 0;
4
+ const client_sso_1 = require("@aws-sdk/client-sso");
5
+ const property_provider_1 = require("@aws-sdk/property-provider");
6
+ const shared_ini_file_loader_1 = require("@aws-sdk/shared-ini-file-loader");
7
+ const util_credentials_1 = require("@aws-sdk/util-credentials");
8
+ const crypto_1 = require("crypto");
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ exports.EXPIRE_WINDOW_MS = 15 * 60 * 1000;
12
+ const SHOULD_FAIL_CREDENTIAL_CHAIN = false;
13
+ const fromSSO = (init = {}) => async () => {
14
+ const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient } = init;
15
+ if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName) {
16
+ const profiles = await util_credentials_1.parseKnownFiles(init);
17
+ const profileName = util_credentials_1.getMasterProfileName(init);
18
+ const profile = profiles[profileName];
19
+ if (!exports.isSsoProfile(profile)) {
20
+ throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`);
21
+ }
22
+ const { sso_start_url, sso_account_id, sso_region, sso_role_name } = exports.validateSsoProfile(profile);
23
+ return resolveSSOCredentials({
24
+ ssoStartUrl: sso_start_url,
25
+ ssoAccountId: sso_account_id,
26
+ ssoRegion: sso_region,
27
+ ssoRoleName: sso_role_name,
28
+ ssoClient: ssoClient,
29
+ });
30
+ }
31
+ else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {
32
+ throw new property_provider_1.CredentialsProviderError('Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl",' +
33
+ ' "ssoAccountId", "ssoRegion", "ssoRoleName"');
34
+ }
35
+ else {
36
+ return resolveSSOCredentials({ ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient });
37
+ }
38
+ };
39
+ exports.fromSSO = fromSSO;
40
+ const resolveSSOCredentials = async ({ ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, }) => {
41
+ const hasher = crypto_1.createHash("sha1");
42
+ const cacheName = hasher.update(ssoStartUrl).digest("hex");
43
+ const tokenFile = path_1.join(shared_ini_file_loader_1.getHomeDir(), ".aws", "sso", "cache", `${cacheName}.json`);
44
+ let token;
45
+ try {
46
+ token = JSON.parse(fs_1.readFileSync(tokenFile, { encoding: "utf-8" }));
47
+ if (new Date(token.expiresAt).getTime() - Date.now() <= exports.EXPIRE_WINDOW_MS) {
48
+ throw new Error("SSO token is expired.");
49
+ }
50
+ }
51
+ catch (e) {
52
+ throw new property_provider_1.CredentialsProviderError(`The SSO session associated with this profile has expired or is otherwise invalid. To refresh this SSO session ` +
53
+ `run aws sso login with the corresponding profile.`, SHOULD_FAIL_CREDENTIAL_CHAIN);
54
+ }
55
+ const { accessToken } = token;
56
+ const sso = ssoClient || new client_sso_1.SSOClient({ region: ssoRegion });
57
+ let ssoResp;
58
+ try {
59
+ ssoResp = await sso.send(new client_sso_1.GetRoleCredentialsCommand({
60
+ accountId: ssoAccountId,
61
+ roleName: ssoRoleName,
62
+ accessToken,
63
+ }));
64
+ }
65
+ catch (e) {
66
+ throw property_provider_1.CredentialsProviderError.from(e, SHOULD_FAIL_CREDENTIAL_CHAIN);
67
+ }
68
+ const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration } = {} } = ssoResp;
69
+ if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {
70
+ throw new property_provider_1.CredentialsProviderError("SSO returns an invalid temporary credential.", SHOULD_FAIL_CREDENTIAL_CHAIN);
71
+ }
72
+ return { accessKeyId, secretAccessKey, sessionToken, expiration: new Date(expiration) };
73
+ };
74
+ const validateSsoProfile = (profile) => {
75
+ const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;
76
+ if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {
77
+ throw new property_provider_1.CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", "sso_region", ` +
78
+ `"sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, SHOULD_FAIL_CREDENTIAL_CHAIN);
79
+ }
80
+ return profile;
81
+ };
82
+ exports.validateSsoProfile = validateSsoProfile;
83
+ const isSsoProfile = (arg) => arg &&
84
+ (typeof arg.sso_start_url === "string" ||
85
+ typeof arg.sso_account_id === "string" ||
86
+ typeof arg.sso_region === "string" ||
87
+ typeof arg.sso_role_name === "string");
88
+ exports.isSsoProfile = isSsoProfile;
@@ -0,0 +1,110 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { GetRoleCredentialsCommand, SSOClient } from "@aws-sdk/client-sso";
3
+ import { CredentialsProviderError } from "@aws-sdk/property-provider";
4
+ import { getHomeDir } from "@aws-sdk/shared-ini-file-loader";
5
+ import { getMasterProfileName, parseKnownFiles } from "@aws-sdk/util-credentials";
6
+ import { createHash } from "crypto";
7
+ import { readFileSync } from "fs";
8
+ import { join } from "path";
9
+ export var EXPIRE_WINDOW_MS = 15 * 60 * 1000;
10
+ var SHOULD_FAIL_CREDENTIAL_CHAIN = false;
11
+ export var fromSSO = function (init) {
12
+ if (init === void 0) { init = {}; }
13
+ return function () { return __awaiter(void 0, void 0, void 0, function () {
14
+ var ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, profiles, profileName, profile, _a, sso_start_url, sso_account_id, sso_region, sso_role_name;
15
+ return __generator(this, function (_b) {
16
+ switch (_b.label) {
17
+ case 0:
18
+ ssoStartUrl = init.ssoStartUrl, ssoAccountId = init.ssoAccountId, ssoRegion = init.ssoRegion, ssoRoleName = init.ssoRoleName, ssoClient = init.ssoClient;
19
+ if (!(!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName)) return [3, 2];
20
+ return [4, parseKnownFiles(init)];
21
+ case 1:
22
+ profiles = _b.sent();
23
+ profileName = getMasterProfileName(init);
24
+ profile = profiles[profileName];
25
+ if (!isSsoProfile(profile)) {
26
+ throw new CredentialsProviderError("Profile " + profileName + " is not configured with SSO credentials.");
27
+ }
28
+ _a = validateSsoProfile(profile), sso_start_url = _a.sso_start_url, sso_account_id = _a.sso_account_id, sso_region = _a.sso_region, sso_role_name = _a.sso_role_name;
29
+ return [2, resolveSSOCredentials({
30
+ ssoStartUrl: sso_start_url,
31
+ ssoAccountId: sso_account_id,
32
+ ssoRegion: sso_region,
33
+ ssoRoleName: sso_role_name,
34
+ ssoClient: ssoClient,
35
+ })];
36
+ case 2:
37
+ if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {
38
+ throw new CredentialsProviderError('Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl",' +
39
+ ' "ssoAccountId", "ssoRegion", "ssoRoleName"');
40
+ }
41
+ else {
42
+ return [2, resolveSSOCredentials({ ssoStartUrl: ssoStartUrl, ssoAccountId: ssoAccountId, ssoRegion: ssoRegion, ssoRoleName: ssoRoleName, ssoClient: ssoClient })];
43
+ }
44
+ _b.label = 3;
45
+ case 3: return [2];
46
+ }
47
+ });
48
+ }); };
49
+ };
50
+ var resolveSSOCredentials = function (_a) {
51
+ var ssoStartUrl = _a.ssoStartUrl, ssoAccountId = _a.ssoAccountId, ssoRegion = _a.ssoRegion, ssoRoleName = _a.ssoRoleName, ssoClient = _a.ssoClient;
52
+ return __awaiter(void 0, void 0, void 0, function () {
53
+ var hasher, cacheName, tokenFile, token, accessToken, sso, ssoResp, e_1, _b, _c, accessKeyId, secretAccessKey, sessionToken, expiration;
54
+ return __generator(this, function (_d) {
55
+ switch (_d.label) {
56
+ case 0:
57
+ hasher = createHash("sha1");
58
+ cacheName = hasher.update(ssoStartUrl).digest("hex");
59
+ tokenFile = join(getHomeDir(), ".aws", "sso", "cache", cacheName + ".json");
60
+ try {
61
+ token = JSON.parse(readFileSync(tokenFile, { encoding: "utf-8" }));
62
+ if (new Date(token.expiresAt).getTime() - Date.now() <= EXPIRE_WINDOW_MS) {
63
+ throw new Error("SSO token is expired.");
64
+ }
65
+ }
66
+ catch (e) {
67
+ throw new CredentialsProviderError("The SSO session associated with this profile has expired or is otherwise invalid. To refresh this SSO session " +
68
+ "run aws sso login with the corresponding profile.", SHOULD_FAIL_CREDENTIAL_CHAIN);
69
+ }
70
+ accessToken = token.accessToken;
71
+ sso = ssoClient || new SSOClient({ region: ssoRegion });
72
+ _d.label = 1;
73
+ case 1:
74
+ _d.trys.push([1, 3, , 4]);
75
+ return [4, sso.send(new GetRoleCredentialsCommand({
76
+ accountId: ssoAccountId,
77
+ roleName: ssoRoleName,
78
+ accessToken: accessToken,
79
+ }))];
80
+ case 2:
81
+ ssoResp = _d.sent();
82
+ return [3, 4];
83
+ case 3:
84
+ e_1 = _d.sent();
85
+ throw CredentialsProviderError.from(e_1, SHOULD_FAIL_CREDENTIAL_CHAIN);
86
+ case 4:
87
+ _b = ssoResp.roleCredentials, _c = _b === void 0 ? {} : _b, accessKeyId = _c.accessKeyId, secretAccessKey = _c.secretAccessKey, sessionToken = _c.sessionToken, expiration = _c.expiration;
88
+ if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {
89
+ throw new CredentialsProviderError("SSO returns an invalid temporary credential.", SHOULD_FAIL_CREDENTIAL_CHAIN);
90
+ }
91
+ return [2, { accessKeyId: accessKeyId, secretAccessKey: secretAccessKey, sessionToken: sessionToken, expiration: new Date(expiration) }];
92
+ }
93
+ });
94
+ });
95
+ };
96
+ export var validateSsoProfile = function (profile) {
97
+ var sso_start_url = profile.sso_start_url, sso_account_id = profile.sso_account_id, sso_region = profile.sso_region, sso_role_name = profile.sso_role_name;
98
+ if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {
99
+ throw new CredentialsProviderError("Profile is configured with invalid SSO credentials. Required parameters \"sso_account_id\", \"sso_region\", " +
100
+ ("\"sso_role_name\", \"sso_start_url\". Got " + Object.keys(profile).join(", ") + "\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html"), SHOULD_FAIL_CREDENTIAL_CHAIN);
101
+ }
102
+ return profile;
103
+ };
104
+ export var isSsoProfile = function (arg) {
105
+ return arg &&
106
+ (typeof arg.sso_start_url === "string" ||
107
+ typeof arg.sso_account_id === "string" ||
108
+ typeof arg.sso_region === "string" ||
109
+ typeof arg.sso_role_name === "string");
110
+ };
File without changes
File without changes
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@aws-sdk/credential-provider-sso",
3
- "version": "3.32.0",
3
+ "version": "3.36.0",
4
4
  "description": "AWS credential provider that exchanges a resolved SSO login token file for temporary AWS credentials",
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
+ "build": "yarn build:cjs && yarn build:es && yarn build:types",
8
9
  "build:cjs": "tsc -p tsconfig.cjs.json",
9
10
  "build:es": "tsc -p tsconfig.es.json",
10
- "build": "yarn build:es && yarn build:cjs",
11
- "downlevel-dts": "downlevel-dts dist/types dist/types/ts3.4",
11
+ "build:types": "tsc -p tsconfig.types.json",
12
+ "downlevel-dts": "downlevel-dts dist-types dist-types/ts3.4",
12
13
  "test": "jest"
13
14
  },
14
15
  "keywords": [
@@ -21,11 +22,11 @@
21
22
  },
22
23
  "license": "Apache-2.0",
23
24
  "dependencies": {
24
- "@aws-sdk/client-sso": "3.32.0",
25
- "@aws-sdk/property-provider": "3.32.0",
26
- "@aws-sdk/shared-ini-file-loader": "3.32.0",
27
- "@aws-sdk/types": "3.32.0",
28
- "@aws-sdk/util-credentials": "3.32.0",
25
+ "@aws-sdk/client-sso": "3.36.0",
26
+ "@aws-sdk/property-provider": "3.36.0",
27
+ "@aws-sdk/shared-ini-file-loader": "3.36.0",
28
+ "@aws-sdk/types": "3.36.0",
29
+ "@aws-sdk/util-credentials": "3.36.0",
29
30
  "tslib": "^2.3.0"
30
31
  },
31
32
  "devDependencies": {
@@ -34,17 +35,20 @@
34
35
  "jest": "^26.1.0",
35
36
  "typescript": "~4.3.5"
36
37
  },
37
- "types": "./dist/types/index.d.ts",
38
+ "types": "./dist-types/index.d.ts",
38
39
  "engines": {
39
40
  "node": ">= 10.0.0"
40
41
  },
41
42
  "typesVersions": {
42
43
  "<4.0": {
43
- "dist/types/*": [
44
- "dist/types/ts3.4/*"
44
+ "dist-types/*": [
45
+ "dist-types/ts3.4/*"
45
46
  ]
46
47
  }
47
48
  },
49
+ "files": [
50
+ "dist-*"
51
+ ],
48
52
  "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/master/packages/credential-provider-sso",
49
53
  "repository": {
50
54
  "type": "git",
package/dist/cjs/index.js DELETED
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isSsoProfile = exports.validateSsoProfile = exports.fromSSO = exports.EXPIRE_WINDOW_MS = void 0;
4
- const client_sso_1 = require("@aws-sdk/client-sso");
5
- const property_provider_1 = require("@aws-sdk/property-provider");
6
- const shared_ini_file_loader_1 = require("@aws-sdk/shared-ini-file-loader");
7
- const util_credentials_1 = require("@aws-sdk/util-credentials");
8
- const crypto_1 = require("crypto");
9
- const fs_1 = require("fs");
10
- const path_1 = require("path");
11
- /**
12
- * The time window (15 mins) that SDK will treat the SSO token expires in before the defined expiration date in token.
13
- * This is needed because server side may have invalidated the token before the defined expiration date.
14
- *
15
- * @internal
16
- */
17
- exports.EXPIRE_WINDOW_MS = 15 * 60 * 1000;
18
- const SHOULD_FAIL_CREDENTIAL_CHAIN = false;
19
- /**
20
- * Creates a credential provider that will read from a credential_process specified
21
- * in ini files.
22
- */
23
- const fromSSO = (init = {}) => async () => {
24
- const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient } = init;
25
- if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName) {
26
- // Load the SSO config from shared AWS config file.
27
- const profiles = await util_credentials_1.parseKnownFiles(init);
28
- const profileName = util_credentials_1.getMasterProfileName(init);
29
- const profile = profiles[profileName];
30
- if (!exports.isSsoProfile(profile)) {
31
- throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`);
32
- }
33
- const { sso_start_url, sso_account_id, sso_region, sso_role_name } = exports.validateSsoProfile(profile);
34
- return resolveSSOCredentials({
35
- ssoStartUrl: sso_start_url,
36
- ssoAccountId: sso_account_id,
37
- ssoRegion: sso_region,
38
- ssoRoleName: sso_role_name,
39
- ssoClient: ssoClient,
40
- });
41
- }
42
- else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {
43
- throw new property_provider_1.CredentialsProviderError('Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl",' +
44
- ' "ssoAccountId", "ssoRegion", "ssoRoleName"');
45
- }
46
- else {
47
- return resolveSSOCredentials({ ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient });
48
- }
49
- };
50
- exports.fromSSO = fromSSO;
51
- const resolveSSOCredentials = async ({ ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, }) => {
52
- const hasher = crypto_1.createHash("sha1");
53
- const cacheName = hasher.update(ssoStartUrl).digest("hex");
54
- const tokenFile = path_1.join(shared_ini_file_loader_1.getHomeDir(), ".aws", "sso", "cache", `${cacheName}.json`);
55
- let token;
56
- try {
57
- token = JSON.parse(fs_1.readFileSync(tokenFile, { encoding: "utf-8" }));
58
- if (new Date(token.expiresAt).getTime() - Date.now() <= exports.EXPIRE_WINDOW_MS) {
59
- throw new Error("SSO token is expired.");
60
- }
61
- }
62
- catch (e) {
63
- throw new property_provider_1.CredentialsProviderError(`The SSO session associated with this profile has expired or is otherwise invalid. To refresh this SSO session ` +
64
- `run aws sso login with the corresponding profile.`, SHOULD_FAIL_CREDENTIAL_CHAIN);
65
- }
66
- const { accessToken } = token;
67
- const sso = ssoClient || new client_sso_1.SSOClient({ region: ssoRegion });
68
- let ssoResp;
69
- try {
70
- ssoResp = await sso.send(new client_sso_1.GetRoleCredentialsCommand({
71
- accountId: ssoAccountId,
72
- roleName: ssoRoleName,
73
- accessToken,
74
- }));
75
- }
76
- catch (e) {
77
- throw property_provider_1.CredentialsProviderError.from(e, SHOULD_FAIL_CREDENTIAL_CHAIN);
78
- }
79
- const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration } = {} } = ssoResp;
80
- if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {
81
- throw new property_provider_1.CredentialsProviderError("SSO returns an invalid temporary credential.", SHOULD_FAIL_CREDENTIAL_CHAIN);
82
- }
83
- return { accessKeyId, secretAccessKey, sessionToken, expiration: new Date(expiration) };
84
- };
85
- /**
86
- * @internal
87
- */
88
- const validateSsoProfile = (profile) => {
89
- const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;
90
- if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {
91
- throw new property_provider_1.CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", "sso_region", ` +
92
- `"sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, SHOULD_FAIL_CREDENTIAL_CHAIN);
93
- }
94
- return profile;
95
- };
96
- exports.validateSsoProfile = validateSsoProfile;
97
- /**
98
- * @internal
99
- */
100
- const isSsoProfile = (arg) => arg &&
101
- (typeof arg.sso_start_url === "string" ||
102
- typeof arg.sso_account_id === "string" ||
103
- typeof arg.sso_region === "string" ||
104
- typeof arg.sso_role_name === "string");
105
- exports.isSsoProfile = isSsoProfile;
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBQTRHO0FBQzVHLGtFQUFzRTtBQUN0RSw0RUFBc0U7QUFFdEUsZ0VBQXFHO0FBQ3JHLG1DQUFvQztBQUNwQywyQkFBa0M7QUFDbEMsK0JBQTRCO0FBRTVCOzs7OztHQUtHO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUUvQyxNQUFNLDRCQUE0QixHQUFHLEtBQUssQ0FBQztBQXVDM0M7OztHQUdHO0FBQ0ksTUFBTSxPQUFPLEdBQ2xCLENBQUMsT0FBd0QsRUFBUyxFQUFzQixFQUFFLENBQzFGLEtBQUssSUFBSSxFQUFFO0lBQ1QsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDOUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUMvRCxtREFBbUQ7UUFDbkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxrQ0FBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sV0FBVyxHQUFHLHVDQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQixNQUFNLElBQUksNENBQXdCLENBQUMsV0FBVyxXQUFXLDBDQUEwQyxDQUFDLENBQUM7U0FDdEc7UUFDRCxNQUFNLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEdBQUcsMEJBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakcsT0FBTyxxQkFBcUIsQ0FBQztZQUMzQixXQUFXLEVBQUUsYUFBYTtZQUMxQixZQUFZLEVBQUUsY0FBYztZQUM1QixTQUFTLEVBQUUsVUFBVTtZQUNyQixXQUFXLEVBQUUsYUFBYTtZQUMxQixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLENBQUM7S0FDSjtTQUFNLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDdEUsTUFBTSxJQUFJLDRDQUF3QixDQUNoQyxtRkFBbUY7WUFDakYsNkNBQTZDLENBQ2hELENBQUM7S0FDSDtTQUFNO1FBQ0wsT0FBTyxxQkFBcUIsQ0FBQyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ2hHO0FBQ0gsQ0FBQyxDQUFDO0FBNUJTLFFBQUEsT0FBTyxXQTRCaEI7QUFFSixNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFBRSxFQUNuQyxXQUFXLEVBQ1gsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUM4QixFQUF3QixFQUFFO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLG1CQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsTUFBTSxTQUFTLEdBQUcsV0FBSSxDQUFDLG1DQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLFNBQVMsT0FBTyxDQUFDLENBQUM7SUFDbEYsSUFBSSxLQUFlLENBQUM7SUFDcEIsSUFBSTtRQUNGLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFZLENBQUMsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksd0JBQWdCLEVBQUU7WUFDeEUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFDO0tBQ0Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sSUFBSSw0Q0FBd0IsQ0FDaEMsZ0hBQWdIO1lBQzlHLG1EQUFtRCxFQUNyRCw0QkFBNEIsQ0FDN0IsQ0FBQztLQUNIO0lBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUM5QixNQUFNLEdBQUcsR0FBRyxTQUFTLElBQUksSUFBSSxzQkFBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUQsSUFBSSxPQUF3QyxDQUFDO0lBQzdDLElBQUk7UUFDRixPQUFPLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUN0QixJQUFJLHNDQUF5QixDQUFDO1lBQzVCLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFdBQVc7U0FDWixDQUFDLENBQ0gsQ0FBQztLQUNIO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLDRDQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztLQUN0RTtJQUNELE1BQU0sRUFBRSxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDckcsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNwRSxNQUFNLElBQUksNENBQXdCLENBQUMsOENBQThDLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztLQUNsSDtJQUNELE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztBQUMxRixDQUFDLENBQUM7QUFZRjs7R0FFRztBQUNJLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUE0QixFQUFjLEVBQUU7SUFDN0UsTUFBTSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUM3RSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ3RFLE1BQU0sSUFBSSw0Q0FBd0IsQ0FDaEMsMEdBQTBHO1lBQ3hHLHlDQUF5QyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDaEUsSUFBSSxDQUNMLHNGQUFzRixFQUN6Riw0QkFBNEIsQ0FDN0IsQ0FBQztLQUNIO0lBQ0QsT0FBTyxPQUFxQixDQUFDO0FBQy9CLENBQUMsQ0FBQztBQVpXLFFBQUEsa0JBQWtCLHNCQVk3QjtBQUVGOztHQUVHO0FBQ0ksTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFZLEVBQThCLEVBQUUsQ0FDdkUsR0FBRztJQUNILENBQUMsT0FBTyxHQUFHLENBQUMsYUFBYSxLQUFLLFFBQVE7UUFDcEMsT0FBTyxHQUFHLENBQUMsY0FBYyxLQUFLLFFBQVE7UUFDdEMsT0FBTyxHQUFHLENBQUMsVUFBVSxLQUFLLFFBQVE7UUFDbEMsT0FBTyxHQUFHLENBQUMsYUFBYSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0FBTDlCLFFBQUEsWUFBWSxnQkFLa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZXRSb2xlQ3JlZGVudGlhbHNDb21tYW5kLCBHZXRSb2xlQ3JlZGVudGlhbHNDb21tYW5kT3V0cHV0LCBTU09DbGllbnQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXNzb1wiO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNQcm92aWRlckVycm9yIH0gZnJvbSBcIkBhd3Mtc2RrL3Byb3BlcnR5LXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBnZXRIb21lRGlyLCBQcm9maWxlIH0gZnJvbSBcIkBhd3Mtc2RrL3NoYXJlZC1pbmktZmlsZS1sb2FkZXJcIjtcbmltcG9ydCB7IENyZWRlbnRpYWxQcm92aWRlciwgQ3JlZGVudGlhbHMgfSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcbmltcG9ydCB7IGdldE1hc3RlclByb2ZpbGVOYW1lLCBwYXJzZUtub3duRmlsZXMsIFNvdXJjZVByb2ZpbGVJbml0IH0gZnJvbSBcIkBhd3Mtc2RrL3V0aWwtY3JlZGVudGlhbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCI7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuXG4vKipcbiAqIFRoZSB0aW1lIHdpbmRvdyAoMTUgbWlucykgdGhhdCBTREsgd2lsbCB0cmVhdCB0aGUgU1NPIHRva2VuIGV4cGlyZXMgaW4gYmVmb3JlIHRoZSBkZWZpbmVkIGV4cGlyYXRpb24gZGF0ZSBpbiB0b2tlbi5cbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc2VydmVyIHNpZGUgbWF5IGhhdmUgaW52YWxpZGF0ZWQgdGhlIHRva2VuIGJlZm9yZSB0aGUgZGVmaW5lZCBleHBpcmF0aW9uIGRhdGUuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBJUkVfV0lORE9XX01TID0gMTUgKiA2MCAqIDEwMDA7XG5cbmNvbnN0IFNIT1VMRF9GQUlMX0NSRURFTlRJQUxfQ0hBSU4gPSBmYWxzZTtcblxuLyoqXG4gKiBDYWNoZWQgU1NPIHRva2VuIHJldHJpZXZlZCBmcm9tIFNTTyBsb2dpbiBmbG93LlxuICovXG5pbnRlcmZhY2UgU1NPVG9rZW4ge1xuICAvLyBBIGJhc2U2NCBlbmNvZGVkIHN0cmluZyByZXR1cm5lZCBieSB0aGUgc3NvLW9pZGMgc2VydmljZS5cbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgLy8gUkZDMzMzOSBmb3JtYXQgdGltZXN0YW1wXG4gIGV4cGlyZXNBdDogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG4gIHN0YXJ0VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNzb0NyZWRlbnRpYWxzUGFyYW1ldGVycyB7XG4gIC8qKlxuICAgKiBUaGUgVVJMIHRvIHRoZSBBV1MgU1NPIHNlcnZpY2UuXG4gICAqL1xuICBzc29TdGFydFVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIEFXUyBhY2NvdW50IHRvIHVzZSBmb3IgdGVtcG9yYXJ5IGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgc3NvQWNjb3VudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgcmVnaW9uIHRvIHVzZSBmb3IgdGVtcG9yYXJ5IGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgc3NvUmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBV1Mgcm9sZSB0byBhc3N1bWUuXG4gICAqL1xuICBzc29Sb2xlTmFtZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBGcm9tU1NPSW5pdCBleHRlbmRzIFNvdXJjZVByb2ZpbGVJbml0IHtcbiAgc3NvQ2xpZW50PzogU1NPQ2xpZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBjcmVkZW50aWFsIHByb3ZpZGVyIHRoYXQgd2lsbCByZWFkIGZyb20gYSBjcmVkZW50aWFsX3Byb2Nlc3Mgc3BlY2lmaWVkXG4gKiBpbiBpbmkgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBmcm9tU1NPID1cbiAgKGluaXQ6IEZyb21TU09Jbml0ICYgUGFydGlhbDxTc29DcmVkZW50aWFsc1BhcmFtZXRlcnM+ID0ge30gYXMgYW55KTogQ3JlZGVudGlhbFByb3ZpZGVyID0+XG4gIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IHNzb1N0YXJ0VXJsLCBzc29BY2NvdW50SWQsIHNzb1JlZ2lvbiwgc3NvUm9sZU5hbWUsIHNzb0NsaWVudCB9ID0gaW5pdDtcbiAgICBpZiAoIXNzb1N0YXJ0VXJsICYmICFzc29BY2NvdW50SWQgJiYgIXNzb1JlZ2lvbiAmJiAhc3NvUm9sZU5hbWUpIHtcbiAgICAgIC8vIExvYWQgdGhlIFNTTyBjb25maWcgZnJvbSBzaGFyZWQgQVdTIGNvbmZpZyBmaWxlLlxuICAgICAgY29uc3QgcHJvZmlsZXMgPSBhd2FpdCBwYXJzZUtub3duRmlsZXMoaW5pdCk7XG4gICAgICBjb25zdCBwcm9maWxlTmFtZSA9IGdldE1hc3RlclByb2ZpbGVOYW1lKGluaXQpO1xuICAgICAgY29uc3QgcHJvZmlsZSA9IHByb2ZpbGVzW3Byb2ZpbGVOYW1lXTtcbiAgICAgIGlmICghaXNTc29Qcm9maWxlKHByb2ZpbGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBDcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCBTU08gY3JlZGVudGlhbHMuYCk7XG4gICAgICB9XG4gICAgICBjb25zdCB7IHNzb19zdGFydF91cmwsIHNzb19hY2NvdW50X2lkLCBzc29fcmVnaW9uLCBzc29fcm9sZV9uYW1lIH0gPSB2YWxpZGF0ZVNzb1Byb2ZpbGUocHJvZmlsZSk7XG4gICAgICByZXR1cm4gcmVzb2x2ZVNTT0NyZWRlbnRpYWxzKHtcbiAgICAgICAgc3NvU3RhcnRVcmw6IHNzb19zdGFydF91cmwsXG4gICAgICAgIHNzb0FjY291bnRJZDogc3NvX2FjY291bnRfaWQsXG4gICAgICAgIHNzb1JlZ2lvbjogc3NvX3JlZ2lvbixcbiAgICAgICAgc3NvUm9sZU5hbWU6IHNzb19yb2xlX25hbWUsXG4gICAgICAgIHNzb0NsaWVudDogc3NvQ2xpZW50LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICghc3NvU3RhcnRVcmwgfHwgIXNzb0FjY291bnRJZCB8fCAhc3NvUmVnaW9uIHx8ICFzc29Sb2xlTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihcbiAgICAgICAgJ0luY29tcGxldGUgY29uZmlndXJhdGlvbi4gVGhlIGZyb21TU08oKSBhcmd1bWVudCBoYXNoIG11c3QgaW5jbHVkZSBcInNzb1N0YXJ0VXJsXCIsJyArXG4gICAgICAgICAgJyBcInNzb0FjY291bnRJZFwiLCBcInNzb1JlZ2lvblwiLCBcInNzb1JvbGVOYW1lXCInXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVNTT0NyZWRlbnRpYWxzKHsgc3NvU3RhcnRVcmwsIHNzb0FjY291bnRJZCwgc3NvUmVnaW9uLCBzc29Sb2xlTmFtZSwgc3NvQ2xpZW50IH0pO1xuICAgIH1cbiAgfTtcblxuY29uc3QgcmVzb2x2ZVNTT0NyZWRlbnRpYWxzID0gYXN5bmMgKHtcbiAgc3NvU3RhcnRVcmwsXG4gIHNzb0FjY291bnRJZCxcbiAgc3NvUmVnaW9uLFxuICBzc29Sb2xlTmFtZSxcbiAgc3NvQ2xpZW50LFxufTogRnJvbVNTT0luaXQgJiBTc29DcmVkZW50aWFsc1BhcmFtZXRlcnMpOiBQcm9taXNlPENyZWRlbnRpYWxzPiA9PiB7XG4gIGNvbnN0IGhhc2hlciA9IGNyZWF0ZUhhc2goXCJzaGExXCIpO1xuICBjb25zdCBjYWNoZU5hbWUgPSBoYXNoZXIudXBkYXRlKHNzb1N0YXJ0VXJsKS5kaWdlc3QoXCJoZXhcIik7XG4gIGNvbnN0IHRva2VuRmlsZSA9IGpvaW4oZ2V0SG9tZURpcigpLCBcIi5hd3NcIiwgXCJzc29cIiwgXCJjYWNoZVwiLCBgJHtjYWNoZU5hbWV9Lmpzb25gKTtcbiAgbGV0IHRva2VuOiBTU09Ub2tlbjtcbiAgdHJ5IHtcbiAgICB0b2tlbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHRva2VuRmlsZSwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pKTtcbiAgICBpZiAobmV3IERhdGUodG9rZW4uZXhwaXJlc0F0KS5nZXRUaW1lKCkgLSBEYXRlLm5vdygpIDw9IEVYUElSRV9XSU5ET1dfTVMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNTTyB0b2tlbiBpcyBleHBpcmVkLlwiKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgQ3JlZGVudGlhbHNQcm92aWRlckVycm9yKFxuICAgICAgYFRoZSBTU08gc2Vzc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBwcm9maWxlIGhhcyBleHBpcmVkIG9yIGlzIG90aGVyd2lzZSBpbnZhbGlkLiBUbyByZWZyZXNoIHRoaXMgU1NPIHNlc3Npb24gYCArXG4gICAgICAgIGBydW4gYXdzIHNzbyBsb2dpbiB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHByb2ZpbGUuYCxcbiAgICAgIFNIT1VMRF9GQUlMX0NSRURFTlRJQUxfQ0hBSU5cbiAgICApO1xuICB9XG4gIGNvbnN0IHsgYWNjZXNzVG9rZW4gfSA9IHRva2VuO1xuICBjb25zdCBzc28gPSBzc29DbGllbnQgfHwgbmV3IFNTT0NsaWVudCh7IHJlZ2lvbjogc3NvUmVnaW9uIH0pO1xuICBsZXQgc3NvUmVzcDogR2V0Um9sZUNyZWRlbnRpYWxzQ29tbWFuZE91dHB1dDtcbiAgdHJ5IHtcbiAgICBzc29SZXNwID0gYXdhaXQgc3NvLnNlbmQoXG4gICAgICBuZXcgR2V0Um9sZUNyZWRlbnRpYWxzQ29tbWFuZCh7XG4gICAgICAgIGFjY291bnRJZDogc3NvQWNjb3VudElkLFxuICAgICAgICByb2xlTmFtZTogc3NvUm9sZU5hbWUsXG4gICAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgfSlcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgQ3JlZGVudGlhbHNQcm92aWRlckVycm9yLmZyb20oZSwgU0hPVUxEX0ZBSUxfQ1JFREVOVElBTF9DSEFJTik7XG4gIH1cbiAgY29uc3QgeyByb2xlQ3JlZGVudGlhbHM6IHsgYWNjZXNzS2V5SWQsIHNlY3JldEFjY2Vzc0tleSwgc2Vzc2lvblRva2VuLCBleHBpcmF0aW9uIH0gPSB7fSB9ID0gc3NvUmVzcDtcbiAgaWYgKCFhY2Nlc3NLZXlJZCB8fCAhc2VjcmV0QWNjZXNzS2V5IHx8ICFzZXNzaW9uVG9rZW4gfHwgIWV4cGlyYXRpb24pIHtcbiAgICB0aHJvdyBuZXcgQ3JlZGVudGlhbHNQcm92aWRlckVycm9yKFwiU1NPIHJldHVybnMgYW4gaW52YWxpZCB0ZW1wb3JhcnkgY3JlZGVudGlhbC5cIiwgU0hPVUxEX0ZBSUxfQ1JFREVOVElBTF9DSEFJTik7XG4gIH1cbiAgcmV0dXJuIHsgYWNjZXNzS2V5SWQsIHNlY3JldEFjY2Vzc0tleSwgc2Vzc2lvblRva2VuLCBleHBpcmF0aW9uOiBuZXcgRGF0ZShleHBpcmF0aW9uKSB9O1xufTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTc29Qcm9maWxlIGV4dGVuZHMgUHJvZmlsZSB7XG4gIHNzb19zdGFydF91cmw6IHN0cmluZztcbiAgc3NvX2FjY291bnRfaWQ6IHN0cmluZztcbiAgc3NvX3JlZ2lvbjogc3RyaW5nO1xuICBzc29fcm9sZV9uYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVNzb1Byb2ZpbGUgPSAocHJvZmlsZTogUGFydGlhbDxTc29Qcm9maWxlPik6IFNzb1Byb2ZpbGUgPT4ge1xuICBjb25zdCB7IHNzb19zdGFydF91cmwsIHNzb19hY2NvdW50X2lkLCBzc29fcmVnaW9uLCBzc29fcm9sZV9uYW1lIH0gPSBwcm9maWxlO1xuICBpZiAoIXNzb19zdGFydF91cmwgfHwgIXNzb19hY2NvdW50X2lkIHx8ICFzc29fcmVnaW9uIHx8ICFzc29fcm9sZV9uYW1lKSB7XG4gICAgdGhyb3cgbmV3IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihcbiAgICAgIGBQcm9maWxlIGlzIGNvbmZpZ3VyZWQgd2l0aCBpbnZhbGlkIFNTTyBjcmVkZW50aWFscy4gUmVxdWlyZWQgcGFyYW1ldGVycyBcInNzb19hY2NvdW50X2lkXCIsIFwic3NvX3JlZ2lvblwiLCBgICtcbiAgICAgICAgYFwic3NvX3JvbGVfbmFtZVwiLCBcInNzb19zdGFydF91cmxcIi4gR290ICR7T2JqZWN0LmtleXMocHJvZmlsZSkuam9pbihcbiAgICAgICAgICBcIiwgXCJcbiAgICAgICAgKX1cXG5SZWZlcmVuY2U6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbGkvbGF0ZXN0L3VzZXJndWlkZS9jbGktY29uZmlndXJlLXNzby5odG1sYCxcbiAgICAgIFNIT1VMRF9GQUlMX0NSRURFTlRJQUxfQ0hBSU5cbiAgICApO1xuICB9XG4gIHJldHVybiBwcm9maWxlIGFzIFNzb1Byb2ZpbGU7XG59O1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgaXNTc29Qcm9maWxlID0gKGFyZzogUHJvZmlsZSk6IGFyZyBpcyBQYXJ0aWFsPFNzb1Byb2ZpbGU+ID0+XG4gIGFyZyAmJlxuICAodHlwZW9mIGFyZy5zc29fc3RhcnRfdXJsID09PSBcInN0cmluZ1wiIHx8XG4gICAgdHlwZW9mIGFyZy5zc29fYWNjb3VudF9pZCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIHR5cGVvZiBhcmcuc3NvX3JlZ2lvbiA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIHR5cGVvZiBhcmcuc3NvX3JvbGVfbmFtZSA9PT0gXCJzdHJpbmdcIik7XG4iXX0=
package/dist/es/index.js DELETED
@@ -1,127 +0,0 @@
1
- import { __awaiter, __generator } from "tslib";
2
- import { GetRoleCredentialsCommand, SSOClient } from "@aws-sdk/client-sso";
3
- import { CredentialsProviderError } from "@aws-sdk/property-provider";
4
- import { getHomeDir } from "@aws-sdk/shared-ini-file-loader";
5
- import { getMasterProfileName, parseKnownFiles } from "@aws-sdk/util-credentials";
6
- import { createHash } from "crypto";
7
- import { readFileSync } from "fs";
8
- import { join } from "path";
9
- /**
10
- * The time window (15 mins) that SDK will treat the SSO token expires in before the defined expiration date in token.
11
- * This is needed because server side may have invalidated the token before the defined expiration date.
12
- *
13
- * @internal
14
- */
15
- export var EXPIRE_WINDOW_MS = 15 * 60 * 1000;
16
- var SHOULD_FAIL_CREDENTIAL_CHAIN = false;
17
- /**
18
- * Creates a credential provider that will read from a credential_process specified
19
- * in ini files.
20
- */
21
- export var fromSSO = function (init) {
22
- if (init === void 0) { init = {}; }
23
- return function () { return __awaiter(void 0, void 0, void 0, function () {
24
- var ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, profiles, profileName, profile, _a, sso_start_url, sso_account_id, sso_region, sso_role_name;
25
- return __generator(this, function (_b) {
26
- switch (_b.label) {
27
- case 0:
28
- ssoStartUrl = init.ssoStartUrl, ssoAccountId = init.ssoAccountId, ssoRegion = init.ssoRegion, ssoRoleName = init.ssoRoleName, ssoClient = init.ssoClient;
29
- if (!(!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName)) return [3 /*break*/, 2];
30
- return [4 /*yield*/, parseKnownFiles(init)];
31
- case 1:
32
- profiles = _b.sent();
33
- profileName = getMasterProfileName(init);
34
- profile = profiles[profileName];
35
- if (!isSsoProfile(profile)) {
36
- throw new CredentialsProviderError("Profile " + profileName + " is not configured with SSO credentials.");
37
- }
38
- _a = validateSsoProfile(profile), sso_start_url = _a.sso_start_url, sso_account_id = _a.sso_account_id, sso_region = _a.sso_region, sso_role_name = _a.sso_role_name;
39
- return [2 /*return*/, resolveSSOCredentials({
40
- ssoStartUrl: sso_start_url,
41
- ssoAccountId: sso_account_id,
42
- ssoRegion: sso_region,
43
- ssoRoleName: sso_role_name,
44
- ssoClient: ssoClient,
45
- })];
46
- case 2:
47
- if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {
48
- throw new CredentialsProviderError('Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl",' +
49
- ' "ssoAccountId", "ssoRegion", "ssoRoleName"');
50
- }
51
- else {
52
- return [2 /*return*/, resolveSSOCredentials({ ssoStartUrl: ssoStartUrl, ssoAccountId: ssoAccountId, ssoRegion: ssoRegion, ssoRoleName: ssoRoleName, ssoClient: ssoClient })];
53
- }
54
- _b.label = 3;
55
- case 3: return [2 /*return*/];
56
- }
57
- });
58
- }); };
59
- };
60
- var resolveSSOCredentials = function (_a) {
61
- var ssoStartUrl = _a.ssoStartUrl, ssoAccountId = _a.ssoAccountId, ssoRegion = _a.ssoRegion, ssoRoleName = _a.ssoRoleName, ssoClient = _a.ssoClient;
62
- return __awaiter(void 0, void 0, void 0, function () {
63
- var hasher, cacheName, tokenFile, token, accessToken, sso, ssoResp, e_1, _b, _c, accessKeyId, secretAccessKey, sessionToken, expiration;
64
- return __generator(this, function (_d) {
65
- switch (_d.label) {
66
- case 0:
67
- hasher = createHash("sha1");
68
- cacheName = hasher.update(ssoStartUrl).digest("hex");
69
- tokenFile = join(getHomeDir(), ".aws", "sso", "cache", cacheName + ".json");
70
- try {
71
- token = JSON.parse(readFileSync(tokenFile, { encoding: "utf-8" }));
72
- if (new Date(token.expiresAt).getTime() - Date.now() <= EXPIRE_WINDOW_MS) {
73
- throw new Error("SSO token is expired.");
74
- }
75
- }
76
- catch (e) {
77
- throw new CredentialsProviderError("The SSO session associated with this profile has expired or is otherwise invalid. To refresh this SSO session " +
78
- "run aws sso login with the corresponding profile.", SHOULD_FAIL_CREDENTIAL_CHAIN);
79
- }
80
- accessToken = token.accessToken;
81
- sso = ssoClient || new SSOClient({ region: ssoRegion });
82
- _d.label = 1;
83
- case 1:
84
- _d.trys.push([1, 3, , 4]);
85
- return [4 /*yield*/, sso.send(new GetRoleCredentialsCommand({
86
- accountId: ssoAccountId,
87
- roleName: ssoRoleName,
88
- accessToken: accessToken,
89
- }))];
90
- case 2:
91
- ssoResp = _d.sent();
92
- return [3 /*break*/, 4];
93
- case 3:
94
- e_1 = _d.sent();
95
- throw CredentialsProviderError.from(e_1, SHOULD_FAIL_CREDENTIAL_CHAIN);
96
- case 4:
97
- _b = ssoResp.roleCredentials, _c = _b === void 0 ? {} : _b, accessKeyId = _c.accessKeyId, secretAccessKey = _c.secretAccessKey, sessionToken = _c.sessionToken, expiration = _c.expiration;
98
- if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {
99
- throw new CredentialsProviderError("SSO returns an invalid temporary credential.", SHOULD_FAIL_CREDENTIAL_CHAIN);
100
- }
101
- return [2 /*return*/, { accessKeyId: accessKeyId, secretAccessKey: secretAccessKey, sessionToken: sessionToken, expiration: new Date(expiration) }];
102
- }
103
- });
104
- });
105
- };
106
- /**
107
- * @internal
108
- */
109
- export var validateSsoProfile = function (profile) {
110
- var sso_start_url = profile.sso_start_url, sso_account_id = profile.sso_account_id, sso_region = profile.sso_region, sso_role_name = profile.sso_role_name;
111
- if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {
112
- throw new CredentialsProviderError("Profile is configured with invalid SSO credentials. Required parameters \"sso_account_id\", \"sso_region\", " +
113
- ("\"sso_role_name\", \"sso_start_url\". Got " + Object.keys(profile).join(", ") + "\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html"), SHOULD_FAIL_CREDENTIAL_CHAIN);
114
- }
115
- return profile;
116
- };
117
- /**
118
- * @internal
119
- */
120
- export var isSsoProfile = function (arg) {
121
- return arg &&
122
- (typeof arg.sso_start_url === "string" ||
123
- typeof arg.sso_account_id === "string" ||
124
- typeof arg.sso_region === "string" ||
125
- typeof arg.sso_role_name === "string");
126
- };
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBbUMsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBVyxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQXFCLE1BQU0sMkJBQTJCLENBQUM7QUFDckcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUI7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsSUFBTSxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUUvQyxJQUFNLDRCQUE0QixHQUFHLEtBQUssQ0FBQztBQXVDM0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLElBQU0sT0FBTyxHQUNsQixVQUFDLElBQWlFO0lBQWpFLHFCQUFBLEVBQUEsT0FBd0QsRUFBUztJQUNsRSxPQUFBOzs7OztvQkFDVSxXQUFXLEdBQXNELElBQUksWUFBMUQsRUFBRSxZQUFZLEdBQXdDLElBQUksYUFBNUMsRUFBRSxTQUFTLEdBQTZCLElBQUksVUFBakMsRUFBRSxXQUFXLEdBQWdCLElBQUksWUFBcEIsRUFBRSxTQUFTLEdBQUssSUFBSSxVQUFULENBQVU7eUJBQzFFLENBQUEsQ0FBQyxXQUFXLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxXQUFXLENBQUEsRUFBM0Qsd0JBQTJEO29CQUU1QyxxQkFBTSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUE7O29C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UTtZQUNwQyxPQUFPLEdBQUcsQ0FBQyxjQUFjLEtBQUssUUFBUTtZQUN0QyxPQUFPLEdBQUcsQ0FBQyxVQUFVLEtBQUssUUFBUTtZQUNsQyxPQUFPLEdBQUcsQ0FBQyxhQUFhLEtBQUssUUFBUSxDQUFDO0FBSnhDLENBSXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZXRSb2xlQ3JlZGVudGlhbHNDb21tYW5kLCBHZXRSb2xlQ3JlZGVudGlhbHNDb21tYW5kT3V0cHV0LCBTU09DbGllbnQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXNzb1wiO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNQcm92aWRlckVycm9yIH0gZnJvbSBcIkBhd3Mtc2RrL3Byb3BlcnR5LXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBnZXRIb21lRGlyLCBQcm9maWxlIH0gZnJvbSBcIkBhd3Mtc2RrL3NoYXJlZC1pbmktZmlsZS1sb2FkZXJcIjtcbmltcG9ydCB7IENyZWRlbnRpYWxQcm92aWRlciwgQ3JlZGVudGlhbHMgfSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcbmltcG9ydCB7IGdldE1hc3RlclByb2ZpbGVOYW1lLCBwYXJzZUtub3duRmlsZXMsIFNvdXJjZVByb2ZpbGVJbml0IH0gZnJvbSBcIkBhd3Mtc2RrL3V0aWwtY3JlZGVudGlhbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCI7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuXG4vKipcbiAqIFRoZSB0aW1lIHdpbmRvdyAoMTUgbWlucykgdGhhdCBTREsgd2lsbCB0cmVhdCB0aGUgU1NPIHRva2VuIGV4cGlyZXMgaW4gYmVmb3JlIHRoZSBkZWZpbmVkIGV4cGlyYXRpb24gZGF0ZSBpbiB0b2tlbi5cbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc2VydmVyIHNpZGUgbWF5IGhhdmUgaW52YWxpZGF0ZWQgdGhlIHRva2VuIGJlZm9yZSB0aGUgZGVmaW5lZCBleHBpcmF0aW9uIGRhdGUuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBJUkVfV0lORE9XX01TID0gMTUgKiA2MCAqIDEwMDA7XG5cbmNvbnN0IFNIT1VMRF9GQUlMX0NSRURFTlRJQUxfQ0hBSU4gPSBmYWxzZTtcblxuLyoqXG4gKiBDYWNoZWQgU1NPIHRva2VuIHJldHJpZXZlZCBmcm9tIFNTTyBsb2dpbiBmbG93LlxuICovXG5pbnRlcmZhY2UgU1NPVG9rZW4ge1xuICAvLyBBIGJhc2U2NCBlbmNvZGVkIHN0cmluZyByZXR1cm5lZCBieSB0aGUgc3NvLW9pZGMgc2VydmljZS5cbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgLy8gUkZDMzMzOSBmb3JtYXQgdGltZXN0YW1wXG4gIGV4cGlyZXNBdDogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG4gIHN0YXJ0VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNzb0NyZWRlbnRpYWxzUGFyYW1ldGVycyB7XG4gIC8qKlxuICAgKiBUaGUgVVJMIHRvIHRoZSBBV1MgU1NPIHNlcnZpY2UuXG4gICAqL1xuICBzc29TdGFydFVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIEFXUyBhY2NvdW50IHRvIHVzZSBmb3IgdGVtcG9yYXJ5IGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgc3NvQWNjb3VudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgcmVnaW9uIHRvIHVzZSBmb3IgdGVtcG9yYXJ5IGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgc3NvUmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBV1Mgcm9sZSB0byBhc3N1bWUuXG4gICAqL1xuICBzc29Sb2xlTmFtZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBGcm9tU1NPSW5pdCBleHRlbmRzIFNvdXJjZVByb2ZpbGVJbml0IHtcbiAgc3NvQ2xpZW50PzogU1NPQ2xpZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBjcmVkZW50aWFsIHByb3ZpZGVyIHRoYXQgd2lsbCByZWFkIGZyb20gYSBjcmVkZW50aWFsX3Byb2Nlc3Mgc3BlY2lmaWVkXG4gKiBpbiBpbmkgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBmcm9tU1NPID1cbiAgKGluaXQ6IEZyb21TU09Jbml0ICYgUGFydGlhbDxTc29DcmVkZW50aWFsc1BhcmFtZXRlcnM+ID0ge30gYXMgYW55KTogQ3JlZGVudGlhbFByb3ZpZGVyID0+XG4gIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IHNzb1N0YXJ0VXJsLCBzc29BY2NvdW50SWQsIHNzb1JlZ2lvbiwgc3NvUm9sZU5hbWUsIHNzb0NsaWVudCB9ID0gaW5pdDtcbiAgICBpZiAoIXNzb1N0YXJ0VXJsICYmICFzc29BY2NvdW50SWQgJiYgIXNzb1JlZ2lvbiAmJiAhc3NvUm9sZU5hbWUpIHtcbiAgICAgIC8vIExvYWQgdGhlIFNTTyBjb25maWcgZnJvbSBzaGFyZWQgQVdTIGNvbmZpZyBmaWxlLlxuICAgICAgY29uc3QgcHJvZmlsZXMgPSBhd2FpdCBwYXJzZUtub3duRmlsZXMoaW5pdCk7XG4gICAgICBjb25zdCBwcm9maWxlTmFtZSA9IGdldE1hc3RlclByb2ZpbGVOYW1lKGluaXQpO1xuICAgICAgY29uc3QgcHJvZmlsZSA9IHByb2ZpbGVzW3Byb2ZpbGVOYW1lXTtcbiAgICAgIGlmICghaXNTc29Qcm9maWxlKHByb2ZpbGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBDcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCBTU08gY3JlZGVudGlhbHMuYCk7XG4gICAgICB9XG4gICAgICBjb25zdCB7IHNzb19zdGFydF91cmwsIHNzb19hY2NvdW50X2lkLCBzc29fcmVnaW9uLCBzc29fcm9sZV9uYW1lIH0gPSB2YWxpZGF0ZVNzb1Byb2ZpbGUocHJvZmlsZSk7XG4gICAgICByZXR1cm4gcmVzb2x2ZVNTT0NyZWRlbnRpYWxzKHtcbiAgICAgICAgc3NvU3RhcnRVcmw6IHNzb19zdGFydF91cmwsXG4gICAgICAgIHNzb0FjY291bnRJZDogc3NvX2FjY291bnRfaWQsXG4gICAgICAgIHNzb1JlZ2lvbjogc3NvX3JlZ2lvbixcbiAgICAgICAgc3NvUm9sZU5hbWU6IHNzb19yb2xlX25hbWUsXG4gICAgICAgIHNzb0NsaWVudDogc3NvQ2xpZW50LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICghc3NvU3RhcnRVcmwgfHwgIXNzb0FjY291bnRJZCB8fCAhc3NvUmVnaW9uIHx8ICFzc29Sb2xlTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihcbiAgICAgICAgJ0luY29tcGxldGUgY29uZmlndXJhdGlvbi4gVGhlIGZyb21TU08oKSBhcmd1bWVudCBoYXNoIG11c3QgaW5jbHVkZSBcInNzb1N0YXJ0VXJsXCIsJyArXG4gICAgICAgICAgJyBcInNzb0FjY291bnRJZFwiLCBcInNzb1JlZ2lvblwiLCBcInNzb1JvbGVOYW1lXCInXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVNTT0NyZWRlbnRpYWxzKHsgc3NvU3RhcnRVcmwsIHNzb0FjY291bnRJZCwgc3NvUmVnaW9uLCBzc29Sb2xlTmFtZSwgc3NvQ2xpZW50IH0pO1xuICAgIH1cbiAgfTtcblxuY29uc3QgcmVzb2x2ZVNTT0NyZWRlbnRpYWxzID0gYXN5bmMgKHtcbiAgc3NvU3RhcnRVcmwsXG4gIHNzb0FjY291bnRJZCxcbiAgc3NvUmVnaW9uLFxuICBzc29Sb2xlTmFtZSxcbiAgc3NvQ2xpZW50LFxufTogRnJvbVNTT0luaXQgJiBTc29DcmVkZW50aWFsc1BhcmFtZXRlcnMpOiBQcm9taXNlPENyZWRlbnRpYWxzPiA9PiB7XG4gIGNvbnN0IGhhc2hlciA9IGNyZWF0ZUhhc2goXCJzaGExXCIpO1xuICBjb25zdCBjYWNoZU5hbWUgPSBoYXNoZXIudXBkYXRlKHNzb1N0YXJ0VXJsKS5kaWdlc3QoXCJoZXhcIik7XG4gIGNvbnN0IHRva2VuRmlsZSA9IGpvaW4oZ2V0SG9tZURpcigpLCBcIi5hd3NcIiwgXCJzc29cIiwgXCJjYWNoZVwiLCBgJHtjYWNoZU5hbWV9Lmpzb25gKTtcbiAgbGV0IHRva2VuOiBTU09Ub2tlbjtcbiAgdHJ5IHtcbiAgICB0b2tlbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHRva2VuRmlsZSwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pKTtcbiAgICBpZiAobmV3IERhdGUodG9rZW4uZXhwaXJlc0F0KS5nZXRUaW1lKCkgLSBEYXRlLm5vdygpIDw9IEVYUElSRV9XSU5ET1dfTVMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNTTyB0b2tlbiBpcyBleHBpcmVkLlwiKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgQ3JlZGVudGlhbHNQcm92aWRlckVycm9yKFxuICAgICAgYFRoZSBTU08gc2Vzc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBwcm9maWxlIGhhcyBleHBpcmVkIG9yIGlzIG90aGVyd2lzZSBpbnZhbGlkLiBUbyByZWZyZXNoIHRoaXMgU1NPIHNlc3Npb24gYCArXG4gICAgICAgIGBydW4gYXdzIHNzbyBsb2dpbiB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHByb2ZpbGUuYCxcbiAgICAgIFNIT1VMRF9GQUlMX0NSRURFTlRJQUxfQ0hBSU5cbiAgICApO1xuICB9XG4gIGNvbnN0IHsgYWNjZXNzVG9rZW4gfSA9IHRva2VuO1xuICBjb25zdCBzc28gPSBzc29DbGllbnQgfHwgbmV3IFNTT0NsaWVudCh7IHJlZ2lvbjogc3NvUmVnaW9uIH0pO1xuICBsZXQgc3NvUmVzcDogR2V0Um9sZUNyZWRlbnRpYWxzQ29tbWFuZE91dHB1dDtcbiAgdHJ5IHtcbiAgICBzc29SZXNwID0gYXdhaXQgc3NvLnNlbmQoXG4gICAgICBuZXcgR2V0Um9sZUNyZWRlbnRpYWxzQ29tbWFuZCh7XG4gICAgICAgIGFjY291bnRJZDogc3NvQWNjb3VudElkLFxuICAgICAgICByb2xlTmFtZTogc3NvUm9sZU5hbWUsXG4gICAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgfSlcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgQ3JlZGVudGlhbHNQcm92aWRlckVycm9yLmZyb20oZSwgU0hPVUxEX0ZBSUxfQ1JFREVOVElBTF9DSEFJTik7XG4gIH1cbiAgY29uc3QgeyByb2xlQ3JlZGVudGlhbHM6IHsgYWNjZXNzS2V5SWQsIHNlY3JldEFjY2Vzc0tleSwgc2Vzc2lvblRva2VuLCBleHBpcmF0aW9uIH0gPSB7fSB9ID0gc3NvUmVzcDtcbiAgaWYgKCFhY2Nlc3NLZXlJZCB8fCAhc2VjcmV0QWNjZXNzS2V5IHx8ICFzZXNzaW9uVG9rZW4gfHwgIWV4cGlyYXRpb24pIHtcbiAgICB0aHJvdyBuZXcgQ3JlZGVudGlhbHNQcm92aWRlckVycm9yKFwiU1NPIHJldHVybnMgYW4gaW52YWxpZCB0ZW1wb3JhcnkgY3JlZGVudGlhbC5cIiwgU0hPVUxEX0ZBSUxfQ1JFREVOVElBTF9DSEFJTik7XG4gIH1cbiAgcmV0dXJuIHsgYWNjZXNzS2V5SWQsIHNlY3JldEFjY2Vzc0tleSwgc2Vzc2lvblRva2VuLCBleHBpcmF0aW9uOiBuZXcgRGF0ZShleHBpcmF0aW9uKSB9O1xufTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTc29Qcm9maWxlIGV4dGVuZHMgUHJvZmlsZSB7XG4gIHNzb19zdGFydF91cmw6IHN0cmluZztcbiAgc3NvX2FjY291bnRfaWQ6IHN0cmluZztcbiAgc3NvX3JlZ2lvbjogc3RyaW5nO1xuICBzc29fcm9sZV9uYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVNzb1Byb2ZpbGUgPSAocHJvZmlsZTogUGFydGlhbDxTc29Qcm9maWxlPik6IFNzb1Byb2ZpbGUgPT4ge1xuICBjb25zdCB7IHNzb19zdGFydF91cmwsIHNzb19hY2NvdW50X2lkLCBzc29fcmVnaW9uLCBzc29fcm9sZV9uYW1lIH0gPSBwcm9maWxlO1xuICBpZiAoIXNzb19zdGFydF91cmwgfHwgIXNzb19hY2NvdW50X2lkIHx8ICFzc29fcmVnaW9uIHx8ICFzc29fcm9sZV9uYW1lKSB7XG4gICAgdGhyb3cgbmV3IENyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihcbiAgICAgIGBQcm9maWxlIGlzIGNvbmZpZ3VyZWQgd2l0aCBpbnZhbGlkIFNTTyBjcmVkZW50aWFscy4gUmVxdWlyZWQgcGFyYW1ldGVycyBcInNzb19hY2NvdW50X2lkXCIsIFwic3NvX3JlZ2lvblwiLCBgICtcbiAgICAgICAgYFwic3NvX3JvbGVfbmFtZVwiLCBcInNzb19zdGFydF91cmxcIi4gR290ICR7T2JqZWN0LmtleXMocHJvZmlsZSkuam9pbihcbiAgICAgICAgICBcIiwgXCJcbiAgICAgICAgKX1cXG5SZWZlcmVuY2U6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbGkvbGF0ZXN0L3VzZXJndWlkZS9jbGktY29uZmlndXJlLXNzby5odG1sYCxcbiAgICAgIFNIT1VMRF9GQUlMX0NSRURFTlRJQUxfQ0hBSU5cbiAgICApO1xuICB9XG4gIHJldHVybiBwcm9maWxlIGFzIFNzb1Byb2ZpbGU7XG59O1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgaXNTc29Qcm9maWxlID0gKGFyZzogUHJvZmlsZSk6IGFyZyBpcyBQYXJ0aWFsPFNzb1Byb2ZpbGU+ID0+XG4gIGFyZyAmJlxuICAodHlwZW9mIGFyZy5zc29fc3RhcnRfdXJsID09PSBcInN0cmluZ1wiIHx8XG4gICAgdHlwZW9mIGFyZy5zc29fYWNjb3VudF9pZCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIHR5cGVvZiBhcmcuc3NvX3JlZ2lvbiA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIHR5cGVvZiBhcmcuc3NvX3JvbGVfbmFtZSA9PT0gXCJzdHJpbmdcIik7XG4iXX0=
@@ -1 +0,0 @@
1
- {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../types/dist/types/abort.d.ts","../../types/dist/types/logger.d.ts","../../types/dist/types/http.d.ts","../../types/dist/types/response.d.ts","../../types/dist/types/util.d.ts","../../types/dist/types/middleware.d.ts","../../types/dist/types/command.d.ts","../../types/dist/types/client.d.ts","../../types/dist/types/credentials.d.ts","../../types/dist/types/crypto.d.ts","../../types/dist/types/eventStream.d.ts","../../types/dist/types/pagination.d.ts","../../types/dist/types/transfer.d.ts","../../types/dist/types/serde.d.ts","../../types/dist/types/shapes.d.ts","../../types/dist/types/signature.d.ts","../../types/dist/types/waiter.d.ts","../../types/dist/types/index.d.ts","../../../clients/client-sso/dist/types/models/models_0.d.ts","../../smithy-client/dist/types/client.d.ts","../../smithy-client/dist/types/command.d.ts","../../smithy-client/dist/types/emitWarningIfUnsupportedVersion.d.ts","../../smithy-client/dist/types/extended-encode-uri-component.d.ts","../../smithy-client/dist/types/get-array-if-single-item.d.ts","../../smithy-client/dist/types/get-value-from-text-node.d.ts","../../smithy-client/dist/types/lazy-json.d.ts","../../smithy-client/dist/types/parse-utils.d.ts","../../smithy-client/dist/types/ser-utils.d.ts","../../smithy-client/dist/types/date-utils.d.ts","../../smithy-client/dist/types/split-every.d.ts","../../smithy-client/dist/types/constants.d.ts","../../smithy-client/dist/types/index.d.ts","../../../clients/client-sso/dist/types/commands/GetRoleCredentialsCommand.d.ts","../../../clients/client-sso/dist/types/commands/ListAccountRolesCommand.d.ts","../../../clients/client-sso/dist/types/commands/ListAccountsCommand.d.ts","../../../clients/client-sso/dist/types/commands/LogoutCommand.d.ts","../../config-resolver/dist/types/endpointsConfig/resolveEndpointsConfig.d.ts","../../config-resolver/dist/types/endpointsConfig/resolveCustomEndpointsConfig.d.ts","../../config-resolver/dist/types/endpointsConfig/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/ts3.6/base.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/base.d.ts","../node_modules/@types/node/index.d.ts","../../node-config-provider/dist/types/fromEnv.d.ts","../../shared-ini-file-loader/dist/types/index.d.ts","../../node-config-provider/dist/types/fromSharedConfigFiles.d.ts","../../node-config-provider/dist/types/fromStatic.d.ts","../../node-config-provider/dist/types/configLoader.d.ts","../../node-config-provider/dist/types/index.d.ts","../../config-resolver/dist/types/regionConfig/config.d.ts","../../config-resolver/dist/types/regionConfig/resolveRegionConfig.d.ts","../../config-resolver/dist/types/regionConfig/index.d.ts","../../config-resolver/dist/types/regionInfo/getResolvedPartition.d.ts","../../config-resolver/dist/types/regionInfo/getHostnameTemplate.d.ts","../../config-resolver/dist/types/regionInfo/getResolvedHostname.d.ts","../../config-resolver/dist/types/regionInfo/getRegionInfo.d.ts","../../config-resolver/dist/types/regionInfo/index.d.ts","../../config-resolver/dist/types/index.d.ts","../../middleware-host-header/dist/types/index.d.ts","../../middleware-retry/dist/types/configurations.d.ts","../../middleware-retry/dist/types/retryMiddleware.d.ts","../../middleware-retry/dist/types/omitRetryHeadersMiddleware.d.ts","../../middleware-retry/dist/types/types.d.ts","../../middleware-retry/dist/types/StandardRetryStrategy.d.ts","../../middleware-retry/dist/types/AdaptiveRetryStrategy.d.ts","../../middleware-retry/dist/types/config.d.ts","../../middleware-retry/dist/types/delayDecider.d.ts","../../middleware-retry/dist/types/DefaultRateLimiter.d.ts","../../middleware-retry/dist/types/retryDecider.d.ts","../../middleware-retry/dist/types/index.d.ts","../../middleware-user-agent/dist/types/configurations.d.ts","../../middleware-user-agent/dist/types/user-agent-middleware.d.ts","../../middleware-user-agent/dist/types/index.d.ts","../../protocol-http/dist/types/httpResponse.d.ts","../../protocol-http/dist/types/httpRequest.d.ts","../../protocol-http/dist/types/httpHandler.d.ts","../../protocol-http/dist/types/isValidHostname.d.ts","../../protocol-http/dist/types/index.d.ts","../../../clients/client-sso/dist/types/SSOClient.d.ts","../../../clients/client-sso/dist/types/SSO.d.ts","../../../clients/client-sso/dist/types/pagination/Interfaces.d.ts","../../../clients/client-sso/dist/types/pagination/ListAccountRolesPaginator.d.ts","../../../clients/client-sso/dist/types/pagination/ListAccountsPaginator.d.ts","../../../clients/client-sso/dist/types/models/index.d.ts","../../../clients/client-sso/dist/types/index.d.ts","../../property-provider/dist/types/chain.d.ts","../../property-provider/dist/types/fromStatic.d.ts","../../property-provider/dist/types/memoize.d.ts","../../property-provider/dist/types/ProviderError.d.ts","../../property-provider/dist/types/index.d.ts","../../util-credentials/dist/types/index.d.ts","../src/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-as-promised/index.d.ts","../../../node_modules/@types/fs-extra/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts","../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},"12f4cfe2fe60b810c3174537bc2ddb20c1067b7768643d12cb1266fd183afb75","4f1034eac6404cb69bedb8bb04cf246871d1aaebbb99d5617be54f54323464c7","724eb35fdcfa2ad686611b3a8a9d704ad0d478539a8cf0089176e0b8047f7190","d71be3ec7ca8cf9aaf6a8b68653dd3b7d988678edc120a640fc0307967486cc5","2e04271499caec54dea75e7061de06b2549efbe1d652b9bdab2f74fd2572f61f","40b990c27c58cf6d4473c9cdc65daf0428cbfca5cf4b072c73a4ad5a4055ea7f","0b2fe702dda65d25d5e00ec95fc8952036e7e75870c376abeb2cd2150b0a3bed","a9367ec48d3b67800c69c890e616337935df67caad5bff99383949af561042a8","5c1a8d6754a7cceee2135728e8ce6a4f984966a2d16ff1cbed879f7527d55864","a99add785a8a06f19582501ca19e92949f6b840b3f91d880e73582c5efacccde","5a7bb8afd0a22b7754275793f5ca5aeea379a2aad6153a6d68af49a60a899f69","a604c1ae24a48ccdb36396f49a20677d32722f8fd461dfb47186a5b12fd88d60","259c58ced9d80f66a61362a8768529a2746a2bc80183cdb04726f610913bb5d5","b14456a54e15ce24ff9e5ad3b70675b104a36eb35886e3ffaae614292c0908c4","ed01aa50ff4fdbf0f6857596fc385587d87da4896c7980ea75527e098031c488","9e5aef3efc63316ce7aa61b137d354449f792ab92885d03c8894b239db75d90a","8a6c15bfa2a0a9e68005a53fb71b60f3769af0da81001b95e4861310e260b788","aaffeca0d82a3d862c5186af3ca707801e45cc8b2e7d31e430eb715648ffa839","aedcac717f286d9925f0c52aa6165f4e91a2ed05ad9c1e2a8cc91eca18b8eb2b","6044e522ef755f186ec3e2e98cdb08abd8ed20a8b69e0ab500dbf0bea583e225","57b4808f1dbe3293850788ae24e6038a1018ece7a2a7e9ff6dd15a89a7db2878","2bb082ffba536b1b02ef29ab5d3e85475e07a36ad320445ab67771f086637009","101f51dddd02f4b6d6f0dfb9d23ac9ec106af7a0ff8023153fcfb5fac333e883","4ad326182c068487341311ac12c6a277f313a59914aefcc08beba6c49f2e6ff7","6543bbb0268634d506ba2390a8b2a572995133fff298c05f148d45b278395ec8","df63fd6feffe490dec868b47b8c5685aa3d67f6a38b0fee06041b18055c721aa","70c3f7d09710189ff7e62207efc405b2adde761f445e918f6fd65c744cac977a","a171ae4321e9267df3a86b743576a1ab59e35b5fa4e008be1a424c8301a34971","293481b9fbfc2f288c229e2c2a20e1714551635fd40fbcc73a3a11dcc7c4bbcd","5ee9c8269d8ed13f7ec399ba3944b0801c27a746fd8cc501a1490a3ace81bed2","b2e699380412968cc77a4a5887ec890aecb06d31ca74a83dbb29c4d538d6f8b8","f0dba83012330de335b3ce5dfd1dba0d7659969c7c71e512e9cdbc5e8089ecfb","367ab9552c23e79dd4d7ffc88fed41d5219f43fe2facd6f705fdfebf2a951c54","b208a01f1983f7d3f51fd3a5030e4491a92bde563511a433a90b149541b415b2","dcd42ed36667ccfff08910caf9e87c4d68eddd667fd2f6ca2dac7d5e7965ebf8","a849968636f1a3ccc263ef3a0462cbd98a2ccb037d7f1ae0c35ede596c47bfc8","ce241cb98c52c877efd0c95cecef20c60c7d4e291f7d3442bbd07ba285e775f6","f493b452821381a5028927fc4640bf7175304918f6a3799f2db13598b13df797","bca6a6dbd9b812c78412c99cdf95b1efeaf0a11a8bc7d1377b5975004b3c7461","3cd9e96ac529d35558eaeb6e719f1ce5d02418a88c9c38e4a15e43b7b1795957",{"version":"fb928b21f5a16a1d64a8e2e74a3f389ace89da74820f070f893221213c50aa3c","affectsGlobalScope":true},"28693f9faf04685464c86683696587e65798fea6c12d9131eae4eaf49a0e5ac7","fe892fea1e75a442fffb4a604d7eeb451e858787a9f2f01c4e83bf12a3b5048d","d5c80b931928fbd06f967ce4bdca24fbb37523773ac2c7c87458a689154351fb","fcd718b2feb2820a9844536a1a2fbc77a3da90820e02894d40f879a789f46560","525c8fc510d9632d2a0a9de2d41c3ac1cdd79ff44d3b45c6d81cacabb683528d","ece75b9bfc916f9ccc4e8a9ddee1dda5c987804fbe3b60a01fc120fae731c2ce","4e146a0b69c893ae1538aff8b76f4e8796755bdd45050a83099348d59863437e","a1dc9cfe8be39cbcef62692510b450ab35553ef39382715c88763d0c477704a9","05e732266b5a36789fd9eb846b1f45fec1b6e318b740e3f20fc22fd95f9ebf31","985c3d1b62a4a4f563e3ca3e3a47717cff7d82c81883d62ecf08d8417eb477c4","8059976d7f408e08be353de1833172139bbaa70fc33d01b98249f7226c122119","1733741cf2adc5926ac58c66004268cdc3d34b2ff6250f5114db14253ea02ce1","df18df925483862e8ff216d7b17e50b7311a3add2fb7feb128d321ec099352ca","b6b09f944889a23f19eba6e0f112030e55160c5e1a225012ab2349c582ba5595","152af7c23ec219f632afa2d861abc65993f56cd39a4f3a4018515dbc05950a74","3a0bdc4c5b6f84a1abb5356d7a7fa1f96ac6c5b5646eec3ef2b33c1ed095e155","03394bf8deb8781b490ae9266a843fbdf00647947d79e25fcbf1d89a9e9c8a66","56a15cc211894d79aa44cbb46c276bfd3f10458a61bff2dec99114db8a7e71e3","1a5366b0d4d0153955fd85777c72d35979dabc0537649da6eade09007c0d080a","61c84c3b0eb6e60196d15ae5e21793a1d4241c547f0bdd0529ffae838d1a073c","272522db288a7e03f14ff930407b776357082efce20369ea42239a57af9c7f81","3a8848a9c307429b861402cc69bc472ffe0c05b86474fc158723169161e16389","3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c","8969e0b4d22ca77ad011c8fc4a25ec5d515bdfae4ecbd22608ed0d5c38829c1e","b2fe368abdc803b82d27bd27f168d106804422ade198c3c085e2519b195ebd26","0811662f95fabfc05b8f1cefcc46b351092cfc7d2a3e849475c51e2578c5c485","8e2f9031210a8fc27af8844bf69f964307d6013c90336bea9fb5d6ba43248c78","17e157df6125098a1a34eb4d201ee4ac03bbe97e471ab5627bb2c40fce555948","b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9","4bdb7b15b3f9a3ee0b856c7b991d0e522f8ce92f7b66ae8ac00e61d1269dd10a","978aecd2e6bc2ac094e9a35eda98ff8586713857b3655e7c98ca5ed8f7d50662","a185b8e0d7a4ae078a79339d63e98177813aac39256f69f788eaf5c360aa756f","c6b71a0585467900820167370738cfc256e9635471725a7ba1d24a3a262984e5","8bf10278b5c28698a73f800fde911bcc33d405a15f7bddab1c4ade637b69a822","e880a08fbb0d9ee2f733f9183f4d1bdb75bc9e0e64060a8a1fc30540791fcded","3cb4cbade80dde6e045b01d34582625ea45fc2f1080085ef671cefbc9c75625d","69fc4a10650eff3416ba5c2f7ce71744734928a7135ebe5a63c61d2d03ca3ec3","13918848c4e07d1094164112bd7fd151d61cbb949ceef340a2a4595cd609afb6","9af6a9de7bd818e68c4236f20027ff4b19387c2269a6952945d1a716c177cc4d","3497438242251378cf232f36a7fabac70e7bd8229d68dac8955534e63ffc8ff4","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","f6f04f1c31ff0314a67d7911e49a60e76cd5fc4e50c6374e506cb85916fadec9","559c8c6979e9c6d649b26a0f56f0b6f1080606a0e8ea537a0099537c6b10584c","3b1c4e120e1050d6a4203fcdd82b561d9ce6cbf45d48d3837450a7b78919fd59","667c77aa756d8e4547eb170ccc0f2cb39852130c94eb299491b45008210ae681","126c87faf0c84b1326c3863ce2235b6a47dc2e548c3aba754c2d3eed16d7eee8","a63605647d8d06e31298d7e04ede8e4775f9b10c51955de611e7207681a39012","a11288edc8161f664148ea7d56101517e380335f5fa1a94408db86efce025bba","38890097ed1f7a144f3843c8389225402880fad2b0bbc261b0009e08451e3e5e","21513a939f7cb6141fdb40c643528dadc8cbe93edc342fc10b3e228c6911300a","66df455ab2faa0297870ec4892d1d30a1f4dd2d916a71c31fedfc048bb6a46d3","d22e6756ec3c1ce55b6ba2ba54ae0610b7d46a51c601887660ecfdf44845424c","e6171ec1abda5b8a1aacb0b11cc2aae20defd7860802da3199ce3e5e4a7193a2","3b75249520fef906d8ec7419e4963ee0a06e7526942d646f6af446fb90d28c2b","25446a2b096fe31b9f5f6323e38261fef88642d321a974206a8ed7082858bb88","ae7ea88994031e3b13f4e2da866fba44d4d1fab01cdfa7a2e1e359b626d03f63","3112732f672f111fb27a25e6f91e3244e4d2ba9fef0d78047af0f1962c1e5cf5","81880ef56f25ebe21bc424e58bcf26115c88ade92622712255db482e83fb857b","ebfb2377dfe2619b3ee174c50f3c2bd5992afe514196ae729e4036978167073f","cb5d1d79d134a5f61da67c4d391684fb470c0f09863ed72f3c634ae94b734b24","c9f3acafe93d87730f0eee0420fc3bad8ef81b39ddbfbf0cbfea203421d15daa","4fb207ffb1e31e797fc3624ff1b2d2e5d735bed27159569422d0c55d5b9d7e63","00fd710328ea09b37be5a89915c41f2441f510eb7a654493fdf192fa326a7934","81231616be6296afa6a0ef42d5d4b1d97cb12d03da179977ca53729b8067590e","2ed55bebe5bd77bd9e833ee2a0ea3bd8e7f13912664970ca33576125b512518f","603bafdacee4c8850ef5820f8642a817a3f0db6f76dda0474bcf3d17c2e15398","3d73c0cceb85500f58a68fd612960de3fc02e29584a922d47fb90b25c545f59a","07fcb44ddde9ffcfe9513d738af55897cd600aa0a36f53ba07aa8b62aff18d68","bebde2395e4df666e2fc3cb3cc47d0a4b0d4c7e6f6a97e6d2a8f73a412173783","9a4632f4a3f753b6b79f2b44d80d941309f9ddfff00768897a5e1c9d96cdfefe","5159ebb099bc8c5e9a3e7f359614cfcb6f835fb865623ceba91ccc8cbc36fab7","82b4045609dc0918319f835de4f6cb6a931fd729602292921c443a732a6bb811","dd5bab97b9f2d5dec2796fa4ff1b6db7221dfc9158f4e81cf9bcef8750dc32ba","f10a176bcf3a0320f5137c6fc1da2d9b7347f8e2852a0ca5802a0ea9aac2df4c","1c33a2766d210aa58703a1fb9d51c0c49fb0f98495974847870f2f090df9e52a","d1f8a829c5e90734bb47a1d1941b8819aeee6e81a2a772c3c0f70b30e3693fa9","413cb528dd3ba14550e9c10c3f87190aeb9a2359d4a2538972648ee285356af6","6d54a622d4ede64095ef08f25c29d2f8946951fc28bd15b9408565dbe751b2ca","06e4d774922f68091761d1d5a42a569376e3f7b609eeb3b54aee22bacf503c92","a8b3c45dba774273478aeaedb1c25891fa74fa707806c8319f3e746f0a05e21c","cbda08cd8374854391c70b066c8aadc302504e00b3b15cfe9a6669ae354288f7","5a597b787d6cdf8a116f8fd98d6709e2cc56746013cdb1bb96498772c18ca5fa","72be668a833df00839fc3be968c1f38e0503e7c867de89f2128bcc2883d90aee","a480528f0871137987f12ce33e3dbb46d4846c9753633b79aef067828226d19d","a3029364fbf331c54806d3f24e69d887a10d989cdb4bd193885b1688a056b17b","7dd23729f34b341955a93a9f8915d5f55dc8dd826596f742d1d8a4ca474dbd76","7294496754a110fd2075f4e2bd4f059fbef142389c9f640e35b3426c3e39c59b","c93e21853ec2b085569d057f71ea8f319f11047fc916392efe6aa85c9ec356a7","90f7ac30a5896d2e40fa155fa1a0e766ed1c77bac71a5cb5bdd815d44b45b4a3","3e711bd2d7affeb0aea4f71dd486fa5becbec65482a41bd30bef3d091b5964e0","d43c002a1f10458c1e1c54e991f49c2bfad8285fd53b5931bb2ad021bfcfdb33","b668b7fb7c52a05fb9233a27ba5099a73cd8e157b037d67399336635495ab483","b25c5f2970d06c729f464c0aeaa64b1a5b5f1355aa93554bb5f9c199b8624b1e","069733dc220affbe58d9c1d1a93af3707bc515aaed761701d8741b57da4cb964","3051751533eee92572241b3cef28333212401408c4e7aa21718714b793c0f4ed","691aea9772797ca98334eb743e7686e29325b02c6931391bcee4cc7bf27a9f3b","6f1d39d26959517da3bd105c552eded4c34702705c64d75b03f54d864b6e41c2",{"version":"e9cf450600c496a87ab96d288157b79be6c193e8623bd93553d5d64755940dea","affectsGlobalScope":true},{"version":"c8a2f72f046b5efb790cc37cfe79dcf11ce8e35e7e7d9430e10e53e0aa05c7a2","affectsGlobalScope":true},"5171627120eeb3a7e8afb8ed04ea9be7f0b53ba09bb1fc95172483e0fbb0740c","95c22bc19835e28e2e524a4bb8898eb5f2107b640d7279a6d3aade261916bbf2","393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"ce2169125f42515a26fa60977b6d56ae407f3462e28832fbf6a9013f6a828bab","affectsGlobalScope":true},"0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","08b428a44bc98005536a12456518797e9afe2a08e8b5d9785641713a54475881","c6c4fea9acc55d5e38ff2b70d57ab0b5cdbd08f8bc5d7a226e322cea128c5b57","96b49a9de749afcf92b5bce1d8cc42cfae6816cdf5ea36584fd9256b8b2e5292","3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f","5a2a25feca554a8f289ed62114771b8c63d89f2b58325e2f8b7043e4e0160d11","3845d3b64286c12c60d39fc90ac1cc5e47cbc951530658d2567d578b2faa1f26"],"options":{"declaration":true,"declarationDir":"./types","downlevelIteration":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSourceMap":true,"inlineSources":true,"module":1,"noEmitHelpers":true,"noFallthroughCasesInSwitch":true,"noUnusedParameters":false,"outDir":"./cjs","preserveConstEnums":true,"removeComments":false,"rootDir":"../src","sourceMap":false,"strict":true,"target":5},"fileIdsList":[[47,62,63,64,65,147],[47,61,62,63,64,65,126,127,138,141,146],[47,48,61,147],[62,63,64,65,147,148,149,150,151,152],[48],[47],[47,147,148],[47,63,149],[47,64,149],[161],[161,162,163,164,165],[161,163],[167],[81,111],[80,111,170],[173],[174],[180,182],[191],[80,96,111],[176,177],[176,177,178,179],[181],[66,67],[47,66],[68,120,125],[117],[118,119],[121],[47,121,123],[47,121,122],[124],[108,109],[80,87,96],[72,80,87],[96],[78,80,87],[80],[80,96,102],[80,87,96,102],[80,81,82,87,96,99,102],[80,82,99,102],[108,110],[78,80,96],[70],[80,96],[94,103,105],[76,78,87,96],[69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107],[87],[93],[29,47,76,81,89,113,153,158,159],[47,131,132],[131],[47,131],[47,117],[128,129,130,131,132,133,134,135,136,137],[47,128],[139,140],[47,139],[47,112,114,115],[47,111],[47,113],[116],[154,155,156,157],[47,142,143],[142,143,144,145],[47,49,50,51,52,53,54,55,56,57,58,59,60],[33,35,36],[33,35],[34],[32,33,35],[30],[30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],[31,34],[37],[32,34,42],[33],[32],[113]],"referencedMap":[[148,1],[147,2],[62,3],[63,3],[64,3],[65,3],[153,4],[152,5],[48,6],[149,7],[150,8],[151,9],[163,10],[166,11],[162,10],[164,12],[165,10],[168,13],[169,14],[171,15],[172,14],[174,16],[175,17],[183,18],[192,19],[193,20],[178,21],[180,22],[179,21],[182,23],[68,24],[67,25],[66,6],[126,26],[118,27],[120,28],[119,6],[122,29],[124,30],[123,31],[125,32],[110,33],[72,34],[73,35],[76,36],[77,37],[79,38],[80,38],[81,39],[82,40],[83,41],[84,42],[111,43],[85,38],[87,44],[90,45],[94,46],[95,47],[96,38],[99,48],[108,49],[101,50],[102,51],[106,46],[107,36],[160,52],[127,6],[133,53],[136,54],[132,55],[128,56],[138,57],[130,6],[137,6],[129,58],[131,6],[139,6],[141,59],[140,60],[116,61],[112,62],[114,63],[115,6],[117,64],[154,6],[155,6],[158,65],[156,6],[144,66],[143,6],[142,6],[146,67],[49,6],[50,6],[61,68],[37,69],[36,70],[38,71],[40,72],[32,73],[47,74],[35,75],[41,76],[43,77],[44,78],[45,79],[34,72],[46,73],[159,80]],"exportedModulesMap":[[148,1],[147,2],[62,3],[63,3],[64,3],[65,3],[153,4],[152,5],[48,6],[149,7],[150,8],[151,9],[163,10],[166,11],[162,10],[164,12],[165,10],[168,13],[169,14],[171,15],[172,14],[174,16],[175,17],[183,18],[192,19],[193,20],[178,21],[180,22],[179,21],[182,23],[68,24],[67,25],[66,6],[126,26],[118,27],[120,28],[119,6],[122,29],[124,30],[123,31],[125,32],[110,33],[72,34],[73,35],[76,36],[77,37],[79,38],[80,38],[81,39],[82,40],[83,41],[84,42],[111,43],[85,38],[87,44],[90,45],[94,46],[95,47],[96,38],[99,48],[108,49],[101,50],[102,51],[106,46],[107,36],[160,52],[127,6],[133,53],[136,54],[132,55],[128,56],[138,57],[130,6],[137,6],[129,58],[131,6],[139,6],[141,59],[140,60],[116,61],[112,62],[114,63],[115,6],[117,64],[154,6],[155,6],[158,65],[156,6],[144,66],[143,6],[142,6],[146,67],[49,6],[50,6],[61,68],[37,69],[36,70],[38,71],[40,72],[32,73],[47,74],[35,75],[41,76],[43,77],[44,78],[45,79],[34,72],[46,73],[159,80]],"semanticDiagnosticsPerFile":[148,147,62,63,64,65,153,152,48,149,150,151,163,161,166,162,164,165,168,167,169,171,172,173,174,175,183,184,170,185,186,187,188,189,190,191,192,193,176,178,180,179,177,182,181,29,6,8,7,2,9,10,11,12,13,14,15,16,3,4,20,17,18,19,21,22,23,5,24,25,26,27,1,28,68,67,66,126,118,120,119,122,124,123,121,125,109,70,110,71,72,73,74,75,76,77,78,79,80,81,69,82,83,84,111,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,108,101,102,103,104,105,106,107,160,127,133,136,132,134,128,135,138,130,137,129,131,139,141,140,116,112,114,115,117,157,154,155,158,156,144,143,142,146,145,113,49,50,60,58,51,52,53,54,61,55,56,57,59,30,37,36,38,39,40,32,47,31,35,41,33,43,44,45,42,34,46,159]},"version":"4.3.5"}
@@ -1 +0,0 @@
1
- {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../types/dist/types/abort.d.ts","../../types/dist/types/logger.d.ts","../../types/dist/types/http.d.ts","../../types/dist/types/response.d.ts","../../types/dist/types/util.d.ts","../../types/dist/types/middleware.d.ts","../../types/dist/types/command.d.ts","../../types/dist/types/client.d.ts","../../types/dist/types/credentials.d.ts","../../types/dist/types/crypto.d.ts","../../types/dist/types/eventStream.d.ts","../../types/dist/types/pagination.d.ts","../../types/dist/types/transfer.d.ts","../../types/dist/types/serde.d.ts","../../types/dist/types/shapes.d.ts","../../types/dist/types/signature.d.ts","../../types/dist/types/waiter.d.ts","../../types/dist/types/index.d.ts","../../../clients/client-sso/dist/types/models/models_0.d.ts","../../smithy-client/dist/types/client.d.ts","../../smithy-client/dist/types/command.d.ts","../../smithy-client/dist/types/emitWarningIfUnsupportedVersion.d.ts","../../smithy-client/dist/types/extended-encode-uri-component.d.ts","../../smithy-client/dist/types/get-array-if-single-item.d.ts","../../smithy-client/dist/types/get-value-from-text-node.d.ts","../../smithy-client/dist/types/lazy-json.d.ts","../../smithy-client/dist/types/parse-utils.d.ts","../../smithy-client/dist/types/ser-utils.d.ts","../../smithy-client/dist/types/date-utils.d.ts","../../smithy-client/dist/types/split-every.d.ts","../../smithy-client/dist/types/constants.d.ts","../../smithy-client/dist/types/index.d.ts","../../../clients/client-sso/dist/types/commands/GetRoleCredentialsCommand.d.ts","../../../clients/client-sso/dist/types/commands/ListAccountRolesCommand.d.ts","../../../clients/client-sso/dist/types/commands/ListAccountsCommand.d.ts","../../../clients/client-sso/dist/types/commands/LogoutCommand.d.ts","../../config-resolver/dist/types/endpointsConfig/resolveEndpointsConfig.d.ts","../../config-resolver/dist/types/endpointsConfig/resolveCustomEndpointsConfig.d.ts","../../config-resolver/dist/types/endpointsConfig/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/ts3.6/base.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/base.d.ts","../node_modules/@types/node/index.d.ts","../../node-config-provider/dist/types/fromEnv.d.ts","../../shared-ini-file-loader/dist/types/index.d.ts","../../node-config-provider/dist/types/fromSharedConfigFiles.d.ts","../../node-config-provider/dist/types/fromStatic.d.ts","../../node-config-provider/dist/types/configLoader.d.ts","../../node-config-provider/dist/types/index.d.ts","../../config-resolver/dist/types/regionConfig/config.d.ts","../../config-resolver/dist/types/regionConfig/resolveRegionConfig.d.ts","../../config-resolver/dist/types/regionConfig/index.d.ts","../../config-resolver/dist/types/regionInfo/getResolvedPartition.d.ts","../../config-resolver/dist/types/regionInfo/getHostnameTemplate.d.ts","../../config-resolver/dist/types/regionInfo/getResolvedHostname.d.ts","../../config-resolver/dist/types/regionInfo/getRegionInfo.d.ts","../../config-resolver/dist/types/regionInfo/index.d.ts","../../config-resolver/dist/types/index.d.ts","../../middleware-host-header/dist/types/index.d.ts","../../middleware-retry/dist/types/configurations.d.ts","../../middleware-retry/dist/types/retryMiddleware.d.ts","../../middleware-retry/dist/types/omitRetryHeadersMiddleware.d.ts","../../middleware-retry/dist/types/types.d.ts","../../middleware-retry/dist/types/StandardRetryStrategy.d.ts","../../middleware-retry/dist/types/AdaptiveRetryStrategy.d.ts","../../middleware-retry/dist/types/config.d.ts","../../middleware-retry/dist/types/delayDecider.d.ts","../../middleware-retry/dist/types/DefaultRateLimiter.d.ts","../../middleware-retry/dist/types/retryDecider.d.ts","../../middleware-retry/dist/types/index.d.ts","../../middleware-user-agent/dist/types/configurations.d.ts","../../middleware-user-agent/dist/types/user-agent-middleware.d.ts","../../middleware-user-agent/dist/types/index.d.ts","../../protocol-http/dist/types/httpResponse.d.ts","../../protocol-http/dist/types/httpRequest.d.ts","../../protocol-http/dist/types/httpHandler.d.ts","../../protocol-http/dist/types/isValidHostname.d.ts","../../protocol-http/dist/types/index.d.ts","../../../clients/client-sso/dist/types/SSOClient.d.ts","../../../clients/client-sso/dist/types/SSO.d.ts","../../../clients/client-sso/dist/types/pagination/Interfaces.d.ts","../../../clients/client-sso/dist/types/pagination/ListAccountRolesPaginator.d.ts","../../../clients/client-sso/dist/types/pagination/ListAccountsPaginator.d.ts","../../../clients/client-sso/dist/types/models/index.d.ts","../../../clients/client-sso/dist/types/index.d.ts","../../property-provider/dist/types/chain.d.ts","../../property-provider/dist/types/fromStatic.d.ts","../../property-provider/dist/types/memoize.d.ts","../../property-provider/dist/types/ProviderError.d.ts","../../property-provider/dist/types/index.d.ts","../../util-credentials/dist/types/index.d.ts","../src/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-as-promised/index.d.ts","../../../node_modules/@types/fs-extra/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts","../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},"12f4cfe2fe60b810c3174537bc2ddb20c1067b7768643d12cb1266fd183afb75","4f1034eac6404cb69bedb8bb04cf246871d1aaebbb99d5617be54f54323464c7","724eb35fdcfa2ad686611b3a8a9d704ad0d478539a8cf0089176e0b8047f7190","d71be3ec7ca8cf9aaf6a8b68653dd3b7d988678edc120a640fc0307967486cc5","2e04271499caec54dea75e7061de06b2549efbe1d652b9bdab2f74fd2572f61f","40b990c27c58cf6d4473c9cdc65daf0428cbfca5cf4b072c73a4ad5a4055ea7f","0b2fe702dda65d25d5e00ec95fc8952036e7e75870c376abeb2cd2150b0a3bed","a9367ec48d3b67800c69c890e616337935df67caad5bff99383949af561042a8","5c1a8d6754a7cceee2135728e8ce6a4f984966a2d16ff1cbed879f7527d55864","a99add785a8a06f19582501ca19e92949f6b840b3f91d880e73582c5efacccde","5a7bb8afd0a22b7754275793f5ca5aeea379a2aad6153a6d68af49a60a899f69","a604c1ae24a48ccdb36396f49a20677d32722f8fd461dfb47186a5b12fd88d60","259c58ced9d80f66a61362a8768529a2746a2bc80183cdb04726f610913bb5d5","b14456a54e15ce24ff9e5ad3b70675b104a36eb35886e3ffaae614292c0908c4","ed01aa50ff4fdbf0f6857596fc385587d87da4896c7980ea75527e098031c488","9e5aef3efc63316ce7aa61b137d354449f792ab92885d03c8894b239db75d90a","8a6c15bfa2a0a9e68005a53fb71b60f3769af0da81001b95e4861310e260b788","aaffeca0d82a3d862c5186af3ca707801e45cc8b2e7d31e430eb715648ffa839","aedcac717f286d9925f0c52aa6165f4e91a2ed05ad9c1e2a8cc91eca18b8eb2b","6044e522ef755f186ec3e2e98cdb08abd8ed20a8b69e0ab500dbf0bea583e225","57b4808f1dbe3293850788ae24e6038a1018ece7a2a7e9ff6dd15a89a7db2878","2bb082ffba536b1b02ef29ab5d3e85475e07a36ad320445ab67771f086637009","101f51dddd02f4b6d6f0dfb9d23ac9ec106af7a0ff8023153fcfb5fac333e883","4ad326182c068487341311ac12c6a277f313a59914aefcc08beba6c49f2e6ff7","6543bbb0268634d506ba2390a8b2a572995133fff298c05f148d45b278395ec8","df63fd6feffe490dec868b47b8c5685aa3d67f6a38b0fee06041b18055c721aa","70c3f7d09710189ff7e62207efc405b2adde761f445e918f6fd65c744cac977a","a171ae4321e9267df3a86b743576a1ab59e35b5fa4e008be1a424c8301a34971","293481b9fbfc2f288c229e2c2a20e1714551635fd40fbcc73a3a11dcc7c4bbcd","5ee9c8269d8ed13f7ec399ba3944b0801c27a746fd8cc501a1490a3ace81bed2","b2e699380412968cc77a4a5887ec890aecb06d31ca74a83dbb29c4d538d6f8b8","f0dba83012330de335b3ce5dfd1dba0d7659969c7c71e512e9cdbc5e8089ecfb","367ab9552c23e79dd4d7ffc88fed41d5219f43fe2facd6f705fdfebf2a951c54","b208a01f1983f7d3f51fd3a5030e4491a92bde563511a433a90b149541b415b2","dcd42ed36667ccfff08910caf9e87c4d68eddd667fd2f6ca2dac7d5e7965ebf8","a849968636f1a3ccc263ef3a0462cbd98a2ccb037d7f1ae0c35ede596c47bfc8","ce241cb98c52c877efd0c95cecef20c60c7d4e291f7d3442bbd07ba285e775f6","f493b452821381a5028927fc4640bf7175304918f6a3799f2db13598b13df797","bca6a6dbd9b812c78412c99cdf95b1efeaf0a11a8bc7d1377b5975004b3c7461","3cd9e96ac529d35558eaeb6e719f1ce5d02418a88c9c38e4a15e43b7b1795957",{"version":"fb928b21f5a16a1d64a8e2e74a3f389ace89da74820f070f893221213c50aa3c","affectsGlobalScope":true},"28693f9faf04685464c86683696587e65798fea6c12d9131eae4eaf49a0e5ac7","fe892fea1e75a442fffb4a604d7eeb451e858787a9f2f01c4e83bf12a3b5048d","d5c80b931928fbd06f967ce4bdca24fbb37523773ac2c7c87458a689154351fb","fcd718b2feb2820a9844536a1a2fbc77a3da90820e02894d40f879a789f46560","525c8fc510d9632d2a0a9de2d41c3ac1cdd79ff44d3b45c6d81cacabb683528d","ece75b9bfc916f9ccc4e8a9ddee1dda5c987804fbe3b60a01fc120fae731c2ce","4e146a0b69c893ae1538aff8b76f4e8796755bdd45050a83099348d59863437e","a1dc9cfe8be39cbcef62692510b450ab35553ef39382715c88763d0c477704a9","05e732266b5a36789fd9eb846b1f45fec1b6e318b740e3f20fc22fd95f9ebf31","985c3d1b62a4a4f563e3ca3e3a47717cff7d82c81883d62ecf08d8417eb477c4","8059976d7f408e08be353de1833172139bbaa70fc33d01b98249f7226c122119","1733741cf2adc5926ac58c66004268cdc3d34b2ff6250f5114db14253ea02ce1","df18df925483862e8ff216d7b17e50b7311a3add2fb7feb128d321ec099352ca","b6b09f944889a23f19eba6e0f112030e55160c5e1a225012ab2349c582ba5595","152af7c23ec219f632afa2d861abc65993f56cd39a4f3a4018515dbc05950a74","3a0bdc4c5b6f84a1abb5356d7a7fa1f96ac6c5b5646eec3ef2b33c1ed095e155","03394bf8deb8781b490ae9266a843fbdf00647947d79e25fcbf1d89a9e9c8a66","56a15cc211894d79aa44cbb46c276bfd3f10458a61bff2dec99114db8a7e71e3","1a5366b0d4d0153955fd85777c72d35979dabc0537649da6eade09007c0d080a","61c84c3b0eb6e60196d15ae5e21793a1d4241c547f0bdd0529ffae838d1a073c","272522db288a7e03f14ff930407b776357082efce20369ea42239a57af9c7f81","3a8848a9c307429b861402cc69bc472ffe0c05b86474fc158723169161e16389","3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c","8969e0b4d22ca77ad011c8fc4a25ec5d515bdfae4ecbd22608ed0d5c38829c1e","b2fe368abdc803b82d27bd27f168d106804422ade198c3c085e2519b195ebd26","0811662f95fabfc05b8f1cefcc46b351092cfc7d2a3e849475c51e2578c5c485","8e2f9031210a8fc27af8844bf69f964307d6013c90336bea9fb5d6ba43248c78","17e157df6125098a1a34eb4d201ee4ac03bbe97e471ab5627bb2c40fce555948","b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9","4bdb7b15b3f9a3ee0b856c7b991d0e522f8ce92f7b66ae8ac00e61d1269dd10a","978aecd2e6bc2ac094e9a35eda98ff8586713857b3655e7c98ca5ed8f7d50662","a185b8e0d7a4ae078a79339d63e98177813aac39256f69f788eaf5c360aa756f","c6b71a0585467900820167370738cfc256e9635471725a7ba1d24a3a262984e5","8bf10278b5c28698a73f800fde911bcc33d405a15f7bddab1c4ade637b69a822","e880a08fbb0d9ee2f733f9183f4d1bdb75bc9e0e64060a8a1fc30540791fcded","3cb4cbade80dde6e045b01d34582625ea45fc2f1080085ef671cefbc9c75625d","69fc4a10650eff3416ba5c2f7ce71744734928a7135ebe5a63c61d2d03ca3ec3","13918848c4e07d1094164112bd7fd151d61cbb949ceef340a2a4595cd609afb6","9af6a9de7bd818e68c4236f20027ff4b19387c2269a6952945d1a716c177cc4d","3497438242251378cf232f36a7fabac70e7bd8229d68dac8955534e63ffc8ff4","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","f6f04f1c31ff0314a67d7911e49a60e76cd5fc4e50c6374e506cb85916fadec9","559c8c6979e9c6d649b26a0f56f0b6f1080606a0e8ea537a0099537c6b10584c","3b1c4e120e1050d6a4203fcdd82b561d9ce6cbf45d48d3837450a7b78919fd59","667c77aa756d8e4547eb170ccc0f2cb39852130c94eb299491b45008210ae681","126c87faf0c84b1326c3863ce2235b6a47dc2e548c3aba754c2d3eed16d7eee8","a63605647d8d06e31298d7e04ede8e4775f9b10c51955de611e7207681a39012","a11288edc8161f664148ea7d56101517e380335f5fa1a94408db86efce025bba","38890097ed1f7a144f3843c8389225402880fad2b0bbc261b0009e08451e3e5e","21513a939f7cb6141fdb40c643528dadc8cbe93edc342fc10b3e228c6911300a","66df455ab2faa0297870ec4892d1d30a1f4dd2d916a71c31fedfc048bb6a46d3","d22e6756ec3c1ce55b6ba2ba54ae0610b7d46a51c601887660ecfdf44845424c","e6171ec1abda5b8a1aacb0b11cc2aae20defd7860802da3199ce3e5e4a7193a2","3b75249520fef906d8ec7419e4963ee0a06e7526942d646f6af446fb90d28c2b","25446a2b096fe31b9f5f6323e38261fef88642d321a974206a8ed7082858bb88","ae7ea88994031e3b13f4e2da866fba44d4d1fab01cdfa7a2e1e359b626d03f63","3112732f672f111fb27a25e6f91e3244e4d2ba9fef0d78047af0f1962c1e5cf5","81880ef56f25ebe21bc424e58bcf26115c88ade92622712255db482e83fb857b","ebfb2377dfe2619b3ee174c50f3c2bd5992afe514196ae729e4036978167073f","cb5d1d79d134a5f61da67c4d391684fb470c0f09863ed72f3c634ae94b734b24","c9f3acafe93d87730f0eee0420fc3bad8ef81b39ddbfbf0cbfea203421d15daa","4fb207ffb1e31e797fc3624ff1b2d2e5d735bed27159569422d0c55d5b9d7e63","00fd710328ea09b37be5a89915c41f2441f510eb7a654493fdf192fa326a7934","81231616be6296afa6a0ef42d5d4b1d97cb12d03da179977ca53729b8067590e","2ed55bebe5bd77bd9e833ee2a0ea3bd8e7f13912664970ca33576125b512518f","603bafdacee4c8850ef5820f8642a817a3f0db6f76dda0474bcf3d17c2e15398","3d73c0cceb85500f58a68fd612960de3fc02e29584a922d47fb90b25c545f59a","07fcb44ddde9ffcfe9513d738af55897cd600aa0a36f53ba07aa8b62aff18d68","bebde2395e4df666e2fc3cb3cc47d0a4b0d4c7e6f6a97e6d2a8f73a412173783","9a4632f4a3f753b6b79f2b44d80d941309f9ddfff00768897a5e1c9d96cdfefe","5159ebb099bc8c5e9a3e7f359614cfcb6f835fb865623ceba91ccc8cbc36fab7","82b4045609dc0918319f835de4f6cb6a931fd729602292921c443a732a6bb811","dd5bab97b9f2d5dec2796fa4ff1b6db7221dfc9158f4e81cf9bcef8750dc32ba","f10a176bcf3a0320f5137c6fc1da2d9b7347f8e2852a0ca5802a0ea9aac2df4c","1c33a2766d210aa58703a1fb9d51c0c49fb0f98495974847870f2f090df9e52a","d1f8a829c5e90734bb47a1d1941b8819aeee6e81a2a772c3c0f70b30e3693fa9","413cb528dd3ba14550e9c10c3f87190aeb9a2359d4a2538972648ee285356af6","6d54a622d4ede64095ef08f25c29d2f8946951fc28bd15b9408565dbe751b2ca","06e4d774922f68091761d1d5a42a569376e3f7b609eeb3b54aee22bacf503c92","a8b3c45dba774273478aeaedb1c25891fa74fa707806c8319f3e746f0a05e21c","cbda08cd8374854391c70b066c8aadc302504e00b3b15cfe9a6669ae354288f7","5a597b787d6cdf8a116f8fd98d6709e2cc56746013cdb1bb96498772c18ca5fa","72be668a833df00839fc3be968c1f38e0503e7c867de89f2128bcc2883d90aee","a480528f0871137987f12ce33e3dbb46d4846c9753633b79aef067828226d19d","a3029364fbf331c54806d3f24e69d887a10d989cdb4bd193885b1688a056b17b","7dd23729f34b341955a93a9f8915d5f55dc8dd826596f742d1d8a4ca474dbd76","7294496754a110fd2075f4e2bd4f059fbef142389c9f640e35b3426c3e39c59b","c93e21853ec2b085569d057f71ea8f319f11047fc916392efe6aa85c9ec356a7","90f7ac30a5896d2e40fa155fa1a0e766ed1c77bac71a5cb5bdd815d44b45b4a3","3e711bd2d7affeb0aea4f71dd486fa5becbec65482a41bd30bef3d091b5964e0","d43c002a1f10458c1e1c54e991f49c2bfad8285fd53b5931bb2ad021bfcfdb33","b668b7fb7c52a05fb9233a27ba5099a73cd8e157b037d67399336635495ab483","b25c5f2970d06c729f464c0aeaa64b1a5b5f1355aa93554bb5f9c199b8624b1e","069733dc220affbe58d9c1d1a93af3707bc515aaed761701d8741b57da4cb964","3051751533eee92572241b3cef28333212401408c4e7aa21718714b793c0f4ed","691aea9772797ca98334eb743e7686e29325b02c6931391bcee4cc7bf27a9f3b","6f1d39d26959517da3bd105c552eded4c34702705c64d75b03f54d864b6e41c2",{"version":"e9cf450600c496a87ab96d288157b79be6c193e8623bd93553d5d64755940dea","affectsGlobalScope":true},{"version":"c8a2f72f046b5efb790cc37cfe79dcf11ce8e35e7e7d9430e10e53e0aa05c7a2","affectsGlobalScope":true},"5171627120eeb3a7e8afb8ed04ea9be7f0b53ba09bb1fc95172483e0fbb0740c","95c22bc19835e28e2e524a4bb8898eb5f2107b640d7279a6d3aade261916bbf2","393137c76bd922ba70a2f8bf1ade4f59a16171a02fb25918c168d48875b0cfb0","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"ce2169125f42515a26fa60977b6d56ae407f3462e28832fbf6a9013f6a828bab","affectsGlobalScope":true},"0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","08b428a44bc98005536a12456518797e9afe2a08e8b5d9785641713a54475881","c6c4fea9acc55d5e38ff2b70d57ab0b5cdbd08f8bc5d7a226e322cea128c5b57","96b49a9de749afcf92b5bce1d8cc42cfae6816cdf5ea36584fd9256b8b2e5292","3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f","5a2a25feca554a8f289ed62114771b8c63d89f2b58325e2f8b7043e4e0160d11","3845d3b64286c12c60d39fc90ac1cc5e47cbc951530658d2567d578b2faa1f26"],"options":{"declaration":true,"declarationDir":"./types","downlevelIteration":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSourceMap":true,"inlineSources":true,"module":99,"noEmitHelpers":true,"noFallthroughCasesInSwitch":true,"noUnusedParameters":false,"outDir":"./es","preserveConstEnums":true,"removeComments":false,"rootDir":"../src","sourceMap":false,"strict":true,"target":1},"fileIdsList":[[46,61,62,63,64,146],[46,60,61,62,63,64,125,126,137,140,145],[46,47,60,146],[61,62,63,64,146,147,148,149,150,151],[47],[46],[46,146,147],[46,62,148],[46,63,148],[160],[160,161,162,163,164],[160,162],[166],[80,110],[79,110,169],[172],[173],[179,181],[190],[79,95,110],[175,176],[175,176,177,178],[180],[65,66],[46,65],[67,119,124],[116],[117,118],[120],[46,120,122],[46,120,121],[123],[107,108],[79,86,95],[71,79,86],[95],[77,79,86],[79],[79,95,101],[79,86,95,101],[79,80,81,86,95,98,101],[79,81,98,101],[107,109],[77,79,95],[69],[79,95],[93,102,104],[75,77,86,95],[68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106],[86],[92],[28,46,75,80,88,112,152,157,158],[46,130,131],[130],[46,130],[46,116],[127,128,129,130,131,132,133,134,135,136],[46,127],[138,139],[46,138],[46,111,113,114],[46,110],[46,112],[115],[153,154,155,156],[46,141,142],[141,142,143,144],[46,48,49,50,51,52,53,54,55,56,57,58,59],[32,34,35],[32,34],[33],[31,32,34],[29],[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],[30,33],[36],[31,33,41],[32],[31],[112]],"referencedMap":[[147,1],[146,2],[61,3],[62,3],[63,3],[64,3],[152,4],[151,5],[47,6],[148,7],[149,8],[150,9],[162,10],[165,11],[161,10],[163,12],[164,10],[167,13],[168,14],[170,15],[171,14],[173,16],[174,17],[182,18],[191,19],[192,20],[177,21],[179,22],[178,21],[181,23],[67,24],[66,25],[65,6],[125,26],[117,27],[119,28],[118,6],[121,29],[123,30],[122,31],[124,32],[109,33],[71,34],[72,35],[75,36],[76,37],[78,38],[79,38],[80,39],[81,40],[82,41],[83,42],[110,43],[84,38],[86,44],[89,45],[93,46],[94,47],[95,38],[98,48],[107,49],[100,50],[101,51],[105,46],[106,36],[159,52],[126,6],[132,53],[135,54],[131,55],[127,56],[137,57],[129,6],[136,6],[128,58],[130,6],[138,6],[140,59],[139,60],[115,61],[111,62],[113,63],[114,6],[116,64],[153,6],[154,6],[157,65],[155,6],[143,66],[142,6],[141,6],[145,67],[48,6],[49,6],[60,68],[36,69],[35,70],[37,71],[39,72],[31,73],[46,74],[34,75],[40,76],[42,77],[43,78],[44,79],[33,72],[45,73],[158,80]],"exportedModulesMap":[[147,1],[146,2],[61,3],[62,3],[63,3],[64,3],[152,4],[151,5],[47,6],[148,7],[149,8],[150,9],[162,10],[165,11],[161,10],[163,12],[164,10],[167,13],[168,14],[170,15],[171,14],[173,16],[174,17],[182,18],[191,19],[192,20],[177,21],[179,22],[178,21],[181,23],[67,24],[66,25],[65,6],[125,26],[117,27],[119,28],[118,6],[121,29],[123,30],[122,31],[124,32],[109,33],[71,34],[72,35],[75,36],[76,37],[78,38],[79,38],[80,39],[81,40],[82,41],[83,42],[110,43],[84,38],[86,44],[89,45],[93,46],[94,47],[95,38],[98,48],[107,49],[100,50],[101,51],[105,46],[106,36],[159,52],[126,6],[132,53],[135,54],[131,55],[127,56],[137,57],[129,6],[136,6],[128,58],[130,6],[138,6],[140,59],[139,60],[115,61],[111,62],[113,63],[114,6],[116,64],[153,6],[154,6],[157,65],[155,6],[143,66],[142,6],[141,6],[145,67],[48,6],[49,6],[60,68],[36,69],[35,70],[37,71],[39,72],[31,73],[46,74],[34,75],[40,76],[42,77],[43,78],[44,79],[33,72],[45,73],[158,80]],"semanticDiagnosticsPerFile":[147,146,61,62,63,64,152,151,47,148,149,150,162,160,165,161,163,164,167,166,168,170,171,172,173,174,182,183,169,184,185,186,187,188,189,190,191,192,175,177,179,178,176,181,180,28,7,6,2,8,9,10,11,12,13,14,15,3,4,19,16,17,18,20,21,22,5,23,24,25,26,1,27,67,66,65,125,117,119,118,121,123,122,120,124,108,69,109,70,71,72,73,74,75,76,77,78,79,80,68,81,82,83,110,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,107,100,101,102,103,104,105,106,159,126,132,135,131,133,127,134,137,129,136,128,130,138,140,139,115,111,113,114,116,156,153,154,157,155,143,142,141,145,144,112,48,49,59,57,50,51,52,53,60,54,55,56,58,29,36,35,37,38,39,31,46,30,34,40,32,42,43,44,41,33,45,158]},"version":"4.3.5"}
package/jest.config.js DELETED
@@ -1,5 +0,0 @@
1
- const base = require("../../jest.config.base.js");
2
-
3
- module.exports = {
4
- ...base,
5
- };
package/src/index.spec.ts DELETED
@@ -1,267 +0,0 @@
1
- jest.useFakeTimers("modern");
2
- const now = 1613699814645;
3
- jest.setSystemTime(now);
4
-
5
- const mockParseKnownFiles = jest.fn();
6
- const mockGetMasterProfileName = jest.fn();
7
- jest.mock("@aws-sdk/util-credentials", () => ({
8
- parseKnownFiles: mockParseKnownFiles,
9
- getMasterProfileName: mockGetMasterProfileName,
10
- }));
11
-
12
- const mockReadFileSync = jest.fn();
13
- jest.mock("fs", () => ({ readFileSync: mockReadFileSync }));
14
-
15
- const mockRoleCredentials = {
16
- roleCredentials: {
17
- accessKeyId: "key",
18
- secretAccessKey: "secret",
19
- sessionToken: "token",
20
- expiration: Date.now(),
21
- },
22
- };
23
- const mockSSOSend = jest.fn().mockReturnValue(Promise.resolve(mockRoleCredentials));
24
- const mockGetRoleCredentialsCommand = jest.fn();
25
- jest.mock("@aws-sdk/client-sso", () => ({
26
- SSOClient: function () {
27
- return { send: mockSSOSend };
28
- },
29
- GetRoleCredentialsCommand: mockGetRoleCredentialsCommand,
30
- }));
31
-
32
- import { EXPIRE_WINDOW_MS, fromSSO } from "./index";
33
-
34
- const toRFC3339String = (date: number): string => {
35
- const timestamp = new Date(date).toISOString();
36
- return timestamp.replace(/\.[\d]+Z$/, "Z");
37
- };
38
-
39
- describe("fromSSO()", () => {
40
- const ssoStartUrl = "https:some-url/start";
41
- const ssoAccountId = "1234567890";
42
- const ssoRegion = "us-foo-1";
43
- const ssoRoleName = "some-role";
44
- const token = {
45
- startUrl: ssoStartUrl,
46
- region: ssoRegion,
47
- accessToken: "base64 encoded string",
48
- expiresAt: toRFC3339String(now + 60 * 60 * 1000),
49
- };
50
-
51
- beforeEach(() => {
52
- mockParseKnownFiles.mockClear();
53
- mockGetMasterProfileName.mockClear();
54
- mockReadFileSync.mockClear();
55
- mockSSOSend.mockClear();
56
- });
57
-
58
- describe("load from shared config file", () => {
59
- const ssoConfig = {
60
- sso_start_url: ssoStartUrl,
61
- sso_account_id: ssoAccountId,
62
- sso_region: ssoRegion,
63
- sso_role_name: ssoRoleName,
64
- };
65
-
66
- it("should fetch credentials from resolved token file", async () => {
67
- mockParseKnownFiles.mockReturnValue(Promise.resolve({ default: ssoConfig }));
68
- mockGetMasterProfileName.mockReturnValue("default");
69
- mockReadFileSync.mockReturnValue(JSON.stringify(token));
70
- const { roleCredentials } = mockRoleCredentials;
71
- expect(await fromSSO()()).toEqual({ ...roleCredentials, expiration: new Date(roleCredentials.expiration) });
72
- expect(mockReadFileSync.mock.calls[0][0]).toEqual(
73
- expect.stringMatching(/fcab95d6966151d97d9ee7776a90d895b5e5fbe6.json$/)
74
- );
75
- expect(mockReadFileSync.mock.calls[0][1]).toMatchObject({ encoding: "utf-8" });
76
- expect(mockGetRoleCredentialsCommand).toHaveBeenCalledWith({
77
- accountId: ssoConfig.sso_account_id,
78
- roleName: ssoConfig.sso_role_name,
79
- accessToken: token.accessToken,
80
- });
81
- });
82
-
83
- it("should allow supplying custom client", async () => {
84
- mockParseKnownFiles.mockReturnValue(Promise.resolve({ default: ssoConfig }));
85
- mockGetMasterProfileName.mockReturnValue("default");
86
- mockReadFileSync.mockReturnValue(JSON.stringify(token));
87
- const newSSOClient = { send: jest.fn().mockReturnValue(Promise.resolve(mockRoleCredentials)) };
88
- //@ts-expect-error
89
- await fromSSO({ ssoClient: newSSOClient })();
90
- expect(newSSOClient.send).toHaveBeenCalled();
91
- expect(mockSSOSend).not.toHaveBeenCalled();
92
- });
93
-
94
- it("should throw if profile doesn't exist in the config files", () => {
95
- const profile = "exist";
96
- mockParseKnownFiles.mockReturnValue(Promise.resolve({ non_exist: { foo: "bar" } }));
97
- mockGetMasterProfileName.mockReturnValue(profile);
98
- return expect(async () => {
99
- await fromSSO()();
100
- }).rejects.toMatchObject({
101
- name: "CredentialsProviderError",
102
- message: expect.stringContaining("Profile exist is not configured with SSO credentials"),
103
- tryNextLink: true,
104
- });
105
- });
106
-
107
- it("should throw if profile is not configured with SSO credential", () => {
108
- const profile = "exist";
109
- mockParseKnownFiles.mockReturnValue(Promise.resolve({ [profile]: { foo: "bar" } }));
110
- mockGetMasterProfileName.mockReturnValue(profile);
111
- return expect(async () => {
112
- await fromSSO()();
113
- }).rejects.toMatchObject({
114
- message: `Profile ${profile} is not configured with SSO credentials.`,
115
- tryNextLink: true,
116
- });
117
- });
118
-
119
- it.each(Object.keys(ssoConfig))("should throw if sso configuration is missing %s", async (keyToRemove) => {
120
- expect.assertions(2);
121
- const config = { ...ssoConfig };
122
- //@ts-ignore
123
- delete config[keyToRemove];
124
- mockParseKnownFiles.mockReturnValue(Promise.resolve({ default: config }));
125
- mockGetMasterProfileName.mockReturnValue("default");
126
- try {
127
- await fromSSO()();
128
- } catch (e) {
129
- expect(e.message).toContain("Profile is configured with invalid SSO credentials.");
130
- expect(e.tryNextLink).toBeFalsy();
131
- }
132
- });
133
-
134
- it("should throw if token cache file is not found", async () => {
135
- expect.assertions(2);
136
- mockReadFileSync.mockImplementation(() => {
137
- throw new Error("File not found.");
138
- });
139
- mockParseKnownFiles.mockReturnValue(Promise.resolve({ default: ssoConfig }));
140
- mockGetMasterProfileName.mockReturnValue("default");
141
- try {
142
- await fromSSO()();
143
- } catch (e) {
144
- expect(e.message).toContain(
145
- "The SSO session associated with this profile has expired or is otherwise invalid."
146
- );
147
- expect(e.tryNextLink).toBeFalsy();
148
- }
149
- });
150
-
151
- it("should throw if token cache file is invalid", async () => {
152
- expect.assertions(2);
153
- mockReadFileSync.mockReturnValue("invalid JSON content");
154
- mockParseKnownFiles.mockReturnValue(Promise.resolve({ default: ssoConfig }));
155
- mockGetMasterProfileName.mockReturnValue("default");
156
- try {
157
- await fromSSO()();
158
- } catch (e) {
159
- expect(e.message).toContain(
160
- "The SSO session associated with this profile has expired or is otherwise invalid."
161
- );
162
- expect(e.tryNextLink).toBeFalsy();
163
- }
164
- });
165
-
166
- it("should throw if token cache is expired", async () => {
167
- expect.assertions(2);
168
- mockReadFileSync.mockReturnValue({ ...token, expiration: toRFC3339String(now + EXPIRE_WINDOW_MS - 2) });
169
- mockParseKnownFiles.mockReturnValue(Promise.resolve({ default: ssoConfig }));
170
- mockGetMasterProfileName.mockReturnValue("default");
171
- try {
172
- await fromSSO()();
173
- } catch (e) {
174
- expect(e.message).toContain(
175
- "The SSO session associated with this profile has expired or is otherwise invalid."
176
- );
177
- expect(e.tryNextLink).toBeFalsy();
178
- }
179
- });
180
-
181
- it("should throw if SSO client throws", async () => {
182
- expect.assertions(3);
183
- mockParseKnownFiles.mockReturnValue(Promise.resolve({ default: ssoConfig }));
184
- mockGetMasterProfileName.mockReturnValue("default");
185
- mockReadFileSync.mockReturnValue(JSON.stringify(token));
186
- const clientError = new Error("No account is found for the user");
187
- //@ts-ignore
188
- clientError.$fault = "client";
189
- mockSSOSend.mockImplementation(async () => {
190
- throw clientError;
191
- });
192
- try {
193
- await fromSSO()();
194
- } catch (e) {
195
- expect(e.message).toContain(clientError.message);
196
- expect(e.tryNextLink).toBeFalsy();
197
- expect(e.$fault).toBe("client");
198
- }
199
- });
200
-
201
- it("should throw if credentials from SSO client is invalid", async () => {
202
- expect.assertions(2);
203
- mockReadFileSync.mockReturnValue(JSON.stringify(token));
204
- mockParseKnownFiles.mockReturnValue(Promise.resolve({ default: ssoConfig }));
205
- mockGetMasterProfileName.mockReturnValue("default");
206
- mockSSOSend.mockResolvedValue({
207
- roleCredentials: { ...mockRoleCredentials.roleCredentials, accessKeyId: undefined },
208
- });
209
- try {
210
- await fromSSO()();
211
- } catch (e) {
212
- expect(e.message).toContain("SSO returns an invalid temporary credential.");
213
- expect(e.tryNextLink).toBeFalsy();
214
- } finally {
215
- mockSSOSend.mockResolvedValue(mockRoleCredentials);
216
- }
217
- });
218
- });
219
-
220
- describe("load with sso parameters", () => {
221
- it("should fetch credentials from resolved token file without reading shared config file", async () => {
222
- mockParseKnownFiles.mockRejectedValue("Should not call parseKnownFiles()");
223
- mockGetMasterProfileName.mockRejectedValue("Should not call getMasterProfileName()");
224
- mockReadFileSync.mockReturnValue(JSON.stringify(token));
225
- const { roleCredentials } = mockRoleCredentials;
226
- expect(
227
- await fromSSO({
228
- ssoStartUrl,
229
- ssoAccountId,
230
- ssoRegion,
231
- ssoRoleName,
232
- })()
233
- ).toEqual({ ...roleCredentials, expiration: new Date(roleCredentials.expiration) });
234
- expect(mockReadFileSync.mock.calls[0][0]).toEqual(
235
- expect.stringMatching(/fcab95d6966151d97d9ee7776a90d895b5e5fbe6.json$/)
236
- );
237
- expect(mockReadFileSync.mock.calls[0][1]).toMatchObject({ encoding: "utf-8" });
238
- expect(mockGetRoleCredentialsCommand).toHaveBeenCalledWith({
239
- accountId: ssoAccountId,
240
- roleName: ssoRoleName,
241
- accessToken: token.accessToken,
242
- });
243
- });
244
-
245
- it.each(["ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"])(
246
- "should throw for incomplete sso parameters(missing %s)",
247
- (undefinedKey) => {
248
- mockParseKnownFiles.mockRejectedValue("Should not call parseKnownFiles()");
249
- mockGetMasterProfileName.mockRejectedValue("Should not call getMasterProfileName()");
250
- mockReadFileSync.mockReturnValue(JSON.stringify(token));
251
- return expect(
252
- async () =>
253
- await fromSSO({
254
- ssoStartUrl,
255
- ssoAccountId,
256
- ssoRegion,
257
- ssoRoleName,
258
- ...{ [undefinedKey]: undefined },
259
- } as any)()
260
- ).rejects.toMatchObject({
261
- name: "CredentialsProviderError",
262
- message: expect.stringMatching("Incomplete configuration"),
263
- });
264
- }
265
- );
266
- });
267
- });
package/src/index.ts DELETED
@@ -1,170 +0,0 @@
1
- import { GetRoleCredentialsCommand, GetRoleCredentialsCommandOutput, SSOClient } from "@aws-sdk/client-sso";
2
- import { CredentialsProviderError } from "@aws-sdk/property-provider";
3
- import { getHomeDir, Profile } from "@aws-sdk/shared-ini-file-loader";
4
- import { CredentialProvider, Credentials } from "@aws-sdk/types";
5
- import { getMasterProfileName, parseKnownFiles, SourceProfileInit } from "@aws-sdk/util-credentials";
6
- import { createHash } from "crypto";
7
- import { readFileSync } from "fs";
8
- import { join } from "path";
9
-
10
- /**
11
- * The time window (15 mins) that SDK will treat the SSO token expires in before the defined expiration date in token.
12
- * This is needed because server side may have invalidated the token before the defined expiration date.
13
- *
14
- * @internal
15
- */
16
- export const EXPIRE_WINDOW_MS = 15 * 60 * 1000;
17
-
18
- const SHOULD_FAIL_CREDENTIAL_CHAIN = false;
19
-
20
- /**
21
- * Cached SSO token retrieved from SSO login flow.
22
- */
23
- interface SSOToken {
24
- // A base64 encoded string returned by the sso-oidc service.
25
- accessToken: string;
26
- // RFC3339 format timestamp
27
- expiresAt: string;
28
- region?: string;
29
- startUrl?: string;
30
- }
31
-
32
- export interface SsoCredentialsParameters {
33
- /**
34
- * The URL to the AWS SSO service.
35
- */
36
- ssoStartUrl: string;
37
-
38
- /**
39
- * The ID of the AWS account to use for temporary credentials.
40
- */
41
- ssoAccountId: string;
42
-
43
- /**
44
- * The AWS region to use for temporary credentials.
45
- */
46
- ssoRegion: string;
47
-
48
- /**
49
- * The name of the AWS role to assume.
50
- */
51
- ssoRoleName: string;
52
- }
53
- export interface FromSSOInit extends SourceProfileInit {
54
- ssoClient?: SSOClient;
55
- }
56
-
57
- /**
58
- * Creates a credential provider that will read from a credential_process specified
59
- * in ini files.
60
- */
61
- export const fromSSO =
62
- (init: FromSSOInit & Partial<SsoCredentialsParameters> = {} as any): CredentialProvider =>
63
- async () => {
64
- const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient } = init;
65
- if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName) {
66
- // Load the SSO config from shared AWS config file.
67
- const profiles = await parseKnownFiles(init);
68
- const profileName = getMasterProfileName(init);
69
- const profile = profiles[profileName];
70
- if (!isSsoProfile(profile)) {
71
- throw new CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`);
72
- }
73
- const { sso_start_url, sso_account_id, sso_region, sso_role_name } = validateSsoProfile(profile);
74
- return resolveSSOCredentials({
75
- ssoStartUrl: sso_start_url,
76
- ssoAccountId: sso_account_id,
77
- ssoRegion: sso_region,
78
- ssoRoleName: sso_role_name,
79
- ssoClient: ssoClient,
80
- });
81
- } else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {
82
- throw new CredentialsProviderError(
83
- 'Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl",' +
84
- ' "ssoAccountId", "ssoRegion", "ssoRoleName"'
85
- );
86
- } else {
87
- return resolveSSOCredentials({ ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient });
88
- }
89
- };
90
-
91
- const resolveSSOCredentials = async ({
92
- ssoStartUrl,
93
- ssoAccountId,
94
- ssoRegion,
95
- ssoRoleName,
96
- ssoClient,
97
- }: FromSSOInit & SsoCredentialsParameters): Promise<Credentials> => {
98
- const hasher = createHash("sha1");
99
- const cacheName = hasher.update(ssoStartUrl).digest("hex");
100
- const tokenFile = join(getHomeDir(), ".aws", "sso", "cache", `${cacheName}.json`);
101
- let token: SSOToken;
102
- try {
103
- token = JSON.parse(readFileSync(tokenFile, { encoding: "utf-8" }));
104
- if (new Date(token.expiresAt).getTime() - Date.now() <= EXPIRE_WINDOW_MS) {
105
- throw new Error("SSO token is expired.");
106
- }
107
- } catch (e) {
108
- throw new CredentialsProviderError(
109
- `The SSO session associated with this profile has expired or is otherwise invalid. To refresh this SSO session ` +
110
- `run aws sso login with the corresponding profile.`,
111
- SHOULD_FAIL_CREDENTIAL_CHAIN
112
- );
113
- }
114
- const { accessToken } = token;
115
- const sso = ssoClient || new SSOClient({ region: ssoRegion });
116
- let ssoResp: GetRoleCredentialsCommandOutput;
117
- try {
118
- ssoResp = await sso.send(
119
- new GetRoleCredentialsCommand({
120
- accountId: ssoAccountId,
121
- roleName: ssoRoleName,
122
- accessToken,
123
- })
124
- );
125
- } catch (e) {
126
- throw CredentialsProviderError.from(e, SHOULD_FAIL_CREDENTIAL_CHAIN);
127
- }
128
- const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration } = {} } = ssoResp;
129
- if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {
130
- throw new CredentialsProviderError("SSO returns an invalid temporary credential.", SHOULD_FAIL_CREDENTIAL_CHAIN);
131
- }
132
- return { accessKeyId, secretAccessKey, sessionToken, expiration: new Date(expiration) };
133
- };
134
-
135
- /**
136
- * @internal
137
- */
138
- export interface SsoProfile extends Profile {
139
- sso_start_url: string;
140
- sso_account_id: string;
141
- sso_region: string;
142
- sso_role_name: string;
143
- }
144
-
145
- /**
146
- * @internal
147
- */
148
- export const validateSsoProfile = (profile: Partial<SsoProfile>): SsoProfile => {
149
- const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;
150
- if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {
151
- throw new CredentialsProviderError(
152
- `Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", "sso_region", ` +
153
- `"sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(
154
- ", "
155
- )}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`,
156
- SHOULD_FAIL_CREDENTIAL_CHAIN
157
- );
158
- }
159
- return profile as SsoProfile;
160
- };
161
-
162
- /**
163
- * @internal
164
- */
165
- export const isSsoProfile = (arg: Profile): arg is Partial<SsoProfile> =>
166
- arg &&
167
- (typeof arg.sso_start_url === "string" ||
168
- typeof arg.sso_account_id === "string" ||
169
- typeof arg.sso_region === "string" ||
170
- typeof arg.sso_role_name === "string");
package/tsconfig.cjs.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "declarationDir": "./dist/types",
4
- "rootDir": "./src",
5
- "outDir": "./dist/cjs",
6
- "baseUrl": "."
7
- },
8
- "extends": "../../tsconfig.cjs.json",
9
- "include": ["src/"]
10
- }
package/tsconfig.es.json DELETED
@@ -1,11 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "lib": ["es5", "es2015.promise", "es2015.collection"],
4
- "declarationDir": "./dist/types",
5
- "rootDir": "./src",
6
- "outDir": "./dist/es",
7
- "baseUrl": "."
8
- },
9
- "extends": "../../tsconfig.es.json",
10
- "include": ["src/"]
11
- }