@doist/todoist-api-typescript 5.9.0 → 6.0.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 (85) hide show
  1. package/dist/cjs/authentication.js +158 -0
  2. package/dist/{consts → cjs/consts}/endpoints.js +10 -12
  3. package/dist/cjs/package.json +1 -0
  4. package/dist/cjs/rest-client.js +124 -0
  5. package/dist/{test-utils → cjs/test-utils}/asserts.js +1 -1
  6. package/dist/{test-utils → cjs/test-utils}/mocks.js +8 -4
  7. package/dist/cjs/test-utils/msw-setup.js +27 -0
  8. package/dist/{test-utils → cjs/test-utils}/test-defaults.js +41 -52
  9. package/dist/cjs/todoist-api.js +1235 -0
  10. package/dist/{types → cjs/types}/entities.js +19 -30
  11. package/dist/cjs/types/errors.js +22 -0
  12. package/dist/cjs/types/http.js +22 -0
  13. package/dist/cjs/utils/case-conversion.js +69 -0
  14. package/dist/{utils → cjs/utils}/colors.js +3 -3
  15. package/dist/cjs/utils/fetch-with-retry.js +150 -0
  16. package/dist/cjs/utils/multipart-upload.js +126 -0
  17. package/dist/{utils → cjs/utils}/processing-helpers.js +3 -3
  18. package/dist/{utils → cjs/utils}/sanitization.js +17 -28
  19. package/dist/{utils → cjs/utils}/url-helpers.js +15 -15
  20. package/dist/{utils → cjs/utils}/validators.js +2 -2
  21. package/dist/esm/authentication.js +151 -0
  22. package/dist/esm/consts/endpoints.js +65 -0
  23. package/dist/esm/index.js +4 -0
  24. package/dist/esm/rest-client.js +119 -0
  25. package/dist/esm/test-utils/asserts.js +8 -0
  26. package/dist/esm/test-utils/mocks.js +10 -0
  27. package/dist/esm/test-utils/msw-setup.js +22 -0
  28. package/dist/esm/test-utils/test-defaults.js +198 -0
  29. package/dist/esm/todoist-api.js +1231 -0
  30. package/dist/esm/types/entities.js +366 -0
  31. package/dist/esm/types/errors.js +18 -0
  32. package/dist/esm/types/http.js +18 -0
  33. package/dist/esm/types/index.js +3 -0
  34. package/dist/esm/types/requests.js +1 -0
  35. package/dist/esm/types/sync.js +1 -0
  36. package/dist/esm/utils/activity-helpers.js +36 -0
  37. package/dist/esm/utils/case-conversion.js +61 -0
  38. package/dist/esm/utils/colors.js +215 -0
  39. package/dist/esm/utils/fetch-with-retry.js +147 -0
  40. package/dist/esm/utils/index.js +3 -0
  41. package/dist/esm/utils/multipart-upload.js +120 -0
  42. package/dist/esm/utils/processing-helpers.js +12 -0
  43. package/dist/esm/utils/sanitization.js +112 -0
  44. package/dist/esm/utils/url-helpers.js +68 -0
  45. package/dist/esm/utils/validators.js +97 -0
  46. package/dist/{authentication.d.ts → types/authentication.d.ts} +6 -1
  47. package/dist/types/index.d.ts +4 -3
  48. package/dist/{rest-client.d.ts → types/rest-client.d.ts} +3 -4
  49. package/dist/types/test-utils/msw-setup.d.ts +3 -0
  50. package/dist/types/types/http.d.ts +68 -0
  51. package/dist/types/types/index.d.ts +3 -0
  52. package/dist/types/utils/case-conversion.d.ts +12 -0
  53. package/dist/types/utils/fetch-with-retry.d.ts +11 -0
  54. package/package.json +24 -8
  55. package/dist/authentication.js +0 -220
  56. package/dist/index.d.ts +0 -4
  57. package/dist/rest-client.js +0 -178
  58. package/dist/todoist-api.js +0 -1845
  59. package/dist/types/errors.js +0 -39
  60. package/dist/types/http.d.ts +0 -1
  61. package/dist/types/http.js +0 -2
  62. package/dist/utils/multipart-upload.js +0 -171
  63. /package/dist/{index.js → cjs/index.js} +0 -0
  64. /package/dist/{types → cjs/types}/index.js +0 -0
  65. /package/dist/{types → cjs/types}/requests.js +0 -0
  66. /package/dist/{types → cjs/types}/sync.js +0 -0
  67. /package/dist/{utils → cjs/utils}/activity-helpers.js +0 -0
  68. /package/dist/{utils → cjs/utils}/index.js +0 -0
  69. /package/dist/{consts → types/consts}/endpoints.d.ts +0 -0
  70. /package/dist/{test-utils → types/test-utils}/asserts.d.ts +0 -0
  71. /package/dist/{test-utils → types/test-utils}/mocks.d.ts +0 -0
  72. /package/dist/{test-utils → types/test-utils}/test-defaults.d.ts +0 -0
  73. /package/dist/{todoist-api.d.ts → types/todoist-api.d.ts} +0 -0
  74. /package/dist/types/{entities.d.ts → types/entities.d.ts} +0 -0
  75. /package/dist/types/{errors.d.ts → types/errors.d.ts} +0 -0
  76. /package/dist/types/{requests.d.ts → types/requests.d.ts} +0 -0
  77. /package/dist/types/{sync.d.ts → types/sync.d.ts} +0 -0
  78. /package/dist/{utils → types/utils}/activity-helpers.d.ts +0 -0
  79. /package/dist/{utils → types/utils}/colors.d.ts +0 -0
  80. /package/dist/{utils → types/utils}/index.d.ts +0 -0
  81. /package/dist/{utils → types/utils}/multipart-upload.d.ts +0 -0
  82. /package/dist/{utils → types/utils}/processing-helpers.d.ts +0 -0
  83. /package/dist/{utils → types/utils}/sanitization.d.ts +0 -0
  84. /package/dist/{utils → types/utils}/url-helpers.d.ts +0 -0
  85. /package/dist/{utils → types/utils}/validators.d.ts +0 -0
