@commercetools-frontend-extensions/operations 3.3.0 → 3.5.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.
Files changed (49) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/commercetools-frontend-extensions-operations.cjs.dev.js +171 -51
  3. package/dist/commercetools-frontend-extensions-operations.cjs.prod.js +171 -51
  4. package/dist/commercetools-frontend-extensions-operations.esm.js +161 -51
  5. package/dist/declarations/src/@api/file-import-jobs.d.ts +2 -2
  6. package/dist/declarations/src/@errors/base.d.ts +19 -0
  7. package/dist/declarations/src/@errors/guards.d.ts +12 -0
  8. package/dist/declarations/src/@errors/http-error.d.ts +4 -1
  9. package/dist/declarations/src/@errors/index.d.ts +3 -0
  10. package/dist/declarations/src/@errors/invalid-response-error.d.ts +4 -1
  11. package/dist/declarations/src/@errors/no-resources-to-export-error.d.ts +4 -1
  12. package/dist/declarations/src/@errors/polling-aborted-error.d.ts +4 -1
  13. package/dist/declarations/src/@errors/polling-timeout-error.d.ts +8 -0
  14. package/dist/declarations/src/@errors/project-key-not-available-error.d.ts +4 -1
  15. package/dist/declarations/src/@errors/query-predicate-error.d.ts +5 -2
  16. package/dist/declarations/src/@errors/unexpected-column-error.d.ts +5 -1
  17. package/dist/declarations/src/@errors/unexpected-operation-state-error.d.ts +5 -1
  18. package/dist/declarations/src/@errors/unexpected-resource-type-error.d.ts +5 -1
  19. package/dist/declarations/src/@hooks/use-fetch-file-import-job.d.ts +0 -1
  20. package/dist/declarations/src/@hooks/use-file-import-job-upload.d.ts +1 -0
  21. package/dist/declarations/src/@hooks/use-file-upload.d.ts +1 -0
  22. package/dist/declarations/src/@types/file-import-job.d.ts +2 -1
  23. package/package.json +1 -1
  24. package/src/@api/file-import-jobs.ts +13 -4
  25. package/src/@api/process-file.ts +0 -1
  26. package/src/@api/urls.ts +11 -2
  27. package/src/@errors/base.ts +30 -0
  28. package/src/@errors/guards.ts +43 -0
  29. package/src/@errors/http-error.ts +5 -1
  30. package/src/@errors/index.ts +3 -0
  31. package/src/@errors/invalid-response-error.ts +6 -1
  32. package/src/@errors/no-resources-to-export-error.ts +6 -1
  33. package/src/@errors/polling-aborted-error.ts +6 -1
  34. package/src/@errors/polling-timeout-error.ts +17 -0
  35. package/src/@errors/project-key-not-available-error.ts +6 -1
  36. package/src/@errors/query-predicate-error.ts +6 -2
  37. package/src/@errors/unexpected-column-error.ts +8 -1
  38. package/src/@errors/unexpected-operation-state-error.ts +7 -1
  39. package/src/@errors/unexpected-resource-type-error.ts +8 -1
  40. package/src/@hooks/use-fetch-file-import-job.spec.ts +0 -7
  41. package/src/@hooks/use-fetch-file-import-job.ts +0 -1
  42. package/src/@hooks/use-file-import-job-upload.spec.ts +17 -1
  43. package/src/@hooks/use-file-import-job-upload.ts +2 -0
  44. package/src/@hooks/use-file-upload.ts +2 -0
  45. package/src/@types/file-import-job.ts +2 -1
  46. package/src/@types/file-upload.ts +1 -1
  47. package/src/@utils/error-mapping.spec.ts +8 -0
  48. package/src/@utils/poll-job-until-processing.ts +3 -6
  49. package/src/@utils/poll-job-until-validated.ts +3 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @commercetools-frontend-extensions/operations
2
2
 
