sunsama-api 0.1.0 → 0.2.1

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 (40) hide show
  1. package/README.md +66 -8
  2. package/dist/cjs/client/index.js +317 -21
  3. package/dist/cjs/client/index.js.map +1 -1
  4. package/dist/cjs/queries/index.js +1 -0
  5. package/dist/cjs/queries/index.js.map +1 -1
  6. package/dist/cjs/queries/mutations/createTask.js +32 -0
  7. package/dist/cjs/queries/mutations/createTask.js.map +1 -0
  8. package/dist/cjs/queries/mutations/index.js +10 -0
  9. package/dist/cjs/queries/mutations/index.js.map +1 -0
  10. package/dist/cjs/queries/mutations/updateTaskComplete.js +91 -0
  11. package/dist/cjs/queries/mutations/updateTaskComplete.js.map +1 -0
  12. package/dist/cjs/queries/mutations/updateTaskDelete.js +26 -0
  13. package/dist/cjs/queries/mutations/updateTaskDelete.js.map +1 -0
  14. package/dist/esm/client/index.js +298 -2
  15. package/dist/esm/client/index.js.map +1 -1
  16. package/dist/esm/queries/index.js +1 -0
  17. package/dist/esm/queries/index.js.map +1 -1
  18. package/dist/esm/queries/mutations/createTask.js +29 -0
  19. package/dist/esm/queries/mutations/createTask.js.map +1 -0
  20. package/dist/esm/queries/mutations/index.js +7 -0
  21. package/dist/esm/queries/mutations/index.js.map +1 -0
  22. package/dist/esm/queries/mutations/updateTaskComplete.js +88 -0
  23. package/dist/esm/queries/mutations/updateTaskComplete.js.map +1 -0
  24. package/dist/esm/queries/mutations/updateTaskDelete.js +23 -0
  25. package/dist/esm/queries/mutations/updateTaskDelete.js.map +1 -0
  26. package/dist/types/client/index.d.ts +110 -1
  27. package/dist/types/client/index.d.ts.map +1 -1
  28. package/dist/types/queries/index.d.ts +1 -0
  29. package/dist/types/queries/index.d.ts.map +1 -1
  30. package/dist/types/queries/mutations/createTask.d.ts +13 -0
  31. package/dist/types/queries/mutations/createTask.d.ts.map +1 -0
  32. package/dist/types/queries/mutations/index.d.ts +7 -0
  33. package/dist/types/queries/mutations/index.d.ts.map +1 -0
  34. package/dist/types/queries/mutations/updateTaskComplete.d.ts +23 -0
  35. package/dist/types/queries/mutations/updateTaskComplete.d.ts.map +1 -0
  36. package/dist/types/queries/mutations/updateTaskDelete.d.ts +13 -0
  37. package/dist/types/queries/mutations/updateTaskDelete.d.ts.map +1 -0
  38. package/dist/types/types/api.d.ts +205 -0
  39. package/dist/types/types/api.d.ts.map +1 -1
  40. package/package.json +26 -1
package/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Sunsama API TypeScript Wrapper
2
2
 
3
+ > **Disclaimer**: This is an unofficial wrapper for the Sunsama API. It is not affiliated with or endorsed by Sunsama.
4
+
5
+ > **A Note from the Author**: I'm a huge fan and advocate of Sunsama. I've been using it daily for over a year and it's transformed how I plan my days. I created this package because I wanted to pull my tasks into other systems. I plan to maintain this package until either Sunsama releases an official API or I stop using the service. If you build something on top of `sunsama-api` feel free to share what you're building.
6
+
3
7
  A comprehensive TypeScript wrapper for the Sunsama API, providing type-safe access to daily planning and task management functionality.
4
8
 
