@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,276 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (_) try {
28
+ 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;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ var __values = (this && this.__values) || function(o) {
49
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
50
+ if (m) return m.call(o);
51
+ if (o && typeof o.length === "number") return {
52
+ next: function () {
53
+ if (o && i >= o.length) o = void 0;
54
+ return { value: o && o[i++], done: !o };
55
+ }
56
+ };
57
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
58
+ };
59
+ var __read = (this && this.__read) || function (o, n) {
60
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
61
+ if (!m) return o;
62
+ var i = m.call(o), r, ar = [], e;
63
+ try {
64
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
65
+ }
66
+ catch (error) { e = { error: error }; }
67
+ finally {
68
+ try {
69
+ if (r && !r.done && (m = i["return"])) m.call(i);
70
+ }
71
+ finally { if (e) throw e.error; }
72
+ }
73
+ return ar;
74
+ };
75
+ import qs from 'qs';
76
+ import fetch from 'cross-fetch';
77
+ import { ApiError } from './ApiError';
78
+ export var LogLevel;
79
+ (function (LogLevel) {
80
+ /** No logging */
81
+ LogLevel[LogLevel["NONE"] = 0] = "NONE";
82
+ /** Logs HTTP requests (method, URL) and responses (status) */
83
+ LogLevel[LogLevel["BASIC"] = 1] = "BASIC";
84
+ /** Logs HTTP requests (method, URL, body) and responses (status, body) */
85
+ LogLevel[LogLevel["BODY"] = 2] = "BODY";
86
+ /** Logs HTTP requests (method, URL, headers, body) and responses (status, headers, body) */
87
+ LogLevel[LogLevel["BODY_AND_HEADERS"] = 3] = "BODY_AND_HEADERS";
88
+ })(LogLevel || (LogLevel = {}));
89
+ function headersToObject(headers) {
90
+ var result = {};
91
+ headers.forEach(function (value, key) {
92
+ result[key] = value;
93
+ });
94
+ return result;
95
+ }
96
+ function buildApiErrorInitObject(method, url, requestHeaders, requestBody, response, responseBody, preCallStack) {
97
+ return {
98
+ request: {
99
+ url: url,
100
+ method: method,
101
+ headers: requestHeaders,
102
+ body: requestBody,
103
+ },
104
+ response: {
105
+ status: response.status,
106
+ statusText: response.statusText,
107
+ headers: headersToObject(response.headers),
108
+ body: responseBody,
109
+ },
110
+ preCallStack: preCallStack,
111
+ };
112
+ }
113
+ function buildApiErrorInitObjectFromJobResult(method, url, requestHeaders, requestBody, responseStatus, responseBody, preCallStack) {
114
+ return {
115
+ request: {
116
+ url: url,
117
+ method: method,
118
+ headers: requestHeaders,
119
+ body: requestBody,
120
+ },
121
+ response: {
122
+ status: responseStatus,
123
+ statusText: 'N/A',
124
+ headers: {},
125
+ body: responseBody,
126
+ },
127
+ preCallStack: preCallStack,
128
+ };
129
+ }
130
+ function wait(time) {
131
+ return new Promise(function (resolve) {
132
+ setTimeout(resolve, time);
133
+ });
134
+ }
135
+ function isErrorWithCode(error) {
136
+ return typeof error === 'object' && !!error && 'code' in error;
137
+ }
138
+ var requestCount = 1;
139
+ export function request(options) {
140
+ return __awaiter(this, void 0, void 0, function () {
141
+ 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;
142
+ var e_1, _e;
143
+ return __generator(this, function (_f) {
144
+ switch (_f.label) {
145
+ case 0:
146
+ requestId = requestCount;
147
+ requestCount += 1;
148
+ preCallStack = options.preCallStack;
149
+ userAgent = options.userAgent || "@datocms/rest-client-utils";
150
+ retryCount = options.retryCount || 1;
151
+ logLevel = options.logLevel || LogLevel.NONE;
152
+ autoRetry = 'autoRetry' in options ? options.autoRetry : true;
153
+ headers = __assign({ 'content-type': 'application/json', accept: 'application/json', authorization: "Bearer ".concat(options.apiToken), 'user-agent': userAgent }, (options.extraHeaders || {}));
154
+ baseUrl = options.baseUrl.replace(/\/$/, '');
155
+ body = options.body ? JSON.stringify(options.body, null, 2) : undefined;
156
+ queryString = options.queryParams && Object.keys(options.queryParams).length > 0
157
+ ? "?".concat(qs.stringify(options.queryParams, { arrayFormat: 'brackets' }))
158
+ : '';
159
+ url = "".concat(baseUrl).concat(options.url).concat(queryString);
160
+ if (logLevel >= LogLevel.BASIC) {
161
+ console.log("[".concat(requestId, "] ").concat(options.method, " ").concat(url));
162
+ if (logLevel >= LogLevel.BODY_AND_HEADERS) {
163
+ try {
164
+ for (_a = __values(Object.entries(headers || {})), _b = _a.next(); !_b.done; _b = _a.next()) {
165
+ _c = __read(_b.value, 2), key = _c[0], value = _c[1];
166
+ console.log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
167
+ }
168
+ }
169
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
170
+ finally {
171
+ try {
172
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
173
+ }
174
+ finally { if (e_1) throw e_1.error; }
175
+ }
176
+ }
177
+ if (logLevel >= LogLevel.BODY && body) {
178
+ console.log("[".concat(requestId, "] ").concat(body));
179
+ }
180
+ }
181
+ _f.label = 1;
182
+ case 1:
183
+ _f.trys.push([1, 12, , 15]);
184
+ return [4 /*yield*/, fetch(url, {
185
+ method: options.method,
186
+ headers: headers,
187
+ body: body,
188
+ })];
189
+ case 2:
190
+ response_1 = _f.sent();
191
+ if (!(response_1.status === 429)) return [3 /*break*/, 4];
192
+ if (!autoRetry) {
193
+ throw new ApiError(buildApiErrorInitObject(options.method, url, headers, options.body, response_1, undefined, preCallStack));
194
+ }
195
+ waitTimeInSecs = response_1.headers.has('X-RateLimit-Reset')
196
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
197
+ parseInt(response_1.headers.get('X-RateLimit-Reset'), 10)
198
+ : retryCount;
199
+ if (logLevel >= LogLevel.BASIC) {
200
+ console.log("[".concat(requestId, "] Rate limit exceeded, waiting ").concat(waitTimeInSecs, " seconds..."));
201
+ }
202
+ return [4 /*yield*/, wait(waitTimeInSecs * 1000)];
203
+ case 3:
204
+ _f.sent();
205
+ return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
206
+ case 4:
207
+ if (logLevel >= LogLevel.BASIC) {
208
+ console.log("[".concat(requestId, "] Status: ").concat(response_1.status, " (").concat(response_1.statusText, ")"));
209
+ if (logLevel >= LogLevel.BODY_AND_HEADERS) {
210
+ [
211
+ 'content-type',
212
+ 'x-api-version',
213
+ 'x-environment',
214
+ 'x-queue-time',
215
+ 'x-ratelimit-remaining',
216
+ ].forEach(function (key) {
217
+ var value = response_1.headers.get(key);
218
+ if (value) {
219
+ console.log("[".concat(requestId, "] ").concat(key, ": ").concat(value));
220
+ }
221
+ });
222
+ }
223
+ }
224
+ if (!(response_1.status === 204)) return [3 /*break*/, 5];
225
+ _d = undefined;
226
+ return [3 /*break*/, 7];
227
+ case 5: return [4 /*yield*/, response_1.json()];
228
+ case 6:
229
+ _d = _f.sent();
230
+ _f.label = 7;
231
+ case 7:
232
+ responseBody = _d;
233
+ if (logLevel >= LogLevel.BODY && responseBody) {
234
+ console.log("[".concat(requestId, "] ").concat(JSON.stringify(responseBody, null, 2)));
235
+ }
236
+ if (!(response_1.status === 202)) return [3 /*break*/, 9];
237
+ return [4 /*yield*/, options.fetchJobResult(responseBody.data.id)];
238
+ case 8:
239
+ jobResult = _f.sent();
240
+ if (jobResult.status < 200 || jobResult.status >= 300) {
241
+ throw new ApiError(buildApiErrorInitObjectFromJobResult(options.method, url, headers, options.body, jobResult.status, jobResult.payload, preCallStack));
242
+ }
243
+ responseBody = jobResult.payload;
244
+ _f.label = 9;
245
+ case 9:
246
+ if (response_1.status >= 200 && response_1.status < 300) {
247
+ return [2 /*return*/, responseBody];
248
+ }
249
+ error = new ApiError(buildApiErrorInitObject(options.method, url, headers, options.body, response_1, responseBody, preCallStack));
250
+ if (!(autoRetry &&
251
+ error.findErrorWithCode('BATCH_DATA_VALIDATION_IN_PROGRESS'))) return [3 /*break*/, 11];
252
+ if (logLevel >= LogLevel.BASIC) {
253
+ console.log("[".concat(requestId, "] Data validation in progress, waiting ").concat(retryCount, " seconds..."));
254
+ }
255
+ return [4 /*yield*/, wait(retryCount * 1000)];
256
+ case 10:
257
+ _f.sent();
258
+ return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
259
+ case 11: throw error;
260
+ case 12:
261
+ error_1 = _f.sent();
262
+ if (!(isErrorWithCode(error_1) && error_1.code.includes('ETIMEDOUT'))) return [3 /*break*/, 14];
263
+ if (logLevel >= LogLevel.BASIC) {
264
+ console.log("[".concat(requestId, "] Error ").concat(error_1.code, ", waiting ").concat(retryCount, " seconds..."));
265
+ }
266
+ return [4 /*yield*/, wait(retryCount * 1000)];
267
+ case 13:
268
+ _f.sent();
269
+ return [2 /*return*/, request(__assign(__assign({}, options), { retryCount: retryCount + 1 }))];
270
+ case 14: throw error_1;
271
+ case 15: return [2 /*return*/];
272
+ }
273
+ });
274
+ });
275
+ }
276
+ //# 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,22 @@
1
+ declare type Options = {
2
+ id?: string;
3
+ type: string;
4
+ attributes: '*';
5
+ relationships: string[];
6
+ } | {
7
+ id?: string;
8
+ type: string;
9
+ attributes: string[];
10
+ relationships: '*';
11
+ } | {
12
+ id?: string;
13
+ type: string;
14
+ attributes: string[];
15
+ relationships: string[];
16
+ };
17
+ export declare type Rel = {
18
+ id: string;
19
+ type: string;
20
+ };
21
+ export declare function serializeRequestBody<T>(body: unknown, options: Options): T;
22
+ export {};
@@ -0,0 +1,138 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ var __read = (this && this.__read) || function (o, n) {
24
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
25
+ if (!m) return o;
26
+ var i = m.call(o), r, ar = [], e;
27
+ try {
28
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
29
+ }
30
+ catch (error) { e = { error: error }; }
31
+ finally {
32
+ try {
33
+ if (r && !r.done && (m = i["return"])) m.call(i);
34
+ }
35
+ finally { if (e) throw e.error; }
36
+ }
37
+ return ar;
38
+ };
39
+ function isRel(object) {
40
+ return (typeof object === 'object' && !!object && 'id' in object && 'type' in object);
41
+ }
42
+ function isRelArray(object) {
43
+ return Array.isArray(object) && object.every(isRel);
44
+ }
45
+ export function serializeRequestBody(body, options) {
46
+ if (typeof body !== 'object' || !body) {
47
+ throw new Error('Invalid body!');
48
+ }
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ var _a = body, id = _a.id, type = _a.type, meta = _a.meta, otherProperties = __rest(_a, ["id", "type", "meta"]);
51
+ var attributes = {};
52
+ var relationships = {};
53
+ if (options.attributes === '*') {
54
+ Object.entries(otherProperties).forEach(function (_a) {
55
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
56
+ if (options.relationships.includes(key)) {
57
+ if (isRel(value)) {
58
+ var id_1 = value.id, type_1 = value.type;
59
+ relationships[key] = { data: { id: id_1, type: type_1 } };
60
+ }
61
+ else if (isRelArray(value)) {
62
+ relationships[key] = {
63
+ data: value.map(function (_a) {
64
+ var id = _a.id, type = _a.type;
65
+ return ({ id: id, type: type });
66
+ }),
67
+ };
68
+ }
69
+ else {
70
+ relationships[key] = {
71
+ data: null,
72
+ };
73
+ }
74
+ }
75
+ else {
76
+ attributes[key] = value;
77
+ }
78
+ });
79
+ }
80
+ else if (options.relationships === '*') {
81
+ Object.entries(otherProperties).forEach(function (_a) {
82
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
83
+ if (options.attributes.includes(key)) {
84
+ attributes[key] = value;
85
+ }
86
+ else {
87
+ if (isRel(value)) {
88
+ var id_2 = value.id, type_2 = value.type;
89
+ relationships[key] = { data: { id: id_2, type: type_2 } };
90
+ }
91
+ else if (isRelArray(value)) {
92
+ relationships[key] = {
93
+ data: value.map(function (_a) {
94
+ var id = _a.id, type = _a.type;
95
+ return ({ id: id, type: type });
96
+ }),
97
+ };
98
+ }
99
+ else {
100
+ relationships[key] = {
101
+ data: null,
102
+ };
103
+ }
104
+ }
105
+ });
106
+ }
107
+ else {
108
+ Object.entries(otherProperties).forEach(function (_a) {
109
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
110
+ if (options.attributes.includes(key)) {
111
+ attributes[key] = value;
112
+ }
113
+ else if (options.relationships.includes(key)) {
114
+ if (isRel(value)) {
115
+ var id_3 = value.id, type_3 = value.type;
116
+ relationships[key] = { data: { id: id_3, type: type_3 } };
117
+ }
118
+ else if (isRelArray(value)) {
119
+ relationships[key] = {
120
+ data: value.map(function (_a) {
121
+ var id = _a.id, type = _a.type;
122
+ return ({ id: id, type: type });
123
+ }),
124
+ };
125
+ }
126
+ else {
127
+ relationships[key] = {
128
+ data: null,
129
+ };
130
+ }
131
+ }
132
+ });
133
+ }
134
+ return {
135
+ 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 } : {})),
136
+ };
137
+ }
138
+ //# 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,3 @@
1
+ export declare function toId(thing: string | {
2
+ id: string;
3
+ }): string;
@@ -0,0 +1,4 @@
1
+ export function toId(thing) {
2
+ return typeof thing === 'string' ? thing : thing.id;
3
+ }
4
+ //# sourceMappingURL=toId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toId.js","sourceRoot":"","sources":["../../src/toId.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,KAA8B;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACtD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function wait(time: any): Promise<unknown>;
@@ -0,0 +1,6 @@
1
+ export function wait(time) {
2
+ return new Promise(function (resolve) {
3
+ setTimeout(resolve, time);
4
+ });
5
+ }
6
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/wait.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,IAAI;IACvB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;QACzB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -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,7 @@
1
+ export declare class CanceledPromiseError extends Error {
2
+ constructor();
3
+ }
4
+ export interface CancelablePromise<T> extends Promise<T> {
5
+ cancel(): void;
6
+ }
7
+ export declare function makeCancelablePromise<T>(promiseOrAsyncFn: Promise<T> | (() => Promise<T>), onCancel: () => void): CancelablePromise<T>;
@@ -0,0 +1,10 @@
1
+ declare type JsonApiEntity = {
2
+ id?: string;
3
+ type?: string;
4
+ attributes?: object;
5
+ relationships?: object;
6
+ meta?: object;
7
+ };
8
+ export declare function deserializeJsonEntity<S>({ id, type, attributes, relationships, meta, }: JsonApiEntity): S;
9
+ export declare function deserializeResponseBody<T>(body: unknown): T;
10
+ export {};
@@ -0,0 +1,9 @@
1
+ export * from './ApiError';
2
+ export * from './deserialize';
3
+ export * from './pollJobResult';
4
+ export * from './rawPageIterator';
5
+ export * from './request';
6
+ export * from './serialize';
7
+ export * from './CancelablePromise';
8
+ export * from './toId';
9
+ export * from './wait';
@@ -0,0 +1,8 @@
1
+ export declare type JobResult = {
2
+ type: 'job_result';
3
+ id: string;
4
+ status: number;
5
+ payload: null | {
6
+ [k: string]: unknown;
7
+ };
8
+ };
@@ -0,0 +1,2 @@
1
+ import { JobResult } from './internalTypes';
2
+ export declare function pollJobResult(fetcher: () => Promise<JobResult>): Promise<JobResult>;
@@ -0,0 +1,19 @@
1
+ export declare type IteratorOptions = {
2
+ perPage?: number;
3
+ concurrency?: number;
4
+ };
5
+ declare type PaginationOptions = {
6
+ defaultLimit: number;
7
+ maxLimit: number;
8
+ };
9
+ declare type JsonApiPage<T> = {
10
+ data: T[];
11
+ meta: {
12
+ total_count: number;
13
+ };
14
+ };
15
+ export declare function rawPageIterator<T>(pagination: PaginationOptions, callPerformer: (page: {
16
+ limit: number;
17
+ offset: number;
18
+ }) => Promise<JsonApiPage<T>>, iteratorOptions?: IteratorOptions): AsyncGenerator<Awaited<T>, void, unknown>;
19
+ export {};
@@ -0,0 +1,28 @@
1
+ import { JobResult } from './internalTypes';
2
+ export declare enum LogLevel {
3
+ /** No logging */
4
+ NONE = 0,
5
+ /** Logs HTTP requests (method, URL) and responses (status) */
6
+ BASIC = 1,
7
+ /** Logs HTTP requests (method, URL, body) and responses (status, body) */
8
+ BODY = 2,
9
+ /** Logs HTTP requests (method, URL, headers, body) and responses (status, headers, body) */
10
+ BODY_AND_HEADERS = 3
11
+ }
12
+ declare type RequestOptions = {
13
+ baseUrl: string;
14
+ fetchJobResult: (jobId: string) => Promise<JobResult>;
15
+ apiToken: string | null;
16
+ extraHeaders?: Record<string, string>;
17
+ logLevel?: LogLevel;
18
+ autoRetry?: boolean;
19
+ retryCount?: number;
20
+ method: 'GET' | 'PUT' | 'POST' | 'DELETE';
21
+ url: string;
22
+ queryParams?: Record<string, unknown>;
23
+ body?: unknown;
24
+ preCallStack?: string;
25
+ userAgent?: string;
26
+ };
27
+ export declare function request<T>(options: RequestOptions): Promise<T>;
28
+ export {};
@@ -0,0 +1,22 @@
1
+ declare type Options = {
2
+ id?: string;
3
+ type: string;
4
+ attributes: '*';
5
+ relationships: string[];
6
+ } | {
7
+ id?: string;
8
+ type: string;
9
+ attributes: string[];
10
+ relationships: '*';
11
+ } | {
12
+ id?: string;
13
+ type: string;
14
+ attributes: string[];
15
+ relationships: string[];
16
+ };
17
+ export declare type Rel = {
18
+ id: string;
19
+ type: string;
20
+ };
21
+ export declare function serializeRequestBody<T>(body: unknown, options: Options): T;
22
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function toId(thing: string | {
2
+ id: string;
3
+ }): string;
@@ -0,0 +1 @@
1
+ export declare function wait(time: any): Promise<unknown>;