3
+ ## 3.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1718](https://github.com/commercetools/merchant-center-operations/pull/1718) [`3bde3b4`](https://github.com/commercetools/merchant-center-operations/commit/3bde3b44a51b6e7ab989b2cce76c481e98d4f378) Thanks [@yassinejebli](https://github.com/yassinejebli)! - refactor(import): standardise error classes with base class and error codes
8
+
9
+ - [#1717](https://github.com/commercetools/merchant-center-operations/pull/1717) [`034c1b4`](https://github.com/commercetools/merchant-center-operations/commit/034c1b40e5e37eb598c48694e2900e66860062a4) Thanks [@yassinejebli](https://github.com/yassinejebli)! - feat: improve UX when validation polling times out
10
+
11
+ ## 3.4.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [#1703](https://github.com/commercetools/merchant-center-operations/pull/1703) [`6b101a8`](https://github.com/commercetools/merchant-center-operations/commit/6b101a8d0e846b5340767086434fd6f3abe8ef24) Thanks [@yassinejebli](https://github.com/yassinejebli)! - refactor: adjust product delete endpoints for the new import flow
16
+
3
17
  ## 3.3.0
4
18
 
5
19
  ### Minor Changes
@@ -20,8 +20,10 @@ var _possibleConstructorReturn = require('@babel/runtime-corejs3/helpers/possibl
20
20
  var _getPrototypeOf = require('@babel/runtime-corejs3/helpers/getPrototypeOf');
21
21
  var _inherits = require('@babel/runtime-corejs3/helpers/inherits');
22
22
  var _wrapNativeSuper = require('@babel/runtime-corejs3/helpers/wrapNativeSuper');
23
+ var _Date$now = require('@babel/runtime-corejs3/core-js-stable/date/now');
23
24
  var constants = require('@commercetools-frontend/constants');
24
25
  var _everyInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/every');
26
+ var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
25
27
  var pluralize = require('pluralize');
26
28
  var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
27
29
  var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
@@ -29,7 +31,6 @@ var _flatMapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/in
29
31
  var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
30
32
  var _Promise = require('@babel/runtime-corejs3/core-js-stable/promise');
31
33
  var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
32
- var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
33
34
  var _someInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/some');
34
35
  var Papa = require('papaparse');
35
36
  var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/slice');
@@ -62,14 +63,15 @@ var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defin
62
63
  var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
63
64
  var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
64
65
  var _Reflect$construct__default = /*#__PURE__*/_interopDefault(_Reflect$construct);
66
+ var _Date$now__default = /*#__PURE__*/_interopDefault(_Date$now);
65
67
  var _everyInstanceProperty__default = /*#__PURE__*/_interopDefault(_everyInstanceProperty);
68
+ var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
66
69
  var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
67
70
  var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
68
71
  var _flatMapInstanceProperty__default = /*#__PURE__*/_interopDefault(_flatMapInstanceProperty);
69
72
  var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
70
73
  var _Promise__default = /*#__PURE__*/_interopDefault(_Promise);
71
74
  var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
72
- var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
73
75
  var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
74
76
  var Papa__default = /*#__PURE__*/_interopDefault(Papa);
75
77
  var _sliceInstanceProperty__default = /*#__PURE__*/_interopDefault(_sliceInstanceProperty);
@@ -84,139 +86,235 @@ var React__default = /*#__PURE__*/_interopDefault(React);
84
86
  var _styled__default = /*#__PURE__*/_interopDefault(_styled);
85
87
  var _setInterval__default = /*#__PURE__*/_interopDefault(_setInterval);
86
88
 
87
- function _callSuper$8(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$8() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
88
- function _isNativeReflectConstruct$8() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$8 = function () { return !!t; })(); }
89
- let HttpError = /*#__PURE__*/function (_Error) {
89
+ function _callSuper$a(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$a() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
90
+ function _isNativeReflectConstruct$a() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$a = function () { return !!t; })(); }
91
+ const ErrorCode = {
92
+ HTTP_ERROR: 'HTTP_ERROR',
93
+ POLLING_TIMEOUT: 'POLLING_TIMEOUT',
94
+ POLLING_ABORTED: 'POLLING_ABORTED',
95
+ INVALID_RESPONSE: 'INVALID_RESPONSE',
96
+ UNEXPECTED_COLUMN: 'UNEXPECTED_COLUMN',
97
+ QUERY_PREDICATE_ERROR: 'QUERY_PREDICATE_ERROR',
98
+ UNEXPECTED_OPERATION_STATE: 'UNEXPECTED_OPERATION_STATE',
99
+ UNEXPECTED_RESOURCE_TYPE: 'UNEXPECTED_RESOURCE_TYPE',
100
+ PROJECT_KEY_NOT_AVAILABLE: 'PROJECT_KEY_NOT_AVAILABLE',
101
+ NO_RESOURCES_TO_EXPORT: 'NO_RESOURCES_TO_EXPORT'
102
+ };
103
+ let OperationsError = /*#__PURE__*/function (_Error) {
104
+ function OperationsError(message) {
105
+ var _this;
106
+ _classCallCheck(this, OperationsError);
107
+ _this = _callSuper$a(this, OperationsError, [message]);
108
+ _this.code = void 0;
109
+ _this.isRetryable = void 0;
110
+ _this.timestamp = void 0;
111
+ _this.timestamp = _Date$now__default["default"]();
112
+ return _this;
113
+ }
114
+ _inherits(OperationsError, _Error);
115
+ return _createClass(OperationsError);
116
+ }(/*#__PURE__*/_wrapNativeSuper(Error));
117
+
118
+ function hasErrorCode(error) {
119
+ return typeof error === 'object' && error !== null && 'code' in error && typeof error.code === 'string';
120
+ }
121
+ function isOperationsError(error) {
122
+ return hasErrorCode(error);
123
+ }
124
+ function isRetryableError(error) {
125
+ return hasErrorCode(error) && error.isRetryable === true;
126
+ }
127
+ function isNetworkError(error) {
128
+ return hasErrorCode(error) && (error.code === ErrorCode.HTTP_ERROR || error.code === ErrorCode.POLLING_TIMEOUT);
129
+ }
130
+ function isPollingAbortedError(error) {
131
+ return hasErrorCode(error) && error.code === ErrorCode.POLLING_ABORTED;
132
+ }
133
+ function isPollingTimeoutError(error) {
134
+ return hasErrorCode(error) && error.code === ErrorCode.POLLING_TIMEOUT;
135
+ }
136
+ function isHttpError(error) {
137
+ return hasErrorCode(error) && error.code === ErrorCode.HTTP_ERROR;
138
+ }
139
+
140
+ function _callSuper$9(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$9() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
141
+ function _isNativeReflectConstruct$9() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$9 = function () { return !!t; })(); }
142
+ let HttpError = /*#__PURE__*/function (_OperationsError) {
90
143
  function HttpError(statusCode, statusText, errorData) {
91
144
  var _this;
92
145
  _classCallCheck(this, HttpError);
93
- _this = _callSuper$8(this, HttpError, [`HTTP Error! Status code: ${statusCode}, message: "${statusText ? statusText : ''}"`]);
146
+ _this = _callSuper$9(this, HttpError, [`HTTP Error! Status code: ${statusCode}, message: "${statusText ? statusText : ''}"`]);
147
+ _this.code = ErrorCode.HTTP_ERROR;
94
148
  _this.statusCode = void 0;
95
149
  _this.errorData = void 0;
150
+ _this.isRetryable = void 0;
96
151
  _this.name = 'HttpError';
97
152
  _this.statusCode = statusCode;
98
153
  _this.errorData = errorData;
154
+ _this.isRetryable = statusCode >= 500 || statusCode === 408;
99
155
  return _this;
100
156
  }
101
- _inherits(HttpError, _Error);
157
+ _inherits(HttpError, _OperationsError);
102
158
  return _createClass(HttpError);
103
- }(/*#__PURE__*/_wrapNativeSuper(Error));
159
+ }(OperationsError);
104
160
 
