@aws-sdk/token-providers 3.901.0 → 3.906.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.
Files changed (2) hide show
  1. package/dist-cjs/index.js +147 -222
  2. package/package.json +3 -3
package/dist-cjs/index.js CHANGED
@@ -1,237 +1,162 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
- var __export = (target, all) => {
10
- for (var name in all)
11
- __defProp(target, name, { get: all[name], enumerable: true });
12
- };
13
- var __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from === "object" || typeof from === "function") {
15
- for (let key of __getOwnPropNames(from))
16
- if (!__hasOwnProp.call(to, key) && key !== except)
17
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
- }
19
- return to;
1
+ 'use strict';
2
+
3
+ var client = require('@aws-sdk/core/client');
4
+ var httpAuthSchemes = require('@aws-sdk/core/httpAuthSchemes');
5
+ var propertyProvider = require('@smithy/property-provider');
6
+ var sharedIniFileLoader = require('@smithy/shared-ini-file-loader');
7
+ var fs = require('fs');
8
+
9
+ const fromEnvSigningName = ({ logger, signingName } = {}) => async () => {
10
+ logger?.debug?.("@aws-sdk/token-providers - fromEnvSigningName");
11
+ if (!signingName) {
12
+ throw new propertyProvider.TokenProviderError("Please pass 'signingName' to compute environment variable key", { logger });
13
+ }
14
+ const bearerTokenKey = httpAuthSchemes.getBearerTokenEnvKey(signingName);
15
+ if (!(bearerTokenKey in process.env)) {
16
+ throw new propertyProvider.TokenProviderError(`Token not present in '${bearerTokenKey}' environment variable`, { logger });
17
+ }
18
+ const token = { token: process.env[bearerTokenKey] };
19
+ client.setTokenFeature(token, "BEARER_SERVICE_ENV_VARS", "3");
20
+ return token;
20
21
  };
21
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
- // If the importer is in node compatibility mode or this is not an ESM
23
- // file that has been converted to a CommonJS file using a Babel-
24
- // compatible transform (i.e. "__esModule" has not been set), then set
25
- // "default" to the CommonJS "module.exports" for node compatibility.
26
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
- mod
28
- ));
29
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
-
31
- // src/index.ts
32
- var index_exports = {};
33
- __export(index_exports, {
34
- fromEnvSigningName: () => fromEnvSigningName,
35
- fromSso: () => fromSso,
36
- fromStatic: () => fromStatic,
37
- nodeProvider: () => nodeProvider
38
- });
39
- module.exports = __toCommonJS(index_exports);
40
-
41
- // src/fromEnvSigningName.ts
42
- var import_client = require("@aws-sdk/core/client");
43
- var import_httpAuthSchemes = require("@aws-sdk/core/httpAuthSchemes");
44
- var import_property_provider = require("@smithy/property-provider");
45
- var fromEnvSigningName = /* @__PURE__ */ __name(({ logger, signingName } = {}) => async () => {
46
- logger?.debug?.("@aws-sdk/token-providers - fromEnvSigningName");
47
- if (!signingName) {
48
- throw new import_property_provider.TokenProviderError("Please pass 'signingName' to compute environment variable key", { logger });
49
- }
50
- const bearerTokenKey = (0, import_httpAuthSchemes.getBearerTokenEnvKey)(signingName);
51
- if (!(bearerTokenKey in process.env)) {
52
- throw new import_property_provider.TokenProviderError(`Token not present in '${bearerTokenKey}' environment variable`, { logger });
53
- }
54
- const token = { token: process.env[bearerTokenKey] };
55
- (0, import_client.setTokenFeature)(token, "BEARER_SERVICE_ENV_VARS", "3");
56
- return token;
57
- }, "fromEnvSigningName");
58
-
59
- // src/fromSso.ts
60
-
61
-
62
-
63
- // src/constants.ts
64
- var EXPIRE_WINDOW_MS = 5 * 60 * 1e3;
65
- var REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`;
66
22
 
67
- // src/getSsoOidcClient.ts
68
- var getSsoOidcClient = /* @__PURE__ */ __name(async (ssoRegion, init = {}) => {
69
- const { SSOOIDCClient } = await Promise.resolve().then(() => __toESM(require("@aws-sdk/nested-clients/sso-oidc")));
70
- const ssoOidcClient = new SSOOIDCClient(
71
- Object.assign({}, init.clientConfig ?? {}, {
72
- region: ssoRegion ?? init.clientConfig?.region,
73
- logger: init.clientConfig?.logger ?? init.parentClientConfig?.logger
74
- })
75
- );
76
- return ssoOidcClient;
77
- }, "getSsoOidcClient");
23
+ const EXPIRE_WINDOW_MS = 5 * 60 * 1000;
24
+ const REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`;
78
25
 
