@hanzo/s3 0.6.3 → 8.0.7
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/LICENSE +202 -0
- package/MAINTAINERS.md +62 -0
- package/README.md +262 -0
- package/README_zh_CN.md +192 -0
- package/dist/esm/AssumeRoleProvider.d.mts +86 -0
- package/dist/esm/AssumeRoleProvider.mjs +183 -0
- package/dist/esm/CredentialProvider.d.mts +22 -0
- package/dist/esm/CredentialProvider.mjs +48 -0
- package/dist/esm/Credentials.d.mts +22 -0
- package/dist/esm/Credentials.mjs +38 -0
- package/dist/esm/IamAwsProvider.d.mts +27 -0
- package/dist/esm/IamAwsProvider.mjs +189 -0
- package/dist/esm/errors.d.mts +82 -0
- package/dist/esm/errors.mjs +117 -0
- package/dist/esm/helpers.d.mts +156 -0
- package/dist/esm/helpers.mjs +218 -0
- package/dist/esm/internal/async.d.mts +9 -0
- package/dist/esm/internal/async.mjs +14 -0
- package/dist/esm/internal/callbackify.d.mts +1 -0
- package/dist/esm/internal/callbackify.mjs +15 -0
- package/dist/esm/internal/client.d.mts +394 -0
- package/dist/esm/internal/client.mjs +3007 -0
- package/dist/esm/internal/copy-conditions.d.mts +10 -0
- package/dist/esm/internal/copy-conditions.mjs +25 -0
- package/dist/esm/internal/extensions.d.mts +18 -0
- package/dist/esm/internal/extensions.mjs +114 -0
- package/dist/esm/internal/helper.d.mts +177 -0
- package/dist/esm/internal/helper.mjs +552 -0
- package/dist/esm/internal/join-host-port.d.mts +11 -0
- package/dist/esm/internal/join-host-port.mjs +23 -0
- package/dist/esm/internal/post-policy.d.mts +17 -0
- package/dist/esm/internal/post-policy.mjs +98 -0
- package/dist/esm/internal/request.d.mts +11 -0
- package/dist/esm/internal/request.mjs +75 -0
- package/dist/esm/internal/response.d.mts +8 -0
- package/dist/esm/internal/response.mjs +16 -0
- package/dist/esm/internal/s3-endpoints.d.mts +38 -0
- package/dist/esm/internal/s3-endpoints.mjs +68 -0
- package/dist/esm/internal/type.d.mts +482 -0
- package/dist/esm/internal/type.mjs +30 -0
- package/dist/esm/internal/xml-parser.d.mts +93 -0
- package/dist/esm/internal/xml-parser.mjs +819 -0
- package/dist/esm/notification.d.mts +58 -0
- package/dist/esm/notification.mjs +209 -0
- package/dist/esm/s3.d.mts +40 -0
- package/dist/esm/s3.mjs +86 -0
- package/dist/esm/signing.d.mts +5 -0
- package/dist/esm/signing.mjs +258 -0
- package/dist/main/AssumeRoleProvider.d.ts +86 -0
- package/dist/main/AssumeRoleProvider.js +191 -0
- package/dist/main/CredentialProvider.d.ts +22 -0
- package/dist/main/CredentialProvider.js +55 -0
- package/dist/main/Credentials.d.ts +22 -0
- package/dist/main/Credentials.js +45 -0
- package/dist/main/IamAwsProvider.d.ts +27 -0
- package/dist/main/IamAwsProvider.js +198 -0
- package/dist/main/errors.d.ts +82 -0
- package/dist/main/errors.js +138 -0
- package/dist/main/helpers.d.ts +156 -0
- package/dist/main/helpers.js +233 -0
- package/dist/main/internal/async.d.ts +9 -0
- package/dist/main/internal/async.js +24 -0
- package/dist/main/internal/callbackify.d.ts +1 -0
- package/dist/main/internal/callbackify.js +21 -0
- package/dist/main/internal/client.d.ts +394 -0
- package/dist/main/internal/client.js +3014 -0
- package/dist/main/internal/copy-conditions.d.ts +10 -0
- package/dist/main/internal/copy-conditions.js +31 -0
- package/dist/main/internal/extensions.d.ts +18 -0
- package/dist/main/internal/extensions.js +122 -0
- package/dist/main/internal/helper.d.ts +177 -0
- package/dist/main/internal/helper.js +608 -0
- package/dist/main/internal/join-host-port.d.ts +11 -0
- package/dist/main/internal/join-host-port.js +29 -0
- package/dist/main/internal/post-policy.d.ts +17 -0
- package/dist/main/internal/post-policy.js +107 -0
- package/dist/main/internal/request.d.ts +11 -0
- package/dist/main/internal/request.js +83 -0
- package/dist/main/internal/response.d.ts +8 -0
- package/dist/main/internal/response.js +24 -0
- package/dist/main/internal/s3-endpoints.d.ts +38 -0
- package/dist/main/internal/s3-endpoints.js +73 -0
- package/dist/main/internal/type.d.ts +482 -0
- package/dist/main/internal/type.js +42 -0
- package/dist/main/internal/xml-parser.d.ts +93 -0
- package/dist/main/internal/xml-parser.js +849 -0
- package/dist/main/notification.d.ts +58 -0
- package/dist/main/notification.js +230 -0
- package/dist/main/s3.d.ts +40 -0
- package/dist/main/s3.js +117 -0
- package/dist/main/signing.d.ts +5 -0
- package/dist/main/signing.js +269 -0
- package/package.json +146 -39
- package/src/AssumeRoleProvider.ts +262 -0
- package/src/CredentialProvider.ts +54 -0
- package/src/Credentials.ts +44 -0
- package/src/IamAwsProvider.ts +234 -0
- package/src/errors.ts +120 -0
- package/src/helpers.ts +354 -0
- package/src/internal/async.ts +14 -0
- package/src/internal/callbackify.ts +19 -0
- package/src/internal/client.ts +3412 -0
- package/src/internal/copy-conditions.ts +30 -0
- package/src/internal/extensions.ts +140 -0
- package/src/internal/helper.ts +606 -0
- package/src/internal/join-host-port.ts +23 -0
- package/src/internal/post-policy.ts +99 -0
- package/src/internal/request.ts +102 -0
- package/src/internal/response.ts +26 -0
- package/src/internal/s3-endpoints.ts +70 -0
- package/src/internal/type.ts +577 -0
- package/src/internal/xml-parser.ts +871 -0
- package/src/notification.ts +254 -0
- package/src/s3.ts +155 -0
- package/src/signing.ts +325 -0
- package/lib/index.js +0 -450
- package/lib/index.js.map +0 -7
- package/lib/perfTest.js +0 -91
- package/lib/perfTest.js.map +0 -7
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _Credentials = require("./Credentials.js");
|
|
7
|
+
class CredentialProvider {
|
|
8
|
+
constructor({
|
|
9
|
+
accessKey,
|
|
10
|
+
secretKey,
|
|
11
|
+
sessionToken
|
|
12
|
+
}) {
|
|
13
|
+
this.credentials = new _Credentials.Credentials({
|
|
14
|
+
accessKey,
|
|
15
|
+
secretKey,
|
|
16
|
+
sessionToken
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async getCredentials() {
|
|
20
|
+
return this.credentials.get();
|
|
21
|
+
}
|
|
22
|
+
setCredentials(credentials) {
|
|
23
|
+
if (credentials instanceof _Credentials.Credentials) {
|
|
24
|
+
this.credentials = credentials;
|
|
25
|
+
} else {
|
|
26
|
+
throw new Error('Unable to set Credentials. it should be an instance of Credentials class');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
setAccessKey(accessKey) {
|
|
30
|
+
this.credentials.setAccessKey(accessKey);
|
|
31
|
+
}
|
|
32
|
+
getAccessKey() {
|
|
33
|
+
return this.credentials.getAccessKey();
|
|
34
|
+
}
|
|
35
|
+
setSecretKey(secretKey) {
|
|
36
|
+
this.credentials.setSecretKey(secretKey);
|
|
37
|
+
}
|
|
38
|
+
getSecretKey() {
|
|
39
|
+
return this.credentials.getSecretKey();
|
|
40
|
+
}
|
|
41
|
+
setSessionToken(sessionToken) {
|
|
42
|
+
this.credentials.setSessionToken(sessionToken);
|
|
43
|
+
}
|
|
44
|
+
getSessionToken() {
|
|
45
|
+
return this.credentials.getSessionToken();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// deprecated default export, please use named exports.
|
|
50
|
+
// keep for backward compatibility.
|
|
51
|
+
// eslint-disable-next-line import/no-default-export
|
|
52
|
+
exports.CredentialProvider = CredentialProvider;
|
|
53
|
+
var _default = CredentialProvider;
|
|
54
|
+
exports.default = _default;
|
|
55
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQ3JlZGVudGlhbHMiLCJyZXF1aXJlIiwiQ3JlZGVudGlhbFByb3ZpZGVyIiwiY29uc3RydWN0b3IiLCJhY2Nlc3NLZXkiLCJzZWNyZXRLZXkiLCJzZXNzaW9uVG9rZW4iLCJjcmVkZW50aWFscyIsIkNyZWRlbnRpYWxzIiwiZ2V0Q3JlZGVudGlhbHMiLCJnZXQiLCJzZXRDcmVkZW50aWFscyIsIkVycm9yIiwic2V0QWNjZXNzS2V5IiwiZ2V0QWNjZXNzS2V5Iiwic2V0U2VjcmV0S2V5IiwiZ2V0U2VjcmV0S2V5Iiwic2V0U2Vzc2lvblRva2VuIiwiZ2V0U2Vzc2lvblRva2VuIiwiZXhwb3J0cyIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIkNyZWRlbnRpYWxQcm92aWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVkZW50aWFscyB9IGZyb20gJy4vQ3JlZGVudGlhbHMudHMnXG5cbmV4cG9ydCBjbGFzcyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICBwcml2YXRlIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsc1xuXG4gIGNvbnN0cnVjdG9yKHsgYWNjZXNzS2V5LCBzZWNyZXRLZXksIHNlc3Npb25Ub2tlbiB9OiB7IGFjY2Vzc0tleTogc3RyaW5nOyBzZWNyZXRLZXk6IHN0cmluZzsgc2Vzc2lvblRva2VuPzogc3RyaW5nIH0pIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gbmV3IENyZWRlbnRpYWxzKHtcbiAgICAgIGFjY2Vzc0tleSxcbiAgICAgIHNlY3JldEtleSxcbiAgICAgIHNlc3Npb25Ub2tlbixcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0Q3JlZGVudGlhbHMoKTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIHJldHVybiB0aGlzLmNyZWRlbnRpYWxzLmdldCgpXG4gIH1cblxuICBzZXRDcmVkZW50aWFscyhjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpIHtcbiAgICBpZiAoY3JlZGVudGlhbHMgaW5zdGFuY2VvZiBDcmVkZW50aWFscykge1xuICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHNldCBDcmVkZW50aWFscy4gaXQgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIENyZWRlbnRpYWxzIGNsYXNzJylcbiAgICB9XG4gIH1cblxuICBzZXRBY2Nlc3NLZXkoYWNjZXNzS2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxzLnNldEFjY2Vzc0tleShhY2Nlc3NLZXkpXG4gIH1cblxuICBnZXRBY2Nlc3NLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlZGVudGlhbHMuZ2V0QWNjZXNzS2V5KClcbiAgfVxuXG4gIHNldFNlY3JldEtleShzZWNyZXRLZXk6IHN0cmluZykge1xuICAgIHRoaXMuY3JlZGVudGlhbHMuc2V0U2VjcmV0S2V5KHNlY3JldEtleSlcbiAgfVxuXG4gIGdldFNlY3JldEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVkZW50aWFscy5nZXRTZWNyZXRLZXkoKVxuICB9XG5cbiAgc2V0U2Vzc2lvblRva2VuKHNlc3Npb25Ub2tlbjogc3RyaW5nKSB7XG4gICAgdGhpcy5jcmVkZW50aWFscy5zZXRTZXNzaW9uVG9rZW4oc2Vzc2lvblRva2VuKVxuICB9XG5cbiAgZ2V0U2Vzc2lvblRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLmNyZWRlbnRpYWxzLmdldFNlc3Npb25Ub2tlbigpXG4gIH1cbn1cblxuLy8gZGVwcmVjYXRlZCBkZWZhdWx0IGV4cG9ydCwgcGxlYXNlIHVzZSBuYW1lZCBleHBvcnRzLlxuLy8ga2VlcCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZGVmYXVsdC1leHBvcnRcbmV4cG9ydCBkZWZhdWx0IENyZWRlbnRpYWxQcm92aWRlclxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUFBLFlBQUEsR0FBQUMsT0FBQTtBQUVPLE1BQU1DLGtCQUFrQixDQUFDO0VBRzlCQyxXQUFXQSxDQUFDO0lBQUVDLFNBQVM7SUFBRUMsU0FBUztJQUFFQztFQUE4RSxDQUFDLEVBQUU7SUFDbkgsSUFBSSxDQUFDQyxXQUFXLEdBQUcsSUFBSUMsd0JBQVcsQ0FBQztNQUNqQ0osU0FBUztNQUNUQyxTQUFTO01BQ1RDO0lBQ0YsQ0FBQyxDQUFDO0VBQ0o7RUFFQSxNQUFNRyxjQUFjQSxDQUFBLEVBQXlCO0lBQzNDLE9BQU8sSUFBSSxDQUFDRixXQUFXLENBQUNHLEdBQUcsQ0FBQyxDQUFDO0VBQy9CO0VBRUFDLGNBQWNBLENBQUNKLFdBQXdCLEVBQUU7SUFDdkMsSUFBSUEsV0FBVyxZQUFZQyx3QkFBVyxFQUFFO01BQ3RDLElBQUksQ0FBQ0QsV0FBVyxHQUFHQSxXQUFXO0lBQ2hDLENBQUMsTUFBTTtNQUNMLE1BQU0sSUFBSUssS0FBSyxDQUFDLDBFQUEwRSxDQUFDO0lBQzdGO0VBQ0Y7RUFFQUMsWUFBWUEsQ0FBQ1QsU0FBaUIsRUFBRTtJQUM5QixJQUFJLENBQUNHLFdBQVcsQ0FBQ00sWUFBWSxDQUFDVCxTQUFTLENBQUM7RUFDMUM7RUFFQVUsWUFBWUEsQ0FBQSxFQUFHO0lBQ2IsT0FBTyxJQUFJLENBQUNQLFdBQVcsQ0FBQ08sWUFBWSxDQUFDLENBQUM7RUFDeEM7RUFFQUMsWUFBWUEsQ0FBQ1YsU0FBaUIsRUFBRTtJQUM5QixJQUFJLENBQUNFLFdBQVcsQ0FBQ1EsWUFBWSxDQUFDVixTQUFTLENBQUM7RUFDMUM7RUFFQVcsWUFBWUEsQ0FBQSxFQUFHO0lBQ2IsT0FBTyxJQUFJLENBQUNULFdBQVcsQ0FBQ1MsWUFBWSxDQUFDLENBQUM7RUFDeEM7RUFFQUMsZUFBZUEsQ0FBQ1gsWUFBb0IsRUFBRTtJQUNwQyxJQUFJLENBQUNDLFdBQVcsQ0FBQ1UsZUFBZSxDQUFDWCxZQUFZLENBQUM7RUFDaEQ7RUFFQVksZUFBZUEsQ0FBQSxFQUFHO0lBQ2hCLE9BQU8sSUFBSSxDQUFDWCxXQUFXLENBQUNXLGVBQWUsQ0FBQyxDQUFDO0VBQzNDO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQUFDLE9BQUEsQ0FBQWpCLGtCQUFBLEdBQUFBLGtCQUFBO0FBQUEsSUFBQWtCLFFBQUEsR0FDZWxCLGtCQUFrQjtBQUFBaUIsT0FBQSxDQUFBRSxPQUFBLEdBQUFELFFBQUEifQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare class Credentials {
|
|
2
|
+
accessKey: string;
|
|
3
|
+
secretKey: string;
|
|
4
|
+
sessionToken?: string;
|
|
5
|
+
constructor({
|
|
6
|
+
accessKey,
|
|
7
|
+
secretKey,
|
|
8
|
+
sessionToken
|
|
9
|
+
}: {
|
|
10
|
+
accessKey: string;
|
|
11
|
+
secretKey: string;
|
|
12
|
+
sessionToken?: string;
|
|
13
|
+
});
|
|
14
|
+
setAccessKey(accessKey: string): void;
|
|
15
|
+
getAccessKey(): string;
|
|
16
|
+
setSecretKey(secretKey: string): void;
|
|
17
|
+
getSecretKey(): string;
|
|
18
|
+
setSessionToken(sessionToken: string): void;
|
|
19
|
+
getSessionToken(): string | undefined;
|
|
20
|
+
get(): Credentials;
|
|
21
|
+
}
|
|
22
|
+
export default Credentials;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
class Credentials {
|
|
7
|
+
constructor({
|
|
8
|
+
accessKey,
|
|
9
|
+
secretKey,
|
|
10
|
+
sessionToken
|
|
11
|
+
}) {
|
|
12
|
+
this.accessKey = accessKey;
|
|
13
|
+
this.secretKey = secretKey;
|
|
14
|
+
this.sessionToken = sessionToken;
|
|
15
|
+
}
|
|
16
|
+
setAccessKey(accessKey) {
|
|
17
|
+
this.accessKey = accessKey;
|
|
18
|
+
}
|
|
19
|
+
getAccessKey() {
|
|
20
|
+
return this.accessKey;
|
|
21
|
+
}
|
|
22
|
+
setSecretKey(secretKey) {
|
|
23
|
+
this.secretKey = secretKey;
|
|
24
|
+
}
|
|
25
|
+
getSecretKey() {
|
|
26
|
+
return this.secretKey;
|
|
27
|
+
}
|
|
28
|
+
setSessionToken(sessionToken) {
|
|
29
|
+
this.sessionToken = sessionToken;
|
|
30
|
+
}
|
|
31
|
+
getSessionToken() {
|
|
32
|
+
return this.sessionToken;
|
|
33
|
+
}
|
|
34
|
+
get() {
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// deprecated default export, please use named exports.
|
|
40
|
+
// keep for backward compatibility.
|
|
41
|
+
// eslint-disable-next-line import/no-default-export
|
|
42
|
+
exports.Credentials = Credentials;
|
|
43
|
+
var _default = Credentials;
|
|
44
|
+
exports.default = _default;
|
|
45
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDcmVkZW50aWFscyIsImNvbnN0cnVjdG9yIiwiYWNjZXNzS2V5Iiwic2VjcmV0S2V5Iiwic2Vzc2lvblRva2VuIiwic2V0QWNjZXNzS2V5IiwiZ2V0QWNjZXNzS2V5Iiwic2V0U2VjcmV0S2V5IiwiZ2V0U2VjcmV0S2V5Iiwic2V0U2Vzc2lvblRva2VuIiwiZ2V0U2Vzc2lvblRva2VuIiwiZ2V0IiwiZXhwb3J0cyIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIkNyZWRlbnRpYWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDcmVkZW50aWFscyB7XG4gIHB1YmxpYyBhY2Nlc3NLZXk6IHN0cmluZ1xuICBwdWJsaWMgc2VjcmV0S2V5OiBzdHJpbmdcbiAgcHVibGljIHNlc3Npb25Ub2tlbj86IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKHsgYWNjZXNzS2V5LCBzZWNyZXRLZXksIHNlc3Npb25Ub2tlbiB9OiB7IGFjY2Vzc0tleTogc3RyaW5nOyBzZWNyZXRLZXk6IHN0cmluZzsgc2Vzc2lvblRva2VuPzogc3RyaW5nIH0pIHtcbiAgICB0aGlzLmFjY2Vzc0tleSA9IGFjY2Vzc0tleVxuICAgIHRoaXMuc2VjcmV0S2V5ID0gc2VjcmV0S2V5XG4gICAgdGhpcy5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uVG9rZW5cbiAgfVxuXG4gIHNldEFjY2Vzc0tleShhY2Nlc3NLZXk6IHN0cmluZykge1xuICAgIHRoaXMuYWNjZXNzS2V5ID0gYWNjZXNzS2V5XG4gIH1cblxuICBnZXRBY2Nlc3NLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXNzS2V5XG4gIH1cblxuICBzZXRTZWNyZXRLZXkoc2VjcmV0S2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlY3JldEtleSA9IHNlY3JldEtleVxuICB9XG5cbiAgZ2V0U2VjcmV0S2V5KCkge1xuICAgIHJldHVybiB0aGlzLnNlY3JldEtleVxuICB9XG5cbiAgc2V0U2Vzc2lvblRva2VuKHNlc3Npb25Ub2tlbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uVG9rZW5cbiAgfVxuXG4gIGdldFNlc3Npb25Ub2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uVG9rZW5cbiAgfVxuXG4gIGdldCgpOiBDcmVkZW50aWFscyB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxufVxuXG4vLyBkZXByZWNhdGVkIGRlZmF1bHQgZXhwb3J0LCBwbGVhc2UgdXNlIG5hbWVkIGV4cG9ydHMuXG4vLyBrZWVwIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1kZWZhdWx0LWV4cG9ydFxuZXhwb3J0IGRlZmF1bHQgQ3JlZGVudGlhbHNcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxNQUFNQSxXQUFXLENBQUM7RUFLdkJDLFdBQVdBLENBQUM7SUFBRUMsU0FBUztJQUFFQyxTQUFTO0lBQUVDO0VBQThFLENBQUMsRUFBRTtJQUNuSCxJQUFJLENBQUNGLFNBQVMsR0FBR0EsU0FBUztJQUMxQixJQUFJLENBQUNDLFNBQVMsR0FBR0EsU0FBUztJQUMxQixJQUFJLENBQUNDLFlBQVksR0FBR0EsWUFBWTtFQUNsQztFQUVBQyxZQUFZQSxDQUFDSCxTQUFpQixFQUFFO0lBQzlCLElBQUksQ0FBQ0EsU0FBUyxHQUFHQSxTQUFTO0VBQzVCO0VBRUFJLFlBQVlBLENBQUEsRUFBRztJQUNiLE9BQU8sSUFBSSxDQUFDSixTQUFTO0VBQ3ZCO0VBRUFLLFlBQVlBLENBQUNKLFNBQWlCLEVBQUU7SUFDOUIsSUFBSSxDQUFDQSxTQUFTLEdBQUdBLFNBQVM7RUFDNUI7RUFFQUssWUFBWUEsQ0FBQSxFQUFHO0lBQ2IsT0FBTyxJQUFJLENBQUNMLFNBQVM7RUFDdkI7RUFFQU0sZUFBZUEsQ0FBQ0wsWUFBb0IsRUFBRTtJQUNwQyxJQUFJLENBQUNBLFlBQVksR0FBR0EsWUFBWTtFQUNsQztFQUVBTSxlQUFlQSxDQUFBLEVBQUc7SUFDaEIsT0FBTyxJQUFJLENBQUNOLFlBQVk7RUFDMUI7RUFFQU8sR0FBR0EsQ0FBQSxFQUFnQjtJQUNqQixPQUFPLElBQUk7RUFDYjtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUFBQyxPQUFBLENBQUFaLFdBQUEsR0FBQUEsV0FBQTtBQUFBLElBQUFhLFFBQUEsR0FDZWIsV0FBVztBQUFBWSxPQUFBLENBQUFFLE9BQUEsR0FBQUQsUUFBQSJ9
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as http from 'node:http';
|
|
3
|
+
import { CredentialProvider } from "./CredentialProvider.js";
|
|
4
|
+
import { Credentials } from "./Credentials.js";
|
|
5
|
+
export interface IamAwsProviderOptions {
|
|
6
|
+
customEndpoint?: string;
|
|
7
|
+
transportAgent?: http.Agent;
|
|
8
|
+
}
|
|
9
|
+
export declare class IamAwsProvider extends CredentialProvider {
|
|
10
|
+
private readonly customEndpoint?;
|
|
11
|
+
private _credentials;
|
|
12
|
+
private readonly transportAgent?;
|
|
13
|
+
private accessExpiresAt;
|
|
14
|
+
constructor({
|
|
15
|
+
customEndpoint,
|
|
16
|
+
transportAgent
|
|
17
|
+
}: IamAwsProviderOptions);
|
|
18
|
+
getCredentials(): Promise<Credentials>;
|
|
19
|
+
private fetchCredentials;
|
|
20
|
+
private fetchCredentialsUsingTokenFile;
|
|
21
|
+
private fetchImdsToken;
|
|
22
|
+
private getIamRoleNamedUrl;
|
|
23
|
+
private getIamRoleName;
|
|
24
|
+
private requestCredentials;
|
|
25
|
+
private isAboutToExpire;
|
|
26
|
+
}
|
|
27
|
+
export default IamAwsProvider;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var fs = _interopRequireWildcard(require("fs/promises"), true);
|
|
7
|
+
var http = _interopRequireWildcard(require("http"), true);
|
|
8
|
+
var https = _interopRequireWildcard(require("https"), true);
|
|
9
|
+
var _url = require("url");
|
|
10
|
+
var _CredentialProvider = require("./CredentialProvider.js");
|
|
11
|
+
var _Credentials = require("./Credentials.js");
|
|
12
|
+
var _helper = require("./internal/helper.js");
|
|
13
|
+
var _request = require("./internal/request.js");
|
|
14
|
+
var _response = require("./internal/response.js");
|
|
15
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
+
class IamAwsProvider extends _CredentialProvider.CredentialProvider {
|
|
18
|
+
accessExpiresAt = '';
|
|
19
|
+
constructor({
|
|
20
|
+
customEndpoint = undefined,
|
|
21
|
+
transportAgent = undefined
|
|
22
|
+
}) {
|
|
23
|
+
super({
|
|
24
|
+
accessKey: '',
|
|
25
|
+
secretKey: ''
|
|
26
|
+
});
|
|
27
|
+
this.customEndpoint = customEndpoint;
|
|
28
|
+
this.transportAgent = transportAgent;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Internal Tracking variables
|
|
32
|
+
*/
|
|
33
|
+
this._credentials = null;
|
|
34
|
+
}
|
|
35
|
+
async getCredentials() {
|
|
36
|
+
if (!this._credentials || this.isAboutToExpire()) {
|
|
37
|
+
this._credentials = await this.fetchCredentials();
|
|
38
|
+
}
|
|
39
|
+
return this._credentials;
|
|
40
|
+
}
|
|
41
|
+
async fetchCredentials() {
|
|
42
|
+
try {
|
|
43
|
+
// check for IRSA (https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)
|
|
44
|
+
const tokenFile = process.env.AWS_WEB_IDENTITY_TOKEN_FILE;
|
|
45
|
+
if (tokenFile) {
|
|
46
|
+
return await this.fetchCredentialsUsingTokenFile(tokenFile);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// try with IAM role for EC2 instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)
|
|
50
|
+
let tokenHeader = 'Authorization';
|
|
51
|
+
let token = process.env.AWS_CONTAINER_AUTHORIZATION_TOKEN;
|
|
52
|
+
const relativeUri = process.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI;
|
|
53
|
+
const fullUri = process.env.AWS_CONTAINER_CREDENTIALS_FULL_URI;
|
|
54
|
+
let url;
|
|
55
|
+
if (relativeUri) {
|
|
56
|
+
url = new _url.URL(relativeUri, 'http://169.254.170.2');
|
|
57
|
+
} else if (fullUri) {
|
|
58
|
+
url = new _url.URL(fullUri);
|
|
59
|
+
} else {
|
|
60
|
+
token = await this.fetchImdsToken();
|
|
61
|
+
tokenHeader = 'X-aws-ec2-metadata-token';
|
|
62
|
+
url = await this.getIamRoleNamedUrl(token);
|
|
63
|
+
}
|
|
64
|
+
return this.requestCredentials(url, tokenHeader, token);
|
|
65
|
+
} catch (err) {
|
|
66
|
+
throw new Error(`Failed to get Credentials: ${err}`, {
|
|
67
|
+
cause: err
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async fetchCredentialsUsingTokenFile(tokenFile) {
|
|
72
|
+
const token = await fs.readFile(tokenFile, {
|
|
73
|
+
encoding: 'utf8'
|
|
74
|
+
});
|
|
75
|
+
const region = process.env.AWS_REGION;
|
|
76
|
+
const stsEndpoint = new _url.URL(region ? `https://sts.${region}.amazonaws.com` : 'https://sts.amazonaws.com');
|
|
77
|
+
const hostValue = stsEndpoint.hostname;
|
|
78
|
+
const portValue = stsEndpoint.port;
|
|
79
|
+
const qryParams = new _url.URLSearchParams({
|
|
80
|
+
Action: 'AssumeRoleWithWebIdentity',
|
|
81
|
+
Version: '2011-06-15'
|
|
82
|
+
});
|
|
83
|
+
const roleArn = process.env.AWS_ROLE_ARN;
|
|
84
|
+
if (roleArn) {
|
|
85
|
+
qryParams.set('RoleArn', roleArn);
|
|
86
|
+
const roleSessionName = process.env.AWS_ROLE_SESSION_NAME;
|
|
87
|
+
qryParams.set('RoleSessionName', roleSessionName ? roleSessionName : Date.now().toString());
|
|
88
|
+
}
|
|
89
|
+
qryParams.set('WebIdentityToken', token);
|
|
90
|
+
qryParams.sort();
|
|
91
|
+
const requestOptions = {
|
|
92
|
+
hostname: hostValue,
|
|
93
|
+
port: portValue,
|
|
94
|
+
path: `${stsEndpoint.pathname}?${qryParams.toString()}`,
|
|
95
|
+
protocol: stsEndpoint.protocol,
|
|
96
|
+
method: 'POST',
|
|
97
|
+
headers: {},
|
|
98
|
+
agent: this.transportAgent
|
|
99
|
+
};
|
|
100
|
+
const transport = stsEndpoint.protocol === 'http:' ? http : https;
|
|
101
|
+
const res = await (0, _request.request)(transport, requestOptions, null);
|
|
102
|
+
const body = await (0, _response.readAsString)(res);
|
|
103
|
+
const assumeRoleResponse = (0, _helper.parseXml)(body);
|
|
104
|
+
const creds = assumeRoleResponse.AssumeRoleWithWebIdentityResponse.AssumeRoleWithWebIdentityResult.Credentials;
|
|
105
|
+
this.accessExpiresAt = creds.Expiration;
|
|
106
|
+
return new _Credentials.Credentials({
|
|
107
|
+
accessKey: creds.AccessKeyId,
|
|
108
|
+
secretKey: creds.SecretAccessKey,
|
|
109
|
+
sessionToken: creds.SessionToken
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
async fetchImdsToken() {
|
|
113
|
+
const endpoint = this.customEndpoint ? this.customEndpoint : 'http://169.254.169.254';
|
|
114
|
+
const url = new _url.URL('/latest/api/token', endpoint);
|
|
115
|
+
const requestOptions = {
|
|
116
|
+
hostname: url.hostname,
|
|
117
|
+
port: url.port,
|
|
118
|
+
path: `${url.pathname}${url.search}`,
|
|
119
|
+
protocol: url.protocol,
|
|
120
|
+
method: 'PUT',
|
|
121
|
+
headers: {
|
|
122
|
+
'X-aws-ec2-metadata-token-ttl-seconds': '21600'
|
|
123
|
+
},
|
|
124
|
+
agent: this.transportAgent
|
|
125
|
+
};
|
|
126
|
+
const transport = url.protocol === 'http:' ? http : https;
|
|
127
|
+
const res = await (0, _request.request)(transport, requestOptions, null);
|
|
128
|
+
return await (0, _response.readAsString)(res);
|
|
129
|
+
}
|
|
130
|
+
async getIamRoleNamedUrl(token) {
|
|
131
|
+
const endpoint = this.customEndpoint ? this.customEndpoint : 'http://169.254.169.254';
|
|
132
|
+
const url = new _url.URL('latest/meta-data/iam/security-credentials/', endpoint);
|
|
133
|
+
const roleName = await this.getIamRoleName(url, token);
|
|
134
|
+
return new _url.URL(`${url.pathname}/${encodeURIComponent(roleName)}`, url.origin);
|
|
135
|
+
}
|
|
136
|
+
async getIamRoleName(url, token) {
|
|
137
|
+
const requestOptions = {
|
|
138
|
+
hostname: url.hostname,
|
|
139
|
+
port: url.port,
|
|
140
|
+
path: `${url.pathname}${url.search}`,
|
|
141
|
+
protocol: url.protocol,
|
|
142
|
+
method: 'GET',
|
|
143
|
+
headers: {
|
|
144
|
+
'X-aws-ec2-metadata-token': token
|
|
145
|
+
},
|
|
146
|
+
agent: this.transportAgent
|
|
147
|
+
};
|
|
148
|
+
const transport = url.protocol === 'http:' ? http : https;
|
|
149
|
+
const res = await (0, _request.request)(transport, requestOptions, null);
|
|
150
|
+
const body = await (0, _response.readAsString)(res);
|
|
151
|
+
const roleNames = body.split(/\r\n|[\n\r\u2028\u2029]/);
|
|
152
|
+
if (roleNames.length === 0) {
|
|
153
|
+
throw new Error(`No IAM roles attached to EC2 service ${url}`);
|
|
154
|
+
}
|
|
155
|
+
return roleNames[0];
|
|
156
|
+
}
|
|
157
|
+
async requestCredentials(url, tokenHeader, token) {
|
|
158
|
+
const headers = {};
|
|
159
|
+
if (token) {
|
|
160
|
+
headers[tokenHeader] = token;
|
|
161
|
+
}
|
|
162
|
+
const requestOptions = {
|
|
163
|
+
hostname: url.hostname,
|
|
164
|
+
port: url.port,
|
|
165
|
+
path: `${url.pathname}${url.search}`,
|
|
166
|
+
protocol: url.protocol,
|
|
167
|
+
method: 'GET',
|
|
168
|
+
headers: headers,
|
|
169
|
+
agent: this.transportAgent
|
|
170
|
+
};
|
|
171
|
+
const transport = url.protocol === 'http:' ? http : https;
|
|
172
|
+
const res = await (0, _request.request)(transport, requestOptions, null);
|
|
173
|
+
const body = await (0, _response.readAsString)(res);
|
|
174
|
+
const ecsCredentials = JSON.parse(body);
|
|
175
|
+
if (!ecsCredentials.Code || ecsCredentials.Code != 'Success') {
|
|
176
|
+
throw new Error(`${url} failed with code ${ecsCredentials.Code} and message ${ecsCredentials.Message}`);
|
|
177
|
+
}
|
|
178
|
+
this.accessExpiresAt = ecsCredentials.Expiration;
|
|
179
|
+
return new _Credentials.Credentials({
|
|
180
|
+
accessKey: ecsCredentials.AccessKeyID,
|
|
181
|
+
secretKey: ecsCredentials.SecretAccessKey,
|
|
182
|
+
sessionToken: ecsCredentials.Token
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
isAboutToExpire() {
|
|
186
|
+
const expiresAt = new Date(this.accessExpiresAt);
|
|
187
|
+
const provisionalExpiry = new Date(Date.now() + 1000 * 10); // 10 seconds leeway
|
|
188
|
+
return provisionalExpiry > expiresAt;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// deprecated default export, please use named exports.
|
|
193
|
+
// keep for backward compatibility.
|
|
194
|
+
// eslint-disable-next-line import/no-default-export
|
|
195
|
+
exports.IamAwsProvider = IamAwsProvider;
|
|
196
|
+
var _default = IamAwsProvider;
|
|
197
|
+
exports.default = _default;
|
|
198
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsImh0dHAiLCJodHRwcyIsIl91cmwiLCJfQ3JlZGVudGlhbFByb3ZpZGVyIiwiX0NyZWRlbnRpYWxzIiwiX2hlbHBlciIsIl9yZXF1ZXN0IiwiX3Jlc3BvbnNlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIklhbUF3c1Byb3ZpZGVyIiwiQ3JlZGVudGlhbFByb3ZpZGVyIiwiYWNjZXNzRXhwaXJlc0F0IiwiY29uc3RydWN0b3IiLCJjdXN0b21FbmRwb2ludCIsInVuZGVmaW5lZCIsInRyYW5zcG9ydEFnZW50IiwiYWNjZXNzS2V5Iiwic2VjcmV0S2V5IiwiX2NyZWRlbnRpYWxzIiwiZ2V0Q3JlZGVudGlhbHMiLCJpc0Fib3V0VG9FeHBpcmUiLCJmZXRjaENyZWRlbnRpYWxzIiwidG9rZW5GaWxlIiwicHJvY2VzcyIsImVudiIsIkFXU19XRUJfSURFTlRJVFlfVE9LRU5fRklMRSIsImZldGNoQ3JlZGVudGlhbHNVc2luZ1Rva2VuRmlsZSIsInRva2VuSGVhZGVyIiwidG9rZW4iLCJBV1NfQ09OVEFJTkVSX0FVVEhPUklaQVRJT05fVE9LRU4iLCJyZWxhdGl2ZVVyaSIsIkFXU19DT05UQUlORVJfQ1JFREVOVElBTFNfUkVMQVRJVkVfVVJJIiwiZnVsbFVyaSIsIkFXU19DT05UQUlORVJfQ1JFREVOVElBTFNfRlVMTF9VUkkiLCJ1cmwiLCJVUkwiLCJmZXRjaEltZHNUb2tlbiIsImdldElhbVJvbGVOYW1lZFVybCIsInJlcXVlc3RDcmVkZW50aWFscyIsImVyciIsIkVycm9yIiwiY2F1c2UiLCJyZWFkRmlsZSIsImVuY29kaW5nIiwicmVnaW9uIiwiQVdTX1JFR0lPTiIsInN0c0VuZHBvaW50IiwiaG9zdFZhbHVlIiwiaG9zdG5hbWUiLCJwb3J0VmFsdWUiLCJwb3J0IiwicXJ5UGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiQWN0aW9uIiwiVmVyc2lvbiIsInJvbGVBcm4iLCJBV1NfUk9MRV9BUk4iLCJyb2xlU2Vzc2lvbk5hbWUiLCJBV1NfUk9MRV9TRVNTSU9OX05BTUUiLCJEYXRlIiwibm93IiwidG9TdHJpbmciLCJzb3J0IiwicmVxdWVzdE9wdGlvbnMiLCJwYXRoIiwicGF0aG5hbWUiLCJwcm90b2NvbCIsIm1ldGhvZCIsImhlYWRlcnMiLCJhZ2VudCIsInRyYW5zcG9ydCIsInJlcyIsInJlcXVlc3QiLCJib2R5IiwicmVhZEFzU3RyaW5nIiwiYXNzdW1lUm9sZVJlc3BvbnNlIiwicGFyc2VYbWwiLCJjcmVkcyIsIkFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHlSZXNwb25zZSIsIkFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHlSZXN1bHQiLCJDcmVkZW50aWFscyIsIkV4cGlyYXRpb24iLCJBY2Nlc3NLZXlJZCIsIlNlY3JldEFjY2Vzc0tleSIsInNlc3Npb25Ub2tlbiIsIlNlc3Npb25Ub2tlbiIsImVuZHBvaW50Iiwic2VhcmNoIiwicm9sZU5hbWUiLCJnZXRJYW1Sb2xlTmFtZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIm9yaWdpbiIsInJvbGVOYW1lcyIsInNwbGl0IiwibGVuZ3RoIiwiZWNzQ3JlZGVudGlhbHMiLCJKU09OIiwicGFyc2UiLCJDb2RlIiwiTWVzc2FnZSIsIkFjY2Vzc0tleUlEIiwiVG9rZW4iLCJleHBpcmVzQXQiLCJwcm92aXNpb25hbEV4cGlyeSIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIklhbUF3c1Byb3ZpZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ25vZGU6aHR0cCdcbmltcG9ydCAqIGFzIGh0dHBzIGZyb20gJ25vZGU6aHR0cHMnXG5pbXBvcnQgeyBVUkwsIFVSTFNlYXJjaFBhcmFtcyB9IGZyb20gJ25vZGU6dXJsJ1xuXG5pbXBvcnQgeyBDcmVkZW50aWFsUHJvdmlkZXIgfSBmcm9tICcuL0NyZWRlbnRpYWxQcm92aWRlci50cydcbmltcG9ydCB7IENyZWRlbnRpYWxzIH0gZnJvbSAnLi9DcmVkZW50aWFscy50cydcbmltcG9ydCB7IHBhcnNlWG1sIH0gZnJvbSAnLi9pbnRlcm5hbC9oZWxwZXIudHMnXG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSAnLi9pbnRlcm5hbC9yZXF1ZXN0LnRzJ1xuaW1wb3J0IHsgcmVhZEFzU3RyaW5nIH0gZnJvbSAnLi9pbnRlcm5hbC9yZXNwb25zZS50cydcblxuaW50ZXJmYWNlIEFzc3VtZVJvbGVSZXNwb25zZSB7XG4gIEFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHlSZXNwb25zZToge1xuICAgIEFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHlSZXN1bHQ6IHtcbiAgICAgIENyZWRlbnRpYWxzOiB7XG4gICAgICAgIEFjY2Vzc0tleUlkOiBzdHJpbmdcbiAgICAgICAgU2VjcmV0QWNjZXNzS2V5OiBzdHJpbmdcbiAgICAgICAgU2Vzc2lvblRva2VuOiBzdHJpbmdcbiAgICAgICAgRXhwaXJhdGlvbjogc3RyaW5nXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBFY3NDcmVkZW50aWFscyB7XG4gIEFjY2Vzc0tleUlEOiBzdHJpbmdcbiAgU2VjcmV0QWNjZXNzS2V5OiBzdHJpbmdcbiAgVG9rZW46IHN0cmluZ1xuICBFeHBpcmF0aW9uOiBzdHJpbmdcbiAgQ29kZTogc3RyaW5nXG4gIE1lc3NhZ2U6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElhbUF3c1Byb3ZpZGVyT3B0aW9ucyB7XG4gIGN1c3RvbUVuZHBvaW50Pzogc3RyaW5nXG4gIHRyYW5zcG9ydEFnZW50PzogaHR0cC5BZ2VudFxufVxuXG5leHBvcnQgY2xhc3MgSWFtQXdzUHJvdmlkZXIgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbUVuZHBvaW50Pzogc3RyaW5nXG5cbiAgcHJpdmF0ZSBfY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzIHwgbnVsbFxuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zcG9ydEFnZW50PzogaHR0cC5BZ2VudFxuICBwcml2YXRlIGFjY2Vzc0V4cGlyZXNBdCA9ICcnXG5cbiAgY29uc3RydWN0b3IoeyBjdXN0b21FbmRwb2ludCA9IHVuZGVmaW5lZCwgdHJhbnNwb3J0QWdlbnQgPSB1bmRlZmluZWQgfTogSWFtQXdzUHJvdmlkZXJPcHRpb25zKSB7XG4gICAgc3VwZXIoeyBhY2Nlc3NLZXk6ICcnLCBzZWNyZXRLZXk6ICcnIH0pXG5cbiAgICB0aGlzLmN1c3RvbUVuZHBvaW50ID0gY3VzdG9tRW5kcG9pbnRcbiAgICB0aGlzLnRyYW5zcG9ydEFnZW50ID0gdHJhbnNwb3J0QWdlbnRcblxuICAgIC8qKlxuICAgICAqIEludGVybmFsIFRyYWNraW5nIHZhcmlhYmxlc1xuICAgICAqL1xuICAgIHRoaXMuX2NyZWRlbnRpYWxzID0gbnVsbFxuICB9XG5cbiAgYXN5bmMgZ2V0Q3JlZGVudGlhbHMoKTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGlmICghdGhpcy5fY3JlZGVudGlhbHMgfHwgdGhpcy5pc0Fib3V0VG9FeHBpcmUoKSkge1xuICAgICAgdGhpcy5fY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmZldGNoQ3JlZGVudGlhbHMoKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlZGVudGlhbHNcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hDcmVkZW50aWFscygpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGNoZWNrIGZvciBJUlNBIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWtzL2xhdGVzdC91c2VyZ3VpZGUvaWFtLXJvbGVzLWZvci1zZXJ2aWNlLWFjY291bnRzLmh0bWwpXG4gICAgICBjb25zdCB0b2tlbkZpbGUgPSBwcm9jZXNzLmVudi5BV1NfV0VCX0lERU5USVRZX1RPS0VOX0ZJTEVcbiAgICAgIGlmICh0b2tlbkZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmV0Y2hDcmVkZW50aWFsc1VzaW5nVG9rZW5GaWxlKHRva2VuRmlsZSlcbiAgICAgIH1cblxuICAgICAgLy8gdHJ5IHdpdGggSUFNIHJvbGUgZm9yIEVDMiBpbnN0YW5jZXMgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9pYW0tcm9sZXMtZm9yLWFtYXpvbi1lYzIuaHRtbClcbiAgICAgIGxldCB0b2tlbkhlYWRlciA9ICdBdXRob3JpemF0aW9uJ1xuICAgICAgbGV0IHRva2VuID0gcHJvY2Vzcy5lbnYuQVdTX0NPTlRBSU5FUl9BVVRIT1JJWkFUSU9OX1RPS0VOXG4gICAgICBjb25zdCByZWxhdGl2ZVVyaSA9IHByb2Nlc3MuZW52LkFXU19DT05UQUlORVJfQ1JFREVOVElBTFNfUkVMQVRJVkVfVVJJXG4gICAgICBjb25zdCBmdWxsVXJpID0gcHJvY2Vzcy5lbnYuQVdTX0NPTlRBSU5FUl9DUkVERU5USUFMU19GVUxMX1VSSVxuICAgICAgbGV0IHVybDogVVJMXG4gICAgICBpZiAocmVsYXRpdmVVcmkpIHtcbiAgICAgICAgdXJsID0gbmV3IFVSTChyZWxhdGl2ZVVyaSwgJ2h0dHA6Ly8xNjkuMjU0LjE3MC4yJylcbiAgICAgIH0gZWxzZSBpZiAoZnVsbFVyaSkge1xuICAgICAgICB1cmwgPSBuZXcgVVJMKGZ1bGxVcmkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbiA9IGF3YWl0IHRoaXMuZmV0Y2hJbWRzVG9rZW4oKVxuICAgICAgICB0b2tlbkhlYWRlciA9ICdYLWF3cy1lYzItbWV0YWRhdGEtdG9rZW4nXG4gICAgICAgIHVybCA9IGF3YWl0IHRoaXMuZ2V0SWFtUm9sZU5hbWVkVXJsKHRva2VuKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0Q3JlZGVudGlhbHModXJsLCB0b2tlbkhlYWRlciwgdG9rZW4pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgQ3JlZGVudGlhbHM6ICR7ZXJyfWAsIHsgY2F1c2U6IGVyciB9KVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hDcmVkZW50aWFsc1VzaW5nVG9rZW5GaWxlKHRva2VuRmlsZTogc3RyaW5nKTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgZnMucmVhZEZpbGUodG9rZW5GaWxlLCB7IGVuY29kaW5nOiAndXRmOCcgfSlcbiAgICBjb25zdCByZWdpb24gPSBwcm9jZXNzLmVudi5BV1NfUkVHSU9OXG4gICAgY29uc3Qgc3RzRW5kcG9pbnQgPSBuZXcgVVJMKHJlZ2lvbiA/IGBodHRwczovL3N0cy4ke3JlZ2lvbn0uYW1hem9uYXdzLmNvbWAgOiAnaHR0cHM6Ly9zdHMuYW1hem9uYXdzLmNvbScpXG5cbiAgICBjb25zdCBob3N0VmFsdWUgPSBzdHNFbmRwb2ludC5ob3N0bmFtZVxuICAgIGNvbnN0IHBvcnRWYWx1ZSA9IHN0c0VuZHBvaW50LnBvcnRcbiAgICBjb25zdCBxcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgIEFjdGlvbjogJ0Fzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHknLFxuICAgICAgVmVyc2lvbjogJzIwMTEtMDYtMTUnLFxuICAgIH0pXG5cbiAgICBjb25zdCByb2xlQXJuID0gcHJvY2Vzcy5lbnYuQVdTX1JPTEVfQVJOXG4gICAgaWYgKHJvbGVBcm4pIHtcbiAgICAgIHFyeVBhcmFtcy5zZXQoJ1JvbGVBcm4nLCByb2xlQXJuKVxuICAgICAgY29uc3Qgcm9sZVNlc3Npb25OYW1lID0gcHJvY2Vzcy5lbnYuQVdTX1JPTEVfU0VTU0lPTl9OQU1FXG4gICAgICBxcnlQYXJhbXMuc2V0KCdSb2xlU2Vzc2lvbk5hbWUnLCByb2xlU2Vzc2lvbk5hbWUgPyByb2xlU2Vzc2lvbk5hbWUgOiBEYXRlLm5vdygpLnRvU3RyaW5nKCkpXG4gICAgfVxuXG4gICAgcXJ5UGFyYW1zLnNldCgnV2ViSWRlbnRpdHlUb2tlbicsIHRva2VuKVxuICAgIHFyeVBhcmFtcy5zb3J0KClcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgaG9zdG5hbWU6IGhvc3RWYWx1ZSxcbiAgICAgIHBvcnQ6IHBvcnRWYWx1ZSxcbiAgICAgIHBhdGg6IGAke3N0c0VuZHBvaW50LnBhdGhuYW1lfT8ke3FyeVBhcmFtcy50b1N0cmluZygpfWAsXG4gICAgICBwcm90b2NvbDogc3RzRW5kcG9pbnQucHJvdG9jb2wsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgYWdlbnQ6IHRoaXMudHJhbnNwb3J0QWdlbnQsXG4gICAgfSBzYXRpc2ZpZXMgaHR0cC5SZXF1ZXN0T3B0aW9uc1xuXG4gICAgY29uc3QgdHJhbnNwb3J0ID0gc3RzRW5kcG9pbnQucHJvdG9jb2wgPT09ICdodHRwOicgPyBodHRwIDogaHR0cHNcbiAgICBjb25zdCByZXMgPSBhd2FpdCByZXF1ZXN0KHRyYW5zcG9ydCwgcmVxdWVzdE9wdGlvbnMsIG51bGwpXG4gICAgY29uc3QgYm9keSA9IGF3YWl0IHJlYWRBc1N0cmluZyhyZXMpXG5cbiAgICBjb25zdCBhc3N1bWVSb2xlUmVzcG9uc2U6IEFzc3VtZVJvbGVSZXNwb25zZSA9IHBhcnNlWG1sKGJvZHkpXG4gICAgY29uc3QgY3JlZHMgPSBhc3N1bWVSb2xlUmVzcG9uc2UuQXNzdW1lUm9sZVdpdGhXZWJJZGVudGl0eVJlc3BvbnNlLkFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHlSZXN1bHQuQ3JlZGVudGlhbHNcbiAgICB0aGlzLmFjY2Vzc0V4cGlyZXNBdCA9IGNyZWRzLkV4cGlyYXRpb25cbiAgICByZXR1cm4gbmV3IENyZWRlbnRpYWxzKHtcbiAgICAgIGFjY2Vzc0tleTogY3JlZHMuQWNjZXNzS2V5SWQsXG4gICAgICBzZWNyZXRLZXk6IGNyZWRzLlNlY3JldEFjY2Vzc0tleSxcbiAgICAgIHNlc3Npb25Ub2tlbjogY3JlZHMuU2Vzc2lvblRva2VuLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoSW1kc1Rva2VuKCkge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5jdXN0b21FbmRwb2ludCA/IHRoaXMuY3VzdG9tRW5kcG9pbnQgOiAnaHR0cDovLzE2OS4yNTQuMTY5LjI1NCdcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKCcvbGF0ZXN0L2FwaS90b2tlbicsIGVuZHBvaW50KVxuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICBob3N0bmFtZTogdXJsLmhvc3RuYW1lLFxuICAgICAgcG9ydDogdXJsLnBvcnQsXG4gICAgICBwYXRoOiBgJHt1cmwucGF0aG5hbWV9JHt1cmwuc2VhcmNofWAsXG4gICAgICBwcm90b2NvbDogdXJsLnByb3RvY29sLFxuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ1gtYXdzLWVjMi1tZXRhZGF0YS10b2tlbi10dGwtc2Vjb25kcyc6ICcyMTYwMCcsXG4gICAgICB9LFxuICAgICAgYWdlbnQ6IHRoaXMudHJhbnNwb3J0QWdlbnQsXG4gICAgfSBzYXRpc2ZpZXMgaHR0cC5SZXF1ZXN0T3B0aW9uc1xuXG4gICAgY29uc3QgdHJhbnNwb3J0ID0gdXJsLnByb3RvY29sID09PSAnaHR0cDonID8gaHR0cCA6IGh0dHBzXG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdCh0cmFuc3BvcnQsIHJlcXVlc3RPcHRpb25zLCBudWxsKVxuICAgIHJldHVybiBhd2FpdCByZWFkQXNTdHJpbmcocmVzKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRJYW1Sb2xlTmFtZWRVcmwodG9rZW46IHN0cmluZykge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5jdXN0b21FbmRwb2ludCA/IHRoaXMuY3VzdG9tRW5kcG9pbnQgOiAnaHR0cDovLzE2OS4yNTQuMTY5LjI1NCdcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKCdsYXRlc3QvbWV0YS1kYXRhL2lhbS9zZWN1cml0eS1jcmVkZW50aWFscy8nLCBlbmRwb2ludClcblxuICAgIGNvbnN0IHJvbGVOYW1lID0gYXdhaXQgdGhpcy5nZXRJYW1Sb2xlTmFtZSh1cmwsIHRva2VuKVxuICAgIHJldHVybiBuZXcgVVJMKGAke3VybC5wYXRobmFtZX0vJHtlbmNvZGVVUklDb21wb25lbnQocm9sZU5hbWUpfWAsIHVybC5vcmlnaW4pXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldElhbVJvbGVOYW1lKHVybDogVVJMLCB0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgIGhvc3RuYW1lOiB1cmwuaG9zdG5hbWUsXG4gICAgICBwb3J0OiB1cmwucG9ydCxcbiAgICAgIHBhdGg6IGAke3VybC5wYXRobmFtZX0ke3VybC5zZWFyY2h9YCxcbiAgICAgIHByb3RvY29sOiB1cmwucHJvdG9jb2wsXG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnWC1hd3MtZWMyLW1ldGFkYXRhLXRva2VuJzogdG9rZW4sXG4gICAgICB9LFxuICAgICAgYWdlbnQ6IHRoaXMudHJhbnNwb3J0QWdlbnQsXG4gICAgfSBzYXRpc2ZpZXMgaHR0cC5SZXF1ZXN0T3B0aW9uc1xuXG4gICAgY29uc3QgdHJhbnNwb3J0ID0gdXJsLnByb3RvY29sID09PSAnaHR0cDonID8gaHR0cCA6IGh0dHBzXG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdCh0cmFuc3BvcnQsIHJlcXVlc3RPcHRpb25zLCBudWxsKVxuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCByZWFkQXNTdHJpbmcocmVzKVxuICAgIGNvbnN0IHJvbGVOYW1lcyA9IGJvZHkuc3BsaXQoL1xcclxcbnxbXFxuXFxyXFx1MjAyOFxcdTIwMjldLylcbiAgICBpZiAocm9sZU5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBJQU0gcm9sZXMgYXR0YWNoZWQgdG8gRUMyIHNlcnZpY2UgJHt1cmx9YClcbiAgICB9XG4gICAgcmV0dXJuIHJvbGVOYW1lc1swXSBhcyBzdHJpbmdcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVxdWVzdENyZWRlbnRpYWxzKHVybDogVVJMLCB0b2tlbkhlYWRlcjogc3RyaW5nLCB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuICAgIGlmICh0b2tlbikge1xuICAgICAgaGVhZGVyc1t0b2tlbkhlYWRlcl0gPSB0b2tlblxuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgIGhvc3RuYW1lOiB1cmwuaG9zdG5hbWUsXG4gICAgICBwb3J0OiB1cmwucG9ydCxcbiAgICAgIHBhdGg6IGAke3VybC5wYXRobmFtZX0ke3VybC5zZWFyY2h9YCxcbiAgICAgIHByb3RvY29sOiB1cmwucHJvdG9jb2wsXG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgIGFnZW50OiB0aGlzLnRyYW5zcG9ydEFnZW50LFxuICAgIH0gc2F0aXNmaWVzIGh0dHAuUmVxdWVzdE9wdGlvbnNcblxuICAgIGNvbnN0IHRyYW5zcG9ydCA9IHVybC5wcm90b2NvbCA9PT0gJ2h0dHA6JyA/IGh0dHAgOiBodHRwc1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlcXVlc3QodHJhbnNwb3J0LCByZXF1ZXN0T3B0aW9ucywgbnVsbClcbiAgICBjb25zdCBib2R5ID0gYXdhaXQgcmVhZEFzU3RyaW5nKHJlcylcbiAgICBjb25zdCBlY3NDcmVkZW50aWFscyA9IEpTT04ucGFyc2UoYm9keSkgYXMgRWNzQ3JlZGVudGlhbHNcbiAgICBpZiAoIWVjc0NyZWRlbnRpYWxzLkNvZGUgfHwgZWNzQ3JlZGVudGlhbHMuQ29kZSAhPSAnU3VjY2VzcycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt1cmx9IGZhaWxlZCB3aXRoIGNvZGUgJHtlY3NDcmVkZW50aWFscy5Db2RlfSBhbmQgbWVzc2FnZSAke2Vjc0NyZWRlbnRpYWxzLk1lc3NhZ2V9YClcbiAgICB9XG5cbiAgICB0aGlzLmFjY2Vzc0V4cGlyZXNBdCA9IGVjc0NyZWRlbnRpYWxzLkV4cGlyYXRpb25cbiAgICByZXR1cm4gbmV3IENyZWRlbnRpYWxzKHtcbiAgICAgIGFjY2Vzc0tleTogZWNzQ3JlZGVudGlhbHMuQWNjZXNzS2V5SUQsXG4gICAgICBzZWNyZXRLZXk6IGVjc0NyZWRlbnRpYWxzLlNlY3JldEFjY2Vzc0tleSxcbiAgICAgIHNlc3Npb25Ub2tlbjogZWNzQ3JlZGVudGlhbHMuVG9rZW4sXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgaXNBYm91dFRvRXhwaXJlKCkge1xuICAgIGNvbnN0IGV4cGlyZXNBdCA9IG5ldyBEYXRlKHRoaXMuYWNjZXNzRXhwaXJlc0F0KVxuICAgIGNvbnN0IHByb3Zpc2lvbmFsRXhwaXJ5ID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIDEwMDAgKiAxMCkgLy8gMTAgc2Vjb25kcyBsZWV3YXlcbiAgICByZXR1cm4gcHJvdmlzaW9uYWxFeHBpcnkgPiBleHBpcmVzQXRcbiAgfVxufVxuXG4vLyBkZXByZWNhdGVkIGRlZmF1bHQgZXhwb3J0LCBwbGVhc2UgdXNlIG5hbWVkIGV4cG9ydHMuXG4vLyBrZWVwIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1kZWZhdWx0LWV4cG9ydFxuZXhwb3J0IGRlZmF1bHQgSWFtQXdzUHJvdmlkZXJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxFQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxJQUFBLEdBQUFGLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxJQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxtQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsU0FBQSxHQUFBUixPQUFBO0FBQXFELFNBQUFTLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFYLHdCQUFBZSxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9BQUEsRUFBQUYsR0FBQSxVQUFBRyxLQUFBLEdBQUFSLHdCQUFBLENBQUFDLFdBQUEsT0FBQU8sS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUosR0FBQSxZQUFBRyxLQUFBLENBQUFFLEdBQUEsQ0FBQUwsR0FBQSxTQUFBTSxNQUFBLFdBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLEdBQUEsSUFBQVgsR0FBQSxRQUFBVyxHQUFBLGtCQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFkLEdBQUEsRUFBQVcsR0FBQSxTQUFBSSxJQUFBLEdBQUFSLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQVYsR0FBQSxFQUFBVyxHQUFBLGNBQUFJLElBQUEsS0FBQUEsSUFBQSxDQUFBVixHQUFBLElBQUFVLElBQUEsQ0FBQUMsR0FBQSxLQUFBUixNQUFBLENBQUFDLGNBQUEsQ0FBQUgsTUFBQSxFQUFBSyxHQUFBLEVBQUFJLElBQUEsWUFBQVQsTUFBQSxDQUFBSyxHQUFBLElBQUFYLEdBQUEsQ0FBQVcsR0FBQSxTQUFBTCxNQUFBLENBQUFKLE9BQUEsR0FBQUYsR0FBQSxNQUFBRyxLQUFBLElBQUFBLEtBQUEsQ0FBQWEsR0FBQSxDQUFBaEIsR0FBQSxFQUFBTSxNQUFBLFlBQUFBLE1BQUE7QUE2QjlDLE1BQU1XLGNBQWMsU0FBU0Msc0NBQWtCLENBQUM7RUFLN0NDLGVBQWUsR0FBRyxFQUFFO0VBRTVCQyxXQUFXQSxDQUFDO0lBQUVDLGNBQWMsR0FBR0MsU0FBUztJQUFFQyxjQUFjLEdBQUdEO0VBQWlDLENBQUMsRUFBRTtJQUM3RixLQUFLLENBQUM7TUFBRUUsU0FBUyxFQUFFLEVBQUU7TUFBRUMsU0FBUyxFQUFFO0lBQUcsQ0FBQyxDQUFDO0lBRXZDLElBQUksQ0FBQ0osY0FBYyxHQUFHQSxjQUFjO0lBQ3BDLElBQUksQ0FBQ0UsY0FBYyxHQUFHQSxjQUFjOztJQUVwQztBQUNKO0FBQ0E7SUFDSSxJQUFJLENBQUNHLFlBQVksR0FBRyxJQUFJO0VBQzFCO0VBRUEsTUFBTUMsY0FBY0EsQ0FBQSxFQUF5QjtJQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDRCxZQUFZLElBQUksSUFBSSxDQUFDRSxlQUFlLENBQUMsQ0FBQyxFQUFFO01BQ2hELElBQUksQ0FBQ0YsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25EO0lBQ0EsT0FBTyxJQUFJLENBQUNILFlBQVk7RUFDMUI7RUFFQSxNQUFjRyxnQkFBZ0JBLENBQUEsRUFBeUI7SUFDckQsSUFBSTtNQUNGO01BQ0EsTUFBTUMsU0FBUyxHQUFHQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsMkJBQTJCO01BQ3pELElBQUlILFNBQVMsRUFBRTtRQUNiLE9BQU8sTUFBTSxJQUFJLENBQUNJLDhCQUE4QixDQUFDSixTQUFTLENBQUM7TUFDN0Q7O01BRUE7TUFDQSxJQUFJSyxXQUFXLEdBQUcsZUFBZTtNQUNqQyxJQUFJQyxLQUFLLEdBQUdMLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDSyxpQ0FBaUM7TUFDekQsTUFBTUMsV0FBVyxHQUFHUCxPQUFPLENBQUNDLEdBQUcsQ0FBQ08sc0NBQXNDO01BQ3RFLE1BQU1DLE9BQU8sR0FBR1QsT0FBTyxDQUFDQyxHQUFHLENBQUNTLGtDQUFrQztNQUM5RCxJQUFJQyxHQUFRO01BQ1osSUFBSUosV0FBVyxFQUFFO1FBQ2ZJLEdBQUcsR0FBRyxJQUFJQyxRQUFHLENBQUNMLFdBQVcsRUFBRSxzQkFBc0IsQ0FBQztNQUNwRCxDQUFDLE1BQU0sSUFBSUUsT0FBTyxFQUFFO1FBQ2xCRSxHQUFHLEdBQUcsSUFBSUMsUUFBRyxDQUFDSCxPQUFPLENBQUM7TUFDeEIsQ0FBQyxNQUFNO1FBQ0xKLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQ1EsY0FBYyxDQUFDLENBQUM7UUFDbkNULFdBQVcsR0FBRywwQkFBMEI7UUFDeENPLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQ0csa0JBQWtCLENBQUNULEtBQUssQ0FBQztNQUM1QztNQUVBLE9BQU8sSUFBSSxDQUFDVSxrQkFBa0IsQ0FBQ0osR0FBRyxFQUFFUCxXQUFXLEVBQUVDLEtBQUssQ0FBQztJQUN6RCxDQUFDLENBQUMsT0FBT1csR0FBRyxFQUFFO01BQ1osTUFBTSxJQUFJQyxLQUFLLENBQUUsOEJBQTZCRCxHQUFJLEVBQUMsRUFBRTtRQUFFRSxLQUFLLEVBQUVGO01BQUksQ0FBQyxDQUFDO0lBQ3RFO0VBQ0Y7RUFFQSxNQUFjYiw4QkFBOEJBLENBQUNKLFNBQWlCLEVBQXdCO0lBQ3BGLE1BQU1NLEtBQUssR0FBRyxNQUFNcEQsRUFBRSxDQUFDa0UsUUFBUSxDQUFDcEIsU0FBUyxFQUFFO01BQUVxQixRQUFRLEVBQUU7SUFBTyxDQUFDLENBQUM7SUFDaEUsTUFBTUMsTUFBTSxHQUFHckIsT0FBTyxDQUFDQyxHQUFHLENBQUNxQixVQUFVO0lBQ3JDLE1BQU1DLFdBQVcsR0FBRyxJQUFJWCxRQUFHLENBQUNTLE1BQU0sR0FBSSxlQUFjQSxNQUFPLGdCQUFlLEdBQUcsMkJBQTJCLENBQUM7SUFFekcsTUFBTUcsU0FBUyxHQUFHRCxXQUFXLENBQUNFLFFBQVE7SUFDdEMsTUFBTUMsU0FBUyxHQUFHSCxXQUFXLENBQUNJLElBQUk7SUFDbEMsTUFBTUMsU0FBUyxHQUFHLElBQUlDLG9CQUFlLENBQUM7TUFDcENDLE1BQU0sRUFBRSwyQkFBMkI7TUFDbkNDLE9BQU8sRUFBRTtJQUNYLENBQUMsQ0FBQztJQUVGLE1BQU1DLE9BQU8sR0FBR2hDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDZ0MsWUFBWTtJQUN4QyxJQUFJRCxPQUFPLEVBQUU7TUFDWEosU0FBUyxDQUFDM0MsR0FBRyxDQUFDLFNBQVMsRUFBRStDLE9BQU8sQ0FBQztNQUNqQyxNQUFNRSxlQUFlLEdBQUdsQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ2tDLHFCQUFxQjtNQUN6RFAsU0FBUyxDQUFDM0MsR0FBRyxDQUFDLGlCQUFpQixFQUFFaUQsZUFBZSxHQUFHQSxlQUFlLEdBQUdFLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM3RjtJQUVBVixTQUFTLENBQUMzQyxHQUFHLENBQUMsa0JBQWtCLEVBQUVvQixLQUFLLENBQUM7SUFDeEN1QixTQUFTLENBQUNXLElBQUksQ0FBQyxDQUFDO0lBRWhCLE1BQU1DLGNBQWMsR0FBRztNQUNyQmYsUUFBUSxFQUFFRCxTQUFTO01BQ25CRyxJQUFJLEVBQUVELFNBQVM7TUFDZmUsSUFBSSxFQUFHLEdBQUVsQixXQUFXLENBQUNtQixRQUFTLElBQUdkLFNBQVMsQ0FBQ1UsUUFBUSxDQUFDLENBQUUsRUFBQztNQUN2REssUUFBUSxFQUFFcEIsV0FBVyxDQUFDb0IsUUFBUTtNQUM5QkMsTUFBTSxFQUFFLE1BQU07TUFDZEMsT0FBTyxFQUFFLENBQUMsQ0FBQztNQUNYQyxLQUFLLEVBQUUsSUFBSSxDQUFDdEQ7SUFDZCxDQUErQjtJQUUvQixNQUFNdUQsU0FBUyxHQUFHeEIsV0FBVyxDQUFDb0IsUUFBUSxLQUFLLE9BQU8sR0FBR3ZGLElBQUksR0FBR0MsS0FBSztJQUNqRSxNQUFNMkYsR0FBRyxHQUFHLE1BQU0sSUFBQUMsZ0JBQU8sRUFBQ0YsU0FBUyxFQUFFUCxjQUFjLEVBQUUsSUFBSSxDQUFDO0lBQzFELE1BQU1VLElBQUksR0FBRyxNQUFNLElBQUFDLHNCQUFZLEVBQUNILEdBQUcsQ0FBQztJQUVwQyxNQUFNSSxrQkFBc0MsR0FBRyxJQUFBQyxnQkFBUSxFQUFDSCxJQUFJLENBQUM7SUFDN0QsTUFBTUksS0FBSyxHQUFHRixrQkFBa0IsQ0FBQ0csaUNBQWlDLENBQUNDLCtCQUErQixDQUFDQyxXQUFXO0lBQzlHLElBQUksQ0FBQ3JFLGVBQWUsR0FBR2tFLEtBQUssQ0FBQ0ksVUFBVTtJQUN2QyxPQUFPLElBQUlELHdCQUFXLENBQUM7TUFDckJoRSxTQUFTLEVBQUU2RCxLQUFLLENBQUNLLFdBQVc7TUFDNUJqRSxTQUFTLEVBQUU0RCxLQUFLLENBQUNNLGVBQWU7TUFDaENDLFlBQVksRUFBRVAsS0FBSyxDQUFDUTtJQUN0QixDQUFDLENBQUM7RUFDSjtFQUVBLE1BQWNqRCxjQUFjQSxDQUFBLEVBQUc7SUFDN0IsTUFBTWtELFFBQVEsR0FBRyxJQUFJLENBQUN6RSxjQUFjLEdBQUcsSUFBSSxDQUFDQSxjQUFjLEdBQUcsd0JBQXdCO0lBQ3JGLE1BQU1xQixHQUFHLEdBQUcsSUFBSUMsUUFBRyxDQUFDLG1CQUFtQixFQUFFbUQsUUFBUSxDQUFDO0lBRWxELE1BQU12QixjQUFjLEdBQUc7TUFDckJmLFFBQVEsRUFBRWQsR0FBRyxDQUFDYyxRQUFRO01BQ3RCRSxJQUFJLEVBQUVoQixHQUFHLENBQUNnQixJQUFJO01BQ2RjLElBQUksRUFBRyxHQUFFOUIsR0FBRyxDQUFDK0IsUUFBUyxHQUFFL0IsR0FBRyxDQUFDcUQsTUFBTyxFQUFDO01BQ3BDckIsUUFBUSxFQUFFaEMsR0FBRyxDQUFDZ0MsUUFBUTtNQUN0QkMsTUFBTSxFQUFFLEtBQUs7TUFDYkMsT0FBTyxFQUFFO1FBQ1Asc0NBQXNDLEVBQUU7TUFDMUMsQ0FBQztNQUNEQyxLQUFLLEVBQUUsSUFBSSxDQUFDdEQ7SUFDZCxDQUErQjtJQUUvQixNQUFNdUQsU0FBUyxHQUFHcEMsR0FBRyxDQUFDZ0MsUUFBUSxLQUFLLE9BQU8sR0FBR3ZGLElBQUksR0FBR0MsS0FBSztJQUN6RCxNQUFNMkYsR0FBRyxHQUFHLE1BQU0sSUFBQUMsZ0JBQU8sRUFBQ0YsU0FBUyxFQUFFUCxjQUFjLEVBQUUsSUFBSSxDQUFDO0lBQzFELE9BQU8sTUFBTSxJQUFBVyxzQkFBWSxFQUFDSCxHQUFHLENBQUM7RUFDaEM7RUFFQSxNQUFjbEMsa0JBQWtCQSxDQUFDVCxLQUFhLEVBQUU7SUFDOUMsTUFBTTBELFFBQVEsR0FBRyxJQUFJLENBQUN6RSxjQUFjLEdBQUcsSUFBSSxDQUFDQSxjQUFjLEdBQUcsd0JBQXdCO0lBQ3JGLE1BQU1xQixHQUFHLEdBQUcsSUFBSUMsUUFBRyxDQUFDLDRDQUE0QyxFQUFFbUQsUUFBUSxDQUFDO0lBRTNFLE1BQU1FLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQ0MsY0FBYyxDQUFDdkQsR0FBRyxFQUFFTixLQUFLLENBQUM7SUFDdEQsT0FBTyxJQUFJTyxRQUFHLENBQUUsR0FBRUQsR0FBRyxDQUFDK0IsUUFBUyxJQUFHeUIsa0JBQWtCLENBQUNGLFFBQVEsQ0FBRSxFQUFDLEVBQUV0RCxHQUFHLENBQUN5RCxNQUFNLENBQUM7RUFDL0U7RUFFQSxNQUFjRixjQUFjQSxDQUFDdkQsR0FBUSxFQUFFTixLQUFhLEVBQW1CO0lBQ3JFLE1BQU1tQyxjQUFjLEdBQUc7TUFDckJmLFFBQVEsRUFBRWQsR0FBRyxDQUFDYyxRQUFRO01BQ3RCRSxJQUFJLEVBQUVoQixHQUFHLENBQUNnQixJQUFJO01BQ2RjLElBQUksRUFBRyxHQUFFOUIsR0FBRyxDQUFDK0IsUUFBUyxHQUFFL0IsR0FBRyxDQUFDcUQsTUFBTyxFQUFDO01BQ3BDckIsUUFBUSxFQUFFaEMsR0FBRyxDQUFDZ0MsUUFBUTtNQUN0QkMsTUFBTSxFQUFFLEtBQUs7TUFDYkMsT0FBTyxFQUFFO1FBQ1AsMEJBQTBCLEVBQUV4QztNQUM5QixDQUFDO01BQ0R5QyxLQUFLLEVBQUUsSUFBSSxDQUFDdEQ7SUFDZCxDQUErQjtJQUUvQixNQUFNdUQsU0FBUyxHQUFHcEMsR0FBRyxDQUFDZ0MsUUFBUSxLQUFLLE9BQU8sR0FBR3ZGLElBQUksR0FBR0MsS0FBSztJQUN6RCxNQUFNMkYsR0FBRyxHQUFHLE1BQU0sSUFBQUMsZ0JBQU8sRUFBQ0YsU0FBUyxFQUFFUCxjQUFjLEVBQUUsSUFBSSxDQUFDO0lBQzFELE1BQU1VLElBQUksR0FBRyxNQUFNLElBQUFDLHNCQUFZLEVBQUNILEdBQUcsQ0FBQztJQUNwQyxNQUFNcUIsU0FBUyxHQUFHbkIsSUFBSSxDQUFDb0IsS0FBSyxDQUFDLHlCQUF5QixDQUFDO0lBQ3ZELElBQUlELFNBQVMsQ0FBQ0UsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUMxQixNQUFNLElBQUl0RCxLQUFLLENBQUUsd0NBQXVDTixHQUFJLEVBQUMsQ0FBQztJQUNoRTtJQUNBLE9BQU8wRCxTQUFTLENBQUMsQ0FBQyxDQUFDO0VBQ3JCO0VBRUEsTUFBY3RELGtCQUFrQkEsQ0FBQ0osR0FBUSxFQUFFUCxXQUFtQixFQUFFQyxLQUF5QixFQUF3QjtJQUMvRyxNQUFNd0MsT0FBK0IsR0FBRyxDQUFDLENBQUM7SUFDMUMsSUFBSXhDLEtBQUssRUFBRTtNQUNUd0MsT0FBTyxDQUFDekMsV0FBVyxDQUFDLEdBQUdDLEtBQUs7SUFDOUI7SUFDQSxNQUFNbUMsY0FBYyxHQUFHO01BQ3JCZixRQUFRLEVBQUVkLEdBQUcsQ0FBQ2MsUUFBUTtNQUN0QkUsSUFBSSxFQUFFaEIsR0FBRyxDQUFDZ0IsSUFBSTtNQUNkYyxJQUFJLEVBQUcsR0FBRTlCLEdBQUcsQ0FBQytCLFFBQVMsR0FBRS9CLEdBQUcsQ0FBQ3FELE1BQU8sRUFBQztNQUNwQ3JCLFFBQVEsRUFBRWhDLEdBQUcsQ0FBQ2dDLFFBQVE7TUFDdEJDLE1BQU0sRUFBRSxLQUFLO01BQ2JDLE9BQU8sRUFBRUEsT0FBTztNQUNoQkMsS0FBSyxFQUFFLElBQUksQ0FBQ3REO0lBQ2QsQ0FBK0I7SUFFL0IsTUFBTXVELFNBQVMsR0FBR3BDLEdBQUcsQ0FBQ2dDLFFBQVEsS0FBSyxPQUFPLEdBQUd2RixJQUFJLEdBQUdDLEtBQUs7SUFDekQsTUFBTTJGLEdBQUcsR0FBRyxNQUFNLElBQUFDLGdCQUFPLEVBQUNGLFNBQVMsRUFBRVAsY0FBYyxFQUFFLElBQUksQ0FBQztJQUMxRCxNQUFNVSxJQUFJLEdBQUcsTUFBTSxJQUFBQyxzQkFBWSxFQUFDSCxHQUFHLENBQUM7SUFDcEMsTUFBTXdCLGNBQWMsR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUN4QixJQUFJLENBQW1CO0lBQ3pELElBQUksQ0FBQ3NCLGNBQWMsQ0FBQ0csSUFBSSxJQUFJSCxjQUFjLENBQUNHLElBQUksSUFBSSxTQUFTLEVBQUU7TUFDNUQsTUFBTSxJQUFJMUQsS0FBSyxDQUFFLEdBQUVOLEdBQUkscUJBQW9CNkQsY0FBYyxDQUFDRyxJQUFLLGdCQUFlSCxjQUFjLENBQUNJLE9BQVEsRUFBQyxDQUFDO0lBQ3pHO0lBRUEsSUFBSSxDQUFDeEYsZUFBZSxHQUFHb0YsY0FBYyxDQUFDZCxVQUFVO0lBQ2hELE9BQU8sSUFBSUQsd0JBQVcsQ0FBQztNQUNyQmhFLFNBQVMsRUFBRStFLGNBQWMsQ0FBQ0ssV0FBVztNQUNyQ25GLFNBQVMsRUFBRThFLGNBQWMsQ0FBQ1osZUFBZTtNQUN6Q0MsWUFBWSxFQUFFVyxjQUFjLENBQUNNO0lBQy9CLENBQUMsQ0FBQztFQUNKO0VBRVFqRixlQUFlQSxDQUFBLEVBQUc7SUFDeEIsTUFBTWtGLFNBQVMsR0FBRyxJQUFJM0MsSUFBSSxDQUFDLElBQUksQ0FBQ2hELGVBQWUsQ0FBQztJQUNoRCxNQUFNNEYsaUJBQWlCLEdBQUcsSUFBSTVDLElBQUksQ0FBQ0EsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUMsRUFBQztJQUMzRCxPQUFPMkMsaUJBQWlCLEdBQUdELFNBQVM7RUFDdEM7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFBQUUsT0FBQSxDQUFBL0YsY0FBQSxHQUFBQSxjQUFBO0FBQUEsSUFBQWdHLFFBQUEsR0FDZWhHLGNBQWM7QUFBQStGLE9BQUEsQ0FBQTlHLE9BQUEsR0FBQStHLFFBQUEifQ==
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/// <reference lib="es2022.error" />
|
|
2
|
+
declare class ExtendableError extends Error {
|
|
3
|
+
constructor(message?: string, opt?: ErrorOptions);
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* AnonymousRequestError is generated for anonymous keys on specific
|
|
7
|
+
* APIs. NOTE: PresignedURL generation always requires access keys.
|
|
8
|
+
*/
|
|
9
|
+
export declare class AnonymousRequestError extends ExtendableError {}
|
|
10
|
+
/**
|
|
11
|
+
* InvalidArgumentError is generated for all invalid arguments.
|
|
12
|
+
*/
|
|
13
|
+
export declare class InvalidArgumentError extends ExtendableError {}
|
|
14
|
+
/**
|
|
15
|
+
* InvalidPortError is generated when a non integer value is provided
|
|
16
|
+
* for ports.
|
|
17
|
+
*/
|
|
18
|
+
export declare class InvalidPortError extends ExtendableError {}
|
|
19
|
+
/**
|
|
20
|
+
* InvalidEndpointError is generated when an invalid end point value is
|
|
21
|
+
* provided which does not follow domain standards.
|
|
22
|
+
*/
|
|
23
|
+
export declare class InvalidEndpointError extends ExtendableError {}
|
|
24
|
+
/**
|
|
25
|
+
* InvalidBucketNameError is generated when an invalid bucket name is
|
|
26
|
+
* provided which does not follow AWS S3 specifications.
|
|
27
|
+
* http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html
|
|
28
|
+
*/
|
|
29
|
+
export declare class InvalidBucketNameError extends ExtendableError {}
|
|
30
|
+
/**
|
|
31
|
+
* InvalidObjectNameError is generated when an invalid object name is
|
|
32
|
+
* provided which does not follow AWS S3 specifications.
|
|
33
|
+
* http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
|
|
34
|
+
*/
|
|
35
|
+
export declare class InvalidObjectNameError extends ExtendableError {}
|
|
36
|
+
/**
|
|
37
|
+
* AccessKeyRequiredError generated by signature methods when access
|
|
38
|
+
* key is not found.
|
|
39
|
+
*/
|
|
40
|
+
export declare class AccessKeyRequiredError extends ExtendableError {}
|
|
41
|
+
/**
|
|
42
|
+
* SecretKeyRequiredError generated by signature methods when secret
|
|
43
|
+
* key is not found.
|
|
44
|
+
*/
|
|
45
|
+
export declare class SecretKeyRequiredError extends ExtendableError {}
|
|
46
|
+
/**
|
|
47
|
+
* ExpiresParamError generated when expires parameter value is not
|
|
48
|
+
* well within stipulated limits.
|
|
49
|
+
*/
|
|
50
|
+
export declare class ExpiresParamError extends ExtendableError {}
|
|
51
|
+
/**
|
|
52
|
+
* InvalidDateError generated when invalid date is found.
|
|
53
|
+
*/
|
|
54
|
+
export declare class InvalidDateError extends ExtendableError {}
|
|
55
|
+
/**
|
|
56
|
+
* InvalidPrefixError generated when object prefix provided is invalid
|
|
57
|
+
* or does not conform to AWS S3 object key restrictions.
|
|
58
|
+
*/
|
|
59
|
+
export declare class InvalidPrefixError extends ExtendableError {}
|
|
60
|
+
/**
|
|
61
|
+
* InvalidBucketPolicyError generated when the given bucket policy is invalid.
|
|
62
|
+
*/
|
|
63
|
+
export declare class InvalidBucketPolicyError extends ExtendableError {}
|
|
64
|
+
/**
|
|
65
|
+
* IncorrectSizeError generated when total data read mismatches with
|
|
66
|
+
* the input size.
|
|
67
|
+
*/
|
|
68
|
+
export declare class IncorrectSizeError extends ExtendableError {}
|
|
69
|
+
/**
|
|
70
|
+
* InvalidXMLError generated when an unknown XML is found.
|
|
71
|
+
*/
|
|
72
|
+
export declare class InvalidXMLError extends ExtendableError {}
|
|
73
|
+
/**
|
|
74
|
+
* S3Error is generated for errors returned from S3 server.
|
|
75
|
+
* see getErrorTransformer for details
|
|
76
|
+
*/
|
|
77
|
+
export declare class S3Error extends ExtendableError {
|
|
78
|
+
code?: string;
|
|
79
|
+
region?: string;
|
|
80
|
+
}
|
|
81
|
+
export declare class IsValidBucketNameError extends ExtendableError {}
|
|
82
|
+
export {};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
/*
|
|
7
|
+
* Hanzo S3 Javascript Library for Amazon S3 Compatible Cloud Storage, (C) 2015 Hanzo AI, Inc.
|
|
8
|
+
*
|
|
9
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
* you may not use this file except in compliance with the License.
|
|
11
|
+
* You may obtain a copy of the License at
|
|
12
|
+
*
|
|
13
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
*
|
|
15
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
* See the License for the specific language governing permissions and
|
|
19
|
+
* limitations under the License.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/// <reference lib="ES2022.Error" />
|
|
23
|
+
|
|
24
|
+
class ExtendableError extends Error {
|
|
25
|
+
constructor(message, opt) {
|
|
26
|
+
// error Option {cause?: unknown} is a 'nice to have',
|
|
27
|
+
// don't use it internally
|
|
28
|
+
super(message, opt);
|
|
29
|
+
// set error name, otherwise it's always 'Error'
|
|
30
|
+
this.name = this.constructor.name;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* AnonymousRequestError is generated for anonymous keys on specific
|
|
36
|
+
* APIs. NOTE: PresignedURL generation always requires access keys.
|
|
37
|
+
*/
|
|
38
|
+
class AnonymousRequestError extends ExtendableError {}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* InvalidArgumentError is generated for all invalid arguments.
|
|
42
|
+
*/
|
|
43
|
+
exports.AnonymousRequestError = AnonymousRequestError;
|
|
44
|
+
class InvalidArgumentError extends ExtendableError {}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* InvalidPortError is generated when a non integer value is provided
|
|
48
|
+
* for ports.
|
|
49
|
+
*/
|
|
50
|
+
exports.InvalidArgumentError = InvalidArgumentError;
|
|
51
|
+
class InvalidPortError extends ExtendableError {}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* InvalidEndpointError is generated when an invalid end point value is
|
|
55
|
+
* provided which does not follow domain standards.
|
|
56
|
+
*/
|
|
57
|
+
exports.InvalidPortError = InvalidPortError;
|
|
58
|
+
class InvalidEndpointError extends ExtendableError {}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* InvalidBucketNameError is generated when an invalid bucket name is
|
|
62
|
+
* provided which does not follow AWS S3 specifications.
|
|
63
|
+
* http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html
|
|
64
|
+
*/
|
|
65
|
+
exports.InvalidEndpointError = InvalidEndpointError;
|
|
66
|
+
class InvalidBucketNameError extends ExtendableError {}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* InvalidObjectNameError is generated when an invalid object name is
|
|
70
|
+
* provided which does not follow AWS S3 specifications.
|
|
71
|
+
* http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
|
|
72
|
+
*/
|
|
73
|
+
exports.InvalidBucketNameError = InvalidBucketNameError;
|
|
74
|
+
class InvalidObjectNameError extends ExtendableError {}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* AccessKeyRequiredError generated by signature methods when access
|
|
78
|
+
* key is not found.
|
|
79
|
+
*/
|
|
80
|
+
exports.InvalidObjectNameError = InvalidObjectNameError;
|
|
81
|
+
class AccessKeyRequiredError extends ExtendableError {}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* SecretKeyRequiredError generated by signature methods when secret
|
|
85
|
+
* key is not found.
|
|
86
|
+
*/
|
|
87
|
+
exports.AccessKeyRequiredError = AccessKeyRequiredError;
|
|
88
|
+
class SecretKeyRequiredError extends ExtendableError {}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* ExpiresParamError generated when expires parameter value is not
|
|
92
|
+
* well within stipulated limits.
|
|
93
|
+
*/
|
|
94
|
+
exports.SecretKeyRequiredError = SecretKeyRequiredError;
|
|
95
|
+
class ExpiresParamError extends ExtendableError {}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* InvalidDateError generated when invalid date is found.
|
|
99
|
+
*/
|
|
100
|
+
exports.ExpiresParamError = ExpiresParamError;
|
|
101
|
+
class InvalidDateError extends ExtendableError {}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* InvalidPrefixError generated when object prefix provided is invalid
|
|
105
|
+
* or does not conform to AWS S3 object key restrictions.
|
|
106
|
+
*/
|
|
107
|
+
exports.InvalidDateError = InvalidDateError;
|
|
108
|
+
class InvalidPrefixError extends ExtendableError {}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* InvalidBucketPolicyError generated when the given bucket policy is invalid.
|
|
112
|
+
*/
|
|
113
|
+
exports.InvalidPrefixError = InvalidPrefixError;
|
|
114
|
+
class InvalidBucketPolicyError extends ExtendableError {}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* IncorrectSizeError generated when total data read mismatches with
|
|
118
|
+
* the input size.
|
|
119
|
+
*/
|
|
120
|
+
exports.InvalidBucketPolicyError = InvalidBucketPolicyError;
|
|
121
|
+
class IncorrectSizeError extends ExtendableError {}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* InvalidXMLError generated when an unknown XML is found.
|
|
125
|
+
*/
|
|
126
|
+
exports.IncorrectSizeError = IncorrectSizeError;
|
|
127
|
+
class InvalidXMLError extends ExtendableError {}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* S3Error is generated for errors returned from S3 server.
|
|
131
|
+
* see getErrorTransformer for details
|
|
132
|
+
*/
|
|
133
|
+
exports.InvalidXMLError = InvalidXMLError;
|
|
134
|
+
class S3Error extends ExtendableError {}
|
|
135
|
+
exports.S3Error = S3Error;
|
|
136
|
+
class IsValidBucketNameError extends ExtendableError {}
|
|
137
|
+
exports.IsValidBucketNameError = IsValidBucketNameError;
|
|
138
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbmRhYmxlRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwibWVzc2FnZSIsIm9wdCIsIm5hbWUiLCJBbm9ueW1vdXNSZXF1ZXN0RXJyb3IiLCJleHBvcnRzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJJbnZhbGlkUG9ydEVycm9yIiwiSW52YWxpZEVuZHBvaW50RXJyb3IiLCJJbnZhbGlkQnVja2V0TmFtZUVycm9yIiwiSW52YWxpZE9iamVjdE5hbWVFcnJvciIsIkFjY2Vzc0tleVJlcXVpcmVkRXJyb3IiLCJTZWNyZXRLZXlSZXF1aXJlZEVycm9yIiwiRXhwaXJlc1BhcmFtRXJyb3IiLCJJbnZhbGlkRGF0ZUVycm9yIiwiSW52YWxpZFByZWZpeEVycm9yIiwiSW52YWxpZEJ1Y2tldFBvbGljeUVycm9yIiwiSW5jb3JyZWN0U2l6ZUVycm9yIiwiSW52YWxpZFhNTEVycm9yIiwiUzNFcnJvciIsIklzVmFsaWRCdWNrZXROYW1lRXJyb3IiXSwic291cmNlcyI6WyJlcnJvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEhhbnpvIFMzIEphdmFzY3JpcHQgTGlicmFyeSBmb3IgQW1hem9uIFMzIENvbXBhdGlibGUgQ2xvdWQgU3RvcmFnZSwgKEMpIDIwMTUgSGFuem8gQUksIEluYy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8vIDxyZWZlcmVuY2UgbGliPVwiRVMyMDIyLkVycm9yXCIgLz5cblxuY2xhc3MgRXh0ZW5kYWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nLCBvcHQ/OiBFcnJvck9wdGlvbnMpIHtcbiAgICAvLyBlcnJvciBPcHRpb24ge2NhdXNlPzogdW5rbm93bn0gaXMgYSAnbmljZSB0byBoYXZlJyxcbiAgICAvLyBkb24ndCB1c2UgaXQgaW50ZXJuYWxseVxuICAgIHN1cGVyKG1lc3NhZ2UsIG9wdClcbiAgICAvLyBzZXQgZXJyb3IgbmFtZSwgb3RoZXJ3aXNlIGl0J3MgYWx3YXlzICdFcnJvcidcbiAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWVcbiAgfVxufVxuXG4vKipcbiAqIEFub255bW91c1JlcXVlc3RFcnJvciBpcyBnZW5lcmF0ZWQgZm9yIGFub255bW91cyBrZXlzIG9uIHNwZWNpZmljXG4gKiBBUElzLiBOT1RFOiBQcmVzaWduZWRVUkwgZ2VuZXJhdGlvbiBhbHdheXMgcmVxdWlyZXMgYWNjZXNzIGtleXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBbm9ueW1vdXNSZXF1ZXN0RXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige31cblxuLyoqXG4gKiBJbnZhbGlkQXJndW1lbnRFcnJvciBpcyBnZW5lcmF0ZWQgZm9yIGFsbCBpbnZhbGlkIGFyZ3VtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHt9XG5cbi8qKlxuICogSW52YWxpZFBvcnRFcnJvciBpcyBnZW5lcmF0ZWQgd2hlbiBhIG5vbiBpbnRlZ2VyIHZhbHVlIGlzIHByb3ZpZGVkXG4gKiBmb3IgcG9ydHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUG9ydEVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHt9XG5cbi8qKlxuICogSW52YWxpZEVuZHBvaW50RXJyb3IgaXMgZ2VuZXJhdGVkIHdoZW4gYW4gaW52YWxpZCBlbmQgcG9pbnQgdmFsdWUgaXNcbiAqIHByb3ZpZGVkIHdoaWNoIGRvZXMgbm90IGZvbGxvdyBkb21haW4gc3RhbmRhcmRzLlxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZEVuZHBvaW50RXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige31cblxuLyoqXG4gKiBJbnZhbGlkQnVja2V0TmFtZUVycm9yIGlzIGdlbmVyYXRlZCB3aGVuIGFuIGludmFsaWQgYnVja2V0IG5hbWUgaXNcbiAqIHByb3ZpZGVkIHdoaWNoIGRvZXMgbm90IGZvbGxvdyBBV1MgUzMgc3BlY2lmaWNhdGlvbnMuXG4gKiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L0J1Y2tldFJlc3RyaWN0aW9ucy5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQnVja2V0TmFtZUVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHt9XG5cbi8qKlxuICogSW52YWxpZE9iamVjdE5hbWVFcnJvciBpcyBnZW5lcmF0ZWQgd2hlbiBhbiBpbnZhbGlkIG9iamVjdCBuYW1lIGlzXG4gKiBwcm92aWRlZCB3aGljaCBkb2VzIG5vdCBmb2xsb3cgQVdTIFMzIHNwZWNpZmljYXRpb25zLlxuICogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Vc2luZ01ldGFkYXRhLmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRPYmplY3ROYW1lRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige31cblxuLyoqXG4gKiBBY2Nlc3NLZXlSZXF1aXJlZEVycm9yIGdlbmVyYXRlZCBieSBzaWduYXR1cmUgbWV0aG9kcyB3aGVuIGFjY2Vzc1xuICoga2V5IGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFjY2Vzc0tleVJlcXVpcmVkRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige31cblxuLyoqXG4gKiBTZWNyZXRLZXlSZXF1aXJlZEVycm9yIGdlbmVyYXRlZCBieSBzaWduYXR1cmUgbWV0aG9kcyB3aGVuIHNlY3JldFxuICoga2V5IGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlY3JldEtleVJlcXVpcmVkRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige31cblxuLyoqXG4gKiBFeHBpcmVzUGFyYW1FcnJvciBnZW5lcmF0ZWQgd2hlbiBleHBpcmVzIHBhcmFtZXRlciB2YWx1ZSBpcyBub3RcbiAqIHdlbGwgd2l0aGluIHN0aXB1bGF0ZWQgbGltaXRzLlxuICovXG5leHBvcnQgY2xhc3MgRXhwaXJlc1BhcmFtRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige31cblxuLyoqXG4gKiBJbnZhbGlkRGF0ZUVycm9yIGdlbmVyYXRlZCB3aGVuIGludmFsaWQgZGF0ZSBpcyBmb3VuZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWREYXRlRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige31cblxuLyoqXG4gKiBJbnZhbGlkUHJlZml4RXJyb3IgZ2VuZXJhdGVkIHdoZW4gb2JqZWN0IHByZWZpeCBwcm92aWRlZCBpcyBpbnZhbGlkXG4gKiBvciBkb2VzIG5vdCBjb25mb3JtIHRvIEFXUyBTMyBvYmplY3Qga2V5IHJlc3RyaWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRQcmVmaXhFcnJvciBleHRlbmRzIEV4dGVuZGFibGVFcnJvciB7fVxuXG4vKipcbiAqIEludmFsaWRCdWNrZXRQb2xpY3lFcnJvciBnZW5lcmF0ZWQgd2hlbiB0aGUgZ2l2ZW4gYnVja2V0IHBvbGljeSBpcyBpbnZhbGlkLlxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZEJ1Y2tldFBvbGljeUVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHt9XG5cbi8qKlxuICogSW5jb3JyZWN0U2l6ZUVycm9yIGdlbmVyYXRlZCB3aGVuIHRvdGFsIGRhdGEgcmVhZCBtaXNtYXRjaGVzIHdpdGhcbiAqIHRoZSBpbnB1dCBzaXplLlxuICovXG5leHBvcnQgY2xhc3MgSW5jb3JyZWN0U2l6ZUVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHt9XG5cbi8qKlxuICogSW52YWxpZFhNTEVycm9yIGdlbmVyYXRlZCB3aGVuIGFuIHVua25vd24gWE1MIGlzIGZvdW5kLlxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZFhNTEVycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHt9XG5cbi8qKlxuICogUzNFcnJvciBpcyBnZW5lcmF0ZWQgZm9yIGVycm9ycyByZXR1cm5lZCBmcm9tIFMzIHNlcnZlci5cbiAqIHNlZSBnZXRFcnJvclRyYW5zZm9ybWVyIGZvciBkZXRhaWxzXG4gKi9cbmV4cG9ydCBjbGFzcyBTM0Vycm9yIGV4dGVuZHMgRXh0ZW5kYWJsZUVycm9yIHtcbiAgY29kZT86IHN0cmluZ1xuICByZWdpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIElzVmFsaWRCdWNrZXROYW1lRXJyb3IgZXh0ZW5kcyBFeHRlbmRhYmxlRXJyb3Ige31cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsTUFBTUEsZUFBZSxTQUFTQyxLQUFLLENBQUM7RUFDbENDLFdBQVdBLENBQUNDLE9B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
|