5
9
  [![npm version](https://badge.fury.io/js/sunsama-api.svg)](https://www.npmjs.com/package/sunsama-api)
@@ -70,10 +74,6 @@ async function example() {
70
74
  }
71
75
  ```
72
76
 
73
- ## API Documentation
74
-
75
- Full API documentation is available at [docs link - to be added].
76
-
77
77
  ## Authentication
78
78
 
79
79
  The client uses email/password authentication or session tokens:
@@ -118,6 +118,68 @@ const tasksWithTz = await client.getTasksByDay('2025-01-15', 'America/New_York')
118
118
 
119
119
  // Get backlog tasks
120
120
  const backlog = await client.getTasksBacklog();
121
+
122
+ // Create a new task
123
+ const newTask = await client.createTask('Complete project documentation');
124
+
125
+ // Create a task with options
126
+ const taskWithOptions = await client.createTask('Review pull requests', {
127
+ notes: 'Check all open PRs in the main repository',
128
+ timeEstimate: 30,
129
+ streamIds: ['stream-id-1']
130
+ });
131
+
132
+ // Create a task with due date and snooze
133
+ const scheduledTask = await client.createTask('Follow up with client', {
134
+ dueDate: new Date('2025-01-20'),
135
+ snoozeUntil: new Date('2025-01-15T09:00:00')
136
+ });
137
+
138
+ // Create a task with custom ID (useful for tracking/deletion)
139
+ const taskId = SunsamaClient.generateTaskId(); // Generate MongoDB ObjectId-style ID
140
+ const taskWithCustomId = await client.createTask('Custom task', {
141
+ taskId: taskId,
142
+ notes: 'Detailed description',
143
+ private: false,
144
+ streamIds: ['stream-1', 'stream-2'],
145
+ timeEstimate: 60
146
+ });
147
+
148
+ // Generate task IDs for external use
149
+ const uniqueId = SunsamaClient.generateTaskId();
150
+ console.log(uniqueId); // "675a1b2c3d4e5f6789abcdef"
151
+
152
+ // Mark a task as complete
153
+ const completeResult = await client.updateTaskComplete('taskId');
154
+
155
+ // Mark complete with specific timestamp
156
+ const completeResultTimed = await client.updateTaskComplete('taskId', '2025-01-15T10:30:00Z');
157
+
158
+ // Get full task details in response
159
+ const completeResultFull = await client.updateTaskComplete('taskId', new Date(), false);
160
+
161
+ // Delete a task
162
+ const deleteResult = await client.deleteTask('taskId');
163
+
164
+ // Delete with full response payload
165
+ const deleteResultFull = await client.deleteTask('taskId', false);
166
+
167
+ // Delete a merged task
168
+ const deleteResultMerged = await client.deleteTask('taskId', true, true);
169
+ ```
170
+
171
+ ### Task ID Generation
172
+ ```typescript
173
+ // Generate MongoDB ObjectId-style task IDs
174
+ const taskId = SunsamaClient.generateTaskId();
175
+ console.log(taskId); // "675a1b2c3d4e5f6789abcdef"
176
+
177
+ // Use with createTask for controlled task creation
178
+ const customTask = await client.createTask('My custom task', {
179
+ taskId: SunsamaClient.generateTaskId(),
180
+ notes: 'Task with custom ID for tracking',
181
+ timeEstimate: 45
182
+ });
121
183
  ```
122
184
 
123
185
  ### Streams (Channels)
@@ -199,10 +261,6 @@ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md)
199
261
 
200
262
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
201
263
 
202
- ## Disclaimer
203
-
204
- This is an unofficial wrapper for the Sunsama API. It is not affiliated with or endorsed by Sunsama.
205
-
206
264
  ## Support
207
265
 
208
266
  If you encounter any issues or have questions:
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.SunsamaClient = void 0;
9
9
  const graphql_1 = require("graphql");
10
10
  const tough_cookie_1 = require("tough-cookie");
11
- const errors_1 = require("../errors");
12
- const queries_1 = require("../queries");
11
+ const index_js_1 = require("../errors/index.js");
12
+ const index_js_2 = require("../queries/index.js");
13
13
  /**
14
14
  * Main Sunsama API client class
15
15
  *
@@ -77,7 +77,7 @@ class SunsamaClient {
77
77
  // For login, we expect a 302 redirect on success
78
78
  if (response.status !== 302) {
79
79
  const responseText = await response.text();
80
- throw new errors_1.SunsamaAuthError(`Login failed: ${response.status} ${response.statusText}. Response: ${responseText}`);
80
+ throw new index_js_1.SunsamaAuthError(`Login failed: ${response.status} ${response.statusText}. Response: ${responseText}`);
81
81
  }
82
82
  // Extract and store cookies from response
83
83
  const setCookieHeader = response.headers.get('set-cookie');
@@ -87,7 +87,7 @@ class SunsamaClient {
87
87
  response.headers.forEach((value, key) => {
88
88
  allHeaders[key] = value;
89
89
  });
90
- throw new errors_1.SunsamaAuthError(`No session cookie received from login. Response headers: ${JSON.stringify(allHeaders, null, 2)}`);
90
+ throw new index_js_1.SunsamaAuthError(`No session cookie received from login. Response headers: ${JSON.stringify(allHeaders, null, 2)}`);
91
91
  }
92
92
  // Store the cookie in the jar
93
93
  try {
@@ -95,14 +95,14 @@ class SunsamaClient {
95
95
  await this.cookieJar.setCookie(setCookieHeader, loginUrl);
96
96
  }
97
97
  catch (error) {
98
- throw new errors_1.SunsamaAuthError(`Failed to store session cookie: ${error instanceof Error ? error.message : 'Unknown error'}`);
98
+ throw new index_js_1.SunsamaAuthError(`Failed to store session cookie: ${error instanceof Error ? error.message : 'Unknown error'}`);
99
99
  }
100
100
  }
101
101
  catch (error) {
102
- if (error instanceof errors_1.SunsamaAuthError) {
102
+ if (error instanceof index_js_1.SunsamaAuthError) {
103
103
  throw error;
104
104
  }
105
- throw new errors_1.SunsamaAuthError(`Login request failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
105
+ throw new index_js_1.SunsamaAuthError(`Login request failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
106
106
  }
107
107
  }
108
108
  /**
@@ -183,11 +183,11 @@ class SunsamaClient {
183
183
  });
184
184
  if (!response.ok) {
185
185
  const responseText = await response.text();
186
- throw new errors_1.SunsamaAuthError(`GraphQL request failed: ${response.status} ${response.statusText}. Response: ${responseText}`);
186
+ throw new index_js_1.SunsamaAuthError(`GraphQL request failed: ${response.status} ${response.statusText}. Response: ${responseText}`);
187
187
  }
188
188
  const result = (await response.json());
189
189
  if (result.errors && result.errors.length > 0) {
190
- throw new errors_1.SunsamaAuthError(`GraphQL errors: ${result.errors.map(e => e.message).join(', ')}`);
190
+ throw new index_js_1.SunsamaAuthError(`GraphQL errors: ${result.errors.map(e => e.message).join(', ')}`);
191
191
  }
192
192
  return result;
193
193
  }
@@ -201,11 +201,11 @@ class SunsamaClient {
201
201
  const request = {
202
202
  operationName: 'getUser',
203
203
  variables: {},
204
- query: queries_1.GET_USER_QUERY,
204
+ query: index_js_2.GET_USER_QUERY,
205
205
  };
206
206
  const response = await this.graphqlRequest(request);
207
207
  if (!response.data) {
208
- throw new errors_1.SunsamaAuthError('No user data received');
208
+ throw new index_js_1.SunsamaAuthError('No user data received');
209
209
  }
210
210
  const user = response.data.currentUser;
211
211
  // Cache user ID, group ID, and timezone for future requests
@@ -229,7 +229,7 @@ class SunsamaClient {
229
229
  }
230
230
  const userTimezone = timezone || this.timezone || 'UTC';
231
231
  if (!this.groupId) {
232
- throw new errors_1.SunsamaAuthError('Unable to determine group ID from user data. User primaryGroup is required.');
232
+ throw new index_js_1.SunsamaAuthError('Unable to determine group ID from user data. User primaryGroup is required.');
233
233
  }
234
234
  const variables = {
235
235
  day,
@@ -240,11 +240,11 @@ class SunsamaClient {
240
240
  const request = {
241
241
  operationName: 'getTasksByDay',
242
242
  variables: { input: variables },
243
- query: queries_1.GET_TASKS_BY_DAY_QUERY,
243
+ query: index_js_2.GET_TASKS_BY_DAY_QUERY,
244
244
  };
245
245
  const response = await this.graphqlRequest(request);
246
246
  if (!response.data) {
247
- throw new errors_1.SunsamaAuthError('No task data received');
247
+ throw new index_js_1.SunsamaAuthError('No task data received');
248
248
  }
249
249
  return response.data.tasksByDayV2;
250
250
  }
@@ -260,7 +260,7 @@ class SunsamaClient {
260
260
  await this.getUser();
261
261
  }
262
262
  if (!this.groupId) {
263
- throw new errors_1.SunsamaAuthError('Unable to determine group ID from user data. User primaryGroup is required.');
263
+ throw new index_js_1.SunsamaAuthError('Unable to determine group ID from user data. User primaryGroup is required.');
264
264
  }
265
265
  const variables = {
266
266
  userId: this.userId,
@@ -269,11 +269,11 @@ class SunsamaClient {
269
269
  const request = {
270
270
  operationName: 'getTasksBacklog',
271
271
  variables,
272
- query: queries_1.GET_TASKS_BACKLOG_QUERY,
272
+ query: index_js_2.GET_TASKS_BACKLOG_QUERY,
273
273
  };
274
274
  const response = await this.graphqlRequest(request);
275
275
  if (!response.data) {
276
- throw new errors_1.SunsamaAuthError('No backlog data received');
276
+ throw new index_js_1.SunsamaAuthError('No backlog data received');
277
277
  }
278
278
  return response.data.tasksBacklog;
279
279
  }
@@ -289,16 +289,16 @@ class SunsamaClient {
289
289
  await this.getUser();
290
290
  }
291
291
  if (!this.groupId) {
292
- throw new errors_1.SunsamaAuthError('Unable to determine group ID from user data. User primaryGroup is required.');
292
+ throw new index_js_1.SunsamaAuthError('Unable to determine group ID from user data. User primaryGroup is required.');
293
293
  }
294
294
  const request = {
295
295
  operationName: 'getStreamsByGroupId',
296
296
  variables: { groupId: this.groupId },
297
- query: queries_1.GET_STREAMS_BY_GROUP_ID_QUERY,
297
+ query: index_js_2.GET_STREAMS_BY_GROUP_ID_QUERY,
298
298
  };
299
299
  const response = await this.graphqlRequest(request);
300
300
  if (!response.data) {
301
- throw new errors_1.SunsamaAuthError('No stream data received');
301
+ throw new index_js_1.SunsamaAuthError('No stream data received');
302
302
  }
303
303
  return response.data.streamsByGroupId;
304
304
  }
@@ -314,10 +314,305 @@ class SunsamaClient {
314
314
  await this.getUser();
315
315
  }
316
316
  if (!this.timezone) {
317
- throw new errors_1.SunsamaAuthError('Unable to determine timezone from user data. User profile.timezone is required.');
317
+ throw new index_js_1.SunsamaAuthError('Unable to determine timezone from user data. User profile.timezone is required.');
318
318
  }
319
319
  return this.timezone;
320
320
  }
321
+ /**
322
+ * Marks a task as complete
323
+ *
324
+ * @param taskId - The ID of the task to mark as complete
325
+ * @param completeOn - The date/time when the task was completed (defaults to current time)
326
+ * @param limitResponsePayload - Whether to limit the response payload size (defaults to true)
327
+ * @returns The update result with success status and optionally the updated task
328
+ * @throws SunsamaAuthError if not authenticated or request fails
329
+ *
330
+ * @example
331
+ * ```typescript
332
+ * // Mark a task as complete with current timestamp
333
+ * const result = await client.updateTaskComplete('taskId');
334
+ *
335
+ * // Mark complete with specific timestamp
336
+ * const result = await client.updateTaskComplete('taskId', '2025-01-15T10:30:00Z');
337
+ *
338
+ * // Get full task details in response
339
+ * const result = await client.updateTaskComplete('taskId', new Date(), false);
340
+ * ```
341
+ */
342
+ async updateTaskComplete(taskId, completeOn, limitResponsePayload = true) {
343
+ // Convert Date to ISO string if needed
344
+ let completeOnString;
345
+ if (completeOn instanceof Date) {
346
+ completeOnString = completeOn.toISOString();
347
+ }
348
+ else if (completeOn) {
349
+ completeOnString = completeOn;
350
+ }
351
+ else {
352
+ // Default to current time
353
+ completeOnString = new Date().toISOString();
354
+ }
355
+ const variables = {
356
+ taskId,
357
+ completeOn: completeOnString,
358
+ limitResponsePayload,
359
+ };
360
+ const request = {
361
+ operationName: 'updateTaskComplete',
362
+ variables: { input: variables },
363
+ query: index_js_2.UPDATE_TASK_COMPLETE_MUTATION,
364
+ };
365
+ const response = await this.graphqlRequest(request);
366
+ if (!response.data) {
367
+ throw new index_js_1.SunsamaAuthError('No response data received');
368
+ }
369
+ return response.data.updateTaskComplete;
370
+ }
371
+ /**
372
+ * Deletes a task
373
+ *
374
+ * @param taskId - The ID of the task to delete
375
+ * @param limitResponsePayload - Whether to limit response size (defaults to true)
376
+ * @param wasTaskMerged - Whether the task was merged before deletion (defaults to false)
377
+ * @returns The update result with success status
378
+ * @throws SunsamaAuthError if not authenticated or request fails
379
+ *
380
+ * @example
381
+ * ```typescript
382
+ * // Delete a task
383
+ * const result = await client.deleteTask('taskId');
384
+ *
385
+ * // Delete with full response payload
386
+ * const result = await client.deleteTask('taskId', false);
387
+ *
388
+ * // Delete a merged task
389
+ * const result = await client.deleteTask('taskId', true, true);
390
+ * ```
391
+ */
392
+ async deleteTask(taskId, limitResponsePayload = true, wasTaskMerged = false) {
393
+ const variables = {
394
+ taskId,
395
+ limitResponsePayload,
396
+ wasTaskMerged,
397
+ };
398
+ const request = {
399
+ operationName: 'updateTaskDelete',
400
+ variables: { input: variables },
401
+ query: index_js_2.UPDATE_TASK_DELETE_MUTATION,
402
+ };
403
+ const response = await this.graphqlRequest(request);
404
+ if (!response.data) {
405
+ throw new index_js_1.SunsamaAuthError('No response data received');
406
+ }
407
+ return response.data.updateTaskDelete;
408
+ }
409
+ /**
410
+ * Creates a new task with flexible options
411
+ *
412
+ * @param text - The main text/title of the task
413
+ * @param options - Additional task properties (including optional custom taskId)
414
+ * @returns The created task result with success status
415
+ * @throws SunsamaAuthError if not authenticated or request fails
416
+ *
417
+ * @example
418
+ * ```typescript
419
+ * // Create a simple task (ID auto-generated)
420
+ * const result = await client.createTask('Complete project documentation');
421
+ *
422
+ * // Create a task with options
423
+ * const result = await client.createTask('Review pull requests', {
424
+ * notes: 'Check all open PRs in the main repository',
425
+ * timeEstimate: 30,
426
+ * streamIds: ['stream-id-1']
427
+ * });
428
+ *
429
+ * // Create a task with custom ID (useful for tracking/deletion)
430
+ * const customId = SunsamaClient.generateTaskId();
431
+ * const result = await client.createTask('Follow up with client', {
432
+ * taskId: customId,
433
+ * snoozeUntil: new Date('2025-01-15T09:00:00')
434
+ * });
435
+ * ```
436
+ */
437
+ async createTask(text, options) {
438
+ // Ensure we have user context
439
+ if (!this.userId || !this.groupId) {
440
+ await this.getUser();
441
+ }
442
+ if (!this.userId || !this.groupId) {
443
+ throw new index_js_1.SunsamaAuthError('Unable to determine user ID or group ID');
444
+ }
445
+ // Use provided task ID or generate a new one
446
+ const taskId = options?.taskId || SunsamaClient.generateTaskId();
447
+ // Generate timestamps
448
+ const now = new Date().toISOString();
449
+ // Build collaborative editing snapshot for notes
450
+ const collabSnapshot = this.createCollabSnapshot(taskId, options?.notes || '');
451
+ // Handle snooze configuration
452
+ let snooze = null;
453
+ if (options?.snoozeUntil) {
454
+ const snoozeDate = options.snoozeUntil instanceof Date ? options.snoozeUntil : new Date(options.snoozeUntil);
455
+ snooze = {
456
+ userId: this.userId,
457
+ date: now,
458
+ until: snoozeDate.toISOString(),
459
+ __typename: 'TaskSnooze',
460
+ };
461
+ }
462
+ // Handle due date
463
+ let dueDate = null;
464
+ if (options?.dueDate) {
465
+ dueDate = options.dueDate instanceof Date ? options.dueDate.toISOString() : options.dueDate;
466
+ }
467
+ // Build the complete task input
468
+ const taskInput = {
469
+ _id: taskId,
470
+ groupId: this.groupId,
471
+ taskType: 'outcomes',
472
+ streamIds: options?.streamIds || [],
473
+ recommendedStreamId: null,
474
+ eventInfo: null,
475
+ seededEventIds: null,
476
+ private: options?.private || false,
477
+ assigneeId: this.userId,
478
+ createdBy: this.userId,
479
+ integration: null,
480
+ deleted: false,
481
+ text,
482
+ notes: options?.notes || '',
483
+ notesMarkdown: null,
484
+ notesChecksum: null,
485
+ editorVersion: 3,
486
+ collabSnapshot,
487
+ completed: false,
488
+ completedBy: null,
489
+ completeDate: null,
490
+ completeOn: null,
491
+ archivedAt: null,
492
+ duration: null,
493
+ runDate: null,
494
+ snooze,
495
+ timeHorizon: null,
496
+ dueDate,
497
+ comments: [],
498
+ orderings: [],
499
+ backlogOrderings: [],
500
+ subtasks: [],
501
+ subtasksCollapsed: null,
502
+ sequence: null,
503
+ followers: [],
504
+ recommendedTimeEstimate: null,
505
+ timeEstimate: options?.timeEstimate || null,
506
+ actualTime: [],
507
+ scheduledTime: [],
508
+ createdAt: now,
509
+ lastModified: now,
510
+ objectiveId: null,
511
+ ritual: null,
512
+ };
513
+ const variables = {
514
+ task: taskInput,
515
+ groupId: this.groupId,
516
+ position: undefined,
517
+ };
518
+ const request = {
519
+ operationName: 'createTask',
520
+ variables,
521
+ query: index_js_2.CREATE_TASK_MUTATION,
522
+ };
523
+ const response = await this.graphqlRequest(request);
524
+ if (!response.data) {
525
+ throw new index_js_1.SunsamaAuthError('No response data received');
526
+ }
527
+ return response.data.createTaskV2;
528
+ }
529
+ /**
530
+ * Generates a unique task ID in MongoDB ObjectId format
531
+ *
532
+ * This method creates a 24-character hexadecimal string following MongoDB ObjectId conventions:
533
+ * - First 8 chars: Unix timestamp (4 bytes)
534
+ * - Next 10 chars: Random value (5 bytes)
535
+ * - Last 6 chars: Incrementing counter (3 bytes)
536
+ *
537
+ * @returns A 24-character hexadecimal string compatible with Sunsama's task ID format
538
+ * @example
539
+ * ```typescript
540
+ * const taskId = SunsamaClient.generateTaskId();
541
+ * console.log(taskId); // "507f1f77bcf86cd799439011"
542
+ * ```
543
+ */
544
+ static generateTaskId() {
545
+ // Get current timestamp (4 bytes = 8 hex chars)
546
+ const timestamp = Math.floor(Date.now() / 1000);
547
+ const timestampHex = timestamp.toString(16).padStart(8, '0');
548
+ // Generate random value (5 bytes = 10 hex chars)
549
+ const randomValue = SunsamaClient.getRandomValue();
550
+ // Generate counter (3 bytes = 6 hex chars) - increment for each ID generation
551
+ const counter = SunsamaClient.getNextCounter();
552
+ const counterHex = counter.toString(16).padStart(6, '0');
553
+ return timestampHex + randomValue + counterHex;
554
+ }
555
+ /**
556
+ * Gets a random value for ObjectId generation (5 bytes = 10 hex chars)
557
+ * @internal
558
+ */
559
+ static getRandomValue() {
560
+ // Generate 5 random bytes for the random portion
561
+ const randomBytes = new Uint8Array(5);
562
+ if (typeof crypto !== 'undefined' && crypto.getRandomValues) {
563
+ crypto.getRandomValues(randomBytes);
564
+ }
565
+ else {
566
+ // Fallback for Node.js environments
567
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
568
+ const cryptoModule = require('crypto');
569
+ const buffer = cryptoModule.randomBytes(5);
570
+ randomBytes.set(buffer);
571
+ }
572
+ return Array.from(randomBytes)
573
+ .map(b => b.toString(16).padStart(2, '0'))
574
+ .join('');
575
+ }
576
+ /**
577
+ * Gets the next counter value for ID generation (3 bytes = 6 hex chars)
578
+ * @internal
579
+ */
580
+ static getNextCounter() {
581
+ SunsamaClient._counter = (SunsamaClient._counter + 1) % 0xffffff;
582
+ return SunsamaClient._counter;
583
+ }
584
+ /**
585
+ * Creates a collaborative editing snapshot for task notes
586
+ *
587
+ * @param taskId - The task ID
588
+ * @param notes - The notes content
589
+ * @returns CollabSnapshot object
590
+ * @internal
591
+ */
592
+ createCollabSnapshot(taskId, notes) {
593
+ if (!notes) {
594
+ return null;
595
+ }
596
+ // This is a simplified version - the actual encoding might be more complex
597
+ const docName = `tasks/notes/${taskId}`;
598
+ return {
599
+ state: {
600
+ version: 'v1_sv',
601
+ docName,
602
+ clock: 0,
603
+ value: 'AeC61NgLAQ==', // Base64 encoded empty state
604
+ },
605
+ updates: [
606
+ {
607
+ version: 'v1',
608
+ action: 'update',
609
+ docName,
610
+ clock: 0,
611
+ value: 'AQHgutTYCwAHAQdkZWZhdWx0AwlwYXJhZ3JhcGgA', // Base64 encoded paragraph structure
612
+ },
613
+ ],
614
+ };
615
+ }
321
616
  /**
322
617
  * Sets a session token as a cookie in the jar
323
618
  *
@@ -344,4 +639,5 @@ class SunsamaClient {
344
639
  }
345
640
  exports.SunsamaClient = SunsamaClient;
346
641
  SunsamaClient.BASE_URL = 'https://api.sunsama.com';
642
+ SunsamaClient._counter = Math.floor(Math.random() * 0xffffff);
347
643
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,5 @@ tslib_1.__exportStar(require("./user.js"), exports);
8
8
  tslib_1.__exportStar(require("./tasks.js"), exports);
9
9
  tslib_1.__exportStar(require("./streams.js"), exports);
10
10
  tslib_1.__exportStar(require("./fragments/index.js"), exports);
11
+ tslib_1.__exportStar(require("./mutations/index.js"), exports);
11
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/queries/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,oDAA0B;AAC1B,qDAA2B;AAC3B,uDAA6B;AAC7B,+DAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/queries/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,oDAA0B;AAC1B,qDAA2B;AAC3B,uDAA6B;AAC7B,+DAAqC;AACrC,+DAAqC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * GraphQL mutation for creating a new task
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CREATE_TASK_MUTATION = void 0;
7
+ const graphql_tag_1 = require("graphql-tag");
8
+ /**
9
+ * Mutation for creating a new task
10
+ *
11
+ * Variables:
12
+ * - task: The complete task object to create
13
+ * - groupId: The group ID (duplicated from task for API requirements)
14
+ * - position: Optional position parameter
15
+ */
16
+ exports.CREATE_TASK_MUTATION = (0, graphql_tag_1.gql) `
17
+ mutation createTask($task: TaskInput!, $groupId: String!, $position: String) {
18
+ createTaskV2(task: $task, groupId: $groupId, position: $position) {
19
+ success
20
+ error
21
+ updatedFields {
22
+ recommendedStreamId
23
+ streamIds
24
+ recommendedTimeEstimate
25
+ timeEstimate
26
+ __typename
27
+ }
28
+ __typename
29
+ }
30
+ }
31
+ `;
32
+ //# sourceMappingURL=createTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTask.js","sourceRoot":"","sources":["../../../../src/queries/mutations/createTask.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,6CAAkC;AAElC;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,IAAA,iBAAG,EAAA;;;;;;;;;;;;;;;CAetC,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * GraphQL mutations exports
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const tslib_1 = require("tslib");
7
+ tslib_1.__exportStar(require("./updateTaskComplete.js"), exports);
8
+ tslib_1.__exportStar(require("./updateTaskDelete.js"), exports);
9
+ tslib_1.__exportStar(require("./createTask.js"), exports);
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/queries/mutations/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,kEAAwC;AACxC,gEAAsC;AACtC,0DAAgC"}