105
- function _callSuper$7(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$7() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
106
- function _isNativeReflectConstruct$7() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$7 = function () { return !!t; })(); }
107
- let InvalidResponseError = /*#__PURE__*/function (_Error) {
161
+ function _callSuper$8(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$8() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
162
+ function _isNativeReflectConstruct$8() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$8 = function () { return !!t; })(); }
163
+ let InvalidResponseError = /*#__PURE__*/function (_OperationsError) {
108
164
  function InvalidResponseError(message) {
109
165
  var _this;
110
166
  _classCallCheck(this, InvalidResponseError);
111
- _this = _callSuper$7(this, InvalidResponseError, [message]);
167
+ _this = _callSuper$8(this, InvalidResponseError, [message]);
168
+ _this.code = ErrorCode.INVALID_RESPONSE;
169
+ _this.isRetryable = false;
112
170
  _this.name = 'InvalidResponseError';
113
171
  return _this;
114
172
  }
115
- _inherits(InvalidResponseError, _Error);
173
+ _inherits(InvalidResponseError, _OperationsError);
116
174
  return _createClass(InvalidResponseError);
117
- }(/*#__PURE__*/_wrapNativeSuper(Error));
175
+ }(OperationsError);
118
176
 
119
- function _callSuper$6(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$6() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
120
- function _isNativeReflectConstruct$6() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$6 = function () { return !!t; })(); }
121
- let NoResourcesToExportError = /*#__PURE__*/function (_Error) {
177
+ function _callSuper$7(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$7() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
178
+ function _isNativeReflectConstruct$7() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$7 = function () { return !!t; })(); }
179
+ let NoResourcesToExportError = /*#__PURE__*/function (_OperationsError) {
122
180
  function NoResourcesToExportError() {
123
181
  var _this;
124
182
  let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'There are no resources to export.';
125
183
  _classCallCheck(this, NoResourcesToExportError);
126
- _this = _callSuper$6(this, NoResourcesToExportError, [message]);
184
+ _this = _callSuper$7(this, NoResourcesToExportError, [message]);
185
+ _this.code = ErrorCode.NO_RESOURCES_TO_EXPORT;
186
+ _this.isRetryable = false;
127
187
  _this.name = 'NoResourcesToExportError';
128
188
  return _this;
129
189
  }
130
- _inherits(NoResourcesToExportError, _Error);
190
+ _inherits(NoResourcesToExportError, _OperationsError);
131
191
  return _createClass(NoResourcesToExportError);
132
- }(/*#__PURE__*/_wrapNativeSuper(Error));
192
+ }(OperationsError);
133
193
 
