@datocms/rest-client-utils 0.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.
Files changed (80) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/ApiError.js +138 -0
  4. package/dist/cjs/ApiError.js.map +1 -0
  5. package/dist/cjs/CancelablePromise.js +53 -0
  6. package/dist/cjs/CancelablePromise.js.map +1 -0
  7. package/dist/cjs/deserialize.js +57 -0
  8. package/dist/cjs/deserialize.js.map +1 -0
  9. package/dist/cjs/index.js +26 -0
  10. package/dist/cjs/index.js.map +1 -0
  11. package/dist/cjs/internalTypes.js +3 -0
  12. package/dist/cjs/internalTypes.js.map +1 -0
  13. package/dist/cjs/pollJobResult.js +75 -0
  14. package/dist/cjs/pollJobResult.js.map +1 -0
  15. package/dist/cjs/rawPageIterator.js +152 -0
  16. package/dist/cjs/rawPageIterator.js.map +1 -0
  17. package/dist/cjs/request.js +283 -0
  18. package/dist/cjs/request.js.map +1 -0
  19. package/dist/cjs/serialize.js +142 -0
  20. package/dist/cjs/serialize.js.map +1 -0
  21. package/dist/cjs/toId.js +8 -0
  22. package/dist/cjs/toId.js.map +1 -0
  23. package/dist/cjs/wait.js +10 -0
  24. package/dist/cjs/wait.js.map +1 -0
  25. package/dist/esm/ApiError.d.ts +34 -0
  26. package/dist/esm/ApiError.js +135 -0
  27. package/dist/esm/ApiError.js.map +1 -0
  28. package/dist/esm/CancelablePromise.d.ts +7 -0
  29. package/dist/esm/CancelablePromise.js +49 -0
  30. package/dist/esm/CancelablePromise.js.map +1 -0
  31. package/dist/esm/deserialize.d.ts +10 -0
  32. package/dist/esm/deserialize.js +52 -0
  33. package/dist/esm/deserialize.js.map +1 -0
  34. package/dist/esm/index.d.ts +9 -0
  35. package/dist/esm/index.js +11 -0
  36. package/dist/esm/index.js.map +1 -0
  37. package/dist/esm/internalTypes.d.ts +8 -0
  38. package/dist/esm/internalTypes.js +2 -0
  39. package/dist/esm/internalTypes.js.map +1 -0
  40. package/dist/esm/pollJobResult.d.ts +2 -0
  41. package/dist/esm/pollJobResult.js +71 -0
  42. package/dist/esm/pollJobResult.js.map +1 -0
  43. package/dist/esm/rawPageIterator.d.ts +19 -0
  44. package/dist/esm/rawPageIterator.js +148 -0
  45. package/dist/esm/rawPageIterator.js.map +1 -0
  46. package/dist/esm/request.d.ts +28 -0
  47. package/dist/esm/request.js +276 -0
  48. package/dist/esm/request.js.map +1 -0
  49. package/dist/esm/serialize.d.ts +22 -0
  50. package/dist/esm/serialize.js +138 -0
  51. package/dist/esm/serialize.js.map +1 -0
  52. package/dist/esm/toId.d.ts +3 -0
  53. package/dist/esm/toId.js +4 -0
  54. package/dist/esm/toId.js.map +1 -0
  55. package/dist/esm/wait.d.ts +1 -0
  56. package/dist/esm/wait.js +6 -0
  57. package/dist/esm/wait.js.map +1 -0
  58. package/dist/types/ApiError.d.ts +34 -0
  59. package/dist/types/CancelablePromise.d.ts +7 -0
  60. package/dist/types/deserialize.d.ts +10 -0
  61. package/dist/types/index.d.ts +9 -0
  62. package/dist/types/internalTypes.d.ts +8 -0
  63. package/dist/types/pollJobResult.d.ts +2 -0
  64. package/dist/types/rawPageIterator.d.ts +19 -0
  65. package/dist/types/request.d.ts +28 -0
  66. package/dist/types/serialize.d.ts +22 -0
  67. package/dist/types/toId.d.ts +3 -0
  68. package/dist/types/wait.d.ts +1 -0
  69. package/package.json +44 -0
  70. package/src/ApiError.ts +167 -0
  71. package/src/CancelablePromise.ts +41 -0
  72. package/src/deserialize.ts +52 -0
  73. package/src/index.ts +11 -0
  74. package/src/internalTypes.ts +8 -0
  75. package/src/pollJobResult.ts +24 -0
  76. package/src/rawPageIterator.ts +66 -0
  77. package/src/request.ts +279 -0
  78. package/src/serialize.ts +115 -0
  79. package/src/toId.ts +3 -0
  80. package/src/wait.ts +5 -0
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __values = (this && this.__values) || function(o) {
50
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
51
+ if (m) return m.call(o);
52
+ if (o && typeof o.length === "number") return {
53
+ next: function () {
54
+ if (o && i >= o.length) o = void 0;
55
+ return { value: o && o[i++], done: !o };
56
+ }
57
+ };
58
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
59
+ };
60
+ var __read = (this && this.__read) || function (o, n) {
61
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
62
+ if (!m) return o;
63
+ var i = m.call(o), r, ar = [], e;
64
+ try {
65
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
66
+ }
67
+ catch (error) { e = { error: error }; }
68
+ finally {
69
+ try {
70
+ if (r && !r.done && (m = i["return"])) m.call(i);
71
+ }
72
+ finally { if (e) throw e.error; }
73
+ }
74
+ return ar;
75
+ };
76
+ var __importDefault = (this && this.__importDefault) || function (mod) {
77
+ return (mod && mod.__esModule) ? mod : { "default": mod };
78
+ };
79
+ Object.defineProperty(exports, "__esModule", { value: true });
80
+ exports.request = exports.LogLevel = void 0;
81
+ var qs_1 = __importDefault(require("qs"));
82
+ var cross_fetch_1 = __importDefault(require("cross-fetch"));
83
+ var ApiError_1 = require("./ApiError");
84
+ var LogLevel;
85
+ (function (LogLevel) {
86
+ /** No logging */
87
+ LogLevel[LogLevel["NONE"] = 0] = "NONE";
88
+ /** Logs HTTP requests (method, URL) and responses (status) */
89
+ LogLevel[LogLevel["BASIC"] = 1] = "BASIC";
90
+ /** Logs HTTP requests (method, URL, body) and responses (status, body) */
91
+ LogLevel[LogLevel["BODY"] = 2] = "BODY";
92
+ /** Logs HTTP requests (method, URL, headers, body) and responses (status, headers, body) */
93
+ LogLevel[LogLevel["BODY_AND_HEADERS"] = 3] = "BODY_AND_HEADERS";
94
+ })(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
95
+ function headersToObject(headers) {
96
+ var result = {};
97
+ headers.forEach(function (value, key) {
98
+ result[key] = value;
99
+ });
100
+ return result;
101
+ }
102
+ function buildApiErrorInitObject(method, url, requestHeaders, requestBody, response, responseBody, preCallStack) {
103
+ return {
104
+ request: {
105
+ url: url,
106
+ method: method,
107
+ headers: requestHeaders,
108
+ body: requestBody,
109
+ },
110
+ response: {
111
+ status: response.status,
112
+ statusText: response.statusText,
113
+ headers: headersToObject(response.headers),
114
+ body: responseBody,
115
+ },
116
+ preCallStack: preCallStack,
117
+ };
118
+ }
119
+ function buildApiErrorInitObjectFromJobResult(method, url, requestHeaders, requestBody, responseStatus, responseBody, preCallStack) {
120
+ return {
121
+ request: {
122
+ url: url,
123
+ method: method,
124
+ headers: requestHeaders,
125
+ body: requestBody,
126
+ },
127
+ response: {
128
+ status: responseStatus,
129
+ statusText: 'N/A',
130
+ headers: {},
131
+ body: responseBody,
132
+ },
133
+ preCallStack: preCallStack,
134
+ };
135
+ }
136
+ function wait(time) {
137
+ return new Promise(function (resolve) {
138
+ setTimeout(resolve, time);
139
+ });
140
+ }
141
+ function isErrorWithCode(error) {
142
+ return typeof error === 'object' && !!error && 'code' in error;
143
+ }
144
+ var requestCount = 1;
145
+ function request(options) {
146
+ return __awaiter(this, void 0, void 0, function () {
147
+ var requestId, preCallStack, userAgent, retryCount, logLevel, autoRetry, headers, baseUrl, body, queryString, url, _a, _b, _c, key, value, response_1, waitTimeInSecs, responseBody, _d, jobResult, error, error_1;
148
+ var e_1, _e;
149
+ return __generator(this, function (_f) {
150
+ switch (_f.label) {
151
+ case 0:
152
+ requestId = requestCount;
153
+ requestCount += 1;
154
+ preCallStack = options.preCallStack;
155
+ userAgent = options.userAgent || "@datocms/rest-client-utils";
156
+ retryCount = options.retryCount || 1;
157
+ logLevel = options.logLevel || LogLevel.NONE;
158
+ autoRetry = 'autoRetry' in options ? options.autoRetry : true;
159
+ headers = __assign({ 'content-type': 'application/json', accept: 'application/json', authorization: "Bearer ".concat(options.apiToken), 'user-agent': userAgent }, (options.extraHeaders || {}));
160
+ baseUrl = options.baseUrl.replace(/\/$/, '');
161
+ body = options.body ? JSON.stringify(options.body, null, 2) : undefined;
162
+ queryString = options.queryParams && Object.keys(options.queryParams).length > 0
163
+ ? "?".concat(qs_1.default.stringify(options.queryParams, { arrayFormat: 'brackets' }))
164
+ : '';
165
+ url = "".concat(baseUrl).concat(options.url).concat(queryString);
166
+ if (logLevel >= LogLevel.BASIC) {
167
+ console.log("[".concat(requestId, "] ").concat(options.method, " ").concat(url));
168
+ if (logLevel >= LogLevel.BODY_AND_HEADERS) {
169
+ try {
170
+ for (_a = __values(Object.entries(headers || {})), _b = _a.next(); !_b.done; _b = _a.next()) {
171
+ _c = __read(_b.value, 2), key = _c[0], value = _c[1];
172
+ console.log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
173
+ }
174
+ }
175
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
176
+ finally {
177
+ try {
178
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
179
+ }
180
+ finally { if (e_1) throw e_1.error; }
181
+ }
182
+ }
183
+ if (logLevel >= LogLevel.BODY && body) {
184
+ console.log("[".concat(requestId, "] ").concat(body));
185
+ }
186
+ }
187
+ _f.label = 1;
188
+ case 1:
189
+ _f.trys.push([1, 12, , 15]);
190
+ return [4 /*yield*/, (0, cross_fetch_1.default)(url, {
191
+ method: options.method,
192
+ headers: headers,
193
+ body: body,
194
+ })];
195
+ case 2:
196
+ response_1 = _f.sent();
197
+ if (!(response_1.status === 429)) return [3 /*break*/, 4];
198
+ if (!autoRetry) {
199
+ throw new ApiError_1.ApiError(buildApiErrorInitObject(options.method, url, headers, options.body, response_1, undefined, preCallStack));
200
+ }
201
+ waitTimeInSecs = response_1.headers.has('X-RateLimit-Reset')
202
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
203
+ parseInt(response_1.headers.get('X-RateLimit-Reset'), 10)
204
+ : retryCount;
205
+ if (logLevel >= LogLevel.BASIC) {
206
+ console.log("[".concat(requestId, "] Rate limit exceeded, waiting ").concat(waitTimeInSecs, " seconds..."));
207
+ }
208
+ return [4 /*yield*/, wait(waitTimeInSecs * 1000)];
209
+ case 3:
210
+ _f.sent();
211
+ return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
212
+ case 4:
213
+ if (logLevel >= LogLevel.BASIC) {
214
+ console.log("[".concat(requestId, "] Status: ").concat(response_1.status, " (").concat(response_1.statusText, ")"));
215
+ if (logLevel >= LogLevel.BODY_AND_HEADERS) {
216
+ [
217
+ 'content-type',
218
+ 'x-api-version',
219
+ 'x-environment',
220
+ 'x-queue-time',
221
+ 'x-ratelimit-remaining',
222
+ ].forEach(function (key) {
223
+ var value = response_1.headers.get(key);
224
+ if (value) {
225
+ console.log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
226
+ }
227
+ });
228
+ }
229
+ }
230
+ if (!(response_1.status === 204)) return [3 /*break*/, 5];
231
+ _d = undefined;
232
+ return [3 /*break*/, 7];
233
+ case 5: return [4 /*yield*/, response_1.json()];
234
+ case 6:
235
+ _d = _f.sent();
236
+ _f.label = 7;
237
+ case 7:
238
+ responseBody = _d;
239
+ if (logLevel >= LogLevel.BODY && responseBody) {
240
+ console.log("[".concat(requestId, "] ").concat(JSON.stringify(responseBody, null, 2)));
241
+ }
242
+ if (!(response_1.status === 202)) return [3 /*break*/, 9];
243
+ return [4 /*yield*/, options.fetchJobResult(responseBody.data.id)];
244
+ case 8:
245
+ jobResult = _f.sent();
246
+ if (jobResult.status < 200 || jobResult.status >= 300) {
247
+ throw new ApiError_1.ApiError(buildApiErrorInitObjectFromJobResult(options.method, url, headers, options.body, jobResult.status, jobResult.payload, preCallStack));
248
+ }
249
+ responseBody = jobResult.payload;
250
+ _f.label = 9;
251
+ case 9:
252
+ if (response_1.status >= 200 && response_1.status < 300) {
253
+ return [2 /*return*/, responseBody];
254
+ }
255
+ error = new ApiError_1.ApiError(buildApiErrorInitObject(options.method, url, headers, options.body, response_1, responseBody, preCallStack));
256
+ if (!(autoRetry &&
257
+ error.findErrorWithCode('BATCH_DATA_VALIDATION_IN_PROGRESS'))) return [3 /*break*/, 11];
258
+ if (logLevel >= LogLevel.BASIC) {
259
+ console.log("[".concat(requestId, "] Data validation in progress, waiting ").concat(retryCount, " seconds..."));
260
+ }
261
+ return [4 /*yield*/, wait(retryCount * 1000)];
262
+ case 10:
263
+ _f.sent();
264
+ return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
265
+ case 11: throw error;
266
+ case 12:
267
+ error_1 = _f.sent();
268
+ if (!(isErrorWithCode(error_1) && error_1.code.includes('ETIMEDOUT'))) return [3 /*break*/, 14];
269
+ if (logLevel >= LogLevel.BASIC) {
270
+ console.log("[".concat(requestId, "] Error ").concat(error_1.code, ", waiting ").concat(retryCount, " seconds..."));
271
+ }
272
+ return [4 /*yield*/, wait(retryCount * 1000)];
273
+ case 13:
274
+ _f.sent();
275
+ return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
276
+ case 14: throw error_1;
277
+ case 15: return [2 /*return*/];
278
+ }
279
+ });
280
+ });
281
+ }
282
+ exports.request = request;
283
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __read = (this && this.__read) || function (o, n) {
25
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
26
+ if (!m) return o;
27
+ var i = m.call(o), r, ar = [], e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ }
31
+ catch (error) { e = { error: error }; }
32
+ finally {
33
+ try {
34
+ if (r && !r.done && (m = i["return"])) m.call(i);
35
+ }
36
+ finally { if (e) throw e.error; }
37
+ }
38
+ return ar;
39
+ };
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.serializeRequestBody = void 0;
42
+ function isRel(object) {
43
+ return (typeof object === 'object' && !!object && 'id' in object && 'type' in object);
44
+ }
45
+ function isRelArray(object) {
46
+ return Array.isArray(object) && object.every(isRel);
47
+ }
48
+ function serializeRequestBody(body, options) {
49
+ if (typeof body !== 'object' || !body) {
50
+ throw new Error('Invalid body!');
51
+ }
52
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
+ var _a = body, id = _a.id, type = _a.type, meta = _a.meta, otherProperties = __rest(_a, ["id", "type", "meta"]);
54
+ var attributes = {};
55
+ var relationships = {};
56
+ if (options.attributes === '*') {
57
+ Object.entries(otherProperties).forEach(function (_a) {
58
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
59
+ if (options.relationships.includes(key)) {
60
+ if (isRel(value)) {
61
+ var id_1 = value.id, type_1 = value.type;
62
+ relationships[key] = { data: { id: id_1, type: type_1 } };
63
+ }
64
+ else if (isRelArray(value)) {
65
+ relationships[key] = {
66
+ data: value.map(function (_a) {
67
+ var id = _a.id, type = _a.type;
68
+ return ({ id: id, type: type });
69
+ }),
70
+ };
71
+ }
72
+ else {
73
+ relationships[key] = {
74
+ data: null,
75
+ };
76
+ }
77
+ }
78
+ else {
79
+ attributes[key] = value;
80
+ }
81
+ });
82
+ }
83
+ else if (options.relationships === '*') {
84
+ Object.entries(otherProperties).forEach(function (_a) {
85
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
86
+ if (options.attributes.includes(key)) {
87
+ attributes[key] = value;
88
+ }
89
+ else {
90
+ if (isRel(value)) {
91
+ var id_2 = value.id, type_2 = value.type;
92
+ relationships[key] = { data: { id: id_2, type: type_2 } };
93
+ }
94
+ else if (isRelArray(value)) {
95
+ relationships[key] = {
96
+ data: value.map(function (_a) {
97
+ var id = _a.id, type = _a.type;
98
+ return ({ id: id, type: type });
99
+ }),
100
+ };
101
+ }
102
+ else {
103
+ relationships[key] = {
104
+ data: null,
105
+ };
106
+ }
107
+ }
108
+ });
109
+ }
110
+ else {
111
+ Object.entries(otherProperties).forEach(function (_a) {
112
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
113
+ if (options.attributes.includes(key)) {
114
+ attributes[key] = value;
115
+ }
116
+ else if (options.relationships.includes(key)) {
117
+ if (isRel(value)) {
118
+ var id_3 = value.id, type_3 = value.type;
119
+ relationships[key] = { data: { id: id_3, type: type_3 } };
120
+ }
121
+ else if (isRelArray(value)) {
122
+ relationships[key] = {
123
+ data: value.map(function (_a) {
124
+ var id = _a.id, type = _a.type;
125
+ return ({ id: id, type: type });
126
+ }),
127
+ };
128
+ }
129
+ else {
130
+ relationships[key] = {
131
+ data: null,
132
+ };
133
+ }
134
+ }
135
+ });
136
+ }
137
+ return {
138
+ data: __assign(__assign(__assign(__assign(__assign({}, (id || options.id ? { id: id || options.id } : {})), { type: type || options.type }), (Object.keys(attributes).length > 0 ? { attributes: attributes } : {})), (Object.keys(relationships).length > 0 ? { relationships: relationships } : {})), (meta ? { meta: meta } : {})),
139
+ };
140
+ }
141
+ exports.serializeRequestBody = serializeRequestBody;
142
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toId = void 0;
4
+ function toId(thing) {
5
+ return typeof thing === 'string' ? thing : thing.id;
6
+ }
7
+ exports.toId = toId;
8
+ //# sourceMappingURL=toId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toId.js","sourceRoot":"","sources":["../../src/toId.ts"],"names":[],"mappings":";;;AAAA,SAAgB,IAAI,CAAC,KAA8B;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACtD,CAAC;AAFD,oBAEC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wait = void 0;
4
+ function wait(time) {
5
+ return new Promise(function (resolve) {
6
+ setTimeout(resolve, time);
7
+ });
8
+ }
9
+ exports.wait = wait;
10
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/wait.ts"],"names":[],"mappings":";;;AAAA,SAAgB,IAAI,CAAC,IAAI;IACvB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;QACzB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAJD,oBAIC"}
@@ -0,0 +1,34 @@
1
+ export declare type ErrorEntity = {
2
+ id: string;
3
+ type: 'api_error';
4
+ attributes: {
5
+ code: string;
6
+ details: unknown;
7
+ };
8
+ };
9
+ export declare type ApiErrorRequest = {
10
+ url: string;
11
+ method: string;
12
+ headers: Record<string, string>;
13
+ body?: unknown;
14
+ };
15
+ export declare type ApiErrorResponse = {
16
+ status: number;
17
+ statusText: string;
18
+ headers: Record<string, string>;
19
+ body?: unknown;
20
+ };
21
+ export declare type ApiErrorInitObject = {
22
+ request: ApiErrorRequest;
23
+ response: ApiErrorResponse;
24
+ preCallStack?: string;
25
+ };
26
+ export declare class ApiError extends Error {
27
+ request: ApiErrorRequest;
28
+ response: ApiErrorResponse;
29
+ preCallStack?: string;
30
+ constructor(initObject: ApiErrorInitObject);
31
+ get errors(): ErrorEntity[];
32
+ findErrorWithCode(codeOrCodes: any): ErrorEntity | undefined;
33
+ get humanMessage(): string | null;
34
+ }
@@ -0,0 +1,135 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ function isErrorBody(body) {
17
+ if (typeof body !== 'object' || body === null || !('data' in body)) {
18
+ return false;
19
+ }
20
+ var bodyWithData = body;
21
+ if (!Array.isArray(bodyWithData.data)) {
22
+ return false;
23
+ }
24
+ var bodyWithDataList = bodyWithData;
25
+ if (bodyWithDataList.data.length === 0) {
26
+ return false;
27
+ }
28
+ var firstEl = bodyWithDataList.data[0];
29
+ if (typeof firstEl !== 'object' ||
30
+ firstEl === null ||
31
+ !('id' in firstEl) ||
32
+ !('type' in firstEl) ||
33
+ !('attributes' in firstEl) ||
34
+ firstEl.type !== 'api_error') {
35
+ return false;
36
+ }
37
+ return true;
38
+ }
39
+ var humanMessageForCode = {
40
+ BATCH_DATA_VALIDATION_IN_PROGRESS: "The schema of this model changed, we're re-running validations over every record in background. Please retry with this operation in a few seconds!",
41
+ INSUFFICIENT_PERMISSIONS: "Your role does not permit this action",
42
+ MAINTENANCE_MODE: "The project is currently in maintenance mode!",
43
+ DELETE_RESTRICTION: "Sorry, but you cannot delete this resource, as it's currently used/referenced elsewhere!",
44
+ INVALID_CREDENTIALS: "Credentials are incorrect!",
45
+ INVALID_EMAIL: "Email address is incorrect!",
46
+ INVALID_FORMAT: "The format of the parameters passed is incorrect, take a look at the details of the error to know what's wrong!",
47
+ ITEM_LOCKED: "The operation cannot be completed as some other user is currently editing this record!",
48
+ LINKED_FROM_PUBLISHED_ITEMS: "Couldn't unpublish the record, as some published records are linked to it!",
49
+ PLAN_UPGRADE_REQUIRED: "Cannot proceed, please upgrade plan!",
50
+ PUBLISHED_CHILDREN: "Couldn't unpublish the record, some children records are still published!",
51
+ REQUIRED_2FA_SETUP: "This project requires every user to turn on 2-factor authentication! Please go to your Dashboard and activate it! (https://dashboard.datocms.com/account/setup-2fa)",
52
+ REQUIRED_BY_ASSOCIATION: "Cannot delete the record, as it's required by other records:",
53
+ STALE_ITEM_VERSION: "Someone else made a change while you were editing this record, please refresh the page!",
54
+ TITLE_ALREADY_PRESENT: "There can only be one Title field per model",
55
+ UNPUBLISHED_LINK: "Couldn't publish the record, as it links some unpublished records!",
56
+ UNPUBLISHED_PARENT: "Couldn't publish the record, as the parent record is not published!",
57
+ UPLOAD_IS_CURRENTLY_IN_USE: "Couldn't delete this asset, as it's currently used by some records!",
58
+ UPLOAD_NOT_PASSING_FIELD_VALIDATIONS: "Couldn't update this asset since some records are failing to pass the validations!",
59
+ };
60
+ var humanMessageForPlanUpgradeLimit = {
61
+ build_triggers: "You've reached the maximum number of build triggers your plan allows",
62
+ sandbox_environments: "You've reached the maximum number of environments your plan allows",
63
+ item_types: "You've reached the maximum number of models your plan allows to create",
64
+ items: "You've reached the maximum number of records your plan allows to create",
65
+ locales: "You've reached the maximum number of locales your plan allows",
66
+ mux_encoding_seconds: "You've reached the maximum video encoding limits of your plan",
67
+ otp: "Two-factor authentication cannot be on the current plan",
68
+ plugins: "You've reached the maximum number of plugins your plan allows",
69
+ roles: "You've reached the maximum number of roles your plan allows to create",
70
+ uploadable_bytes: "You've reached the file storage limits of your plan",
71
+ users: "You've reached the maximum number of collaborators your plan allows to invite to the project",
72
+ access_tokens: "You've reached the maximum number of API tokens your plan allows to create",
73
+ };
74
+ var ApiError = /** @class */ (function (_super) {
75
+ __extends(ApiError, _super);
76
+ function ApiError(initObject) {
77
+ var _newTarget = this.constructor;
78
+ var _this = _super.call(this, 'API Error!') || this;
79
+ Object.setPrototypeOf(_this, _newTarget.prototype);
80
+ if ('captureStackTrace' in Error) {
81
+ Error.captureStackTrace(_this, ApiError);
82
+ }
83
+ else {
84
+ _this.stack = new Error().stack;
85
+ }
86
+ _this.request = initObject.request;
87
+ _this.response = initObject.response;
88
+ _this.preCallStack = initObject.preCallStack;
89
+ var message = "".concat(initObject.request.method, " ").concat(initObject.request.url, ": ").concat(_this.response.status, " ").concat(_this.response.statusText);
90
+ if (_this.errors.length > 0) {
91
+ message += "\n\n".concat(JSON.stringify(_this.errors, null, 2));
92
+ }
93
+ _this.message = message;
94
+ if (_this.preCallStack) {
95
+ _this.stack += "\nCaused By:\n".concat(_this.preCallStack);
96
+ }
97
+ return _this;
98
+ }
99
+ Object.defineProperty(ApiError.prototype, "errors", {
100
+ get: function () {
101
+ if (!isErrorBody(this.response.body)) {
102
+ return [];
103
+ }
104
+ return this.response.body.data;
105
+ },
106
+ enumerable: false,
107
+ configurable: true
108
+ });
109
+ ApiError.prototype.findErrorWithCode = function (codeOrCodes) {
110
+ var codes = Array.isArray(codeOrCodes) ? codeOrCodes : [codeOrCodes];
111
+ return this.errors.find(function (error) { return codes.includes(error.attributes.code); });
112
+ };
113
+ Object.defineProperty(ApiError.prototype, "humanMessage", {
114
+ get: function () {
115
+ var _this = this;
116
+ var planUpgradeError = this.findErrorWithCode('PLAN_UPGRADE_REQUIRED');
117
+ if (planUpgradeError) {
118
+ var limit = planUpgradeError.attributes.details.limit;
119
+ return "".concat(humanMessageForPlanUpgradeLimit[limit], ". Please head over to your account dashboard (https://dashboard.datocms.com/) to upgrade the plan or, if no publicly available plan suits your needs, contact our Sales team (https://www.datocms.com/contact) to get a custom quote!");
120
+ }
121
+ var errors = Object.keys(humanMessageForCode)
122
+ .filter(function (code) { return _this.findErrorWithCode(code); })
123
+ .map(function (code) { return humanMessageForCode[code]; });
124
+ if (errors.length === 0) {
125
+ return null;
126
+ }
127
+ return errors.join('\n');
128
+ },
129
+ enumerable: false,
130
+ configurable: true
131
+ });
132
+ return ApiError;
133
+ }(Error));
134
+ export { ApiError };
135
+ //# sourceMappingURL=ApiError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiError.js","sourceRoot":"","sources":["../../src/ApiError.ts"],"names":[],"mappings":"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"}