sunsama-api 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 (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +215 -0
  3. package/dist/cjs/client/index.js +347 -0
  4. package/dist/cjs/client/index.js.map +1 -0
  5. package/dist/cjs/errors/index.js +110 -0
  6. package/dist/cjs/errors/index.js.map +1 -0
  7. package/dist/cjs/index.js +21 -0
  8. package/dist/cjs/index.js.map +1 -0
  9. package/dist/cjs/queries/fragments/index.js +9 -0
  10. package/dist/cjs/queries/fragments/index.js.map +1 -0
  11. package/dist/cjs/queries/fragments/stream.js +74 -0
  12. package/dist/cjs/queries/fragments/stream.js.map +1 -0
  13. package/dist/cjs/queries/fragments/task.js +500 -0
  14. package/dist/cjs/queries/fragments/task.js.map +1 -0
  15. package/dist/cjs/queries/index.js +11 -0
  16. package/dist/cjs/queries/index.js.map +1 -0
  17. package/dist/cjs/queries/streams.js +19 -0
  18. package/dist/cjs/queries/streams.js.map +1 -0
  19. package/dist/cjs/queries/tasks.js +41 -0
  20. package/dist/cjs/queries/tasks.js.map +1 -0
  21. package/dist/cjs/queries/user.js +472 -0
  22. package/dist/cjs/queries/user.js.map +1 -0
  23. package/dist/cjs/types/api.js +9 -0
  24. package/dist/cjs/types/api.js.map +1 -0
  25. package/dist/cjs/types/client.js +6 -0
  26. package/dist/cjs/types/client.js.map +1 -0
  27. package/dist/cjs/types/common.js +6 -0
  28. package/dist/cjs/types/common.js.map +1 -0
  29. package/dist/cjs/types/index.js +8 -0
  30. package/dist/cjs/types/index.js.map +1 -0
  31. package/dist/cjs/utils/index.js +63 -0
  32. package/dist/cjs/utils/index.js.map +1 -0
  33. package/dist/esm/client/index.js +348 -0
  34. package/dist/esm/client/index.js.map +1 -0
  35. package/dist/esm/errors/index.js +105 -0
  36. package/dist/esm/errors/index.js.map +1 -0
  37. package/dist/esm/index.js +16 -0
  38. package/dist/esm/index.js.map +1 -0
  39. package/dist/esm/queries/fragments/index.js +6 -0
  40. package/dist/esm/queries/fragments/index.js.map +1 -0
  41. package/dist/esm/queries/fragments/stream.js +71 -0
  42. package/dist/esm/queries/fragments/stream.js.map +1 -0
  43. package/dist/esm/queries/fragments/task.js +497 -0
  44. package/dist/esm/queries/fragments/task.js.map +1 -0
  45. package/dist/esm/queries/index.js +8 -0
  46. package/dist/esm/queries/index.js.map +1 -0
  47. package/dist/esm/queries/streams.js +16 -0
  48. package/dist/esm/queries/streams.js.map +1 -0
  49. package/dist/esm/queries/tasks.js +38 -0
  50. package/dist/esm/queries/tasks.js.map +1 -0
  51. package/dist/esm/queries/user.js +469 -0
  52. package/dist/esm/queries/user.js.map +1 -0
  53. package/dist/esm/types/api.js +8 -0
  54. package/dist/esm/types/api.js.map +1 -0
  55. package/dist/esm/types/client.js +5 -0
  56. package/dist/esm/types/client.js.map +1 -0
  57. package/dist/esm/types/common.js +5 -0
  58. package/dist/esm/types/common.js.map +1 -0
  59. package/dist/esm/types/index.js +7 -0
  60. package/dist/esm/types/index.js.map +1 -0
  61. package/dist/esm/utils/index.js +57 -0
  62. package/dist/esm/utils/index.js.map +1 -0
  63. package/dist/types/client/index.d.ts +109 -0
  64. package/dist/types/client/index.d.ts.map +1 -0
  65. package/dist/types/errors/index.d.ts +67 -0
  66. package/dist/types/errors/index.d.ts.map +1 -0
  67. package/dist/types/index.d.ts +14 -0
  68. package/dist/types/index.d.ts.map +1 -0
  69. package/dist/types/queries/fragments/index.d.ts +6 -0
  70. package/dist/types/queries/fragments/index.d.ts.map +1 -0
  71. package/dist/types/queries/fragments/stream.d.ts +5 -0
  72. package/dist/types/queries/fragments/stream.d.ts.map +1 -0
  73. package/dist/types/queries/fragments/task.d.ts +8 -0
  74. package/dist/types/queries/fragments/task.d.ts.map +1 -0
  75. package/dist/types/queries/index.d.ts +8 -0
  76. package/dist/types/queries/index.d.ts.map +1 -0
  77. package/dist/types/queries/streams.d.ts +5 -0
  78. package/dist/types/queries/streams.d.ts.map +1 -0
  79. package/dist/types/queries/tasks.d.ts +6 -0
  80. package/dist/types/queries/tasks.d.ts.map +1 -0
  81. package/dist/types/queries/user.d.ts +5 -0
  82. package/dist/types/queries/user.d.ts.map +1 -0
  83. package/dist/types/types/api.d.ts +838 -0
  84. package/dist/types/types/api.d.ts.map +1 -0
  85. package/dist/types/types/client.d.ts +30 -0
  86. package/dist/types/types/client.d.ts.map +1 -0
  87. package/dist/types/types/common.d.ts +58 -0
  88. package/dist/types/types/common.d.ts.map +1 -0
  89. package/dist/types/types/index.d.ts +9 -0
  90. package/dist/types/types/index.d.ts.map +1 -0
  91. package/dist/types/utils/index.d.ts +35 -0
  92. package/dist/types/utils/index.d.ts.map +1 -0
  93. package/package.json +90 -0
@@ -0,0 +1,469 @@
1
+ /**
2
+ * User-related GraphQL queries
3
+ */
4
+ import { gql } from 'graphql-tag';
5
+ export const GET_USER_QUERY = gql `
6
+ query getUser {
7
+ currentUser {
8
+ _id
9
+ activationDate
10
+ admin
11
+ aka
12
+ calendar {
13
+ items {
14
+ id
15
+ accountId
16
+ google {
17
+ summary
18
+ summaryOverride
19
+ timeZone
20
+ selected
21
+ accessRole
22
+ accountId
23
+ __typename
24
+ }
25
+ microsoft {
26
+ id
27
+ name
28
+ color
29
+ hexColor
30
+ isDefaultCalendar
31
+ canShare
32
+ canViewPrivateItems
33
+ canEdit
34
+ isRemovable
35
+ allowedOnlineMeetingProviders
36
+ defaultOnlineMeetingProvider
37
+ isTallyingResponse
38
+ owner {
39
+ address
40
+ name
41
+ __typename
42
+ }
43
+ primary
44
+ accountId
45
+ __typename
46
+ }
47
+ __typename
48
+ }
49
+ __typename
50
+ }
51
+ services {
52
+ google {
53
+ scope
54
+ id
55
+ email
56
+ name
57
+ picture
58
+ locale
59
+ __typename
60
+ }
61
+ microsoft {
62
+ scope
63
+ id
64
+ email
65
+ name
66
+ isPersonalAccount
67
+ __typename
68
+ }
69
+ phoneNumber {
70
+ number
71
+ verified
72
+ otpExpiresAt
73
+ __typename
74
+ }
75
+ ssoEnforced
76
+ __typename
77
+ }
78
+ emails {
79
+ address
80
+ verified
81
+ __typename
82
+ }
83
+ primaryGroup {
84
+ groupId
85
+ __typename
86
+ }
87
+ onboarding
88
+ preferences {
89
+ clockStyle
90
+ defaultCalendarView
91
+ defaultHomeView
92
+ defaultMainPanel
93
+ defaultMobileCalendarView
94
+ defaultHideTasks
95
+ hideTeamEvtCopies
96
+ hideMessenger
97
+ disableSpellcheck
98
+ channelRecommendations
99
+ plannedTimeRecommendations
100
+ subtaskPlannedTimeRecommendations
101
+ startDayOfWeekOffset
102
+ workingSessionTransparency
103
+ workingSessionVisibility
104
+ workingSessionDuration
105
+ promptToUpdateStatus
106
+ darkMode
107
+ keyboardShortcuts
108
+ customKeyboardShortcuts {
109
+ id
110
+ disabled
111
+ global
112
+ key
113
+ metaKey
114
+ ctrlKey
115
+ shiftKey
116
+ __typename
117
+ }
118
+ autoArchiveThreshold
119
+ showDeclinedEvents
120
+ usePlannedTimeAsActualTime
121
+ rollToTop
122
+ includeWeekendInReflection
123
+ planningAutoRollover
124
+ autoFocus
125
+ focusBarDisabledTriggers
126
+ workloadThreshold
127
+ importEventFilters
128
+ autoImportEvents
129
+ importEventCompletionSync
130
+ workingSessionCalendarReminder
131
+ workingSessionBuffer
132
+ focusModeNextUpReminder
133
+ autoRescheduleWorkingSessionConflicts
134
+ autoRescheduleWorkingSessionCompletions
135
+ schedulingHours {
136
+ start {
137
+ hour
138
+ minute
139
+ __typename
140
+ }
141
+ end {
142
+ hour
143
+ minute
144
+ __typename
145
+ }
146
+ __typename
147
+ }
148
+ defaultEmailClient
149
+ timerNotificationsEnabled
150
+ timerNotificationsSoundId
151
+ timerPomodoroNotificationsSoundId
152
+ timerNotificationsVolume
153
+ timerNotificationsTimeRemainingTriggers
154
+ endOfDayMessageId
155
+ endOfDayCustomMessage
156
+ autoBreak
157
+ defaultTargetFocusDuration
158
+ defaultTargetBreakDuration
159
+ defaultFocusTimerView
160
+ completedTaskCalendarPinStyle
161
+ hideCompletedTasks
162
+ insertTaskPosition
163
+ chatToolFocusSyncTrigger
164
+ chatToolFocusSyncUpdateStatus
165
+ chatToolFocusSyncUpdateDnd
166
+ chatToolFocusSyncPrivacy
167
+ chatToolFocusSyncStatusEmoji
168
+ navigationPanelStyle
169
+ preferredAILanguage
170
+ preferredLanguage
171
+ visualizeTaskProjectedTimeOnCalendar
172
+ visualizeTaskActualTimeOnCalendar
173
+ __typename
174
+ }
175
+ contacts {
176
+ integrationEnabled
177
+ usesNewPeopleApi
178
+ accountId
179
+ __typename
180
+ }
181
+ createdAt
182
+ dailyPlanning {
183
+ snoozedUntilDate
184
+ lastDayPlanned
185
+ disabledSteps
186
+ importEventsWithoutInvitees
187
+ __typename
188
+ }
189
+ dailyShutdown {
190
+ snoozedUntilDate
191
+ lastDayShutdown
192
+ __typename
193
+ }
194
+ daysPlanned
195
+ daysShutdown
196
+ desktopApp {
197
+ darwin {
198
+ status
199
+ deferralDate
200
+ __typename
201
+ }
202
+ win32 {
203
+ status
204
+ deferralDate
205
+ __typename
206
+ }
207
+ linux {
208
+ status
209
+ deferralDate
210
+ __typename
211
+ }
212
+ __typename
213
+ }
214
+ mobileApp {
215
+ status
216
+ os
217
+ lastModified
218
+ __typename
219
+ }
220
+ lastAnnouncementCheckDate
221
+ lastModified
222
+ nodeId
223
+ notifySettings {
224
+ inviteeResponse {
225
+ subscribed
226
+ channels
227
+ __typename
228
+ }
229
+ invitedToEvent {
230
+ subscribed
231
+ channels
232
+ __typename
233
+ }
234
+ eventUpdated {
235
+ subscribed
236
+ channels
237
+ __typename
238
+ }
239
+ eventCancelled {
240
+ subscribed
241
+ channels
242
+ __typename
243
+ }
244
+ newComments {
245
+ subscribed
246
+ channels
247
+ __typename
248
+ }
249
+ shareTasks {
250
+ subscribed
251
+ channels
252
+ __typename
253
+ }
254
+ taskComment {
255
+ subscribed
256
+ channels
257
+ __typename
258
+ }
259
+ taskStream {
260
+ subscribed
261
+ channels
262
+ __typename
263
+ }
264
+ taskAssignee {
265
+ subscribed
266
+ channels
267
+ __typename
268
+ }
269
+ taskCompletion {
270
+ subscribed
271
+ channels
272
+ __typename
273
+ }
274
+ taskSchedule {
275
+ subscribed
276
+ channels
277
+ __typename
278
+ }
279
+ taskCreation {
280
+ subscribed
281
+ channels
282
+ __typename
283
+ }
284
+ eventReminders {
285
+ subscribed
286
+ channels
287
+ __typename
288
+ }
289
+ dossier {
290
+ subscribed
291
+ channels
292
+ __typename
293
+ }
294
+ planYourDay {
295
+ subscribed
296
+ channels
297
+ __typename
298
+ }
299
+ weeklyStats {
300
+ subscribed
301
+ channels
302
+ __typename
303
+ }
304
+ weekReview {
305
+ subscribed
306
+ channels
307
+ __typename
308
+ }
309
+ systemUpdates {
310
+ subscribed
311
+ channels
312
+ __typename
313
+ }
314
+ dailyWrapSeen {
315
+ subscribed
316
+ channels
317
+ __typename
318
+ }
319
+ dailyWrapReply {
320
+ subscribed
321
+ channels
322
+ __typename
323
+ }
324
+ __typename
325
+ }
326
+ profile {
327
+ profilePictureURL
328
+ firstname
329
+ lastname
330
+ timezone
331
+ timezoneWarningDisabled
332
+ profileThumbs {
333
+ image_24
334
+ image_32
335
+ image_48
336
+ image_72
337
+ image_192
338
+ __typename
339
+ }
340
+ useCase
341
+ onboardingEventSent
342
+ __typename
343
+ }
344
+ toursCompleted
345
+ username
346
+ waitList
347
+ weeklyPlanning {
348
+ hour
349
+ minute
350
+ isoWeekday
351
+ lastWeekPlanned
352
+ weeksPlanned
353
+ disabled
354
+ __typename
355
+ }
356
+ weeklyReview {
357
+ hour
358
+ minute
359
+ isoWeekday
360
+ lastWeekReviewed
361
+ weeksReviewed
362
+ disabled
363
+ __typename
364
+ }
365
+ lastArchiveCheckDate
366
+ integrationRequests
367
+ dayStart {
368
+ hour
369
+ minute
370
+ disabled
371
+ __typename
372
+ }
373
+ plannedDayStart {
374
+ hour
375
+ minute
376
+ disabled
377
+ __typename
378
+ }
379
+ dayEnd {
380
+ hour
381
+ minute
382
+ disabled
383
+ __typename
384
+ }
385
+ waitlistId
386
+ trialPeriod
387
+ qualificationAssessment
388
+ disappointmentIndex
389
+ emailCourses {
390
+ id
391
+ status
392
+ __typename
393
+ }
394
+ tracking {
395
+ facebook {
396
+ _fbp
397
+ _fbc
398
+ __typename
399
+ }
400
+ chatSetupConfigId
401
+ __typename
402
+ }
403
+ proficiencies {
404
+ id
405
+ count
406
+ proficient
407
+ proficientAt
408
+ firstPerformedAt
409
+ __typename
410
+ }
411
+ assistant {
412
+ scheduledCalls {
413
+ workflow
414
+ reminder {
415
+ schedule {
416
+ enabled
417
+ isoDayIndex
418
+ time {
419
+ hour
420
+ minute
421
+ __typename
422
+ }
423
+ __typename
424
+ }
425
+ __typename
426
+ }
427
+ __typename
428
+ }
429
+ __typename
430
+ }
431
+ dailyWrap {
432
+ reminder {
433
+ schedule {
434
+ enabled
435
+ isoDayIndex
436
+ time {
437
+ hour
438
+ minute
439
+ __typename
440
+ }
441
+ __typename
442
+ }
443
+ nextDeliveryAt
444
+ __typename
445
+ }
446
+ __typename
447
+ }
448
+ dailyCatchUp {
449
+ reminder {
450
+ schedule {
451
+ enabled
452
+ isoDayIndex
453
+ time {
454
+ hour
455
+ minute
456
+ __typename
457
+ }
458
+ __typename
459
+ }
460
+ nextDeliveryAt
461
+ __typename
462
+ }
463
+ __typename
464
+ }
465
+ __typename
466
+ }
467
+ }
468
+ `;
469
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/queries/user.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+chC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * API response and data types
3
+ *
4
+ * These types represent the structure of data returned by the Sunsama API.
5
+ * They will be populated based on the actual API documentation.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/types/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Client configuration and related types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/types/client.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Common utility types used throughout the library
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Type definitions for the Sunsama API wrapper
3
+ *
4
+ * This file exports all type definitions used throughout the library.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Utility functions for the Sunsama API wrapper
3
+ */
4
+ /**
5
+ * Validates that a string is not empty
6
+ *
7
+ * @param value - The string to validate
8
+ * @param fieldName - Name of the field (for error messages)
9
+ * @throws {Error} If the string is empty or only whitespace
10
+ */
11
+ export function validateNonEmptyString(value, fieldName) {
12
+ if (!value || value.trim().length === 0) {
13
+ throw new Error(`${fieldName} cannot be empty`);
14
+ }
15
+ }
16
+ /**
17
+ * Validates that a number is positive
18
+ *
19
+ * @param value - The number to validate
20
+ * @param fieldName - Name of the field (for error messages)
21
+ * @throws {Error} If the number is not positive
22
+ */
23
+ export function validatePositiveNumber(value, fieldName) {
24
+ if (value <= 0) {
25
+ throw new Error(`${fieldName} must be a positive number`);
26
+ }
27
+ }
28
+ /**
29
+ * Builds a URL with query parameters
30
+ *
31
+ * @param baseUrl - The base URL
32
+ * @param params - Query parameters to append
33
+ * @returns The complete URL with query string
34
+ */
35
+ export function buildUrlWithParams(baseUrl, params) {
36
+ if (!params || Object.keys(params).length === 0) {
37
+ return baseUrl;
38
+ }
39
+ const url = new URL(baseUrl);
40
+ Object.entries(params).forEach(([key, value]) => {
41
+ url.searchParams.append(key, String(value));
42
+ });
43
+ return url.toString();
44
+ }
45
+ /**
46
+ * Checks if a value is a plain object
47
+ *
48
+ * @param value - The value to check
49
+ * @returns True if the value is a plain object
50
+ */
51
+ export function isPlainObject(value) {
52
+ return (typeof value === 'object' &&
53
+ value !== null &&
54
+ value.constructor === Object &&
55
+ Object.prototype.toString.call(value) === '[object Object]');
56
+ }
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,SAAiB;IACrE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,SAAiB;IACrE,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,4BAA4B,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,MAAkD;IAElD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAE7B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC9C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,WAAW,KAAK,MAAM;QAC5B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Main Sunsama API client
3
+ *
4
+ * Provides a type-safe interface to interact with all Sunsama API endpoints.
5
+ */
6
+ import type { Stream, SunsamaClientConfig, Task, User } from '../types';
7
+ /**
8
+ * Main Sunsama API client class
9
+ *
10
+ * Provides a type-safe interface to interact with all Sunsama API endpoints.
11
+ */
12
+ export declare class SunsamaClient {
13
+ private static readonly BASE_URL;
14
+ private readonly config;
15
+ private readonly cookieJar;
16
+ private userId?;
17
+ private groupId?;
18
+ private timezone?;
19
+ /**
20
+ * Creates a new Sunsama client instance
21
+ *
22
+ * @param config - Client configuration options (optional)
23
+ */
24
+ constructor(config?: SunsamaClientConfig);
25
+ /**
26
+ * Gets the current client configuration
27
+ */
28
+ getConfig(): SunsamaClientConfig;
29
+ /**
30
+ * Checks if the client is authenticated
31
+ *
32
+ * @returns True if cookies are present in the jar
33
+ */
34
+ isAuthenticated(): Promise<boolean>;
35
+ /**
36
+ * Authenticates with email and password
37
+ *
38
+ * @param email - User email address
39
+ * @param password - User password
40
+ * @throws SunsamaAuthError if login fails
41
+ */
42
+ login(email: string, password: string): Promise<void>;
43
+ /**
44
+ * Clears all cookies from the jar and cached user data
45
+ */
46
+ logout(): void;
47
+ /**
48
+ * Makes an authenticated request to the Sunsama API
49
+ *
50
+ * @param path - The API endpoint path (e.g., '/tasks')
51
+ * @param options - Request options
52
+ * @returns The response from the API
53
+ * @internal
54
+ */
55
+ private request;
56
+ /**
57
+ * Makes a GraphQL request to the Sunsama API
58
+ *
59
+ * @param request - The GraphQL request
60
+ * @returns The GraphQL response
61
+ * @internal
62
+ */
63
+ private graphqlRequest;
64
+ /**
65
+ * Gets the current user information
66
+ *
67
+ * @returns The current user data
68
+ * @throws SunsamaAuthError if not authenticated or request fails
69
+ */
70
+ getUser(): Promise<User>;
71
+ /**
72
+ * Gets tasks for a specific day
73
+ *
74
+ * @param day - ISO date string (e.g., "2025-05-31")
75
+ * @param timezone - Timezone string (e.g., "America/New_York", defaults to user's timezone)
76
+ * @returns Array of tasks for the specified day
77
+ * @throws SunsamaAuthError if not authenticated or request fails
78
+ */
79
+ getTasksByDay(day: string, timezone?: string): Promise<Task[]>;
80
+ /**
81
+ * Gets tasks from the backlog
82
+ *
83
+ * @returns Array of backlog tasks
84
+ * @throws SunsamaAuthError if not authenticated or request fails
85
+ */
86
+ getTasksBacklog(): Promise<Task[]>;
87
+ /**
88
+ * Gets streams for the user's group
89
+ *
90
+ * @returns Array of streams for the user's group
91
+ * @throws SunsamaAuthError if not authenticated or request fails
92
+ */
93
+ getStreamsByGroupId(): Promise<Stream[]>;
94
+ /**
95
+ * Gets the user's timezone
96
+ *
97
+ * @returns The user's timezone string (e.g., "America/New_York")
98
+ * @throws SunsamaAuthError if not authenticated or request fails
99
+ */
100
+ getUserTimezone(): Promise<string>;
101
+ /**
102
+ * Sets a session token as a cookie in the jar
103
+ *
104
+ * @param token - The session token to set
105
+ * @internal
106
+ */
107
+ private setSessionTokenAsCookie;
108
+ }
109
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAUV,MAAM,EACN,mBAAmB,EACnB,IAAI,EACJ,IAAI,EACL,MAAM,UAAU,CAAC;AAElB;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAE7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAE1B;;;;OAIG;gBACS,MAAM,GAAE,mBAAwB;IAU5C;;OAEG;IACH,SAAS,IAAI,mBAAmB;IAIhC;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC;;;;;;OAMG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoE3D;;OAEG;IACH,MAAM,IAAI,IAAI;IAOd;;;;;;;OAOG;YACW,OAAO;IAyCrB;;;;;;OAMG;YACW,cAAc;IAqC5B;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB9B;;;;;;;OAOG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAuCpE;;;;;OAKG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAkCxC;;;;;OAKG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA6B9C;;;;;OAKG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAexC;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;CAiBhC"}