@vendasta/meetings 0.72.0 → 0.74.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/esm2020/lib/_generated/host.service.mjs +25 -0
- package/esm2020/lib/_internal/enums/dayofweek.enum.mjs +18 -0
- package/esm2020/lib/_internal/enums/index.mjs +11 -0
- package/esm2020/lib/_internal/enums/meeting-source.enum.mjs +20 -0
- package/esm2020/lib/_internal/enums/shared.enum.mjs +21 -0
- package/{esm2015/lib/_internal/enums/zoom.enum.js → esm2020/lib/_internal/enums/zoom.enum.mjs} +1 -1
- package/esm2020/lib/_internal/google-meet.api.service.mjs +41 -0
- package/esm2020/lib/_internal/index.mjs +15 -0
- package/esm2020/lib/_internal/interfaces/date-range.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/datetime.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/dayofweek.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/field-mask.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/google-meet.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/index.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/meeting-guest.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/meeting-host.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/meeting-source.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/meeting-type.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/shared.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/timeofday.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/zoom.interface.mjs +8 -0
- package/esm2020/lib/_internal/meeting-guest.api.service.mjs +84 -0
- package/esm2020/lib/_internal/meeting-host.api.service.mjs +170 -0
- package/esm2020/lib/_internal/meeting-source-api.api.service.mjs +41 -0
- package/esm2020/lib/_internal/objects/date-range.mjs +36 -0
- package/esm2020/lib/_internal/objects/datetime.mjs +77 -0
- package/esm2020/lib/_internal/objects/dayofweek.mjs +7 -0
- package/esm2020/lib/_internal/objects/field-mask.mjs +27 -0
- package/esm2020/lib/_internal/objects/google-meet.mjs +539 -0
- package/esm2020/lib/_internal/objects/index.mjs +18 -0
- package/esm2020/lib/_internal/objects/meeting-guest.mjs +511 -0
- package/esm2020/lib/_internal/objects/meeting-host.mjs +1485 -0
- package/esm2020/lib/_internal/objects/meeting-source.mjs +121 -0
- package/esm2020/lib/_internal/objects/meeting-type.mjs +119 -0
- package/esm2020/lib/_internal/objects/shared.mjs +426 -0
- package/esm2020/lib/_internal/objects/timeofday.mjs +36 -0
- package/esm2020/lib/_internal/objects/zoom.mjs +377 -0
- package/esm2020/lib/_internal/zoom.api.service.mjs +41 -0
- package/esm2020/lib/guest/guest.service.mjs +86 -0
- package/esm2020/lib/guest/index.mjs +2 -0
- package/esm2020/lib/host/host.service.mjs +308 -0
- package/esm2020/lib/host/url.mjs +39 -0
- package/esm2020/lib/index.mjs +8 -0
- package/esm2020/lib/meetings.service.mjs +168 -0
- package/esm2020/lib/shared/availability.mjs +2 -0
- package/esm2020/lib/shared/calendar.mjs +29 -0
- package/esm2020/lib/shared/duration.mjs +41 -0
- package/esm2020/lib/shared/environment.mjs +17 -0
- package/esm2020/lib/shared/fieldmask.mjs +6 -0
- package/esm2020/lib/shared/host-id.mjs +20 -0
- package/esm2020/lib/shared/host-url-map.mjs +2 -0
- package/esm2020/lib/shared/host-user.mjs +8 -0
- package/esm2020/lib/shared/host.mjs +8 -0
- package/esm2020/lib/shared/index.mjs +14 -0
- package/esm2020/lib/shared/meeting-type.mjs +60 -0
- package/esm2020/lib/shared/meeting.mjs +89 -0
- package/esm2020/lib/shared/paged-response.mjs +8 -0
- package/esm2020/lib/shared/preferences.mjs +12 -0
- package/esm2020/lib/shared/time-span.mjs +7 -0
- package/esm2020/public_api.mjs +2 -0
- package/esm2020/vendasta-meetings.mjs +5 -0
- package/fesm2015/{vendasta-meetings.js → vendasta-meetings.mjs} +554 -1264
- package/fesm2015/vendasta-meetings.mjs.map +1 -0
- package/fesm2020/vendasta-meetings.mjs +5086 -0
- package/fesm2020/vendasta-meetings.mjs.map +1 -0
- package/lib/_generated/host.service.d.ts +5 -9
- package/lib/_internal/google-meet.api.service.d.ts +4 -0
- package/lib/_internal/index.d.ts +3 -3
- package/lib/_internal/interfaces/meeting-host.interface.d.ts +2 -1
- package/lib/_internal/interfaces/meeting-source.interface.d.ts +1 -1
- package/lib/_internal/interfaces/meeting-type.interface.d.ts +1 -1
- package/lib/_internal/interfaces/shared.interface.d.ts +1 -1
- package/lib/_internal/interfaces/zoom.interface.d.ts +1 -1
- package/lib/_internal/meeting-guest.api.service.d.ts +4 -0
- package/lib/_internal/meeting-host.api.service.d.ts +4 -0
- package/lib/_internal/meeting-source-api.api.service.d.ts +4 -0
- package/lib/_internal/objects/date-range.d.ts +1 -1
- package/lib/_internal/objects/datetime.d.ts +1 -1
- package/lib/_internal/objects/field-mask.d.ts +1 -1
- package/lib/_internal/objects/google-meet.d.ts +1 -1
- package/lib/_internal/objects/meeting-guest.d.ts +1 -1
- package/lib/_internal/objects/meeting-host.d.ts +3 -2
- package/lib/_internal/objects/meeting-source.d.ts +2 -2
- package/lib/_internal/objects/meeting-type.d.ts +2 -2
- package/lib/_internal/objects/shared.d.ts +2 -2
- package/lib/_internal/objects/timeofday.d.ts +1 -1
- package/lib/_internal/objects/zoom.d.ts +2 -2
- package/lib/_internal/zoom.api.service.d.ts +4 -0
- package/lib/guest/guest.service.d.ts +5 -4
- package/lib/guest/index.d.ts +0 -1
- package/lib/host/host.service.d.ts +7 -6
- package/lib/host/url.d.ts +1 -1
- package/lib/index.d.ts +1 -4
- package/lib/meetings.service.d.ts +3 -0
- package/lib/shared/availability.d.ts +2 -2
- package/lib/shared/calendar.d.ts +1 -1
- package/lib/shared/environment.d.ts +8 -0
- package/lib/shared/fieldmask.d.ts +1 -1
- package/lib/shared/host.d.ts +1 -1
- package/lib/shared/meeting-type.d.ts +2 -2
- package/lib/shared/meeting.d.ts +2 -2
- package/lib/shared/preferences.d.ts +3 -3
- package/lib/shared/time-span.d.ts +1 -1
- package/package.json +26 -15
- package/public_api.d.ts +1 -1
- package/src/README.md +12 -0
- package/vendasta-meetings.d.ts +1 -10
- package/bundles/vendasta-meetings.umd.js +0 -6217
- package/bundles/vendasta-meetings.umd.js.map +0 -1
- package/bundles/vendasta-meetings.umd.min.js +0 -16
- package/bundles/vendasta-meetings.umd.min.js.map +0 -1
- package/esm2015/lib/_generated/host.service.js +0 -62
- package/esm2015/lib/_internal/enums/dayofweek.enum.js +0 -18
- package/esm2015/lib/_internal/enums/index.js +0 -11
- package/esm2015/lib/_internal/enums/meeting-source.enum.js +0 -20
- package/esm2015/lib/_internal/enums/shared.enum.js +0 -21
- package/esm2015/lib/_internal/google-meet.api.service.js +0 -38
- package/esm2015/lib/_internal/index.js +0 -15
- package/esm2015/lib/_internal/interfaces/date-range.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/datetime.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/dayofweek.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/field-mask.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/google-meet.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/index.js +0 -2
- package/esm2015/lib/_internal/interfaces/meeting-guest.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/meeting-host.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/meeting-source.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/meeting-type.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/shared.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/timeofday.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/zoom.interface.js +0 -8
- package/esm2015/lib/_internal/meeting-guest.api.service.js +0 -81
- package/esm2015/lib/_internal/meeting-host.api.service.js +0 -167
- package/esm2015/lib/_internal/meeting-source-api.api.service.js +0 -38
- package/esm2015/lib/_internal/meetings.module.js +0 -33
- package/esm2015/lib/_internal/objects/date-range.js +0 -40
- package/esm2015/lib/_internal/objects/datetime.js +0 -92
- package/esm2015/lib/_internal/objects/dayofweek.js +0 -7
- package/esm2015/lib/_internal/objects/field-mask.js +0 -30
- package/esm2015/lib/_internal/objects/google-meet.js +0 -646
- package/esm2015/lib/_internal/objects/index.js +0 -18
- package/esm2015/lib/_internal/objects/meeting-guest.js +0 -591
- package/esm2015/lib/_internal/objects/meeting-host.js +0 -1699
- package/esm2015/lib/_internal/objects/meeting-source.js +0 -139
- package/esm2015/lib/_internal/objects/meeting-type.js +0 -142
- package/esm2015/lib/_internal/objects/shared.js +0 -504
- package/esm2015/lib/_internal/objects/timeofday.js +0 -42
- package/esm2015/lib/_internal/objects/zoom.js +0 -456
- package/esm2015/lib/_internal/zoom.api.service.js +0 -38
- package/esm2015/lib/guest/guest.module.js +0 -16
- package/esm2015/lib/guest/guest.service.js +0 -82
- package/esm2015/lib/guest/index.js +0 -3
- package/esm2015/lib/host/host.module.js +0 -16
- package/esm2015/lib/host/host.service.js +0 -283
- package/esm2015/lib/host/url.js +0 -39
- package/esm2015/lib/index.js +0 -11
- package/esm2015/lib/meetings.module.js +0 -22
- package/esm2015/lib/meetings.service.js +0 -165
- package/esm2015/lib/shared/availability.js +0 -2
- package/esm2015/lib/shared/calendar.js +0 -29
- package/esm2015/lib/shared/duration.js +0 -41
- package/esm2015/lib/shared/fieldmask.js +0 -6
- package/esm2015/lib/shared/host-id.js +0 -20
- package/esm2015/lib/shared/host-url-map.js +0 -2
- package/esm2015/lib/shared/host-user.js +0 -8
- package/esm2015/lib/shared/host.js +0 -8
- package/esm2015/lib/shared/index.js +0 -14
- package/esm2015/lib/shared/meeting-type.js +0 -52
- package/esm2015/lib/shared/meeting.js +0 -89
- package/esm2015/lib/shared/paged-response.js +0 -8
- package/esm2015/lib/shared/preferences.js +0 -12
- package/esm2015/lib/shared/time-span.js +0 -7
- package/esm2015/public_api.js +0 -2
- package/esm2015/vendasta-meetings.js +0 -12
- package/fesm2015/vendasta-meetings.js.map +0 -1
- package/lib/_internal/meetings.module.d.ts +0 -2
- package/lib/guest/guest.module.d.ts +0 -2
- package/lib/host/host.module.d.ts +0 -2
- package/lib/meetings.module.d.ts +0 -2
- package/vendasta-meetings.metadata.json +0 -1
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import { map, mapTo } from 'rxjs/operators';
|
|
4
|
+
import { ListBookedMeetingsRequestFilters, MeetingHostApiService, PagedRequestOptions, TimeRange, TimeZone } from '../_internal';
|
|
5
|
+
import { CalendarFromApi, getFieldMask, meetingFromApi, MeetingTypeFromApi, MeetingTypeToApi, PagedResponse, PreferencesFromApi } from '../shared';
|
|
6
|
+
import { getBookingUrlImplementation, getGeneralBookingUrlImplementation } from './url';
|
|
7
|
+
import { hostUserFromApi } from '../shared/host-user';
|
|
8
|
+
import { Environment, onProductionGlobal } from "../shared/environment";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../_internal";
|
|
11
|
+
export class HostService {
|
|
12
|
+
constructor(hostAPIService) {
|
|
13
|
+
this.hostAPIService = hostAPIService;
|
|
14
|
+
}
|
|
15
|
+
// Use buildHostId to get an identifier that can be used in subsequent requests. See vendastaapis for more details
|
|
16
|
+
buildHostId(req) {
|
|
17
|
+
return this.hostAPIService.buildHostId({
|
|
18
|
+
userId: req.userId,
|
|
19
|
+
// Gross typecast exists because I want to restrict the properties on the map (for now).
|
|
20
|
+
applicationContextProperties: req.applicationContextProperties
|
|
21
|
+
}).pipe(map(res => res.hostId || ''));
|
|
22
|
+
}
|
|
23
|
+
doesCalendarExist(calendarIdentifier) {
|
|
24
|
+
return this.hostAPIService.doesCalendarExist({ calendarIdentifier: calendarIdentifier }).pipe(map(resp => resp.exists));
|
|
25
|
+
}
|
|
26
|
+
getCalendar(req) {
|
|
27
|
+
return this.hostAPIService.getCalendar({ calendarId: req.calendarId }).pipe(map(res => CalendarFromApi(res?.calendar)));
|
|
28
|
+
}
|
|
29
|
+
ensurePersonalCalendarExists(req) {
|
|
30
|
+
return this.hostAPIService.ensurePersonalCalendarExists({
|
|
31
|
+
userId: req.userId,
|
|
32
|
+
applicationContextProperties: req.applicationContextProperties,
|
|
33
|
+
}).pipe(map(res => res ? res.calendarId : ''));
|
|
34
|
+
}
|
|
35
|
+
ensureGroupCalendarsExist(req) {
|
|
36
|
+
return this.hostAPIService.ensureGroupCalendarsExist({ externalIds: req.externalIds }).pipe(map(res => res?.calendarIds || []));
|
|
37
|
+
}
|
|
38
|
+
/*
|
|
39
|
+
createCalendar creates a calendar which meeting types can be created for and events can be booked on
|
|
40
|
+
The fields of a calendar are documented in https://github.com/vendasta/vendastaapis/blob/master/meetings/v1/shared.proto
|
|
41
|
+
*/
|
|
42
|
+
createCalendar(req) {
|
|
43
|
+
return this.hostAPIService.createCalendar(req);
|
|
44
|
+
}
|
|
45
|
+
updateCalendarSlug(calendarId, newSlug) {
|
|
46
|
+
return this.hostAPIService.updateCalendar({
|
|
47
|
+
calendarId: calendarId,
|
|
48
|
+
calendarUpdate: { slug: newSlug },
|
|
49
|
+
fieldMask: { paths: ['slug'] },
|
|
50
|
+
}).pipe(mapTo(undefined));
|
|
51
|
+
}
|
|
52
|
+
updateCalendarHostUserIDs(calendarId, replacementHostUserIds) {
|
|
53
|
+
return this.hostAPIService.updateCalendar({
|
|
54
|
+
calendarId: calendarId,
|
|
55
|
+
calendarUpdate: { hostUserIds: replacementHostUserIds },
|
|
56
|
+
fieldMask: { paths: ['host_user_ids'] },
|
|
57
|
+
}).pipe(mapTo(undefined));
|
|
58
|
+
}
|
|
59
|
+
getMeetingTypesForCalendars(req) {
|
|
60
|
+
return this.hostAPIService.getMeetingTypesForCalendars({ calendarIds: req.calendarIds }).pipe(map(res => {
|
|
61
|
+
if (!res?.calendarMeetingTypesMap) {
|
|
62
|
+
return {};
|
|
63
|
+
}
|
|
64
|
+
return Object.keys(res.calendarMeetingTypesMap).reduce((calendarToMeetingTypeMap, calendarId) => {
|
|
65
|
+
const meetingTypes = (res.calendarMeetingTypesMap[calendarId]?.meetingTypes || []).map(mt => MeetingTypeFromApi({
|
|
66
|
+
meetingTypeApi: mt,
|
|
67
|
+
environment: onProductionGlobal() ? Environment.PROD : Environment.DEMO,
|
|
68
|
+
calendarId,
|
|
69
|
+
metadata: req.metadata,
|
|
70
|
+
}));
|
|
71
|
+
return {
|
|
72
|
+
...calendarToMeetingTypeMap,
|
|
73
|
+
[calendarId]: meetingTypes,
|
|
74
|
+
};
|
|
75
|
+
}, {});
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
/*
|
|
79
|
+
listMeetingTypes returns a list of meeting types for a host
|
|
80
|
+
@param hostId: An identifier for an individual host
|
|
81
|
+
@param metadata: optional metadata to include on the meeting type booking link
|
|
82
|
+
@param calendarSlug: used to replace hostId in the url. Use it when you are confident you know the host's slug.
|
|
83
|
+
- calendarSlug IS NOT USED TO RETRIEVE MEETING TYPES, ONLY TO MAKE THE BOOKING URLS
|
|
84
|
+
*/
|
|
85
|
+
listMeetingTypes(req) {
|
|
86
|
+
return this.hostAPIService.listMeetingTypes(req).pipe(map(resp => {
|
|
87
|
+
if (!resp || !resp.meetingTypes) {
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
return resp.meetingTypes.map(mt => {
|
|
91
|
+
return MeetingTypeFromApi({
|
|
92
|
+
meetingTypeApi: mt,
|
|
93
|
+
calendarId: req.hostId,
|
|
94
|
+
environment: onProductionGlobal() ? Environment.PROD : Environment.DEMO,
|
|
95
|
+
metadata: req.metadata,
|
|
96
|
+
calendarSlug: req.calendarSlug,
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
/*
|
|
102
|
+
getBookingUrl returns a link that can be used to book a meeting with this host.
|
|
103
|
+
@param calendarId: An identifier for an individual host or grouping of hosts (i.e., team).
|
|
104
|
+
@param @deprecated hostId: An identifier for an individual host.
|
|
105
|
+
@param meetingTypeId: An optional identifier for the meeting type. Default: 30-minutes.
|
|
106
|
+
@param metadata: optional metadata to include in the url.
|
|
107
|
+
- metadata can be used to pre-fill certain form fields and will be stored during the booking process.
|
|
108
|
+
- metadata can be obtained by subscribing to the booking event.
|
|
109
|
+
@param calendarSlug: used to replace hostId in the url. Use it when you are confident you know the host's slug.
|
|
110
|
+
*/
|
|
111
|
+
getBookingUrl(req) {
|
|
112
|
+
return of(getBookingUrlImplementation({
|
|
113
|
+
...req,
|
|
114
|
+
calendarId: req.calendarId || req.hostId,
|
|
115
|
+
environment: onProductionGlobal() ? Environment.PROD : Environment.DEMO,
|
|
116
|
+
calendarSlug: req.calendarSlug,
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
/*
|
|
120
|
+
getGeneralBookingUrl returns a link that can be used to select a meeting type to book with the given calendar.
|
|
121
|
+
@param calendarId: An identifier for an individual host or grouping of hosts (i.e., team).
|
|
122
|
+
@param metadata: optional metadata to include in the url.
|
|
123
|
+
- metadata can be used to pre-fill certain form fields and will be stored during the booking process.
|
|
124
|
+
- metadata can be obtained by subscribing to the booking event.
|
|
125
|
+
@param calendarSlug: used to replace hostId in the url. Use it when you are confident you know the host's slug.
|
|
126
|
+
*/
|
|
127
|
+
getGeneralBookingUrl(req) {
|
|
128
|
+
return of(getGeneralBookingUrlImplementation({
|
|
129
|
+
environment: onProductionGlobal() ? Environment.PROD : Environment.DEMO,
|
|
130
|
+
calendarId: req.calendarId,
|
|
131
|
+
metadata: req.metadata,
|
|
132
|
+
calendarSlug: req.calendarSlug,
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
/*
|
|
136
|
+
getBookingUrlsMulti returns a mapping of hosts -> event types -> booking links.
|
|
137
|
+
@param calendarId: An identifier for an individual host or grouping of hosts.
|
|
138
|
+
@param meetingTypeSlug: meetingTypeSlugs are passed in the form {hostId: [meetingTypeSlug1, meetingTypeSlug2]}
|
|
139
|
+
@param metadata: optional metadata to include in the url.
|
|
140
|
+
- metadata can be used to pre-fill certain form fields and will be stored during the booking process.
|
|
141
|
+
- metadata can be obtained by subscribing to the booking event.
|
|
142
|
+
@param calendarSlug: used to replace hostId in the url. Use it when you are confident you know the host's slug.
|
|
143
|
+
*/
|
|
144
|
+
getBookingUrlsMulti(req, metadata, calendarSlug) {
|
|
145
|
+
return of(Object.keys(req).reduce((hostMap, calendarId) => {
|
|
146
|
+
return {
|
|
147
|
+
...hostMap,
|
|
148
|
+
[calendarId]: req[calendarId].reduce((meetingTypeMap, meetingTypeSlug) => {
|
|
149
|
+
return {
|
|
150
|
+
...meetingTypeMap,
|
|
151
|
+
[meetingTypeSlug]: getBookingUrlImplementation({
|
|
152
|
+
calendarId,
|
|
153
|
+
meetingTypeSlug,
|
|
154
|
+
metadata,
|
|
155
|
+
environment: onProductionGlobal() ? Environment.PROD : Environment.DEMO,
|
|
156
|
+
calendarSlug,
|
|
157
|
+
})
|
|
158
|
+
};
|
|
159
|
+
}, {})
|
|
160
|
+
};
|
|
161
|
+
}, {}));
|
|
162
|
+
}
|
|
163
|
+
isHostConfigured(req) {
|
|
164
|
+
return this.hostAPIService.isHostConfigured(req).pipe(map((resp) => resp.isConfigured));
|
|
165
|
+
}
|
|
166
|
+
setGeneralAvailability(req) {
|
|
167
|
+
const apiReq = {
|
|
168
|
+
...req,
|
|
169
|
+
timeZone: new TimeZone(req.timeZone),
|
|
170
|
+
};
|
|
171
|
+
if (req.timeSlot) {
|
|
172
|
+
apiReq.timeSlot = new TimeRange(req.timeSlot);
|
|
173
|
+
}
|
|
174
|
+
return this.hostAPIService.setGeneralAvailability(apiReq).pipe(mapTo(null));
|
|
175
|
+
}
|
|
176
|
+
listBookedMeetings(req) {
|
|
177
|
+
return this.hostAPIService.listBookedMeetings({
|
|
178
|
+
...req,
|
|
179
|
+
pagingOptions: new PagedRequestOptions({ cursor: req.cursor, pageSize: req.pageSize }),
|
|
180
|
+
filters: new ListBookedMeetingsRequestFilters(req.filters),
|
|
181
|
+
timeZone: new TimeZone(req.timeZone),
|
|
182
|
+
}).pipe(map((resp) => {
|
|
183
|
+
const meetings = (resp.meetings || []).map(meeting => meetingFromApi(meeting));
|
|
184
|
+
return new PagedResponse(meetings, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
cancelMeeting(req) {
|
|
188
|
+
return this.hostAPIService.cancelMeeting({
|
|
189
|
+
...req
|
|
190
|
+
}).pipe(mapTo(null));
|
|
191
|
+
}
|
|
192
|
+
rescheduleMeeting(req) {
|
|
193
|
+
return this.hostAPIService.rescheduleMeeting({
|
|
194
|
+
...req
|
|
195
|
+
}).pipe(mapTo(null));
|
|
196
|
+
}
|
|
197
|
+
listAvailability(req) {
|
|
198
|
+
return this.hostAPIService.listAvailability(req).pipe(map(response => {
|
|
199
|
+
const results = (response.availabilityRules || []).filter(Boolean).map(a => {
|
|
200
|
+
return {
|
|
201
|
+
hostId: a.hostId || '',
|
|
202
|
+
meetingTypeId: a.meetingTypeId || '',
|
|
203
|
+
day: a.day,
|
|
204
|
+
timeSlot: a.timeSlot,
|
|
205
|
+
timeZone: a.timeZone,
|
|
206
|
+
};
|
|
207
|
+
});
|
|
208
|
+
return new PagedResponse(results, response.metadata.nextCursor, response.metadata.hasMore);
|
|
209
|
+
}));
|
|
210
|
+
}
|
|
211
|
+
/* updatePreferences will update the host's preferences.
|
|
212
|
+
* It is guaranteed to only update the fields provided.
|
|
213
|
+
* For example:
|
|
214
|
+
* updatePreferences({meetingIntegration: MeetingSource.MEETING_SOURCE_GOOGLE_MEET})
|
|
215
|
+
* will only update the preference meetingIntegration to Google Meet. Keeping the other preferences the same.
|
|
216
|
+
*
|
|
217
|
+
* Alternatively, you can provide a list of keys to update as the second argument.
|
|
218
|
+
* For example:
|
|
219
|
+
* updatePreferences({...object with all fields}, ['meetingIntegration'])
|
|
220
|
+
* will only update the field 'meetingIntegration' to the value in preferences.
|
|
221
|
+
*
|
|
222
|
+
* Calling with an empty object and no keys is a no-op, or an undefined object.
|
|
223
|
+
* Calling with an object containing fields not in `Preferences` or with updateFields not linked to properties in
|
|
224
|
+
* `Preferences` is an error.
|
|
225
|
+
*/
|
|
226
|
+
updatePreferences(req) {
|
|
227
|
+
const fieldMask = getFieldMask({ o: req.preferences, updateFields: req.updateFields });
|
|
228
|
+
if (fieldMask.paths.length === 0) {
|
|
229
|
+
return of();
|
|
230
|
+
}
|
|
231
|
+
return this.hostAPIService.updateHostPreferences({
|
|
232
|
+
hostId: req.hostId,
|
|
233
|
+
preferences: req.preferences,
|
|
234
|
+
fieldMask,
|
|
235
|
+
}).pipe(mapTo(undefined));
|
|
236
|
+
}
|
|
237
|
+
getPreferences(req) {
|
|
238
|
+
return this.hostAPIService.getHostPreferences({
|
|
239
|
+
hostId: req.hostId
|
|
240
|
+
}).pipe(map(response => PreferencesFromApi(response.preferences)));
|
|
241
|
+
}
|
|
242
|
+
getMeeting(meetingId, location) {
|
|
243
|
+
return this.hostAPIService.getHostMeeting({
|
|
244
|
+
meetingId: meetingId, location: location,
|
|
245
|
+
}).pipe(map((resp) => meetingFromApi(resp.meeting)));
|
|
246
|
+
}
|
|
247
|
+
updateMeetingMetadata(req) {
|
|
248
|
+
return this.hostAPIService.updateMeetingMetadata({
|
|
249
|
+
meetingId: req.meetingId,
|
|
250
|
+
metadata: req.metadata
|
|
251
|
+
}).pipe(mapTo(undefined));
|
|
252
|
+
}
|
|
253
|
+
bookMeeting(req) {
|
|
254
|
+
return this.hostAPIService.bookMeeting(req).pipe(map((resp) => resp.meetingId));
|
|
255
|
+
}
|
|
256
|
+
// createDefaultMeetingTypes will create what Meeting Scheduler deems to be the default meeting types.
|
|
257
|
+
// If the calendar already has meeting types, this is guaranteed to be a no-op.
|
|
258
|
+
createDefaultMeetingTypes(req) {
|
|
259
|
+
return this.hostAPIService.createDefaultMeetingTypes({ calendarIds: req.calendarIds }).pipe(mapTo(undefined));
|
|
260
|
+
}
|
|
261
|
+
createMeetingType(req) {
|
|
262
|
+
return this.hostAPIService.createMeetingType({ meetingType: MeetingTypeToApi({ meetingType: req.meetingType }) })
|
|
263
|
+
.pipe(map(res => res.id));
|
|
264
|
+
}
|
|
265
|
+
/* updateMeetingType will update the meeting type fields.
|
|
266
|
+
* It is guaranteed to only update the fields provided.
|
|
267
|
+
* For example:
|
|
268
|
+
* updateMeetingType({name: 'Onboarding'})
|
|
269
|
+
* will only update the field 'name' to 'Onboarding'. Keeping the other fields the same.
|
|
270
|
+
*
|
|
271
|
+
* Alternatively, you can provide a list of keys to update as the second argument.
|
|
272
|
+
* For example:
|
|
273
|
+
* updateMeetingType({...object with all fields}, ['name'])
|
|
274
|
+
* will only update the field 'name' to the value passed in.
|
|
275
|
+
*
|
|
276
|
+
* Calling with an empty object and no keys is a no-op, or an undefined object.
|
|
277
|
+
* Calling with an object containing fields not in `MeetingType` or with updateFields not linked to properties in
|
|
278
|
+
* `MeetingType` is an error.
|
|
279
|
+
*/
|
|
280
|
+
updateMeetingType(req) {
|
|
281
|
+
const fieldMask = getFieldMask({ o: req.meetingType, updateFields: req.updateFields });
|
|
282
|
+
if (fieldMask.paths.length === 0) {
|
|
283
|
+
return of();
|
|
284
|
+
}
|
|
285
|
+
return this.hostAPIService.updateMeetingType({
|
|
286
|
+
id: req.id,
|
|
287
|
+
meetingType: MeetingTypeToApi({ meetingType: req.meetingType }),
|
|
288
|
+
fieldMask,
|
|
289
|
+
}).pipe(mapTo(undefined));
|
|
290
|
+
}
|
|
291
|
+
deleteMeetingType(req) {
|
|
292
|
+
return this.hostAPIService.deleteMeetingType({ id: req.id }).pipe(mapTo(undefined));
|
|
293
|
+
}
|
|
294
|
+
getHostsForCalendar(req) {
|
|
295
|
+
return this.hostAPIService.getHostsForCalendar({ calendarId: req.calendarId }).pipe(map(res => {
|
|
296
|
+
return (res.hostUsers || []).map(hostuser => {
|
|
297
|
+
return hostUserFromApi(hostuser);
|
|
298
|
+
});
|
|
299
|
+
}));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
HostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: HostService, deps: [{ token: i1.MeetingHostApiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
303
|
+
HostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: HostService, providedIn: 'root' });
|
|
304
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: HostService, decorators: [{
|
|
305
|
+
type: Injectable,
|
|
306
|
+
args: [{ providedIn: 'root' }]
|
|
307
|
+
}], ctorParameters: function () { return [{ type: i1.MeetingHostApiService }]; } });
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvaG9zdC9ob3N0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFTLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQVNILGdDQUFnQyxFQUdoQyxxQkFBcUIsRUFDckIsbUJBQW1CLEVBRW5CLFNBQVMsRUFFVCxRQUFRLEVBR1gsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUlILGVBQWUsRUFDZixZQUFZLEVBR1osY0FBYyxFQUdkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUViLGtCQUFrQixFQUNyQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUMsMkJBQTJCLEVBQUUsa0NBQWtDLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFDdEYsT0FBTyxFQUFXLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFBO0FBQzdELE9BQU8sRUFBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBSXRFLE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFlBQ1ksY0FBcUM7UUFBckMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO0lBRWpELENBQUM7SUFFRCxrSEFBa0g7SUFDbEgsV0FBVyxDQUFDLEdBQXNGO1FBQzlGLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7WUFDL0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1lBQ2xCLHdGQUF3RjtZQUN4Riw0QkFBNEIsRUFBRSxHQUFHLENBQUMsNEJBQWdFO1NBQ3JHLENBQ0osQ0FBQyxJQUFJLENBQUMsR0FBRyxD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QyxHQUFtQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsRUFBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUEyQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsRUFBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUM3RSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3hDLE9BQU8sZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3BDLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQTtJQUNMLENBQUM7O3dHQXpZUSxXQUFXOzRHQUFYLFdBQVcsY0FEQyxNQUFNOzJGQUNsQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIG1hcFRvfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIENyZWF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSxcbiAgICBDcmVhdGVDYWxlbmRhclJlc3BvbnNlLFxuICAgIERheU9mV2VlayxcbiAgICBHZXRIb3N0TWVldGluZ1Jlc3BvbnNlLFxuICAgIEhvc3RCb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgSG9zdEJvb2tNZWV0aW5nUmVzcG9uc2UsXG4gICAgSXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlLFxuICAgIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZSxcbiAgICBNZWV0aW5nSG9zdEFwaVNlcnZpY2UsXG4gICAgUGFnZWRSZXF1ZXN0T3B0aW9ucyxcbiAgICBQYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlLFxuICAgIFRpbWVSYW5nZSxcbiAgICBUaW1lUmFuZ2VJbnRlcmZhY2UsXG4gICAgVGltZVpvbmUsXG4gICAgVGltZVpvbmVJbnRlcmZhY2UsXG4gICAgV2Vla2RheUF2YWlsYWJpbGl0eVxufSBmcm9tICcuLi9faW50ZXJuYWwnO1xuaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzU2V0LFxuICAgIEF2YWlsYWJpbGl0eVJ1bGUsXG4gICAgQ2FsZW5kYXIsXG4gICAgQ2FsZW5kYXJGcm9tQXBpLFxuICAgIGdldEZpZWxkTWFzayxcbiAgICBIb3N0VXJsTWFwLFxuICAgIE1lZXRpbmcsXG4gICAgbWVldGluZ0Zyb21BcGksXG4gICAgTWVldGluZ01ldGFkYXRhLFxuICAgIE1lZXRpbmdUeXBlLFxuICAgIE1lZXRpbmdUeXBlRnJvbUFwaSxcbiAgICBNZWV0aW5nVHlwZVRvQXBpLFxuICAgIFBhZ2VkUmVzcG9uc2UsXG4gICAgUHJlZmVyZW5jZXMsXG4gICAgUHJlZmVyZW5jZXNGcm9tQXBpXG59IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQge2dldEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbiwgZ2V0R2VuZXJhbEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbn0gZnJvbSAnLi91cmwnO1xuaW1wb3J0IHtIb3N0VXNlciwgaG9zdFVzZXJGcm9tQXBpfSBmcm9tICcuLi9zaGFyZWQvaG9zdC11c2VyJ1xuaW1wb3J0IHtFbnZpcm9ubWVudCwgb25Qcm9kdWN0aW9uR2xvYmFsfSBmcm9tIFwiLi4vc2hhcmVkL2Vudmlyb25tZW50XCI7XG5cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgSG9zdFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGhvc3RBUElTZXJ2aWNlOiBNZWV0aW5nSG9zdEFwaVNlcnZpY2UsXG4gICAgKSB7XG4gICAgfVxuXG4gICAgLy8gVXNlIGJ1aWxkSG9zdElkIHRvIGdldCBhbiBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQgaW4gc3Vic2VxdWVudCByZXF1ZXN0cy4gU2VlIHZlbmRhc3RhYXBpcyBmb3IgbW9yZSBkZXRhaWxzXG4gICAgYnVpbGRIb3N0SWQocmVxOiB7IHVzZXJJZDogc3RyaW5nLCBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOiBBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzU2V0IH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5idWlsZEhvc3RJZCh7XG4gICAgICAgICAgICAgICAgdXNlcklkOiByZXEudXNlcklkLFxuICAgICAgICAgICAgICAgIC8vIEdyb3NzIHR5cGVjYXN0IGV4aXN0cyBiZWNhdXNlIEkgd2FudCB0byByZXN0cmljdCB0aGUgcHJvcGVydGllcyBvbiB0aGUgbWFwIChmb3Igbm93KS5cbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOiByZXEuYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyBhcyBhbnkgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgICAgICAgICAgfVxuICAgICAgICApLnBpcGUobWFwKHJlcyA9PiByZXMuaG9zdElkIHx8ICcnKSk7XG4gICAgfVxuXG4gICAgZG9lc0NhbGVuZGFyRXhpc3QoY2FsZW5kYXJJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZG9lc0NhbGVuZGFyRXhpc3Qoe2NhbGVuZGFySWRlbnRpZmllcjogY2FsZW5kYXJJZGVudGlmaWVyfSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHJlc3AuZXhpc3RzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldENhbGVuZGFyKHJlcTogeyBjYWxlbmRhcklkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8Q2FsZW5kYXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZ2V0Q2FsZW5kYXIoe2NhbGVuZGFySWQ6IHJlcS5jYWxlbmRhcklkfSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXMgPT4gQ2FsZW5kYXJGcm9tQXBpKHJlcz8uY2FsZW5kYXIpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHMocmVxOiB7XG4gICAgICAgIHVzZXJJZDogc3RyaW5nLFxuICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOiBBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzU2V0XG4gICAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHMoe1xuICAgICAgICAgICAgdXNlcklkOiByZXEudXNlcklkLFxuICAgICAgICAgICAgYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllczogcmVxLmFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMgYXMgYW55IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIH0pLnBpcGUobWFwKHJlcyA9PiByZXMgPyByZXMuY2FsZW5kYXJJZCA6ICcnKSk7XG4gICAgfVxuXG4gICAgZW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdChyZXE6IHsgZXh0ZXJuYWxJZHM6IHN0cmluZ1tdIH0pOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3Qoe2V4dGVybmFsSWRzOiByZXEuZXh0ZXJuYWxJZHN9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlcyA9PiByZXM/LmNhbGVuZGFySWRzIHx8IFtdKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qXG4gICAgIGNyZWF0ZUNhbGVuZGFyIGNyZWF0ZXMgYSBjYWxlbmRhciB3aGljaCBtZWV0aW5nIHR5cGVzIGNhbiBiZSBjcmVhdGVkIGZvciBhbmQgZXZlbnRzIGNhbiBiZSBib29rZWQgb25cbiAgICAgVGhlIGZpZWxkcyBvZiBhIGNhbGVuZGFyIGFyZSBkb2N1bWVudGVkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS92ZW5kYXN0YS92ZW5kYXN0YWFwaXMvYmxvYi9tYXN0ZXIvbWVldGluZ3MvdjEvc2hhcmVkLnByb3RvXG4gICAgKi9cbiAgICBjcmVhdGVDYWxlbmRhcihyZXE6IENyZWF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8Q3JlYXRlQ2FsZW5kYXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5jcmVhdGVDYWxlbmRhcihyZXEpO1xuICAgIH1cblxuICAgIHVwZGF0ZUNhbGVuZGFyU2x1ZyhjYWxlbmRhcklkOiBzdHJpbmcsIG5ld1NsdWc6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS51cGRhdGVDYWxlbmRhcih7XG4gICAgICAgICAgICBjYWxlbmRhcklkOiBjYWxlbmRhcklkLFxuICAgICAgICAgICAgY2FsZW5kYXJVcGRhdGU6IHtzbHVnOiBuZXdTbHVnfSxcbiAgICAgICAgICAgIGZpZWxkTWFzazoge3BhdGhzOiBbJ3NsdWcnXX0sXG4gICAgICAgIH0pLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQ2FsZW5kYXJIb3N0VXNlcklEcyhjYWxlbmRhcklkOiBzdHJpbmcsIHJlcGxhY2VtZW50SG9zdFVzZXJJZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLnVwZGF0ZUNhbGVuZGFyKHtcbiAgICAgICAgICAgIGNhbGVuZGFySWQ6IGNhbGVuZGFySWQsXG4gICAgICAgICAgICBjYWxlbmRhclVwZGF0ZToge2hvc3RVc2VySWRzOiByZXBsYWNlbWVudEhvc3RVc2VySWRzfSxcbiAgICAgICAgICAgIGZpZWxkTWFzazoge3BhdGhzOiBbJ2hvc3RfdXNlcl9pZHMnXX0sXG4gICAgICAgIH0pLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgZ2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzKHJlcToge1xuICAgICAgICBjYWxlbmRhcklkczogc3RyaW5nW10sXG4gICAgICAgIG1ldGFkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIH0pOiBPYnNlcnZhYmxlPHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IE1lZXRpbmdUeXBlW10gfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnMoe2NhbGVuZGFySWRzOiByZXEuY2FsZW5kYXJJZHN9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXM/LmNhbGVuZGFyTWVldGluZ1R5cGVzTWFwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlcy5jYWxlbmRhck1lZXRpbmdUeXBlc01hcCkucmVkdWNlKChjYWxlbmRhclRvTWVldGluZ1R5cGVNYXAsIGNhbGVuZGFySWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVldGluZ1R5cGVzID0gKHJlcy5jYWxlbmRhck1lZXRpbmdUeXBlc01hcFtjYWxlbmRhcklkXT8ubWVldGluZ1R5cGVzIHx8IFtdKS5tYXAobXQgPT4gTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiBtdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKSA/IEVudmlyb25tZW50LlBST0QgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNhbGVuZGFyVG9NZWV0aW5nVHlwZU1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxlbmRhcklkXTogbWVldGluZ1R5cGVzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sIHt9IGFzIHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IE1lZXRpbmdUeXBlW10gfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAvKlxuICAgICBsaXN0TWVldGluZ1R5cGVzIHJldHVybnMgYSBsaXN0IG9mIG1lZXRpbmcgdHlwZXMgZm9yIGEgaG9zdFxuICAgICBAcGFyYW0gaG9zdElkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3RcbiAgICAgQHBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCBtZXRhZGF0YSB0byBpbmNsdWRlIG9uIHRoZSBtZWV0aW5nIHR5cGUgYm9va2luZyBsaW5rXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAgICAtIGNhbGVuZGFyU2x1ZyBJUyBOT1QgVVNFRCBUTyBSRVRSSUVWRSBNRUVUSU5HIFRZUEVTLCBPTkxZIFRPIE1BS0UgVEhFIEJPT0tJTkcgVVJMU1xuICAgICovXG4gICAgbGlzdE1lZXRpbmdUeXBlcyhyZXE6IHtcbiAgICAgICAgaG9zdElkOiBzdHJpbmcsXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH1cbiAgICAgICAgY2FsZW5kYXJTbHVnPzogc3RyaW5nLFxuICAgIH0pOiBPYnNlcnZhYmxlPE1lZXRpbmdUeXBlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdE1lZXRpbmdUeXBlcyhyZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzcCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwIHx8ICFyZXNwLm1lZXRpbmdUeXBlcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwLm1lZXRpbmdUeXBlcy5tYXAobXQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiBtdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFySWQ6IHJlcS5ob3N0SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogb25Qcm9kdWN0aW9uR2xvYmFsKCkgPyBFbnZpcm9ubWVudC5QUk9EIDogRW52aXJvbm1lbnQuREVNTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIC8qXG4gICAgIGdldEJvb2tpbmdVcmwgcmV0dXJucyBhIGxpbmsgdGhhdCBjYW4gYmUgdXNlZCB0byBib29rIGEgbWVldGluZyB3aXRoIHRoaXMgaG9zdC5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cyAoaS5lLiwgdGVhbSkuXG4gICAgIEBwYXJhbSBAZGVwcmVjYXRlZCBob3N0SWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdC5cbiAgICAgQHBhcmFtIG1lZXRpbmdUeXBlSWQ6IEFuIG9wdGlvbmFsIGlkZW50aWZpZXIgZm9yIHRoZSBtZWV0aW5nIHR5cGUuIERlZmF1bHQ6IDMwLW1pbnV0ZXMuXG4gICAgIEBwYXJhbSBtZXRhZGF0YTogb3B0aW9uYWwgbWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgdXJsLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIHByZS1maWxsIGNlcnRhaW4gZm9ybSBmaWVsZHMgYW5kIHdpbGwgYmUgc3RvcmVkIGR1cmluZyB0aGUgYm9va2luZyBwcm9jZXNzLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSBvYnRhaW5lZCBieSBzdWJzY3JpYmluZyB0byB0aGUgYm9va2luZyBldmVudC5cbiAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgKi9cbiAgICBnZXRCb29raW5nVXJsKFxuICAgICAgICByZXE6IHtcbiAgICAgICAgICAgIC8vIEBkZXByZWNhdGVkOiB1c2UgY2FsZW5kYXJJZCBpbnN0ZWFkLiBjYWxlbmRhcklkIG5vdCByZXF1aXJlZCB0byBhdm9pZCBicmVha2luZyBleGlzdGluZyBjbGllbnRzLlxuICAgICAgICAgICAgaG9zdElkOiBzdHJpbmcsXG4gICAgICAgICAgICBjYWxlbmRhcklkPzogc3RyaW5nLFxuICAgICAgICAgICAgLy8gQGRlcHJlY2F0ZWQ6IHVzZSBtZWV0aW5nVHlwZVNsdWcgaW5zdGVhZFxuICAgICAgICAgICAgbWVldGluZ1R5cGVJZD86IHN0cmluZyxcbiAgICAgICAgICAgIG1lZXRpbmdUeXBlU2x1Zz86IHN0cmluZyxcbiAgICAgICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgICAgICBjYWxlbmRhclNsdWc/OiBzdHJpbmcsXG4gICAgICAgIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gb2YoZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgICAgICAgICAgICAuLi5yZXEsXG4gICAgICAgICAgICAgICAgY2FsZW5kYXJJZDogcmVxLmNhbGVuZGFySWQgfHwgcmVxLmhvc3RJZCxcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogb25Qcm9kdWN0aW9uR2xvYmFsKCkgPyBFbnZpcm9ubWVudC5QUk9EIDogRW52aXJvbm1lbnQuREVNTyxcbiAgICAgICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qXG4gICAgIGdldEdlbmVyYWxCb29raW5nVXJsIHJldHVybnMgYSBsaW5rIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VsZWN0IGEgbWVldGluZyB0eXBlIHRvIGJvb2sgd2l0aCB0aGUgZ2l2ZW4gY2FsZW5kYXIuXG4gICAgIEBwYXJhbSBjYWxlbmRhcklkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3Qgb3IgZ3JvdXBpbmcgb2YgaG9zdHMgKGkuZS4sIHRlYW0pLlxuICAgICBAcGFyYW0gbWV0YWRhdGE6IG9wdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIHVybC5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBwcmUtZmlsbCBjZXJ0YWluIGZvcm0gZmllbGRzIGFuZCB3aWxsIGJlIHN0b3JlZCBkdXJpbmcgdGhlIGJvb2tpbmcgcHJvY2Vzcy5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgb2J0YWluZWQgYnkgc3Vic2NyaWJpbmcgdG8gdGhlIGJvb2tpbmcgZXZlbnQuXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAqL1xuICAgIGdldEdlbmVyYWxCb29raW5nVXJsKHJlcToge1xuICAgICAgICBjYWxlbmRhcklkOiBzdHJpbmcsXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZyxcbiAgICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG9mKGdldEdlbmVyYWxCb29raW5nVXJsSW1wbGVtZW50YXRpb24oe1xuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpID8gRW52aXJvbm1lbnQuUFJPRCA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgICAgICBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgIH0pKVxuICAgIH1cblxuICAgIC8qXG4gICAgIGdldEJvb2tpbmdVcmxzTXVsdGkgcmV0dXJucyBhIG1hcHBpbmcgb2YgaG9zdHMgLT4gZXZlbnQgdHlwZXMgLT4gYm9va2luZyBsaW5rcy5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cy5cbiAgICAgQHBhcmFtIG1lZXRpbmdUeXBlU2x1ZzogbWVldGluZ1R5cGVTbHVncyBhcmUgcGFzc2VkIGluIHRoZSBmb3JtIHtob3N0SWQ6IFttZWV0aW5nVHlwZVNsdWcxLCBtZWV0aW5nVHlwZVNsdWcyXX1cbiAgICAgQHBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCBtZXRhZGF0YSB0byBpbmNsdWRlIGluIHRoZSB1cmwuXG4gICAgIC0gbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gcHJlLWZpbGwgY2VydGFpbiBmb3JtIGZpZWxkcyBhbmQgd2lsbCBiZSBzdG9yZWQgZHVyaW5nIHRoZSBib29raW5nIHByb2Nlc3MuXG4gICAgIC0gbWV0YWRhdGEgY2FuIGJlIG9idGFpbmVkIGJ5IHN1YnNjcmliaW5nIHRvIHRoZSBib29raW5nIGV2ZW50LlxuICAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgKi9cbiAgICBnZXRCb29raW5nVXJsc011bHRpKFxuICAgICAgICByZXE6IHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IHN0cmluZ1tdIH0sXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZ1xuICAgICk6IE9ic2VydmFibGU8SG9zdFVybE1hcD4ge1xuICAgICAgICByZXR1cm4gb2YoT2JqZWN0LmtleXMocmVxKS5yZWR1Y2UoKGhvc3RNYXAsIGNhbGVuZGFySWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaG9zdE1hcCxcbiAgICAgICAgICAgICAgICBbY2FsZW5kYXJJZF06IHJlcVtjYWxlbmRhcklkXS5yZWR1Y2UoKG1lZXRpbmdUeXBlTWFwLCBtZWV0aW5nVHlwZVNsdWcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm1lZXRpbmdUeXBlTWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgW21lZXRpbmdUeXBlU2x1Z106IGdldEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nVHlwZVNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpID8gRW52aXJvbm1lbnQuUFJPRCA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJTbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LCB7fSBhcyB7IFttZWV0aW5nVHlwZUlkOiBzdHJpbmddOiBzdHJpbmcgfSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIHt9IGFzIEhvc3RVcmxNYXApKTtcbiAgICB9XG5cbiAgICBpc0hvc3RDb25maWd1cmVkKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmlzSG9zdENvbmZpZ3VyZWQocmVxKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwOiBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UpID0+IHJlc3AuaXNDb25maWd1cmVkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldEdlbmVyYWxBdmFpbGFiaWxpdHkocmVxOiB7XG4gICAgICAgIGhvc3RJZDogc3RyaW5nLFxuICAgICAgICBtZWV0aW5nVHlwZUlkOiBzdHJpbmcsXG4gICAgICAgIC8vIEBkZXByZWNhdGVkOiB1c2Ugd2Vla2RheXNBdmFpbGFiaWxpdHkgaW5zdGVhZFxuICAgICAgICBkYXlzPzogRGF5T2ZXZWVrW10sXG4gICAgICAgIC8vIEBkZXByZWNhdGVkOiB1c2Ugd2Vla2RheXNBdmFpbGFiaWxpdHkgaW5zdGVhZFxuICAgICAgICB0aW1lU2xvdD86IFRpbWVSYW5nZUludGVyZmFjZSxcbiAgICAgICAgd2Vla2RheXNBdmFpbGFiaWxpdHk/OiBXZWVrZGF5QXZhaWxhYmlsaXR5W10sXG4gICAgICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZSxcbiAgICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgICAgIGNvbnN0IGFwaVJlcSA9IHtcbiAgICAgICAgICAgIC4uLnJlcSxcbiAgICAgICAgICAgIHRpbWVab25lOiBuZXcgVGltZVpvbmUocmVxLnRpbWVab25lKSxcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVxLnRpbWVTbG90KSB7XG4gICAgICAgICAgICBhcGlSZXEudGltZVNsb3QgPSBuZXcgVGltZVJhbmdlKHJlcS50aW1lU2xvdClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5zZXRHZW5lcmFsQXZhaWxhYmlsaXR5KGFwaVJlcSkucGlwZShtYXBUbyhudWxsKSlcbiAgICB9XG5cbiAgICBsaXN0Qm9va2VkTWVldGluZ3MocmVxOiB7XG4gICAgICAgIGZpbHRlcnM6IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlLFxuICAgICAgICBjdXJzb3I6IHN0cmluZyxcbiAgICAgICAgcGFnZVNpemU6IG51bWJlcixcbiAgICAgICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlLFxuICAgIH0pOiBPYnNlcnZhYmxlPFBhZ2VkUmVzcG9uc2U8TWVldGluZz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEJvb2tlZE1lZXRpbmdzKHtcbiAgICAgICAgICAgIC4uLnJlcSxcbiAgICAgICAgICAgIHBhZ2luZ09wdGlvbnM6IG5ldyBQYWdlZFJlcXVlc3RPcHRpb25zKHtjdXJzb3I6IHJlcS5jdXJzb3IsIHBhZ2VTaXplOiByZXEucGFnZVNpemV9KSxcbiAgICAgICAgICAgIGZpbHRlcnM6IG5ldyBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyhyZXEuZmlsdGVycyksXG4gICAgICAgICAgICB0aW1lWm9uZTogbmV3IFRpbWVab25lKHJlcS50aW1lWm9uZSksXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3A6IExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVldGluZ3MgPSAocmVzcC5tZWV0aW5ncyB8fCBbXSkubWFwKG1lZXRpbmcgPT4gbWVldGluZ0Zyb21BcGkobWVldGluZykpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUGFnZWRSZXNwb25zZShtZWV0aW5ncywgcmVzcC5wYWdpbmdNZXRhZGF0YS5uZXh0Q3Vyc29yLCByZXNwLnBhZ2luZ01ldGFkYXRhLmhhc01vcmUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY2FuY2VsTWVldGluZyhyZXE6IHtcbiAgICAgICAgbWVldGluZ0lkOiBzdHJpbmcsXG4gICAgICAgIGNhbmNlbGxhdGlvblJlYXNvbjogc3RyaW5nXG4gICAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5jYW5jZWxNZWV0aW5nKHtcbiAgICAgICAgICAgIC4uLnJlcVxuICAgICAgICB9KS5waXBlKG1hcFRvKG51bGwpKVxuICAgIH1cblxuICAgIHJlc2NoZWR1bGVNZWV0aW5nKHJlcToge1xuICAgICAgICBtZWV0aW5nSWQ6IHN0cmluZyxcbiAgICAgICAgc3RhcnQ6IERhdGVcbiAgICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLnJlc2NoZWR1bGVNZWV0aW5nKHtcbiAgICAgICAgICAgIC4uLnJlcVxuICAgICAgICB9KS5waXBlKG1hcFRvKG51bGwpKVxuICAgIH1cblxuICAgIGxpc3RBdmFpbGFiaWxpdHkocmVxOiB7XG4gICAgICAgIGZpbHRlcnM6IExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgICAgICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZSxcbiAgICAgICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlLFxuICAgIH0pOiBPYnNlcnZhYmxlPFBhZ2VkUmVzcG9uc2U8QXZhaWxhYmlsaXR5UnVsZT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEF2YWlsYWJpbGl0eShyZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSAocmVzcG9uc2UuYXZhaWxhYmlsaXR5UnVsZXMgfHwgW10pLmZpbHRlcihCb29sZWFuKS5tYXAoYSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0SWQ6IGEuaG9zdElkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ1R5cGVJZDogYS5tZWV0aW5nVHlwZUlkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF5OiBhLmRheSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVTbG90OiBhLnRpbWVTbG90LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZVpvbmU6IGEudGltZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VkUmVzcG9uc2UocmVzdWx0cywgcmVzcG9uc2UubWV0YWRhdGEubmV4dEN1cnNvciwgcmVzcG9uc2UubWV0YWRhdGEuaGFzTW9yZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyogdXBkYXRlUHJlZmVyZW5jZXMgd2lsbCB1cGRhdGUgdGhlIGhvc3QncyBwcmVmZXJlbmNlcy5cbiAgICAgKiBJdCBpcyBndWFyYW50ZWVkIHRvIG9ubHkgdXBkYXRlIHRoZSBmaWVsZHMgcHJvdmlkZWQuXG4gICAgICogRm9yIGV4YW1wbGU6XG4gICAgICogIHVwZGF0ZVByZWZlcmVuY2VzKHttZWV0aW5nSW50ZWdyYXRpb246IE1lZXRpbmdTb3VyY2UuTUVFVElOR19TT1VSQ0VfR09PR0xFX01FRVR9KVxuICAgICAqICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBwcmVmZXJlbmNlIG1lZXRpbmdJbnRlZ3JhdGlvbiB0byBHb29nbGUgTWVldC4gS2VlcGluZyB0aGUgb3RoZXIgcHJlZmVyZW5jZXMgdGhlIHNhbWUuXG4gICAgICpcbiAgICAgKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHByb3ZpZGUgYSBsaXN0IG9mIGtleXMgdG8gdXBkYXRlIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuXG4gICAgICogRm9yIGV4YW1wbGU6XG4gICAgICogICB1cGRhdGVQcmVmZXJlbmNlcyh7Li4ub2JqZWN0IHdpdGggYWxsIGZpZWxkc30sIFsnbWVldGluZ0ludGVncmF0aW9uJ10pXG4gICAgICogICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBmaWVsZCAnbWVldGluZ0ludGVncmF0aW9uJyB0byB0aGUgdmFsdWUgaW4gcHJlZmVyZW5jZXMuXG4gICAgICpcbiAgICAgKiBDYWxsaW5nIHdpdGggYW4gZW1wdHkgb2JqZWN0IGFuZCBubyBrZXlzIGlzIGEgbm8tb3AsIG9yIGFuIHVuZGVmaW5lZCBvYmplY3QuXG4gICAgICogQ2FsbGluZyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIGZpZWxkcyBub3QgaW4gYFByZWZlcmVuY2VzYCBvciB3aXRoIHVwZGF0ZUZpZWxkcyBub3QgbGlua2VkIHRvIHByb3BlcnRpZXMgaW5cbiAgICAgKiBgUHJlZmVyZW5jZXNgIGlzIGFuIGVycm9yLlxuICAgICAqL1xuICAgIHVwZGF0ZVByZWZlcmVuY2VzKHJlcTogeyBob3N0SWQ6IHN0cmluZywgcHJlZmVyZW5jZXM6IFBhcnRpYWw8UHJlZmVyZW5jZXM+LCB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgUHJlZmVyZW5jZXMpW10gfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe286IHJlcS5wcmVmZXJlbmNlcywgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzfSk7XG4gICAgICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS51cGRhdGVIb3N0UHJlZmVyZW5jZXMoe1xuICAgICAgICAgICAgaG9zdElkOiByZXEuaG9zdElkLFxuICAgICAgICAgICAgcHJlZmVyZW5jZXM6IHJlcS5wcmVmZXJlbmNlcyxcbiAgICAgICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBnZXRQcmVmZXJlbmNlcyhyZXE6IHsgaG9zdElkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8UHJlZmVyZW5jZXM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZ2V0SG9zdFByZWZlcmVuY2VzKHtcbiAgICAgICAgICAgIGhvc3RJZDogcmVxLmhvc3RJZFxuICAgICAgICB9KS5waXBlKG1hcChyZXNwb25zZSA9PiBQcmVmZXJlbmNlc0Zyb21BcGkocmVzcG9uc2UucHJlZmVyZW5jZXMpKSlcbiAgICB9XG5cbiAgICBnZXRNZWV0aW5nKG1lZXRpbmdJZDogc3RyaW5nLCBsb2NhdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxNZWV0aW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmdldEhvc3RNZWV0aW5nKHtcbiAgICAgICAgICAgIG1lZXRpbmdJZDogbWVldGluZ0lkLCBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3A6IEdldEhvc3RNZWV0aW5nUmVzcG9uc2UpID0+IG1lZXRpbmdGcm9tQXBpKHJlc3AubWVldGluZykpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICB1cGRhdGVNZWV0aW5nTWV0YWRhdGEocmVxOiB7IG1lZXRpbmdJZDogc3RyaW5nLCBtZXRhZGF0YTogTWVldGluZ01ldGFkYXRhIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UudXBkYXRlTWVldGluZ01ldGFkYXRhKHtcbiAgICAgICAgICAgIG1lZXRpbmdJZDogcmVxLm1lZXRpbmdJZCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGFcbiAgICAgICAgfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBib29rTWVldGluZyhyZXE6IEhvc3RCb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5ib29rTWVldGluZyhyZXEpLnBpcGUobWFwKChyZXNwOiBIb3N0Qm9va01lZXRpbmdSZXNwb25zZSkgPT4gcmVzcC5tZWV0aW5nSWQpKTtcbiAgICB9XG5cbiAgICAvLyBjcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzIHdpbGwgY3JlYXRlIHdoYXQgTWVldGluZyBTY2hlZHVsZXIgZGVlbXMgdG8gYmUgdGhlIGRlZmF1bHQgbWVldGluZyB0eXBlcy5cbiAgICAvLyBJZiB0aGUgY2FsZW5kYXIgYWxyZWFkeSBoYXMgbWVldGluZyB0eXBlcywgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGEgbm8tb3AuXG4gICAgY3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlcyhyZXE6IHsgY2FsZW5kYXJJZHM6IHN0cmluZ1tdLCB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmNyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXMoe2NhbGVuZGFySWRzOiByZXEuY2FsZW5kYXJJZHN9KS5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICAgIH1cblxuICAgIGNyZWF0ZU1lZXRpbmdUeXBlKHJlcTogeyBtZWV0aW5nVHlwZTogTWVldGluZ1R5cGUgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmNyZWF0ZU1lZXRpbmdUeXBlKHttZWV0aW5nVHlwZTogTWVldGluZ1R5cGVUb0FwaSh7bWVldGluZ1R5cGU6IHJlcS5tZWV0aW5nVHlwZX0pfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLmlkKSk7XG4gICAgfVxuXG4gICAgLyogdXBkYXRlTWVldGluZ1R5cGUgd2lsbCB1cGRhdGUgdGhlIG1lZXRpbmcgdHlwZSBmaWVsZHMuXG4gICAgICogSXQgaXMgZ3VhcmFudGVlZCB0byBvbmx5IHVwZGF0ZSB0aGUgZmllbGRzIHByb3ZpZGVkLlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqICB1cGRhdGVNZWV0aW5nVHlwZSh7bmFtZTogJ09uYm9hcmRpbmcnfSlcbiAgICAgKiAgd2lsbCBvbmx5IHVwZGF0ZSB0aGUgZmllbGQgJ25hbWUnIHRvICdPbmJvYXJkaW5nJy4gS2VlcGluZyB0aGUgb3RoZXIgZmllbGRzIHRoZSBzYW1lLlxuICAgICAqXG4gICAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwcm92aWRlIGEgbGlzdCBvZiBrZXlzIHRvIHVwZGF0ZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqICAgdXBkYXRlTWVldGluZ1R5cGUoey4uLm9iamVjdCB3aXRoIGFsbCBmaWVsZHN9LCBbJ25hbWUnXSlcbiAgICAgKiAgIHdpbGwgb25seSB1cGRhdGUgdGhlIGZpZWxkICduYW1lJyB0byB0aGUgdmFsdWUgcGFzc2VkIGluLlxuICAgICAqXG4gICAgICogQ2FsbGluZyB3aXRoIGFuIGVtcHR5IG9iamVjdCBhbmQgbm8ga2V5cyBpcyBhIG5vLW9wLCBvciBhbiB1bmRlZmluZWQgb2JqZWN0LlxuICAgICAqIENhbGxpbmcgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyBmaWVsZHMgbm90IGluIGBNZWV0aW5nVHlwZWAgb3Igd2l0aCB1cGRhdGVGaWVsZHMgbm90IGxpbmtlZCB0byBwcm9wZXJ0aWVzIGluXG4gICAgICogYE1lZXRpbmdUeXBlYCBpcyBhbiBlcnJvci5cbiAgICAgKi9cbiAgICB1cGRhdGVNZWV0aW5nVHlwZShyZXE6IHsgaWQ6IHN0cmluZywgbWVldGluZ1R5cGU6IFBhcnRpYWw8TWVldGluZ1R5cGU+LCB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgTWVldGluZ1R5cGUpW10gfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe286IHJlcS5tZWV0aW5nVHlwZSwgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzfSk7XG4gICAgICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS51cGRhdGVNZWV0aW5nVHlwZSh7XG4gICAgICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICAgICAgbWVldGluZ1R5cGU6IE1lZXRpbmdUeXBlVG9BcGkoe21lZXRpbmdUeXBlOiByZXEubWVldGluZ1R5cGV9KSxcbiAgICAgICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBkZWxldGVNZWV0aW5nVHlwZShyZXE6IHsgaWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmRlbGV0ZU1lZXRpbmdUeXBlKHtpZDogcmVxLmlkfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBnZXRIb3N0c0ZvckNhbGVuZGFyKHJlcTogeyBjYWxlbmRhcklkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8SG9zdFVzZXJbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRIb3N0c0ZvckNhbGVuZGFyKHtjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHJlcy5ob3N0VXNlcnMgfHwgW10pLm1hcChob3N0dXNlciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBob3N0VXNlckZyb21BcGkoaG9zdHVzZXIpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbn1cblxuXG5cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// A temporary method for building the url for a host, eventTypeId, and metadata
|
|
2
|
+
import { Environment } from "../shared/environment";
|
|
3
|
+
export function getBookingUrlImplementation(req) {
|
|
4
|
+
const domain = getDomainFromEnvironment(req.environment);
|
|
5
|
+
const meetingType = req.meetingTypeSlug || req.meetingTypeId || '30-minutes';
|
|
6
|
+
const calendarSlug = req.calendarSlug || req.calendarId;
|
|
7
|
+
const url = `https://${domain}/book/${calendarSlug}/${meetingType}`;
|
|
8
|
+
if (!req.metadata) {
|
|
9
|
+
return url;
|
|
10
|
+
}
|
|
11
|
+
return addMetadataToBookingLink({ link: url, metadata: req.metadata });
|
|
12
|
+
}
|
|
13
|
+
export function getGeneralBookingUrlImplementation(req) {
|
|
14
|
+
const url = `https://${getDomainFromEnvironment(req.environment)}/${req.calendarSlug || req.calendarId}`;
|
|
15
|
+
return req.metadata ? addMetadataToBookingLink({ link: url, metadata: req.metadata }) : url;
|
|
16
|
+
}
|
|
17
|
+
function getDomainFromEnvironment(env) {
|
|
18
|
+
if (env === Environment.PROD) {
|
|
19
|
+
return 'bookmenow.info';
|
|
20
|
+
}
|
|
21
|
+
return 'bookme-demo-rrncocebdq-uc.a.run.app';
|
|
22
|
+
}
|
|
23
|
+
export function addMetadataToBookingLink(req) {
|
|
24
|
+
if (!req.metadata) {
|
|
25
|
+
return req.link;
|
|
26
|
+
}
|
|
27
|
+
const m = req.metadata;
|
|
28
|
+
const queryParams = Object.keys(m).reduce((params, key) => {
|
|
29
|
+
if (!params) {
|
|
30
|
+
if (req.link.indexOf('?') >= 0) {
|
|
31
|
+
return `&${key}=${m[key]}`;
|
|
32
|
+
}
|
|
33
|
+
return `?${key}=${m[key]}`;
|
|
34
|
+
}
|
|
35
|
+
return `${params}&${key}=${m[key]}`;
|
|
36
|
+
}, '');
|
|
37
|
+
return `${req.link}${queryParams}`;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvaG9zdC91cmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0ZBQWdGO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxNQUFNLFVBQVUsMkJBQTJCLENBQ3ZDLEdBUUM7SUFFRCxNQUFNLE1BQU0sR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekQsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLGVBQWUsSUFBSSxHQUFHLENBQUMsYUFBYSxJQUFJLFlBQVksQ0FBQztJQUM3RSxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUM7SUFDeEQsTUFBTSxHQUFHLEdBQUcsV0FBVyxNQUFNLFNBQVMsWUFBWSxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3BFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO1FBQ2YsT0FBTyxHQUFHLENBQUM7S0FDZDtJQUNELE9BQU8sd0JBQXdCLENBQUMsRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLEdBS2xEO0lBQ0csTUFBTSxHQUFHLEdBQUcsV0FBVyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLFlBQVksSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDekcsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDOUYsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQUMsR0FBNEM7SUFDMUUsSUFBSSxHQUFHLEtBQUssV0FBVyxDQUFDLElBQUksRUFBRTtRQUMxQixPQUFPLGdCQUFnQixDQUFDO0tBQzNCO0lBQ0QsT0FBTyxxQ0FBcUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEdBQTBEO0lBQy9GLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO1FBQ2YsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0tBQ25CO0lBQ0QsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQXFDLENBQUM7SUFDcEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDdEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM1QixPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2FBQzlCO1lBQ0QsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztTQUM5QjtRQUNELE9BQU8sR0FBRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3hDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVQLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBIHRlbXBvcmFyeSBtZXRob2QgZm9yIGJ1aWxkaW5nIHRoZSB1cmwgZm9yIGEgaG9zdCwgZXZlbnRUeXBlSWQsIGFuZCBtZXRhZGF0YVxuaW1wb3J0IHtFbnZpcm9ubWVudH0gZnJvbSBcIi4uL3NoYXJlZC9lbnZpcm9ubWVudFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKFxuICAgIHJlcToge1xuICAgICAgICBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQsXG4gICAgICAgIGNhbGVuZGFySWQ6IHN0cmluZyxcbiAgICAgICAgLy8gQGRlcHJlY2F0ZWQ6IHVzZSBtZWV0aW5nVHlwZVNsdWcgaW5zdGVhZFxuICAgICAgICBtZWV0aW5nVHlwZUlkPzogc3RyaW5nLFxuICAgICAgICBtZWV0aW5nVHlwZVNsdWc/OiBzdHJpbmcsXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZyxcbiAgICB9XG4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGRvbWFpbiA9IGdldERvbWFpbkZyb21FbnZpcm9ubWVudChyZXEuZW52aXJvbm1lbnQpO1xuICAgIGNvbnN0IG1lZXRpbmdUeXBlID0gcmVxLm1lZXRpbmdUeXBlU2x1ZyB8fCByZXEubWVldGluZ1R5cGVJZCB8fCAnMzAtbWludXRlcyc7XG4gICAgY29uc3QgY2FsZW5kYXJTbHVnID0gcmVxLmNhbGVuZGFyU2x1ZyB8fCByZXEuY2FsZW5kYXJJZDtcbiAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly8ke2RvbWFpbn0vYm9vay8ke2NhbGVuZGFyU2x1Z30vJHttZWV0aW5nVHlwZX1gO1xuICAgIGlmICghcmVxLm1ldGFkYXRhKSB7XG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICAgIHJldHVybiBhZGRNZXRhZGF0YVRvQm9va2luZ0xpbmsoe2xpbms6IHVybCwgbWV0YWRhdGE6IHJlcS5tZXRhZGF0YX0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2VuZXJhbEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbihyZXE6IHtcbiAgICBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQsXG4gICAgY2FsZW5kYXJJZDogc3RyaW5nLFxuICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgY2FsZW5kYXJTbHVnPzogc3RyaW5nLFxufSk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gYGh0dHBzOi8vJHtnZXREb21haW5Gcm9tRW52aXJvbm1lbnQocmVxLmVudmlyb25tZW50KX0vJHtyZXEuY2FsZW5kYXJTbHVnIHx8IHJlcS5jYWxlbmRhcklkfWA7XG4gICAgcmV0dXJuIHJlcS5tZXRhZGF0YSA/IGFkZE1ldGFkYXRhVG9Cb29raW5nTGluayh7bGluazogdXJsLCBtZXRhZGF0YTogcmVxLm1ldGFkYXRhfSkgOiB1cmw7XG59XG5cbmZ1bmN0aW9uIGdldERvbWFpbkZyb21FbnZpcm9ubWVudChlbnY6IEVudmlyb25tZW50IHwgJ3Byb2QnIHwgJ2RlbW8nIHwgJ2xvY2FsJyk6IHN0cmluZyB7XG4gICAgaWYgKGVudiA9PT0gRW52aXJvbm1lbnQuUFJPRCkge1xuICAgICAgICByZXR1cm4gJ2Jvb2ttZW5vdy5pbmZvJztcbiAgICB9XG4gICAgcmV0dXJuICdib29rbWUtZGVtby1ycm5jb2NlYmRxLXVjLmEucnVuLmFwcCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRNZXRhZGF0YVRvQm9va2luZ0xpbmsocmVxOiB7IGxpbms6IHN0cmluZywgbWV0YWRhdGE6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfSk6IHN0cmluZyB7XG4gICAgaWYgKCFyZXEubWV0YWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHJlcS5saW5rO1xuICAgIH1cbiAgICBjb25zdCBtID0gcmVxLm1ldGFkYXRhIGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBPYmplY3Qua2V5cyhtKS5yZWR1Y2UoKHBhcmFtcywga2V5KSA9PiB7XG4gICAgICAgIGlmICghcGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAocmVxLmxpbmsuaW5kZXhPZignPycpID49IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCYke2tleX09JHttW2tleV19YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBgPyR7a2V5fT0ke21ba2V5XX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtwYXJhbXN9JiR7a2V5fT0ke21ba2V5XX1gO1xuICAgIH0sICcnKTtcblxuICAgIHJldHVybiBgJHtyZXEubGlua30ke3F1ZXJ5UGFyYW1zfWA7XG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { MeetingsService } from './meetings.service';
|
|
2
|
+
export { GuestService } from './guest/guest.service';
|
|
3
|
+
export { HostService } from './host/host.service';
|
|
4
|
+
export { addMetadataToBookingLink } from './host/url';
|
|
5
|
+
export { MeetingSource, MeetingSourceStatus, DayOfWeek, FormFieldType, CalendarType } from './_internal/enums/index';
|
|
6
|
+
export { MeetingSourceQuery, MeetingSourceInfo, MeetingSourceListResponse, Contact, WeekdayAvailability, CreateCalendarRequest, CreateCalendarResponse, } from './_internal/objects/index';
|
|
7
|
+
export { PagedResponse, WellKnownMeetingMetadataKeys, WellKnownFormFieldIds, meetingSchedulerIdToMetadataKey, durationFromString, durationToString, durationStringToMinutes, newBusinessCenterApplicationContextProperties, newSalesCenterApplicationContextProperties, newPartnerCenterApplicationContextProperties, KnownCalendarApplicationContextKeys, KnownCalendarExternalIntegrations, } from './shared/index';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFaEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFBO0FBQ2xILE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUN6QixPQUFPLEVBQ1AsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixzQkFBc0IsR0FDekIsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsQyxPQUFPLEVBR0gsYUFBYSxFQWNiLDRCQUE0QixFQUM1QixxQkFBcUIsRUFDckIsK0JBQStCLEVBQy9CLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLDZDQUE2QyxFQUM3QywwQ0FBMEMsRUFDMUMsNENBQTRDLEVBSzVDLG1DQUFtQyxFQUNuQyxpQ0FBaUMsR0FFcEMsTUFBTSxnQkFBZ0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7TWVldGluZ3NTREssIE1lZXRpbmdzU2VydmljZX0gZnJvbSAnLi9tZWV0aW5ncy5zZXJ2aWNlJztcbmV4cG9ydCB7Qm9va2VkTWVldGluZ0luZm8sIEJvb2tNZWV0aW5nUmVzcG9uc2UsIEd1ZXN0U2VydmljZUludGVyZmFjZX0gZnJvbSAnLi9ndWVzdCc7XG5leHBvcnQge0d1ZXN0U2VydmljZX0gZnJvbSAnLi9ndWVzdC9ndWVzdC5zZXJ2aWNlJztcbmV4cG9ydCB7SG9zdFNlcnZpY2V9IGZyb20gJy4vaG9zdC9ob3N0LnNlcnZpY2UnO1xuZXhwb3J0IHthZGRNZXRhZGF0YVRvQm9va2luZ0xpbmt9IGZyb20gJy4vaG9zdC91cmwnO1xuZXhwb3J0IHtNZWV0aW5nU291cmNlLCBNZWV0aW5nU291cmNlU3RhdHVzLCBEYXlPZldlZWssIEZvcm1GaWVsZFR5cGUsIENhbGVuZGFyVHlwZX0gZnJvbSAnLi9faW50ZXJuYWwvZW51bXMvaW5kZXgnXG5leHBvcnQge1xuICAgIE1lZXRpbmdTb3VyY2VRdWVyeSxcbiAgICBNZWV0aW5nU291cmNlSW5mbyxcbiAgICBNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlLFxuICAgIENvbnRhY3QsXG4gICAgV2Vla2RheUF2YWlsYWJpbGl0eSxcbiAgICBDcmVhdGVDYWxlbmRhclJlcXVlc3QsXG4gICAgQ3JlYXRlQ2FsZW5kYXJSZXNwb25zZSxcbn0gZnJvbSAnLi9faW50ZXJuYWwvb2JqZWN0cy9pbmRleCdcbmV4cG9ydCB7XG4gICAgSG9zdCxcbiAgICBUaW1lU3BhbixcbiAgICBQYWdlZFJlc3BvbnNlLFxuICAgIE1lZXRpbmcsXG4gICAgTWVldGluZ1R5cGUsXG4gICAgQXR0ZW5kZWUsXG4gICAgQXZhaWxhYmlsaXR5UnVsZSxcbiAgICBDYWxlbmRhcixcbiAgICBIb3N0VXJsTWFwLFxuICAgIFByZWZlcmVuY2VzLFxuICAgIER1cmF0aW9uLFxuICAgIE1lZXRpbmdUeXBlRm9ybSxcbiAgICBNZWV0aW5nVHlwZUZvcm1GaWVsZCxcbiAgICBNZWV0aW5nRm9ybSxcbiAgICBNZWV0aW5nRm9ybUFuc3dlcixcbiAgICBNZWV0aW5nTWV0YWRhdGEsXG4gICAgV2VsbEtub3duTWVldGluZ01ldGFkYXRhS2V5cyxcbiAgICBXZWxsS25vd25Gb3JtRmllbGRJZHMsXG4gICAgbWVldGluZ1NjaGVkdWxlcklkVG9NZXRhZGF0YUtleSxcbiAgICBkdXJhdGlvbkZyb21TdHJpbmcsXG4gICAgZHVyYXRpb25Ub1N0cmluZyxcbiAgICBkdXJhdGlvblN0cmluZ1RvTWludXRlcyxcbiAgICBuZXdCdXNpbmVzc0NlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgbmV3U2FsZXNDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIG5ld1BhcnRuZXJDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNTZXQsXG4gICAgQnVzaW5lc3NDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIFNhbGVzQ2VudGVyQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyxcbiAgICBQYXJ0bmVyQ2VudGVyQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyxcbiAgICBLbm93bkNhbGVuZGFyQXBwbGljYXRpb25Db250ZXh0S2V5cyxcbiAgICBLbm93bkNhbGVuZGFyRXh0ZXJuYWxJbnRlZ3JhdGlvbnMsXG4gICAgSG9zdFVzZXIsXG59IGZyb20gJy4vc2hhcmVkL2luZGV4J1xuZXhwb3J0IHtcbiAgICBUaW1lUmFuZ2VJbnRlcmZhY2UgYXMgVGltZVJhbmdlLFxuICAgIFRpbWVPZkRheUludGVyZmFjZSBhcyBUaW1lT2ZEYXksXG4gICAgVGltZVpvbmVJbnRlcmZhY2UgYXMgVGltZVpvbmUsXG4gICAgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnNJbnRlcmZhY2UgYXMgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnMsXG4gICAgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlIGFzIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVycyxcbiAgICBQYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlIGFzIFBhZ2VkUmVxdWVzdE9wdGlvbnMsXG4gICAgRGF0ZVJhbmdlSW50ZXJmYWNlIGFzIERhdGVSYW5nZSxcbiAgICBDcmVhdGVDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UsXG4gICAgQ3JlYXRlQ2FsZW5kYXJSZXNwb25zZUludGVyZmFjZSxcbiAgICBVcGRhdGVDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UsXG4gICAgQXR0YWNobWVudEludGVyZmFjZSxcbiAgICBHb29nbGVNZWV0TWVldGluZ0F0dGVuZGVlSW50ZXJmYWNlLFxufSBmcm9tICcuL19pbnRlcm5hbC9pbnRlcmZhY2VzL2luZGV4J1xuIl19
|