@todoist/sdk 0.0.1 → 18.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.
- package/LICENSE +21 -0
- package/README.md +293 -29
- package/dist/esm/authentication.js +307 -0
- package/dist/esm/clients/activity-client.js +60 -0
- package/dist/esm/clients/app-client.js +366 -0
- package/dist/esm/clients/backup-client.js +47 -0
- package/dist/esm/clients/base-client.js +29 -0
- package/dist/esm/clients/billing-client.js +160 -0
- package/dist/esm/clients/comment-client.js +92 -0
- package/dist/esm/clients/email-client.js +41 -0
- package/dist/esm/clients/filter-client.js +26 -0
- package/dist/esm/clients/folder-client.js +80 -0
- package/dist/esm/clients/id-mapping-client.js +37 -0
- package/dist/esm/clients/insights-client.js +89 -0
- package/dist/esm/clients/label-client.js +131 -0
- package/dist/esm/clients/productivity-client.js +24 -0
- package/dist/esm/clients/project-client.js +284 -0
- package/dist/esm/clients/reminder-client.js +204 -0
- package/dist/esm/clients/section-client.js +121 -0
- package/dist/esm/clients/task-client.js +264 -0
- package/dist/esm/clients/template-client.js +89 -0
- package/dist/esm/clients/ui-extension-client.js +110 -0
- package/dist/esm/clients/upload-client.js +153 -0
- package/dist/esm/clients/view-options-client.js +21 -0
- package/dist/esm/clients/workspace-client.js +384 -0
- package/dist/esm/consts/endpoints.js +193 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/test-utils/asserts.js +8 -0
- package/dist/esm/test-utils/msw-setup.js +88 -0
- package/dist/esm/test-utils/obsidian-fetch-adapter.js +51 -0
- package/dist/esm/test-utils/test-defaults.js +367 -0
- package/dist/esm/test-utils/transport-seam.js +15 -0
- package/dist/esm/test-utils/webhook-fixtures.js +26 -0
- package/dist/esm/todoist-api.js +1757 -0
- package/dist/esm/transport/fetch-with-retry.js +216 -0
- package/dist/esm/transport/http-client.js +140 -0
- package/dist/esm/transport/http-dispatcher.js +158 -0
- package/dist/esm/transport/sync-request.js +106 -0
- package/dist/esm/types/activity/index.js +2 -0
- package/dist/esm/types/activity/requests.js +1 -0
- package/dist/esm/types/activity/types.js +45 -0
- package/dist/esm/types/apps/index.js +2 -0
- package/dist/esm/types/apps/requests.js +1 -0
- package/dist/esm/types/apps/types.js +249 -0
- package/dist/esm/types/backups/index.js +2 -0
- package/dist/esm/types/backups/requests.js +1 -0
- package/dist/esm/types/backups/types.js +5 -0
- package/dist/esm/types/billing/index.js +2 -0
- package/dist/esm/types/billing/requests.js +1 -0
- package/dist/esm/types/billing/types.js +89 -0
- package/dist/esm/types/comments/index.js +2 -0
- package/dist/esm/types/comments/requests.js +1 -0
- package/dist/esm/types/comments/types.js +57 -0
- package/dist/esm/types/common.js +7 -0
- package/dist/esm/types/emails/index.js +1 -0
- package/dist/esm/types/emails/requests.js +2 -0
- package/dist/esm/types/errors.js +41 -0
- package/dist/esm/types/folders/index.js +1 -0
- package/dist/esm/types/folders/requests.js +1 -0
- package/dist/esm/types/http.js +20 -0
- package/dist/esm/types/id-mappings/index.js +2 -0
- package/dist/esm/types/id-mappings/requests.js +17 -0
- package/dist/esm/types/id-mappings/types.js +9 -0
- package/dist/esm/types/index.js +24 -0
- package/dist/esm/types/insights/index.js +2 -0
- package/dist/esm/types/insights/requests.js +1 -0
- package/dist/esm/types/insights/types.js +77 -0
- package/dist/esm/types/labels/index.js +2 -0
- package/dist/esm/types/labels/requests.js +1 -0
- package/dist/esm/types/labels/types.js +8 -0
- package/dist/esm/types/productivity/index.js +1 -0
- package/dist/esm/types/productivity/types.js +65 -0
- package/dist/esm/types/projects/index.js +2 -0
- package/dist/esm/types/projects/requests.js +1 -0
- package/dist/esm/types/projects/types.js +65 -0
- package/dist/esm/types/reminders/index.js +1 -0
- package/dist/esm/types/reminders/requests.js +92 -0
- package/dist/esm/types/sections/index.js +2 -0
- package/dist/esm/types/sections/requests.js +1 -0
- package/dist/esm/types/sections/types.js +23 -0
- package/dist/esm/types/sync/commands/calendars.js +1 -0
- package/dist/esm/types/sync/commands/filters.js +1 -0
- package/dist/esm/types/sync/commands/folders.js +1 -0
- package/dist/esm/types/sync/commands/index.js +18 -0
- package/dist/esm/types/sync/commands/labels.js +2 -0
- package/dist/esm/types/sync/commands/notes.js +1 -0
- package/dist/esm/types/sync/commands/notifications.js +1 -0
- package/dist/esm/types/sync/commands/others.js +1 -0
- package/dist/esm/types/sync/commands/project-view-options.js +1 -0
- package/dist/esm/types/sync/commands/projects.js +1 -0
- package/dist/esm/types/sync/commands/reminders.js +1 -0
- package/dist/esm/types/sync/commands/sections.js +1 -0
- package/dist/esm/types/sync/commands/shared.js +16 -0
- package/dist/esm/types/sync/commands/sharing.js +1 -0
- package/dist/esm/types/sync/commands/tasks.js +1 -0
- package/dist/esm/types/sync/commands/view-options.js +1 -0
- package/dist/esm/types/sync/commands/workspace-filters.js +1 -0
- package/dist/esm/types/sync/commands/workspaces.js +1 -0
- package/dist/esm/types/sync/index.js +6 -0
- package/dist/esm/types/sync/request.js +1 -0
- package/dist/esm/types/sync/resource-types.js +36 -0
- package/dist/esm/types/sync/resources/calendars.js +24 -0
- package/dist/esm/types/sync/resources/collaborators.js +21 -0
- package/dist/esm/types/sync/resources/completed-info.js +21 -0
- package/dist/esm/types/sync/resources/filters.js +12 -0
- package/dist/esm/types/sync/resources/folders.js +10 -0
- package/dist/esm/types/sync/resources/index.js +18 -0
- package/dist/esm/types/sync/resources/labels.js +7 -0
- package/dist/esm/types/sync/resources/live-notifications.js +35 -0
- package/dist/esm/types/sync/resources/notes.js +18 -0
- package/dist/esm/types/sync/resources/reminders.js +58 -0
- package/dist/esm/types/sync/resources/suggestions.js +33 -0
- package/dist/esm/types/sync/resources/tooltips.js +5 -0
- package/dist/esm/types/sync/resources/user-plan-limits.js +21 -0
- package/dist/esm/types/sync/resources/user-settings.js +41 -0
- package/dist/esm/types/sync/resources/user-status.js +22 -0
- package/dist/esm/types/sync/resources/user.js +109 -0
- package/dist/esm/types/sync/resources/view-options.js +128 -0
- package/dist/esm/types/sync/resources/workspace-filters.js +17 -0
- package/dist/esm/types/sync/resources/workspaces.js +69 -0
- package/dist/esm/types/sync/response.js +57 -0
- package/dist/esm/types/sync/user-preferences.js +68 -0
- package/dist/esm/types/tasks/index.js +2 -0
- package/dist/esm/types/tasks/requests.js +1 -0
- package/dist/esm/types/tasks/types.js +56 -0
- package/dist/esm/types/templates/index.js +1 -0
- package/dist/esm/types/templates/requests.js +1 -0
- package/dist/esm/types/ui-extensions/index.js +2 -0
- package/dist/esm/types/ui-extensions/requests.js +1 -0
- package/dist/esm/types/ui-extensions/types.js +74 -0
- package/dist/esm/types/uploads/index.js +1 -0
- package/dist/esm/types/uploads/requests.js +1 -0
- package/dist/esm/types/users/index.js +1 -0
- package/dist/esm/types/users/types.js +49 -0
- package/dist/esm/types/webhooks/comments.js +93 -0
- package/dist/esm/types/webhooks/envelope.js +23 -0
- package/dist/esm/types/webhooks/filters.js +27 -0
- package/dist/esm/types/webhooks/index.js +9 -0
- package/dist/esm/types/webhooks/labels.js +51 -0
- package/dist/esm/types/webhooks/projects.js +33 -0
- package/dist/esm/types/webhooks/reminders.js +32 -0
- package/dist/esm/types/webhooks/sections.js +50 -0
- package/dist/esm/types/webhooks/tasks.js +65 -0
- package/dist/esm/types/webhooks/types.js +52 -0
- package/dist/esm/types/workspaces/index.js +2 -0
- package/dist/esm/types/workspaces/requests.js +1 -0
- package/dist/esm/types/workspaces/types.js +151 -0
- package/dist/esm/utils/activity-helpers.js +53 -0
- package/dist/esm/utils/case-conversion.js +84 -0
- package/dist/esm/utils/colors.js +145 -0
- package/dist/esm/utils/file-response.js +29 -0
- package/dist/esm/utils/filter-queries.js +231 -0
- package/dist/esm/utils/filter-query-definitions.js +2789 -0
- package/dist/esm/utils/headers.js +42 -0
- package/dist/esm/utils/index.js +11 -0
- package/dist/esm/utils/multipart-upload.js +267 -0
- package/dist/esm/utils/person-names.js +61 -0
- package/dist/esm/utils/processing-helpers.js +12 -0
- package/dist/esm/utils/project-helpers.js +29 -0
- package/dist/esm/utils/request-helpers.js +43 -0
- package/dist/esm/utils/sanitization.js +131 -0
- package/dist/esm/utils/sync-helpers.js +19 -0
- package/dist/esm/utils/task-sorting.js +280 -0
- package/dist/esm/utils/uncompletable-helpers.js +54 -0
- package/dist/esm/utils/url-helpers.js +196 -0
- package/dist/esm/utils/validators.js +102 -0
- package/dist/esm/utils/view-options.js +15 -0
- package/dist/esm/utils/webhook-parser.js +56 -0
- package/dist/types/authentication.d.ts +262 -0
- package/dist/types/clients/activity-client.d.ts +12 -0
- package/dist/types/clients/app-client.d.ts +37 -0
- package/dist/types/clients/backup-client.d.ts +14 -0
- package/dist/types/clients/base-client.d.ts +23 -0
- package/dist/types/clients/billing-client.d.ts +22 -0
- package/dist/types/clients/comment-client.d.ts +15 -0
- package/dist/types/clients/email-client.d.ts +13 -0
- package/dist/types/clients/filter-client.d.ts +10 -0
- package/dist/types/clients/folder-client.d.ts +16 -0
- package/dist/types/clients/id-mapping-client.d.ts +13 -0
- package/dist/types/clients/insights-client.d.ts +18 -0
- package/dist/types/clients/label-client.d.ts +19 -0
- package/dist/types/clients/productivity-client.d.ts +12 -0
- package/dist/types/clients/project-client.d.ts +22 -0
- package/dist/types/clients/reminder-client.d.ts +25 -0
- package/dist/types/clients/section-client.d.ts +18 -0
- package/dist/types/clients/task-client.d.ts +25 -0
- package/dist/types/clients/template-client.d.ts +17 -0
- package/dist/types/clients/ui-extension-client.d.ts +18 -0
- package/dist/types/clients/upload-client.d.ts +17 -0
- package/dist/types/clients/view-options-client.d.ts +8 -0
- package/dist/types/clients/workspace-client.d.ts +43 -0
- package/dist/types/consts/endpoints.d.ts +120 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/test-utils/asserts.d.ts +1 -0
- package/dist/types/test-utils/msw-setup.d.ts +33 -0
- package/dist/types/test-utils/obsidian-fetch-adapter.d.ts +29 -0
- package/dist/types/test-utils/test-defaults.d.ts +286 -0
- package/dist/types/test-utils/transport-seam.d.ts +1 -0
- package/dist/types/test-utils/webhook-fixtures.d.ts +13 -0
- package/dist/types/todoist-api.d.ts +1437 -0
- package/dist/types/transport/fetch-with-retry.d.ts +12 -0
- package/dist/types/transport/http-client.d.ts +25 -0
- package/dist/types/transport/http-dispatcher.d.ts +65 -0
- package/dist/types/transport/sync-request.d.ts +31 -0
- package/dist/types/types/activity/index.d.ts +2 -0
- package/dist/types/types/activity/requests.d.ts +85 -0
- package/dist/types/types/activity/types.d.ts +56 -0
- package/dist/types/types/apps/index.d.ts +2 -0
- package/dist/types/types/apps/requests.d.ts +89 -0
- package/dist/types/types/apps/types.d.ts +418 -0
- package/dist/types/types/backups/index.d.ts +2 -0
- package/dist/types/types/backups/requests.d.ts +16 -0
- package/dist/types/types/backups/types.d.ts +7 -0
- package/dist/types/types/billing/index.d.ts +2 -0
- package/dist/types/types/billing/requests.d.ts +62 -0
- package/dist/types/types/billing/types.d.ts +207 -0
- package/dist/types/types/comments/index.d.ts +2 -0
- package/dist/types/types/comments/requests.d.ts +64 -0
- package/dist/types/types/comments/types.d.ts +141 -0
- package/dist/types/types/common.d.ts +13 -0
- package/dist/types/types/emails/index.d.ts +1 -0
- package/dist/types/types/emails/requests.d.ts +30 -0
- package/dist/types/types/errors.d.ts +29 -0
- package/dist/types/types/folders/index.d.ts +1 -0
- package/dist/types/types/folders/requests.d.ts +20 -0
- package/dist/types/types/http.d.ts +104 -0
- package/dist/types/types/id-mappings/index.d.ts +2 -0
- package/dist/types/types/id-mappings/requests.d.ts +28 -0
- package/dist/types/types/id-mappings/types.d.ts +13 -0
- package/dist/types/types/index.d.ts +24 -0
- package/dist/types/types/insights/index.d.ts +2 -0
- package/dist/types/types/insights/requests.d.ts +26 -0
- package/dist/types/types/insights/types.d.ts +167 -0
- package/dist/types/types/labels/index.d.ts +2 -0
- package/dist/types/types/labels/requests.d.ts +75 -0
- package/dist/types/types/labels/types.d.ts +13 -0
- package/dist/types/types/productivity/index.d.ts +1 -0
- package/dist/types/types/productivity/types.d.ts +115 -0
- package/dist/types/types/projects/index.d.ts +2 -0
- package/dist/types/types/projects/requests.d.ts +206 -0
- package/dist/types/types/projects/types.d.ts +286 -0
- package/dist/types/types/reminders/index.d.ts +1 -0
- package/dist/types/types/reminders/requests.d.ts +205 -0
- package/dist/types/types/sections/index.d.ts +2 -0
- package/dist/types/types/sections/requests.d.ts +49 -0
- package/dist/types/types/sections/types.d.ts +70 -0
- package/dist/types/types/sync/commands/calendars.d.ts +14 -0
- package/dist/types/types/sync/commands/filters.d.ts +24 -0
- package/dist/types/types/sync/commands/folders.d.ts +20 -0
- package/dist/types/types/sync/commands/index.d.ts +167 -0
- package/dist/types/types/sync/commands/labels.d.ts +32 -0
- package/dist/types/types/sync/commands/notes.d.ts +27 -0
- package/dist/types/types/sync/commands/notifications.d.ts +10 -0
- package/dist/types/types/sync/commands/others.d.ts +61 -0
- package/dist/types/types/sync/commands/project-view-options.d.ts +13 -0
- package/dist/types/types/sync/commands/projects.d.ts +96 -0
- package/dist/types/types/sync/commands/reminders.d.ts +51 -0
- package/dist/types/types/sync/commands/sections.d.ts +36 -0
- package/dist/types/types/sync/commands/shared.d.ts +51 -0
- package/dist/types/types/sync/commands/sharing.d.ts +16 -0
- package/dist/types/types/sync/commands/tasks.d.ts +78 -0
- package/dist/types/types/sync/commands/view-options.d.ts +18 -0
- package/dist/types/types/sync/commands/workspace-filters.d.ts +25 -0
- package/dist/types/types/sync/commands/workspaces.d.ts +82 -0
- package/dist/types/types/sync/index.d.ts +6 -0
- package/dist/types/types/sync/request.d.ts +7 -0
- package/dist/types/types/sync/resource-types.d.ts +5 -0
- package/dist/types/types/sync/resources/calendars.d.ts +38 -0
- package/dist/types/types/sync/resources/collaborators.d.ts +45 -0
- package/dist/types/types/sync/resources/completed-info.d.ts +33 -0
- package/dist/types/types/sync/resources/filters.d.ts +13 -0
- package/dist/types/types/sync/resources/folders.d.ts +11 -0
- package/dist/types/types/sync/resources/index.d.ts +18 -0
- package/dist/types/types/sync/resources/labels.d.ts +12 -0
- package/dist/types/types/sync/resources/live-notifications.d.ts +32 -0
- package/dist/types/types/sync/resources/notes.d.ts +34 -0
- package/dist/types/types/sync/resources/reminders.d.ts +213 -0
- package/dist/types/types/sync/resources/suggestions.d.ts +96 -0
- package/dist/types/types/sync/resources/tooltips.d.ts +6 -0
- package/dist/types/types/sync/resources/user-plan-limits.d.ts +47 -0
- package/dist/types/types/sync/resources/user-settings.d.ts +40 -0
- package/dist/types/types/sync/resources/user-status.d.ts +46 -0
- package/dist/types/types/sync/resources/user.d.ts +151 -0
- package/dist/types/types/sync/resources/view-options.d.ts +157 -0
- package/dist/types/types/sync/resources/workspace-filters.d.ts +18 -0
- package/dist/types/types/sync/resources/workspaces.d.ts +142 -0
- package/dist/types/types/sync/response.d.ts +930 -0
- package/dist/types/types/sync/user-preferences.d.ts +39 -0
- package/dist/types/types/tasks/index.d.ts +2 -0
- package/dist/types/types/tasks/requests.d.ts +197 -0
- package/dist/types/types/tasks/types.d.ts +162 -0
- package/dist/types/types/templates/index.d.ts +1 -0
- package/dist/types/types/templates/requests.d.ts +92 -0
- package/dist/types/types/ui-extensions/index.d.ts +2 -0
- package/dist/types/types/ui-extensions/requests.d.ts +108 -0
- package/dist/types/types/ui-extensions/types.d.ts +185 -0
- package/dist/types/types/uploads/index.d.ts +1 -0
- package/dist/types/types/uploads/requests.d.ts +32 -0
- package/dist/types/types/users/index.d.ts +1 -0
- package/dist/types/types/users/types.d.ts +67 -0
- package/dist/types/types/webhooks/comments.d.ts +1600 -0
- package/dist/types/types/webhooks/envelope.d.ts +34 -0
- package/dist/types/types/webhooks/filters.d.ts +99 -0
- package/dist/types/types/webhooks/index.d.ts +9 -0
- package/dist/types/types/webhooks/labels.d.ts +160 -0
- package/dist/types/types/webhooks/projects.d.ts +365 -0
- package/dist/types/types/webhooks/reminders.d.ts +82 -0
- package/dist/types/types/webhooks/sections.d.ts +372 -0
- package/dist/types/types/webhooks/tasks.d.ts +981 -0
- package/dist/types/types/webhooks/types.d.ts +2606 -0
- package/dist/types/types/workspaces/index.d.ts +2 -0
- package/dist/types/types/workspaces/requests.d.ts +260 -0
- package/dist/types/types/workspaces/types.d.ts +266 -0
- package/dist/types/utils/activity-helpers.d.ts +28 -0
- package/dist/types/utils/case-conversion.d.ts +20 -0
- package/dist/types/utils/colors.d.ts +201 -0
- package/dist/types/utils/file-response.d.ts +15 -0
- package/dist/types/utils/filter-queries.d.ts +42 -0
- package/dist/types/utils/filter-query-definitions.d.ts +27 -0
- package/dist/types/utils/headers.d.ts +20 -0
- package/dist/types/utils/index.d.ts +15 -0
- package/dist/types/utils/multipart-upload.d.ts +58 -0
- package/dist/types/utils/person-names.d.ts +52 -0
- package/dist/types/utils/processing-helpers.d.ts +1 -0
- package/dist/types/utils/project-helpers.d.ts +21 -0
- package/dist/types/utils/request-helpers.d.ts +33 -0
- package/dist/types/utils/sanitization.d.ts +52 -0
- package/dist/types/utils/sync-helpers.d.ts +17 -0
- package/dist/types/utils/task-sorting.d.ts +46 -0
- package/dist/types/utils/uncompletable-helpers.d.ts +30 -0
- package/dist/types/utils/url-helpers.d.ts +120 -0
- package/dist/types/utils/validators.d.ts +1917 -0
- package/dist/types/utils/view-options.d.ts +11 -0
- package/dist/types/utils/webhook-parser.d.ts +48 -0
- package/package.json +87 -8
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a CustomFetch adapter for Obsidian's requestUrl API.
|
|
3
|
+
*
|
|
4
|
+
* This adapter bridges the gap between Obsidian's requestUrl interface and the
|
|
5
|
+
* standard fetch-like interface expected by the Todoist API SDK.
|
|
6
|
+
*
|
|
7
|
+
* Key differences handled by this adapter:
|
|
8
|
+
* - Obsidian returns response data as properties (response.json, response.text)
|
|
9
|
+
* while the SDK expects methods (response.json(), response.text())
|
|
10
|
+
* - Obsidian's requestUrl bypasses CORS restrictions that would block standard fetch
|
|
11
|
+
* - Obsidian throws on HTTP errors by default; we set throw: false to handle manually
|
|
12
|
+
* - Obsidian doesn't provide statusText; we default to empty string
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { requestUrl } from 'obsidian';
|
|
17
|
+
* import { createObsidianFetchAdapter } from './obsidian-fetch-adapter.js';
|
|
18
|
+
*
|
|
19
|
+
* const api = new TodoistApi('your-token', {
|
|
20
|
+
* customFetch: createObsidianFetchAdapter(requestUrl)
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @param requestUrl - The Obsidian requestUrl function
|
|
25
|
+
* @returns A CustomFetch function compatible with the Todoist API SDK
|
|
26
|
+
*/
|
|
27
|
+
export function createObsidianFetchAdapter(requestUrl) {
|
|
28
|
+
return async (url, options) => {
|
|
29
|
+
// Build the request parameters in Obsidian's format
|
|
30
|
+
const requestParams = {
|
|
31
|
+
url,
|
|
32
|
+
method: (options === null || options === void 0 ? void 0 : options.method) || 'GET',
|
|
33
|
+
headers: options === null || options === void 0 ? void 0 : options.headers,
|
|
34
|
+
body: options === null || options === void 0 ? void 0 : options.body,
|
|
35
|
+
throw: false, // Don't throw on HTTP errors; let the SDK handle status codes
|
|
36
|
+
};
|
|
37
|
+
// Make the request using Obsidian's requestUrl
|
|
38
|
+
const response = await requestUrl(requestParams);
|
|
39
|
+
// Transform Obsidian's response format to match CustomFetchResponse interface
|
|
40
|
+
return {
|
|
41
|
+
ok: response.status >= 200 && response.status < 300,
|
|
42
|
+
status: response.status,
|
|
43
|
+
statusText: '', // Obsidian doesn't provide statusText
|
|
44
|
+
headers: response.headers,
|
|
45
|
+
// Wrap Obsidian's direct properties as methods returning promises
|
|
46
|
+
text: () => Promise.resolve(response.text),
|
|
47
|
+
json: () => Promise.resolve(response.json),
|
|
48
|
+
arrayBuffer: () => Promise.resolve(response.arrayBuffer),
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
}
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import { getProjectUrl, getTaskUrl, getSectionUrl } from '../utils/url-helpers.js';
|
|
2
|
+
export const DEFAULT_TASK_ID = '1234';
|
|
3
|
+
export const DEFAULT_TASK_CONTENT = 'This is a task';
|
|
4
|
+
export const DEFAULT_TASK_DESCRIPTION = 'A description';
|
|
5
|
+
export const DEFAULT_TASK_PRIORITY = 1;
|
|
6
|
+
export const DEFAULT_ORDER = 3;
|
|
7
|
+
export const DEFAULT_PROJECT_ID = '123';
|
|
8
|
+
export const DEFAULT_PROJECT_NAME = 'This is a project';
|
|
9
|
+
export const DEFAULT_PROJECT_VIEW_STYLE = 'list';
|
|
10
|
+
const DEFAULT_LABEL_ID = '456';
|
|
11
|
+
const DEFAULT_LABEL_NAME = 'This is a label';
|
|
12
|
+
const DEFAULT_SECTION_ID = '456';
|
|
13
|
+
const DEFAULT_SECTION_NAME = 'This is a section';
|
|
14
|
+
const DEFAULT_PARENT_ID = '5678';
|
|
15
|
+
const DEFAULT_ASSIGNEE = '1234';
|
|
16
|
+
const DEFAULT_CREATOR = '1234';
|
|
17
|
+
const DEFAULT_DATE = '2020-09-08T12:00:00Z';
|
|
18
|
+
function defaultDate() {
|
|
19
|
+
return new Date(DEFAULT_DATE);
|
|
20
|
+
}
|
|
21
|
+
const DEFAULT_ENTITY_COLOR = 'berry_red';
|
|
22
|
+
const DEFAULT_LABELS = ['personal', 'work', 'hobby'];
|
|
23
|
+
const DEFAULT_USER_ID = '5';
|
|
24
|
+
const DEFAULT_USER_NAME = 'A User';
|
|
25
|
+
const DEFAULT_USER_EMAIL = 'atestuser@doist.com';
|
|
26
|
+
const DEFAULT_COMMENT_ID = '4';
|
|
27
|
+
const DEFAULT_COMMENT_CONTENT = 'A comment';
|
|
28
|
+
const DEFAULT_COMMENT_REACTIONS = { '👍': ['1234', '5678'] };
|
|
29
|
+
const DEFAULT_CAN_ASSIGN_TASKS = true;
|
|
30
|
+
const DEFAULT_IS_ARCHIVED = false;
|
|
31
|
+
const DEFAULT_IS_DELETED = false;
|
|
32
|
+
const DEFAULT_IS_FROZEN = false;
|
|
33
|
+
const DEFAULT_IS_COLLAPSED = false;
|
|
34
|
+
// URL constants using the helper functions
|
|
35
|
+
const DEFAULT_TASK_URL = getTaskUrl(DEFAULT_TASK_ID, DEFAULT_TASK_CONTENT);
|
|
36
|
+
const DEFAULT_PROJECT_URL = getProjectUrl(DEFAULT_PROJECT_ID, DEFAULT_PROJECT_NAME);
|
|
37
|
+
const DEFAULT_SECTION_URL = getSectionUrl(DEFAULT_SECTION_ID, DEFAULT_SECTION_NAME);
|
|
38
|
+
export const DEFAULT_AUTH_TOKEN = 'AToken';
|
|
39
|
+
export const DEFAULT_REQUEST_ID = 'ARequestID';
|
|
40
|
+
export const INVALID_ENTITY_ID = 1234;
|
|
41
|
+
export const DEFAULT_DUE_DATE = {
|
|
42
|
+
isRecurring: false,
|
|
43
|
+
string: 'a date string',
|
|
44
|
+
date: DEFAULT_DATE,
|
|
45
|
+
lang: 'en',
|
|
46
|
+
timezone: null,
|
|
47
|
+
};
|
|
48
|
+
export const DEFAULT_DURATION = {
|
|
49
|
+
amount: 10,
|
|
50
|
+
unit: 'minute',
|
|
51
|
+
};
|
|
52
|
+
export const DEFAULT_DEADLINE = {
|
|
53
|
+
date: '2020-09-08',
|
|
54
|
+
lang: 'en',
|
|
55
|
+
};
|
|
56
|
+
export const DEFAULT_TASK = {
|
|
57
|
+
id: DEFAULT_TASK_ID,
|
|
58
|
+
userId: DEFAULT_CREATOR,
|
|
59
|
+
projectId: DEFAULT_PROJECT_ID,
|
|
60
|
+
sectionId: DEFAULT_SECTION_ID,
|
|
61
|
+
parentId: DEFAULT_PARENT_ID,
|
|
62
|
+
addedByUid: DEFAULT_CREATOR,
|
|
63
|
+
assignedByUid: DEFAULT_CREATOR,
|
|
64
|
+
responsibleUid: DEFAULT_ASSIGNEE,
|
|
65
|
+
labels: DEFAULT_LABELS,
|
|
66
|
+
deadline: DEFAULT_DEADLINE,
|
|
67
|
+
duration: DEFAULT_DURATION,
|
|
68
|
+
checked: false,
|
|
69
|
+
isDeleted: DEFAULT_IS_DELETED,
|
|
70
|
+
addedAt: defaultDate(),
|
|
71
|
+
completedAt: null,
|
|
72
|
+
updatedAt: defaultDate(),
|
|
73
|
+
due: DEFAULT_DUE_DATE,
|
|
74
|
+
priority: DEFAULT_TASK_PRIORITY,
|
|
75
|
+
childOrder: DEFAULT_ORDER,
|
|
76
|
+
content: DEFAULT_TASK_CONTENT,
|
|
77
|
+
description: DEFAULT_TASK_DESCRIPTION,
|
|
78
|
+
dayOrder: DEFAULT_ORDER,
|
|
79
|
+
isCollapsed: DEFAULT_IS_COLLAPSED,
|
|
80
|
+
isUncompletable: false,
|
|
81
|
+
url: DEFAULT_TASK_URL,
|
|
82
|
+
};
|
|
83
|
+
export const INVALID_TASK = Object.assign(Object.assign({}, DEFAULT_TASK), { due: '2020-01-31' });
|
|
84
|
+
export const TASK_WITH_OPTIONALS_AS_NULL = {
|
|
85
|
+
userId: DEFAULT_CREATOR,
|
|
86
|
+
id: DEFAULT_TASK_ID,
|
|
87
|
+
projectId: DEFAULT_PROJECT_ID,
|
|
88
|
+
sectionId: null,
|
|
89
|
+
parentId: null,
|
|
90
|
+
addedByUid: DEFAULT_CREATOR,
|
|
91
|
+
assignedByUid: null,
|
|
92
|
+
responsibleUid: null,
|
|
93
|
+
labels: [],
|
|
94
|
+
deadline: null,
|
|
95
|
+
duration: null,
|
|
96
|
+
checked: false,
|
|
97
|
+
isDeleted: DEFAULT_IS_DELETED,
|
|
98
|
+
addedAt: defaultDate(),
|
|
99
|
+
completedAt: null,
|
|
100
|
+
updatedAt: defaultDate(),
|
|
101
|
+
due: null,
|
|
102
|
+
priority: DEFAULT_TASK_PRIORITY,
|
|
103
|
+
childOrder: DEFAULT_ORDER,
|
|
104
|
+
content: DEFAULT_TASK_CONTENT,
|
|
105
|
+
description: DEFAULT_TASK_DESCRIPTION,
|
|
106
|
+
dayOrder: DEFAULT_ORDER,
|
|
107
|
+
isCollapsed: DEFAULT_IS_COLLAPSED,
|
|
108
|
+
isUncompletable: false,
|
|
109
|
+
url: DEFAULT_TASK_URL,
|
|
110
|
+
};
|
|
111
|
+
export const DEFAULT_PROJECT = {
|
|
112
|
+
id: DEFAULT_PROJECT_ID,
|
|
113
|
+
name: DEFAULT_PROJECT_NAME,
|
|
114
|
+
color: DEFAULT_ENTITY_COLOR,
|
|
115
|
+
childOrder: DEFAULT_ORDER,
|
|
116
|
+
parentId: DEFAULT_PROJECT_ID,
|
|
117
|
+
isFavorite: false,
|
|
118
|
+
isShared: false,
|
|
119
|
+
inboxProject: false,
|
|
120
|
+
viewStyle: DEFAULT_PROJECT_VIEW_STYLE,
|
|
121
|
+
canAssignTasks: DEFAULT_CAN_ASSIGN_TASKS,
|
|
122
|
+
isArchived: DEFAULT_IS_ARCHIVED,
|
|
123
|
+
isDeleted: DEFAULT_IS_DELETED,
|
|
124
|
+
isFrozen: DEFAULT_IS_FROZEN,
|
|
125
|
+
createdAt: defaultDate(),
|
|
126
|
+
updatedAt: defaultDate(),
|
|
127
|
+
defaultOrder: DEFAULT_ORDER,
|
|
128
|
+
description: '',
|
|
129
|
+
isCollapsed: DEFAULT_IS_COLLAPSED,
|
|
130
|
+
url: DEFAULT_PROJECT_URL,
|
|
131
|
+
};
|
|
132
|
+
export const INVALID_PROJECT = Object.assign(Object.assign({}, DEFAULT_PROJECT), { name: 123 });
|
|
133
|
+
export const PROJECT_WITH_OPTIONALS_AS_NULL = Object.assign(Object.assign({}, DEFAULT_PROJECT), { parentId: null });
|
|
134
|
+
export const DEFAULT_WORKSPACE_PROJECT = {
|
|
135
|
+
id: DEFAULT_PROJECT_ID,
|
|
136
|
+
name: DEFAULT_PROJECT_NAME,
|
|
137
|
+
color: DEFAULT_ENTITY_COLOR,
|
|
138
|
+
childOrder: DEFAULT_ORDER,
|
|
139
|
+
isFavorite: false,
|
|
140
|
+
isShared: true,
|
|
141
|
+
viewStyle: DEFAULT_PROJECT_VIEW_STYLE,
|
|
142
|
+
canAssignTasks: DEFAULT_CAN_ASSIGN_TASKS,
|
|
143
|
+
isArchived: DEFAULT_IS_ARCHIVED,
|
|
144
|
+
isDeleted: DEFAULT_IS_DELETED,
|
|
145
|
+
isFrozen: DEFAULT_IS_FROZEN,
|
|
146
|
+
createdAt: defaultDate(),
|
|
147
|
+
updatedAt: defaultDate(),
|
|
148
|
+
defaultOrder: DEFAULT_ORDER,
|
|
149
|
+
description: '',
|
|
150
|
+
isCollapsed: DEFAULT_IS_COLLAPSED,
|
|
151
|
+
url: DEFAULT_PROJECT_URL,
|
|
152
|
+
workspaceId: '100',
|
|
153
|
+
folderId: null,
|
|
154
|
+
collaboratorRoleDefault: 'READ_WRITE',
|
|
155
|
+
isInviteOnly: false,
|
|
156
|
+
isLinkSharingEnabled: true,
|
|
157
|
+
role: 'ADMIN',
|
|
158
|
+
status: 'ACTIVE',
|
|
159
|
+
};
|
|
160
|
+
export const DEFAULT_SECTION = {
|
|
161
|
+
id: DEFAULT_SECTION_ID,
|
|
162
|
+
userId: DEFAULT_USER_ID,
|
|
163
|
+
projectId: DEFAULT_PROJECT_ID,
|
|
164
|
+
addedAt: new Date('2025-03-28T14:01:23.334881Z'),
|
|
165
|
+
updatedAt: new Date('2025-03-28T14:01:23.334885Z'),
|
|
166
|
+
archivedAt: null,
|
|
167
|
+
name: DEFAULT_SECTION_NAME,
|
|
168
|
+
description: null,
|
|
169
|
+
sectionOrder: DEFAULT_ORDER,
|
|
170
|
+
isArchived: false,
|
|
171
|
+
isDeleted: false,
|
|
172
|
+
isCollapsed: false,
|
|
173
|
+
url: DEFAULT_SECTION_URL,
|
|
174
|
+
};
|
|
175
|
+
export const INVALID_SECTION = Object.assign(Object.assign({}, DEFAULT_SECTION), { projectId: undefined });
|
|
176
|
+
export const DEFAULT_LABEL = {
|
|
177
|
+
id: DEFAULT_LABEL_ID,
|
|
178
|
+
name: DEFAULT_LABEL_NAME,
|
|
179
|
+
color: DEFAULT_ENTITY_COLOR,
|
|
180
|
+
order: DEFAULT_ORDER,
|
|
181
|
+
isFavorite: false,
|
|
182
|
+
};
|
|
183
|
+
export const INVALID_LABEL = Object.assign(Object.assign({}, DEFAULT_LABEL), { isFavorite: 'true' });
|
|
184
|
+
export const DEFAULT_USER = {
|
|
185
|
+
id: DEFAULT_USER_ID,
|
|
186
|
+
name: DEFAULT_USER_NAME,
|
|
187
|
+
email: DEFAULT_USER_EMAIL,
|
|
188
|
+
};
|
|
189
|
+
export const INVALID_USER = Object.assign(Object.assign({}, DEFAULT_USER), { email: undefined });
|
|
190
|
+
export const DEFAULT_ATTACHMENT = {
|
|
191
|
+
resourceType: 'file',
|
|
192
|
+
fileType: 'image/png',
|
|
193
|
+
fileUrl: 'https://someurl.com/image.jpg',
|
|
194
|
+
uploadState: 'completed',
|
|
195
|
+
};
|
|
196
|
+
export const INVALID_ATTACHMENT = Object.assign(Object.assign({}, DEFAULT_ATTACHMENT), { uploadState: 'something random' });
|
|
197
|
+
export const DEFAULT_RAW_COMMENT = {
|
|
198
|
+
id: DEFAULT_COMMENT_ID,
|
|
199
|
+
postedUid: DEFAULT_USER_ID,
|
|
200
|
+
content: DEFAULT_COMMENT_CONTENT,
|
|
201
|
+
fileAttachment: DEFAULT_ATTACHMENT,
|
|
202
|
+
uidsToNotify: null,
|
|
203
|
+
isDeleted: false,
|
|
204
|
+
postedAt: defaultDate(),
|
|
205
|
+
reactions: DEFAULT_COMMENT_REACTIONS,
|
|
206
|
+
itemId: DEFAULT_TASK_ID,
|
|
207
|
+
};
|
|
208
|
+
export const DEFAULT_COMMENT = Object.assign(Object.assign({}, DEFAULT_RAW_COMMENT), { taskId: DEFAULT_RAW_COMMENT.itemId, itemId: undefined });
|
|
209
|
+
export const DEFAULT_REMINDER_ID = '6XGgmFQrx44wfGHr';
|
|
210
|
+
export const DEFAULT_RELATIVE_REMINDER = {
|
|
211
|
+
id: DEFAULT_REMINDER_ID,
|
|
212
|
+
itemId: DEFAULT_TASK_ID,
|
|
213
|
+
notifyUid: DEFAULT_USER_ID,
|
|
214
|
+
isDeleted: false,
|
|
215
|
+
type: 'relative',
|
|
216
|
+
minuteOffset: 30,
|
|
217
|
+
due: DEFAULT_DUE_DATE,
|
|
218
|
+
isUrgent: false,
|
|
219
|
+
};
|
|
220
|
+
export const DEFAULT_ABSOLUTE_REMINDER = {
|
|
221
|
+
id: DEFAULT_REMINDER_ID,
|
|
222
|
+
itemId: DEFAULT_TASK_ID,
|
|
223
|
+
notifyUid: DEFAULT_USER_ID,
|
|
224
|
+
isDeleted: false,
|
|
225
|
+
type: 'absolute',
|
|
226
|
+
due: DEFAULT_DUE_DATE,
|
|
227
|
+
isUrgent: true,
|
|
228
|
+
};
|
|
229
|
+
export const DEFAULT_LOCATION_REMINDER = {
|
|
230
|
+
id: DEFAULT_REMINDER_ID,
|
|
231
|
+
itemId: DEFAULT_TASK_ID,
|
|
232
|
+
notifyUid: DEFAULT_USER_ID,
|
|
233
|
+
isDeleted: false,
|
|
234
|
+
type: 'location',
|
|
235
|
+
name: 'Aliados',
|
|
236
|
+
locLat: '41.148581',
|
|
237
|
+
locLong: '-8.610945000000015',
|
|
238
|
+
locTrigger: 'on_enter',
|
|
239
|
+
radius: 100,
|
|
240
|
+
};
|
|
241
|
+
export const INVALID_COMMENT = Object.assign(Object.assign({}, DEFAULT_RAW_COMMENT), { isDeleted: 'true' });
|
|
242
|
+
export const RAW_COMMENT_WITH_OPTIONALS_AS_NULL_TASK = Object.assign(Object.assign({}, DEFAULT_RAW_COMMENT), { fileAttachment: null, uidsToNotify: null, reactions: null });
|
|
243
|
+
export const COMMENT_WITH_OPTIONALS_AS_NULL_TASK = Object.assign(Object.assign({}, RAW_COMMENT_WITH_OPTIONALS_AS_NULL_TASK), { taskId: RAW_COMMENT_WITH_OPTIONALS_AS_NULL_TASK.itemId, itemId: undefined });
|
|
244
|
+
export const RAW_COMMENT_WITH_ATTACHMENT_WITH_OPTIONALS_AS_NULL = Object.assign(Object.assign({}, DEFAULT_RAW_COMMENT), { fileAttachment: {
|
|
245
|
+
resourceType: 'file',
|
|
246
|
+
fileName: null,
|
|
247
|
+
fileSize: null,
|
|
248
|
+
fileType: null,
|
|
249
|
+
fileDuration: null,
|
|
250
|
+
uploadState: null,
|
|
251
|
+
image: null,
|
|
252
|
+
imageWidth: null,
|
|
253
|
+
imageHeight: null,
|
|
254
|
+
url: null,
|
|
255
|
+
title: null,
|
|
256
|
+
} });
|
|
257
|
+
export const COMMENT_WITH_ATTACHMENT_WITH_OPTIONALS_AS_NULL = Object.assign(Object.assign({}, RAW_COMMENT_WITH_ATTACHMENT_WITH_OPTIONALS_AS_NULL), { taskId: RAW_COMMENT_WITH_ATTACHMENT_WITH_OPTIONALS_AS_NULL.itemId, itemId: undefined });
|
|
258
|
+
export const RAW_COMMENT_WITH_OPTIONALS_AS_NULL_PROJECT = Object.assign(Object.assign({}, DEFAULT_RAW_COMMENT), { itemId: undefined, projectId: DEFAULT_PROJECT_ID });
|
|
259
|
+
export const COMMENT_WITH_OPTIONALS_AS_NULL_PROJECT = Object.assign(Object.assign({}, RAW_COMMENT_WITH_OPTIONALS_AS_NULL_PROJECT), { taskId: undefined });
|
|
260
|
+
export const DEFAULT_FOLDER = {
|
|
261
|
+
id: '789',
|
|
262
|
+
name: 'This is a folder',
|
|
263
|
+
workspaceId: '100',
|
|
264
|
+
defaultOrder: 3,
|
|
265
|
+
childOrder: 3,
|
|
266
|
+
isDeleted: false,
|
|
267
|
+
};
|
|
268
|
+
export const DEFAULT_COLLABORATOR = {
|
|
269
|
+
id: DEFAULT_USER_ID,
|
|
270
|
+
email: DEFAULT_USER_EMAIL,
|
|
271
|
+
fullName: DEFAULT_USER_NAME,
|
|
272
|
+
timezone: 'UTC',
|
|
273
|
+
imageId: null,
|
|
274
|
+
};
|
|
275
|
+
export const DEFAULT_COLLABORATOR_STATE = {
|
|
276
|
+
userId: DEFAULT_USER_ID,
|
|
277
|
+
projectId: DEFAULT_PROJECT_ID,
|
|
278
|
+
state: 'active',
|
|
279
|
+
isDeleted: false,
|
|
280
|
+
};
|
|
281
|
+
export const DEFAULT_APP_ID = '42';
|
|
282
|
+
export const DEFAULT_INSTALLATION_ID = '1001';
|
|
283
|
+
export const DEFAULT_UI_EXTENSION_ID = '2002';
|
|
284
|
+
export const DEFAULT_DISTRIBUTION_TOKEN = 'dist-token-abc';
|
|
285
|
+
export const DEFAULT_ACCESS_TOKEN_ID = '3003';
|
|
286
|
+
export const DEFAULT_APP = {
|
|
287
|
+
id: DEFAULT_APP_ID,
|
|
288
|
+
clientId: 'client-id-xyz',
|
|
289
|
+
status: 'public',
|
|
290
|
+
displayName: 'Sample App',
|
|
291
|
+
userId: DEFAULT_USER_ID,
|
|
292
|
+
createdAt: defaultDate(),
|
|
293
|
+
serviceUrl: 'https://example.com',
|
|
294
|
+
oauthRedirectUri: 'https://example.com/callback',
|
|
295
|
+
description: 'A sample app',
|
|
296
|
+
iconSm: 'https://example.com/icon-sm.png',
|
|
297
|
+
iconMd: 'https://example.com/icon-md.png',
|
|
298
|
+
iconLg: 'https://example.com/icon-lg.png',
|
|
299
|
+
appTokenScopes: ['data:read', 'task:add'],
|
|
300
|
+
};
|
|
301
|
+
export const DEFAULT_APP_WITH_USER_COUNT = Object.assign(Object.assign({}, DEFAULT_APP), { userCount: 12 });
|
|
302
|
+
export const DEFAULT_APP_SECRETS = {
|
|
303
|
+
clientId: 'client-id-xyz',
|
|
304
|
+
clientSecret: 'client-secret-xyz',
|
|
305
|
+
};
|
|
306
|
+
export const DEFAULT_APP_VERIFICATION_TOKEN = {
|
|
307
|
+
verificationToken: 'verif-token-abc',
|
|
308
|
+
};
|
|
309
|
+
export const DEFAULT_APP_TEST_TOKEN = {
|
|
310
|
+
accessToken: 'test-token-xyz',
|
|
311
|
+
};
|
|
312
|
+
export const DEFAULT_APP_DISTRIBUTION_TOKEN = {
|
|
313
|
+
distributionToken: DEFAULT_DISTRIBUTION_TOKEN,
|
|
314
|
+
};
|
|
315
|
+
export const DEFAULT_APP_WEBHOOK = {
|
|
316
|
+
status: 'active',
|
|
317
|
+
callbackUrl: 'https://example.com/webhook',
|
|
318
|
+
version: '1',
|
|
319
|
+
events: ['item:added', 'item:completed'],
|
|
320
|
+
};
|
|
321
|
+
export const DEFAULT_APP_INSTALLATION = {
|
|
322
|
+
id: DEFAULT_INSTALLATION_ID,
|
|
323
|
+
creator: DEFAULT_USER_ID,
|
|
324
|
+
createdTs: 1700000000,
|
|
325
|
+
installationType: 'user',
|
|
326
|
+
appTokenScopesValidated: true,
|
|
327
|
+
integration: DEFAULT_APP,
|
|
328
|
+
};
|
|
329
|
+
export const DEFAULT_USER_AUTHORIZATION = {
|
|
330
|
+
accessTokenId: DEFAULT_ACCESS_TOKEN_ID,
|
|
331
|
+
scope: ['data:read', 'task:add'],
|
|
332
|
+
scopeDescriptions: ['Read data', 'Add tasks'],
|
|
333
|
+
createdAt: new Date('2025-01-01T00:00:00Z'),
|
|
334
|
+
app: {
|
|
335
|
+
id: DEFAULT_APP_ID,
|
|
336
|
+
displayName: 'Sample App',
|
|
337
|
+
description: 'A sample app',
|
|
338
|
+
serviceUrl: 'https://example.com',
|
|
339
|
+
iconMd: 'https://example.com/icon-md.png',
|
|
340
|
+
},
|
|
341
|
+
};
|
|
342
|
+
export const DEFAULT_UI_EXTENSION = {
|
|
343
|
+
id: DEFAULT_UI_EXTENSION_ID,
|
|
344
|
+
integrationId: DEFAULT_APP_ID,
|
|
345
|
+
extensionId: 'ext-guid-1',
|
|
346
|
+
extensionType: 'context-menu',
|
|
347
|
+
contextType: 'task',
|
|
348
|
+
url: 'https://example.com/extension',
|
|
349
|
+
icon: 'https://example.com/icon.png',
|
|
350
|
+
name: 'My Extension',
|
|
351
|
+
description: 'Does things in the task context menu',
|
|
352
|
+
width: 400,
|
|
353
|
+
height: 600,
|
|
354
|
+
defVersion: 2,
|
|
355
|
+
minimumCardistVersion: '0.60',
|
|
356
|
+
};
|
|
357
|
+
export const DEFAULT_NOTE = {
|
|
358
|
+
id: DEFAULT_COMMENT_ID,
|
|
359
|
+
projectId: DEFAULT_PROJECT_ID,
|
|
360
|
+
content: DEFAULT_COMMENT_CONTENT,
|
|
361
|
+
postedAt: defaultDate(),
|
|
362
|
+
fileAttachment: DEFAULT_ATTACHMENT,
|
|
363
|
+
postedUid: DEFAULT_USER_ID,
|
|
364
|
+
uidsToNotify: null,
|
|
365
|
+
reactions: DEFAULT_COMMENT_REACTIONS,
|
|
366
|
+
isDeleted: false,
|
|
367
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
// In production the transport uses undici's own `fetch` (paired with the
|
|
3
|
+
// dispatcher) so the request client and dispatcher stay on one undici version.
|
|
4
|
+
// MSW intercepts the *global* `fetch`, not that separate undici instance, so
|
|
5
|
+
// force the transport onto the global `fetch` for every test in the suite; MSW
|
|
6
|
+
// then intercepts requests as usual. The real undici transport is covered
|
|
7
|
+
// directly by `http-dispatcher.test.ts` and `fetch-with-retry.test.ts`, which
|
|
8
|
+
// opt out of this seam with `vi.unmock('./http-dispatcher')`.
|
|
9
|
+
//
|
|
10
|
+
// This lives in its own setup file (not `msw-setup.ts`) because a hoisted
|
|
11
|
+
// `vi.mock` in a module that also re-exports values corrupts those exports.
|
|
12
|
+
vi.mock('../transport/http-dispatcher', async (importOriginal) => {
|
|
13
|
+
const actual = await importOriginal();
|
|
14
|
+
return Object.assign(Object.assign({}, actual), { getDefaultTransport: vi.fn(async () => undefined) });
|
|
15
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createHmac } from 'node:crypto';
|
|
2
|
+
export const CLIENT_SECRET = 'test-client-secret';
|
|
3
|
+
/** HMAC-SHA256 signs a raw body with the test client secret (or an override). */
|
|
4
|
+
export function sign(body, secret = CLIENT_SECRET) {
|
|
5
|
+
return createHmac('sha256', secret).update(body).digest('base64');
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Snake_case task payload matching the v1 webhook wire shape.
|
|
9
|
+
*/
|
|
10
|
+
export function rawTask(overrides = {}) {
|
|
11
|
+
return Object.assign({ id: '6XR4GqQQCW6Gv9h4', user_id: '2671355', project_id: '6XR4H993xv8H5qCR', section_id: null, parent_id: null, added_by_uid: '2671355', assigned_by_uid: null, responsible_uid: null, labels: [], deadline: null, duration: null, is_collapsed: false, checked: false, is_deleted: false, added_at: '2025-02-10T10:33:38.000000Z', completed_at: null, completed_by_uid: null, updated_at: '2025-02-10T10:33:38.000000Z', due: null, priority: 1, child_order: 3, content: 'Buy Milk', description: '', note_count: 0, day_order: -1, url: 'https://app.todoist.com/app/task/6XR4GqQQCW6Gv9h4' }, overrides);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Wraps an event's `event_data` in the snake_case envelope the backend sends
|
|
15
|
+
* (initiator, version, timestamps, etc). `extra` passes extra top-level keys
|
|
16
|
+
* like `event_data_extra`.
|
|
17
|
+
*/
|
|
18
|
+
export function envelope(event, eventData, extra) {
|
|
19
|
+
return Object.assign({ version: '1', user_id: '2671355', initiator: {
|
|
20
|
+
id: '2671355',
|
|
21
|
+
full_name: 'Alice',
|
|
22
|
+
email: 'alice@example.com',
|
|
23
|
+
image_id: 'ad38375bdb094286af59f1eab36d8f20',
|
|
24
|
+
is_premium: true,
|
|
25
|
+
}, event_name: event, event_data: eventData, triggered_at: '2025-02-10T10:39:38.000000Z' }, extra);
|
|
26
|
+
}
|