serverless-vpc-discovery 4.0.2 → 5.0.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/dist/src/utils.js CHANGED
@@ -9,65 +9,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.getValueFromTags = exports.wildcardMatches = exports.isObjectEmpty = exports.throttledCall = exports.getAWSPagedResults = exports.sleep = void 0;
13
- const RETRYABLE_ERRORS = ["Throttling", "RequestLimitExceeded", "TooManyRequestsException"];
12
+ exports.getValueFromTags = exports.wildcardMatches = exports.isObjectEmpty = exports.getAWSPagedResults = exports.sleep = void 0;
14
13
  /**
15
14
  * Iterate through the pages of a AWS SDK response and collect them into a single array
16
15
  *
17
- * @param service - The AWS service instance to use to make the calls
18
- * @param funcName - The function name in the service to call
16
+ * @param client - The AWS service instance to use to make the calls
19
17
  * @param resultsKey - The key name in the response that contains the items to return
20
18
  * @param nextTokenKey - The request key name to append to the request that has the paging token value
21
19
  * @param nextRequestTokenKey - The response key name that has the next paging token value
22
20
  * @param params - Parameters to send in the request
23
21
  */
24
- function getAWSPagedResults(service, funcName, resultsKey, nextTokenKey, nextRequestTokenKey, params) {
22
+ function getAWSPagedResults(client, resultsKey, nextTokenKey, nextRequestTokenKey, params) {
25
23
  return __awaiter(this, void 0, void 0, function* () {
26
24
  let results = [];
27
- let response = yield throttledCall(service, funcName, params);
28
- results = results.concat(response[resultsKey]);
29
- // eslint-disable-next-line no-prototype-builtins
30
- while (response.hasOwnProperty(nextRequestTokenKey) && response[nextRequestTokenKey]) {
31
- params[nextTokenKey] = response[nextRequestTokenKey];
32
- response = yield service[funcName](params).promise();
25
+ let response = yield client.send(params);
26
+ results = results.concat(response[resultsKey] || results);
27
+ while (nextRequestTokenKey in response && response[nextRequestTokenKey]) {
28
+ params.input[nextTokenKey] = response[nextRequestTokenKey];
29
+ response = yield client.send(params);
33
30
  results = results.concat(response[resultsKey]);
34
31
  }
35
32
  return results;
36
33
  });
37
34
  }
38
35
  exports.getAWSPagedResults = getAWSPagedResults;
39
- function throttledCall(service, funcName, params) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- const maxTimePassed = 5 * 60;
42
- let timePassed = 0;
43
- let previousInterval = 0;
44
- const minWait = 3;
45
- const maxWait = 60;
46
- while (true) {
47
- try {
48
- return yield service[funcName](params).promise();
49
- }
50
- catch (ex) {
51
- // rethrow the exception if it is not a type of retryable exception
52
- if (RETRYABLE_ERRORS.indexOf(ex.code) === -1) {
53
- throw ex;
54
- }
55
- // rethrow the exception if we have waited too long
56
- if (timePassed >= maxTimePassed) {
57
- throw ex;
58
- }
59
- // Sleep using the Decorrelated Jitter algorithm recommended by AWS
60
- // https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
61
- let newInterval = Math.random() * Math.min(maxWait, previousInterval * 3);
62
- newInterval = Math.max(minWait, newInterval);
63
- yield sleep(newInterval);
64
- previousInterval = newInterval;
65
- timePassed += previousInterval;
66
- }
67
- }
68
- });
69
- }
70
- exports.throttledCall = throttledCall;
71
36
  /**
72
37
  * Stops event thread execution for given number of seconds.
73
38
  * @param seconds
@@ -79,8 +44,8 @@ function sleep(seconds) {
79
44
  });
80
45
  }
81
46
  exports.sleep = sleep;
82
- function isObjectEmpty(object) {
83
- return Object.keys(object).length === 0;
47
+ function isObjectEmpty(value) {
48
+ return Object.keys(value).length === 0;
84
49
  }
85
50
  exports.isObjectEmpty = isObjectEmpty;
86
51
  function replaceAll(input, search, replace) {
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "serverless-vpc-discovery",
3
- "version": "4.0.2",
3
+ "version": "5.0.0",
4
4
  "engines": {
5
- "node": ">=12"
5
+ "node": ">=14"
6
6
  },
7
7
  "description": "Serverless Plugin to modify VPC values",
8
8
  "author": "Amplify Education Inc",
@@ -34,7 +34,8 @@
34
34
  "integration-test": "nyc mocha -r ts-node/register --project tsconfig.json test/integration-tests/*.test.ts && nyc report --reporter=text-summary",
35
35
  "lint": "eslint src --ext .ts",
36
36
  "lint:fix": "npm run lint -- --fix",
37
- "build": "tsc --project ."
37
+ "build": "tsc --project .",
38
+ "prepare": "npm run build"
38
39
  },
39
40
  "files": [
40
41
  "*.js",
@@ -48,33 +49,36 @@
48
49
  ]
49
50
  },
50
51
  "devDependencies": {
51
- "@types/mocha": "^9.0.0",
52
- "@types/node": "^16.7.10",
53
- "@typescript-eslint/eslint-plugin": "^4.30.0",
54
- "@typescript-eslint/parser": "^4.30.0",
55
- "aws-sdk-mock": "^5.2.2",
56
- "chai": "^4.3.4",
57
- "chai-spies": "^1.0.0",
52
+ "@aws-sdk/client-lambda": "^3.465.0",
53
+ "@types/js-yaml": "^4.0.9",
54
+ "@types/mocha": "^10.0.6",
55
+ "@types/node": "^20.10.3",
56
+ "@types/randomstring": "^1.1.11",
57
+ "@types/shelljs": "^0.8.15",
58
+ "@typescript-eslint/eslint-plugin": "^5.62.0",
59
+ "@typescript-eslint/parser": "^5.62.0",
60
+ "aws-sdk-client-mock": "^3.0.0",
61
+ "chai": "^4.3.10",
62
+ "chai-spies": "^1.1.0",
58
63
  "eslint": "^7.32.0",
59
- "eslint-config-airbnb": "^18.2.1",
60
64
  "eslint-config-standard": "^16.0.3",
61
- "eslint-plugin-import": "^2.24.2",
62
- "eslint-plugin-jsx-a11y": "6.4.1",
65
+ "eslint-plugin-import": "^2.29.0",
63
66
  "eslint-plugin-node": "^11.1.0",
64
- "eslint-plugin-promise": "^5.1.0",
65
- "eslint-plugin-react": "^7.25.1",
66
- "eslint-plugin-react-hooks": "^4.2.0",
67
+ "eslint-plugin-promise": "^5.2.0",
67
68
  "js-yaml": "^4.1.0",
68
- "mocha": "^9.1.1",
69
+ "mocha": "^10.2.0",
69
70
  "mocha-param": "^2.0.1",
70
71
  "nyc": "^15.1.0",
71
- "randomstring": "^1.2.1",
72
- "serverless": "^3.12.0",
73
- "shelljs": "^0.8.4",
74
- "ts-node": "^10.2.1",
75
- "typescript": "~4.3.5"
72
+ "randomstring": "^1.3.0",
73
+ "serverless": "^3.38.0",
74
+ "shelljs": "^0.8.5",
75
+ "ts-node": "^10.9.1",
76
+ "typescript": "5.1.6"
76
77
  },
77
78
  "dependencies": {
78
- "aws-sdk": "^2.980.0 "
79
+ "@aws-sdk/client-ec2": "^3.467.0",
80
+ "@smithy/smithy-client": "^2.1.18",
81
+ "@smithy/util-retry": "^2.0.8",
82
+ "ts-md5": "^1.3.1"
79
83
  }
80
84
  }
package/CHANGELOG.md DELETED
@@ -1,72 +0,0 @@
1
- # Changelog
2
- All notable changes to this project will be documented in this file.
3
-
4
- The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
- and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
-
7
- ## [4.0.2] - 2022-04-11
8
- ### Changed
9
- - Add integration with serverless 3 logging
10
- - Change Github workflows to run tests both with sls 2 and 3
11
-
12
- ## [4.0.1] - 2022-04-08
13
- ### Changed
14
- - Fixed audit issues. Added dependabot config
15
-
16
- ## [4.0.0] - 2022-04-08
17
- ### Changed
18
- - Added compability with serverless 3
19
-
20
- ## [3.1.2] - 2021-09-01
21
- ### Changed
22
- - Fixed y18n vulnerability
23
-
24
- ## [3.1.1] - 2021-09-01
25
- ### Changed
26
- - Added serverless schema validation. Thank you @ROSeaboyer ([53](https://github.com/amplify-education/serverless-vpc-discovery/pull/53))
27
-
28
- ## [3.1.0] - 2021-09-01
29
- ### Changed
30
- - Dropped support of node versions < 12
31
- - Replaced Travis pipeline items with GitHub workflow
32
-
33
- ## [3.0.0] - 2020-12-24
34
- ### Added
35
- - Support for getting subnets and security groups by any tag key/value
36
- ### Changed
37
- - ***Important!*** The `subnetNames` and `securityGroupNames` options have been deprecated and will be removed in the next major release. The new options are `subnets` and `securityGroups`.
38
- - ***Important!*** Drop `vpc` option support. The new option is `vpcDiscovery`.
39
-
40
- ## [2.3.0] - 2020-12-11
41
- ### Changed
42
- - Allow usage of wildcards in subnet and security group names. Thank you @RLRabinowitz ([#41](https://github.com/amplify-education/serverless-vpc-discovery/pull/41))
43
-
44
- ## [2.2.1] - 2020-12-02
45
- ### Changed
46
- - Fixed travis build
47
-
48
- ## [2.2.0] - 2020-12-02
49
- ### Changed
50
- - Set `custom.vpcDiscovery` optional.
51
- - Update travis config for github release tagging
52
-
53
- ## [2.1.0] - 2020-11-17
54
- ### Changed
55
- - ***Important!*** The `vpc` option has been deprecated but it still will work for a while. The new option is `vpcDiscovery`.
56
- - The VPC config applies to each function instead of the provider option.
57
- - Fixed logic for checking missing subnets and security groups.
58
- ### Added
59
- - A possibility to specify custom config for each function by specifying `function.vpcDiscovery` config
60
- - Added `warning` and `info` messages
61
-
62
- ## [2.0.0] - 2020-11-13
63
- ### Changed
64
- - The code rewritten to TypeScript. Added improvements. Updated travis config, lint and test scripts.
65
-
66
- ## [1.0.13] - 2018-10-10
67
- ### Added
68
- - Added our own configuration for AWS SDK's built in retry mechanism, increasing it from 3 retries to 20 so that this plugin is more easily used in an automated environment.
69
-
70
- ## [1.0.12] - 2018-08-01
71
- ### Added
72
- - This CHANGELOG file to make it easier for future updates to be documented. Sadly, will not be going back to document changes made for previous versions.