134
- function _callSuper$5(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$5() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
135
- function _isNativeReflectConstruct$5() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$5 = function () { return !!t; })(); }
136
- let PollingAbortedError = /*#__PURE__*/function (_Error) {
194
+ function _callSuper$6(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$6() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
195
+ function _isNativeReflectConstruct$6() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$6 = function () { return !!t; })(); }
196
+ let PollingAbortedError = /*#__PURE__*/function (_OperationsError) {
137
197
  function PollingAbortedError() {
138
198
  var _this;
139
199
  _classCallCheck(this, PollingAbortedError);
140
- _this = _callSuper$5(this, PollingAbortedError, ['Polling was aborted']);
200
+ _this = _callSuper$6(this, PollingAbortedError, ['Polling was aborted']);
201
+ _this.code = ErrorCode.POLLING_ABORTED;
202
+ _this.isRetryable = false;
141
203
  _this.name = 'PollingAbortedError';
142
204
  return _this;
143
205
  }
144
- _inherits(PollingAbortedError, _Error);
206
+ _inherits(PollingAbortedError, _OperationsError);
145
207
  return _createClass(PollingAbortedError);
146
- }(/*#__PURE__*/_wrapNativeSuper(Error));
208
+ }(OperationsError);
209
+
210
+ function _callSuper$5(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$5() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
211
+ function _isNativeReflectConstruct$5() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$5 = function () { return !!t; })(); }
212
+ let PollingTimeoutError = /*#__PURE__*/function (_OperationsError) {
213
+ function PollingTimeoutError(maxAttempts, totalTimeSeconds) {
214
+ var _this;
215
+ _classCallCheck(this, PollingTimeoutError);
216
+ _this = _callSuper$5(this, PollingTimeoutError, [`Polling timeout after ${maxAttempts} attempts (${totalTimeSeconds}s)`]);
217
+ _this.code = ErrorCode.POLLING_TIMEOUT;
218
+ _this.isRetryable = true;
219
+ _this.maxAttempts = void 0;
220
+ _this.totalTimeSeconds = void 0;
221
+ _this.name = 'PollingTimeoutError';
222
+ _this.maxAttempts = maxAttempts;
223
+ _this.totalTimeSeconds = totalTimeSeconds;
224
+ return _this;
225
+ }
226
+ _inherits(PollingTimeoutError, _OperationsError);
227
+ return _createClass(PollingTimeoutError);
228
+ }(OperationsError);
147
229
 
