@distilled.cloud/aws 0.24.9 → 0.25.1
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/lib/auth.d.ts.map +1 -1
- package/lib/auth.js +37 -23
- package/lib/auth.js.map +1 -1
- package/lib/hash/crc32.d.ts +1 -1
- package/lib/hash/crc32.d.ts.map +1 -1
- package/lib/hash/crc32.js.map +1 -1
- package/lib/hash/md5.d.ts +1 -1
- package/lib/hash/md5.d.ts.map +1 -1
- package/lib/hash/md5.js.map +1 -1
- package/package.json +2 -2
- package/src/auth.ts +47 -33
- package/src/hash/crc32.ts +1 -1
- package/src/hash/md5.ts +1 -1
package/lib/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAEL,KAAK,gBAAgB,EAGtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAUL,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAUlC,eAAO,MAAM,OAAO;;;oEAGnB,CAAC;AAEF,eAAO,MAAM,WAAW,YAAa,MAAM,oJACmB,CAAC;AAE/D,eAAO,MAAM,sBAAsB,YAAa,MAAM,uJACmB,CAAC;AAE1E,eAAO,MAAM,eAAe;;;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAEL,KAAK,gBAAgB,EAGtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAUL,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAUlC,eAAO,MAAM,OAAO;;;oEAGnB,CAAC;AAEF,eAAO,MAAM,WAAW,YAAa,MAAM,oJACmB,CAAC;AAE/D,eAAO,MAAM,sBAAsB,YAAa,MAAM,uJACmB,CAAC;AAE1E,eAAO,MAAM,eAAe;;;oEAqPxB,CAAC"}
|
package/lib/auth.js
CHANGED
|
@@ -35,27 +35,38 @@ export const makeAuthService = () => Effect.gen(function* () {
|
|
|
35
35
|
}
|
|
36
36
|
const awsDir = path.join(ini.getHomeDir(), ".aws");
|
|
37
37
|
const configPath = path.join(awsDir, "config");
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
38
|
+
// A profile is an SSO profile in one of two config formats:
|
|
39
|
+
// - modern: `sso_session = <name>` referencing an `[sso-session <name>]`
|
|
40
|
+
// section that holds `sso_start_url` / `sso_region`.
|
|
41
|
+
// - legacy inline: `sso_start_url` (and `sso_region`) set directly on the
|
|
42
|
+
// profile, with no `sso_session`.
|
|
43
|
+
// Only the modern format needs the session lookup; both then validate the
|
|
44
|
+
// required SSO fields. (Legacy inline is still emitted by older `aws configure
|
|
45
|
+
// sso` runs and remains valid, so treat it as an SSO profile rather than
|
|
46
|
+
// reporting the profile as not found.)
|
|
47
|
+
if (profile.sso_session || profile.sso_start_url) {
|
|
48
|
+
if (profile.sso_session) {
|
|
49
|
+
const ssoRegion = Option.getOrUndefined(yield* Effect.serviceOption(SsoRegion));
|
|
50
|
+
const ssoStartUrl = Option.getOrElse(yield* Effect.serviceOption(SsoStartUrl), () => profile.sso_start_url);
|
|
51
|
+
const ssoSessions = yield* fs.readFileString(configPath).pipe(Effect.flatMap((config) => Effect.promise(async () => parseIni(config))), Effect.map(parseSSOSessionData));
|
|
52
|
+
const session = ssoSessions[profile.sso_session];
|
|
53
|
+
if (ssoRegion && ssoRegion !== session.sso_region) {
|
|
54
|
+
return yield* new ConflictingSSORegion({
|
|
55
|
+
message: `Conflicting SSO region`,
|
|
56
|
+
ssoRegion: ssoRegion,
|
|
57
|
+
profile: profile.sso_session,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {
|
|
61
|
+
return yield* new ConflictingSSOStartUrl({
|
|
62
|
+
message: `Conflicting SSO start url`,
|
|
63
|
+
ssoStartUrl: ssoStartUrl,
|
|
64
|
+
profile: profile.sso_session,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
profile.sso_region = session.sso_region;
|
|
68
|
+
profile.sso_start_url = session.sso_start_url;
|
|
56
69
|
}
|
|
57
|
-
profile.sso_region = session.sso_region;
|
|
58
|
-
profile.sso_start_url = session.sso_start_url;
|
|
59
70
|
const ssoFields = [
|
|
60
71
|
"sso_start_url",
|
|
61
72
|
"sso_account_id",
|
|
@@ -82,9 +93,12 @@ export const makeAuthService = () => Effect.gen(function* () {
|
|
|
82
93
|
const awsDir = path.join(ini.getHomeDir(), ".aws");
|
|
83
94
|
const cachePath = path.join(awsDir, "sso", "cache");
|
|
84
95
|
const profile = yield* loadProfile(profileName);
|
|
85
|
-
|
|
96
|
+
// Both SSO formats cache the access token under sha1 of the cache key: the
|
|
97
|
+
// `sso_session` name (modern) or the `sso_start_url` (legacy inline format).
|
|
98
|
+
const ssoCacheKey = profile.sso_session ?? profile.sso_start_url;
|
|
99
|
+
if (ssoCacheKey) {
|
|
86
100
|
const hasher = createHash("sha1");
|
|
87
|
-
const cacheName = hasher.update(
|
|
101
|
+
const cacheName = hasher.update(ssoCacheKey).digest("hex");
|
|
88
102
|
const ssoTokenFilepath = path.join(cachePath, `${cacheName}.json`);
|
|
89
103
|
const cachedCredsFilePath = path.join(cachePath, `${cacheName}.credentials.json`);
|
|
90
104
|
// `Effect.try` so a `JSON.parse` throw on an empty/partial file
|
|
@@ -121,7 +135,7 @@ export const makeAuthService = () => Effect.gen(function* () {
|
|
|
121
135
|
catch: (cause) => cause,
|
|
122
136
|
})), Effect.catch(() => new InvalidSSOToken({
|
|
123
137
|
message: `The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`,
|
|
124
|
-
sso_session:
|
|
138
|
+
sso_session: ssoCacheKey,
|
|
125
139
|
})));
|
|
126
140
|
if (isExpired(ssoToken.expiresAt)) {
|
|
127
141
|
yield* Console.log(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`);
|
package/lib/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/lib/hash/crc32.d.ts
CHANGED
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* falls back to @aws-crypto/crc32.
|
|
5
5
|
*/
|
|
6
6
|
import type { Checksum } from "@smithy/types";
|
|
7
|
-
export declare const getCrc32ChecksumAlgorithmFunction: () =>
|
|
7
|
+
export declare const getCrc32ChecksumAlgorithmFunction: () => new () => Checksum;
|
|
8
8
|
//# sourceMappingURL=crc32.d.ts.map
|
package/lib/hash/crc32.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crc32.d.ts","sourceRoot":"","sources":["../../src/hash/crc32.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAgB9C,eAAO,MAAM,iCAAiC,QAAO,
|
|
1
|
+
{"version":3,"file":"crc32.d.ts","sourceRoot":"","sources":["../../src/hash/crc32.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAgB9C,eAAO,MAAM,iCAAiC,QAAO,UAAU,QAK9D,CAAC"}
|
package/lib/hash/crc32.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crc32.js","sourceRoot":"","sources":["../../src/hash/crc32.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,SAAS;IACL,KAAK,GAAG,CAAC,CAAC;IAClB,MAAM,CAAC,IAAgB;QACrB,IAAI,CAAC,KAAK,GAAI,IAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,MAAM;QACV,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,
|
|
1
|
+
{"version":3,"file":"crc32.js","sourceRoot":"","sources":["../../src/hash/crc32.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,SAAS;IACL,KAAK,GAAG,CAAC,CAAC;IAClB,MAAM,CAAC,IAAgB;QACrB,IAAI,CAAC,KAAK,GAAI,IAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,MAAM;QACV,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAuB,EAAE;IACxE,IAAI,OAAQ,IAAY,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC9C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,QAAyC,CAAC;AACnD,CAAC,CAAC"}
|
package/lib/hash/md5.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* MD5 checksum implementation using Node.js crypto module.
|
|
3
3
|
*/
|
|
4
4
|
import type { Checksum } from "@smithy/types";
|
|
5
|
-
export declare const getMd5ChecksumAlgorithmFunction: () =>
|
|
5
|
+
export declare const getMd5ChecksumAlgorithmFunction: () => new () => Checksum;
|
|
6
6
|
//# sourceMappingURL=md5.d.ts.map
|
package/lib/hash/md5.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"md5.d.ts","sourceRoot":"","sources":["../../src/hash/md5.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAgB9C,eAAO,MAAM,+BAA+B,QAAO,
|
|
1
|
+
{"version":3,"file":"md5.d.ts","sourceRoot":"","sources":["../../src/hash/md5.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAgB9C,eAAO,MAAM,+BAA+B,QAAO,UAAU,QAE5D,CAAC"}
|
package/lib/hash/md5.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"md5.js","sourceRoot":"","sources":["../../src/hash/md5.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,MAAM,OAAO;IACH,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,IAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG,
|
|
1
|
+
{"version":3,"file":"md5.js","sourceRoot":"","sources":["../../src/hash/md5.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,MAAM,OAAO;IACH,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,IAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAuB,EAAE;IACtE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@distilled.cloud/aws",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/alchemy-run/distilled",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"@aws-crypto/util": "^5.2.0",
|
|
87
87
|
"@aws-sdk/credential-providers": "^3.994.0",
|
|
88
88
|
"@aws-sdk/types": "^3.973.1",
|
|
89
|
-
"@distilled.cloud/core": "0.
|
|
89
|
+
"@distilled.cloud/core": "0.25.1",
|
|
90
90
|
"@smithy/shared-ini-file-loader": "^4.4.3",
|
|
91
91
|
"@smithy/types": "^4.12.0",
|
|
92
92
|
"@smithy/util-base64": "^4.3.0",
|
package/src/auth.ts
CHANGED
|
@@ -73,38 +73,49 @@ export const makeAuthService = () =>
|
|
|
73
73
|
const awsDir = path.join(ini.getHomeDir(), ".aws");
|
|
74
74
|
const configPath = path.join(awsDir, "config");
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
76
|
+
// A profile is an SSO profile in one of two config formats:
|
|
77
|
+
// - modern: `sso_session = <name>` referencing an `[sso-session <name>]`
|
|
78
|
+
// section that holds `sso_start_url` / `sso_region`.
|
|
79
|
+
// - legacy inline: `sso_start_url` (and `sso_region`) set directly on the
|
|
80
|
+
// profile, with no `sso_session`.
|
|
81
|
+
// Only the modern format needs the session lookup; both then validate the
|
|
82
|
+
// required SSO fields. (Legacy inline is still emitted by older `aws configure
|
|
83
|
+
// sso` runs and remains valid, so treat it as an SSO profile rather than
|
|
84
|
+
// reporting the profile as not found.)
|
|
85
|
+
if (profile.sso_session || profile.sso_start_url) {
|
|
86
|
+
if (profile.sso_session) {
|
|
87
|
+
const ssoRegion = Option.getOrUndefined(
|
|
88
|
+
yield* Effect.serviceOption(SsoRegion),
|
|
89
|
+
);
|
|
90
|
+
const ssoStartUrl = Option.getOrElse(
|
|
91
|
+
yield* Effect.serviceOption(SsoStartUrl),
|
|
92
|
+
() => profile.sso_start_url,
|
|
93
|
+
);
|
|
84
94
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
95
|
+
const ssoSessions = yield* fs.readFileString(configPath).pipe(
|
|
96
|
+
Effect.flatMap((config) =>
|
|
97
|
+
Effect.promise(async () => parseIni(config)),
|
|
98
|
+
),
|
|
99
|
+
Effect.map(parseSSOSessionData),
|
|
100
|
+
);
|
|
101
|
+
const session = ssoSessions[profile.sso_session];
|
|
102
|
+
if (ssoRegion && ssoRegion !== session.sso_region) {
|
|
103
|
+
return yield* new ConflictingSSORegion({
|
|
104
|
+
message: `Conflicting SSO region`,
|
|
105
|
+
ssoRegion: ssoRegion,
|
|
106
|
+
profile: profile.sso_session,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {
|
|
110
|
+
return yield* new ConflictingSSOStartUrl({
|
|
111
|
+
message: `Conflicting SSO start url`,
|
|
112
|
+
ssoStartUrl: ssoStartUrl,
|
|
113
|
+
profile: profile.sso_session,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
profile.sso_region = session.sso_region;
|
|
117
|
+
profile.sso_start_url = session.sso_start_url;
|
|
105
118
|
}
|
|
106
|
-
profile.sso_region = session.sso_region;
|
|
107
|
-
profile.sso_start_url = session.sso_start_url;
|
|
108
119
|
|
|
109
120
|
const ssoFields = [
|
|
110
121
|
"sso_start_url",
|
|
@@ -141,9 +152,12 @@ export const makeAuthService = () =>
|
|
|
141
152
|
|
|
142
153
|
const profile = yield* loadProfile(profileName);
|
|
143
154
|
|
|
144
|
-
|
|
155
|
+
// Both SSO formats cache the access token under sha1 of the cache key: the
|
|
156
|
+
// `sso_session` name (modern) or the `sso_start_url` (legacy inline format).
|
|
157
|
+
const ssoCacheKey = profile.sso_session ?? profile.sso_start_url;
|
|
158
|
+
if (ssoCacheKey) {
|
|
145
159
|
const hasher = createHash("sha1");
|
|
146
|
-
const cacheName = hasher.update(
|
|
160
|
+
const cacheName = hasher.update(ssoCacheKey).digest("hex");
|
|
147
161
|
const ssoTokenFilepath = path.join(cachePath, `${cacheName}.json`);
|
|
148
162
|
const cachedCredsFilePath = path.join(
|
|
149
163
|
cachePath,
|
|
@@ -199,7 +213,7 @@ export const makeAuthService = () =>
|
|
|
199
213
|
() =>
|
|
200
214
|
new InvalidSSOToken({
|
|
201
215
|
message: `The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`,
|
|
202
|
-
sso_session:
|
|
216
|
+
sso_session: ssoCacheKey,
|
|
203
217
|
}),
|
|
204
218
|
),
|
|
205
219
|
);
|
package/src/hash/crc32.ts
CHANGED
|
@@ -22,7 +22,7 @@ class NodeCrc32 implements Checksum {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
export const getCrc32ChecksumAlgorithmFunction = ():
|
|
25
|
+
export const getCrc32ChecksumAlgorithmFunction = (): new () => Checksum => {
|
|
26
26
|
if (typeof (zlib as any).crc32 === "function") {
|
|
27
27
|
return NodeCrc32;
|
|
28
28
|
}
|
package/src/hash/md5.ts
CHANGED