@aws-sdk/middleware-sdk-rds 3.34.0 → 3.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,41 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.38.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.37.0...v3.38.0) (2021-10-22)
7
+
8
+ **Note:** Version bump only for package @aws-sdk/middleware-sdk-rds
9
+
10
+
11
+
12
+
13
+
14
+ # [3.37.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.36.1...v3.37.0) (2021-10-15)
15
+
16
+ **Note:** Version bump only for package @aws-sdk/middleware-sdk-rds
17
+
18
+
19
+
20
+
21
+
22
+ # [3.36.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.35.0...v3.36.0) (2021-10-08)
23
+
24
+
25
+ ### Features
26
+
27
+ * publish files in dist-* only ([#2873](https://github.com/aws/aws-sdk-js-v3/issues/2873)) ([53b4243](https://github.com/aws/aws-sdk-js-v3/commit/53b4243b066f25ff2412d5f0dea1036054b2df32))
28
+
29
+
30
+
31
+
32
+
33
+ # [3.35.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.34.0...v3.35.0) (2021-10-04)
34
+
35
+ **Note:** Version bump only for package @aws-sdk/middleware-sdk-rds
36
+
37
+
38
+
39
+
40
+
6
41
  # [3.34.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.33.0...v3.34.0) (2021-09-24)
7
42
 
8
43
 
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.credentials = exports.endpoint = exports.region = exports.MockSha256 = void 0;
4
+ class MockSha256 {
5
+ constructor(secret) { }
6
+ update(data) { }
7
+ digest() {
8
+ return Promise.resolve(new Uint8Array(5));
9
+ }
10
+ }
11
+ exports.MockSha256 = MockSha256;
12
+ const region = () => Promise.resolve("mock-region");
13
+ exports.region = region;
14
+ const endpoint = () => Promise.resolve({
15
+ protocol: "https:",
16
+ path: "/",
17
+ hostname: "ec2.mock-region.amazonaws.com",
18
+ });
19
+ exports.endpoint = endpoint;
20
+ const credentials = () => Promise.resolve({
21
+ accessKeyId: "akid",
22
+ secretAccessKey: "secret",
23
+ sessionToken: "session",
24
+ });
25
+ exports.credentials = credentials;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCrossRegionPresignedUrlPlugin = exports.crossRegionPresignedUrlMiddlewareOptions = exports.crossRegionPresignedUrlMiddleware = void 0;
4
+ const protocol_http_1 = require("@aws-sdk/protocol-http");
5
+ const signature_v4_1 = require("@aws-sdk/signature-v4");
6
+ const util_format_url_1 = require("@aws-sdk/util-format-url");
7
+ const regARN = /arn:[\w+=/,.@-]+:[\w+=/,.@-]+:([\w+=/,.@-]*)?:[0-9]+:[\w+=/,.@-]+(:[\w+=/,.@-]+)?(:[\w+=/,.@-]+)?/;
8
+ const sourceIdToCommandKeyMap = {
9
+ SourceDBSnapshotIdentifier: "CopyDBSnapshot",
10
+ SourceDBInstanceIdentifier: "CreateDBInstanceReadReplica",
11
+ ReplicationSourceIdentifier: "CreateDBCluster",
12
+ SourceDBClusterSnapshotIdentifier: "CopyDBClusterSnapshot",
13
+ SourceDBInstanceArn: "StartDBInstanceAutomatedBackupsReplication",
14
+ };
15
+ const version = "2014-10-31";
16
+ function crossRegionPresignedUrlMiddleware(options) {
17
+ return (next) => async (args) => {
18
+ const { input } = args;
19
+ const region = await options.region();
20
+ const sourceIdKey = Object.keys(sourceIdToCommandKeyMap).filter((sourceKeyId) => input.hasOwnProperty(sourceKeyId))[0];
21
+ if (!sourceIdKey)
22
+ return next(args);
23
+ const command = sourceIdToCommandKeyMap[sourceIdKey];
24
+ if (!input.PreSignedUrl && isARN(input[sourceIdKey]) && region !== getEndpointFromARN(input[sourceIdKey])) {
25
+ const sourceRegion = getEndpointFromARN(input[sourceIdKey]);
26
+ const resolvedEndpoint = await options.endpoint();
27
+ resolvedEndpoint.hostname = `rds.${sourceRegion}.amazonaws.com`;
28
+ const request = new protocol_http_1.HttpRequest({
29
+ ...resolvedEndpoint,
30
+ protocol: "https",
31
+ headers: {
32
+ host: resolvedEndpoint.hostname,
33
+ },
34
+ query: {
35
+ Action: command,
36
+ Version: version,
37
+ KmsKeyId: input.KmsKeyId,
38
+ DestinationRegion: region,
39
+ [sourceIdKey]: input[sourceIdKey],
40
+ },
41
+ });
42
+ const signer = new signature_v4_1.SignatureV4({
43
+ credentials: options.credentials,
44
+ region: sourceRegion,
45
+ service: "rds",
46
+ sha256: options.sha256,
47
+ uriEscapePath: options.signingEscapePath,
48
+ });
49
+ const presignedRequest = await signer.presign(request, {
50
+ expiresIn: 3600,
51
+ });
52
+ args = {
53
+ ...args,
54
+ input: {
55
+ ...args.input,
56
+ PreSignedUrl: util_format_url_1.formatUrl(presignedRequest),
57
+ },
58
+ };
59
+ }
60
+ return next(args);
61
+ };
62
+ }
63
+ exports.crossRegionPresignedUrlMiddleware = crossRegionPresignedUrlMiddleware;
64
+ exports.crossRegionPresignedUrlMiddlewareOptions = {
65
+ step: "initialize",
66
+ tags: ["CROSS_REGION_PRESIGNED_URL"],
67
+ name: "crossRegionPresignedUrlMiddleware",
68
+ override: true,
69
+ };
70
+ const getCrossRegionPresignedUrlPlugin = (config) => ({
71
+ applyToStack: (clientStack) => {
72
+ clientStack.add(crossRegionPresignedUrlMiddleware(config), exports.crossRegionPresignedUrlMiddlewareOptions);
73
+ },
74
+ });
75
+ exports.getCrossRegionPresignedUrlPlugin = getCrossRegionPresignedUrlPlugin;
76
+ function isARN(id) {
77
+ if (!id)
78
+ return false;
79
+ return regARN.test(id);
80
+ }
81
+ function getEndpointFromARN(arn) {
82
+ const arnArr = arn.split(":");
83
+ if (arnArr.length < 4) {
84
+ throw new Error(`Cannot infer endpoint from '${arn}'`);
85
+ }
86
+ return arnArr[3];
87
+ }
@@ -0,0 +1,25 @@
1
+ var MockSha256 = (function () {
2
+ function MockSha256(secret) {
3
+ }
4
+ MockSha256.prototype.update = function (data) { };
5
+ MockSha256.prototype.digest = function () {
6
+ return Promise.resolve(new Uint8Array(5));
7
+ };
8
+ return MockSha256;
9
+ }());
10
+ export { MockSha256 };
11
+ export var region = function () { return Promise.resolve("mock-region"); };
12
+ export var endpoint = function () {
13
+ return Promise.resolve({
14
+ protocol: "https:",
15
+ path: "/",
16
+ hostname: "ec2.mock-region.amazonaws.com",
17
+ });
18
+ };
19
+ export var credentials = function () {
20
+ return Promise.resolve({
21
+ accessKeyId: "akid",
22
+ secretAccessKey: "secret",
23
+ sessionToken: "session",
24
+ });
25
+ };
@@ -0,0 +1,91 @@
1
+ import { __assign, __awaiter, __generator } from "tslib";
2
+ import { HttpRequest } from "@aws-sdk/protocol-http";
3
+ import { SignatureV4 } from "@aws-sdk/signature-v4";
4
+ import { formatUrl } from "@aws-sdk/util-format-url";
5
+ var regARN = /arn:[\w+=/,.@-]+:[\w+=/,.@-]+:([\w+=/,.@-]*)?:[0-9]+:[\w+=/,.@-]+(:[\w+=/,.@-]+)?(:[\w+=/,.@-]+)?/;
6
+ var sourceIdToCommandKeyMap = {
7
+ SourceDBSnapshotIdentifier: "CopyDBSnapshot",
8
+ SourceDBInstanceIdentifier: "CreateDBInstanceReadReplica",
9
+ ReplicationSourceIdentifier: "CreateDBCluster",
10
+ SourceDBClusterSnapshotIdentifier: "CopyDBClusterSnapshot",
11
+ SourceDBInstanceArn: "StartDBInstanceAutomatedBackupsReplication",
12
+ };
13
+ var version = "2014-10-31";
14
+ export function crossRegionPresignedUrlMiddleware(options) {
15
+ var _this = this;
16
+ return function (next) {
17
+ return function (args) { return __awaiter(_this, void 0, void 0, function () {
18
+ var input, region, sourceIdKey, command, sourceRegion, resolvedEndpoint, request, signer, presignedRequest;
19
+ var _a;
20
+ return __generator(this, function (_b) {
21
+ switch (_b.label) {
22
+ case 0:
23
+ input = args.input;
24
+ return [4, options.region()];
25
+ case 1:
26
+ region = _b.sent();
27
+ sourceIdKey = Object.keys(sourceIdToCommandKeyMap).filter(function (sourceKeyId) {
28
+ return input.hasOwnProperty(sourceKeyId);
29
+ })[0];
30
+ if (!sourceIdKey)
31
+ return [2, next(args)];
32
+ command = sourceIdToCommandKeyMap[sourceIdKey];
33
+ if (!(!input.PreSignedUrl && isARN(input[sourceIdKey]) && region !== getEndpointFromARN(input[sourceIdKey]))) return [3, 4];
34
+ sourceRegion = getEndpointFromARN(input[sourceIdKey]);
35
+ return [4, options.endpoint()];
36
+ case 2:
37
+ resolvedEndpoint = _b.sent();
38
+ resolvedEndpoint.hostname = "rds." + sourceRegion + ".amazonaws.com";
39
+ request = new HttpRequest(__assign(__assign({}, resolvedEndpoint), { protocol: "https", headers: {
40
+ host: resolvedEndpoint.hostname,
41
+ }, query: (_a = {
42
+ Action: command,
43
+ Version: version,
44
+ KmsKeyId: input.KmsKeyId,
45
+ DestinationRegion: region
46
+ },
47
+ _a[sourceIdKey] = input[sourceIdKey],
48
+ _a) }));
49
+ signer = new SignatureV4({
50
+ credentials: options.credentials,
51
+ region: sourceRegion,
52
+ service: "rds",
53
+ sha256: options.sha256,
54
+ uriEscapePath: options.signingEscapePath,
55
+ });
56
+ return [4, signer.presign(request, {
57
+ expiresIn: 3600,
58
+ })];
59
+ case 3:
60
+ presignedRequest = _b.sent();
61
+ args = __assign(__assign({}, args), { input: __assign(__assign({}, args.input), { PreSignedUrl: formatUrl(presignedRequest) }) });
62
+ _b.label = 4;
63
+ case 4: return [2, next(args)];
64
+ }
65
+ });
66
+ }); };
67
+ };
68
+ }
69
+ export var crossRegionPresignedUrlMiddlewareOptions = {
70
+ step: "initialize",
71
+ tags: ["CROSS_REGION_PRESIGNED_URL"],
72
+ name: "crossRegionPresignedUrlMiddleware",
73
+ override: true,
74
+ };
75
+ export var getCrossRegionPresignedUrlPlugin = function (config) { return ({
76
+ applyToStack: function (clientStack) {
77
+ clientStack.add(crossRegionPresignedUrlMiddleware(config), crossRegionPresignedUrlMiddlewareOptions);
78
+ },
79
+ }); };
80
+ function isARN(id) {
81
+ if (!id)
82
+ return false;
83
+ return regARN.test(id);
84
+ }
85
+ function getEndpointFromARN(arn) {
86
+ var arnArr = arn.split(":");
87
+ if (arnArr.length < 4) {
88
+ throw new Error("Cannot infer endpoint from '" + arn + "'");
89
+ }
90
+ return arnArr[3];
91
+ }
File without changes
File without changes
File without changes
@@ -6,10 +6,7 @@ interface PreviouslyResolved {
6
6
  sha256: HashConstructor;
7
7
  signingEscapePath: boolean;
8
8
  }
9
- /**
10
- * Config of the middleware to automatically add presigned URL to request.
11
- * The presigned URL is generated by sigV4
12
- */
9
+
13
10
  export declare function crossRegionPresignedUrlMiddleware(options: PreviouslyResolved): InitializeMiddleware<any, any>;
14
11
  export declare const crossRegionPresignedUrlMiddlewareOptions: InitializeHandlerOptions;
15
12
  export declare const getCrossRegionPresignedUrlPlugin: (config: PreviouslyResolved) => Pluggable<any, any>;
package/package.json CHANGED
@@ -1,27 +1,27 @@
1
1
  {
2
2
  "name": "@aws-sdk/middleware-sdk-rds",
3
- "version": "3.34.0",
3
+ "version": "3.38.0",
4
4
  "scripts": {
5
5
  "build": "yarn build:cjs && yarn build:es && yarn build:types",
6
6
  "build:cjs": "tsc -p tsconfig.cjs.json",
7
7
  "build:es": "tsc -p tsconfig.es.json",
8
8
  "build:types": "tsc -p tsconfig.types.json",
9
- "downlevel-dts": "downlevel-dts dist/types dist/types/ts3.4",
9
+ "downlevel-dts": "downlevel-dts dist-types dist-types/ts3.4",
10
10
  "test": "jest"
11
11
  },
12
- "main": "./dist/cjs/index.js",
13
- "module": "./dist/es/index.js",
14
- "types": "./dist/types/index.d.ts",
12
+ "main": "./dist-cjs/index.js",
13
+ "module": "./dist-es/index.js",
14
+ "types": "./dist-types/index.d.ts",
15
15
  "author": {
16
16
  "name": "AWS SDK for JavaScript Team",
17
17
  "url": "https://aws.amazon.com/javascript/"
18
18
  },
19
19
  "license": "Apache-2.0",
20
20
  "dependencies": {
21
- "@aws-sdk/protocol-http": "3.34.0",
22
- "@aws-sdk/signature-v4": "3.34.0",
23
- "@aws-sdk/types": "3.34.0",
24
- "@aws-sdk/util-format-url": "3.34.0",
21
+ "@aws-sdk/protocol-http": "3.38.0",
22
+ "@aws-sdk/signature-v4": "3.38.0",
23
+ "@aws-sdk/types": "3.38.0",
24
+ "@aws-sdk/util-format-url": "3.38.0",
25
25
  "tslib": "^2.3.0"
26
26
  },
27
27
  "devDependencies": {
@@ -34,11 +34,14 @@
34
34
  },
35
35
  "typesVersions": {
36
36
  "<4.0": {
37
- "dist/types/*": [
38
- "dist/types/ts3.4/*"
37
+ "dist-types/*": [
38
+ "dist-types/ts3.4/*"
39
39
  ]
40
40
  }
41
41
  },
42
+ "files": [
43
+ "dist-*"
44
+ ],
42
45
  "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/middleware-sdk-rds",
43
46
  "repository": {
44
47
  "type": "git",
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.credentials = exports.endpoint = exports.region = exports.MockSha256 = void 0;
4
- class MockSha256 {
5
- constructor(secret) { }
6
- update(data) { }
7
- digest() {
8
- return Promise.resolve(new Uint8Array(5));
9
- }
10
- }
11
- exports.MockSha256 = MockSha256;
12
- const region = () => Promise.resolve("mock-region");
13
- exports.region = region;
14
- const endpoint = () => Promise.resolve({
15
- protocol: "https:",
16
- path: "/",
17
- hostname: "ec2.mock-region.amazonaws.com",
18
- });
19
- exports.endpoint = endpoint;
20
- const credentials = () => Promise.resolve({
21
- accessKeyId: "akid",
22
- secretAccessKey: "secret",
23
- sessionToken: "session",
24
- });
25
- exports.credentials = credentials;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLE1BQWEsVUFBVTtJQUVyQixZQUFZLE1BQStDLElBQUcsQ0FBQztJQUUvRCxNQUFNLENBQUMsSUFBaUIsSUFBRyxDQUFDO0lBQzVCLE1BQU07UUFDSixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFSRCxnQ0FRQztBQUVNLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFBOUMsUUFBQSxNQUFNLFVBQXdDO0FBRXBELE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUMzQixPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2QsUUFBUSxFQUFFLFFBQVE7SUFDbEIsSUFBSSxFQUFFLEdBQUc7SUFDVCxRQUFRLEVBQUUsK0JBQStCO0NBQzFDLENBQUMsQ0FBQztBQUxRLFFBQUEsUUFBUSxZQUtoQjtBQUVFLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUM5QixPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2QsV0FBVyxFQUFFLE1BQU07SUFDbkIsZUFBZSxFQUFFLFFBQVE7SUFDekIsWUFBWSxFQUFFLFNBQVM7Q0FDeEIsQ0FBQyxDQUFDO0FBTFEsUUFBQSxXQUFXLGVBS25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlRGF0YSB9IGZyb20gXCJAYXdzLXNkay90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgTW9ja1NoYTI1NiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgY29uc3RydWN0b3Ioc2VjcmV0Pzogc3RyaW5nIHwgQXJyYXlCdWZmZXIgfCBBcnJheUJ1ZmZlclZpZXcpIHt9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgdXBkYXRlKGRhdGE/OiBTb3VyY2VEYXRhKSB7fVxuICBkaWdlc3QoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgVWludDhBcnJheSg1KSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlZ2lvbiA9ICgpID0+IFByb21pc2UucmVzb2x2ZShcIm1vY2stcmVnaW9uXCIpO1xuXG5leHBvcnQgY29uc3QgZW5kcG9pbnQgPSAoKSA9PlxuICBQcm9taXNlLnJlc29sdmUoe1xuICAgIHByb3RvY29sOiBcImh0dHBzOlwiLFxuICAgIHBhdGg6IFwiL1wiLFxuICAgIGhvc3RuYW1lOiBcImVjMi5tb2NrLXJlZ2lvbi5hbWF6b25hd3MuY29tXCIsXG4gIH0pO1xuXG5leHBvcnQgY29uc3QgY3JlZGVudGlhbHMgPSAoKSA9PlxuICBQcm9taXNlLnJlc29sdmUoe1xuICAgIGFjY2Vzc0tleUlkOiBcImFraWRcIixcbiAgICBzZWNyZXRBY2Nlc3NLZXk6IFwic2VjcmV0XCIsXG4gICAgc2Vzc2lvblRva2VuOiBcInNlc3Npb25cIixcbiAgfSk7XG4iXX0=
package/dist/cjs/index.js DELETED
@@ -1,88 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCrossRegionPresignedUrlPlugin = exports.crossRegionPresignedUrlMiddlewareOptions = exports.crossRegionPresignedUrlMiddleware = void 0;
4
- const protocol_http_1 = require("@aws-sdk/protocol-http");
5
- const signature_v4_1 = require("@aws-sdk/signature-v4");
6
- const util_format_url_1 = require("@aws-sdk/util-format-url");
7
- const regARN = /arn:[\w+=/,.@-]+:[\w+=/,.@-]+:([\w+=/,.@-]*)?:[0-9]+:[\w+=/,.@-]+(:[\w+=/,.@-]+)?(:[\w+=/,.@-]+)?/;
8
- const sourceIdToCommandKeyMap = {
9
- SourceDBSnapshotIdentifier: "CopyDBSnapshot",
10
- SourceDBInstanceIdentifier: "CreateDBInstanceReadReplica",
11
- ReplicationSourceIdentifier: "CreateDBCluster",
12
- SourceDBClusterSnapshotIdentifier: "CopyDBClusterSnapshot",
13
- SourceDBInstanceArn: "StartDBInstanceAutomatedBackupsReplication",
14
- };
15
- const version = "2014-10-31";
16
- function crossRegionPresignedUrlMiddleware(options) {
17
- return (next) => async (args) => {
18
- const { input } = args;
19
- const region = await options.region();
20
- const sourceIdKey = Object.keys(sourceIdToCommandKeyMap).filter((sourceKeyId) => input.hasOwnProperty(sourceKeyId))[0];
21
- if (!sourceIdKey)
22
- return next(args);
23
- const command = sourceIdToCommandKeyMap[sourceIdKey];
24
- if (!input.PreSignedUrl && isARN(input[sourceIdKey]) && region !== getEndpointFromARN(input[sourceIdKey])) {
25
- const sourceRegion = getEndpointFromARN(input[sourceIdKey]);
26
- const resolvedEndpoint = await options.endpoint();
27
- resolvedEndpoint.hostname = `rds.${sourceRegion}.amazonaws.com`;
28
- const request = new protocol_http_1.HttpRequest({
29
- ...resolvedEndpoint,
30
- protocol: "https",
31
- headers: {
32
- host: resolvedEndpoint.hostname,
33
- },
34
- query: {
35
- Action: command,
36
- Version: version,
37
- KmsKeyId: input.KmsKeyId,
38
- DestinationRegion: region,
39
- [sourceIdKey]: input[sourceIdKey],
40
- },
41
- });
42
- const signer = new signature_v4_1.SignatureV4({
43
- credentials: options.credentials,
44
- region: sourceRegion,
45
- service: "rds",
46
- sha256: options.sha256,
47
- uriEscapePath: options.signingEscapePath,
48
- });
49
- const presignedRequest = await signer.presign(request, {
50
- expiresIn: 3600,
51
- });
52
- args = {
53
- ...args,
54
- input: {
55
- ...args.input,
56
- PreSignedUrl: util_format_url_1.formatUrl(presignedRequest),
57
- },
58
- };
59
- }
60
- return next(args);
61
- };
62
- }
63
- exports.crossRegionPresignedUrlMiddleware = crossRegionPresignedUrlMiddleware;
64
- exports.crossRegionPresignedUrlMiddlewareOptions = {
65
- step: "initialize",
66
- tags: ["CROSS_REGION_PRESIGNED_URL"],
67
- name: "crossRegionPresignedUrlMiddleware",
68
- override: true,
69
- };
70
- const getCrossRegionPresignedUrlPlugin = (config) => ({
71
- applyToStack: (clientStack) => {
72
- clientStack.add(crossRegionPresignedUrlMiddleware(config), exports.crossRegionPresignedUrlMiddlewareOptions);
73
- },
74
- });
75
- exports.getCrossRegionPresignedUrlPlugin = getCrossRegionPresignedUrlPlugin;
76
- function isARN(id) {
77
- if (!id)
78
- return false;
79
- return regARN.test(id);
80
- }
81
- function getEndpointFromARN(arn) {
82
- const arnArr = arn.split(":");
83
- if (arnArr.length < 4) {
84
- throw new Error(`Cannot infer endpoint from '${arn}'`);
85
- }
86
- return arnArr[3];
87
- }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQXFEO0FBQ3JELHdEQUFvRDtBQWNwRCw4REFBcUQ7QUFFckQsTUFBTSxNQUFNLEdBQUcsbUdBQW1HLENBQUM7QUFFbkgsTUFBTSx1QkFBdUIsR0FBOEI7SUFDekQsMEJBQTBCLEVBQUUsZ0JBQWdCO0lBQzVDLDBCQUEwQixFQUFFLDZCQUE2QjtJQUN6RCwyQkFBMkIsRUFBRSxpQkFBaUI7SUFDOUMsaUNBQWlDLEVBQUUsdUJBQXVCO0lBQzFELG1CQUFtQixFQUFFLDRDQUE0QztDQUNsRSxDQUFDO0FBRUYsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBYzdCLFNBQWdCLGlDQUFpQyxDQUFDLE9BQTJCO0lBQzNFLE9BQU8sQ0FBZ0MsSUFBb0MsRUFBa0MsRUFBRSxDQUM3RyxLQUFLLEVBQUUsSUFBcUMsRUFBNEMsRUFBRTtRQUN4RixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUM5RSxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQyxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksTUFBTSxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO1lBQ3pHLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEQsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLE9BQU8sWUFBWSxnQkFBZ0IsQ0FBQztZQUNoRSxNQUFNLE9BQU8sR0FBRyxJQUFJLDJCQUFXLENBQUM7Z0JBQzlCLEdBQUcsZ0JBQWdCO2dCQUNuQixRQUFRLEVBQUUsT0FBTztnQkFDakIsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRO2lCQUNoQztnQkFDRCxLQUFLLEVBQUU7b0JBQ0wsTUFBTSxFQUFFLE9BQU87b0JBQ2YsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtvQkFDeEIsaUJBQWlCLEVBQUUsTUFBTTtvQkFDekIsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDO2lCQUNsQzthQUNGLENBQUMsQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksMEJBQVcsQ0FBQztnQkFDN0IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxNQUFNLEVBQUUsWUFBWTtnQkFDcEIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixhQUFhLEVBQUUsT0FBTyxDQUFDLGlCQUFpQjthQUN6QyxDQUFDLENBQUM7WUFDSCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JELFNBQVMsRUFBRSxJQUFJO2FBQ2hCLENBQUMsQ0FBQztZQUNILElBQUksR0FBRztnQkFDTCxHQUFHLElBQUk7Z0JBQ1AsS0FBSyxFQUFFO29CQUNMLEdBQUcsSUFBSSxDQUFDLEtBQUs7b0JBQ2IsWUFBWSxFQUFFLDJCQUFTLENBQUMsZ0JBQWdCLENBQUM7aUJBQzFDO2FBQ0YsQ0FBQztTQUNIO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQWxERCw4RUFrREM7QUFFWSxRQUFBLHdDQUF3QyxHQUE2QjtJQUNoRixJQUFJLEVBQUUsWUFBWTtJQUNsQixJQUFJLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztJQUNwQyxJQUFJLEVBQUUsbUNBQW1DO0lBQ3pDLFFBQVEsRUFBRSxJQUFJO0NBQ2YsQ0FBQztBQUVLLE1BQU0sZ0NBQWdDLEdBQUcsQ0FBQyxNQUEwQixFQUF1QixFQUFFLENBQUMsQ0FBQztJQUNwRyxZQUFZLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtRQUM1QixXQUFXLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGdEQUF3QyxDQUFDLENBQUM7SUFDdkcsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUpVLFFBQUEsZ0NBQWdDLG9DQUkxQztBQUVILFNBQVMsS0FBSyxDQUFDLEVBQXNCO0lBQ25DLElBQUksQ0FBQyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEdBQVc7SUFDckMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDeEQ7SUFDRCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlcXVlc3QgfSBmcm9tIFwiQGF3cy1zZGsvcHJvdG9jb2wtaHR0cFwiO1xuaW1wb3J0IHsgU2lnbmF0dXJlVjQgfSBmcm9tIFwiQGF3cy1zZGsvc2lnbmF0dXJlLXY0XCI7XG5pbXBvcnQge1xuICBDcmVkZW50aWFscyxcbiAgRW5kcG9pbnQsXG4gIEhhc2hDb25zdHJ1Y3RvcixcbiAgSW5pdGlhbGl6ZUhhbmRsZXIsXG4gIEluaXRpYWxpemVIYW5kbGVyQXJndW1lbnRzLFxuICBJbml0aWFsaXplSGFuZGxlck9wdGlvbnMsXG4gIEluaXRpYWxpemVIYW5kbGVyT3V0cHV0LFxuICBJbml0aWFsaXplTWlkZGxld2FyZSxcbiAgTWV0YWRhdGFCZWFyZXIsXG4gIFBsdWdnYWJsZSxcbiAgUHJvdmlkZXIsXG59IGZyb20gXCJAYXdzLXNkay90eXBlc1wiO1xuaW1wb3J0IHsgZm9ybWF0VXJsIH0gZnJvbSBcIkBhd3Mtc2RrL3V0aWwtZm9ybWF0LXVybFwiO1xuXG5jb25zdCByZWdBUk4gPSAvYXJuOltcXHcrPS8sLkAtXSs6W1xcdys9LywuQC1dKzooW1xcdys9LywuQC1dKik/OlswLTldKzpbXFx3Kz0vLC5ALV0rKDpbXFx3Kz0vLC5ALV0rKT8oOltcXHcrPS8sLkAtXSspPy87XG5cbmNvbnN0IHNvdXJjZUlkVG9Db21tYW5kS2V5TWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICBTb3VyY2VEQlNuYXBzaG90SWRlbnRpZmllcjogXCJDb3B5REJTbmFwc2hvdFwiLFxuICBTb3VyY2VEQkluc3RhbmNlSWRlbnRpZmllcjogXCJDcmVhdGVEQkluc3RhbmNlUmVhZFJlcGxpY2FcIixcbiAgUmVwbGljYXRpb25Tb3VyY2VJZGVudGlmaWVyOiBcIkNyZWF0ZURCQ2x1c3RlclwiLCAvLyBUaGlzIGtleSBpcyBvcHRpb25hbC5cbiAgU291cmNlREJDbHVzdGVyU25hcHNob3RJZGVudGlmaWVyOiBcIkNvcHlEQkNsdXN0ZXJTbmFwc2hvdFwiLFxuICBTb3VyY2VEQkluc3RhbmNlQXJuOiBcIlN0YXJ0REJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cHNSZXBsaWNhdGlvblwiLFxufTtcblxuY29uc3QgdmVyc2lvbiA9IFwiMjAxNC0xMC0zMVwiO1xuXG5pbnRlcmZhY2UgUHJldmlvdXNseVJlc29sdmVkIHtcbiAgY3JlZGVudGlhbHM6IFByb3ZpZGVyPENyZWRlbnRpYWxzPjtcbiAgZW5kcG9pbnQ6IFByb3ZpZGVyPEVuZHBvaW50PjtcbiAgcmVnaW9uOiBQcm92aWRlcjxzdHJpbmc+O1xuICBzaGEyNTY6IEhhc2hDb25zdHJ1Y3RvcjtcbiAgc2lnbmluZ0VzY2FwZVBhdGg6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlnIG9mIHRoZSBtaWRkbGV3YXJlIHRvIGF1dG9tYXRpY2FsbHkgYWRkIHByZXNpZ25lZCBVUkwgdG8gcmVxdWVzdC5cbiAqIFRoZSBwcmVzaWduZWQgVVJMIGlzIGdlbmVyYXRlZCBieSBzaWdWNFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3Jvc3NSZWdpb25QcmVzaWduZWRVcmxNaWRkbGV3YXJlKG9wdGlvbnM6IFByZXZpb3VzbHlSZXNvbHZlZCk6IEluaXRpYWxpemVNaWRkbGV3YXJlPGFueSwgYW55PiB7XG4gIHJldHVybiA8T3V0cHV0IGV4dGVuZHMgTWV0YWRhdGFCZWFyZXI+KG5leHQ6IEluaXRpYWxpemVIYW5kbGVyPGFueSwgT3V0cHV0Pik6IEluaXRpYWxpemVIYW5kbGVyPGFueSwgT3V0cHV0PiA9PlxuICAgIGFzeW5jIChhcmdzOiBJbml0aWFsaXplSGFuZGxlckFyZ3VtZW50czxhbnk+KTogUHJvbWlzZTxJbml0aWFsaXplSGFuZGxlck91dHB1dDxPdXRwdXQ+PiA9PiB7XG4gICAgICBjb25zdCB7IGlucHV0IH0gPSBhcmdzO1xuICAgICAgY29uc3QgcmVnaW9uID0gYXdhaXQgb3B0aW9ucy5yZWdpb24oKTtcbiAgICAgIGNvbnN0IHNvdXJjZUlkS2V5ID0gT2JqZWN0LmtleXMoc291cmNlSWRUb0NvbW1hbmRLZXlNYXApLmZpbHRlcigoc291cmNlS2V5SWQpID0+XG4gICAgICAgIGlucHV0Lmhhc093blByb3BlcnR5KHNvdXJjZUtleUlkKVxuICAgICAgKVswXTtcbiAgICAgIC8vIFNvdXJjZSBpZCBpcyBvcHRpb25hbC5cbiAgICAgIGlmICghc291cmNlSWRLZXkpIHJldHVybiBuZXh0KGFyZ3MpO1xuXG4gICAgICBjb25zdCBjb21tYW5kID0gc291cmNlSWRUb0NvbW1hbmRLZXlNYXBbc291cmNlSWRLZXldO1xuICAgICAgaWYgKCFpbnB1dC5QcmVTaWduZWRVcmwgJiYgaXNBUk4oaW5wdXRbc291cmNlSWRLZXldKSAmJiByZWdpb24gIT09IGdldEVuZHBvaW50RnJvbUFSTihpbnB1dFtzb3VyY2VJZEtleV0pKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZVJlZ2lvbiA9IGdldEVuZHBvaW50RnJvbUFSTihpbnB1dFtzb3VyY2VJZEtleV0pO1xuICAgICAgICBjb25zdCByZXNvbHZlZEVuZHBvaW50ID0gYXdhaXQgb3B0aW9ucy5lbmRwb2ludCgpO1xuICAgICAgICByZXNvbHZlZEVuZHBvaW50Lmhvc3RuYW1lID0gYHJkcy4ke3NvdXJjZVJlZ2lvbn0uYW1hem9uYXdzLmNvbWA7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgSHR0cFJlcXVlc3Qoe1xuICAgICAgICAgIC4uLnJlc29sdmVkRW5kcG9pbnQsXG4gICAgICAgICAgcHJvdG9jb2w6IFwiaHR0cHNcIixcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBob3N0OiByZXNvbHZlZEVuZHBvaW50Lmhvc3RuYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIEFjdGlvbjogY29tbWFuZCxcbiAgICAgICAgICAgIFZlcnNpb246IHZlcnNpb24sXG4gICAgICAgICAgICBLbXNLZXlJZDogaW5wdXQuS21zS2V5SWQsXG4gICAgICAgICAgICBEZXN0aW5hdGlvblJlZ2lvbjogcmVnaW9uLFxuICAgICAgICAgICAgW3NvdXJjZUlkS2V5XTogaW5wdXRbc291cmNlSWRLZXldLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzaWduZXIgPSBuZXcgU2lnbmF0dXJlVjQoe1xuICAgICAgICAgIGNyZWRlbnRpYWxzOiBvcHRpb25zLmNyZWRlbnRpYWxzLFxuICAgICAgICAgIHJlZ2lvbjogc291cmNlUmVnaW9uLFxuICAgICAgICAgIHNlcnZpY2U6IFwicmRzXCIsXG4gICAgICAgICAgc2hhMjU2OiBvcHRpb25zLnNoYTI1NixcbiAgICAgICAgICB1cmlFc2NhcGVQYXRoOiBvcHRpb25zLnNpZ25pbmdFc2NhcGVQYXRoLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcHJlc2lnbmVkUmVxdWVzdCA9IGF3YWl0IHNpZ25lci5wcmVzaWduKHJlcXVlc3QsIHtcbiAgICAgICAgICBleHBpcmVzSW46IDM2MDAsXG4gICAgICAgIH0pO1xuICAgICAgICBhcmdzID0ge1xuICAgICAgICAgIC4uLmFyZ3MsXG4gICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgIC4uLmFyZ3MuaW5wdXQsXG4gICAgICAgICAgICBQcmVTaWduZWRVcmw6IGZvcm1hdFVybChwcmVzaWduZWRSZXF1ZXN0KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHQoYXJncyk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGNyb3NzUmVnaW9uUHJlc2lnbmVkVXJsTWlkZGxld2FyZU9wdGlvbnM6IEluaXRpYWxpemVIYW5kbGVyT3B0aW9ucyA9IHtcbiAgc3RlcDogXCJpbml0aWFsaXplXCIsXG4gIHRhZ3M6IFtcIkNST1NTX1JFR0lPTl9QUkVTSUdORURfVVJMXCJdLFxuICBuYW1lOiBcImNyb3NzUmVnaW9uUHJlc2lnbmVkVXJsTWlkZGxld2FyZVwiLFxuICBvdmVycmlkZTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDcm9zc1JlZ2lvblByZXNpZ25lZFVybFBsdWdpbiA9IChjb25maWc6IFByZXZpb3VzbHlSZXNvbHZlZCk6IFBsdWdnYWJsZTxhbnksIGFueT4gPT4gKHtcbiAgYXBwbHlUb1N0YWNrOiAoY2xpZW50U3RhY2spID0+IHtcbiAgICBjbGllbnRTdGFjay5hZGQoY3Jvc3NSZWdpb25QcmVzaWduZWRVcmxNaWRkbGV3YXJlKGNvbmZpZyksIGNyb3NzUmVnaW9uUHJlc2lnbmVkVXJsTWlkZGxld2FyZU9wdGlvbnMpO1xuICB9LFxufSk7XG5cbmZ1bmN0aW9uIGlzQVJOKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgaWYgKCFpZCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gcmVnQVJOLnRlc3QoaWQpO1xufVxuXG5mdW5jdGlvbiBnZXRFbmRwb2ludEZyb21BUk4oYXJuOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBhcm5BcnIgPSBhcm4uc3BsaXQoXCI6XCIpO1xuICBpZiAoYXJuQXJyLmxlbmd0aCA8IDQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBpbmZlciBlbmRwb2ludCBmcm9tICcke2Fybn0nYCk7XG4gIH1cbiAgcmV0dXJuIGFybkFyclszXTtcbn1cbiJdfQ==
@@ -1,28 +0,0 @@
1
- var MockSha256 = /** @class */ (function () {
2
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
3
- function MockSha256(secret) {
4
- }
5
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
- MockSha256.prototype.update = function (data) { };
7
- MockSha256.prototype.digest = function () {
8
- return Promise.resolve(new Uint8Array(5));
9
- };
10
- return MockSha256;
11
- }());
12
- export { MockSha256 };
13
- export var region = function () { return Promise.resolve("mock-region"); };
14
- export var endpoint = function () {
15
- return Promise.resolve({
16
- protocol: "https:",
17
- path: "/",
18
- hostname: "ec2.mock-region.amazonaws.com",
19
- });
20
- };
21
- export var credentials = function () {
22
- return Promise.resolve({
23
- accessKeyId: "akid",
24
- secretAccessKey: "secret",
25
- sessionToken: "session",
26
- });
27
- };
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0lBQ0UsNkRBQTZEO0lBQzdELG9CQUFZLE1BQStDO0lBQUcsQ0FBQztJQUMvRCw2REFBNkQ7SUFDN0QsMkJBQU0sR0FBTixVQUFPLElBQWlCLElBQUcsQ0FBQztJQUM1QiwyQkFBTSxHQUFOO1FBQ0UsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQVJELElBUUM7O0FBRUQsTUFBTSxDQUFDLElBQU0sTUFBTSxHQUFHLGNBQU0sT0FBQSxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUE5QixDQUE4QixDQUFDO0FBRTNELE1BQU0sQ0FBQyxJQUFNLFFBQVEsR0FBRztJQUN0QixPQUFBLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDZCxRQUFRLEVBQUUsUUFBUTtRQUNsQixJQUFJLEVBQUUsR0FBRztRQUNULFFBQVEsRUFBRSwrQkFBK0I7S0FDMUMsQ0FBQztBQUpGLENBSUUsQ0FBQztBQUVMLE1BQU0sQ0FBQyxJQUFNLFdBQVcsR0FBRztJQUN6QixPQUFBLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDZCxXQUFXLEVBQUUsTUFBTTtRQUNuQixlQUFlLEVBQUUsUUFBUTtRQUN6QixZQUFZLEVBQUUsU0FBUztLQUN4QixDQUFDO0FBSkYsQ0FJRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlRGF0YSB9IGZyb20gXCJAYXdzLXNkay90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgTW9ja1NoYTI1NiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgY29uc3RydWN0b3Ioc2VjcmV0Pzogc3RyaW5nIHwgQXJyYXlCdWZmZXIgfCBBcnJheUJ1ZmZlclZpZXcpIHt9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgdXBkYXRlKGRhdGE/OiBTb3VyY2VEYXRhKSB7fVxuICBkaWdlc3QoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgVWludDhBcnJheSg1KSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlZ2lvbiA9ICgpID0+IFByb21pc2UucmVzb2x2ZShcIm1vY2stcmVnaW9uXCIpO1xuXG5leHBvcnQgY29uc3QgZW5kcG9pbnQgPSAoKSA9PlxuICBQcm9taXNlLnJlc29sdmUoe1xuICAgIHByb3RvY29sOiBcImh0dHBzOlwiLFxuICAgIHBhdGg6IFwiL1wiLFxuICAgIGhvc3RuYW1lOiBcImVjMi5tb2NrLXJlZ2lvbi5hbWF6b25hd3MuY29tXCIsXG4gIH0pO1xuXG5leHBvcnQgY29uc3QgY3JlZGVudGlhbHMgPSAoKSA9PlxuICBQcm9taXNlLnJlc29sdmUoe1xuICAgIGFjY2Vzc0tleUlkOiBcImFraWRcIixcbiAgICBzZWNyZXRBY2Nlc3NLZXk6IFwic2VjcmV0XCIsXG4gICAgc2Vzc2lvblRva2VuOiBcInNlc3Npb25cIixcbiAgfSk7XG4iXX0=
package/dist/es/index.js DELETED
@@ -1,97 +0,0 @@
1
- import { __assign, __awaiter, __generator } from "tslib";
2
- import { HttpRequest } from "@aws-sdk/protocol-http";
3
- import { SignatureV4 } from "@aws-sdk/signature-v4";
4
- import { formatUrl } from "@aws-sdk/util-format-url";
5
- var regARN = /arn:[\w+=/,.@-]+:[\w+=/,.@-]+:([\w+=/,.@-]*)?:[0-9]+:[\w+=/,.@-]+(:[\w+=/,.@-]+)?(:[\w+=/,.@-]+)?/;
6
- var sourceIdToCommandKeyMap = {
7
- SourceDBSnapshotIdentifier: "CopyDBSnapshot",
8
- SourceDBInstanceIdentifier: "CreateDBInstanceReadReplica",
9
- ReplicationSourceIdentifier: "CreateDBCluster",
10
- SourceDBClusterSnapshotIdentifier: "CopyDBClusterSnapshot",
11
- SourceDBInstanceArn: "StartDBInstanceAutomatedBackupsReplication",
12
- };
13
- var version = "2014-10-31";
14
- /**
15
- * Config of the middleware to automatically add presigned URL to request.
16
- * The presigned URL is generated by sigV4
17
- */
18
- export function crossRegionPresignedUrlMiddleware(options) {
19
- var _this = this;
20
- return function (next) {
21
- return function (args) { return __awaiter(_this, void 0, void 0, function () {
22
- var input, region, sourceIdKey, command, sourceRegion, resolvedEndpoint, request, signer, presignedRequest;
23
- var _a;
24
- return __generator(this, function (_b) {
25
- switch (_b.label) {
26
- case 0:
27
- input = args.input;
28
- return [4 /*yield*/, options.region()];
29
- case 1:
30
- region = _b.sent();
31
- sourceIdKey = Object.keys(sourceIdToCommandKeyMap).filter(function (sourceKeyId) {
32
- return input.hasOwnProperty(sourceKeyId);
33
- })[0];
34
- // Source id is optional.
35
- if (!sourceIdKey)
36
- return [2 /*return*/, next(args)];
37
- command = sourceIdToCommandKeyMap[sourceIdKey];
38
- if (!(!input.PreSignedUrl && isARN(input[sourceIdKey]) && region !== getEndpointFromARN(input[sourceIdKey]))) return [3 /*break*/, 4];
39
- sourceRegion = getEndpointFromARN(input[sourceIdKey]);
40
- return [4 /*yield*/, options.endpoint()];
41
- case 2:
42
- resolvedEndpoint = _b.sent();
43
- resolvedEndpoint.hostname = "rds." + sourceRegion + ".amazonaws.com";
44
- request = new HttpRequest(__assign(__assign({}, resolvedEndpoint), { protocol: "https", headers: {
45
- host: resolvedEndpoint.hostname,
46
- }, query: (_a = {
47
- Action: command,
48
- Version: version,
49
- KmsKeyId: input.KmsKeyId,
50
- DestinationRegion: region
51
- },
52
- _a[sourceIdKey] = input[sourceIdKey],
53
- _a) }));
54
- signer = new SignatureV4({
55
- credentials: options.credentials,
56
- region: sourceRegion,
57
- service: "rds",
58
- sha256: options.sha256,
59
- uriEscapePath: options.signingEscapePath,
60
- });
61
- return [4 /*yield*/, signer.presign(request, {
62
- expiresIn: 3600,
63
- })];
64
- case 3:
65
- presignedRequest = _b.sent();
66
- args = __assign(__assign({}, args), { input: __assign(__assign({}, args.input), { PreSignedUrl: formatUrl(presignedRequest) }) });
67
- _b.label = 4;
68
- case 4: return [2 /*return*/, next(args)];
69
- }
70
- });
71
- }); };
72
- };
73
- }
74
- export var crossRegionPresignedUrlMiddlewareOptions = {
75
- step: "initialize",
76
- tags: ["CROSS_REGION_PRESIGNED_URL"],
77
- name: "crossRegionPresignedUrlMiddleware",
78
- override: true,
79
- };
80
- export var getCrossRegionPresignedUrlPlugin = function (config) { return ({
81
- applyToStack: function (clientStack) {
82
- clientStack.add(crossRegionPresignedUrlMiddleware(config), crossRegionPresignedUrlMiddlewareOptions);
83
- },
84
- }); };
85
- function isARN(id) {
86
- if (!id)
87
- return false;
88
- return regARN.test(id);
89
- }
90
- function getEndpointFromARN(arn) {
91
- var arnArr = arn.split(":");
92
- if (arnArr.length < 4) {
93
- throw new Error("Cannot infer endpoint from '" + arn + "'");
94
- }
95
- return arnArr[3];
96
- }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFjcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELElBQU0sTUFBTSxHQUFHLG1HQUFtRyxDQUFDO0FBRW5ILElBQU0sdUJBQXVCLEdBQThCO0lBQ3pELDBCQUEwQixFQUFFLGdCQUFnQjtJQUM1QywwQkFBMEIsRUFBRSw2QkFBNkI7SUFDekQsMkJBQTJCLEVBQUUsaUJBQWlCO0lBQzlDLGlDQUFpQyxFQUFFLHVCQUF1QjtJQUMxRCxtQkFBbUIsRUFBRSw0Q0FBNEM7Q0FDbEUsQ0FBQztBQUVGLElBQU0sT0FBTyxHQUFHLFlBQVksQ0FBQztBQVU3Qjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsT0FBMkI7SUFBN0UsaUJBa0RDO0lBakRDLE9BQU8sVUFBZ0MsSUFBb0M7UUFDekUsT0FBQSxVQUFPLElBQXFDOzs7Ozs7d0JBQ2xDLEtBQUssR0FBSyxJQUFJLE1BQVQsQ0FBVTt3QkFDUixxQkFBTSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUE7O3dCQUEvQixNQUFNLEdBQUcsU0FBc0I7d0JBQy9CLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUMsV0FBVzs0QkFDMUUsT0FBQSxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQzt3QkFBakMsQ0FBaUMsQ0FDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDTCx5QkFBeUI7d0JBQ3pCLElBQUksQ0FBQyxXQUFXOzRCQUFFLHNCQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQzt3QkFFOUIsT0FBTyxHQUFH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WyJpbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gXCJAYXdzLXNkay9wcm90b2NvbC1odHRwXCI7XG5pbXBvcnQgeyBTaWduYXR1cmVWNCB9IGZyb20gXCJAYXdzLXNkay9zaWduYXR1cmUtdjRcIjtcbmltcG9ydCB7XG4gIENyZWRlbnRpYWxzLFxuICBFbmRwb2ludCxcbiAgSGFzaENvbnN0cnVjdG9yLFxuICBJbml0aWFsaXplSGFuZGxlcixcbiAgSW5pdGlhbGl6ZUhhbmRsZXJBcmd1bWVudHMsXG4gIEluaXRpYWxpemVIYW5kbGVyT3B0aW9ucyxcbiAgSW5pdGlhbGl6ZUhhbmRsZXJPdXRwdXQsXG4gIEluaXRpYWxpemVNaWRkbGV3YXJlLFxuICBNZXRhZGF0YUJlYXJlcixcbiAgUGx1Z2dhYmxlLFxuICBQcm92aWRlcixcbn0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQgeyBmb3JtYXRVcmwgfSBmcm9tIFwiQGF3cy1zZGsvdXRpbC1mb3JtYXQtdXJsXCI7XG5cbmNvbnN0IHJlZ0FSTiA9IC9hcm46W1xcdys9LywuQC1dKzpbXFx3Kz0vLC5ALV0rOihbXFx3Kz0vLC5ALV0qKT86WzAtOV0rOltcXHcrPS8sLkAtXSsoOltcXHcrPS8sLkAtXSspPyg6W1xcdys9LywuQC1dKyk/LztcblxuY29uc3Qgc291cmNlSWRUb0NvbW1hbmRLZXlNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gIFNvdXJjZURCU25hcHNob3RJZGVudGlmaWVyOiBcIkNvcHlEQlNuYXBzaG90XCIsXG4gIFNvdXJjZURCSW5zdGFuY2VJZGVudGlmaWVyOiBcIkNyZWF0ZURCSW5zdGFuY2VSZWFkUmVwbGljYVwiLFxuICBSZXBsaWNhdGlvblNvdXJjZUlkZW50aWZpZXI6IFwiQ3JlYXRlREJDbHVzdGVyXCIsIC8vIFRoaXMga2V5IGlzIG9wdGlvbmFsLlxuICBTb3VyY2VEQkNsdXN0ZXJTbmFwc2hvdElkZW50aWZpZXI6IFwiQ29weURCQ2x1c3RlclNuYXBzaG90XCIsXG4gIFNvdXJjZURCSW5zdGFuY2VBcm46IFwiU3RhcnREQkluc3RhbmNlQXV0b21hdGVkQmFja3Vwc1JlcGxpY2F0aW9uXCIsXG59O1xuXG5jb25zdCB2ZXJzaW9uID0gXCIyMDE0LTEwLTMxXCI7XG5cbmludGVyZmFjZSBQcmV2aW91c2x5UmVzb2x2ZWQge1xuICBjcmVkZW50aWFsczogUHJvdmlkZXI8Q3JlZGVudGlhbHM+O1xuICBlbmRwb2ludDogUHJvdmlkZXI8RW5kcG9pbnQ+O1xuICByZWdpb246IFByb3ZpZGVyPHN0cmluZz47XG4gIHNoYTI1NjogSGFzaENvbnN0cnVjdG9yO1xuICBzaWduaW5nRXNjYXBlUGF0aDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25maWcgb2YgdGhlIG1pZGRsZXdhcmUgdG8gYXV0b21hdGljYWxseSBhZGQgcHJlc2lnbmVkIFVSTCB0byByZXF1ZXN0LlxuICogVGhlIHByZXNpZ25lZCBVUkwgaXMgZ2VuZXJhdGVkIGJ5IHNpZ1Y0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcm9zc1JlZ2lvblByZXNpZ25lZFVybE1pZGRsZXdhcmUob3B0aW9uczogUHJldmlvdXNseVJlc29sdmVkKTogSW5pdGlhbGl6ZU1pZGRsZXdhcmU8YW55LCBhbnk+IHtcbiAgcmV0dXJuIDxPdXRwdXQgZXh0ZW5kcyBNZXRhZGF0YUJlYXJlcj4obmV4dDogSW5pdGlhbGl6ZUhhbmRsZXI8YW55LCBPdXRwdXQ+KTogSW5pdGlhbGl6ZUhhbmRsZXI8YW55LCBPdXRwdXQ+ID0+XG4gICAgYXN5bmMgKGFyZ3M6IEluaXRpYWxpemVIYW5kbGVyQXJndW1lbnRzPGFueT4pOiBQcm9taXNlPEluaXRpYWxpemVIYW5kbGVyT3V0cHV0PE91dHB1dD4+ID0+IHtcbiAgICAgIGNvbnN0IHsgaW5wdXQgfSA9IGFyZ3M7XG4gICAgICBjb25zdCByZWdpb24gPSBhd2FpdCBvcHRpb25zLnJlZ2lvbigpO1xuICAgICAgY29uc3Qgc291cmNlSWRLZXkgPSBPYmplY3Qua2V5cyhzb3VyY2VJZFRvQ29tbWFuZEtleU1hcCkuZmlsdGVyKChzb3VyY2VLZXlJZCkgPT5cbiAgICAgICAgaW5wdXQuaGFzT3duUHJvcGVydHkoc291cmNlS2V5SWQpXG4gICAgICApWzBdO1xuICAgICAgLy8gU291cmNlIGlkIGlzIG9wdGlvbmFsLlxuICAgICAgaWYgKCFzb3VyY2VJZEtleSkgcmV0dXJuIG5leHQoYXJncyk7XG5cbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBzb3VyY2VJZFRvQ29tbWFuZEtleU1hcFtzb3VyY2VJZEtleV07XG4gICAgICBpZiAoIWlucHV0LlByZVNpZ25lZFVybCAmJiBpc0FSTihpbnB1dFtzb3VyY2VJZEtleV0pICYmIHJlZ2lvbiAhPT0gZ2V0RW5kcG9pbnRGcm9tQVJOKGlucHV0W3NvdXJjZUlkS2V5XSkpIHtcbiAgICAgICAgY29uc3Qgc291cmNlUmVnaW9uID0gZ2V0RW5kcG9pbnRGcm9tQVJOKGlucHV0W3NvdXJjZUlkS2V5XSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkRW5kcG9pbnQgPSBhd2FpdCBvcHRpb25zLmVuZHBvaW50KCk7XG4gICAgICAgIHJlc29sdmVkRW5kcG9pbnQuaG9zdG5hbWUgPSBgcmRzLiR7c291cmNlUmVnaW9ufS5hbWF6b25hd3MuY29tYDtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBIdHRwUmVxdWVzdCh7XG4gICAgICAgICAgLi4ucmVzb2x2ZWRFbmRwb2ludCxcbiAgICAgICAgICBwcm90b2NvbDogXCJodHRwc1wiLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIGhvc3Q6IHJlc29sdmVkRW5kcG9pbnQuaG9zdG5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgQWN0aW9uOiBjb21tYW5kLFxuICAgICAgICAgICAgVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgIEttc0tleUlkOiBpbnB1dC5LbXNLZXlJZCxcbiAgICAgICAgICAgIERlc3RpbmF0aW9uUmVnaW9uOiByZWdpb24sXG4gICAgICAgICAgICBbc291cmNlSWRLZXldOiBpbnB1dFtzb3VyY2VJZEtleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNpZ25lciA9IG5ldyBTaWduYXR1cmVWNCh7XG4gICAgICAgICAgY3JlZGVudGlhbHM6IG9wdGlvbnMuY3JlZGVudGlhbHMsXG4gICAgICAgICAgcmVnaW9uOiBzb3VyY2VSZWdpb24sXG4gICAgICAgICAgc2VydmljZTogXCJyZHNcIixcbiAgICAgICAgICBzaGEyNTY6IG9wdGlvbnMuc2hhMjU2LFxuICAgICAgICAgIHVyaUVzY2FwZVBhdGg6IG9wdGlvbnMuc2lnbmluZ0VzY2FwZVBhdGgsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwcmVzaWduZWRSZXF1ZXN0ID0gYXdhaXQgc2lnbmVyLnByZXNpZ24ocmVxdWVzdCwge1xuICAgICAgICAgIGV4cGlyZXNJbjogMzYwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIGFyZ3MgPSB7XG4gICAgICAgICAgLi4uYXJncyxcbiAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgLi4uYXJncy5pbnB1dCxcbiAgICAgICAgICAgIFByZVNpZ25lZFVybDogZm9ybWF0VXJsKHByZXNpZ25lZFJlcXVlc3QpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV4dChhcmdzKTtcbiAgICB9O1xufVxuXG5leHBvcnQgY29uc3QgY3Jvc3NSZWdpb25QcmVzaWduZWRVcmxNaWRkbGV3YXJlT3B0aW9uczogSW5pdGlhbGl6ZUhhbmRsZXJPcHRpb25zID0ge1xuICBzdGVwOiBcImluaXRpYWxpemVcIixcbiAgdGFnczogW1wiQ1JPU1NfUkVHSU9OX1BSRVNJR05FRF9VUkxcIl0sXG4gIG5hbWU6IFwiY3Jvc3NSZWdpb25QcmVzaWduZWRVcmxNaWRkbGV3YXJlXCIsXG4gIG92ZXJyaWRlOiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IGdldENyb3NzUmVnaW9uUHJlc2lnbmVkVXJsUGx1Z2luID0gKGNvbmZpZzogUHJldmlvdXNseVJlc29sdmVkKTogUGx1Z2dhYmxlPGFueSwgYW55PiA9PiAoe1xuICBhcHBseVRvU3RhY2s6IChjbGllbnRTdGFjaykgPT4ge1xuICAgIGNsaWVudFN0YWNrLmFkZChjcm9zc1JlZ2lvblByZXNpZ25lZFVybE1pZGRsZXdhcmUoY29uZmlnKSwgY3Jvc3NSZWdpb25QcmVzaWduZWRVcmxNaWRkbGV3YXJlT3B0aW9ucyk7XG4gIH0sXG59KTtcblxuZnVuY3Rpb24gaXNBUk4oaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAoIWlkKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiByZWdBUk4udGVzdChpZCk7XG59XG5cbmZ1bmN0aW9uIGdldEVuZHBvaW50RnJvbUFSTihhcm46IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGFybkFyciA9IGFybi5zcGxpdChcIjpcIik7XG4gIGlmIChhcm5BcnIubGVuZ3RoIDwgNCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGluZmVyIGVuZHBvaW50IGZyb20gJyR7YXJufSdgKTtcbiAgfVxuICByZXR1cm4gYXJuQXJyWzNdO1xufVxuIl19
package/src/fixture.ts DELETED
@@ -1,27 +0,0 @@
1
- import { SourceData } from "@aws-sdk/types";
2
-
3
- export class MockSha256 {
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
- constructor(secret?: string | ArrayBuffer | ArrayBufferView) {}
6
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
7
- update(data?: SourceData) {}
8
- digest() {
9
- return Promise.resolve(new Uint8Array(5));
10
- }
11
- }
12
-
13
- export const region = () => Promise.resolve("mock-region");
14
-
15
- export const endpoint = () =>
16
- Promise.resolve({
17
- protocol: "https:",
18
- path: "/",
19
- hostname: "ec2.mock-region.amazonaws.com",
20
- });
21
-
22
- export const credentials = () =>
23
- Promise.resolve({
24
- accessKeyId: "akid",
25
- secretAccessKey: "secret",
26
- sessionToken: "session",
27
- });
package/src/index.ts DELETED
@@ -1,118 +0,0 @@
1
- import { HttpRequest } from "@aws-sdk/protocol-http";
2
- import { SignatureV4 } from "@aws-sdk/signature-v4";
3
- import {
4
- Credentials,
5
- Endpoint,
6
- HashConstructor,
7
- InitializeHandler,
8
- InitializeHandlerArguments,
9
- InitializeHandlerOptions,
10
- InitializeHandlerOutput,
11
- InitializeMiddleware,
12
- MetadataBearer,
13
- Pluggable,
14
- Provider,
15
- } from "@aws-sdk/types";
16
- import { formatUrl } from "@aws-sdk/util-format-url";
17
-
18
- const regARN = /arn:[\w+=/,.@-]+:[\w+=/,.@-]+:([\w+=/,.@-]*)?:[0-9]+:[\w+=/,.@-]+(:[\w+=/,.@-]+)?(:[\w+=/,.@-]+)?/;
19
-
20
- const sourceIdToCommandKeyMap: { [key: string]: string } = {
21
- SourceDBSnapshotIdentifier: "CopyDBSnapshot",
22
- SourceDBInstanceIdentifier: "CreateDBInstanceReadReplica",
23
- ReplicationSourceIdentifier: "CreateDBCluster", // This key is optional.
24
- SourceDBClusterSnapshotIdentifier: "CopyDBClusterSnapshot",
25
- SourceDBInstanceArn: "StartDBInstanceAutomatedBackupsReplication",
26
- };
27
-
28
- const version = "2014-10-31";
29
-
30
- interface PreviouslyResolved {
31
- credentials: Provider<Credentials>;
32
- endpoint: Provider<Endpoint>;
33
- region: Provider<string>;
34
- sha256: HashConstructor;
35
- signingEscapePath: boolean;
36
- }
37
-
38
- /**
39
- * Config of the middleware to automatically add presigned URL to request.
40
- * The presigned URL is generated by sigV4
41
- */
42
- export function crossRegionPresignedUrlMiddleware(options: PreviouslyResolved): InitializeMiddleware<any, any> {
43
- return <Output extends MetadataBearer>(next: InitializeHandler<any, Output>): InitializeHandler<any, Output> =>
44
- async (args: InitializeHandlerArguments<any>): Promise<InitializeHandlerOutput<Output>> => {
45
- const { input } = args;
46
- const region = await options.region();
47
- const sourceIdKey = Object.keys(sourceIdToCommandKeyMap).filter((sourceKeyId) =>
48
- input.hasOwnProperty(sourceKeyId)
49
- )[0];
50
- // Source id is optional.
51
- if (!sourceIdKey) return next(args);
52
-
53
- const command = sourceIdToCommandKeyMap[sourceIdKey];
54
- if (!input.PreSignedUrl && isARN(input[sourceIdKey]) && region !== getEndpointFromARN(input[sourceIdKey])) {
55
- const sourceRegion = getEndpointFromARN(input[sourceIdKey]);
56
- const resolvedEndpoint = await options.endpoint();
57
- resolvedEndpoint.hostname = `rds.${sourceRegion}.amazonaws.com`;
58
- const request = new HttpRequest({
59
- ...resolvedEndpoint,
60
- protocol: "https",
61
- headers: {
62
- host: resolvedEndpoint.hostname,
63
- },
64
- query: {
65
- Action: command,
66
- Version: version,
67
- KmsKeyId: input.KmsKeyId,
68
- DestinationRegion: region,
69
- [sourceIdKey]: input[sourceIdKey],
70
- },
71
- });
72
- const signer = new SignatureV4({
73
- credentials: options.credentials,
74
- region: sourceRegion,
75
- service: "rds",
76
- sha256: options.sha256,
77
- uriEscapePath: options.signingEscapePath,
78
- });
79
- const presignedRequest = await signer.presign(request, {
80
- expiresIn: 3600,
81
- });
82
- args = {
83
- ...args,
84
- input: {
85
- ...args.input,
86
- PreSignedUrl: formatUrl(presignedRequest),
87
- },
88
- };
89
- }
90
- return next(args);
91
- };
92
- }
93
-
94
- export const crossRegionPresignedUrlMiddlewareOptions: InitializeHandlerOptions = {
95
- step: "initialize",
96
- tags: ["CROSS_REGION_PRESIGNED_URL"],
97
- name: "crossRegionPresignedUrlMiddleware",
98
- override: true,
99
- };
100
-
101
- export const getCrossRegionPresignedUrlPlugin = (config: PreviouslyResolved): Pluggable<any, any> => ({
102
- applyToStack: (clientStack) => {
103
- clientStack.add(crossRegionPresignedUrlMiddleware(config), crossRegionPresignedUrlMiddlewareOptions);
104
- },
105
- });
106
-
107
- function isARN(id: string | undefined): boolean {
108
- if (!id) return false;
109
- return regARN.test(id);
110
- }
111
-
112
- function getEndpointFromARN(arn: string): string {
113
- const arnArr = arn.split(":");
114
- if (arnArr.length < 4) {
115
- throw new Error(`Cannot infer endpoint from '${arn}'`);
116
- }
117
- return arnArr[3];
118
- }
package/tsconfig.cjs.json DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "baseUrl": ".",
4
- "outDir": "dist/cjs",
5
- "rootDir": "src"
6
- },
7
- "extends": "../../tsconfig.cjs.json",
8
- "include": ["src/"]
9
- }
package/tsconfig.es.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "baseUrl": ".",
4
- "lib": ["es5", "es2015.promise", "es2015.collection", "es2015.iterable", "es2015.symbol.wellknown"],
5
- "outDir": "dist/es",
6
- "rootDir": "src"
7
- },
8
- "extends": "../../tsconfig.es.json",
9
- "include": ["src/"]
10
- }
@@ -1,9 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "baseUrl": ".",
4
- "declarationDir": "dist/types",
5
- "rootDir": "src"
6
- },
7
- "extends": "../../tsconfig.types.json",
8
- "include": ["src/"]
9
- }