@ampsec/platform-client 70.7.0 → 71.1.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.
@@ -47,39 +47,55 @@ class DefaultRestClient {
47
47
  this.call = async (request) => {
48
48
  var _a, _b;
49
49
  const req = lodash_1.default.merge(request);
50
- try {
51
- await this.rateLimitStrategy.reserve(req);
52
- this.logger.debug({ req }); // noop logger by default
53
- const res = await this.ampAxios.request(req);
54
- if (this.strict && res.status >= 400) {
55
- throw new Error(`[${res.status}] ${res.statusText} (apc-P8ZZJp-1)`);
56
- }
57
- return {
58
- status: res.status,
59
- headers: (0, utils_1.convertHeaders)(res),
60
- data: res.data,
61
- error: null,
62
- };
63
- }
64
- catch (err) {
65
- if (err instanceof axios_1.AxiosError) {
66
- const axiosError = err;
67
- const status = (_b = (_a = axiosError.response) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : 500;
68
- // ! DO NOT print the entire error here because axiosError.request likely contains sensitive data
69
- this.logger.error(`[${status}] ${axiosError.message}`);
70
- // ! DO NOT print the entire error here because axiosError.request likely contains sensitive data
71
- if (this.strict && status >= 400) {
72
- throw new Error(`[${status}] ${axiosError.message} (apc-hGRxLB-2)`);
50
+ let attempt = 0;
51
+ const processing = true;
52
+ retryLoop: while (processing) {
53
+ attempt++;
54
+ try {
55
+ await this.rateLimitStrategy.reserve(req);
56
+ this.logger.debug({ req }); // noop logger by default
57
+ const res = await this.ampAxios.request(req);
58
+ if (this.strict && res.status >= 400) {
59
+ const delay = this.retryStrategy.onError({ response: res }, attempt);
60
+ if (delay > 0) {
61
+ await sleep(delay);
62
+ continue retryLoop;
63
+ }
64
+ throw new Error(`[${res.status}] ${req.url} ${res.statusText} (apc-P8ZZJp-1)`);
73
65
  }
74
66
  return {
75
- status: status,
76
- headers: axiosError.response ? (0, utils_1.convertHeaders)(axiosError.response) : {},
77
- data: null,
78
- error: err,
67
+ status: res.status,
68
+ headers: (0, utils_1.convertHeaders)(res),
69
+ data: res.data,
70
+ error: null,
79
71
  };
80
72
  }
81
- throw err;
73
+ catch (err) {
74
+ if (err instanceof axios_1.AxiosError) {
75
+ const axiosError = err;
76
+ const delay = this.retryStrategy.onError(axiosError, attempt);
77
+ if (delay > 0) {
78
+ await sleep(delay);
79
+ continue retryLoop;
80
+ }
81
+ const status = (_b = (_a = axiosError.response) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : 500;
82
+ // ! DO NOT print the entire error here because axiosError.request likely contains sensitive data
83
+ this.logger.error(`[${status}] ${req.url} ${axiosError.message}`);
84
+ // ! DO NOT print the entire error here because axiosError.request likely contains sensitive data
85
+ if (this.strict && status >= 400) {
86
+ throw new Error(`[${status}] ${req.url} ${axiosError.message} (apc-hGRxLB-2)`);
87
+ }
88
+ return {
89
+ status: status,
90
+ headers: axiosError.response ? (0, utils_1.convertHeaders)(axiosError.response) : {},
91
+ data: null,
92
+ error: err,
93
+ };
94
+ }
95
+ throw err;
96
+ }
82
97
  }
98
+ throw new Error('Unknown Error');
83
99
  };
84
100
  const client = (_a = options.client) !== null && _a !== void 0 ? _a : axios_1.default;
85
101
  this.ampAxios = client.create({
@@ -129,4 +145,7 @@ const getAmpRestClient = (options) => {
129
145
  return ampClient;
130
146
  };
131
147
  exports.getAmpRestClient = getAmpRestClient;
148
+ function sleep(delay) {
149
+ return new Promise(resolve => setTimeout(resolve, delay));
150
+ }
132
151
  //# sourceMappingURL=RestClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../../../src/services/rest/RestClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAuB;AACvB,4CAAoB;AACpB,+CAA4D;AAG5D,6CAA4E;AAC5E,mCAAmD;AACnD,qDAAiI;AACjI,2CAAoD;AAqCpD;;;;;;GAMG;AACH,MAAa,iBAAiB;IAQ5B,YAAY,UAA6B,EAAE;;QA+B3C,SAAI,GAAG,KAAK,EAAE,OAAoB,EAAyB,EAAE;;YAC3D,MAAM,GAAG,GAAG,gBAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,GAAG,EAAC,CAAC,CAAC,CAAC,yBAAyB;gBACnD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;oBACrC,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,iBAAiB,CAAC,CAAC;gBACtE,CAAC;gBACD,OAAO;oBACL,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,OAAO,EAAE,IAAA,sBAAc,EAAC,GAAG,CAAC;oBAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,KAAK,EAAE,IAAI;iBACZ,CAAC;YACJ,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,IAAI,GAAG,YAAY,kBAAU,EAAE,CAAC;oBAC9B,MAAM,UAAU,GAAG,GAAiB,CAAC;oBACrC,MAAM,MAAM,GAAG,MAAA,MAAA,UAAU,CAAC,QAAQ,0CAAE,MAAM,mCAAI,GAAG,CAAC;oBAClD,iGAAiG;oBACjG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvD,iGAAiG;oBACjG,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;wBACjC,MAAM,IAAI,KAAK,CAAC,IAAI,MAAM,KAAK,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;oBACtE,CAAC;oBACD,OAAO;wBACL,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,sBAAc,EAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;wBACvE,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,GAAG;qBACX,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QAhEA,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,eAAK,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,gBAAgB,EAAE,MAAM,CAAC,EAAE;gBACzB,IAAI,UAAU,GAAG,YAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAC,WAAW,EAAE,QAAQ,EAAC,CAAC,CAAC;gBAC/D,+BAA+B;gBAC/B,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACjD,iDAAiD;gBACjD,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,UAAU,IAAI,MAAM,CAAC;gBACvB,CAAC;gBACD,OAAO,UAAU,CAAC;YACpB,CAAC;SACF,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,MAAA,OAAO,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;;YAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAA,OAAO,CAAC,OAAO,0CAAG,GAAG,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,oBAAU,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QACxE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,MAAA,OAAO,CAAC,aAAa,mCAAI,kCAAqB,CAAC;QACpE,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,CAAC,iBAAiB,mCAAI,gDAA+B,CAAC;QACtF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,KAAK,CAAC;IACxC,CAAC;CAoCF;AA1ED,8CA0EC;AAEM,MAAM,gBAAgB,GAAG,CAAC,OAA6B,EAAc,EAAE;IAC5E,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC;QACtC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;SACzC;QACD,iBAAiB,EAAE,IAAI,kDAAiC,CAAC,EAAE,CAAC;QAC5D,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,gBAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;QAC7D,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B"}
1
+ {"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../../../src/services/rest/RestClient.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,21 @@
1
1
  import { AxiosError } from 'axios';
2
- import { RestRequest } from './RestRequest';
3
- import { RestResponse } from './RestResponse';
4
2
  export interface RestClientRetryStrategy {
5
- onError(_req: RestRequest, _err: AxiosError): Promise<RestResponse>;
3
+ /**
4
+ * @param _err The error that caused the retry
5
+ * @param attempt The number of attempts that have been made
6
+ * @returns The delay in milliseconds before the next retry. Return 0 to stop retrying.
7
+ */
8
+ onError(_err: AxiosError, attempt: number): number;
6
9
  }
7
10
  export declare const noopRestRetryStrategy: RestClientRetryStrategy;
11
+ export type RetryStrategyOptions = {
12
+ delay: number;
13
+ maxRetries: number;
14
+ };
15
+ export declare const getConstantRetryStrategy: (options: RetryStrategyOptions) => RestClientRetryStrategy;
16
+ export declare const getLinearRetryStrategy: (options: RetryStrategyOptions) => RestClientRetryStrategy;
17
+ export declare const REST_RETRY_STRATEGIES: {
18
+ noopRestRetryStrategy: RestClientRetryStrategy;
19
+ getConstantRetryStrategy: (options: RetryStrategyOptions) => RestClientRetryStrategy;
20
+ getLinearRetryStrategy: (options: RetryStrategyOptions) => RestClientRetryStrategy;
21
+ };
@@ -1,18 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.noopRestRetryStrategy = void 0;
4
- const utils_1 = require("./utils");
3
+ exports.REST_RETRY_STRATEGIES = exports.getLinearRetryStrategy = exports.getConstantRetryStrategy = exports.noopRestRetryStrategy = void 0;
5
4
  exports.noopRestRetryStrategy = {
6
- onError: (req, err) => {
7
- var _a, _b;
8
- const axiosError = err;
9
- const res = {
10
- status: (_b = (_a = axiosError.response) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : 500,
11
- headers: axiosError.response ? (0, utils_1.convertHeaders)(axiosError.response) : {},
12
- data: null,
13
- error: err,
14
- };
15
- return Promise.resolve(res);
5
+ onError: (_err, _attempt) => {
6
+ return 0;
16
7
  },
17
8
  };
9
+ const getConstantRetryStrategy = (options) => ({
10
+ onError: (_err, attempt) => {
11
+ if (attempt >= options.maxRetries)
12
+ return 0;
13
+ return options.delay;
14
+ },
15
+ });
16
+ exports.getConstantRetryStrategy = getConstantRetryStrategy;
17
+ const getLinearRetryStrategy = (options) => ({
18
+ onError: (_err, attempt) => {
19
+ if (attempt >= options.maxRetries)
20
+ return 0;
21
+ return attempt * options.delay;
22
+ },
23
+ });
24
+ exports.getLinearRetryStrategy = getLinearRetryStrategy;
25
+ exports.REST_RETRY_STRATEGIES = {
26
+ noopRestRetryStrategy: exports.noopRestRetryStrategy,
27
+ getConstantRetryStrategy: exports.getConstantRetryStrategy,
28
+ getLinearRetryStrategy: exports.getLinearRetryStrategy,
29
+ };
18
30
  //# sourceMappingURL=retry.rest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.rest.js","sourceRoot":"","sources":["../../../../src/services/rest/retry.rest.ts"],"names":[],"mappings":";;;AACA,mCAAuC;AAQ1B,QAAA,qBAAqB,GAA4B;IAC5D,OAAO,EAAE,CAAC,GAAgB,EAAE,GAAe,EAAyB,EAAE;;QACpE,MAAM,UAAU,GAAG,GAAiB,CAAC;QACrC,MAAM,GAAG,GAAiB;YACxB,MAAM,EAAE,MAAA,MAAA,UAAU,CAAC,QAAQ,0CAAE,MAAM,mCAAI,GAAG;YAC1C,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,sBAAc,EAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACvE,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,GAAG;SACX,CAAC;QACF,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"retry.rest.js","sourceRoot":"","sources":["../../../../src/services/rest/retry.rest.ts"],"names":[],"mappings":";;;AAWa,QAAA,qBAAqB,GAA4B;IAC5D,OAAO,EAAE,CAAC,IAAgB,EAAE,QAAgB,EAAU,EAAE;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;CACF,CAAC;AAOK,MAAM,wBAAwB,GAAG,CAAC,OAA6B,EAA2B,EAAE,CAAC,CAAC;IACnG,OAAO,EAAE,CAAC,IAAgB,EAAE,OAAe,EAAU,EAAE;QACrD,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;CACF,CAAC,CAAC;AALU,QAAA,wBAAwB,4BAKlC;AAEI,MAAM,sBAAsB,GAAG,CAAC,OAA6B,EAA2B,EAAE,CAAC,CAAC;IACjG,OAAO,EAAE,CAAC,IAAgB,EAAE,OAAe,EAAU,EAAE;QACrD,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;IACjC,CAAC;CACF,CAAC,CAAC;AALU,QAAA,sBAAsB,0BAKhC;AAEU,QAAA,qBAAqB,GAAG;IACnC,qBAAqB,EAArB,6BAAqB;IACrB,wBAAwB,EAAxB,gCAAwB;IACxB,sBAAsB,EAAtB,8BAAsB;CACvB,CAAC"}
@@ -101,7 +101,7 @@ export declare const AMP_SETTINGS: {
101
101
  ONELOGIN_SERVICE_ACCCOUNT_EMAILS: import("./services").TypedAmpSettingsKey<string[]>;
102
102
  };
103
103
  slack: {
104
- /** Ideally this is populated at bot installtion time */
104
+ /** @deprecated */
105
105
  SLACK_TEAM_ID: import("./services").TypedAmpSettingsKey<string>;
106
106
  SLACK_EXECUTIVE_GROUPS: import("./services").TypedAmpSettingsKey<string[]>;
107
107
  SLACK_PROD_ACCESS_GROUPS: import("./services").TypedAmpSettingsKey<string[]>;
@@ -114,9 +114,12 @@ export declare const AMP_SETTINGS: {
114
114
  KNOWBE4_PHISHING_EXP: import("./services").TypedAmpSettingsKey<string>;
115
115
  };
116
116
  tenable: {
117
+ /** Used to calculate `active` status. */
117
118
  TENABLE_ACTIVE_LAST_SEEN_THRESHOLD: import("./services").TypedAmpSettingsKey<string>;
118
119
  TENABLE_ASSET_ARCHIVED_RULE: import("./services").TypedAmpSettingsKey<unknown>;
120
+ /** Used to limit results returned from Asset Export */
119
121
  TENABLE_ASSET_ARCHIVED_THRESHOLD: import("./services").TypedAmpSettingsKey<string>;
122
+ TENABLE_ASSET_EXPORT_FILTER: import("./services").TypedAmpSettingsKey<unknown>;
120
123
  TENABLE_VULN_CRIT_DEADLINE_THRESHOLD: import("./services").TypedAmpSettingsKey<string>;
121
124
  TENABLE_VULN_HIGH_DEADLINE_THRESHOLD: import("./services").TypedAmpSettingsKey<string>;
122
125
  TENABLE_VULN_MEDIUM_DEADLINE_THRESHOLD: import("./services").TypedAmpSettingsKey<string>;
@@ -89,7 +89,7 @@ const ONELOGIN_SETTINGS = {
89
89
  ONELOGIN_SERVICE_ACCCOUNT_EMAILS: services_1.AmpSettingsMap.asKey('onelogin.service.account.emails', []),
90
90
  };
91
91
  const SLACK_SETTINGS = {
92
- /** Ideally this is populated at bot installtion time */
92
+ /** @deprecated */
93
93
  SLACK_TEAM_ID: services_1.AmpSettingsMap.asKey('slack.team.extId'),
94
94
  SLACK_EXECUTIVE_GROUPS: services_1.AmpSettingsMap.asKey('slack.groups.exec.extIds', []),
95
95
  SLACK_PROD_ACCESS_GROUPS: services_1.AmpSettingsMap.asKey('slack.groups.prod.extIds', []),
@@ -100,9 +100,12 @@ const SLACK_SETTINGS = {
100
100
  SLACK_CONTACT_SECURITY_TEMPLATE: services_1.AmpSettingsMap.asKey('slack.templates.contactSecurity', 'Thanks for getting in touch! We forwarded your message to our security team and they will get back to you shortly.'),
101
101
  };
102
102
  const TENABLE_SETTINGS = {
103
+ /** Used to calculate `active` status. */
103
104
  TENABLE_ACTIVE_LAST_SEEN_THRESHOLD: services_1.AmpSettingsMap.asKey('tenable.active.lastSeen.threshold', '14 day'),
104
105
  TENABLE_ASSET_ARCHIVED_RULE: services_1.AmpSettingsMap.asKey('tenable.asset.archived.rule', { MATCH_NOTHING: true }),
106
+ /** Used to limit results returned from Asset Export */
105
107
  TENABLE_ASSET_ARCHIVED_THRESHOLD: services_1.AmpSettingsMap.asKey('tenable.asset.archived.threshold', '1 year'),
108
+ TENABLE_ASSET_EXPORT_FILTER: services_1.AmpSettingsMap.asKey('tenable.asset.export.filter', {}),
106
109
  TENABLE_VULN_CRIT_DEADLINE_THRESHOLD: services_1.AmpSettingsMap.asKey('tenable.vuln.crit.deadline', '14 day'),
107
110
  TENABLE_VULN_HIGH_DEADLINE_THRESHOLD: services_1.AmpSettingsMap.asKey('tenable.vuln.high.deadline', '30 day'),
108
111
  TENABLE_VULN_MEDIUM_DEADLINE_THRESHOLD: services_1.AmpSettingsMap.asKey('tenable.vuln.medium.deadline', '90 day'),
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/settings.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ampsec/platform-client",
3
- "version": "70.7.0",
3
+ "version": "71.1.0",
4
4
  "description": "",
5
5
  "main": "build/src/index.js",
6
6
  "runkitExampleFilename": "example/main.js",
@@ -91,38 +91,54 @@ export class DefaultRestClient implements RestClient {
91
91
  }
92
92
  call = async (request: RestRequest): Promise<RestResponse> => {
93
93
  const req = _.merge(request);
94
- try {
95
- await this.rateLimitStrategy.reserve(req);
96
- this.logger.debug({req}); // noop logger by default
97
- const res = await this.ampAxios.request(req);
98
- if (this.strict && res.status >= 400) {
99
- throw new Error(`[${res.status}] ${res.statusText} (apc-P8ZZJp-1)`);
100
- }
101
- return {
102
- status: res.status,
103
- headers: convertHeaders(res),
104
- data: res.data,
105
- error: null,
106
- };
107
- } catch (err: unknown) {
108
- if (err instanceof AxiosError) {
109
- const axiosError = err as AxiosError;
110
- const status = axiosError.response?.status ?? 500;
111
- // ! DO NOT print the entire error here because axiosError.request likely contains sensitive data
112
- this.logger.error(`[${status}] ${axiosError.message}`);
113
- // ! DO NOT print the entire error here because axiosError.request likely contains sensitive data
114
- if (this.strict && status >= 400) {
115
- throw new Error(`[${status}] ${axiosError.message} (apc-hGRxLB-2)`);
94
+ let attempt = 0;
95
+ const processing = true;
96
+ retryLoop: while (processing) {
97
+ attempt++;
98
+ try {
99
+ await this.rateLimitStrategy.reserve(req);
100
+ this.logger.debug({req}); // noop logger by default
101
+ const res = await this.ampAxios.request(req);
102
+ if (this.strict && res.status >= 400) {
103
+ const delay = this.retryStrategy.onError({response: res} as AxiosError, attempt);
104
+ if (delay > 0) {
105
+ await sleep(delay);
106
+ continue retryLoop;
107
+ }
108
+ throw new Error(`[${res.status}] ${req.url} ${res.statusText} (apc-P8ZZJp-1)`);
116
109
  }
117
110
  return {
118
- status: status,
119
- headers: axiosError.response ? convertHeaders(axiosError.response) : {},
120
- data: null,
121
- error: err,
111
+ status: res.status,
112
+ headers: convertHeaders(res),
113
+ data: res.data,
114
+ error: null,
122
115
  };
116
+ } catch (err: unknown) {
117
+ if (err instanceof AxiosError) {
118
+ const axiosError = err as AxiosError;
119
+ const delay = this.retryStrategy.onError(axiosError, attempt);
120
+ if (delay > 0) {
121
+ await sleep(delay);
122
+ continue retryLoop;
123
+ }
124
+ const status = axiosError.response?.status ?? 500;
125
+ // ! DO NOT print the entire error here because axiosError.request likely contains sensitive data
126
+ this.logger.error(`[${status}] ${req.url} ${axiosError.message}`);
127
+ // ! DO NOT print the entire error here because axiosError.request likely contains sensitive data
128
+ if (this.strict && status >= 400) {
129
+ throw new Error(`[${status}] ${req.url} ${axiosError.message} (apc-hGRxLB-2)`);
130
+ }
131
+ return {
132
+ status: status,
133
+ headers: axiosError.response ? convertHeaders(axiosError.response) : {},
134
+ data: null,
135
+ error: err,
136
+ };
137
+ }
138
+ throw err;
123
139
  }
124
- throw err;
125
140
  }
141
+ throw new Error('Unknown Error');
126
142
  };
127
143
  }
128
144
 
@@ -140,3 +156,6 @@ export const getAmpRestClient = (options: AmpRestClientOptions): RestClient => {
140
156
  });
141
157
  return ampClient;
142
158
  };
159
+ function sleep(delay: number): Promise<void> {
160
+ return new Promise(resolve => setTimeout(resolve, delay));
161
+ }
@@ -1,21 +1,41 @@
1
1
  import {AxiosError} from 'axios';
2
- import {convertHeaders} from './utils';
3
- import {RestRequest} from './RestRequest';
4
- import {RestResponse} from './RestResponse';
5
2
 
6
3
  export interface RestClientRetryStrategy {
7
- onError(_req: RestRequest, _err: AxiosError): Promise<RestResponse>;
4
+ /**
5
+ * @param _err The error that caused the retry
6
+ * @param attempt The number of attempts that have been made
7
+ * @returns The delay in milliseconds before the next retry. Return 0 to stop retrying.
8
+ */
9
+ onError(_err: AxiosError, attempt: number): number;
8
10
  }
9
11
 
10
12
  export const noopRestRetryStrategy: RestClientRetryStrategy = {
11
- onError: (req: RestRequest, err: AxiosError): Promise<RestResponse> => {
12
- const axiosError = err as AxiosError;
13
- const res: RestResponse = {
14
- status: axiosError.response?.status ?? 500,
15
- headers: axiosError.response ? convertHeaders(axiosError.response) : {},
16
- data: null,
17
- error: err,
18
- };
19
- return Promise.resolve(res);
13
+ onError: (_err: AxiosError, _attempt: number): number => {
14
+ return 0;
20
15
  },
21
16
  };
17
+
18
+ export type RetryStrategyOptions = {
19
+ delay: number;
20
+ maxRetries: number;
21
+ };
22
+
23
+ export const getConstantRetryStrategy = (options: RetryStrategyOptions): RestClientRetryStrategy => ({
24
+ onError: (_err: AxiosError, attempt: number): number => {
25
+ if (attempt >= options.maxRetries) return 0;
26
+ return options.delay;
27
+ },
28
+ });
29
+
30
+ export const getLinearRetryStrategy = (options: RetryStrategyOptions): RestClientRetryStrategy => ({
31
+ onError: (_err: AxiosError, attempt: number): number => {
32
+ if (attempt >= options.maxRetries) return 0;
33
+ return attempt * options.delay;
34
+ },
35
+ });
36
+
37
+ export const REST_RETRY_STRATEGIES = {
38
+ noopRestRetryStrategy,
39
+ getConstantRetryStrategy,
40
+ getLinearRetryStrategy,
41
+ };
package/src/settings.ts CHANGED
@@ -95,7 +95,7 @@ const ONELOGIN_SETTINGS = {
95
95
  };
96
96
 
97
97
  const SLACK_SETTINGS = {
98
- /** Ideally this is populated at bot installtion time */
98
+ /** @deprecated */
99
99
  SLACK_TEAM_ID: AmpSettingsMap.asKey<string>('slack.team.extId'),
100
100
  SLACK_EXECUTIVE_GROUPS: AmpSettingsMap.asKey<string[]>('slack.groups.exec.extIds', []),
101
101
  SLACK_PROD_ACCESS_GROUPS: AmpSettingsMap.asKey<string[]>('slack.groups.prod.extIds', []),
@@ -110,9 +110,12 @@ const SLACK_SETTINGS = {
110
110
  };
111
111
 
112
112
  const TENABLE_SETTINGS = {
113
+ /** Used to calculate `active` status. */
113
114
  TENABLE_ACTIVE_LAST_SEEN_THRESHOLD: AmpSettingsMap.asKey<string>('tenable.active.lastSeen.threshold', '14 day'),
114
115
  TENABLE_ASSET_ARCHIVED_RULE: AmpSettingsMap.asKey<unknown>('tenable.asset.archived.rule', {MATCH_NOTHING: true}),
116
+ /** Used to limit results returned from Asset Export */
115
117
  TENABLE_ASSET_ARCHIVED_THRESHOLD: AmpSettingsMap.asKey<string>('tenable.asset.archived.threshold', '1 year'),
118
+ TENABLE_ASSET_EXPORT_FILTER: AmpSettingsMap.asKey<unknown>('tenable.asset.export.filter', {}),
116
119
  TENABLE_VULN_CRIT_DEADLINE_THRESHOLD: AmpSettingsMap.asKey<string>('tenable.vuln.crit.deadline', '14 day'),
117
120
  TENABLE_VULN_HIGH_DEADLINE_THRESHOLD: AmpSettingsMap.asKey<string>('tenable.vuln.high.deadline', '30 day'),
118
121
  TENABLE_VULN_MEDIUM_DEADLINE_THRESHOLD: AmpSettingsMap.asKey<string>('tenable.vuln.medium.deadline', '90 day'),