@vendasta/meetings 0.73.1 → 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} +487 -519
- 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/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/zoom.api.service.d.ts +4 -0
- package/lib/guest/guest.service.d.ts +4 -3
- package/lib/host/host.service.d.ts +4 -3
- package/lib/host/url.d.ts +1 -1
- package/lib/meetings.service.d.ts +3 -0
- package/lib/shared/environment.d.ts +8 -0
- package/lib/shared/meeting-type.d.ts +1 -1
- package/package.json +26 -15
- package/src/README.md +12 -0
- package/vendasta-meetings.d.ts +1 -0
- package/bundles/vendasta-meetings.umd.js +0 -5517
- 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 -65
- 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 -42
- 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 -85
- package/esm2015/lib/_internal/meeting-host.api.service.js +0 -171
- package/esm2015/lib/_internal/meeting-source-api.api.service.js +0 -42
- package/esm2015/lib/_internal/objects/date-range.js +0 -36
- package/esm2015/lib/_internal/objects/datetime.js +0 -77
- package/esm2015/lib/_internal/objects/dayofweek.js +0 -7
- package/esm2015/lib/_internal/objects/field-mask.js +0 -27
- package/esm2015/lib/_internal/objects/google-meet.js +0 -539
- package/esm2015/lib/_internal/objects/index.js +0 -18
- package/esm2015/lib/_internal/objects/meeting-guest.js +0 -511
- package/esm2015/lib/_internal/objects/meeting-host.js +0 -1485
- package/esm2015/lib/_internal/objects/meeting-source.js +0 -121
- package/esm2015/lib/_internal/objects/meeting-type.js +0 -119
- package/esm2015/lib/_internal/objects/shared.js +0 -426
- package/esm2015/lib/_internal/objects/timeofday.js +0 -36
- package/esm2015/lib/_internal/objects/zoom.js +0 -377
- package/esm2015/lib/_internal/zoom.api.service.js +0 -42
- package/esm2015/lib/guest/guest.service.js +0 -86
- package/esm2015/lib/guest/index.js +0 -2
- package/esm2015/lib/host/host.service.js +0 -287
- package/esm2015/lib/host/url.js +0 -39
- package/esm2015/lib/index.js +0 -8
- package/esm2015/lib/meetings.service.js +0 -170
- 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 -5
- package/fesm2015/vendasta-meetings.js.map +0 -1
- package/vendasta-meetings.metadata.json +0 -1
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
import { Inject, 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 { EnvironmentServiceInterfaceToken } from '@vendasta/core';
|
|
7
|
-
import { getBookingUrlImplementation, getGeneralBookingUrlImplementation } from './url';
|
|
8
|
-
import { hostUserFromApi } from '../shared/host-user';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../_internal/meeting-host.api.service";
|
|
11
|
-
import * as i2 from "@vendasta/core";
|
|
12
|
-
export class HostService {
|
|
13
|
-
constructor(hostAPIService, environmentService) {
|
|
14
|
-
this.hostAPIService = hostAPIService;
|
|
15
|
-
this.environmentService = environmentService;
|
|
16
|
-
}
|
|
17
|
-
// Use buildHostId to get an identifier that can be used in subsequent requests. See vendastaapis for more details
|
|
18
|
-
buildHostId(req) {
|
|
19
|
-
return this.hostAPIService.buildHostId({
|
|
20
|
-
userId: req.userId,
|
|
21
|
-
// Gross typecast exists because I want to restrict the properties on the map (for now).
|
|
22
|
-
applicationContextProperties: req.applicationContextProperties
|
|
23
|
-
}).pipe(map(res => res.hostId || ''));
|
|
24
|
-
}
|
|
25
|
-
doesCalendarExist(calendarIdentifier) {
|
|
26
|
-
return this.hostAPIService.doesCalendarExist({ calendarIdentifier: calendarIdentifier }).pipe(map(resp => resp.exists));
|
|
27
|
-
}
|
|
28
|
-
getCalendar(req) {
|
|
29
|
-
return this.hostAPIService.getCalendar({ calendarId: req.calendarId }).pipe(map(res => CalendarFromApi(res === null || res === void 0 ? void 0 : res.calendar)));
|
|
30
|
-
}
|
|
31
|
-
ensurePersonalCalendarExists(req) {
|
|
32
|
-
return this.hostAPIService.ensurePersonalCalendarExists({
|
|
33
|
-
userId: req.userId,
|
|
34
|
-
applicationContextProperties: req.applicationContextProperties,
|
|
35
|
-
}).pipe(map(res => res ? res.calendarId : ''));
|
|
36
|
-
}
|
|
37
|
-
ensureGroupCalendarsExist(req) {
|
|
38
|
-
return this.hostAPIService.ensureGroupCalendarsExist({ externalIds: req.externalIds }).pipe(map(res => (res === null || res === void 0 ? void 0 : res.calendarIds) || []));
|
|
39
|
-
}
|
|
40
|
-
/*
|
|
41
|
-
createCalendar creates a calendar which meeting types can be created for and events can be booked on
|
|
42
|
-
The fields of a calendar are documented in https://github.com/vendasta/vendastaapis/blob/master/meetings/v1/shared.proto
|
|
43
|
-
*/
|
|
44
|
-
createCalendar(req) {
|
|
45
|
-
return this.hostAPIService.createCalendar(req);
|
|
46
|
-
}
|
|
47
|
-
updateCalendarSlug(calendarId, newSlug) {
|
|
48
|
-
return this.hostAPIService.updateCalendar({
|
|
49
|
-
calendarId: calendarId,
|
|
50
|
-
calendarUpdate: { slug: newSlug },
|
|
51
|
-
fieldMask: { paths: ['slug'] },
|
|
52
|
-
}).pipe(mapTo(undefined));
|
|
53
|
-
}
|
|
54
|
-
updateCalendarHostUserIDs(calendarId, replacementHostUserIds) {
|
|
55
|
-
return this.hostAPIService.updateCalendar({
|
|
56
|
-
calendarId: calendarId,
|
|
57
|
-
calendarUpdate: { hostUserIds: replacementHostUserIds },
|
|
58
|
-
fieldMask: { paths: ['host_user_ids'] },
|
|
59
|
-
}).pipe(mapTo(undefined));
|
|
60
|
-
}
|
|
61
|
-
getMeetingTypesForCalendars(req) {
|
|
62
|
-
return this.hostAPIService.getMeetingTypesForCalendars({ calendarIds: req.calendarIds }).pipe(map(res => {
|
|
63
|
-
if (!(res === null || res === void 0 ? void 0 : res.calendarMeetingTypesMap)) {
|
|
64
|
-
return {};
|
|
65
|
-
}
|
|
66
|
-
return Object.keys(res.calendarMeetingTypesMap).reduce((calendarToMeetingTypeMap, calendarId) => {
|
|
67
|
-
var _a;
|
|
68
|
-
const meetingTypes = (((_a = res.calendarMeetingTypesMap[calendarId]) === null || _a === void 0 ? void 0 : _a.meetingTypes) || []).map(mt => MeetingTypeFromApi({
|
|
69
|
-
meetingTypeApi: mt,
|
|
70
|
-
environment: this.environmentService.getEnvironment(),
|
|
71
|
-
calendarId,
|
|
72
|
-
metadata: req.metadata,
|
|
73
|
-
}));
|
|
74
|
-
return Object.assign(Object.assign({}, calendarToMeetingTypeMap), { [calendarId]: meetingTypes });
|
|
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: this.environmentService.getEnvironment(),
|
|
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(Object.assign(Object.assign({}, req), { calendarId: req.calendarId || req.hostId, environment: this.environmentService.getEnvironment(), calendarSlug: req.calendarSlug })));
|
|
113
|
-
}
|
|
114
|
-
/*
|
|
115
|
-
getGeneralBookingUrl returns a link that can be used to select a meeting type to book with the given calendar.
|
|
116
|
-
@param calendarId: An identifier for an individual host or grouping of hosts (i.e., team).
|
|
117
|
-
@param metadata: optional metadata to include in the url.
|
|
118
|
-
- metadata can be used to pre-fill certain form fields and will be stored during the booking process.
|
|
119
|
-
- metadata can be obtained by subscribing to the booking event.
|
|
120
|
-
@param calendarSlug: used to replace hostId in the url. Use it when you are confident you know the host's slug.
|
|
121
|
-
*/
|
|
122
|
-
getGeneralBookingUrl(req) {
|
|
123
|
-
return of(getGeneralBookingUrlImplementation({
|
|
124
|
-
environment: this.environmentService.getEnvironment(),
|
|
125
|
-
calendarId: req.calendarId,
|
|
126
|
-
metadata: req.metadata,
|
|
127
|
-
calendarSlug: req.calendarSlug,
|
|
128
|
-
}));
|
|
129
|
-
}
|
|
130
|
-
/*
|
|
131
|
-
getBookingUrlsMulti returns a mapping of hosts -> event types -> booking links.
|
|
132
|
-
@param calendarId: An identifier for an individual host or grouping of hosts.
|
|
133
|
-
@param meetingTypeSlug: meetingTypeSlugs are passed in the form {hostId: [meetingTypeSlug1, meetingTypeSlug2]}
|
|
134
|
-
@param metadata: optional metadata to include in the url.
|
|
135
|
-
- metadata can be used to pre-fill certain form fields and will be stored during the booking process.
|
|
136
|
-
- metadata can be obtained by subscribing to the booking event.
|
|
137
|
-
@param calendarSlug: used to replace hostId in the url. Use it when you are confident you know the host's slug.
|
|
138
|
-
*/
|
|
139
|
-
getBookingUrlsMulti(req, metadata, calendarSlug) {
|
|
140
|
-
return of(Object.keys(req).reduce((hostMap, calendarId) => {
|
|
141
|
-
return Object.assign(Object.assign({}, hostMap), { [calendarId]: req[calendarId].reduce((meetingTypeMap, meetingTypeSlug) => {
|
|
142
|
-
return Object.assign(Object.assign({}, meetingTypeMap), { [meetingTypeSlug]: getBookingUrlImplementation({
|
|
143
|
-
calendarId,
|
|
144
|
-
meetingTypeSlug,
|
|
145
|
-
metadata,
|
|
146
|
-
environment: this.environmentService.getEnvironment(),
|
|
147
|
-
calendarSlug,
|
|
148
|
-
}) });
|
|
149
|
-
}, {}) });
|
|
150
|
-
}, {}));
|
|
151
|
-
}
|
|
152
|
-
isHostConfigured(req) {
|
|
153
|
-
return this.hostAPIService.isHostConfigured(req).pipe(map((resp) => resp.isConfigured));
|
|
154
|
-
}
|
|
155
|
-
setGeneralAvailability(req) {
|
|
156
|
-
const apiReq = Object.assign(Object.assign({}, req), { timeZone: new TimeZone(req.timeZone) });
|
|
157
|
-
if (req.timeSlot) {
|
|
158
|
-
apiReq.timeSlot = new TimeRange(req.timeSlot);
|
|
159
|
-
}
|
|
160
|
-
return this.hostAPIService.setGeneralAvailability(apiReq).pipe(mapTo(null));
|
|
161
|
-
}
|
|
162
|
-
listBookedMeetings(req) {
|
|
163
|
-
return this.hostAPIService.listBookedMeetings(Object.assign(Object.assign({}, req), { pagingOptions: new PagedRequestOptions({ cursor: req.cursor, pageSize: req.pageSize }), filters: new ListBookedMeetingsRequestFilters(req.filters), timeZone: new TimeZone(req.timeZone) })).pipe(map((resp) => {
|
|
164
|
-
const meetings = (resp.meetings || []).map(meeting => meetingFromApi(meeting));
|
|
165
|
-
return new PagedResponse(meetings, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);
|
|
166
|
-
}));
|
|
167
|
-
}
|
|
168
|
-
cancelMeeting(req) {
|
|
169
|
-
return this.hostAPIService.cancelMeeting(Object.assign({}, req)).pipe(mapTo(null));
|
|
170
|
-
}
|
|
171
|
-
rescheduleMeeting(req) {
|
|
172
|
-
return this.hostAPIService.rescheduleMeeting(Object.assign({}, req)).pipe(mapTo(null));
|
|
173
|
-
}
|
|
174
|
-
listAvailability(req) {
|
|
175
|
-
return this.hostAPIService.listAvailability(req).pipe(map(response => {
|
|
176
|
-
const results = (response.availabilityRules || []).filter(Boolean).map(a => {
|
|
177
|
-
return {
|
|
178
|
-
hostId: a.hostId || '',
|
|
179
|
-
meetingTypeId: a.meetingTypeId || '',
|
|
180
|
-
day: a.day,
|
|
181
|
-
timeSlot: a.timeSlot,
|
|
182
|
-
timeZone: a.timeZone,
|
|
183
|
-
};
|
|
184
|
-
});
|
|
185
|
-
return new PagedResponse(results, response.metadata.nextCursor, response.metadata.hasMore);
|
|
186
|
-
}));
|
|
187
|
-
}
|
|
188
|
-
/* updatePreferences will update the host's preferences.
|
|
189
|
-
* It is guaranteed to only update the fields provided.
|
|
190
|
-
* For example:
|
|
191
|
-
* updatePreferences({meetingIntegration: MeetingSource.MEETING_SOURCE_GOOGLE_MEET})
|
|
192
|
-
* will only update the preference meetingIntegration to Google Meet. Keeping the other preferences the same.
|
|
193
|
-
*
|
|
194
|
-
* Alternatively, you can provide a list of keys to update as the second argument.
|
|
195
|
-
* For example:
|
|
196
|
-
* updatePreferences({...object with all fields}, ['meetingIntegration'])
|
|
197
|
-
* will only update the field 'meetingIntegration' to the value in preferences.
|
|
198
|
-
*
|
|
199
|
-
* Calling with an empty object and no keys is a no-op, or an undefined object.
|
|
200
|
-
* Calling with an object containing fields not in `Preferences` or with updateFields not linked to properties in
|
|
201
|
-
* `Preferences` is an error.
|
|
202
|
-
*/
|
|
203
|
-
updatePreferences(req) {
|
|
204
|
-
const fieldMask = getFieldMask({ o: req.preferences, updateFields: req.updateFields });
|
|
205
|
-
if (fieldMask.paths.length === 0) {
|
|
206
|
-
return of();
|
|
207
|
-
}
|
|
208
|
-
return this.hostAPIService.updateHostPreferences({
|
|
209
|
-
hostId: req.hostId,
|
|
210
|
-
preferences: req.preferences,
|
|
211
|
-
fieldMask,
|
|
212
|
-
}).pipe(mapTo(undefined));
|
|
213
|
-
}
|
|
214
|
-
getPreferences(req) {
|
|
215
|
-
return this.hostAPIService.getHostPreferences({
|
|
216
|
-
hostId: req.hostId
|
|
217
|
-
}).pipe(map(response => PreferencesFromApi(response.preferences)));
|
|
218
|
-
}
|
|
219
|
-
getMeeting(meetingId, location) {
|
|
220
|
-
return this.hostAPIService.getHostMeeting({
|
|
221
|
-
meetingId: meetingId, location: location,
|
|
222
|
-
}).pipe(map((resp) => meetingFromApi(resp.meeting)));
|
|
223
|
-
}
|
|
224
|
-
updateMeetingMetadata(req) {
|
|
225
|
-
return this.hostAPIService.updateMeetingMetadata({
|
|
226
|
-
meetingId: req.meetingId,
|
|
227
|
-
metadata: req.metadata
|
|
228
|
-
}).pipe(mapTo(undefined));
|
|
229
|
-
}
|
|
230
|
-
bookMeeting(req) {
|
|
231
|
-
return this.hostAPIService.bookMeeting(req).pipe(map((resp) => resp.meetingId));
|
|
232
|
-
}
|
|
233
|
-
// createDefaultMeetingTypes will create what Meeting Scheduler deems to be the default meeting types.
|
|
234
|
-
// If the calendar already has meeting types, this is guaranteed to be a no-op.
|
|
235
|
-
createDefaultMeetingTypes(req) {
|
|
236
|
-
return this.hostAPIService.createDefaultMeetingTypes({ calendarIds: req.calendarIds }).pipe(mapTo(undefined));
|
|
237
|
-
}
|
|
238
|
-
createMeetingType(req) {
|
|
239
|
-
return this.hostAPIService.createMeetingType({ meetingType: MeetingTypeToApi({ meetingType: req.meetingType }) })
|
|
240
|
-
.pipe(map(res => res.id));
|
|
241
|
-
}
|
|
242
|
-
/* updateMeetingType will update the meeting type fields.
|
|
243
|
-
* It is guaranteed to only update the fields provided.
|
|
244
|
-
* For example:
|
|
245
|
-
* updateMeetingType({name: 'Onboarding'})
|
|
246
|
-
* will only update the field 'name' to 'Onboarding'. Keeping the other fields the same.
|
|
247
|
-
*
|
|
248
|
-
* Alternatively, you can provide a list of keys to update as the second argument.
|
|
249
|
-
* For example:
|
|
250
|
-
* updateMeetingType({...object with all fields}, ['name'])
|
|
251
|
-
* will only update the field 'name' to the value passed in.
|
|
252
|
-
*
|
|
253
|
-
* Calling with an empty object and no keys is a no-op, or an undefined object.
|
|
254
|
-
* Calling with an object containing fields not in `MeetingType` or with updateFields not linked to properties in
|
|
255
|
-
* `MeetingType` is an error.
|
|
256
|
-
*/
|
|
257
|
-
updateMeetingType(req) {
|
|
258
|
-
const fieldMask = getFieldMask({ o: req.meetingType, updateFields: req.updateFields });
|
|
259
|
-
if (fieldMask.paths.length === 0) {
|
|
260
|
-
return of();
|
|
261
|
-
}
|
|
262
|
-
return this.hostAPIService.updateMeetingType({
|
|
263
|
-
id: req.id,
|
|
264
|
-
meetingType: MeetingTypeToApi({ meetingType: req.meetingType }),
|
|
265
|
-
fieldMask,
|
|
266
|
-
}).pipe(mapTo(undefined));
|
|
267
|
-
}
|
|
268
|
-
deleteMeetingType(req) {
|
|
269
|
-
return this.hostAPIService.deleteMeetingType({ id: req.id }).pipe(mapTo(undefined));
|
|
270
|
-
}
|
|
271
|
-
getHostsForCalendar(req) {
|
|
272
|
-
return this.hostAPIService.getHostsForCalendar({ calendarId: req.calendarId }).pipe(map(res => {
|
|
273
|
-
return (res.hostUsers || []).map(hostuser => {
|
|
274
|
-
return hostUserFromApi(hostuser);
|
|
275
|
-
});
|
|
276
|
-
}));
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
HostService.ɵprov = i0.ɵɵdefineInjectable({ factory: function HostService_Factory() { return new HostService(i0.ɵɵinject(i1.MeetingHostApiService), i0.ɵɵinject(i2.EnvironmentServiceInterfaceToken)); }, token: HostService, providedIn: "root" });
|
|
280
|
-
HostService.decorators = [
|
|
281
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
282
|
-
];
|
|
283
|
-
HostService.ctorParameters = () => [
|
|
284
|
-
{ type: MeetingHostApiService },
|
|
285
|
-
{ type: undefined, decorators: [{ type: Inject, args: [EnvironmentServiceInterfaceToken,] }] }
|
|
286
|
-
];
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9jb2RlZnJlc2gvdm9sdW1lL21lZXRpbmdzL3Nka3MvdHlwZXNjcmlwdC9zcmMvbWVldGluZ3Nfc2RrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9ob3N0L2hvc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQVNILGdDQUFnQyxFQUdoQyxxQkFBcUIsRUFDckIsbUJBQW1CLEVBRW5CLFNBQVMsRUFFVCxRQUFRLEVBR1gsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUlILGVBQWUsRUFDZixZQUFZLEVBR1osY0FBYyxFQUdkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUViLGtCQUFrQixFQUNyQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQThCLGdDQUFnQyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0YsT0FBTyxFQUFDLDJCQUEyQixFQUFFLGtDQUFrQyxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBQ3RGLE9BQU8sRUFBVyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQTs7OztBQUk3RCxNQUFNLE9BQU8sV0FBVztJQUNwQixZQUNZLGNBQXFDLEVBQ2Msa0JBQStDO1FBRGxHLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNjLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBNkI7SUFFOUcsQ0FBQztJQUVELGtIQUFrSDtJQUNsSCxXQUFXLENBQUMsR0FBc0Y7UUFDOUYsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztZQUMvQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFD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LENBQUMsR0FBMkI7UUFDM0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEVBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDN0UsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN4QyxPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUNwQyxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUNMLENBQUE7SUFDTCxDQUFDOzs7O1lBM1lKLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OztZQS9CNUIscUJBQXFCOzRDQW1DaEIsTUFBTSxTQUFDLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIG1hcFRvfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIENyZWF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSxcbiAgICBDcmVhdGVDYWxlbmRhclJlc3BvbnNlLFxuICAgIERheU9mV2VlayxcbiAgICBHZXRIb3N0TWVldGluZ1Jlc3BvbnNlLFxuICAgIEhvc3RCb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgSG9zdEJvb2tNZWV0aW5nUmVzcG9uc2UsXG4gICAgSXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlLFxuICAgIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZSxcbiAgICBNZWV0aW5nSG9zdEFwaVNlcnZpY2UsXG4gICAgUGFnZWRSZXF1ZXN0T3B0aW9ucyxcbiAgICBQYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlLFxuICAgIFRpbWVSYW5nZSxcbiAgICBUaW1lUmFuZ2VJbnRlcmZhY2UsXG4gICAgVGltZVpvbmUsXG4gICAgVGltZVpvbmVJbnRlcmZhY2UsXG4gICAgV2Vla2RheUF2YWlsYWJpbGl0eVxufSBmcm9tICcuLi9faW50ZXJuYWwnO1xuaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzU2V0LFxuICAgIEF2YWlsYWJpbGl0eVJ1bGUsXG4gICAgQ2FsZW5kYXIsXG4gICAgQ2FsZW5kYXJGcm9tQXBpLFxuICAgIGdldEZpZWxkTWFzayxcbiAgICBIb3N0VXJsTWFwLFxuICAgIE1lZXRpbmcsXG4gICAgbWVldGluZ0Zyb21BcGksXG4gICAgTWVldGluZ01ldGFkYXRhLFxuICAgIE1lZXRpbmdUeXBlLFxuICAgIE1lZXRpbmdUeXBlRnJvbUFwaSxcbiAgICBNZWV0aW5nVHlwZVRvQXBpLFxuICAgIFBhZ2VkUmVzcG9uc2UsXG4gICAgUHJlZmVyZW5jZXMsXG4gICAgUHJlZmVyZW5jZXNGcm9tQXBpXG59IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQge0Vudmlyb25tZW50U2VydmljZUludGVyZmFjZSwgRW52aXJvbm1lbnRTZXJ2aWNlSW50ZXJmYWNlVG9rZW59IGZyb20gJ0B2ZW5kYXN0YS9jb3JlJztcbmltcG9ydCB7Z2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uLCBnZXRHZW5lcmFsQm9va2luZ1VybEltcGxlbWVudGF0aW9ufSBmcm9tICcuL3VybCc7XG5pbXBvcnQge0hvc3RVc2VyLCBob3N0VXNlckZyb21BcGl9IGZyb20gJy4uL3NoYXJlZC9ob3N0LXVzZXInXG5cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgSG9zdFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGhvc3RBUElTZXJ2aWNlOiBNZWV0aW5nSG9zdEFwaVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRW52aXJvbm1lbnRTZXJ2aWNlSW50ZXJmYWNlVG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2VJbnRlcmZhY2UsXG4gICAgKSB7XG4gICAgfVxuXG4gICAgLy8gVXNlIGJ1aWxkSG9zdElkIHRvIGdldCBhbiBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQgaW4gc3Vic2VxdWVudCByZXF1ZXN0cy4gU2VlIHZlbmRhc3RhYXBpcyBmb3IgbW9yZSBkZXRhaWxzXG4gICAgYnVpbGRIb3N0SWQocmVxOiB7IHVzZXJJZDogc3RyaW5nLCBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOiBBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzU2V0IH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5idWlsZEhvc3RJZCh7XG4gICAgICAgICAgICAgICAgdXNlcklkOiByZXEudXNlcklkLFxuICAgICAgICAgICAgICAgIC8vIEdyb3NzIHR5cGVjYXN0IGV4aXN0cyBiZWNhdXNlIEkgd2FudCB0byByZXN0cmljdCB0aGUgcHJvcGVydGllcyBvbiB0aGUgbWFwIChmb3Igbm93KS5cbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOiByZXEuYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyBhcyBhbnkgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgICAgICAgICAgfVxuICAgICAgICApLnBpcGUobWFwKHJlcyA9PiByZXMuaG9zdElkIHx8ICcnKSk7XG4gICAgfVxuXG4gICAgZG9lc0NhbGVuZGFyRXhpc3QoY2FsZW5kYXJJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZG9lc0NhbGVuZGFyRXhpc3Qoe2NhbGVuZGFySWRlbnRpZmllcjogY2FsZW5kYXJJZGVudGlmaWVyfSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHJlc3AuZXhpc3RzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldENhbGVuZGFyKHJlcTogeyBjYWxlbmRhcklkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8Q2FsZW5kYXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZ2V0Q2FsZW5kYXIoe2NhbGVuZGFySWQ6IHJlcS5jYWxlbmRhcklkfSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXMgPT4gQ2FsZW5kYXJGcm9tQXBpKHJlcz8uY2FsZW5kYXIpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHMocmVxOiB7XG4gICAgICAgIHVzZXJJZDogc3RyaW5nLFxuICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOiBBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzU2V0XG4gICAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHMoe1xuICAgICAgICAgICAgdXNlcklkOiByZXEudXNlcklkLFxuICAgICAgICAgICAgYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllczogcmVxLmFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMgYXMgYW55IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIH0pLnBpcGUobWFwKHJlcyA9PiByZXMgPyByZXMuY2FsZW5kYXJJZCA6ICcnKSk7XG4gICAgfVxuXG4gICAgZW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdChyZXE6IHsgZXh0ZXJuYWxJZHM6IHN0cmluZ1tdIH0pOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3Qoe2V4dGVybmFsSWRzOiByZXEuZXh0ZXJuYWxJZHN9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlcyA9PiByZXM/LmNhbGVuZGFySWRzIHx8IFtdKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qXG4gICAgIGNyZWF0ZUNhbGVuZGFyIGNyZWF0ZXMgYSBjYWxlbmRhciB3aGljaCBtZWV0aW5nIHR5cGVzIGNhbiBiZSBjcmVhdGVkIGZvciBhbmQgZXZlbnRzIGNhbiBiZSBib29rZWQgb25cbiAgICAgVGhlIGZpZWxkcyBvZiBhIGNhbGVuZGFyIGFyZSBkb2N1bWVudGVkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS92ZW5kYXN0YS92ZW5kYXN0YWFwaXMvYmxvYi9tYXN0ZXIvbWVldGluZ3MvdjEvc2hhcmVkLnByb3RvXG4gICAgKi9cbiAgICBjcmVhdGVDYWxlbmRhcihyZXE6IENyZWF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8Q3JlYXRlQ2FsZW5kYXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5jcmVhdGVDYWxlbmRhcihyZXEpO1xuICAgIH1cblxuICAgIHVwZGF0ZUNhbGVuZGFyU2x1ZyhjYWxlbmRhcklkOiBzdHJpbmcsIG5ld1NsdWc6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS51cGRhdGVDYWxlbmRhcih7XG4gICAgICAgICAgICBjYWxlbmRhcklkOiBjYWxlbmRhcklkLFxuICAgICAgICAgICAgY2FsZW5kYXJVcGRhdGU6IHtzbHVnOiBuZXdTbHVnfSxcbiAgICAgICAgICAgIGZpZWxkTWFzazoge3BhdGhzOiBbJ3NsdWcnXX0sXG4gICAgICAgIH0pLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQ2FsZW5kYXJIb3N0VXNlcklEcyhjYWxlbmRhcklkOiBzdHJpbmcsIHJlcGxhY2VtZW50SG9zdFVzZXJJZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLnVwZGF0ZUNhbGVuZGFyKHtcbiAgICAgICAgICAgIGNhbGVuZGFySWQ6IGNhbGVuZGFySWQsXG4gICAgICAgICAgICBjYWxlbmRhclVwZGF0ZToge2hvc3RVc2VySWRzOiByZXBsYWNlbWVudEhvc3RVc2VySWRzfSxcbiAgICAgICAgICAgIGZpZWxkTWFzazoge3BhdGhzOiBbJ2hvc3RfdXNlcl9pZHMnXX0sXG4gICAgICAgIH0pLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgZ2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzKHJlcToge1xuICAgICAgICBjYWxlbmRhcklkczogc3RyaW5nW10sXG4gICAgICAgIG1ldGFkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIH0pOiBPYnNlcnZhYmxlPHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IE1lZXRpbmdUeXBlW10gfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnMoe2NhbGVuZGFySWRzOiByZXEuY2FsZW5kYXJJZHN9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXM/LmNhbGVuZGFyTWVldGluZ1R5cGVzTWFwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlcy5jYWxlbmRhck1lZXRpbmdUeXBlc01hcCkucmVkdWNlKChjYWxlbmRhclRvTWVldGluZ1R5cGVNYXAsIGNhbGVuZGFySWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVldGluZ1R5cGVzID0gKHJlcy5jYWxlbmRhck1lZXRpbmdUeXBlc01hcFtjYWxlbmRhcklkXT8ubWVldGluZ1R5cGVzIHx8IFtdKS5tYXAobXQgPT4gTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiBtdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRFbnZpcm9ubWVudCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNhbGVuZGFyVG9NZWV0aW5nVHlwZU1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxlbmRhcklkXTogbWVldGluZ1R5cGVzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sIHt9IGFzIHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IE1lZXRpbmdUeXBlW10gfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAvKlxuICAgICBsaXN0TWVldGluZ1R5cGVzIHJldHVybnMgYSBsaXN0IG9mIG1lZXRpbmcgdHlwZXMgZm9yIGEgaG9zdFxuICAgICBAcGFyYW0gaG9zdElkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3RcbiAgICAgQHBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCBtZXRhZGF0YSB0byBpbmNsdWRlIG9uIHRoZSBtZWV0aW5nIHR5cGUgYm9va2luZyBsaW5rXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAgICAtIGNhbGVuZGFyU2x1ZyBJUyBOT1QgVVNFRCBUTyBSRVRSSUVWRSBNRUVUSU5HIFRZUEVTLCBPTkxZIFRPIE1BS0UgVEhFIEJPT0tJTkcgVVJMU1xuICAgICovXG4gICAgbGlzdE1lZXRpbmdUeXBlcyhyZXE6IHtcbiAgICAgICAgaG9zdElkOiBzdHJpbmcsXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH1cbiAgICAgICAgY2FsZW5kYXJTbHVnPzogc3RyaW5nLFxuICAgIH0pOiBPYnNlcnZhYmxlPE1lZXRpbmdUeXBlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdE1lZXRpbmdUeXBlcyhyZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzcCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwIHx8ICFyZXNwLm1lZXRpbmdUeXBlcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwLm1lZXRpbmdUeXBlcy5tYXAobXQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiBtdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFySWQ6IHJlcS5ob3N0SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIC8qXG4gICAgIGdldEJvb2tpbmdVcmwgcmV0dXJucyBhIGxpbmsgdGhhdCBjYW4gYmUgdXNlZCB0byBib29rIGEgbWVldGluZyB3aXRoIHRoaXMgaG9zdC5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cyAoaS5lLiwgdGVhbSkuXG4gICAgIEBwYXJhbSBAZGVwcmVjYXRlZCBob3N0SWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdC5cbiAgICAgQHBhcmFtIG1lZXRpbmdUeXBlSWQ6IEFuIG9wdGlvbmFsIGlkZW50aWZpZXIgZm9yIHRoZSBtZWV0aW5nIHR5cGUuIERlZmF1bHQ6IDMwLW1pbnV0ZXMuXG4gICAgIEBwYXJhbSBtZXRhZGF0YTogb3B0aW9uYWwgbWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgdXJsLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIHByZS1maWxsIGNlcnRhaW4gZm9ybSBmaWVsZHMgYW5kIHdpbGwgYmUgc3RvcmVkIGR1cmluZyB0aGUgYm9va2luZyBwcm9jZXNzLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSBvYnRhaW5lZCBieSBzdWJzY3JpYmluZyB0byB0aGUgYm9va2luZyBldmVudC5cbiAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgKi9cbiAgICBnZXRCb29raW5nVXJsKFxuICAgICAgICByZXE6IHtcbiAgICAgICAgICAgIC8vIEBkZXByZWNhdGVkOiB1c2UgY2FsZW5kYXJJZCBpbnN0ZWFkLiBjYWxlbmRhcklkIG5vdCByZXF1aXJlZCB0byBhdm9pZCBicmVha2luZyBleGlzdGluZyBjbGllbnRzLlxuICAgICAgICAgICAgaG9zdElkOiBzdHJpbmcsXG4gICAgICAgICAgICBjYWxlbmRhcklkPzogc3RyaW5nLFxuICAgICAgICAgICAgLy8gQGRlcHJlY2F0ZWQ6IHVzZSBtZWV0aW5nVHlwZVNsdWcgaW5zdGVhZFxuICAgICAgICAgICAgbWVldGluZ1R5cGVJZD86IHN0cmluZyxcbiAgICAgICAgICAgIG1lZXRpbmdUeXBlU2x1Zz86IHN0cmluZyxcbiAgICAgICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgICAgICBjYWxlbmRhclNsdWc/OiBzdHJpbmcsXG4gICAgICAgIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gb2YoZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgICAgICAgICAgICAuLi5yZXEsXG4gICAgICAgICAgICAgICAgY2FsZW5kYXJJZDogcmVxLmNhbGVuZGFySWQgfHwgcmVxLmhvc3RJZCxcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKSxcbiAgICAgICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qXG4gICAgIGdldEdlbmVyYWxCb29raW5nVXJsIHJldHVybnMgYSBsaW5rIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VsZWN0IGEgbWVldGluZyB0eXBlIHRvIGJvb2sgd2l0aCB0aGUgZ2l2ZW4gY2FsZW5kYXIuXG4gICAgIEBwYXJhbSBjYWxlbmRhcklkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3Qgb3IgZ3JvdXBpbmcgb2YgaG9zdHMgKGkuZS4sIHRlYW0pLlxuICAgICBAcGFyYW0gbWV0YWRhdGE6IG9wdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIHVybC5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBwcmUtZmlsbCBjZXJ0YWluIGZvcm0gZmllbGRzIGFuZCB3aWxsIGJlIHN0b3JlZCBkdXJpbmcgdGhlIGJvb2tpbmcgcHJvY2Vzcy5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgb2J0YWluZWQgYnkgc3Vic2NyaWJpbmcgdG8gdGhlIGJvb2tpbmcgZXZlbnQuXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAqL1xuICAgIGdldEdlbmVyYWxCb29raW5nVXJsKHJlcToge1xuICAgICAgICBjYWxlbmRhcklkOiBzdHJpbmcsXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZyxcbiAgICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG9mKGdldEdlbmVyYWxCb29raW5nVXJsSW1wbGVtZW50YXRpb24oe1xuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEVudmlyb25tZW50KCksXG4gICAgICAgICAgICBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgIH0pKVxuICAgIH1cblxuICAgIC8qXG4gICAgIGdldEJvb2tpbmdVcmxzTXVsdGkgcmV0dXJucyBhIG1hcHBpbmcgb2YgaG9zdHMgLT4gZXZlbnQgdHlwZXMgLT4gYm9va2luZyBsaW5rcy5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cy5cbiAgICAgQHBhcmFtIG1lZXRpbmdUeXBlU2x1ZzogbWVldGluZ1R5cGVTbHVncyBhcmUgcGFzc2VkIGluIHRoZSBmb3JtIHtob3N0SWQ6IFttZWV0aW5nVHlwZVNsdWcxLCBtZWV0aW5nVHlwZVNsdWcyXX1cbiAgICAgQHBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCBtZXRhZGF0YSB0byBpbmNsdWRlIGluIHRoZSB1cmwuXG4gICAgIC0gbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gcHJlLWZpbGwgY2VydGFpbiBmb3JtIGZpZWxkcyBhbmQgd2lsbCBiZSBzdG9yZWQgZHVyaW5nIHRoZSBib29raW5nIHByb2Nlc3MuXG4gICAgIC0gbWV0YWRhdGEgY2FuIGJlIG9idGFpbmVkIGJ5IHN1YnNjcmliaW5nIHRvIHRoZSBib29raW5nIGV2ZW50LlxuICAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgKi9cbiAgICBnZXRCb29raW5nVXJsc011bHRpKFxuICAgICAgICByZXE6IHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IHN0cmluZ1tdIH0sXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZ1xuICAgICk6IE9ic2VydmFibGU8SG9zdFVybE1hcD4ge1xuICAgICAgICByZXR1cm4gb2YoT2JqZWN0LmtleXMocmVxKS5yZWR1Y2UoKGhvc3RNYXAsIGNhbGVuZGFySWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaG9zdE1hcCxcbiAgICAgICAgICAgICAgICBbY2FsZW5kYXJJZF06IHJlcVtjYWxlbmRhcklkXS5yZWR1Y2UoKG1lZXRpbmdUeXBlTWFwLCBtZWV0aW5nVHlwZVNsdWcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm1lZXRpbmdUeXBlTWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgW21lZXRpbmdUeXBlU2x1Z106IGdldEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nVHlwZVNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEVudmlyb25tZW50KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJTbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LCB7fSBhcyB7IFttZWV0aW5nVHlwZUlkOiBzdHJpbmddOiBzdHJpbmcgfSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIHt9IGFzIEhvc3RVcmxNYXApKTtcbiAgICB9XG5cbiAgICBpc0hvc3RDb25maWd1cmVkKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmlzSG9zdENvbmZpZ3VyZWQocmVxKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwOiBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UpID0+IHJlc3AuaXNDb25maWd1cmVkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldEdlbmVyYWxBdmFpbGFiaWxpdHkocmVxOiB7XG4gICAgICAgIGhvc3RJZDogc3RyaW5nLFxuICAgICAgICBtZWV0aW5nVHlwZUlkOiBzdHJpbmcsXG4gICAgICAgIC8vIEBkZXByZWNhdGVkOiB1c2Ugd2Vla2RheXNBdmFpbGFiaWxpdHkgaW5zdGVhZFxuICAgICAgICBkYXlzPzogRGF5T2ZXZWVrW10sXG4gICAgICAgIC8vIEBkZXByZWNhdGVkOiB1c2Ugd2Vla2RheXNBdmFpbGFiaWxpdHkgaW5zdGVhZFxuICAgICAgICB0aW1lU2xvdD86IFRpbWVSYW5nZUludGVyZmFjZSxcbiAgICAgICAgd2Vla2RheXNBdmFpbGFiaWxpdHk/OiBXZWVrZGF5QXZhaWxhYmlsaXR5W10sXG4gICAgICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZSxcbiAgICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgICAgIGNvbnN0IGFwaVJlcSA9IHtcbiAgICAgICAgICAgIC4uLnJlcSxcbiAgICAgICAgICAgIHRpbWVab25lOiBuZXcgVGltZVpvbmUocmVxLnRpbWVab25lKSxcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVxLnRpbWVTbG90KSB7XG4gICAgICAgICAgICBhcGlSZXEudGltZVNsb3QgPSBuZXcgVGltZVJhbmdlKHJlcS50aW1lU2xvdClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5zZXRHZW5lcmFsQXZhaWxhYmlsaXR5KGFwaVJlcSkucGlwZShtYXBUbyhudWxsKSlcbiAgICB9XG5cbiAgICBsaXN0Qm9va2VkTWVldGluZ3MocmVxOiB7XG4gICAgICAgIGZpbHRlcnM6IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlLFxuICAgICAgICBjdXJzb3I6IHN0cmluZyxcbiAgICAgICAgcGFnZVNpemU6IG51bWJlcixcbiAgICAgICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlLFxuICAgIH0pOiBPYnNlcnZhYmxlPFBhZ2VkUmVzcG9uc2U8TWVldGluZz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEJvb2tlZE1lZXRpbmdzKHtcbiAgICAgICAgICAgIC4uLnJlcSxcbiAgICAgICAgICAgIHBhZ2luZ09wdGlvbnM6IG5ldyBQYWdlZFJlcXVlc3RPcHRpb25zKHtjdXJzb3I6IHJlcS5jdXJzb3IsIHBhZ2VTaXplOiByZXEucGFnZVNpemV9KSxcbiAgICAgICAgICAgIGZpbHRlcnM6IG5ldyBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyhyZXEuZmlsdGVycyksXG4gICAgICAgICAgICB0aW1lWm9uZTogbmV3IFRpbWVab25lKHJlcS50aW1lWm9uZSksXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3A6IExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVldGluZ3MgPSAocmVzcC5tZWV0aW5ncyB8fCBbXSkubWFwKG1lZXRpbmcgPT4gbWVldGluZ0Zyb21BcGkobWVldGluZykpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUGFnZWRSZXNwb25zZShtZWV0aW5ncywgcmVzcC5wYWdpbmdNZXRhZGF0YS5uZXh0Q3Vyc29yLCByZXNwLnBhZ2luZ01ldGFkYXRhLmhhc01vcmUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY2FuY2VsTWVldGluZyhyZXE6IHtcbiAgICAgICAgbWVldGluZ0lkOiBzdHJpbmcsXG4gICAgICAgIGNhbmNlbGxhdGlvblJlYXNvbjogc3RyaW5nXG4gICAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5jYW5jZWxNZWV0aW5nKHtcbiAgICAgICAgICAgIC4uLnJlcVxuICAgICAgICB9KS5waXBlKG1hcFRvKG51bGwpKVxuICAgIH1cblxuICAgIHJlc2NoZWR1bGVNZWV0aW5nKHJlcToge1xuICAgICAgICBtZWV0aW5nSWQ6IHN0cmluZyxcbiAgICAgICAgc3RhcnQ6IERhdGVcbiAgICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLnJlc2NoZWR1bGVNZWV0aW5nKHtcbiAgICAgICAgICAgIC4uLnJlcVxuICAgICAgICB9KS5waXBlKG1hcFRvKG51bGwpKVxuICAgIH1cblxuICAgIGxpc3RBdmFpbGFiaWxpdHkocmVxOiB7XG4gICAgICAgIGZpbHRlcnM6IExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgICAgICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZSxcbiAgICAgICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlLFxuICAgIH0pOiBPYnNlcnZhYmxlPFBhZ2VkUmVzcG9uc2U8QXZhaWxhYmlsaXR5UnVsZT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEF2YWlsYWJpbGl0eShyZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSAocmVzcG9uc2UuYXZhaWxhYmlsaXR5UnVsZXMgfHwgW10pLmZpbHRlcihCb29sZWFuKS5tYXAoYSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0SWQ6IGEuaG9zdElkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ1R5cGVJZDogYS5tZWV0aW5nVHlwZUlkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF5OiBhLmRheSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVTbG90OiBhLnRpbWVTbG90LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZVpvbmU6IGEudGltZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VkUmVzcG9uc2UocmVzdWx0cywgcmVzcG9uc2UubWV0YWRhdGEubmV4dEN1cnNvciwgcmVzcG9uc2UubWV0YWRhdGEuaGFzTW9yZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyogdXBkYXRlUHJlZmVyZW5jZXMgd2lsbCB1cGRhdGUgdGhlIGhvc3QncyBwcmVmZXJlbmNlcy5cbiAgICAgKiBJdCBpcyBndWFyYW50ZWVkIHRvIG9ubHkgdXBkYXRlIHRoZSBmaWVsZHMgcHJvdmlkZWQuXG4gICAgICogRm9yIGV4YW1wbGU6XG4gICAgICogIHVwZGF0ZVByZWZlcmVuY2VzKHttZWV0aW5nSW50ZWdyYXRpb246IE1lZXRpbmdTb3VyY2UuTUVFVElOR19TT1VSQ0VfR09PR0xFX01FRVR9KVxuICAgICAqICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBwcmVmZXJlbmNlIG1lZXRpbmdJbnRlZ3JhdGlvbiB0byBHb29nbGUgTWVldC4gS2VlcGluZyB0aGUgb3RoZXIgcHJlZmVyZW5jZXMgdGhlIHNhbWUuXG4gICAgICpcbiAgICAgKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHByb3ZpZGUgYSBsaXN0IG9mIGtleXMgdG8gdXBkYXRlIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuXG4gICAgICogRm9yIGV4YW1wbGU6XG4gICAgICogICB1cGRhdGVQcmVmZXJlbmNlcyh7Li4ub2JqZWN0IHdpdGggYWxsIGZpZWxkc30sIFsnbWVldGluZ0ludGVncmF0aW9uJ10pXG4gICAgICogICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBmaWVsZCAnbWVldGluZ0ludGVncmF0aW9uJyB0byB0aGUgdmFsdWUgaW4gcHJlZmVyZW5jZXMuXG4gICAgICpcbiAgICAgKiBDYWxsaW5nIHdpdGggYW4gZW1wdHkgb2JqZWN0IGFuZCBubyBrZXlzIGlzIGEgbm8tb3AsIG9yIGFuIHVuZGVmaW5lZCBvYmplY3QuXG4gICAgICogQ2FsbGluZyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIGZpZWxkcyBub3QgaW4gYFByZWZlcmVuY2VzYCBvciB3aXRoIHVwZGF0ZUZpZWxkcyBub3QgbGlua2VkIHRvIHByb3BlcnRpZXMgaW5cbiAgICAgKiBgUHJlZmVyZW5jZXNgIGlzIGFuIGVycm9yLlxuICAgICAqL1xuICAgIHVwZGF0ZVByZWZlcmVuY2VzKHJlcTogeyBob3N0SWQ6IHN0cmluZywgcHJlZmVyZW5jZXM6IFBhcnRpYWw8UHJlZmVyZW5jZXM+LCB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgUHJlZmVyZW5jZXMpW10gfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe286IHJlcS5wcmVmZXJlbmNlcywgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzfSk7XG4gICAgICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS51cGRhdGVIb3N0UHJlZmVyZW5jZXMoe1xuICAgICAgICAgICAgaG9zdElkOiByZXEuaG9zdElkLFxuICAgICAgICAgICAgcHJlZmVyZW5jZXM6IHJlcS5wcmVmZXJlbmNlcyxcbiAgICAgICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBnZXRQcmVmZXJlbmNlcyhyZXE6IHsgaG9zdElkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8UHJlZmVyZW5jZXM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZ2V0SG9zdFByZWZlcmVuY2VzKHtcbiAgICAgICAgICAgIGhvc3RJZDogcmVxLmhvc3RJZFxuICAgICAgICB9KS5waXBlKG1hcChyZXNwb25zZSA9PiBQcmVmZXJlbmNlc0Zyb21BcGkocmVzcG9uc2UucHJlZmVyZW5jZXMpKSlcbiAgICB9XG5cbiAgICBnZXRNZWV0aW5nKG1lZXRpbmdJZDogc3RyaW5nLCBsb2NhdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxNZWV0aW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmdldEhvc3RNZWV0aW5nKHtcbiAgICAgICAgICAgIG1lZXRpbmdJZDogbWVldGluZ0lkLCBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3A6IEdldEhvc3RNZWV0aW5nUmVzcG9uc2UpID0+IG1lZXRpbmdGcm9tQXBpKHJlc3AubWVldGluZykpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICB1cGRhdGVNZWV0aW5nTWV0YWRhdGEocmVxOiB7IG1lZXRpbmdJZDogc3RyaW5nLCBtZXRhZGF0YTogTWVldGluZ01ldGFkYXRhIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UudXBkYXRlTWVldGluZ01ldGFkYXRhKHtcbiAgICAgICAgICAgIG1lZXRpbmdJZDogcmVxLm1lZXRpbmdJZCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGFcbiAgICAgICAgfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBib29rTWVldGluZyhyZXE6IEhvc3RCb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5ib29rTWVldGluZyhyZXEpLnBpcGUobWFwKChyZXNwOiBIb3N0Qm9va01lZXRpbmdSZXNwb25zZSkgPT4gcmVzcC5tZWV0aW5nSWQpKTtcbiAgICB9XG5cbiAgICAvLyBjcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzIHdpbGwgY3JlYXRlIHdoYXQgTWVldGluZyBTY2hlZHVsZXIgZGVlbXMgdG8gYmUgdGhlIGRlZmF1bHQgbWVldGluZyB0eXBlcy5cbiAgICAvLyBJZiB0aGUgY2FsZW5kYXIgYWxyZWFkeSBoYXMgbWVldGluZyB0eXBlcywgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGEgbm8tb3AuXG4gICAgY3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlcyhyZXE6IHsgY2FsZW5kYXJJZHM6IHN0cmluZ1tdLCB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmNyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXMoe2NhbGVuZGFySWRzOiByZXEuY2FsZW5kYXJJZHN9KS5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICAgIH1cblxuICAgIGNyZWF0ZU1lZXRpbmdUeXBlKHJlcTogeyBtZWV0aW5nVHlwZTogTWVldGluZ1R5cGUgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmNyZWF0ZU1lZXRpbmdUeXBlKHttZWV0aW5nVHlwZTogTWVldGluZ1R5cGVUb0FwaSh7bWVldGluZ1R5cGU6IHJlcS5tZWV0aW5nVHlwZX0pfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLmlkKSk7XG4gICAgfVxuXG4gICAgLyogdXBkYXRlTWVldGluZ1R5cGUgd2lsbCB1cGRhdGUgdGhlIG1lZXRpbmcgdHlwZSBmaWVsZHMuXG4gICAgICogSXQgaXMgZ3VhcmFudGVlZCB0byBvbmx5IHVwZGF0ZSB0aGUgZmllbGRzIHByb3ZpZGVkLlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqICB1cGRhdGVNZWV0aW5nVHlwZSh7bmFtZTogJ09uYm9hcmRpbmcnfSlcbiAgICAgKiAgd2lsbCBvbmx5IHVwZGF0ZSB0aGUgZmllbGQgJ25hbWUnIHRvICdPbmJvYXJkaW5nJy4gS2VlcGluZyB0aGUgb3RoZXIgZmllbGRzIHRoZSBzYW1lLlxuICAgICAqXG4gICAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwcm92aWRlIGEgbGlzdCBvZiBrZXlzIHRvIHVwZGF0ZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqICAgdXBkYXRlTWVldGluZ1R5cGUoey4uLm9iamVjdCB3aXRoIGFsbCBmaWVsZHN9LCBbJ25hbWUnXSlcbiAgICAgKiAgIHdpbGwgb25seSB1cGRhdGUgdGhlIGZpZWxkICduYW1lJyB0byB0aGUgdmFsdWUgcGFzc2VkIGluLlxuICAgICAqXG4gICAgICogQ2FsbGluZyB3aXRoIGFuIGVtcHR5IG9iamVjdCBhbmQgbm8ga2V5cyBpcyBhIG5vLW9wLCBvciBhbiB1bmRlZmluZWQgb2JqZWN0LlxuICAgICAqIENhbGxpbmcgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyBmaWVsZHMgbm90IGluIGBNZWV0aW5nVHlwZWAgb3Igd2l0aCB1cGRhdGVGaWVsZHMgbm90IGxpbmtlZCB0byBwcm9wZXJ0aWVzIGluXG4gICAgICogYE1lZXRpbmdUeXBlYCBpcyBhbiBlcnJvci5cbiAgICAgKi9cbiAgICB1cGRhdGVNZWV0aW5nVHlwZShyZXE6IHsgaWQ6IHN0cmluZywgbWVldGluZ1R5cGU6IFBhcnRpYWw8TWVldGluZ1R5cGU+LCB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgTWVldGluZ1R5cGUpW10gfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe286IHJlcS5tZWV0aW5nVHlwZSwgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzfSk7XG4gICAgICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS51cGRhdGVNZWV0aW5nVHlwZSh7XG4gICAgICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICAgICAgbWVldGluZ1R5cGU6IE1lZXRpbmdUeXBlVG9BcGkoe21lZXRpbmdUeXBlOiByZXEubWVldGluZ1R5cGV9KSxcbiAgICAgICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBkZWxldGVNZWV0aW5nVHlwZShyZXE6IHsgaWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmRlbGV0ZU1lZXRpbmdUeXBlKHtpZDogcmVxLmlkfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBnZXRIb3N0c0ZvckNhbGVuZGFyKHJlcTogeyBjYWxlbmRhcklkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8SG9zdFVzZXJbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRIb3N0c0ZvckNhbGVuZGFyKHtjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHJlcy5ob3N0VXNlcnMgfHwgW10pLm1hcChob3N0dXNlciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBob3N0VXNlckZyb21BcGkoaG9zdHVzZXIpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbn1cblxuXG5cbiJdfQ==
|
package/esm2015/lib/host/url.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
// A temporary method for building the url for a host, eventTypeId, and metadata
|
|
2
|
-
import { Environment } from '@vendasta/core';
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmpzIiwic291cmNlUm9vdCI6Ii9jb2RlZnJlc2gvdm9sdW1lL21lZXRpbmdzL3Nka3MvdHlwZXNjcmlwdC9zcmMvbWVldGluZ3Nfc2RrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9ob3N0L3VybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnRkFBZ0Y7QUFDaEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sVUFBVSwyQkFBMkIsQ0FDdkMsR0FRQztJQUVELE1BQU0sTUFBTSxHQUFHLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksWUFBWSxDQUFDO0lBQzdFLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQztJQUN4RCxNQUFNLEdBQUcsR0FBRyxXQUFXLE1BQU0sU0FBUyxZQUFZLElBQUksV0FBVyxFQUFFLENBQUM7SUFDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7UUFDZixPQUFPLEdBQUcsQ0FBQztLQUNkO0lBQ0QsT0FBTyx3QkFBd0IsQ0FBQyxFQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxNQUFNLFVBQVUsa0NBQWtDLENBQUMsR0FLbEQ7SUFDRyxNQUFNLEdBQUcsR0FBRyxXQUFXLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN6RyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUM5RixDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxHQUFnQjtJQUM5QyxJQUFJLEdBQUcsS0FBSyxXQUFXLENBQUMsSUFBSSxFQUFFO1FBQzFCLE9BQU8sZ0JBQWdCLENBQUM7S0FDM0I7SUFDRCxPQUFPLHFDQUFxQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsR0FBMEQ7SUFDL0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7UUFDZixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7S0FDbkI7SUFDRCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBcUMsQ0FBQztJQUNwRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUN0RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzVCLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7YUFDOUI7WUFDRCxPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxHQUFHLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDeEMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsV0FBVyxFQUFFLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEEgdGVtcG9yYXJ5IG1ldGhvZCBmb3IgYnVpbGRpbmcgdGhlIHVybCBmb3IgYSBob3N0LCBldmVudFR5cGVJZCwgYW5kIG1ldGFkYXRhXG5pbXBvcnQge0Vudmlyb25tZW50fSBmcm9tICdAdmVuZGFzdGEvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29raW5nVXJsSW1wbGVtZW50YXRpb24oXG4gICAgcmVxOiB7XG4gICAgICAgIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICAgICAgY2FsZW5kYXJJZDogc3RyaW5nLFxuICAgICAgICAvLyBAZGVwcmVjYXRlZDogdXNlIG1lZXRpbmdUeXBlU2x1ZyBpbnN0ZWFkXG4gICAgICAgIG1lZXRpbmdUeXBlSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lZXRpbmdUeXBlU2x1Zz86IHN0cmluZyxcbiAgICAgICAgbWV0YWRhdGE/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgY2FsZW5kYXJTbHVnPzogc3RyaW5nLFxuICAgIH1cbik6IHN0cmluZyB7XG4gICAgY29uc3QgZG9tYWluID0gZ2V0RG9tYWluRnJvbUVudmlyb25tZW50KHJlcS5lbnZpcm9ubWVudCk7XG4gICAgY29uc3QgbWVldGluZ1R5cGUgPSByZXEubWVldGluZ1R5cGVTbHVnIHx8IHJlcS5tZWV0aW5nVHlwZUlkIHx8ICczMC1taW51dGVzJztcbiAgICBjb25zdCBjYWxlbmRhclNsdWcgPSByZXEuY2FsZW5kYXJTbHVnIHx8IHJlcS5jYWxlbmRhcklkO1xuICAgIGNvbnN0IHVybCA9IGBodHRwczovLyR7ZG9tYWlufS9ib29rLyR7Y2FsZW5kYXJTbHVnfS8ke21lZXRpbmdUeXBlfWA7XG4gICAgaWYgKCFyZXEubWV0YWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gICAgcmV0dXJuIGFkZE1ldGFkYXRhVG9Cb29raW5nTGluayh7bGluazogdXJsLCBtZXRhZGF0YTogcmVxLm1ldGFkYXRhfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRHZW5lcmFsQm9va2luZ1VybEltcGxlbWVudGF0aW9uKHJlcToge1xuICAgIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICBjYWxlbmRhcklkOiBzdHJpbmcsXG4gICAgbWV0YWRhdGE/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjYWxlbmRhclNsdWc/OiBzdHJpbmcsXG59KTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly8ke2dldERvbWFpbkZyb21FbnZpcm9ubWVudChyZXEuZW52aXJvbm1lbnQpfS8ke3JlcS5jYWxlbmRhclNsdWcgfHwgcmVxLmNhbGVuZGFySWR9YDtcbiAgICByZXR1cm4gcmVxLm1ldGFkYXRhID8gYWRkTWV0YWRhdGFUb0Jvb2tpbmdMaW5rKHtsaW5rOiB1cmwsIG1ldGFkYXRhOiByZXEubWV0YWRhdGF9KSA6IHVybDtcbn1cblxuZnVuY3Rpb24gZ2V0RG9tYWluRnJvbUVudmlyb25tZW50KGVudjogRW52aXJvbm1lbnQpOiBzdHJpbmcge1xuICAgIGlmIChlbnYgPT09IEVudmlyb25tZW50LlBST0QpIHtcbiAgICAgICAgcmV0dXJuICdib29rbWVub3cuaW5mbyc7XG4gICAgfVxuICAgIHJldHVybiAnYm9va21lLWRlbW8tcnJuY29jZWJkcS11Yy5hLnJ1bi5hcHAnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTWV0YWRhdGFUb0Jvb2tpbmdMaW5rKHJlcTogeyBsaW5rOiBzdHJpbmcsIG1ldGFkYXRhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH0pOiBzdHJpbmcge1xuICAgIGlmICghcmVxLm1ldGFkYXRhKSB7XG4gICAgICAgIHJldHVybiByZXEubGluaztcbiAgICB9XG4gICAgY29uc3QgbSA9IHJlcS5tZXRhZGF0YSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gT2JqZWN0LmtleXMobSkucmVkdWNlKChwYXJhbXMsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIXBhcmFtcykge1xuICAgICAgICAgICAgaWYgKHJlcS5saW5rLmluZGV4T2YoJz8nKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAmJHtrZXl9PSR7bVtrZXldfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYD8ke2tleX09JHttW2tleV19YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7cGFyYW1zfSYke2tleX09JHttW2tleV19YDtcbiAgICB9LCAnJyk7XG5cbiAgICByZXR1cm4gYCR7cmVxLmxpbmt9JHtxdWVyeVBhcmFtc31gO1xufVxuIl19
|
package/esm2015/lib/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL2NvZGVmcmVzaC92b2x1bWUvbWVldGluZ3Mvc2Rrcy90eXBlc2NyaXB0L3NyYy9tZWV0aW5nc19zZGsvc3JjLyIsInNvdXJjZXMiOlsibGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQUMsYUFBYSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUE7QUFDbEgsT0FBTyxFQUNILGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUN6QixNQUFNLDJCQUEyQixDQUFBO0FBQ2xDLE9BQU8sRUFHSCxhQUFhLEVBY2IsNEJBQTRCLEVBQzVCLHFCQUFxQixFQUNyQiwrQkFBK0IsRUFDL0Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsNkNBQTZDLEVBQzdDLDBDQUEwQyxFQUMxQyw0Q0FBNEMsRUFLNUMsbUNBQW1DLEVBQ25DLGlDQUFpQyxHQUVwQyxNQUFNLGdCQUFnQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtNZWV0aW5nc1NESywgTWVldGluZ3NTZXJ2aWNlfSBmcm9tICcuL21lZXRpbmdzLnNlcnZpY2UnO1xuZXhwb3J0IHtCb29rZWRNZWV0aW5nSW5mbywgQm9va01lZXRpbmdSZXNwb25zZSwgR3Vlc3RTZXJ2aWNlSW50ZXJmYWNlfSBmcm9tICcuL2d1ZXN0JztcbmV4cG9ydCB7R3Vlc3RTZXJ2aWNlfSBmcm9tICcuL2d1ZXN0L2d1ZXN0LnNlcnZpY2UnO1xuZXhwb3J0IHtIb3N0U2VydmljZX0gZnJvbSAnLi9ob3N0L2hvc3Quc2VydmljZSc7XG5leHBvcnQge2FkZE1ldGFkYXRhVG9Cb29raW5nTGlua30gZnJvbSAnLi9ob3N0L3VybCc7XG5leHBvcnQge01lZXRpbmdTb3VyY2UsIE1lZXRpbmdTb3VyY2VTdGF0dXMsIERheU9mV2VlaywgRm9ybUZpZWxkVHlwZSwgQ2FsZW5kYXJUeXBlfSBmcm9tICcuL19pbnRlcm5hbC9lbnVtcy9pbmRleCdcbmV4cG9ydCB7XG4gICAgTWVldGluZ1NvdXJjZVF1ZXJ5LFxuICAgIE1lZXRpbmdTb3VyY2VJbmZvLFxuICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2UsXG4gICAgQ29udGFjdCxcbiAgICBXZWVrZGF5QXZhaWxhYmlsaXR5LFxuICAgIENyZWF0ZUNhbGVuZGFyUmVxdWVzdCxcbiAgICBDcmVhdGVDYWxlbmRhclJlc3BvbnNlLFxufSBmcm9tICcuL19pbnRlcm5hbC9vYmplY3RzL2luZGV4J1xuZXhwb3J0IHtcbiAgICBIb3N0LFxuICAgIFRpbWVTcGFuLFxuICAgIFBhZ2VkUmVzcG9uc2UsXG4gICAgTWVldGluZyxcbiAgICBNZWV0aW5nVHlwZSxcbiAgICBBdHRlbmRlZSxcbiAgICBBdmFpbGFiaWxpdHlSdWxlLFxuICAgIENhbGVuZGFyLFxuICAgIEhvc3RVcmxNYXAsXG4gICAgUHJlZmVyZW5jZXMsXG4gICAgRHVyYXRpb24sXG4gICAgTWVldGluZ1R5cGVGb3JtLFxuICAgIE1lZXRpbmdUeXBlRm9ybUZpZWxkLFxuICAgIE1lZXRpbmdGb3JtLFxuICAgIE1lZXRpbmdGb3JtQW5zd2VyLFxuICAgIE1lZXRpbmdNZXRhZGF0YSxcbiAgICBXZWxsS25vd25NZWV0aW5nTWV0YWRhdGFLZXlzLFxuICAgIFdlbGxLbm93bkZvcm1GaWVsZElkcyxcbiAgICBtZWV0aW5nU2NoZWR1bGVySWRUb01ldGFkYXRhS2V5LFxuICAgIGR1cmF0aW9uRnJvbVN0cmluZyxcbiAgICBkdXJhdGlvblRvU3RyaW5nLFxuICAgIGR1cmF0aW9uU3RyaW5nVG9NaW51dGVzLFxuICAgIG5ld0J1c2luZXNzQ2VudGVyQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyxcbiAgICBuZXdTYWxlc0NlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgbmV3UGFydG5lckNlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc1NldCxcbiAgICBCdXNpbmVzc0NlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgU2FsZXNDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIFBhcnRuZXJDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIEtub3duQ2FsZW5kYXJBcHBsaWNhdGlvbkNvbnRleHRLZXlzLFxuICAgIEtub3duQ2FsZW5kYXJFeHRlcm5hbEludGVncmF0aW9ucyxcbiAgICBIb3N0VXNlcixcbn0gZnJvbSAnLi9zaGFyZWQvaW5kZXgnXG5leHBvcnQge1xuICAgIFRpbWVSYW5nZUludGVyZmFjZSBhcyBUaW1lUmFuZ2UsXG4gICAgVGltZU9mRGF5SW50ZXJmYWNlIGFzIFRpbWVPZkRheSxcbiAgICBUaW1lWm9uZUludGVyZmFjZSBhcyBUaW1lWm9uZSxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSBhcyBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0QXZhaWxhYmlsaXR5UmVxdWVzdEZpbHRlcnNJbnRlcmZhY2UgYXMgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RGaWx0ZXJzLFxuICAgIFBhZ2VkUmVxdWVzdE9wdGlvbnNJbnRlcmZhY2UgYXMgUGFnZWRSZXF1ZXN0T3B0aW9ucyxcbiAgICBEYXRlUmFuZ2VJbnRlcmZhY2UgYXMgRGF0ZVJhbmdlLFxuICAgIENyZWF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSxcbiAgICBDcmVhdGVDYWxlbmRhclJlc3BvbnNlSW50ZXJmYWNlLFxuICAgIFVwZGF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSxcbiAgICBBdHRhY2htZW50SW50ZXJmYWNlLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWVJbnRlcmZhY2UsXG59IGZyb20gJy4vX2ludGVybmFsL2ludGVyZmFjZXMvaW5kZXgnXG4iXX0=
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { throwError } from 'rxjs';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import { MeetingSourceAPIApiService } from './_internal/meeting-source-api.api.service';
|
|
5
|
-
import { MeetingSource } from './_internal/enums/meeting-source.enum';
|
|
6
|
-
import { ZoomMeetingRecurrenceType, ZoomMeetingType } from './_internal/enums/zoom.enum';
|
|
7
|
-
import { CreateZoomMeetingRequest } from './_internal/objects/zoom';
|
|
8
|
-
import { GoogleMeetCreateMeetingRequest } from './_internal/objects/google-meet';
|
|
9
|
-
import { ZoomApiService } from './_internal/zoom.api.service';
|
|
10
|
-
import { GoogleMeetApiService } from './_internal/google-meet.api.service';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "./_internal/meeting-source-api.api.service";
|
|
13
|
-
import * as i2 from "./_internal/zoom.api.service";
|
|
14
|
-
import * as i3 from "./_internal/google-meet.api.service";
|
|
15
|
-
function generateMeetingPassword() {
|
|
16
|
-
const zoomMaxLength = 10;
|
|
17
|
-
const zoomAllowedChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@-_*';
|
|
18
|
-
try {
|
|
19
|
-
const ints = new Uint8Array(zoomMaxLength);
|
|
20
|
-
crypto.getRandomValues(ints);
|
|
21
|
-
return Array.from(ints)
|
|
22
|
-
.map((v) => zoomAllowedChars.charAt(v % zoomAllowedChars.length))
|
|
23
|
-
.join('');
|
|
24
|
-
}
|
|
25
|
-
catch (e) {
|
|
26
|
-
console.error('User is probably using an unsupported browser. ' +
|
|
27
|
-
'Falling back to less secure password generation', e);
|
|
28
|
-
return new Array(zoomMaxLength)
|
|
29
|
-
.map(() => Math.floor(Math.random() * zoomAllowedChars.length))
|
|
30
|
-
.join('');
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
export class MeetingsService {
|
|
34
|
-
constructor(_api, zoom, meet) {
|
|
35
|
-
this._api = _api;
|
|
36
|
-
this.zoom = zoom;
|
|
37
|
-
this.meet = meet;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* @deprecated Use listForUser instead. This method will result in the backend grabbing the userID from the user's JWT
|
|
41
|
-
* This will eventually no longer be supported because it breaks our impersonation workflows.
|
|
42
|
-
*/
|
|
43
|
-
list(meetingSources) {
|
|
44
|
-
return this._api.list({
|
|
45
|
-
queriedSources: meetingSources
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
listForUser(iamUserId, queriedSources) {
|
|
49
|
-
return this._api.list({
|
|
50
|
-
iamUserId,
|
|
51
|
-
queriedSources,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
startInstantMeeting(meetingTitle, meetingAgenda, meetingSource, gMeetAttendees) {
|
|
55
|
-
const now = new Date();
|
|
56
|
-
switch (meetingSource) {
|
|
57
|
-
case MeetingSource.MEETING_SOURCE_INVALID:
|
|
58
|
-
return throwError('Meeting source was not specified');
|
|
59
|
-
case MeetingSource.MEETING_SOURCE_ZOOM:
|
|
60
|
-
const req = createZoomInstantMeetingRequest(meetingTitle, now, meetingAgenda);
|
|
61
|
-
return this.zoom.createMeeting(req).pipe(map((resp) => ({ url: resp.joinUrl, password: resp.password, joinURL: resp.joinUrl })));
|
|
62
|
-
case MeetingSource.MEETING_SOURCE_GOOGLE_MEET:
|
|
63
|
-
if (!gMeetAttendees) {
|
|
64
|
-
return throwError('Attendees are required to start a Meet Hangout');
|
|
65
|
-
}
|
|
66
|
-
const meetReq = createMeetInstantMeetingRequest(meetingTitle, now, gMeetAttendees);
|
|
67
|
-
return this.meet.createMeeting(meetReq).pipe(map((resp) => ({ url: resp.meeting.hangoutLink, joinURL: resp.meeting.hangoutLink })));
|
|
68
|
-
default:
|
|
69
|
-
return throwError('Unrecognized meeting source ' + meetingSource);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
createBasicZoomScheduledMeeting(topic, agenda, startDateTime, duration, timezone, meetingPassword) {
|
|
73
|
-
const req = new CreateZoomMeetingRequest({
|
|
74
|
-
topic: topic,
|
|
75
|
-
type: ZoomMeetingType.ZOOM_MEETING_TYPE_SCHEDULED,
|
|
76
|
-
startTime: startDateTime,
|
|
77
|
-
duration: duration,
|
|
78
|
-
timezone: timezone,
|
|
79
|
-
password: meetingPassword ? meetingPassword : generateMeetingPassword(),
|
|
80
|
-
agenda: agenda,
|
|
81
|
-
settings: {
|
|
82
|
-
joinBeforeHost: true,
|
|
83
|
-
enforceLogin: false
|
|
84
|
-
},
|
|
85
|
-
recurrence: {
|
|
86
|
-
type: ZoomMeetingRecurrenceType.ZOOM_MEETING_RECURRENCE_TYPE_DAILY
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
return this.zoom.createMeeting(req);
|
|
90
|
-
}
|
|
91
|
-
createBasicGoogleMeeting(topic, agenda, startDateTime, endDateTime, timezone, attendees) {
|
|
92
|
-
const req = new GoogleMeetCreateMeetingRequest({
|
|
93
|
-
meeting: {
|
|
94
|
-
attendees: attendees,
|
|
95
|
-
description: agenda,
|
|
96
|
-
start: {
|
|
97
|
-
dateTime: startDateTime,
|
|
98
|
-
timeZone: timezone
|
|
99
|
-
},
|
|
100
|
-
end: {
|
|
101
|
-
dateTime: endDateTime,
|
|
102
|
-
timeZone: timezone
|
|
103
|
-
},
|
|
104
|
-
summary: topic
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
return this.meet.createMeeting(req);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
MeetingsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MeetingsService_Factory() { return new MeetingsService(i0.ɵɵinject(i1.MeetingSourceAPIApiService), i0.ɵɵinject(i2.ZoomApiService), i0.ɵɵinject(i3.GoogleMeetApiService)); }, token: MeetingsService, providedIn: "root" });
|
|
111
|
-
MeetingsService.decorators = [
|
|
112
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
113
|
-
];
|
|
114
|
-
MeetingsService.ctorParameters = () => [
|
|
115
|
-
{ type: MeetingSourceAPIApiService },
|
|
116
|
-
{ type: ZoomApiService },
|
|
117
|
-
{ type: GoogleMeetApiService }
|
|
118
|
-
];
|
|
119
|
-
function createZoomInstantMeetingRequest(meetingTitle, now, meetingAgenda) {
|
|
120
|
-
const recurrence = {
|
|
121
|
-
type: ZoomMeetingRecurrenceType.ZOOM_MEETING_RECURRENCE_TYPE_DAILY,
|
|
122
|
-
repeatInterval: 0,
|
|
123
|
-
};
|
|
124
|
-
const req = {
|
|
125
|
-
topic: meetingTitle,
|
|
126
|
-
type: ZoomMeetingType.ZOOM_MEETING_TYPE_INSTANT,
|
|
127
|
-
startTime: now.toISOString(),
|
|
128
|
-
duration: undefined,
|
|
129
|
-
timezone: 'UTC',
|
|
130
|
-
password: generateMeetingPassword(),
|
|
131
|
-
agenda: meetingAgenda,
|
|
132
|
-
trackingFields: [],
|
|
133
|
-
recurrence: recurrence,
|
|
134
|
-
settings: undefined,
|
|
135
|
-
};
|
|
136
|
-
return new CreateZoomMeetingRequest(req);
|
|
137
|
-
}
|
|
138
|
-
function createMeetInstantMeetingRequest(meetingTitle, startDateTime, attendees) {
|
|
139
|
-
const start = {
|
|
140
|
-
dateTime: startDateTime.toISOString(),
|
|
141
|
-
timeZone: 'UTC'
|
|
142
|
-
};
|
|
143
|
-
const endTime = new Date(startDateTime.setMinutes(startDateTime.getMinutes() + 30));
|
|
144
|
-
const end = {
|
|
145
|
-
dateTime: endTime.toISOString(),
|
|
146
|
-
timeZone: 'UTC'
|
|
147
|
-
};
|
|
148
|
-
const conferenceData = {
|
|
149
|
-
createRequest: {
|
|
150
|
-
requestId: 'instant-meet-meeting'
|
|
151
|
-
},
|
|
152
|
-
conferenceSolution: {
|
|
153
|
-
key: {
|
|
154
|
-
type: 'eventHangout'
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
const meeting = {
|
|
159
|
-
summary: meetingTitle,
|
|
160
|
-
start: start,
|
|
161
|
-
end: end,
|
|
162
|
-
conferenceData: conferenceData,
|
|
163
|
-
attendees: attendees,
|
|
164
|
-
};
|
|
165
|
-
const req = {
|
|
166
|
-
meeting: meeting,
|
|
167
|
-
};
|
|
168
|
-
return new GoogleMeetCreateMeetingRequest(req);
|
|
169
|
-
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZ3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvY29kZWZyZXNoL3ZvbHVtZS9tZWV0aW5ncy9zZGtzL3R5cGVzY3JpcHQvc3JjL21lZXRpbmdzX3Nkay9zcmMvIiwic291cmNlcyI6WyJsaWIvbWVldGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRXRGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMseUJBQXlCLEVBQUUsZUFBZSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDdkYsT0FBTyxFQUFDLHdCQUF3QixFQUE0QixNQUFNLDBCQUEwQixDQUFDO0FBRTdGLE9BQU8sRUFBQyw4QkFBOEIsRUFBa0MsTUFBTSxpQ0FBaUMsQ0FBQztBQVFoSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0scUNBQXFDLENBQUM7Ozs7O0FBbUJ6RSxTQUFTLHVCQUF1QjtJQUM1QixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDekIsTUFBTSxnQkFBZ0IsR0FDbEIsb0VBQW9FLENBQUM7SUFFekUsSUFBSTtRQUNBLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNsQixHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxD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UyxFQUFFLHNCQUFzQjtTQUNwQztRQUNELGtCQUFrQixFQUFFO1lBQ2hCLEdBQUcsRUFBRTtnQkFDRCxJQUFJLEVBQUUsY0FBYzthQUN2QjtTQUNKO0tBQ0osQ0FBQTtJQUNELE1BQU0sT0FBTyxHQUErQjtRQUN4QyxPQUFPLEVBQUUsWUFBWTtRQUNyQixLQUFLLEVBQUUsS0FBSztRQUNaLEdBQUcsRUFBRSxHQUFHO1FBQ1IsY0FBYyxFQUFFLGNBQWM7UUFDOUIsU0FBUyxFQUFFLFNBQVM7S0FDdkIsQ0FBQTtJQUNELE1BQU0sR0FBRyxHQUE0QztRQUNqRCxPQUFPLEVBQUUsT0FBTztLQUNuQixDQUFBO0lBQ0QsT0FBTyxJQUFJLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01lZXRpbmdTb3VyY2VBUElBcGlTZXJ2aWNlfSBmcm9tICcuL19pbnRlcm5hbC9tZWV0aW5nLXNvdXJjZS1hcGkuYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHtNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlLCBNZWV0aW5nU291cmNlUXVlcnl9IGZyb20gJy4vX2ludGVybmFsL29iamVjdHMvbWVldGluZy1zb3VyY2UnXG5pbXBvcnQge01lZXRpbmdTb3VyY2V9IGZyb20gJy4vX2ludGVybmFsL2VudW1zL21lZXRpbmctc291cmNlLmVudW0nO1xuaW1wb3J0IHtab29tTWVldGluZ1JlY3VycmVuY2VUeXBlLCBab29tTWVldGluZ1R5cGV9IGZyb20gJy4vX2ludGVybmFsL2VudW1zL3pvb20uZW51bSc7XG5pbXBvcnQge0NyZWF0ZVpvb21NZWV0aW5nUmVxdWVzdCwgQ3JlYXRlWm9vbU1lZXRpbmdSZXNwb25zZX0gZnJvbSAnLi9faW50ZXJuYWwvb2JqZWN0cy96b29tJztcbmltcG9ydCB7Q3JlYXRlWm9vbU1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlLCBab29tTWVldGluZ1JlY3VycmVuY2VJbnRlcmZhY2V9IGZyb20gJy4vX2ludGVybmFsL2ludGVyZmFjZXMvem9vbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3QsIEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVzcG9uc2V9IGZyb20gJy4vX2ludGVybmFsL29iamVjdHMvZ29vZ2xlLW1lZXQnO1xuaW1wb3J0IHtcbiAgICBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGFJbnRlcmZhY2UsXG4gICAgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWVJbnRlcmZhY2UsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZUludGVyZmFjZSxcbiAgICBHb29nbGVNZWV0TWVldGluZ0ludGVyZmFjZVxufSBmcm9tICcuL19pbnRlcm5hbC9pbnRlcmZhY2VzL2dvb2dsZS1tZWV0LmludGVyZmFjZSc7XG5pbXBvcnQge1pvb21BcGlTZXJ2aWNlfSBmcm9tICcuL19pbnRlcm5hbC96b29tLmFwaS5zZXJ2aWNlJztcbmltcG9ydCB7R29vZ2xlTWVldEFwaVNlcnZpY2V9IGZyb20gJy4vX2ludGVybmFsL2dvb2dsZS1tZWV0LmFwaS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBNZWV0aW5nc1NESyB7XG4gICAgbGlzdChtZWV0aW5nU291cmNlczogTWVldGluZ1NvdXJjZVF1ZXJ5W10pOiBPYnNlcnZhYmxlPE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2U+O1xuXG4gICAgc3RhcnRJbnN0YW50TWVldGluZyhcbiAgICAgICAgbWVldGluZ1RpdGxlOiBzdHJpbmcsXG4gICAgICAgIG1lZXRpbmdBZ2VuZGE6IHN0cmluZyxcbiAgICAgICAgbWVldGluZ1NvdXJjZTogTWVldGluZ1NvdXJjZSxcbiAgICAgICAgZ01lZXRBdHRlbmRlZXM/OiBHb29nbGVNZWV0TWVldGluZ0F0dGVuZGVlSW50ZXJmYWNlW11cbiAgICApOiBPYnNlcnZhYmxlPFN0YXJ0TWVldGluZ1Jlc3BvbnNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFydE1lZXRpbmdSZXNwb25zZSB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgam9pblVSTDogc3RyaW5nO1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlTWVldGluZ1Bhc3N3b3JkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgem9vbU1heExlbmd0aCA9IDEwO1xuICAgIGNvbnN0IHpvb21BbGxvd2VkQ2hhcnMgPVxuICAgICAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlALV8qJztcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGludHMgPSBuZXcgVWludDhBcnJheSh6b29tTWF4TGVuZ3RoKTtcbiAgICAgICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhpbnRzKTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oaW50cylcbiAgICAgICAgICAgIC5tYXAoKHY6IG51bWJlcikgPT4gem9vbUFsbG93ZWRDaGFycy5jaGFyQXQodiAlIHpvb21BbGxvd2VkQ2hhcnMubGVuZ3RoKSlcbiAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VzZXIgaXMgcHJvYmFibHkgdXNpbmcgYW4gdW5zdXBwb3J0ZWQgYnJvd3Nlci4gJyArXG4gICAgICAgICAgICAnRmFsbGluZyBiYWNrIHRvIGxlc3Mgc2VjdXJlIHBhc3N3b3JkIGdlbmVyYXRpb24nLCBlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheSh6b29tTWF4TGVuZ3RoKVxuICAgICAgICAgICAgLm1hcCgoKSA9PiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB6b29tQWxsb3dlZENoYXJzLmxlbmd0aCkpXG4gICAgICAgICAgICAuam9pbignJyk7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBNZWV0aW5nc1NlcnZpY2UgaW1wbGVtZW50cyBNZWV0aW5nc1NESyB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2FwaTogTWVldGluZ1NvdXJjZUFQSUFwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgem9vbTogWm9vbUFwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVldDogR29vZ2xlTWVldEFwaVNlcnZpY2VcbiAgICApIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGlzdEZvclVzZXIgaW5zdGVhZC4gVGhpcyBtZXRob2Qgd2lsbCByZXN1bHQgaW4gdGhlIGJhY2tlbmQgZ3JhYmJpbmcgdGhlIHVzZXJJRCBmcm9tIHRoZSB1c2VyJ3MgSldUXG4gICAgICogVGhpcyB3aWxsIGV2ZW50dWFsbHkgbm8gbG9uZ2VyIGJlIHN1cHBvcnRlZCBiZWNhdXNlIGl0IGJyZWFrcyBvdXIgaW1wZXJzb25hdGlvbiB3b3JrZmxvd3MuXG4gICAgICovXG4gICAgbGlzdChtZWV0aW5nU291cmNlczogTWVldGluZ1NvdXJjZVF1ZXJ5W10pOiBPYnNlcnZhYmxlPE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwaS5saXN0KHtcbiAgICAgICAgICAgIHF1ZXJpZWRTb3VyY2VzOiBtZWV0aW5nU291cmNlc1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGxpc3RGb3JVc2VyKGlhbVVzZXJJZDogc3RyaW5nLCBxdWVyaWVkU291cmNlczogTWVldGluZ1NvdXJjZVF1ZXJ5W10pOiBPYnNlcnZhYmxlPE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwaS5saXN0KHtcbiAgICAgICAgICAgIGlhbVVzZXJJZCxcbiAgICAgICAgICAgIHF1ZXJpZWRTb3VyY2VzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGFydEluc3RhbnRNZWV0aW5nKFxuICAgICAgICBtZWV0aW5nVGl0bGU6IHN0cmluZyxcbiAgICAgICAgbWVldGluZ0FnZW5kYTogc3RyaW5nLFxuICAgICAgICBtZWV0aW5nU291cmNlOiBNZWV0aW5nU291cmNlLFxuICAgICAgICBnTWVldEF0dGVuZGVlcz86IEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWVJbnRlcmZhY2VbXVxuICAgICk6IE9ic2VydmFibGU8U3RhcnRNZWV0aW5nUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgc3dpdGNoIChtZWV0aW5nU291cmNlKSB7XG4gICAgICAgICAgICBjYXNlIE1lZXRpbmdTb3VyY2UuTUVFVElOR19TT1VSQ0VfSU5WQUxJRDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignTWVldGluZyBzb3VyY2Ugd2FzIG5vdCBzcGVjaWZpZWQnKTtcbiAgICAgICAgICAgIGNhc2UgTWVldGluZ1NvdXJjZS5NRUVUSU5HX1NPVVJDRV9aT09NOlxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcSA9IGNyZWF0ZVpvb21JbnN0YW50TWVldGluZ1JlcXVlc3QobWVldGluZ1RpdGxlLCBub3csIG1lZXRpbmdBZ2VuZGEpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnpvb20uY3JlYXRlTWVldGluZyhyZXEpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcDogQ3JlYXRlWm9vbU1lZXRpbmdSZXNwb25zZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXJ0TWVldGluZ1Jlc3BvbnNlPnt1cmw6IHJlc3Auam9pblVybCwgcGFzc3dvcmQ6IHJlc3AucGFzc3dvcmQsIGpvaW5VUkw6IHJlc3Auam9pblVybH1cbiAgICAgICAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgTWVldGluZ1NvdXJjZS5NRUVUSU5HX1NPVVJDRV9HT09HTEVfTUVFVDpcbiAgICAgICAgICAgICAgICBpZiAoIWdNZWV0QXR0ZW5kZWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdBdHRlbmRlZXMgYXJlIHJlcXVpcmVkIHRvIHN0YXJ0IGEgTWVldCBIYW5nb3V0JylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWVldFJlcSA9IGNyZWF0ZU1lZXRJbnN0YW50TWVldGluZ1JlcXVlc3QobWVldGluZ1RpdGxlLCBub3csIGdNZWV0QXR0ZW5kZWVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZWV0LmNyZWF0ZU1lZXRpbmcobWVldFJlcSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwOiBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXJ0TWVldGluZ1Jlc3BvbnNlPnt1cmw6IHJlc3AubWVldGluZy5oYW5nb3V0TGluaywgam9pblVSTDogcmVzcC5tZWV0aW5nLmhhbmdvdXRMaW5rfVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdVbnJlY29nbml6ZWQgbWVldGluZyBzb3VyY2UgJyArIG1lZXRpbmdTb3VyY2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlQmFzaWNab29tU2NoZWR1bGVkTWVldGluZyh0b3BpYzogc3RyaW5nLCBhZ2VuZGE6IHN0cmluZywgc3RhcnREYXRlVGltZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IG51bWJlciwgdGltZXpvbmU6IHN0cmluZywgbWVldGluZ1Bhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENyZWF0ZVpvb21NZWV0aW5nUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxOiBDcmVhdGVab29tTWVldGluZ1JlcXVlc3QgPSBuZXcgQ3JlYXRlWm9vbU1lZXRpbmdSZXF1ZXN0KHtcbiAgICAgICAgICAgIHRvcGljOiB0b3BpYyxcbiAgICAgICAgICAgIHR5cGU6IFpvb21NZWV0aW5nVHlwZS5aT09NX01FRVRJTkdfVFlQRV9TQ0hFRFVMRUQsXG4gICAgICAgICAgICBzdGFydFRpbWU6IHN0YXJ0RGF0ZVRpbWUsXG4gICAgICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXG4gICAgICAgICAgICB0aW1lem9uZTogdGltZXpvbmUsXG4gICAgICAgICAgICBwYXNzd29yZDogbWVldGluZ1Bhc3N3b3JkID8gbWVldGluZ1Bhc3N3b3JkIDogZ2VuZXJhdGVNZWV0aW5nUGFzc3dvcmQoKSxcbiAgICAgICAgICAgIGFnZW5kYTogYWdlbmRhLFxuICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICBqb2luQmVmb3JlSG9zdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbmZvcmNlTG9naW46IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVjdXJyZW5jZToge1xuICAgICAgICAgICAgICAgIHR5cGU6IFpvb21NZWV0aW5nUmVjdXJyZW5jZVR5cGUuWk9PTV9NRUVUSU5HX1JFQ1VSUkVOQ0VfVFlQRV9EQUlMWVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy56b29tLmNyZWF0ZU1lZXRpbmcocmVxKTtcbiAgICB9XG5cbiAgICBjcmVhdGVCYXNpY0dvb2dsZU1lZXRpbmcoXG4gICAgICAgIHRvcGljOiBzdHJpbmcsXG4gICAgICAgIGFnZW5kYTogc3RyaW5nLFxuICAgICAgICBzdGFydERhdGVUaW1lOiBzdHJpbmcsXG4gICAgICAgIGVuZERhdGVUaW1lOiBzdHJpbmcsXG4gICAgICAgIHRpbWV6b25lOiBzdHJpbmcsXG4gICAgICAgIGF0dGVuZGVlczogR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZUludGVyZmFjZVtdXG4gICAgKTogT2JzZXJ2YWJsZTxHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcTogR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXF1ZXN0ID0gbmV3IEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVxdWVzdCh7XG4gICAgICAgICAgICBtZWV0aW5nOiB7XG4gICAgICAgICAgICAgICAgYXR0ZW5kZWVzOiBhdHRlbmRlZXMsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGFnZW5kYSxcbiAgICAgICAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVGltZTogc3RhcnREYXRlVGltZSxcbiAgICAgICAgICAgICAgICAgICAgdGltZVpvbmU6IHRpbWV6b25lXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlbmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVRpbWU6IGVuZERhdGVUaW1lLFxuICAgICAgICAgICAgICAgICAgICB0aW1lWm9uZTogdGltZXpvbmVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRvcGljXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1lZXQuY3JlYXRlTWVldGluZyhyZXEpO1xuICAgIH1cblxufVxuXG5mdW5jdGlvbiBjcmVhdGVab29tSW5zdGFudE1lZXRpbmdSZXF1ZXN0KFxuICAgIG1lZXRpbmdUaXRsZTogc3RyaW5nLCBub3c6IERhdGUsIG1lZXRpbmdBZ2VuZGE6IHN0cmluZyxcbik6IENyZWF0ZVpvb21NZWV0aW5nUmVxdWVzdCB7XG4gICAgY29uc3QgcmVjdXJyZW5jZTogWm9vbU1lZXRpbmdSZWN1cnJlbmNlSW50ZXJmYWNlID0ge1xuICAgICAgICB0eXBlOiBab29tTWVldGluZ1JlY3VycmVuY2VUeXBlLlpPT01fTUVFVElOR19SRUNVUlJFTkNFX1RZUEVfREFJTFksXG4gICAgICAgIHJlcGVhdEludGVydmFsOiAwLFxuICAgIH07XG4gICAgY29uc3QgcmVxOiBDcmVhdGVab29tTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UgPSB7XG4gICAgICAgIHRvcGljOiBtZWV0aW5nVGl0bGUsXG4gICAgICAgIHR5cGU6IFpvb21NZWV0aW5nVHlwZS5aT09NX01FRVRJTkdfVFlQRV9JTlNUQU5ULFxuICAgICAgICBzdGFydFRpbWU6IG5vdy50b0lTT1N0cmluZygpLFxuICAgICAgICBkdXJhdGlvbjogdW5kZWZpbmVkLCAvLyBPbmx5IHVzZWQgd2l0aCBzY2hlZHVsZWQgbWVldGluZ3NcbiAgICAgICAgdGltZXpvbmU6ICdVVEMnLFxuICAgICAgICBwYXNzd29yZDogZ2VuZXJhdGVNZWV0aW5nUGFzc3dvcmQoKSxcbiAgICAgICAgYWdlbmRhOiBtZWV0aW5nQWdlbmRhLFxuICAgICAgICB0cmFja2luZ0ZpZWxkczogW10sXG4gICAgICAgIHJlY3VycmVuY2U6IHJlY3VycmVuY2UsXG4gICAgICAgIHNldHRpbmdzOiB1bmRlZmluZWQsIC8vIE9ubHkgdXNlZCB3aXRoIHJlY3VycmluZyBtZWV0aW5nc1xuICAgIH07XG4gICAgcmV0dXJuIG5ldyBDcmVhdGVab29tTWVldGluZ1JlcXVlc3QocmVxKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTWVldEluc3RhbnRNZWV0aW5nUmVxdWVzdChcbiAgICBtZWV0aW5nVGl0bGU6IHN0cmluZywgc3RhcnREYXRlVGltZTogRGF0ZSwgYXR0ZW5kZWVzOiBHb29nbGVNZWV0TWVldGluZ0F0dGVuZGVlSW50ZXJmYWNlW10sXG4pOiBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3Qge1xuICAgIGNvbnN0IHN0YXJ0OiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lSW50ZXJmYWNlID0ge1xuICAgICAgICBkYXRlVGltZTogc3RhcnREYXRlVGltZS50b0lTT1N0cmluZygpLFxuICAgICAgICB0aW1lWm9uZTogJ1VUQydcbiAgICB9XG4gICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKHN0YXJ0RGF0ZVRpbWUuc2V0TWludXRlcyhzdGFydERhdGVUaW1lLmdldE1pbnV0ZXMoKSArIDMwKSk7XG4gICAgY29uc3QgZW5kOiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lSW50ZXJmYWNlID0ge1xuICAgICAgICBkYXRlVGltZTogZW5kVGltZS50b0lTT1N0cmluZygpLFxuICAgICAgICB0aW1lWm9uZTogJ1VUQydcbiAgICB9XG4gICAgY29uc3QgY29uZmVyZW5jZURhdGE6IEdvb2dsZU1lZXRDb25mZXJlbmNlRGF0YUludGVyZmFjZSA9IHtcbiAgICAgICAgY3JlYXRlUmVxdWVzdDoge1xuICAgICAgICAgICAgcmVxdWVzdElkOiAnaW5zdGFudC1tZWV0LW1lZXRpbmcnXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZlcmVuY2VTb2x1dGlvbjoge1xuICAgICAgICAgICAga2V5OiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2V2ZW50SGFuZ291dCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBtZWV0aW5nOiBHb29nbGVNZWV0TWVldGluZ0ludGVyZmFjZSA9IHtcbiAgICAgICAgc3VtbWFyeTogbWVldGluZ1RpdGxlLFxuICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgIGVuZDogZW5kLFxuICAgICAgICBjb25mZXJlbmNlRGF0YTogY29uZmVyZW5jZURhdGEsXG4gICAgICAgIGF0dGVuZGVlczogYXR0ZW5kZWVzLFxuICAgIH1cbiAgICBjb25zdCByZXE6IEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVxdWVzdEludGVyZmFjZSA9IHtcbiAgICAgICAgbWVldGluZzogbWVldGluZyxcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3QocmVxKTtcbn1cbiJdfQ==
|