79
- // src/getNewSsoOidcToken.ts
80
- var getNewSsoOidcToken = /* @__PURE__ */ __name(async (ssoToken, ssoRegion, init = {}) => {
81
- const { CreateTokenCommand } = await Promise.resolve().then(() => __toESM(require("@aws-sdk/nested-clients/sso-oidc")));
82
- const ssoOidcClient = await getSsoOidcClient(ssoRegion, init);
83
- return ssoOidcClient.send(
84
- new CreateTokenCommand({
85
- clientId: ssoToken.clientId,
86
- clientSecret: ssoToken.clientSecret,
87
- refreshToken: ssoToken.refreshToken,
88
- grantType: "refresh_token"
89
- })
90
- );
91
- }, "getNewSsoOidcToken");
92
-
93
- // src/validateTokenExpiry.ts
26
+ const getSsoOidcClient = async (ssoRegion, init = {}) => {
27
+ const { SSOOIDCClient } = await import('@aws-sdk/nested-clients/sso-oidc');
28
+ const ssoOidcClient = new SSOOIDCClient(Object.assign({}, init.clientConfig ?? {}, {
29
+ region: ssoRegion ?? init.clientConfig?.region,
30
+ logger: init.clientConfig?.logger ?? init.parentClientConfig?.logger,
31
+ }));
32
+ return ssoOidcClient;
33
+ };
94
34
 
95
- var validateTokenExpiry = /* @__PURE__ */ __name((token) => {
96
- if (token.expiration && token.expiration.getTime() < Date.now()) {
97
- throw new import_property_provider.TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false);
98
- }
99
- }, "validateTokenExpiry");
35
+ const getNewSsoOidcToken = async (ssoToken, ssoRegion, init = {}) => {
36
+ const { CreateTokenCommand } = await import('@aws-sdk/nested-clients/sso-oidc');
37
+ const ssoOidcClient = await getSsoOidcClient(ssoRegion, init);
38
+ return ssoOidcClient.send(new CreateTokenCommand({
39
+ clientId: ssoToken.clientId,
40
+ clientSecret: ssoToken.clientSecret,
41
+ refreshToken: ssoToken.refreshToken,
42
+ grantType: "refresh_token",
43
+ }));
44
+ };
100
45
 
101
- // src/validateTokenKey.ts
46
+ const validateTokenExpiry = (token) => {
47
+ if (token.expiration && token.expiration.getTime() < Date.now()) {
48
+ throw new propertyProvider.TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false);
49
+ }
50
+ };
102
51
 
103
- var validateTokenKey = /* @__PURE__ */ __name((key, value, forRefresh = false) => {
104
- if (typeof value === "undefined") {
105
- throw new import_property_provider.TokenProviderError(
106
- `Value not present for '${key}' in SSO Token${forRefresh ? ". Cannot refresh" : ""}. ${REFRESH_MESSAGE}`,
107
- false
108
- );
109
- }
110
- }, "validateTokenKey");
52
+ const validateTokenKey = (key, value, forRefresh = false) => {
53
+ if (typeof value === "undefined") {
54
+ throw new propertyProvider.TokenProviderError(`Value not present for '${key}' in SSO Token${forRefresh ? ". Cannot refresh" : ""}. ${REFRESH_MESSAGE}`, false);
55
+ }
56
+ };
111
57
 