148
230
  function _callSuper$4(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$4() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
149
231
  function _isNativeReflectConstruct$4() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$4 = function () { return !!t; })(); }
150
- let ProjectKeyNotAvailableError = /*#__PURE__*/function (_Error) {
232
+ let ProjectKeyNotAvailableError = /*#__PURE__*/function (_OperationsError) {
151
233
  function ProjectKeyNotAvailableError() {
152
234
  var _this;
153
235
  let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Project key is not available';
154
236
  _classCallCheck(this, ProjectKeyNotAvailableError);
155
237
  _this = _callSuper$4(this, ProjectKeyNotAvailableError, [message]);
238
+ _this.code = ErrorCode.PROJECT_KEY_NOT_AVAILABLE;
239
+ _this.isRetryable = false;
156
240
  _this.name = 'ProjectKeyNotAvailableError';
157
241
  return _this;
158
242
  }
159
- _inherits(ProjectKeyNotAvailableError, _Error);
243
+ _inherits(ProjectKeyNotAvailableError, _OperationsError);
160
244
  return _createClass(ProjectKeyNotAvailableError);
161
- }(/*#__PURE__*/_wrapNativeSuper(Error));
245
+ }(OperationsError);
162
246
 
163
247
  function _callSuper$3(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$3() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
164
248
  function _isNativeReflectConstruct$3() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$3 = function () { return !!t; })(); }
165
- let QueryPredicateError = /*#__PURE__*/function (_Error) {
249
+ let QueryPredicateError = /*#__PURE__*/function (_OperationsError) {
166
250
  function QueryPredicateError() {
167
251
  var _this;
168
252
  let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'There is an error with the query predicate. Make sure the syntax is correct.';
169
253
  _classCallCheck(this, QueryPredicateError);
170
254
  _this = _callSuper$3(this, QueryPredicateError, [message]);
255
+ _this.code = ErrorCode.QUERY_PREDICATE_ERROR;
256
+ _this.isRetryable = false;
171
257
  _this.field = 'queryPredicate';
172
258
  _this.name = 'QueryPredicateError';
173
259
  return _this;
174
260
  }
175
- _inherits(QueryPredicateError, _Error);
261
+ _inherits(QueryPredicateError, _OperationsError);
176
262
  return _createClass(QueryPredicateError);
177
- }(/*#__PURE__*/_wrapNativeSuper(Error));
263
+ }(OperationsError);
178
264
 
179
265
  function _callSuper$2(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$2() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
180
266
  function _isNativeReflectConstruct$2() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$2 = function () { return !!t; })(); }
181
- let UnexpectedColumnError = /*#__PURE__*/function (_Error) {
267
+ let UnexpectedColumnError = /*#__PURE__*/function (_OperationsError) {
182
268
  function UnexpectedColumnError(columnName) {
183
269
  var _this;
184
270
  _classCallCheck(this, UnexpectedColumnError);
185
271
  _this = _callSuper$2(this, UnexpectedColumnError, [`Unexpected column "${columnName}"`]);
272
+ _this.code = ErrorCode.UNEXPECTED_COLUMN;
273
+ _this.isRetryable = false;
274
+ _this.columnName = void 0;
186
275
  _this.name = 'UnexpectedColumnError';
276
+ _this.columnName = columnName;
187
277
  return _this;
188
278
  }
189
- _inherits(UnexpectedColumnError, _Error);
279
+ _inherits(UnexpectedColumnError, _OperationsError);
190
280
  return _createClass(UnexpectedColumnError);
191
- }(/*#__PURE__*/_wrapNativeSuper(Error));
281
+ }(OperationsError);
192
282
 