@@ -1,178 +0,0 @@
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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
- return g.next = verb(0), g["throw"] = verb(1), g["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 (g && (g = 0, op[0] && (_ = 0)), _) 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 __importDefault = (this && this.__importDefault) || function (mod) {
50
- return (mod && mod.__esModule) ? mod : { "default": mod };
51
- };
52
- Object.defineProperty(exports, "__esModule", { value: true });
53
- exports.paramsSerializer = paramsSerializer;
54
- exports.isSuccess = isSuccess;
55
- exports.request = request;
56
- // eslint-disable-next-line import/no-named-as-default
57
- var axios_1 = __importDefault(require("axios"));
58
- var axios_case_converter_1 = __importDefault(require("axios-case-converter"));
59
- var errors_1 = require("./types/errors");
60
- var uuid_1 = require("uuid");
61
- var axios_retry_1 = __importDefault(require("axios-retry"));
62
- var endpoints_1 = require("./consts/endpoints");
63
- var processing_helpers_1 = require("./utils/processing-helpers");
64
- function paramsSerializer(params) {
65
- var qs = new URLSearchParams();
66
- Object.keys(params).forEach(function (key) {
67
- var value = params[key];
68
- if (value != null) {
69
- if (Array.isArray(value)) {
70
- qs.append(key, value.join(','));
71
- }
72
- else {
73
- qs.append(key, String(value));
74
- }
75
- }
76
- });
77
- return qs.toString();
78
- }
79
- var defaultHeaders = {
80
- 'Content-Type': 'application/json',
81
- };
82
- function getAuthHeader(apiKey) {
83
- return "Bearer ".concat(apiKey);
84
- }
85
- function isNetworkError(error) {
86
- return Boolean(!error.response && error.code !== 'ECONNABORTED');
87
- }
88
- function getRetryDelay(retryCount) {
89
- return retryCount === 1 ? 0 : 500;
90
- }
91
- function isAxiosError(error) {
92
- return Boolean(error === null || error === void 0 ? void 0 : error.isAxiosError);
93
- }
94
- function getTodoistRequestError(args) {
95
- var error = args.error, originalStack = args.originalStack;
96
- var requestError = new errors_1.TodoistRequestError(error.message);
97
- requestError.stack = isAxiosError(error) && originalStack ? originalStack.stack : error.stack;
98
- if (isAxiosError(error) && error.response) {
99
- requestError.httpStatusCode = error.response.status;
100
- requestError.responseData = error.response.data;
101
- }
102
- return requestError;
103
- }
104
- function getRequestConfiguration(args) {
105
- var baseURL = args.baseURL, apiToken = args.apiToken, requestId = args.requestId, customHeaders = args.customHeaders;
106
- var authHeader = apiToken ? { Authorization: getAuthHeader(apiToken) } : undefined;
107
- var requestIdHeader = requestId ? { 'X-Request-Id': requestId } : undefined;
108
- var headers = __assign(__assign(__assign(__assign({}, defaultHeaders), authHeader), requestIdHeader), customHeaders);
109
- return { baseURL: baseURL, headers: headers };
110
- }
111
- function getAxiosClient(args) {
112
- var baseURL = args.baseURL, apiToken = args.apiToken, requestId = args.requestId, customHeaders = args.customHeaders;
113
- var configuration = getRequestConfiguration({ baseURL: baseURL, apiToken: apiToken, requestId: requestId, customHeaders: customHeaders });
114
- var client = (0, axios_case_converter_1.default)(axios_1.default.create(configuration), {
115
- caseFunctions: {
116
- camel: processing_helpers_1.customCamelCase,
117
- },
118
- });
119
- (0, axios_retry_1.default)(client, {
120
- retries: 3,
121
- retryCondition: isNetworkError,
122
- retryDelay: getRetryDelay,
123
- });
124
- return client;
125
- }
126
- function isSuccess(response) {
127
- return response.status >= 200 && response.status < 300;
128
- }
129
- function request(args) {
130
- return __awaiter(this, void 0, void 0, function () {
131
- var httpMethod, baseUri, relativePath, apiToken, payload, initialRequestId, hasSyncCommands, customHeaders, originalStack, requestId, axiosClient, _a, error_1;
132
- return __generator(this, function (_b) {
133
- switch (_b.label) {
134
- case 0:
135
- httpMethod = args.httpMethod, baseUri = args.baseUri, relativePath = args.relativePath, apiToken = args.apiToken, payload = args.payload, initialRequestId = args.requestId, hasSyncCommands = args.hasSyncCommands, customHeaders = args.customHeaders;
136
- originalStack = new Error();
137
- _b.label = 1;
138
- case 1:
139
- _b.trys.push([1, 11, , 12]);
140
- requestId = initialRequestId;
141
- // Sync api don't allow a request id in the CORS
142
- if (httpMethod === 'POST' && !requestId && !baseUri.includes(endpoints_1.API_BASE_URI)) {
143
- requestId = (0, uuid_1.v4)();
144
- }
145
- axiosClient = getAxiosClient({ baseURL: baseUri, apiToken: apiToken, requestId: requestId, customHeaders: customHeaders });
146
- _a = httpMethod;
147
- switch (_a) {
148
- case 'GET': return [3 /*break*/, 2];
149
- case 'POST': return [3 /*break*/, 4];
150
- case 'PUT': return [3 /*break*/, 6];
151
- case 'DELETE': return [3 /*break*/, 8];
152
- }
153
- return [3 /*break*/, 10];
154
- case 2: return [4 /*yield*/, axiosClient.get(relativePath, {
155
- params: payload,
156
- paramsSerializer: {
157
- serialize: paramsSerializer,
158
- },
159
- })];
160
- case 3: return [2 /*return*/, _b.sent()];
161
- case 4: return [4 /*yield*/, axiosClient.post(relativePath, hasSyncCommands ? JSON.stringify(payload) : payload)];
162
- case 5: return [2 /*return*/, _b.sent()];
163
- case 6: return [4 /*yield*/, axiosClient.put(relativePath, hasSyncCommands ? JSON.stringify(payload) : payload)];
164
- case 7: return [2 /*return*/, _b.sent()];
165
- case 8: return [4 /*yield*/, axiosClient.delete(relativePath)];
166
- case 9: return [2 /*return*/, _b.sent()];
167
- case 10: return [3 /*break*/, 12];
168
- case 11:
169
- error_1 = _b.sent();
170
- if (!isAxiosError(error_1) && !(error_1 instanceof Error)) {
171
- throw new Error('An unknown error occurred during the request');
172
- }
173
- throw getTodoistRequestError({ error: error_1, originalStack: originalStack });
174
- case 12: return [2 /*return*/];
175
- }
176
- });
177
- });
178
- }