recal-sdk 0.3.2 → 1.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/README.md +24 -792
- package/dist/client/client/client.gen.d.ts +3 -0
- package/dist/client/client/client.gen.d.ts.map +1 -0
- package/dist/client/client/client.gen.js +205 -0
- package/dist/client/client/client.gen.js.map +1 -0
- package/dist/client/client/index.d.ts +9 -0
- package/dist/client/client/index.d.ts.map +1 -0
- package/dist/client/client/index.js +7 -0
- package/dist/client/client/index.js.map +1 -0
- package/dist/client/client/types.gen.d.ts +125 -0
- package/dist/client/client/types.gen.d.ts.map +1 -0
- package/dist/client/client/types.gen.js +3 -0
- package/dist/client/client/types.gen.js.map +1 -0
- package/dist/client/client/utils.gen.d.ts +34 -0
- package/dist/client/client/utils.gen.d.ts.map +1 -0
- package/dist/client/client/utils.gen.js +232 -0
- package/dist/client/client/utils.gen.js.map +1 -0
- package/dist/client/client.gen.d.ts +13 -0
- package/dist/client/client.gen.d.ts.map +1 -0
- package/dist/client/client.gen.js +6 -0
- package/dist/client/client.gen.js.map +1 -0
- package/dist/client/core/auth.gen.d.ts +19 -0
- package/dist/client/core/auth.gen.d.ts.map +1 -0
- package/dist/client/core/auth.gen.js +15 -0
- package/dist/client/core/auth.gen.js.map +1 -0
- package/dist/client/core/bodySerializer.gen.d.ts +26 -0
- package/dist/client/core/bodySerializer.gen.d.ts.map +1 -0
- package/dist/client/core/bodySerializer.gen.js +58 -0
- package/dist/client/core/bodySerializer.gen.js.map +1 -0
- package/dist/client/core/params.gen.d.ts +34 -0
- package/dist/client/core/params.gen.d.ts.map +1 -0
- package/dist/client/core/params.gen.js +89 -0
- package/dist/client/core/params.gen.js.map +1 -0
- package/dist/client/core/pathSerializer.gen.d.ts +34 -0
- package/dist/client/core/pathSerializer.gen.d.ts.map +1 -0
- package/dist/client/core/pathSerializer.gen.js +115 -0
- package/dist/client/core/pathSerializer.gen.js.map +1 -0
- package/dist/client/core/queryKeySerializer.gen.d.ts +19 -0
- package/dist/client/core/queryKeySerializer.gen.d.ts.map +1 -0
- package/dist/client/core/queryKeySerializer.gen.js +100 -0
- package/dist/client/core/queryKeySerializer.gen.js.map +1 -0
- package/dist/client/core/serverSentEvents.gen.d.ts +72 -0
- package/dist/client/core/serverSentEvents.gen.d.ts.map +1 -0
- package/dist/client/core/serverSentEvents.gen.js +136 -0
- package/dist/client/core/serverSentEvents.gen.js.map +1 -0
- package/dist/client/core/types.gen.d.ts +79 -0
- package/dist/client/core/types.gen.d.ts.map +1 -0
- package/dist/client/core/types.gen.js +3 -0
- package/dist/client/core/types.gen.js.map +1 -0
- package/dist/client/core/utils.gen.d.ts +20 -0
- package/dist/client/core/utils.gen.d.ts.map +1 -0
- package/dist/client/core/utils.gen.js +88 -0
- package/dist/client/core/utils.gen.js.map +1 -0
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/sdk.gen.d.ts +170 -0
- package/dist/client/sdk.gen.d.ts.map +1 -0
- package/dist/client/sdk.gen.js +884 -0
- package/dist/client/sdk.gen.js.map +1 -0
- package/dist/client/transformers.gen.d.ts +31 -0
- package/dist/client/transformers.gen.d.ts.map +1 -0
- package/dist/client/transformers.gen.js +263 -0
- package/dist/client/transformers.gen.js.map +1 -0
- package/dist/client/types.gen.d.ts +1765 -0
- package/dist/client/types.gen.d.ts.map +1 -0
- package/dist/client/types.gen.js +3 -0
- package/dist/client/types.gen.js.map +1 -0
- package/dist/client/zod.gen.d.ts +1457 -0
- package/dist/client/zod.gen.d.ts.map +1 -0
- package/dist/client/zod.gen.js +1214 -0
- package/dist/client/zod.gen.js.map +1 -0
- package/dist/index.d.ts +5 -33
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -55
- package/dist/index.js.map +1 -1
- package/dist/recal.d.ts +64 -0
- package/dist/recal.d.ts.map +1 -0
- package/dist/recal.js +81 -0
- package/dist/recal.js.map +1 -0
- package/dist/services/calendar.service.d.ts +55 -167
- package/dist/services/calendar.service.d.ts.map +1 -1
- package/dist/services/calendar.service.js +68 -301
- package/dist/services/calendar.service.js.map +1 -1
- package/dist/services/events.service.d.ts +167 -0
- package/dist/services/events.service.d.ts.map +1 -0
- package/dist/services/events.service.js +215 -0
- package/dist/services/events.service.js.map +1 -0
- package/dist/services/oauth.service.d.ts +123 -60
- package/dist/services/oauth.service.d.ts.map +1 -1
- package/dist/services/oauth.service.js +166 -142
- package/dist/services/oauth.service.js.map +1 -1
- package/dist/services/organizations.service.d.ts +137 -36
- package/dist/services/organizations.service.d.ts.map +1 -1
- package/dist/services/organizations.service.js +164 -90
- package/dist/services/organizations.service.js.map +1 -1
- package/dist/services/scheduling.service.d.ts +121 -58
- package/dist/services/scheduling.service.d.ts.map +1 -1
- package/dist/services/scheduling.service.js +98 -140
- package/dist/services/scheduling.service.js.map +1 -1
- package/dist/services/users.service.d.ts +87 -27
- package/dist/services/users.service.d.ts.map +1 -1
- package/dist/services/users.service.js +94 -69
- package/dist/services/users.service.js.map +1 -1
- package/dist/types.d.ts +68 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/response.d.ts +33 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/dist/utils/response.js +54 -0
- package/dist/utils/response.js.map +1 -0
- package/package.json +5 -2
- package/dist/entities/organization.d.ts +0 -21
- package/dist/entities/organization.d.ts.map +0 -1
- package/dist/entities/organization.js +0 -32
- package/dist/entities/organization.js.map +0 -1
- package/dist/entities/user.d.ts +0 -23
- package/dist/entities/user.d.ts.map +0 -1
- package/dist/entities/user.js +0 -45
- package/dist/entities/user.js.map +0 -1
- package/dist/errors.d.ts +0 -22
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -36
- package/dist/errors.js.map +0 -1
- package/dist/typebox/calendar.tb.d.ts +0 -113
- package/dist/typebox/calendar.tb.d.ts.map +0 -1
- package/dist/typebox/calendar.tb.js +0 -92
- package/dist/typebox/calendar.tb.js.map +0 -1
- package/dist/typebox/oauth.tb.d.ts +0 -14
- package/dist/typebox/oauth.tb.d.ts.map +0 -1
- package/dist/typebox/oauth.tb.js +0 -16
- package/dist/typebox/oauth.tb.js.map +0 -1
- package/dist/typebox/organization.stripped.tb.d.ts +0 -6
- package/dist/typebox/organization.stripped.tb.d.ts.map +0 -1
- package/dist/typebox/organization.stripped.tb.js +0 -7
- package/dist/typebox/organization.stripped.tb.js.map +0 -1
- package/dist/typebox/organization.tb.d.ts +0 -10
- package/dist/typebox/organization.tb.d.ts.map +0 -1
- package/dist/typebox/organization.tb.js +0 -8
- package/dist/typebox/organization.tb.js.map +0 -1
- package/dist/typebox/scheduling.tb.d.ts +0 -107
- package/dist/typebox/scheduling.tb.d.ts.map +0 -1
- package/dist/typebox/scheduling.tb.js +0 -105
- package/dist/typebox/scheduling.tb.js.map +0 -1
- package/dist/typebox/timeString.tb.d.ts +0 -3
- package/dist/typebox/timeString.tb.d.ts.map +0 -1
- package/dist/typebox/timeString.tb.js +0 -7
- package/dist/typebox/timeString.tb.js.map +0 -1
- package/dist/typebox/user.stripped.tb.d.ts +0 -5
- package/dist/typebox/user.stripped.tb.d.ts.map +0 -1
- package/dist/typebox/user.stripped.tb.js +0 -6
- package/dist/typebox/user.stripped.tb.js.map +0 -1
- package/dist/typebox/user.tb.d.ts +0 -19
- package/dist/typebox/user.tb.d.ts.map +0 -1
- package/dist/typebox/user.tb.js +0 -10
- package/dist/typebox/user.tb.js.map +0 -1
- package/dist/types/calendar.types.d.ts +0 -124
- package/dist/types/calendar.types.d.ts.map +0 -1
- package/dist/types/calendar.types.js +0 -27
- package/dist/types/calendar.types.js.map +0 -1
- package/dist/types/internal.types.d.ts +0 -7
- package/dist/types/internal.types.d.ts.map +0 -1
- package/dist/types/internal.types.js +0 -2
- package/dist/types/internal.types.js.map +0 -1
- package/dist/types/oauth.types.d.ts +0 -22
- package/dist/types/oauth.types.d.ts.map +0 -1
- package/dist/types/oauth.types.js +0 -2
- package/dist/types/oauth.types.js.map +0 -1
- package/dist/types/organization.types.d.ts +0 -18
- package/dist/types/organization.types.d.ts.map +0 -1
- package/dist/types/organization.types.js +0 -2
- package/dist/types/organization.types.js.map +0 -1
- package/dist/types/scheduling.types.d.ts +0 -50
- package/dist/types/scheduling.types.d.ts.map +0 -1
- package/dist/types/scheduling.types.js +0 -2
- package/dist/types/scheduling.types.js.map +0 -1
- package/dist/types/user.types.d.ts +0 -11
- package/dist/types/user.types.d.ts.map +0 -1
- package/dist/types/user.types.js +0 -2
- package/dist/types/user.types.js.map +0 -1
- package/dist/utils/fetch.helper.d.ts +0 -62
- package/dist/utils/fetch.helper.d.ts.map +0 -1
- package/dist/utils/fetch.helper.js +0 -116
- package/dist/utils/fetch.helper.js.map +0 -1
- package/dist/utils/fetchErrorHandler.d.ts +0 -22
- package/dist/utils/fetchErrorHandler.d.ts.map +0 -1
- package/dist/utils/fetchErrorHandler.js +0 -35
- package/dist/utils/fetchErrorHandler.js.map +0 -1
- package/dist/utils/includes.helper.d.ts +0 -4
- package/dist/utils/includes.helper.d.ts.map +0 -1
- package/dist/utils/includes.helper.js +0 -10
- package/dist/utils/includes.helper.js.map +0 -1
- package/dist/utils/omit.d.ts +0 -2
- package/dist/utils/omit.d.ts.map +0 -1
- package/dist/utils/omit.js +0 -4
- package/dist/utils/omit.js.map +0 -1
|
@@ -1,314 +1,81 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import * as sdk from '../client/sdk.gen';
|
|
2
|
+
import { unwrapResponse } from '../utils/response';
|
|
3
|
+
/**
|
|
4
|
+
* Calendar Service
|
|
5
|
+
*
|
|
6
|
+
* Provides methods for managing calendars
|
|
7
|
+
*/
|
|
5
8
|
export class CalendarService {
|
|
6
|
-
|
|
7
|
-
constructor(
|
|
8
|
-
this.
|
|
9
|
+
client;
|
|
10
|
+
constructor(client) {
|
|
11
|
+
this.client = client;
|
|
9
12
|
}
|
|
10
|
-
// ==========================================
|
|
11
|
-
// MARK: Calendar -
|
|
12
|
-
// ==========================================
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* @
|
|
14
|
+
* List all calendars for a user
|
|
15
|
+
*
|
|
16
|
+
* @param userId - The user ID
|
|
17
|
+
* @param options - Query options
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const calendars = await recal.calendar.list('user-123', {
|
|
22
|
+
* provider: 'google'
|
|
23
|
+
* })
|
|
24
|
+
* ```
|
|
17
25
|
*/
|
|
18
|
-
async
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
{
|
|
26
|
-
code: 400,
|
|
27
|
-
error: new OAuthConnectionNotFoundError(userId, Array.isArray(provider) ? provider.join(',') : provider || 'all'),
|
|
28
|
-
},
|
|
29
|
-
{ code: 404, error: new UserNotFoundError(userId) },
|
|
30
|
-
]));
|
|
26
|
+
async list(userId, options) {
|
|
27
|
+
const response = await sdk.getV1UsersUserIdCalendar({
|
|
28
|
+
path: { userId },
|
|
29
|
+
query: options,
|
|
30
|
+
client: this.client,
|
|
31
|
+
});
|
|
32
|
+
return unwrapResponse(response);
|
|
31
33
|
}
|
|
32
|
-
// ==========================================
|
|
33
|
-
// MARK: User Calendar - Busy & Events
|
|
34
|
-
// ==========================================
|
|
35
34
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* @param
|
|
39
|
-
* @param options
|
|
40
|
-
*
|
|
35
|
+
* Get busy times for a user across all calendars
|
|
36
|
+
*
|
|
37
|
+
* @param userId - The user ID
|
|
38
|
+
* @param options - Query options with time range
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const busy = await recal.calendar.getBusyTimes('user-123', {
|
|
43
|
+
* start: '2024-01-01T00:00:00Z',
|
|
44
|
+
* end: '2024-01-31T23:59:59Z',
|
|
45
|
+
* provider: ['google', 'microsoft']
|
|
46
|
+
* })
|
|
47
|
+
* ```
|
|
41
48
|
*/
|
|
42
|
-
async
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
})
|
|
50
|
-
.catch(errorHandler([
|
|
51
|
-
{
|
|
52
|
-
code: 400,
|
|
53
|
-
error: new OAuthConnectionNotFoundError(userId, Array.isArray(provider) ? provider.join(',') : provider || 'all'),
|
|
54
|
-
},
|
|
55
|
-
{ code: 404, error: new UserNotFoundError(userId) },
|
|
56
|
-
]));
|
|
49
|
+
async getBusyTimes(userId, options) {
|
|
50
|
+
const response = await sdk.getV1UsersUserIdCalendarBusy({
|
|
51
|
+
path: { userId },
|
|
52
|
+
query: options,
|
|
53
|
+
client: this.client,
|
|
54
|
+
});
|
|
55
|
+
return unwrapResponse(response);
|
|
57
56
|
}
|
|
58
57
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* @param
|
|
62
|
-
* @param options
|
|
63
|
-
*
|
|
58
|
+
* List events for a user across all calendars
|
|
59
|
+
*
|
|
60
|
+
* @param userId - The user ID
|
|
61
|
+
* @param options - Query options with time range
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* const events = await recal.calendar.listEvents('user-123', {
|
|
66
|
+
* start: '2024-01-01T00:00:00Z',
|
|
67
|
+
* end: '2024-01-31T23:59:59Z',
|
|
68
|
+
* provider: 'google'
|
|
69
|
+
* })
|
|
70
|
+
* ```
|
|
64
71
|
*/
|
|
65
|
-
async
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
})
|
|
73
|
-
.catch(errorHandler([
|
|
74
|
-
{
|
|
75
|
-
code: 400,
|
|
76
|
-
error: new OAuthConnectionNotFoundError(userId, Array.isArray(provider) ? provider.join(',') : provider || 'unknown'),
|
|
77
|
-
errorInclFilter: 'User has not the needed calendars connected',
|
|
78
|
-
},
|
|
79
|
-
{ code: 404, error: new UserNotFoundError(userId) },
|
|
80
|
-
]));
|
|
81
|
-
}
|
|
82
|
-
// ==========================================
|
|
83
|
-
// MARK: Meta Event Operations (Cross-Calendar)
|
|
84
|
-
// ==========================================
|
|
85
|
-
/**
|
|
86
|
-
* @param userId The ID of the user
|
|
87
|
-
* @param metaId The meta ID of the event
|
|
88
|
-
* @param options The options for the event query (optional)
|
|
89
|
-
* @returns The event
|
|
90
|
-
*/
|
|
91
|
-
async getEventByMetaId(userId, metaId, options) {
|
|
92
|
-
const { provider, timeZone } = options || {};
|
|
93
|
-
return this.fetchHelper
|
|
94
|
-
.get(`/v1/users/${userId}/calendar/events/meta/${metaId}`, {
|
|
95
|
-
schema: eventSchema,
|
|
96
|
-
searchParams: { provider },
|
|
97
|
-
headers: timeZone ? { 'x-timezone': timeZone } : undefined,
|
|
98
|
-
})
|
|
99
|
-
.catch(errorHandler([
|
|
100
|
-
{
|
|
101
|
-
code: 400,
|
|
102
|
-
error: new OAuthConnectionNotFoundError(userId, Array.isArray(provider) ? provider.join(',') : provider || 'unknown'),
|
|
103
|
-
},
|
|
104
|
-
{ code: 404, error: new UserNotFoundError(userId), errorInclFilter: 'User not found' },
|
|
105
|
-
{ code: 404, error: new EventNotFoundError(metaId) },
|
|
106
|
-
]));
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* @param userId The ID of the user
|
|
110
|
-
* @param newEvent The event to create
|
|
111
|
-
* @param options The options for the event creation (optional)
|
|
112
|
-
* @returns The created event
|
|
113
|
-
*/
|
|
114
|
-
async createEventByMetaId(userId, newEvent, options) {
|
|
115
|
-
const { provider, timeZone } = options || {};
|
|
116
|
-
return this.fetchHelper
|
|
117
|
-
.post(`/v1/users/${userId}/calendar/events/meta`, {
|
|
118
|
-
schema: eventSchema,
|
|
119
|
-
searchParams: { provider },
|
|
120
|
-
headers: timeZone ? { 'x-timezone': timeZone } : undefined,
|
|
121
|
-
body: newEvent,
|
|
122
|
-
})
|
|
123
|
-
.catch(errorHandler([
|
|
124
|
-
{
|
|
125
|
-
code: 400,
|
|
126
|
-
error: new OAuthConnectionNotFoundError(userId, Array.isArray(provider) ? provider.join(',') : provider || 'unknown'),
|
|
127
|
-
},
|
|
128
|
-
{ code: 404, error: new UserNotFoundError(userId) },
|
|
129
|
-
]));
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* @param userId The ID of the user
|
|
133
|
-
* @param metaId The meta ID of the event
|
|
134
|
-
* @param updateEvent The updated event data
|
|
135
|
-
* @param options The options for the event update (optional)
|
|
136
|
-
* @returns The updated event
|
|
137
|
-
*/
|
|
138
|
-
async updateEventByMetaId(userId, metaId, updateEvent, options) {
|
|
139
|
-
const { provider, timeZone } = options || {};
|
|
140
|
-
return this.fetchHelper
|
|
141
|
-
.put(`/v1/users/${userId}/calendar/events/meta/${metaId}`, {
|
|
142
|
-
schema: eventSchema,
|
|
143
|
-
searchParams: { provider },
|
|
144
|
-
headers: timeZone ? { 'x-timezone': timeZone } : undefined,
|
|
145
|
-
body: updateEvent,
|
|
146
|
-
})
|
|
147
|
-
.catch(errorHandler([
|
|
148
|
-
{
|
|
149
|
-
code: 400,
|
|
150
|
-
error: new OAuthConnectionNotFoundError(userId, Array.isArray(provider) ? provider.join(',') : provider || 'unknown'),
|
|
151
|
-
},
|
|
152
|
-
{ code: 404, error: new UserNotFoundError(userId), errorInclFilter: 'User not found' },
|
|
153
|
-
{ code: 404, error: new EventNotFoundError(metaId) },
|
|
154
|
-
]));
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* @param userId The ID of the user
|
|
158
|
-
* @param metaId The meta ID of the event
|
|
159
|
-
* @param options The options for the event deletion (optional)
|
|
160
|
-
* @returns void
|
|
161
|
-
*/
|
|
162
|
-
async deleteEventByMetaId(userId, metaId, options) {
|
|
163
|
-
const { provider, timeZone } = options || {};
|
|
164
|
-
return this.fetchHelper
|
|
165
|
-
.delete(`/v1/users/${userId}/calendar/events/meta/${metaId}`, {
|
|
166
|
-
searchParams: { provider },
|
|
167
|
-
headers: timeZone ? { 'x-timezone': timeZone } : undefined,
|
|
168
|
-
schema: T.Void(),
|
|
169
|
-
})
|
|
170
|
-
.catch(errorHandler([
|
|
171
|
-
{
|
|
172
|
-
code: 400,
|
|
173
|
-
error: new OAuthConnectionNotFoundError(userId, Array.isArray(provider) ? provider.join(',') : provider || 'unknown'),
|
|
174
|
-
},
|
|
175
|
-
{ code: 404, error: new UserNotFoundError(userId) },
|
|
176
|
-
]));
|
|
177
|
-
}
|
|
178
|
-
// ==========================================
|
|
179
|
-
// MARK: Provider-Specific Event Operations
|
|
180
|
-
// ==========================================
|
|
181
|
-
/**
|
|
182
|
-
* @param userId The ID of the user
|
|
183
|
-
* @param provider The provider of the calendar
|
|
184
|
-
* @param calendarId The ID of the calendar
|
|
185
|
-
* @param eventId The ID of the event
|
|
186
|
-
* @param options The options for the event query (optional)
|
|
187
|
-
* @returns The event
|
|
188
|
-
*/
|
|
189
|
-
async getEvent({ userId, provider, calendarId = 'primary', eventId, options, }) {
|
|
190
|
-
const { timeZone } = options || {};
|
|
191
|
-
return this.fetchHelper
|
|
192
|
-
.get(`/v1/users/${userId}/calendar/events/${provider}/${calendarId}/${eventId}`, {
|
|
193
|
-
schema: eventSchema,
|
|
194
|
-
headers: timeZone ? { 'x-timezone': timeZone } : undefined,
|
|
195
|
-
})
|
|
196
|
-
.catch(errorHandler([
|
|
197
|
-
{
|
|
198
|
-
code: 400,
|
|
199
|
-
error: new OAuthConnectionNotFoundError(userId, provider),
|
|
200
|
-
errorInclFilter: 'User has not connected this calendar provider',
|
|
201
|
-
},
|
|
202
|
-
{ code: 404, error: new UserNotFoundError(userId), errorInclFilter: 'User not found' },
|
|
203
|
-
{ code: 404, error: new EventNotFoundError(eventId), errorInclFilter: 'Event not found' },
|
|
204
|
-
{ code: 404, error: new ProviderCredentialsNotSetError(provider) },
|
|
205
|
-
]));
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* @param userId The ID of the user
|
|
209
|
-
* @param provider The provider of the calendar
|
|
210
|
-
* @param calendarId The ID of the calendar
|
|
211
|
-
* @param newEvent The event data to create
|
|
212
|
-
* @param options The options for the event creation (optional)
|
|
213
|
-
* @returns The created event
|
|
214
|
-
*/
|
|
215
|
-
async createEvent({ userId, provider, calendarId = 'primary', newEvent: newEventData, options, }) {
|
|
216
|
-
const { timeZone } = options || {};
|
|
217
|
-
return this.fetchHelper
|
|
218
|
-
.post(`/v1/users/${userId}/calendar/events/${provider}/${calendarId}`, {
|
|
219
|
-
schema: eventSchema,
|
|
220
|
-
headers: timeZone ? { 'x-timezone': timeZone } : undefined,
|
|
221
|
-
body: newEventData,
|
|
222
|
-
})
|
|
223
|
-
.catch(errorHandler([
|
|
224
|
-
{
|
|
225
|
-
code: 400,
|
|
226
|
-
error: new OAuthConnectionNotFoundError(userId, provider),
|
|
227
|
-
errorInclFilter: 'User has not connected this calendar provider',
|
|
228
|
-
},
|
|
229
|
-
{ code: 404, error: new UserNotFoundError(userId), errorInclFilter: 'User not found' },
|
|
230
|
-
{ code: 404, error: new ProviderCredentialsNotSetError(provider) },
|
|
231
|
-
]));
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* @param userId The ID of the user
|
|
235
|
-
* @param provider The provider of the calendar
|
|
236
|
-
* @param calendarId The ID of the calendar
|
|
237
|
-
* @param eventId The ID of the event
|
|
238
|
-
* @param updateEvent The updated event data
|
|
239
|
-
* @param options The options for the event update (optional)
|
|
240
|
-
* @returns The updated event
|
|
241
|
-
*/
|
|
242
|
-
async updateEvent({ userId, provider, calendarId = 'primary', eventId, updateEvent: updateEventData, options, }) {
|
|
243
|
-
const { timeZone } = options || {};
|
|
244
|
-
return this.fetchHelper
|
|
245
|
-
.put(`/v1/users/${userId}/calendar/events/${provider}/${calendarId}/${eventId}`, {
|
|
246
|
-
schema: eventSchema,
|
|
247
|
-
headers: timeZone ? { 'x-timezone': timeZone } : undefined,
|
|
248
|
-
body: updateEventData,
|
|
249
|
-
})
|
|
250
|
-
.catch(errorHandler([
|
|
251
|
-
{
|
|
252
|
-
code: 400,
|
|
253
|
-
error: new OAuthConnectionNotFoundError(userId, provider),
|
|
254
|
-
errorInclFilter: 'User has not connected this calendar provider',
|
|
255
|
-
},
|
|
256
|
-
{ code: 404, error: new UserNotFoundError(userId), errorInclFilter: 'User not found' },
|
|
257
|
-
{ code: 404, error: new ProviderCredentialsNotSetError(provider) },
|
|
258
|
-
]));
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* @param userId The ID of the user
|
|
262
|
-
* @param provider The provider of the calendar
|
|
263
|
-
* @param calendarId The ID of the calendar
|
|
264
|
-
* @param eventId The ID of the event
|
|
265
|
-
* @param options The options for the event deletion (optional)
|
|
266
|
-
* @returns void
|
|
267
|
-
*/
|
|
268
|
-
async deleteEvent({ userId, provider, calendarId = 'primary', eventId, options, }) {
|
|
269
|
-
const { timeZone } = options || {};
|
|
270
|
-
return this.fetchHelper
|
|
271
|
-
.delete(`/v1/users/${userId}/calendar/events/${provider}/${calendarId}/${eventId}`, {
|
|
272
|
-
headers: timeZone ? { 'x-timezone': timeZone } : undefined,
|
|
273
|
-
schema: T.Void(),
|
|
274
|
-
})
|
|
275
|
-
.catch(errorHandler([
|
|
276
|
-
{
|
|
277
|
-
code: 400,
|
|
278
|
-
error: new OAuthConnectionNotFoundError(userId, provider),
|
|
279
|
-
errorInclFilter: 'User has not connected this calendar provider',
|
|
280
|
-
},
|
|
281
|
-
{ code: 404, error: new UserNotFoundError(userId) },
|
|
282
|
-
{ code: 404, error: new EventNotFoundError(eventId) },
|
|
283
|
-
]));
|
|
284
|
-
}
|
|
285
|
-
// ==========================================
|
|
286
|
-
// MARK: Organization-Wide Operations
|
|
287
|
-
// ==========================================
|
|
288
|
-
/**
|
|
289
|
-
* Get the org-wide busy period
|
|
290
|
-
* @param slug The slug of the organization
|
|
291
|
-
* @param startDate The minimum date
|
|
292
|
-
* @param endDate The maximum date
|
|
293
|
-
* @param primaryOnly Whether to only include the primary calendar (default: true)
|
|
294
|
-
* @param options The options for the org-wide free/busy query (optional)
|
|
295
|
-
* @returns The org-wide free/busy period
|
|
296
|
-
*/
|
|
297
|
-
async getOrgWideBusy(slug, startDate, endDate, primaryOnly, options) {
|
|
298
|
-
const { provider, timeZone } = options || {};
|
|
299
|
-
return this.fetchHelper
|
|
300
|
-
.get(`/v1/organizations/${slug}/calendar/busy`, {
|
|
301
|
-
schema: T.Array(timeRangeSchema),
|
|
302
|
-
searchParams: { startDate, endDate, primaryOnly, provider },
|
|
303
|
-
headers: timeZone ? { 'x-timezone': timeZone } : undefined,
|
|
304
|
-
})
|
|
305
|
-
.catch(errorHandler([
|
|
306
|
-
{
|
|
307
|
-
code: 400,
|
|
308
|
-
error: new Error(`OAuth credentials for provider ${provider} not found for the user`),
|
|
309
|
-
},
|
|
310
|
-
{ code: 404, error: new OrganizationNotFoundError(slug) },
|
|
311
|
-
]));
|
|
72
|
+
async listEvents(userId, options) {
|
|
73
|
+
const response = await sdk.getV1UsersUserIdCalendarEvents({
|
|
74
|
+
path: { userId },
|
|
75
|
+
query: options,
|
|
76
|
+
client: this.client,
|
|
77
|
+
});
|
|
78
|
+
return unwrapResponse(response);
|
|
312
79
|
}
|
|
313
80
|
}
|
|
314
81
|
//# sourceMappingURL=calendar.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.service.js","sourceRoot":"","sources":["../../src/services/calendar.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"calendar.service.js","sourceRoot":"","sources":["../../src/services/calendar.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAA;AAMxC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD;;;;GAIG;AACH,MAAM,OAAO,eAAe;IACJ;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,OAA+C;QACtE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,wBAAwB,CAAC;YAChD,IAAI,EAAE,EAAE,MAAM,EAAE;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAA;QACF,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,OAAkD;QACjF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,4BAA4B,CAAC;YACpD,IAAI,EAAE,EAAE,MAAM,EAAE;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAA;QACF,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAAoD;QACjF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,8BAA8B,CAAC;YACtD,IAAI,EAAE,EAAE,MAAM,EAAE;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAA;QACF,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;CACJ"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import type { Client } from '../client/client';
|
|
2
|
+
import type { CreateEvent, CreateMetaEvent, PostV1UsersUserIdCalendarEventsMetaData, UpdateEvent } from '../client/types.gen';
|
|
3
|
+
/**
|
|
4
|
+
* Events Service
|
|
5
|
+
*
|
|
6
|
+
* Provides methods for managing calendar events
|
|
7
|
+
*/
|
|
8
|
+
export declare class EventsService {
|
|
9
|
+
private client;
|
|
10
|
+
constructor(client: Client);
|
|
11
|
+
/**
|
|
12
|
+
* Create an event across all calendars by metaId
|
|
13
|
+
*
|
|
14
|
+
* @param userId - The user ID
|
|
15
|
+
* @param event - Event data
|
|
16
|
+
* @param options - Query options
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const event = await recal.events.createMetaEvent('user-123', {
|
|
21
|
+
* subject: 'Team Meeting',
|
|
22
|
+
* start: '2024-01-15T10:00:00Z',
|
|
23
|
+
* end: '2024-01-15T11:00:00Z',
|
|
24
|
+
* attendees: [{ email: 'team@example.com' }],
|
|
25
|
+
* meeting: true
|
|
26
|
+
* }, { provider: ['google'] })
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
createMetaEvent(userId: string, event: CreateMetaEvent, options?: PostV1UsersUserIdCalendarEventsMetaData['query']): Promise<import("../client").MetaEvent>;
|
|
30
|
+
/**
|
|
31
|
+
* Get an event by metaId
|
|
32
|
+
*
|
|
33
|
+
* @param userId - The user ID
|
|
34
|
+
* @param metaId - The event metaId
|
|
35
|
+
* @param options - Query options
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const event = await recal.events.getMetaEvent('user-123', 'meta-456')
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
getMetaEvent(userId: string, metaId: string, options?: {
|
|
43
|
+
provider?: Array<'google' | 'microsoft'> | 'google' | 'microsoft';
|
|
44
|
+
}): Promise<import("../client").MetaEvent>;
|
|
45
|
+
/**
|
|
46
|
+
* Update an event by metaId
|
|
47
|
+
*
|
|
48
|
+
* @param userId - The user ID
|
|
49
|
+
* @param metaId - The event metaId
|
|
50
|
+
* @param event - Updated event data
|
|
51
|
+
* @param options - Query options
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const updated = await recal.events.updateMetaEvent('user-123', 'meta-456', {
|
|
56
|
+
* subject: 'Updated Meeting',
|
|
57
|
+
* sendNotifications: true
|
|
58
|
+
* })
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
updateMetaEvent(userId: string, metaId: string, event: UpdateEvent, options?: {
|
|
62
|
+
provider?: Array<'google' | 'microsoft'> | 'google' | 'microsoft';
|
|
63
|
+
}): Promise<import("../client").MetaEvent>;
|
|
64
|
+
/**
|
|
65
|
+
* Delete an event by metaId
|
|
66
|
+
*
|
|
67
|
+
* @param userId - The user ID
|
|
68
|
+
* @param metaId - The event metaId
|
|
69
|
+
* @param options - Query options
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* await recal.events.deleteMetaEvent('user-123', 'meta-456')
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
deleteMetaEvent(userId: string, metaId: string, options?: {
|
|
77
|
+
provider?: Array<'google' | 'microsoft'> | 'google' | 'microsoft';
|
|
78
|
+
}): Promise<{
|
|
79
|
+
success: true;
|
|
80
|
+
}>;
|
|
81
|
+
/**
|
|
82
|
+
* Create an event in a specific calendar
|
|
83
|
+
*
|
|
84
|
+
* @param userId - The user ID
|
|
85
|
+
* @param provider - The calendar provider
|
|
86
|
+
* @param calendarId - The calendar ID
|
|
87
|
+
* @param event - Event data
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const event = await recal.events.createEvent(
|
|
92
|
+
* 'user-123',
|
|
93
|
+
* 'google',
|
|
94
|
+
* 'primary',
|
|
95
|
+
* {
|
|
96
|
+
* subject: 'Meeting',
|
|
97
|
+
* start: '2024-01-16T14:00:00Z',
|
|
98
|
+
* end: '2024-01-16T15:00:00Z',
|
|
99
|
+
* attendees: [{ email: 'team@example.com' }]
|
|
100
|
+
* }
|
|
101
|
+
* )
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
createEvent(userId: string, provider: 'google' | 'microsoft', calendarId: string, event: CreateEvent): Promise<import("..").Event>;
|
|
105
|
+
/**
|
|
106
|
+
* Get an event from a specific calendar
|
|
107
|
+
*
|
|
108
|
+
* @param userId - The user ID
|
|
109
|
+
* @param provider - The calendar provider
|
|
110
|
+
* @param calendarId - The calendar ID
|
|
111
|
+
* @param eventId - The event ID
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const event = await recal.events.getEvent(
|
|
116
|
+
* 'user-123',
|
|
117
|
+
* 'google',
|
|
118
|
+
* 'primary',
|
|
119
|
+
* 'event-id'
|
|
120
|
+
* )
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
getEvent(userId: string, provider: 'google' | 'microsoft', calendarId: string, eventId: string): Promise<import("..").Event>;
|
|
124
|
+
/**
|
|
125
|
+
* Update an event in a specific calendar
|
|
126
|
+
*
|
|
127
|
+
* @param userId - The user ID
|
|
128
|
+
* @param provider - The calendar provider
|
|
129
|
+
* @param calendarId - The calendar ID
|
|
130
|
+
* @param eventId - The event ID
|
|
131
|
+
* @param event - Updated event data
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* const updated = await recal.events.updateEvent(
|
|
136
|
+
* 'user-123',
|
|
137
|
+
* 'google',
|
|
138
|
+
* 'primary',
|
|
139
|
+
* 'event-id',
|
|
140
|
+
* { subject: 'Updated Title' }
|
|
141
|
+
* )
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
updateEvent(userId: string, provider: 'google' | 'microsoft', calendarId: string, eventId: string, event: UpdateEvent): Promise<import("..").Event>;
|
|
145
|
+
/**
|
|
146
|
+
* Delete an event from a specific calendar
|
|
147
|
+
*
|
|
148
|
+
* @param userId - The user ID
|
|
149
|
+
* @param provider - The calendar provider
|
|
150
|
+
* @param calendarId - The calendar ID
|
|
151
|
+
* @param eventId - The event ID
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```typescript
|
|
155
|
+
* await recal.events.deleteEvent(
|
|
156
|
+
* 'user-123',
|
|
157
|
+
* 'google',
|
|
158
|
+
* 'primary',
|
|
159
|
+
* 'event-id'
|
|
160
|
+
* )
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
deleteEvent(userId: string, provider: 'google' | 'microsoft', calendarId: string, eventId: string): Promise<{
|
|
164
|
+
success: true;
|
|
165
|
+
}>;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=events.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.service.d.ts","sourceRoot":"","sources":["../../src/services/events.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,EACR,WAAW,EACX,eAAe,EACf,uCAAuC,EACvC,WAAW,EACd,MAAM,qBAAqB,CAAA;AAG5B;;;;GAIG;AACH,qBAAa,aAAa;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAElC;;;;;;;;;;;;;;;;;OAiBG;IACG,eAAe,CACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,uCAAuC,CAAC,OAAO,CAAC;IAW9D;;;;;;;;;;;OAWG;IACG,YAAY,CACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,QAAQ,GAAG,WAAW,CAAA;KAAE;IAUnF;;;;;;;;;;;;;;;OAeG;IACG,eAAe,CACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,QAAQ,GAAG,WAAW,CAAA;KAAE;IAWnF;;;;;;;;;;;OAWG;IACG,eAAe,CACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,QAAQ,GAAG,WAAW,CAAA;KAAE;;;IAUnF;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAS1G;;;;;;;;;;;;;;;;;OAiBG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQpG;;;;;;;;;;;;;;;;;;;OAmBG;IACG,WAAW,CACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW;IAUtB;;;;;;;;;;;;;;;;;OAiBG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;CAO1G"}
|