193
283
  function _callSuper$1(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$1() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
194
284
  function _isNativeReflectConstruct$1() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$1 = function () { return !!t; })(); }
195
- let UnexpectedOperationStateError = /*#__PURE__*/function (_Error) {
285
+ let UnexpectedOperationStateError = /*#__PURE__*/function (_OperationsError) {
196
286
  function UnexpectedOperationStateError(state) {
197
287
  var _this;
198
288
  _classCallCheck(this, UnexpectedOperationStateError);
199
289
  _this = _callSuper$1(this, UnexpectedOperationStateError, [`Unexpected operation state "${state}"`]);
290
+ _this.code = ErrorCode.UNEXPECTED_OPERATION_STATE;
291
+ _this.isRetryable = false;
292
+ _this.state = void 0;
200
293
  _this.name = 'UnexpectedOperationStateError';
294
+ _this.state = state;
201
295
  return _this;
202
296
  }
203
- _inherits(UnexpectedOperationStateError, _Error);
297
+ _inherits(UnexpectedOperationStateError, _OperationsError);
204
298
  return _createClass(UnexpectedOperationStateError);
205
- }(/*#__PURE__*/_wrapNativeSuper(Error));
299
+ }(OperationsError);
206
300
 
207
301
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
208
302
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function () { return !!t; })(); }
209
- let UnexpectedResourceTypeError = /*#__PURE__*/function (_Error) {
303
+ let UnexpectedResourceTypeError = /*#__PURE__*/function (_OperationsError) {
210
304
  function UnexpectedResourceTypeError(resourceType) {
211
305
  var _this;
212
306
  _classCallCheck(this, UnexpectedResourceTypeError);
213
307
  _this = _callSuper(this, UnexpectedResourceTypeError, [`Unexpected resource type "${resourceType}"`]);
308
+ _this.code = ErrorCode.UNEXPECTED_RESOURCE_TYPE;
309
+ _this.isRetryable = false;
310
+ _this.resourceType = void 0;
214
311
  _this.name = 'UnexpectedResourceTypeError';
312
+ _this.resourceType = resourceType;
215
313
  return _this;
216
314
  }
217
- _inherits(UnexpectedResourceTypeError, _Error);
315
+ _inherits(UnexpectedResourceTypeError, _OperationsError);
218
316
  return _createClass(UnexpectedResourceTypeError);
219
- }(/*#__PURE__*/_wrapNativeSuper(Error));
317
+ }(OperationsError);
220
318
 
221
319
  function ownKeys$9(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
222
320
  function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$9(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$9(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
@@ -732,7 +830,8 @@ const pollJobUntilProcessing = async _ref => {
732
830
  });
733
831
  attempts++;
734
832
  }
735
- throw new Error(`Job did not start processing after ${maxAttempts} attempts (${maxAttempts * pollingInterval / 1000}s)`);
833
+ const totalTimeSeconds = maxAttempts * pollingInterval / 1000;
834
+ throw new PollingTimeoutError(maxAttempts, totalTimeSeconds);
736
835
  };
737
836
 
738
837
  const pollJobUntilValidated = async _ref => {
@@ -780,7 +879,8 @@ const pollJobUntilValidated = async _ref => {
780
879
  });
781
880
  attempts++;
782
881
  }
783
- throw new Error(`Job validation timeout after ${maxAttempts} attempts (${maxAttempts * pollingInterval / 1000}s)`);
882
+ const totalTimeSeconds = maxAttempts * pollingInterval / 1000;
883
+ throw new PollingTimeoutError(maxAttempts, totalTimeSeconds);
784
884
  };
785
885
 
