@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,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* joinHostPort combines host and port into a network address of the
|
|
3
|
+
* form "host:port". If host contains a colon, as found in literal
|
|
4
|
+
* IPv6 addresses, then JoinHostPort returns "[host]:port".
|
|
5
|
+
*
|
|
6
|
+
* @param host
|
|
7
|
+
* @param port
|
|
8
|
+
* @returns Cleaned up host
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare function joinHostPort(host: string, port?: number): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.joinHostPort = joinHostPort;
|
|
7
|
+
/**
|
|
8
|
+
* joinHostPort combines host and port into a network address of the
|
|
9
|
+
* form "host:port". If host contains a colon, as found in literal
|
|
10
|
+
* IPv6 addresses, then JoinHostPort returns "[host]:port".
|
|
11
|
+
*
|
|
12
|
+
* @param host
|
|
13
|
+
* @param port
|
|
14
|
+
* @returns Cleaned up host
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
function joinHostPort(host, port) {
|
|
18
|
+
if (port === undefined) {
|
|
19
|
+
return host;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// We assume that host is a literal IPv6 address if host has
|
|
23
|
+
// colons.
|
|
24
|
+
if (host.includes(':')) {
|
|
25
|
+
return `[${host}]:${port.toString()}`;
|
|
26
|
+
}
|
|
27
|
+
return `${host}:${port.toString()}`;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJqb2luSG9zdFBvcnQiLCJob3N0IiwicG9ydCIsInVuZGVmaW5lZCIsImluY2x1ZGVzIiwidG9TdHJpbmciXSwic291cmNlcyI6WyJqb2luLWhvc3QtcG9ydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGpvaW5Ib3N0UG9ydCBjb21iaW5lcyBob3N0IGFuZCBwb3J0IGludG8gYSBuZXR3b3JrIGFkZHJlc3Mgb2YgdGhlXG4gKiBmb3JtIFwiaG9zdDpwb3J0XCIuIElmIGhvc3QgY29udGFpbnMgYSBjb2xvbiwgYXMgZm91bmQgaW4gbGl0ZXJhbFxuICogSVB2NiBhZGRyZXNzZXMsIHRoZW4gSm9pbkhvc3RQb3J0IHJldHVybnMgXCJbaG9zdF06cG9ydFwiLlxuICpcbiAqIEBwYXJhbSBob3N0XG4gKiBAcGFyYW0gcG9ydFxuICogQHJldHVybnMgQ2xlYW5lZCB1cCBob3N0XG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW5Ib3N0UG9ydChob3N0OiBzdHJpbmcsIHBvcnQ/OiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAocG9ydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGhvc3RcbiAgfVxuXG4gIC8vIFdlIGFzc3VtZSB0aGF0IGhvc3QgaXMgYSBsaXRlcmFsIElQdjYgYWRkcmVzcyBpZiBob3N0IGhhc1xuICAvLyBjb2xvbnMuXG4gIGlmIChob3N0LmluY2x1ZGVzKCc6JykpIHtcbiAgICByZXR1cm4gYFske2hvc3R9XToke3BvcnQudG9TdHJpbmcoKX1gXG4gIH1cblxuICByZXR1cm4gYCR7aG9zdH06JHtwb3J0LnRvU3RyaW5nKCl9YFxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNBLFlBQVlBLENBQUNDLElBQVksRUFBRUMsSUFBYSxFQUFVO0VBQ2hFLElBQUlBLElBQUksS0FBS0MsU0FBUyxFQUFFO0lBQ3RCLE9BQU9GLElBQUk7RUFDYjs7RUFFQTtFQUNBO0VBQ0EsSUFBSUEsSUFBSSxDQUFDRyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDdEIsT0FBUSxJQUFHSCxJQUFLLEtBQUlDLElBQUksQ0FBQ0csUUFBUSxDQUFDLENBQUUsRUFBQztFQUN2QztFQUVBLE9BQVEsR0FBRUosSUFBSyxJQUFHQyxJQUFJLENBQUNHLFFBQVEsQ0FBQyxDQUFFLEVBQUM7QUFDckMifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ObjectMetaData } from "./type.js";
|
|
2
|
+
export declare class PostPolicy {
|
|
3
|
+
policy: {
|
|
4
|
+
conditions: (string | number)[][];
|
|
5
|
+
expiration?: string;
|
|
6
|
+
};
|
|
7
|
+
formData: Record<string, string>;
|
|
8
|
+
setExpires(date: Date): void;
|
|
9
|
+
setKey(objectName: string): void;
|
|
10
|
+
setKeyStartsWith(prefix: string): void;
|
|
11
|
+
setBucket(bucketName: string): void;
|
|
12
|
+
setContentType(type: string): void;
|
|
13
|
+
setContentTypeStartsWith(prefix: string): void;
|
|
14
|
+
setContentDisposition(value: string): void;
|
|
15
|
+
setContentLengthRange(min: number, max: number): void;
|
|
16
|
+
setUserMetaData(metaData: ObjectMetaData): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var errors = _interopRequireWildcard(require("../errors.js"), true);
|
|
7
|
+
var _helper = require("./helper.js");
|
|
8
|
+
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); }
|
|
9
|
+
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; }
|
|
10
|
+
// Build PostPolicy object that can be signed by presignedPostPolicy
|
|
11
|
+
|
|
12
|
+
class PostPolicy {
|
|
13
|
+
policy = {
|
|
14
|
+
conditions: []
|
|
15
|
+
};
|
|
16
|
+
formData = {};
|
|
17
|
+
|
|
18
|
+
// set expiration date
|
|
19
|
+
setExpires(date) {
|
|
20
|
+
if (!date) {
|
|
21
|
+
throw new errors.InvalidDateError('Invalid date: cannot be null');
|
|
22
|
+
}
|
|
23
|
+
this.policy.expiration = date.toISOString();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// set object name
|
|
27
|
+
setKey(objectName) {
|
|
28
|
+
if (!(0, _helper.isValidObjectName)(objectName)) {
|
|
29
|
+
throw new errors.InvalidObjectNameError(`Invalid object name : ${objectName}`);
|
|
30
|
+
}
|
|
31
|
+
this.policy.conditions.push(['eq', '$key', objectName]);
|
|
32
|
+
this.formData.key = objectName;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// set object name prefix, i.e policy allows any keys with this prefix
|
|
36
|
+
setKeyStartsWith(prefix) {
|
|
37
|
+
if (!(0, _helper.isValidPrefix)(prefix)) {
|
|
38
|
+
throw new errors.InvalidPrefixError(`Invalid prefix : ${prefix}`);
|
|
39
|
+
}
|
|
40
|
+
this.policy.conditions.push(['starts-with', '$key', prefix]);
|
|
41
|
+
this.formData.key = prefix;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// set bucket name
|
|
45
|
+
setBucket(bucketName) {
|
|
46
|
+
if (!(0, _helper.isValidBucketName)(bucketName)) {
|
|
47
|
+
throw new errors.InvalidBucketNameError(`Invalid bucket name : ${bucketName}`);
|
|
48
|
+
}
|
|
49
|
+
this.policy.conditions.push(['eq', '$bucket', bucketName]);
|
|
50
|
+
this.formData.bucket = bucketName;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// set Content-Type
|
|
54
|
+
setContentType(type) {
|
|
55
|
+
if (!type) {
|
|
56
|
+
throw new Error('content-type cannot be null');
|
|
57
|
+
}
|
|
58
|
+
this.policy.conditions.push(['eq', '$Content-Type', type]);
|
|
59
|
+
this.formData['Content-Type'] = type;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// set Content-Type prefix, i.e image/ allows any image
|
|
63
|
+
setContentTypeStartsWith(prefix) {
|
|
64
|
+
if (!prefix) {
|
|
65
|
+
throw new Error('content-type cannot be null');
|
|
66
|
+
}
|
|
67
|
+
this.policy.conditions.push(['starts-with', '$Content-Type', prefix]);
|
|
68
|
+
this.formData['Content-Type'] = prefix;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// set Content-Disposition
|
|
72
|
+
setContentDisposition(value) {
|
|
73
|
+
if (!value) {
|
|
74
|
+
throw new Error('content-disposition cannot be null');
|
|
75
|
+
}
|
|
76
|
+
this.policy.conditions.push(['eq', '$Content-Disposition', value]);
|
|
77
|
+
this.formData['Content-Disposition'] = value;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// set minimum/maximum length of what Content-Length can be.
|
|
81
|
+
setContentLengthRange(min, max) {
|
|
82
|
+
if (min > max) {
|
|
83
|
+
throw new Error('min cannot be more than max');
|
|
84
|
+
}
|
|
85
|
+
if (min < 0) {
|
|
86
|
+
throw new Error('min should be > 0');
|
|
87
|
+
}
|
|
88
|
+
if (max < 0) {
|
|
89
|
+
throw new Error('max should be > 0');
|
|
90
|
+
}
|
|
91
|
+
this.policy.conditions.push(['content-length-range', min, max]);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// set user defined metadata
|
|
95
|
+
setUserMetaData(metaData) {
|
|
96
|
+
if (!(0, _helper.isObject)(metaData)) {
|
|
97
|
+
throw new TypeError('metadata should be of type "object"');
|
|
98
|
+
}
|
|
99
|
+
Object.entries(metaData).forEach(([key, value]) => {
|
|
100
|
+
const amzMetaDataKey = `x-amz-meta-${key}`;
|
|
101
|
+
this.policy.conditions.push(['eq', `$${amzMetaDataKey}`, value]);
|
|
102
|
+
this.formData[amzMetaDataKey] = value.toString();
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.PostPolicy = PostPolicy;
|
|
107
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlcnJvcnMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaGVscGVyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIlBvc3RQb2xpY3kiLCJwb2xpY3kiLCJjb25kaXRpb25zIiwiZm9ybURhdGEiLCJzZXRFeHBpcmVzIiwiZGF0ZSIsIkludmFsaWREYXRlRXJyb3IiLCJleHBpcmF0aW9uIiwidG9JU09TdHJpbmciLCJzZXRLZXkiLCJvYmplY3ROYW1lIiwiaXNWYWxpZE9iamVjdE5hbWUiLCJJbnZhbGlkT2JqZWN0TmFtZUVycm9yIiwicHVzaCIsInNldEtleVN0YXJ0c1dpdGgiLCJwcmVmaXgiLCJpc1ZhbGlkUHJlZml4IiwiSW52YWxpZFByZWZpeEVycm9yIiwic2V0QnVja2V0IiwiYnVja2V0TmFtZSIsImlzVmFsaWRCdWNrZXROYW1lIiwiSW52YWxpZEJ1Y2tldE5hbWVFcnJvciIsImJ1Y2tldCIsInNldENvbnRlbnRUeXBlIiwidHlwZSIsIkVycm9yIiwic2V0Q29udGVudFR5cGVTdGFydHNXaXRoIiwic2V0Q29udGVudERpc3Bvc2l0aW9uIiwidmFsdWUiLCJzZXRDb250ZW50TGVuZ3RoUmFuZ2UiLCJtaW4iLCJtYXgiLCJzZXRVc2VyTWV0YURhdGEiLCJtZXRhRGF0YSIsImlzT2JqZWN0IiwiVHlwZUVycm9yIiwiZW50cmllcyIsImZvckVhY2giLCJhbXpNZXRhRGF0YUtleSIsInRvU3RyaW5nIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbInBvc3QtcG9saWN5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEJ1aWxkIFBvc3RQb2xpY3kgb2JqZWN0IHRoYXQgY2FuIGJlIHNpZ25lZCBieSBwcmVzaWduZWRQb3N0UG9saWN5XG5pbXBvcnQgKiBhcyBlcnJvcnMgZnJvbSAnLi4vZXJyb3JzLnRzJ1xuaW1wb3J0IHsgaXNPYmplY3QsIGlzVmFsaWRCdWNrZXROYW1lLCBpc1ZhbGlkT2JqZWN0TmFtZSwgaXNWYWxpZFByZWZpeCB9IGZyb20gJy4vaGVscGVyLnRzJ1xuaW1wb3J0IHR5cGUgeyBPYmplY3RNZXRhRGF0YSB9IGZyb20gJy4vdHlwZS50cydcblxuZXhwb3J0IGNsYXNzIFBvc3RQb2xpY3kge1xuICBwdWJsaWMgcG9saWN5OiB7IGNvbmRpdGlvbnM6IChzdHJpbmcgfCBudW1iZXIpW11bXTsgZXhwaXJhdGlvbj86IHN0cmluZyB9ID0ge1xuICAgIGNvbmRpdGlvbnM6IFtdLFxuICB9XG4gIHB1YmxpYyBmb3JtRGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG5cbiAgLy8gc2V0IGV4cGlyYXRpb24gZGF0ZVxuICBzZXRFeHBpcmVzKGRhdGU6IERhdGUpIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZERhdGVFcnJvcignSW52YWxpZCBkYXRlOiBjYW5ub3QgYmUgbnVsbCcpXG4gICAgfVxuICAgIHRoaXMucG9saWN5LmV4cGlyYXRpb24gPSBkYXRlLnRvSVNPU3RyaW5nKClcbiAgfVxuXG4gIC8vIHNldCBvYmplY3QgbmFtZVxuICBzZXRLZXkob2JqZWN0TmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFpc1ZhbGlkT2JqZWN0TmFtZShvYmplY3ROYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkT2JqZWN0TmFtZUVycm9yKGBJbnZhbGlkIG9iamVjdCBuYW1lIDogJHtvYmplY3ROYW1lfWApXG4gICAgfVxuICAgIHRoaXMucG9saWN5LmNvbmRpdGlvbnMucHVzaChbJ2VxJywgJyRrZXknLCBvYmplY3ROYW1lXSlcbiAgICB0aGlzLmZvcm1EYXRhLmtleSA9IG9iamVjdE5hbWVcbiAgfVxuXG4gIC8vIHNldCBvYmplY3QgbmFtZSBwcmVmaXgsIGkuZSBwb2xpY3kgYWxsb3dzIGFueSBrZXlzIHdpdGggdGhpcyBwcmVmaXhcbiAgc2V0S2V5U3RhcnRzV2l0aChwcmVmaXg6IHN0cmluZykge1xuICAgIGlmICghaXNWYWxpZFByZWZpeChwcmVmaXgpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRQcmVmaXhFcnJvcihgSW52YWxpZCBwcmVmaXggOiAke3ByZWZpeH1gKVxuICAgIH1cbiAgICB0aGlzLnBvbGljeS5jb25kaXRpb25zLnB1c2goWydzdGFydHMtd2l0aCcsICcka2V5JywgcHJlZml4XSlcbiAgICB0aGlzLmZvcm1EYXRhLmtleSA9IHByZWZpeFxuICB9XG5cbiAgLy8gc2V0IGJ1Y2tldCBuYW1lXG4gIHNldEJ1Y2tldChidWNrZXROYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIWlzVmFsaWRCdWNrZXROYW1lKGJ1Y2tldE5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRCdWNrZXROYW1lRXJyb3IoYEludmFsaWQgYnVja2V0IG5hbWUgOiAke2J1Y2tldE5hbWV9YClcbiAgICB9XG4gICAgdGhpcy5wb2xpY3kuY29uZGl0aW9ucy5wdXNoKFsnZXEnLCAnJGJ1Y2tldCcsIGJ1Y2tldE5hbWVdKVxuICAgIHRoaXMuZm9ybURhdGEuYnVja2V0ID0gYnVja2V0TmFtZVxuICB9XG5cbiAgLy8gc2V0IENvbnRlbnQtVHlwZVxuICBzZXRDb250ZW50VHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29udGVudC10eXBlIGNhbm5vdCBiZSBudWxsJylcbiAgICB9XG4gICAgdGhpcy5wb2xpY3kuY29uZGl0aW9ucy5wdXNoKFsnZXEnLCAnJENvbnRlbnQtVHlwZScsIHR5cGVdKVxuICAgIHRoaXMuZm9ybURhdGFbJ0NvbnRlbnQtVHlwZSddID0gdHlwZVxuICB9XG5cbiAgLy8gc2V0IENvbnRlbnQtVHlwZSBwcmVmaXgsIGkuZSBpbWFnZS8gYWxsb3dzIGFueSBpbWFnZVxuICBzZXRDb250ZW50VHlwZVN0YXJ0c1dpdGgocHJlZml4OiBzdHJpbmcpIHtcbiAgICBpZiAoIXByZWZpeCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb250ZW50LXR5cGUgY2Fubm90IGJlIG51bGwnKVxuICAgIH1cbiAgICB0aGlzLnBvbGljeS5jb25kaXRpb25zLnB1c2goWydzdGFydHMtd2l0aCcsICckQ29udGVudC1UeXBlJywgcHJlZml4XSlcbiAgICB0aGlzLmZvcm1EYXRhWydDb250ZW50LVR5cGUnXSA9IHByZWZpeFxuICB9XG5cbiAgLy8gc2V0IENvbnRlbnQtRGlzcG9zaXRpb25cbiAgc2V0Q29udGVudERpc3Bvc2l0aW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRlbnQtZGlzcG9zaXRpb24gY2Fubm90IGJlIG51bGwnKVxuICAgIH1cbiAgICB0aGlzLnBvbGljeS5jb25kaXRpb25zLnB1c2goWydlcScsICckQ29udGVudC1EaXNwb3NpdGlvbicsIHZhbHVlXSlcbiAgICB0aGlzLmZvcm1EYXRhWydDb250ZW50LURpc3Bvc2l0aW9uJ10gPSB2YWx1ZVxuICB9XG5cbiAgLy8gc2V0IG1pbmltdW0vbWF4aW11bSBsZW5ndGggb2Ygd2hhdCBDb250ZW50LUxlbmd0aCBjYW4gYmUuXG4gIHNldENvbnRlbnRMZW5ndGhSYW5nZShtaW46IG51bWJlciwgbWF4OiBudW1iZXIpIHtcbiAgICBpZiAobWluID4gbWF4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pbiBjYW5ub3QgYmUgbW9yZSB0aGFuIG1heCcpXG4gICAgfVxuICAgIGlmIChtaW4gPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pbiBzaG91bGQgYmUgPiAwJylcbiAgICB9XG4gICAgaWYgKG1heCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWF4IHNob3VsZCBiZSA+IDAnKVxuICAgIH1cbiAgICB0aGlzLnBvbGljeS5jb25kaXRpb25zLnB1c2goWydjb250ZW50LWxlbmd0aC1yYW5nZScsIG1pbiwgbWF4XSlcbiAgfVxuXG4gIC8vIHNldCB1c2VyIGRlZmluZWQgbWV0YWRhdGFcbiAgc2V0VXNlck1ldGFEYXRhKG1ldGFEYXRhOiBPYmplY3RNZXRhRGF0YSkge1xuICAgIGlmICghaXNPYmplY3QobWV0YURhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtZXRhZGF0YSBzaG91bGQgYmUgb2YgdHlwZSBcIm9iamVjdFwiJylcbiAgICB9XG4gICAgT2JqZWN0LmVudHJpZXMobWV0YURhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgYW16TWV0YURhdGFLZXkgPSBgeC1hbXotbWV0YS0ke2tleX1gXG4gICAgICB0aGlzLnBvbGljeS5jb25kaXRpb25zLnB1c2goWydlcScsIGAkJHthbXpNZXRhRGF0YUtleX1gLCB2YWx1ZV0pXG4gICAgICB0aGlzLmZvcm1EYXRhW2Ftek1ldGFEYXRhS2V5XSA9IHZhbHVlLnRvU3RyaW5nKClcbiAgICB9KVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQTJGLFNBQUFFLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFB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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
/// <reference types="node" />
|
|
4
|
+
/// <reference types="node" />
|
|
5
|
+
import type * as http from 'node:http';
|
|
6
|
+
import type * as https from 'node:https';
|
|
7
|
+
import type * as stream from 'node:stream';
|
|
8
|
+
import type { Transport } from "./type.js";
|
|
9
|
+
export declare function request(transport: Transport, opt: https.RequestOptions, body?: Buffer | string | stream.Readable | null): Promise<http.IncomingMessage>;
|
|
10
|
+
export declare const retryHttpCodes: Record<string, boolean>;
|
|
11
|
+
export declare function requestWithRetry(transport: Transport, opt: https.RequestOptions, body?: Buffer | string | stream.Readable | null, maxRetries?: number, baseDelayMs?: number, maximumDelayMs?: number): Promise<http.IncomingMessage>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.request = request;
|
|
7
|
+
exports.requestWithRetry = requestWithRetry;
|
|
8
|
+
var _stream = require("stream");
|
|
9
|
+
var _util = require("util");
|
|
10
|
+
const pipelineAsync = (0, _util.promisify)(_stream.pipeline);
|
|
11
|
+
async function request(transport, opt, body = null) {
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
const requestObj = transport.request(opt, response => {
|
|
14
|
+
resolve(response);
|
|
15
|
+
});
|
|
16
|
+
requestObj.on('error', reject);
|
|
17
|
+
if (!body || Buffer.isBuffer(body) || typeof body === 'string') {
|
|
18
|
+
requestObj.end(body);
|
|
19
|
+
} else {
|
|
20
|
+
pipelineAsync(body, requestObj).catch(reject);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const MAX_RETRIES = 1;
|
|
25
|
+
const BASE_DELAY_MS = 100; // Base delay for exponential backoff
|
|
26
|
+
const MAX_DELAY_MS = 60000; // Max delay for exponential backoff
|
|
27
|
+
|
|
28
|
+
// Retryable error codes for HTTP (ref: Go SDK)
|
|
29
|
+
const retryHttpCodes = {
|
|
30
|
+
408: true,
|
|
31
|
+
429: true,
|
|
32
|
+
499: true,
|
|
33
|
+
500: true,
|
|
34
|
+
502: true,
|
|
35
|
+
503: true,
|
|
36
|
+
504: true,
|
|
37
|
+
520: true
|
|
38
|
+
};
|
|
39
|
+
exports.retryHttpCodes = retryHttpCodes;
|
|
40
|
+
const isHttpRetryable = httpResCode => {
|
|
41
|
+
return retryHttpCodes[httpResCode] !== undefined;
|
|
42
|
+
};
|
|
43
|
+
const sleep = ms => {
|
|
44
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
45
|
+
};
|
|
46
|
+
const getExpBackOffDelay = (retryCount, baseDelayMs, maximumDelayMs) => {
|
|
47
|
+
const backOffBy = baseDelayMs * (1 << retryCount);
|
|
48
|
+
const additionalDelay = Math.random() * backOffBy;
|
|
49
|
+
return Math.min(backOffBy + additionalDelay, maximumDelayMs);
|
|
50
|
+
};
|
|
51
|
+
async function requestWithRetry(transport, opt, body = null, maxRetries = MAX_RETRIES, baseDelayMs = BASE_DELAY_MS, maximumDelayMs = MAX_DELAY_MS) {
|
|
52
|
+
let attempt = 0;
|
|
53
|
+
let isRetryable = false;
|
|
54
|
+
while (attempt <= maxRetries) {
|
|
55
|
+
try {
|
|
56
|
+
const response = await request(transport, opt, body);
|
|
57
|
+
// Check if the HTTP status code is retryable
|
|
58
|
+
if (isHttpRetryable(response.statusCode)) {
|
|
59
|
+
isRetryable = true;
|
|
60
|
+
throw new Error(`Retryable HTTP status: ${response.statusCode}`); // trigger retry attempt with calculated delay
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return response; // Success, return the raw response
|
|
64
|
+
} catch (err) {
|
|
65
|
+
if (isRetryable) {
|
|
66
|
+
attempt++;
|
|
67
|
+
isRetryable = false;
|
|
68
|
+
if (attempt > maxRetries) {
|
|
69
|
+
throw new Error(`Request failed after ${maxRetries} retries: ${err}`);
|
|
70
|
+
}
|
|
71
|
+
const delay = getExpBackOffDelay(attempt, baseDelayMs, maximumDelayMs);
|
|
72
|
+
// eslint-disable-next-line no-console
|
|
73
|
+
console.warn(`${new Date().toLocaleString()} Retrying request (attempt ${attempt}/${maxRetries}) after ${delay}ms due to: ${err}`);
|
|
74
|
+
await sleep(delay);
|
|
75
|
+
} else {
|
|
76
|
+
throw err; // re-throw if any request, syntax errors
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
throw new Error(`${MAX_RETRIES} Retries exhausted, request failed.`);
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyZWFtIiwicmVxdWlyZSIsIl91dGlsIiwicGlwZWxpbmVBc3luYyIsInByb21pc2lmeSIsInBpcGVsaW5lIiwicmVxdWVzdCIsInRyYW5zcG9ydCIsIm9wdCIsImJvZHkiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlcXVlc3RPYmoiLCJyZXNwb25zZSIsIm9uIiwiQnVmZmVyIiwiaXNCdWZmZXIiLCJlbmQiLCJjYXRjaCIsIk1BWF9SRVRSSUVTIiwiQkFTRV9ERUxBWV9NUyIsIk1BWF9ERUxBWV9NUyIsInJldHJ5SHR0cENvZGVzIiwiZXhwb3J0cyIsImlzSHR0cFJldHJ5YWJsZSIsImh0dHBSZXNDb2RlIiwidW5kZWZpbmVkIiwic2xlZXAiLCJtcyIsInNldFRpbWVvdXQiLCJnZXRFeHBCYWNrT2ZmRGVsYXkiLCJyZXRyeUNvdW50IiwiYmFzZURlbGF5TXMiLCJtYXhpbXVtRGVsYXlNcyIsImJhY2tPZmZCeSIsImFkZGl0aW9uYWxEZWxheSIsIk1hdGgiLCJyYW5kb20iLCJtaW4iLCJyZXF1ZXN0V2l0aFJldHJ5IiwibWF4UmV0cmllcyIsImF0dGVtcHQiLCJpc1JldHJ5YWJsZSIsInN0YXR1c0NvZGUiLCJFcnJvciIsImVyciIsImRlbGF5IiwiY29uc29sZSIsIndhcm4iLCJEYXRlIiwidG9Mb2NhbGVTdHJpbmciXSwic291cmNlcyI6WyJyZXF1ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgaHR0cCBmcm9tICdub2RlOmh0dHAnXG5pbXBvcnQgdHlwZSAqIGFzIGh0dHBzIGZyb20gJ25vZGU6aHR0cHMnXG5pbXBvcnQgdHlwZSAqIGFzIHN0cmVhbSBmcm9tICdub2RlOnN0cmVhbSdcbmltcG9ydCB7IHBpcGVsaW5lIH0gZnJvbSAnbm9kZTpzdHJlYW0nXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICdub2RlOnV0aWwnXG5cbmltcG9ydCB0eXBlIHsgVHJhbnNwb3J0IH0gZnJvbSAnLi90eXBlLnRzJ1xuXG5jb25zdCBwaXBlbGluZUFzeW5jID0gcHJvbWlzaWZ5KHBpcGVsaW5lKVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdChcbiAgdHJhbnNwb3J0OiBUcmFuc3BvcnQsXG4gIG9wdDogaHR0cHMuUmVxdWVzdE9wdGlvbnMsXG4gIGJvZHk6IEJ1ZmZlciB8IHN0cmluZyB8IHN0cmVhbS5SZWFkYWJsZSB8IG51bGwgPSBudWxsLFxuKTogUHJvbWlzZTxodHRwLkluY29taW5nTWVzc2FnZT4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8aHR0cC5JbmNvbWluZ01lc3NhZ2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZXF1ZXN0T2JqID0gdHJhbnNwb3J0LnJlcXVlc3Qob3B0LCAocmVzcG9uc2UpID0+IHtcbiAgICAgIHJlc29sdmUocmVzcG9uc2UpXG4gICAgfSlcblxuICAgIHJlcXVlc3RPYmoub24oJ2Vycm9yJywgcmVqZWN0KVxuXG4gICAgaWYgKCFib2R5IHx8IEJ1ZmZlci5pc0J1ZmZlcihib2R5KSB8fCB0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlcXVlc3RPYmouZW5kKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHBpcGVsaW5lQXN5bmMoYm9keSwgcmVxdWVzdE9iaikuY2F0Y2gocmVqZWN0KVxuICAgIH1cbiAgfSlcbn1cblxuY29uc3QgTUFYX1JFVFJJRVMgPSAxXG5jb25zdCBCQVNFX0RFTEFZX01TID0gMTAwIC8vIEJhc2UgZGVsYXkgZm9yIGV4cG9uZW50aWFsIGJhY2tvZmZcbmNvbnN0IE1BWF9ERUxBWV9NUyA9IDYwMDAwIC8vIE1heCBkZWxheSBmb3IgZXhwb25lbnRpYWwgYmFja29mZlxuXG4vLyBSZXRyeWFibGUgZXJyb3IgY29kZXMgZm9yIEhUVFAgKHJlZjogR28gU0RLKVxuZXhwb3J0IGNvbnN0IHJldHJ5SHR0cENvZGVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHtcbiAgNDA4OiB0cnVlLFxuICA0Mjk6IHRydWUsXG4gIDQ5OTogdHJ1ZSxcbiAgNTAwOiB0cnVlLFxuICA1MDI6IHRydWUsXG4gIDUwMzogdHJ1ZSxcbiAgNTA0OiB0cnVlLFxuICA1MjA6IHRydWUsXG59XG5cbmNvbnN0IGlzSHR0cFJldHJ5YWJsZSA9IChodHRwUmVzQ29kZTogbnVtYmVyKSA9PiB7XG4gIHJldHVybiByZXRyeUh0dHBDb2Rlc1todHRwUmVzQ29kZV0gIT09IHVuZGVmaW5lZFxufVxuXG5jb25zdCBzbGVlcCA9IChtczogbnVtYmVyKSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpXG59XG5cbmNvbnN0IGdldEV4cEJhY2tPZmZEZWxheSA9IChyZXRyeUNvdW50OiBudW1iZXIsIGJhc2VEZWxheU1zOiBudW1iZXIsIG1heGltdW1EZWxheU1zOiBudW1iZXIpID0+IHtcbiAgY29uc3QgYmFja09mZkJ5ID0gYmFzZURlbGF5TXMgKiAoMSA8PCByZXRyeUNvdW50KVxuICBjb25zdCBhZGRpdGlvbmFsRGVsYXkgPSBNYXRoLnJhbmRvbSgpICogYmFja09mZkJ5XG4gIHJldHVybiBNYXRoLm1pbihiYWNrT2ZmQnkgKyBhZGRpdGlvbmFsRGVsYXksIG1heGltdW1EZWxheU1zKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdFdpdGhSZXRyeShcbiAgdHJhbnNwb3J0OiBUcmFuc3BvcnQsXG4gIG9wdDogaHR0cHMuUmVxdWVzdE9wdGlvbnMsXG4gIGJvZHk6IEJ1ZmZlciB8IHN0cmluZyB8IHN0cmVhbS5SZWFkYWJsZSB8IG51bGwgPSBudWxsLFxuICBtYXhSZXRyaWVzOiBudW1iZXIgPSBNQVhfUkVUUklFUyxcbiAgYmFzZURlbGF5TXM6IG51bWJlciA9IEJBU0VfREVMQVlfTVMsXG4gIG1heGltdW1EZWxheU1zOiBudW1iZXIgPSBNQVhfREVMQVlfTVMsXG4pOiBQcm9taXNlPGh0dHAuSW5jb21pbmdNZXNzYWdlPiB7XG4gIGxldCBhdHRlbXB0ID0gMFxuICBsZXQgaXNSZXRyeWFibGUgPSBmYWxzZVxuICB3aGlsZSAoYXR0ZW1wdCA8PSBtYXhSZXRyaWVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdCh0cmFuc3BvcnQsIG9wdCwgYm9keSlcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBIVFRQIHN0YXR1cyBjb2RlIGlzIHJldHJ5YWJsZVxuICAgICAgaWYgKGlzSHR0cFJldHJ5YWJsZShyZXNwb25zZS5zdGF0dXNDb2RlIGFzIG51bWJlcikpIHtcbiAgICAgICAgaXNSZXRyeWFibGUgPSB0cnVlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUmV0cnlhYmxlIEhUVFAgc3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9YCkgLy8gdHJpZ2dlciByZXRyeSBhdHRlbXB0IHdpdGggY2FsY3VsYXRlZCBkZWxheVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzcG9uc2UgLy8gU3VjY2VzcywgcmV0dXJuIHRoZSByYXcgcmVzcG9uc2VcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmIChpc1JldHJ5YWJsZSkge1xuICAgICAgICBhdHRlbXB0KytcbiAgICAgICAgaXNSZXRyeWFibGUgPSBmYWxzZVxuXG4gICAgICAgIGlmIChhdHRlbXB0ID4gbWF4UmV0cmllcykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVxdWVzdCBmYWlsZWQgYWZ0ZXIgJHttYXhSZXRyaWVzfSByZXRyaWVzOiAke2Vycn1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlbGF5ID0gZ2V0RXhwQmFja09mZkRlbGF5KGF0dGVtcHQsIGJhc2VEZWxheU1zLCBtYXhpbXVtRGVsYXlNcylcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGAke25ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKX0gUmV0cnlpbmcgcmVxdWVzdCAoYXR0ZW1wdCAke2F0dGVtcHR9LyR7bWF4UmV0cmllc30pIGFmdGVyICR7ZGVsYXl9bXMgZHVlIHRvOiAke2Vycn1gLFxuICAgICAgICApXG4gICAgICAgIGF3YWl0IHNsZWVwKGRlbGF5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZXJyIC8vIHJlLXRocm93IGlmIGFueSByZXF1ZXN0LCBzeW50YXggZXJyb3JzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGAke01BWF9SRVRSSUVTfSBSZXRyaWVzIGV4aGF1c3RlZCwgcmVxdWVzdCBmYWlsZWQuYClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUQsT0FBQTtBQUlBLE1BQU1FLGFBQWEsR0FBRyxJQUFBQyxlQUFTLEVBQUNDLGdCQUFRLENBQUM7QUFFbEMsZUFBZUMsT0FBT0EsQ0FDM0JDLFNBQW9CLEVBQ3BCQyxHQUF5QixFQUN6QkMsSUFBOEMsR0FBRyxJQUFJLEVBQ3RCO0VBQy9CLE9BQU8sSUFBSUMsT0FBTyxDQUF1QixDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztJQUM1RCxNQUFNQyxVQUFVLEdBQUdOLFNBQVMsQ0FBQ0QsT0FBTyxDQUFDRSxHQUFHLEVBQUdNLFFBQVEsSUFBSztNQUN0REgsT0FBTyxDQUFDRyxRQUFRLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUZELFVBQVUsQ0FBQ0UsRUFBRSxDQUFDLE9BQU8sRUFBRUgsTUFBTSxDQUFDO0lBRTlCLElBQUksQ0FBQ0gsSUFBSSxJQUFJTyxNQUFNLENBQUNDLFFBQVEsQ0FBQ1IsSUFBSSxDQUFDLElBQUksT0FBT0EsSUFBSSxLQUFLLFFBQVEsRUFBRTtNQUM5REksVUFBVSxDQUFDSyxHQUFHLENBQUNULElBQUksQ0FBQztJQUN0QixDQUFDLE1BQU07TUFDTE4sYUFBYSxDQUFDTSxJQUFJLEVBQUVJLFVBQVUsQ0FBQyxDQUFDTSxLQUFLLENBQUNQLE1BQU0sQ0FBQztJQUMvQztFQUNGLENBQUMsQ0FBQztBQUNKO0FBRUEsTUFBTVEsV0FBVyxHQUFHLENBQUM7QUFDckIsTUFBTUMsYUFBYSxHQUFHLEdBQUcsRUFBQztBQUMxQixNQUFNQyxZQUFZLEdBQUcsS0FBSyxFQUFDOztBQUUzQjtBQUNPLE1BQU1DLGNBQXVDLEdBQUc7RUFDckQsR0FBRyxFQUFFLElBQUk7RUFDVCxHQUFHLEVBQUUsSUFBSTtFQUNULEdBQUcsRUFBRSxJQUFJO0VBQ1QsR0FBRyxFQUFFLElBQUk7RUFDVCxHQUFHLEVBQUUsSUFBSTtFQUNULEdBQUcsRUFBRSxJQUFJO0VBQ1QsR0FBRyxFQUFFLElBQUk7RUFDVCxHQUFHLEVBQUU7QUFDUCxDQUFDO0FBQUFDLE9BQUEsQ0FBQUQsY0FBQSxHQUFBQSxjQUFBO0FBRUQsTUFBTUUsZUFBZSxHQUFJQyxXQUFtQixJQUFLO0VBQy9DLE9BQU9ILGNBQWMsQ0FBQ0csV0FBVyxDQUFDLEtBQUtDLFNBQVM7QUFDbEQsQ0FBQztBQUVELE1BQU1DLEtBQUssR0FBSUMsRUFBVSxJQUFLO0VBQzVCLE9BQU8sSUFBSW5CLE9BQU8sQ0FBRUMsT0FBTyxJQUFLbUIsVUFBVSxDQUFDbkIsT0FBTyxFQUFFa0IsRUFBRSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELE1BQU1FLGtCQUFrQixHQUFHQSxDQUFDQyxVQUFrQixFQUFFQyxXQUFtQixFQUFFQyxjQUFzQixLQUFLO0VBQzlGLE1BQU1DLFNBQVMsR0FBR0YsV0FBVyxJQUFJLENBQUMsSUFBSUQsVUFBVSxDQUFDO0VBQ2pELE1BQU1JLGVBQWUsR0FBR0MsSUFBSSxDQUFDQyxNQUFNLENBQUMsQ0FBQyxHQUFHSCxTQUFTO0VBQ2pELE9BQU9FLElBQUksQ0FBQ0UsR0FBRyxDQUFDSixTQUFTLEdBQUdDLGVBQWUsRUFBRUYsY0FBYyxDQUFDO0FBQzlELENBQUM7QUFFTSxlQUFlTSxnQkFBZ0JBLENBQ3BDakMsU0FBb0IsRUFDcEJDLEdBQXlCLEVBQ3pCQyxJQUE4QyxHQUFHLElBQUksRUFDckRnQyxVQUFrQixHQUFHckIsV0FBVyxFQUNoQ2EsV0FBbUIsR0FBR1osYUFBYSxFQUNuQ2EsY0FBc0IsR0FBR1osWUFBWSxFQUNOO0VBQy9CLElBQUlvQixPQUFPLEdBQUcsQ0FBQztFQUNmLElBQUlDLFdBQVcsR0FBRyxLQUFLO0VBQ3ZCLE9BQU9ELE9BQU8sSUFBSUQsVUFBVSxFQUFFO0lBQzVCLElBQUk7TUFDRixNQUFNM0IsUUFBUSxHQUFHLE1BQU1SLE9BQU8sQ0FBQ0MsU0FBUyxFQUFFQyxHQUFHLEVBQUVDLElBQUksQ0FBQztNQUNwRDtNQUNBLElBQUlnQixlQUFlLENBQUNYLFFBQVEsQ0FBQzhCLFVBQW9CLENBQUMsRUFBRTtRQUNsREQsV0FBVyxHQUFHLElBQUk7UUFDbEIsTUFBTSxJQUFJRSxLQUFLLENBQUUsMEJBQXlCL0IsUUFBUSxDQUFDOEIsVUFBVyxFQUFDLENBQUMsRUFBQztNQUNuRTs7TUFFQSxPQUFPOUIsUUFBUSxFQUFDO0lBQ2xCLENBQUMsQ0FBQyxPQUFPZ0MsR0FBWSxFQUFFO01BQ3JCLElBQUlILFdBQVcsRUFBRTtRQUNmRCxPQUFPLEVBQUU7UUFDVEMsV0FBVyxHQUFHLEtBQUs7UUFFbkIsSUFBSUQsT0FBTyxHQUFHRCxVQUFVLEVBQUU7VUFDeEIsTUFBTSxJQUFJSSxLQUFLLENBQUUsd0JBQXVCSixVQUFXLGFBQVlLLEdBQUksRUFBQyxDQUFDO1FBQ3ZFO1FBQ0EsTUFBTUMsS0FBSyxHQUFHaEIsa0JBQWtCLENBQUNXLE9BQU8sRUFBRVQsV0FBVyxFQUFFQyxjQUFjLENBQUM7UUFDdEU7UUFDQWMsT0FBTyxDQUFDQyxJQUFJLENBQ1QsR0FBRSxJQUFJQyxJQUFJLENBQUMsQ0FBQyxDQUFDQyxjQUFjLENBQUMsQ0FBRSw4QkFBNkJULE9BQVEsSUFBR0QsVUFBVyxXQUFVTSxLQUFNLGNBQWFELEdBQUksRUFDckgsQ0FBQztRQUNELE1BQU1sQixLQUFLLENBQUNtQixLQUFLLENBQUM7TUFDcEIsQ0FBQyxNQUFNO1FBQ0wsTUFBTUQsR0FBRyxFQUFDO01BQ1o7SUFDRjtFQUNGOztFQUVBLE1BQU0sSUFBSUQsS0FBSyxDQUFFLEdBQUV6QixXQUFZLHFDQUFvQyxDQUFDO0FBQ3RFIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
/// <reference types="node" />
|
|
4
|
+
import type http from 'node:http';
|
|
5
|
+
import type stream from 'node:stream';
|
|
6
|
+
export declare function readAsBuffer(res: stream.Readable): Promise<Buffer>;
|
|
7
|
+
export declare function readAsString(res: http.IncomingMessage): Promise<string>;
|
|
8
|
+
export declare function drainResponse(res: stream.Readable): Promise<void>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.drainResponse = drainResponse;
|
|
7
|
+
exports.readAsBuffer = readAsBuffer;
|
|
8
|
+
exports.readAsString = readAsString;
|
|
9
|
+
async function readAsBuffer(res) {
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
const body = [];
|
|
12
|
+
res.on('data', chunk => body.push(chunk)).on('error', e => reject(e)).on('end', () => resolve(Buffer.concat(body)));
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
async function readAsString(res) {
|
|
16
|
+
const body = await readAsBuffer(res);
|
|
17
|
+
return body.toString();
|
|
18
|
+
}
|
|
19
|
+
async function drainResponse(res) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
res.on('data', () => {}).on('error', e => reject(e)).on('end', () => resolve());
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWFkQXNCdWZmZXIiLCJyZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImJvZHkiLCJvbiIsImNodW5rIiwicHVzaCIsImUiLCJCdWZmZXIiLCJjb25jYXQiLCJyZWFkQXNTdHJpbmciLCJ0b1N0cmluZyIsImRyYWluUmVzcG9uc2UiXSwic291cmNlcyI6WyJyZXNwb25zZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBodHRwIGZyb20gJ25vZGU6aHR0cCdcbmltcG9ydCB0eXBlIHN0cmVhbSBmcm9tICdub2RlOnN0cmVhbSdcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRBc0J1ZmZlcihyZXM6IHN0cmVhbS5SZWFkYWJsZSk6IFByb21pc2U8QnVmZmVyPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgYm9keTogQnVmZmVyW10gPSBbXVxuICAgIHJlc1xuICAgICAgLm9uKCdkYXRhJywgKGNodW5rOiBCdWZmZXIpID0+IGJvZHkucHVzaChjaHVuaykpXG4gICAgICAub24oJ2Vycm9yJywgKGUpID0+IHJlamVjdChlKSlcbiAgICAgIC5vbignZW5kJywgKCkgPT4gcmVzb2x2ZShCdWZmZXIuY29uY2F0KGJvZHkpKSlcbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRBc1N0cmluZyhyZXM6IGh0dHAuSW5jb21pbmdNZXNzYWdlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgYm9keSA9IGF3YWl0IHJlYWRBc0J1ZmZlcihyZXMpXG4gIHJldHVybiBib2R5LnRvU3RyaW5nKClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRyYWluUmVzcG9uc2UocmVzOiBzdHJlYW0uUmVhZGFibGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICByZXNcbiAgICAgIC5vbignZGF0YScsICgpID0+IHt9KVxuICAgICAgLm9uKCdlcnJvcicsIChlKSA9PiByZWplY3QoZSkpXG4gICAgICAub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSlcbiAgfSlcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHTyxlQUFlQSxZQUFZQSxDQUFDQyxHQUFvQixFQUFtQjtFQUN4RSxPQUFPLElBQUlDLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztJQUN0QyxNQUFNQyxJQUFjLEdBQUcsRUFBRTtJQUN6QkosR0FBRyxDQUNBSyxFQUFFLENBQUMsTUFBTSxFQUFHQyxLQUFhLElBQUtGLElBQUksQ0FBQ0csSUFBSSxDQUFDRCxLQUFLLENBQUMsQ0FBQyxDQUMvQ0QsRUFBRSxDQUFDLE9BQU8sRUFBR0csQ0FBQyxJQUFLTCxNQUFNLENBQUNLLENBQUMsQ0FBQyxDQUFDLENBQzdCSCxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU1ILE9BQU8sQ0FBQ08sTUFBTSxDQUFDQyxNQUFNLENBQUNOLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDbEQsQ0FBQyxDQUFDO0FBQ0o7QUFFTyxlQUFlTyxZQUFZQSxDQUFDWCxHQUF5QixFQUFtQjtFQUM3RSxNQUFNSSxJQUFJLEdBQUcsTUFBTUwsWUFBWSxDQUFDQyxHQUFHLENBQUM7RUFDcEMsT0FBT0ksSUFBSSxDQUFDUSxRQUFRLENBQUMsQ0FBQztBQUN4QjtBQUVPLGVBQWVDLGFBQWFBLENBQUNiLEdBQW9CLEVBQWlCO0VBQ3ZFLE9BQU8sSUFBSUMsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRUMsTUFBTSxLQUFLO0lBQ3RDSCxHQUFHLENBQ0FLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUNwQkEsRUFBRSxDQUFDLE9BQU8sRUFBR0csQ0FBQyxJQUFLTCxNQUFNLENBQUNLLENBQUMsQ0FBQyxDQUFDLENBQzdCSCxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU1ILE9BQU8sQ0FBQyxDQUFDLENBQUM7RUFDL0IsQ0FBQyxDQUFDO0FBQ0oifQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
declare const awsS3Endpoint: {
|
|
2
|
+
'af-south-1': string;
|
|
3
|
+
'ap-east-1': string;
|
|
4
|
+
'ap-south-1': string;
|
|
5
|
+
'ap-south-2': string;
|
|
6
|
+
'ap-southeast-1': string;
|
|
7
|
+
'ap-southeast-2': string;
|
|
8
|
+
'ap-southeast-3': string;
|
|
9
|
+
'ap-southeast-4': string;
|
|
10
|
+
'ap-southeast-5': string;
|
|
11
|
+
'ap-northeast-1': string;
|
|
12
|
+
'ap-northeast-2': string;
|
|
13
|
+
'ap-northeast-3': string;
|
|
14
|
+
'ca-central-1': string;
|
|
15
|
+
'ca-west-1': string;
|
|
16
|
+
'cn-north-1': string;
|
|
17
|
+
'eu-central-1': string;
|
|
18
|
+
'eu-central-2': string;
|
|
19
|
+
'eu-north-1': string;
|
|
20
|
+
'eu-south-1': string;
|
|
21
|
+
'eu-south-2': string;
|
|
22
|
+
'eu-west-1': string;
|
|
23
|
+
'eu-west-2': string;
|
|
24
|
+
'eu-west-3': string;
|
|
25
|
+
'il-central-1': string;
|
|
26
|
+
'me-central-1': string;
|
|
27
|
+
'me-south-1': string;
|
|
28
|
+
'sa-east-1': string;
|
|
29
|
+
'us-east-1': string;
|
|
30
|
+
'us-east-2': string;
|
|
31
|
+
'us-west-1': string;
|
|
32
|
+
'us-west-2': string;
|
|
33
|
+
'us-gov-east-1': string;
|
|
34
|
+
'us-gov-west-1': string;
|
|
35
|
+
};
|
|
36
|
+
export type Region = keyof typeof awsS3Endpoint | string;
|
|
37
|
+
export declare function getS3Endpoint(region: Region): string;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getS3Endpoint = getS3Endpoint;
|
|
7
|
+
var _helper = require("./helper.js");
|
|
8
|
+
/*
|
|
9
|
+
* Hanzo S3 Javascript Library for Amazon S3 Compatible Cloud Storage, (C) 2015, 2016 Hanzo AI, Inc.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
// List of currently supported endpoints.
|
|
25
|
+
const awsS3Endpoint = {
|
|
26
|
+
'af-south-1': 's3.af-south-1.amazonaws.com',
|
|
27
|
+
'ap-east-1': 's3.ap-east-1.amazonaws.com',
|
|
28
|
+
'ap-south-1': 's3.ap-south-1.amazonaws.com',
|
|
29
|
+
'ap-south-2': 's3.ap-south-2.amazonaws.com',
|
|
30
|
+
'ap-southeast-1': 's3.ap-southeast-1.amazonaws.com',
|
|
31
|
+
'ap-southeast-2': 's3.ap-southeast-2.amazonaws.com',
|
|
32
|
+
'ap-southeast-3': 's3.ap-southeast-3.amazonaws.com',
|
|
33
|
+
'ap-southeast-4': 's3.ap-southeast-4.amazonaws.com',
|
|
34
|
+
'ap-southeast-5': 's3.ap-southeast-5.amazonaws.com',
|
|
35
|
+
'ap-northeast-1': 's3.ap-northeast-1.amazonaws.com',
|
|
36
|
+
'ap-northeast-2': 's3.ap-northeast-2.amazonaws.com',
|
|
37
|
+
'ap-northeast-3': 's3.ap-northeast-3.amazonaws.com',
|
|
38
|
+
'ca-central-1': 's3.ca-central-1.amazonaws.com',
|
|
39
|
+
'ca-west-1': 's3.ca-west-1.amazonaws.com',
|
|
40
|
+
'cn-north-1': 's3.cn-north-1.amazonaws.com.cn',
|
|
41
|
+
'eu-central-1': 's3.eu-central-1.amazonaws.com',
|
|
42
|
+
'eu-central-2': 's3.eu-central-2.amazonaws.com',
|
|
43
|
+
'eu-north-1': 's3.eu-north-1.amazonaws.com',
|
|
44
|
+
'eu-south-1': 's3.eu-south-1.amazonaws.com',
|
|
45
|
+
'eu-south-2': 's3.eu-south-2.amazonaws.com',
|
|
46
|
+
'eu-west-1': 's3.eu-west-1.amazonaws.com',
|
|
47
|
+
'eu-west-2': 's3.eu-west-2.amazonaws.com',
|
|
48
|
+
'eu-west-3': 's3.eu-west-3.amazonaws.com',
|
|
49
|
+
'il-central-1': 's3.il-central-1.amazonaws.com',
|
|
50
|
+
'me-central-1': 's3.me-central-1.amazonaws.com',
|
|
51
|
+
'me-south-1': 's3.me-south-1.amazonaws.com',
|
|
52
|
+
'sa-east-1': 's3.sa-east-1.amazonaws.com',
|
|
53
|
+
'us-east-1': 's3.us-east-1.amazonaws.com',
|
|
54
|
+
'us-east-2': 's3.us-east-2.amazonaws.com',
|
|
55
|
+
'us-west-1': 's3.us-west-1.amazonaws.com',
|
|
56
|
+
'us-west-2': 's3.us-west-2.amazonaws.com',
|
|
57
|
+
'us-gov-east-1': 's3.us-gov-east-1.amazonaws.com',
|
|
58
|
+
'us-gov-west-1': 's3.us-gov-west-1.amazonaws.com'
|
|
59
|
+
// Add new endpoints here.
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// getS3Endpoint get relevant endpoint for the region.
|
|
63
|
+
function getS3Endpoint(region) {
|
|
64
|
+
if (!(0, _helper.isString)(region)) {
|
|
65
|
+
throw new TypeError(`Invalid region: ${region}`);
|
|
66
|
+
}
|
|
67
|
+
const endpoint = awsS3Endpoint[region];
|
|
68
|
+
if (endpoint) {
|
|
69
|
+
return endpoint;
|
|
70
|
+
}
|
|
71
|
+
return 's3.amazonaws.com';
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVyIiwicmVxdWlyZSIsImF3c1MzRW5kcG9pbnQiLCJnZXRTM0VuZHBvaW50IiwicmVnaW9uIiwiaXNTdHJpbmciLCJUeXBlRXJyb3IiLCJlbmRwb2ludCJdLCJzb3VyY2VzIjpbInMzLWVuZHBvaW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogSGFuem8gUzMgSmF2YXNjcmlwdCBMaWJyYXJ5IGZvciBBbWF6b24gUzMgQ29tcGF0aWJsZSBDbG91ZCBTdG9yYWdlLCAoQykgMjAxNSwgMjAxNiBIYW56byBBSSwgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4vaGVscGVyLnRzJ1xuXG4vLyBMaXN0IG9mIGN1cnJlbnRseSBzdXBwb3J0ZWQgZW5kcG9pbnRzLlxuY29uc3QgYXdzUzNFbmRwb2ludCA9IHtcbiAgJ2FmLXNvdXRoLTEnOiAnczMuYWYtc291dGgtMS5hbWF6b25hd3MuY29tJyxcbiAgJ2FwLWVhc3QtMSc6ICdzMy5hcC1lYXN0LTEuYW1hem9uYXdzLmNvbScsXG4gICdhcC1zb3V0aC0xJzogJ3MzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbScsXG4gICdhcC1zb3V0aC0yJzogJ3MzLmFwLXNvdXRoLTIuYW1hem9uYXdzLmNvbScsXG4gICdhcC1zb3V0aGVhc3QtMSc6ICdzMy5hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tJyxcbiAgJ2FwLXNvdXRoZWFzdC0yJzogJ3MzLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20nLFxuICAnYXAtc291dGhlYXN0LTMnOiAnczMuYXAtc291dGhlYXN0LTMuYW1hem9uYXdzLmNvbScsXG4gICdhcC1zb3V0aGVhc3QtNCc6ICdzMy5hcC1zb3V0aGVhc3QtNC5hbWF6b25hd3MuY29tJyxcbiAgJ2FwLXNvdXRoZWFzdC01JzogJ3MzLmFwLXNvdXRoZWFzdC01LmFtYXpvbmF3cy5jb20nLFxuICAnYXAtbm9ydGhlYXN0LTEnOiAnczMuYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbScsXG4gICdhcC1ub3J0aGVhc3QtMic6ICdzMy5hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tJyxcbiAgJ2FwLW5vcnRoZWFzdC0zJzogJ3MzLmFwLW5vcnRoZWFzdC0zLmFtYXpvbmF3cy5jb20nLFxuICAnY2EtY2VudHJhbC0xJzogJ3MzLmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tJyxcbiAgJ2NhLXdlc3QtMSc6ICdzMy5jYS13ZXN0LTEuYW1hem9uYXdzLmNvbScsXG4gICdjbi1ub3J0aC0xJzogJ3MzLmNuLW5vcnRoLTEuYW1hem9uYXdzLmNvbS5jbicsXG4gICdldS1jZW50cmFsLTEnOiAnczMuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20nLFxuICAnZXUtY2VudHJhbC0yJzogJ3MzLmV1LWNlbnRyYWwtMi5hbWF6b25hd3MuY29tJyxcbiAgJ2V1LW5vcnRoLTEnOiAnczMuZXUtbm9ydGgtMS5hbWF6b25hd3MuY29tJyxcbiAgJ2V1LXNvdXRoLTEnOiAnczMuZXUtc291dGgtMS5hbWF6b25hd3MuY29tJyxcbiAgJ2V1LXNvdXRoLTInOiAnczMuZXUtc291dGgtMi5hbWF6b25hd3MuY29tJyxcbiAgJ2V1LXdlc3QtMSc6ICdzMy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbScsXG4gICdldS13ZXN0LTInOiAnczMuZXUtd2VzdC0yLmFtYXpvbmF3cy5jb20nLFxuICAnZXUtd2VzdC0zJzogJ3MzLmV1LXdlc3QtMy5hbWF6b25hd3MuY29tJyxcbiAgJ2lsLWNlbnRyYWwtMSc6ICdzMy5pbC1jZW50cmFsLTEuYW1hem9uYXdzLmNvbScsXG4gICdtZS1jZW50cmFsLTEnOiAnczMubWUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20nLFxuICAnbWUtc291dGgtMSc6ICdzMy5tZS1zb3V0aC0xLmFtYXpvbmF3cy5jb20nLFxuICAnc2EtZWFzdC0xJzogJ3MzLnNhLWVhc3QtMS5hbWF6b25hd3MuY29tJyxcbiAgJ3VzLWVhc3QtMSc6ICdzMy51cy1lYXN0LTEuYW1hem9uYXdzLmNvbScsXG4gICd1cy1lYXN0LTInOiAnczMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20nLFxuICAndXMtd2VzdC0xJzogJ3MzLnVzLXdlc3QtMS5hbWF6b25hd3MuY29tJyxcbiAgJ3VzLXdlc3QtMic6ICdzMy51cy13ZXN0LTIuYW1hem9uYXdzLmNvbScsXG4gICd1cy1nb3YtZWFzdC0xJzogJ3MzLnVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbScsXG4gICd1cy1nb3Ytd2VzdC0xJzogJ3MzLnVzLWdvdi13ZXN0LTEuYW1hem9uYXdzLmNvbScsXG4gIC8vIEFkZCBuZXcgZW5kcG9pbnRzIGhlcmUuXG59XG5cbmV4cG9ydCB0eXBlIFJlZ2lvbiA9IGtleW9mIHR5cGVvZiBhd3NTM0VuZHBvaW50IHwgc3RyaW5nXG5cbi8vIGdldFMzRW5kcG9pbnQgZ2V0IHJlbGV2YW50IGVuZHBvaW50IGZvciB0aGUgcmVnaW9uLlxuZXhwb3J0IGZ1bmN0aW9uIGdldFMzRW5kcG9pbnQocmVnaW9uOiBSZWdpb24pOiBzdHJpbmcge1xuICBpZiAoIWlzU3RyaW5nKHJlZ2lvbikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIHJlZ2lvbjogJHtyZWdpb259YClcbiAgfVxuXG4gIGNvbnN0IGVuZHBvaW50ID0gKGF3c1MzRW5kcG9pbnQgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPilbcmVnaW9uXVxuICBpZiAoZW5kcG9pbnQpIHtcbiAgICByZXR1cm4gZW5kcG9pbnRcbiAgfVxuICByZXR1cm4gJ3MzLmFtYXpvbmF3cy5jb20nXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQWdCQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUlBO0FBQ0EsTUFBTUMsYUFBYSxHQUFHO0VBQ3BCLFlBQVksRUFBRSw2QkFBNkI7RUFDM0MsV0FBVyxFQUFFLDRCQUE0QjtFQUN6QyxZQUFZLEVBQUUsNkJBQTZCO0VBQzNDLFlBQVksRUFBRSw2QkFBNkI7RUFDM0MsZ0JBQWdCLEVBQUUsaUNBQWlDO0VBQ25ELGdCQUFnQixFQUFFLGlDQUFpQztFQUNuRCxnQkFBZ0IsRUFBRSxpQ0FBaUM7RUFDbkQsZ0JBQWdCLEVBQUUsaUNBQWlDO0VBQ25ELGdCQUFnQixFQUFFLGlDQUFpQztFQUNuRCxnQkFBZ0IsRUFBRSxpQ0FBaUM7RUFDbkQsZ0JBQWdCLEVBQUUsaUNBQWlDO0VBQ25ELGdCQUFnQixFQUFFLGlDQUFpQztFQUNuRCxjQUFjLEVBQUUsK0JBQStCO0VBQy9DLFdBQVcsRUFBRSw0QkFBNEI7RUFDekMsWUFBWSxFQUFFLGdDQUFnQztFQUM5QyxjQUFjLEVBQUUsK0JBQStCO0VBQy9DLGNBQWMsRUFBRSwrQkFBK0I7RUFDL0MsWUFBWSxFQUFFLDZCQUE2QjtFQUMzQyxZQUFZLEVBQUUsNkJBQTZCO0VBQzNDLFlBQVksRUFBRSw2QkFBNkI7RUFDM0MsV0FBVyxFQUFFLDRCQUE0QjtFQUN6QyxXQUFXLEVBQUUsNEJBQTRCO0VBQ3pDLFdBQVcsRUFBRSw0QkFBNEI7RUFDekMsY0FBYyxFQUFFLCtCQUErQjtFQUMvQyxjQUFjLEVBQUUsK0JBQStCO0VBQy9DLFlBQVksRUFBRSw2QkFBNkI7RUFDM0MsV0FBVyxFQUFFLDRCQUE0QjtFQUN6QyxXQUFXLEVBQUUsNEJBQTRCO0VBQ3pDLFdBQVcsRUFBRSw0QkFBNEI7RUFDekMsV0FBVyxFQUFFLDRCQUE0QjtFQUN6QyxXQUFXLEVBQUUsNEJBQTRCO0VBQ3pDLGVBQWUsRUFBRSxnQ0FBZ0M7RUFDakQsZUFBZSxFQUFFO0VBQ2pCO0FBQ0YsQ0FBQzs7QUFJRDtBQUNPLFNBQVNDLGFBQWFBLENBQUNDLE1BQWMsRUFBVTtFQUNwRCxJQUFJLENBQUMsSUFBQUMsZ0JBQVEsRUFBQ0QsTUFBTSxDQUFDLEVBQUU7SUFDckIsTUFBTSxJQUFJRSxTQUFTLENBQUUsbUJBQWtCRixNQUFPLEVBQUMsQ0FBQztFQUNsRDtFQUVBLE1BQU1HLFFBQVEsR0FBSUwsYUFBYSxDQUE0QkUsTUFBTSxDQUFDO0VBQ2xFLElBQUlHLFFBQVEsRUFBRTtJQUNaLE9BQU9BLFFBQVE7RUFDakI7RUFDQSxPQUFPLGtCQUFrQjtBQUMzQiJ9
|