112
- // src/writeSSOTokenToFile.ts
113
- var import_shared_ini_file_loader = require("@smithy/shared-ini-file-loader");
114
- var import_fs = require("fs");
115
- var { writeFile } = import_fs.promises;
116
- var writeSSOTokenToFile = /* @__PURE__ */ __name((id, ssoToken) => {
117
- const tokenFilepath = (0, import_shared_ini_file_loader.getSSOTokenFilepath)(id);
118
- const tokenString = JSON.stringify(ssoToken, null, 2);
119
- return writeFile(tokenFilepath, tokenString);
120
- }, "writeSSOTokenToFile");
58
+ const { writeFile } = fs.promises;
59
+ const writeSSOTokenToFile = (id, ssoToken) => {
60
+ const tokenFilepath = sharedIniFileLoader.getSSOTokenFilepath(id);
61
+ const tokenString = JSON.stringify(ssoToken, null, 2);
62
+ return writeFile(tokenFilepath, tokenString);
63
+ };
121
64
 
122
- // src/fromSso.ts
123
- var lastRefreshAttemptTime = /* @__PURE__ */ new Date(0);
124
- var fromSso = /* @__PURE__ */ __name((_init = {}) => async ({ callerClientConfig } = {}) => {
125
- const init = {
126
- ..._init,
127
- parentClientConfig: {
128
- ...callerClientConfig,
129
- ..._init.parentClientConfig
65
+ const lastRefreshAttemptTime = new Date(0);
66
+ const fromSso = (_init = {}) => async ({ callerClientConfig } = {}) => {
67
+ const init = {
68
+ ..._init,
69
+ parentClientConfig: {
70
+ ...callerClientConfig,
71
+ ..._init.parentClientConfig,
72
+ },
73
+ };
74
+ init.logger?.debug("@aws-sdk/token-providers - fromSso");
75
+ const profiles = await sharedIniFileLoader.parseKnownFiles(init);
76
+ const profileName = sharedIniFileLoader.getProfileName({
77
+ profile: init.profile ?? callerClientConfig?.profile,
78
+ });
79
+ const profile = profiles[profileName];
80
+ if (!profile) {
81
+ throw new propertyProvider.TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false);
82
+ }
83
+ else if (!profile["sso_session"]) {
84
+ throw new propertyProvider.TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`);
130
85
  }
131
- };
132
- init.logger?.debug("@aws-sdk/token-providers - fromSso");
133
- const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);
134
- const profileName = (0, import_shared_ini_file_loader.getProfileName)({
135
- profile: init.profile ?? callerClientConfig?.profile
136
- });
137
- const profile = profiles[profileName];
138
- if (!profile) {
139
- throw new import_property_provider.TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false);
140
- } else if (!profile["sso_session"]) {
141
- throw new import_property_provider.TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`);
142
- }
143
- const ssoSessionName = profile["sso_session"];
144
- const ssoSessions = await (0, import_shared_ini_file_loader.loadSsoSessionData)(init);
145
- const ssoSession = ssoSessions[ssoSessionName];
146
- if (!ssoSession) {
147
- throw new import_property_provider.TokenProviderError(
148
- `Sso session '${ssoSessionName}' could not be found in shared credentials file.`,
149
- false
150
- );
151
- }
152
- for (const ssoSessionRequiredKey of ["sso_start_url", "sso_region"]) {
153
- if (!ssoSession[ssoSessionRequiredKey]) {
154
- throw new import_property_provider.TokenProviderError(
155
- `Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`,
156
- false
157
- );
86
+ const ssoSessionName = profile["sso_session"];
87
+ const ssoSessions = await sharedIniFileLoader.loadSsoSessionData(init);
88
+ const ssoSession = ssoSessions[ssoSessionName];
89
+ if (!ssoSession) {
90
+ throw new propertyProvider.TokenProviderError(`Sso session '${ssoSessionName}' could not be found in shared credentials file.`, false);
158
91
  }
159
- }
160
- const ssoStartUrl = ssoSession["sso_start_url"];
161
- const ssoRegion = ssoSession["sso_region"];
162
- let ssoToken;
163
- try {
164
- ssoToken = await (0, import_shared_ini_file_loader.getSSOTokenFromFile)(ssoSessionName);
165
- } catch (e) {
166
- throw new import_property_provider.TokenProviderError(
167
- `The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`,
168
- false
169
- );
170
- }
171
- validateTokenKey("accessToken", ssoToken.accessToken);
172
- validateTokenKey("expiresAt", ssoToken.expiresAt);
173
- const { accessToken, expiresAt } = ssoToken;
174
- const existingToken = { token: accessToken, expiration: new Date(expiresAt) };
175
- if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) {
176
- return existingToken;
177
- }
178
- if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1e3) {
179
- validateTokenExpiry(existingToken);
180
- return existingToken;
181
- }
182
- validateTokenKey("clientId", ssoToken.clientId, true);
183
- validateTokenKey("clientSecret", ssoToken.clientSecret, true);
184
- validateTokenKey("refreshToken", ssoToken.refreshToken, true);
185
- try {
186
- lastRefreshAttemptTime.setTime(Date.now());
187
- const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init);
188
- validateTokenKey("accessToken", newSsoOidcToken.accessToken);
189
- validateTokenKey("expiresIn", newSsoOidcToken.expiresIn);
190
- const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1e3);
92
+ for (const ssoSessionRequiredKey of ["sso_start_url", "sso_region"]) {
93
+ if (!ssoSession[ssoSessionRequiredKey]) {
94
+ throw new propertyProvider.TokenProviderError(`Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`, false);
95
+ }
96
+ }
97
+ ssoSession["sso_start_url"];
98
+ const ssoRegion = ssoSession["sso_region"];
99
+ let ssoToken;
191
100
  try {
192
- await writeSSOTokenToFile(ssoSessionName, {
193
- ...ssoToken,
194
- accessToken: newSsoOidcToken.accessToken,
195
- expiresAt: newTokenExpiration.toISOString(),
196
- refreshToken: newSsoOidcToken.refreshToken
197
- });
198
- } catch (error) {
101
+ ssoToken = await sharedIniFileLoader.getSSOTokenFromFile(ssoSessionName);
199
102
  }
200
- return {
201
- token: newSsoOidcToken.accessToken,
202
- expiration: newTokenExpiration
203
- };
204
- } catch (error) {
205
- validateTokenExpiry(existingToken);
206
- return existingToken;
207
- }
208
- }, "fromSso");
209
-
210
- // src/fromStatic.ts
211
-
212
- var fromStatic = /* @__PURE__ */ __name(({ token, logger }) => async () => {
213
- logger?.debug("@aws-sdk/token-providers - fromStatic");
214
- if (!token || !token.token) {
215
- throw new import_property_provider.TokenProviderError(`Please pass a valid token to fromStatic`, false);
216
- }
217
- return token;
218
- }, "fromStatic");
219
-
220
- // src/nodeProvider.ts
103
+ catch (e) {
104
+ throw new propertyProvider.TokenProviderError(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`, false);
105
+ }
106
+ validateTokenKey("accessToken", ssoToken.accessToken);
107
+ validateTokenKey("expiresAt", ssoToken.expiresAt);
108
+ const { accessToken, expiresAt } = ssoToken;
109
+ const existingToken = { token: accessToken, expiration: new Date(expiresAt) };
110
+ if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) {
111
+ return existingToken;
112
+ }
113
+ if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1000) {
114
+ validateTokenExpiry(existingToken);
115
+ return existingToken;
116
+ }
117
+ validateTokenKey("clientId", ssoToken.clientId, true);
118
+ validateTokenKey("clientSecret", ssoToken.clientSecret, true);
119
+ validateTokenKey("refreshToken", ssoToken.refreshToken, true);
120
+ try {
121
+ lastRefreshAttemptTime.setTime(Date.now());
122
+ const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init);
123
+ validateTokenKey("accessToken", newSsoOidcToken.accessToken);
124
+ validateTokenKey("expiresIn", newSsoOidcToken.expiresIn);
125
+ const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1000);
126
+ try {
127
+ await writeSSOTokenToFile(ssoSessionName, {
128
+ ...ssoToken,
129
+ accessToken: newSsoOidcToken.accessToken,
130
+ expiresAt: newTokenExpiration.toISOString(),
131
+ refreshToken: newSsoOidcToken.refreshToken,
132
+ });
133
+ }
134
+ catch (error) {
135
+ }
136
+ return {
137
+ token: newSsoOidcToken.accessToken,
138
+ expiration: newTokenExpiration,
139
+ };
140
+ }
141
+ catch (error) {
142
+ validateTokenExpiry(existingToken);
143
+ return existingToken;
144
+ }
145
+ };
221
146
 
222
- var nodeProvider = /* @__PURE__ */ __name((init = {}) => (0, import_property_provider.memoize)(
223
- (0, import_property_provider.chain)(fromSso(init), async () => {
224
- throw new import_property_provider.TokenProviderError("Could not load token from any providers", false);
225
- }),
226
- (token) => token.expiration !== void 0 && token.expiration.getTime() - Date.now() < 3e5,
227
- (token) => token.expiration !== void 0
228
- ), "nodeProvider");
229
- // Annotate the CommonJS export names for ESM import in node:
147
+ const fromStatic = ({ token, logger }) => async () => {
148
+ logger?.debug("@aws-sdk/token-providers - fromStatic");
149
+ if (!token || !token.token) {
150
+ throw new propertyProvider.TokenProviderError(`Please pass a valid token to fromStatic`, false);
151
+ }
152
+ return token;
153
+ };
230
154
 
231
- 0 && (module.exports = {
232
- fromEnvSigningName,
233
- fromSso,
234
- fromStatic,
235
- nodeProvider
236
- });
155
+ const nodeProvider = (init = {}) => propertyProvider.memoize(propertyProvider.chain(fromSso(init), async () => {
156
+ throw new propertyProvider.TokenProviderError("Could not load token from any providers", false);
157
+ }), (token) => token.expiration !== undefined && token.expiration.getTime() - Date.now() < 300000, (token) => token.expiration !== undefined);
237
158
 
159
+ exports.fromEnvSigningName = fromEnvSigningName;
160
+ exports.fromSso = fromSso;
161
+ exports.fromStatic = fromStatic;
162
+ exports.nodeProvider = nodeProvider;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-sdk/token-providers",
3
- "version": "3.901.0",
3
+ "version": "3.906.0",
4
4
  "description": "A collection of token providers",
5
5
  "main": "./dist-cjs/index.js",
6
6
  "module": "./dist-es/index.js",
@@ -29,8 +29,8 @@
29
29
  },
30
30
  "license": "Apache-2.0",
31
31
  "dependencies": {
32
- "@aws-sdk/core": "3.901.0",
33
- "@aws-sdk/nested-clients": "3.901.0",
32
+ "@aws-sdk/core": "3.906.0",
33
+ "@aws-sdk/nested-clients": "3.906.0",
34
34
  "@aws-sdk/types": "3.901.0",
35
35
  "@smithy/property-provider": "^4.2.0",
36
36
  "@smithy/shared-ini-file-loader": "^4.3.0",