786
886
  /**
@@ -806,6 +906,13 @@ function formatQueryString() {
806
906
  return queryString.toString() ? `?${queryString.toString()}` : '';
807
907
  }
808
908
 
909
+ const OPERATION_RESOURCE_TYPES = ['product-delete', 'product-unpublish'];
910
+ function pluralizeResourceType(resourceType) {
911
+ if (_includesInstanceProperty__default["default"](OPERATION_RESOURCE_TYPES).call(OPERATION_RESOURCE_TYPES, resourceType)) {
912
+ return resourceType;
913
+ }
914
+ return pluralize.plural(resourceType);
915
+ }
809
916
  function getImportContainersURL(_ref) {
810
917
  let projectKey = _ref.projectKey,
811
918
  queryParams = _ref.queryParams;
@@ -865,7 +972,7 @@ function getFileImportJobsURL(_ref1) {
865
972
  let projectKey = _ref1.projectKey,
866
973
  resourceType = _ref1.resourceType,
867
974
  importContainerKey = _ref1.importContainerKey;
868
- return `/${projectKey}/${pluralize.plural(toImportApiResourceType(resourceType))}/import-containers/${importContainerKey}/file-import-jobs`;
975
+ return `/${projectKey}/${pluralizeResourceType(toImportApiResourceType(resourceType))}/import-containers/${importContainerKey}/file-import-jobs`;
869
976
  }
870
977
  function getFileImportJobByIdURL(_ref10) {
871
978
  let projectKey = _ref10.projectKey,
@@ -884,7 +991,7 @@ function getFileImportJobProcessURL(_ref12) {
884
991
  resourceType = _ref12.resourceType,
885
992
  importContainerKey = _ref12.importContainerKey,
886
993
  jobId = _ref12.jobId;
887
- return `/${projectKey}/${pluralize.plural(toImportApiResourceType(resourceType))}/import-containers/${importContainerKey}/file-import-jobs/${jobId}/process`;
994
+ return `/${projectKey}/${pluralizeResourceType(toImportApiResourceType(resourceType))}/import-containers/${importContainerKey}/file-import-jobs/${jobId}/process`;
888
995
  }
889
996
  function getFileImportJobDeleteURL(_ref13) {
890
997
  let projectKey = _ref13.projectKey,
@@ -943,11 +1050,13 @@ function createFileImportJob(_ref) {
943
1050
  payload = _ref.payload,
944
1051
  _ref$autoProcess = _ref.autoProcess,
945
1052
  autoProcess = _ref$autoProcess === void 0 ? false : _ref$autoProcess,
1053
+ operationType = _ref.operationType,
946
1054
  onProgress = _ref.onProgress,
947
1055
  abortSignal = _ref.abortSignal;
1056
+ const urlResourceType = operationType ? `${resourceType}-${operationType}` : resourceType;
948
1057
  const url = getFileImportJobsURL({
949
1058
  projectKey,
950
- resourceType,
1059
+ resourceType: urlResourceType,
951
1060
  importContainerKey
952
1061
  });
953
1062
  if ('fileType' in payload) {
@@ -1045,15 +1154,16 @@ async function processFileImportJob(_ref4) {
1045
1154
  resourceType = _ref4.resourceType,
1046
1155
  importContainerKey = _ref4.importContainerKey,
1047
1156
  jobId = _ref4.jobId,
1048
- action = _ref4.action;
1157
+ operationType = _ref4.operationType;
1158
+ const urlResourceType = operationType ? `${resourceType}-${operationType}` : resourceType;
1049
1159
  const url = getFileImportJobProcessURL({
1050
1160
  projectKey,
1051
- resourceType,
1161
+ resourceType: urlResourceType,
1052
1162
  importContainerKey,
1053
1163
  jobId
1054
1164
  });
1055
- const payload = action ? {
1056
- action
1165
+ const payload = operationType ? {
1166
+ action: operationType
1057
1167
  } : {};
1058
1168
  const response = await fetcher({
1059
1169
  url,
@@ -1390,7 +1500,6 @@ async function processUploadedFile(_ref) {
1390
1500
  importContainerKey = _ref.importContainerKey,
1391
1501
  resourceType = _ref.resourceType,
1392
1502
  action = _ref.action;
1393
- // For delete operations with action (like 'delete') -> use different URL and payload structure
1394
1503
  const uri = action ? getImportContainerTasksURL({
1395
1504
  projectKey,
1396
1505
  importContainerKey
@@ -2890,6 +2999,7 @@ const useFileImportJobUpload = _ref => {
2890
2999
  file: config.file
2891
3000
  },
2892
3001
  autoProcess: config.autoProcess,
3002
+ operationType: config.operationType,
2893
3003
  onProgress: uploadProgress => {
2894
3004
  setProgress(uploadProgress);
2895
3005
  config.onProgress?.(uploadProgress);
@@ -3079,6 +3189,7 @@ const useFileUpload = _ref2 => {
3079
3189
  resourceType: config.resourceType,
3080
3190
  settings: config.settings,
3081
3191
  autoProcess: config.autoProcess,
3192
+ operationType: config.operationType,
3082
3193
  abortSignal: config.abortSignal,
3083
3194
  onSuccess: async (jobId, containerKey) => {
3084
3195
  if (config.skipValidationPolling) {
@@ -3251,6 +3362,7 @@ exports.DELIMITERS = DELIMITERS;
3251
3362
  exports.DisabledDropArea = DisabledDropArea;
3252
3363
  exports.DropAreaWrapper = DropAreaWrapper;
3253
3364
  exports.EnabledDropArea = EnabledDropArea;
3365
+ exports.ErrorCode = ErrorCode;
3254
3366
  exports.FILE_IMPORT_JOB_POLLING_INTERVAL = FILE_IMPORT_JOB_POLLING_INTERVAL;
3255
3367
  exports.FileDropArea = FileDropArea;
3256
3368
  exports.FileDroppedArea = FileDroppedArea;
@@ -3267,7 +3379,9 @@ exports.InfoBox = InfoBox;
3267
3379
  exports.InvalidResponseError = InvalidResponseError;
3268
3380
  exports.LockIcon = LockIcon;
3269
3381
  exports.NoResourcesToExportError = NoResourcesToExportError;
3382
+ exports.OperationsError = OperationsError;
3270
3383
  exports.PollingAbortedError = PollingAbortedError;
3384
+ exports.PollingTimeoutError = PollingTimeoutError;
3271
3385
  exports.ProjectKeyNotAvailableError = ProjectKeyNotAvailableError;
3272
3386
  exports.QueryPredicateError = QueryPredicateError;
3273
3387
  exports.RESOURCE_TYPE_DOCUMENTATION_LINKS = RESOURCE_TYPE_DOCUMENTATION_LINKS;
@@ -3365,6 +3479,7 @@ exports.invalidFileImportJobValidated = invalidFileImportJobValidated;
3365
3479
  exports.invalidFileUploadResponse = invalidFileUploadResponse;
3366
3480
  exports.isAbortError = isAbortError;
3367
3481
  exports.isError = isError;
3482
+ exports.isHttpError = isHttpError;
3368
3483
  exports.isImportJobInitializing = isImportJobInitializing;
3369
3484
  exports.isImportJobProcessing = isImportJobProcessing;
3370
3485
  exports.isImportJobQueued = isImportJobQueued;
@@ -3372,7 +3487,12 @@ exports.isImportJobReady = isImportJobReady;
3372
3487
  exports.isImportJobRejected = isImportJobRejected;
3373
3488
  exports.isImportJobTerminal = isImportJobTerminal;
3374
3489
  exports.isImportJobValidated = isImportJobValidated;
3490
+ exports.isNetworkError = isNetworkError;
3491
+ exports.isOperationsError = isOperationsError;
3492
+ exports.isPollingAbortedError = isPollingAbortedError;
3493
+ exports.isPollingTimeoutError = isPollingTimeoutError;
3375
3494
  exports.isResourceType = isResourceType;
3495
+ exports.isRetryableError = isRetryableError;
3376
3496
  exports.listFileImportJobs = listFileImportJobs;
3377
3497
  exports.manualImports = manualImports;
3378
3498
  exports.mapFileUploadErrorsToUploadFileErrorRows = mapFileUploadErrorsToUploadFileErrorRows;