@ampsec/platform-client 46.2.0 → 46.4.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.
@@ -121,9 +121,9 @@ export type EmailDeliveryStrategySpec = DeliveryStrategySpec & {
121
121
  };
122
122
  export type NotificationUpsertDto = BaseUpsertDto & {
123
123
  /** Workflow ID for which the notification is being created */
124
- wfid: string;
124
+ wfid?: string | null;
125
125
  /** Step number in the workflow for which the notification is being created */
126
- stepNumber: number;
126
+ stepNumber?: number | null;
127
127
  /** Status of the notification */
128
128
  status: NotificationStatus;
129
129
  /** Data to be used for the notification */
@@ -22,6 +22,8 @@ export type RestClientOptions = {
22
22
  rateLimitStrategy?: RestClientRateLimitStrategy;
23
23
  logger?: AmpLogger;
24
24
  client?: AxiosStatic;
25
+ /** Throws errors on non-200 responses if `true`. Default `false` */
26
+ strict?: boolean;
25
27
  };
26
28
  /**
27
29
  * RestClient is a generic interface for making REST calls.
@@ -41,6 +43,7 @@ export declare class DefaultRestClient {
41
43
  protected readonly retryStrategy: RestClientRetryStrategy;
42
44
  protected readonly rateLimitStrategy: RestClientRateLimitStrategy;
43
45
  protected readonly logger: AmpLogger;
46
+ protected readonly strict: boolean;
44
47
  constructor(options?: RestClientOptions);
45
48
  call: (request: RestRequest) => Promise<RestResponse>;
46
49
  }
@@ -43,7 +43,7 @@ const logging_1 = require("../../logging");
43
43
  */
44
44
  class DefaultRestClient {
45
45
  constructor(options = {}) {
46
- var _a, _b, _c, _d, _e;
46
+ var _a, _b, _c, _d, _e, _f;
47
47
  this.call = async (request) => {
48
48
  var _a, _b;
49
49
  const req = lodash_1.default.merge(request);
@@ -51,6 +51,9 @@ class DefaultRestClient {
51
51
  await this.rateLimitStrategy.reserve(req);
52
52
  this.logger.debug({ req }); // noop logger by default
53
53
  const res = await this.ampAxios.request(req);
54
+ if (this.strict && res.status >= 400) {
55
+ throw new Error(`[${res.status}] ${res.statusText} (P8ZZJp-1)`);
56
+ }
54
57
  return {
55
58
  status: res.status,
56
59
  headers: (0, utils_1.convertHeaders)(res),
@@ -61,8 +64,15 @@ class DefaultRestClient {
61
64
  catch (err) {
62
65
  if (err instanceof axios_1.AxiosError) {
63
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} ${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} (hGRxLB-2)`);
73
+ }
64
74
  return {
65
- status: (_b = (_a = axiosError.response) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : 500,
75
+ status: status,
66
76
  headers: axiosError.response ? (0, utils_1.convertHeaders)(axiosError.response) : {},
67
77
  data: null,
68
78
  error: err,
@@ -90,6 +100,7 @@ class DefaultRestClient {
90
100
  this.ampAxios.defaults.headers.put['Content-Type'] = 'application/json';
91
101
  this.retryStrategy = (_d = options.retryStrategy) !== null && _d !== void 0 ? _d : retry_rest_1.noopRestRetryStrategy;
92
102
  this.rateLimitStrategy = (_e = options.rateLimitStrategy) !== null && _e !== void 0 ? _e : rateLimit_rest_1.noopRestClientRateLimitStrategy;
103
+ this.strict = (_f = options.strict) !== null && _f !== void 0 ? _f : false;
93
104
  }
94
105
  }
95
106
  exports.DefaultRestClient = DefaultRestClient;
@@ -1 +1 @@
1
- {"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../../../src/services/rest/RestClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../../../src/services/rest/RestClient.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": "46.2.0",
3
+ "version": "46.4.0",
4
4
  "description": "",
5
5
  "main": "build/src/index.js",
6
6
  "runkitExampleFilename": "example/main.js",
@@ -136,9 +136,9 @@ export type EmailDeliveryStrategySpec = DeliveryStrategySpec & {
136
136
 
137
137
  export type NotificationUpsertDto = BaseUpsertDto & {
138
138
  /** Workflow ID for which the notification is being created */
139
- wfid: string;
139
+ wfid?: string | null;
140
140
  /** Step number in the workflow for which the notification is being created */
141
- stepNumber: number;
141
+ stepNumber?: number | null;
142
142
  /** Status of the notification */
143
143
  status: NotificationStatus;
144
144
  /** Data to be used for the notification */
@@ -26,6 +26,8 @@ export type RestClientOptions = {
26
26
  rateLimitStrategy?: RestClientRateLimitStrategy;
27
27
  logger?: AmpLogger;
28
28
  client?: AxiosStatic;
29
+ /** Throws errors on non-200 responses if `true`. Default `false` */
30
+ strict?: boolean;
29
31
  };
30
32
 
31
33
  /**
@@ -47,6 +49,7 @@ export class DefaultRestClient {
47
49
  protected readonly retryStrategy: RestClientRetryStrategy;
48
50
  protected readonly rateLimitStrategy: RestClientRateLimitStrategy;
49
51
  protected readonly logger: AmpLogger;
52
+ protected readonly strict: boolean;
50
53
 
51
54
  constructor(options: RestClientOptions = {}) {
52
55
  // TODO: rest client
@@ -67,6 +70,7 @@ export class DefaultRestClient {
67
70
  this.ampAxios.defaults.headers.put['Content-Type'] = 'application/json';
68
71
  this.retryStrategy = options.retryStrategy ?? noopRestRetryStrategy;
69
72
  this.rateLimitStrategy = options.rateLimitStrategy ?? noopRestClientRateLimitStrategy;
73
+ this.strict = options.strict ?? false;
70
74
  }
71
75
  call = async (request: RestRequest): Promise<RestResponse> => {
72
76
  const req = _.merge(request);
@@ -74,6 +78,9 @@ export class DefaultRestClient {
74
78
  await this.rateLimitStrategy.reserve(req);
75
79
  this.logger.debug({req}); // noop logger by default
76
80
  const res = await this.ampAxios.request(req);
81
+ if (this.strict && res.status >= 400) {
82
+ throw new Error(`[${res.status}] ${res.statusText} (P8ZZJp-1)`);
83
+ }
77
84
  return {
78
85
  status: res.status,
79
86
  headers: convertHeaders(res),
@@ -83,8 +90,15 @@ export class DefaultRestClient {
83
90
  } catch (err: unknown) {
84
91
  if (err instanceof AxiosError) {
85
92
  const axiosError = err as AxiosError;
93
+ const status = axiosError.response?.status ?? 500;
94
+ // ! DO NOT print the entire error here because axiosError.request likely contains sensitive data
95
+ this.logger.error(`[${status}] ${axiosError} ${axiosError.message}`);
96
+ // ! DO NOT print the entire error here because axiosError.request likely contains sensitive data
97
+ if (this.strict && status >= 400) {
98
+ throw new Error(`[${status}] ${axiosError.message} (hGRxLB-2)`);
99
+ }
86
100
  return {
87
- status: axiosError.response?.status ?? 500,
101
+ status: status,
88
102
  headers: axiosError.response ? convertHeaders(axiosError.response) : {},
89
103
  data: null,
90
104
  error: err,