@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.
Files changed (180) hide show
  1. package/esm2020/lib/_generated/host.service.mjs +25 -0
  2. package/esm2020/lib/_internal/enums/dayofweek.enum.mjs +18 -0
  3. package/esm2020/lib/_internal/enums/index.mjs +11 -0
  4. package/esm2020/lib/_internal/enums/meeting-source.enum.mjs +20 -0
  5. package/esm2020/lib/_internal/enums/shared.enum.mjs +21 -0
  6. package/{esm2015/lib/_internal/enums/zoom.enum.js → esm2020/lib/_internal/enums/zoom.enum.mjs} +1 -1
  7. package/esm2020/lib/_internal/google-meet.api.service.mjs +41 -0
  8. package/esm2020/lib/_internal/index.mjs +15 -0
  9. package/esm2020/lib/_internal/interfaces/date-range.interface.mjs +8 -0
  10. package/esm2020/lib/_internal/interfaces/datetime.interface.mjs +8 -0
  11. package/esm2020/lib/_internal/interfaces/dayofweek.interface.mjs +8 -0
  12. package/esm2020/lib/_internal/interfaces/field-mask.interface.mjs +8 -0
  13. package/esm2020/lib/_internal/interfaces/google-meet.interface.mjs +8 -0
  14. package/esm2020/lib/_internal/interfaces/index.mjs +2 -0
  15. package/esm2020/lib/_internal/interfaces/meeting-guest.interface.mjs +2 -0
  16. package/esm2020/lib/_internal/interfaces/meeting-host.interface.mjs +2 -0
  17. package/esm2020/lib/_internal/interfaces/meeting-source.interface.mjs +8 -0
  18. package/esm2020/lib/_internal/interfaces/meeting-type.interface.mjs +8 -0
  19. package/esm2020/lib/_internal/interfaces/shared.interface.mjs +2 -0
  20. package/esm2020/lib/_internal/interfaces/timeofday.interface.mjs +8 -0
  21. package/esm2020/lib/_internal/interfaces/zoom.interface.mjs +8 -0
  22. package/esm2020/lib/_internal/meeting-guest.api.service.mjs +84 -0
  23. package/esm2020/lib/_internal/meeting-host.api.service.mjs +170 -0
  24. package/esm2020/lib/_internal/meeting-source-api.api.service.mjs +41 -0
  25. package/esm2020/lib/_internal/objects/date-range.mjs +36 -0
  26. package/esm2020/lib/_internal/objects/datetime.mjs +77 -0
  27. package/esm2020/lib/_internal/objects/dayofweek.mjs +7 -0
  28. package/esm2020/lib/_internal/objects/field-mask.mjs +27 -0
  29. package/esm2020/lib/_internal/objects/google-meet.mjs +539 -0
  30. package/esm2020/lib/_internal/objects/index.mjs +18 -0
  31. package/esm2020/lib/_internal/objects/meeting-guest.mjs +511 -0
  32. package/esm2020/lib/_internal/objects/meeting-host.mjs +1485 -0
  33. package/esm2020/lib/_internal/objects/meeting-source.mjs +121 -0
  34. package/esm2020/lib/_internal/objects/meeting-type.mjs +119 -0
  35. package/esm2020/lib/_internal/objects/shared.mjs +426 -0
  36. package/esm2020/lib/_internal/objects/timeofday.mjs +36 -0
  37. package/esm2020/lib/_internal/objects/zoom.mjs +377 -0
  38. package/esm2020/lib/_internal/zoom.api.service.mjs +41 -0
  39. package/esm2020/lib/guest/guest.service.mjs +86 -0
  40. package/esm2020/lib/guest/index.mjs +2 -0
  41. package/esm2020/lib/host/host.service.mjs +308 -0
  42. package/esm2020/lib/host/url.mjs +39 -0
  43. package/esm2020/lib/index.mjs +8 -0
  44. package/esm2020/lib/meetings.service.mjs +168 -0
  45. package/esm2020/lib/shared/availability.mjs +2 -0
  46. package/esm2020/lib/shared/calendar.mjs +29 -0
  47. package/esm2020/lib/shared/duration.mjs +41 -0
  48. package/esm2020/lib/shared/environment.mjs +17 -0
  49. package/esm2020/lib/shared/fieldmask.mjs +6 -0
  50. package/esm2020/lib/shared/host-id.mjs +20 -0
  51. package/esm2020/lib/shared/host-url-map.mjs +2 -0
  52. package/esm2020/lib/shared/host-user.mjs +8 -0
  53. package/esm2020/lib/shared/host.mjs +8 -0
  54. package/esm2020/lib/shared/index.mjs +14 -0
  55. package/esm2020/lib/shared/meeting-type.mjs +60 -0
  56. package/esm2020/lib/shared/meeting.mjs +89 -0
  57. package/esm2020/lib/shared/paged-response.mjs +8 -0
  58. package/esm2020/lib/shared/preferences.mjs +12 -0
  59. package/esm2020/lib/shared/time-span.mjs +7 -0
  60. package/esm2020/public_api.mjs +2 -0
  61. package/esm2020/vendasta-meetings.mjs +5 -0
  62. package/fesm2015/{vendasta-meetings.js → vendasta-meetings.mjs} +554 -1264
  63. package/fesm2015/vendasta-meetings.mjs.map +1 -0
  64. package/fesm2020/vendasta-meetings.mjs +5086 -0
  65. package/fesm2020/vendasta-meetings.mjs.map +1 -0
  66. package/lib/_generated/host.service.d.ts +5 -9
  67. package/lib/_internal/google-meet.api.service.d.ts +4 -0
  68. package/lib/_internal/index.d.ts +3 -3
  69. package/lib/_internal/interfaces/meeting-host.interface.d.ts +2 -1
  70. package/lib/_internal/interfaces/meeting-source.interface.d.ts +1 -1
  71. package/lib/_internal/interfaces/meeting-type.interface.d.ts +1 -1
  72. package/lib/_internal/interfaces/shared.interface.d.ts +1 -1
  73. package/lib/_internal/interfaces/zoom.interface.d.ts +1 -1
  74. package/lib/_internal/meeting-guest.api.service.d.ts +4 -0
  75. package/lib/_internal/meeting-host.api.service.d.ts +4 -0
  76. package/lib/_internal/meeting-source-api.api.service.d.ts +4 -0
  77. package/lib/_internal/objects/date-range.d.ts +1 -1
  78. package/lib/_internal/objects/datetime.d.ts +1 -1
  79. package/lib/_internal/objects/field-mask.d.ts +1 -1
  80. package/lib/_internal/objects/google-meet.d.ts +1 -1
  81. package/lib/_internal/objects/meeting-guest.d.ts +1 -1
  82. package/lib/_internal/objects/meeting-host.d.ts +3 -2
  83. package/lib/_internal/objects/meeting-source.d.ts +2 -2
  84. package/lib/_internal/objects/meeting-type.d.ts +2 -2
  85. package/lib/_internal/objects/shared.d.ts +2 -2
  86. package/lib/_internal/objects/timeofday.d.ts +1 -1
  87. package/lib/_internal/objects/zoom.d.ts +2 -2
  88. package/lib/_internal/zoom.api.service.d.ts +4 -0
  89. package/lib/guest/guest.service.d.ts +5 -4
  90. package/lib/guest/index.d.ts +0 -1
  91. package/lib/host/host.service.d.ts +7 -6
  92. package/lib/host/url.d.ts +1 -1
  93. package/lib/index.d.ts +1 -4
  94. package/lib/meetings.service.d.ts +3 -0
  95. package/lib/shared/availability.d.ts +2 -2
  96. package/lib/shared/calendar.d.ts +1 -1
  97. package/lib/shared/environment.d.ts +8 -0
  98. package/lib/shared/fieldmask.d.ts +1 -1
  99. package/lib/shared/host.d.ts +1 -1
  100. package/lib/shared/meeting-type.d.ts +2 -2
  101. package/lib/shared/meeting.d.ts +2 -2
  102. package/lib/shared/preferences.d.ts +3 -3
  103. package/lib/shared/time-span.d.ts +1 -1
  104. package/package.json +26 -15
  105. package/public_api.d.ts +1 -1
  106. package/src/README.md +12 -0
  107. package/vendasta-meetings.d.ts +1 -10
  108. package/bundles/vendasta-meetings.umd.js +0 -6217
  109. package/bundles/vendasta-meetings.umd.js.map +0 -1
  110. package/bundles/vendasta-meetings.umd.min.js +0 -16
  111. package/bundles/vendasta-meetings.umd.min.js.map +0 -1
  112. package/esm2015/lib/_generated/host.service.js +0 -62
  113. package/esm2015/lib/_internal/enums/dayofweek.enum.js +0 -18
  114. package/esm2015/lib/_internal/enums/index.js +0 -11
  115. package/esm2015/lib/_internal/enums/meeting-source.enum.js +0 -20
  116. package/esm2015/lib/_internal/enums/shared.enum.js +0 -21
  117. package/esm2015/lib/_internal/google-meet.api.service.js +0 -38
  118. package/esm2015/lib/_internal/index.js +0 -15
  119. package/esm2015/lib/_internal/interfaces/date-range.interface.js +0 -8
  120. package/esm2015/lib/_internal/interfaces/datetime.interface.js +0 -8
  121. package/esm2015/lib/_internal/interfaces/dayofweek.interface.js +0 -8
  122. package/esm2015/lib/_internal/interfaces/field-mask.interface.js +0 -8
  123. package/esm2015/lib/_internal/interfaces/google-meet.interface.js +0 -8
  124. package/esm2015/lib/_internal/interfaces/index.js +0 -2
  125. package/esm2015/lib/_internal/interfaces/meeting-guest.interface.js +0 -2
  126. package/esm2015/lib/_internal/interfaces/meeting-host.interface.js +0 -2
  127. package/esm2015/lib/_internal/interfaces/meeting-source.interface.js +0 -8
  128. package/esm2015/lib/_internal/interfaces/meeting-type.interface.js +0 -8
  129. package/esm2015/lib/_internal/interfaces/shared.interface.js +0 -2
  130. package/esm2015/lib/_internal/interfaces/timeofday.interface.js +0 -8
  131. package/esm2015/lib/_internal/interfaces/zoom.interface.js +0 -8
  132. package/esm2015/lib/_internal/meeting-guest.api.service.js +0 -81
  133. package/esm2015/lib/_internal/meeting-host.api.service.js +0 -167
  134. package/esm2015/lib/_internal/meeting-source-api.api.service.js +0 -38
  135. package/esm2015/lib/_internal/meetings.module.js +0 -33
  136. package/esm2015/lib/_internal/objects/date-range.js +0 -40
  137. package/esm2015/lib/_internal/objects/datetime.js +0 -92
  138. package/esm2015/lib/_internal/objects/dayofweek.js +0 -7
  139. package/esm2015/lib/_internal/objects/field-mask.js +0 -30
  140. package/esm2015/lib/_internal/objects/google-meet.js +0 -646
  141. package/esm2015/lib/_internal/objects/index.js +0 -18
  142. package/esm2015/lib/_internal/objects/meeting-guest.js +0 -591
  143. package/esm2015/lib/_internal/objects/meeting-host.js +0 -1699
  144. package/esm2015/lib/_internal/objects/meeting-source.js +0 -139
  145. package/esm2015/lib/_internal/objects/meeting-type.js +0 -142
  146. package/esm2015/lib/_internal/objects/shared.js +0 -504
  147. package/esm2015/lib/_internal/objects/timeofday.js +0 -42
  148. package/esm2015/lib/_internal/objects/zoom.js +0 -456
  149. package/esm2015/lib/_internal/zoom.api.service.js +0 -38
  150. package/esm2015/lib/guest/guest.module.js +0 -16
  151. package/esm2015/lib/guest/guest.service.js +0 -82
  152. package/esm2015/lib/guest/index.js +0 -3
  153. package/esm2015/lib/host/host.module.js +0 -16
  154. package/esm2015/lib/host/host.service.js +0 -283
  155. package/esm2015/lib/host/url.js +0 -39
  156. package/esm2015/lib/index.js +0 -11
  157. package/esm2015/lib/meetings.module.js +0 -22
  158. package/esm2015/lib/meetings.service.js +0 -165
  159. package/esm2015/lib/shared/availability.js +0 -2
  160. package/esm2015/lib/shared/calendar.js +0 -29
  161. package/esm2015/lib/shared/duration.js +0 -41
  162. package/esm2015/lib/shared/fieldmask.js +0 -6
  163. package/esm2015/lib/shared/host-id.js +0 -20
  164. package/esm2015/lib/shared/host-url-map.js +0 -2
  165. package/esm2015/lib/shared/host-user.js +0 -8
  166. package/esm2015/lib/shared/host.js +0 -8
  167. package/esm2015/lib/shared/index.js +0 -14
  168. package/esm2015/lib/shared/meeting-type.js +0 -52
  169. package/esm2015/lib/shared/meeting.js +0 -89
  170. package/esm2015/lib/shared/paged-response.js +0 -8
  171. package/esm2015/lib/shared/preferences.js +0 -12
  172. package/esm2015/lib/shared/time-span.js +0 -7
  173. package/esm2015/public_api.js +0 -2
  174. package/esm2015/vendasta-meetings.js +0 -12
  175. package/fesm2015/vendasta-meetings.js.map +0 -1
  176. package/lib/_internal/meetings.module.d.ts +0 -2
  177. package/lib/guest/guest.module.d.ts +0 -2
  178. package/lib/host/host.module.d.ts +0 -2
  179. package/lib/meetings.module.d.ts +0 -2
  180. package/vendasta-meetings.metadata.json +0 -1
@@ -1,82 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { MeetingGuestApiService } from '../_internal/index';
3
- import { map, mapTo } from 'rxjs/operators';
4
- import { answersToAPI, CalendarFromApi, HostFromApi, MeetingTypeFromApi, TimeSpanFromApi } from '../shared';
5
- import { EnvironmentServiceInterfaceToken } from '@vendasta/core';
6
- export class GuestService {
7
- constructor(guestAPIService, environmentService) {
8
- this.guestAPIService = guestAPIService;
9
- this.environmentService = environmentService;
10
- }
11
- getMeetingType(req) {
12
- return this.guestAPIService.getMeetingType(req).pipe(map(resp => {
13
- if (!resp || !resp.meetingType) {
14
- return {};
15
- }
16
- return MeetingTypeFromApi({
17
- environment: this.environmentService.getEnvironment(),
18
- calendarId: req.calendarSlug,
19
- meetingTypeApi: resp.meetingType,
20
- metadata: req.metadata,
21
- calendarSlug: req.calendarSlug,
22
- });
23
- }));
24
- }
25
- listMeetingTypes(req) {
26
- return this.guestAPIService.listMeetingTypes(req).pipe(map(resp => {
27
- if (!resp || !resp.meetingTypes) {
28
- return [];
29
- }
30
- return resp.meetingTypes.map(mt => {
31
- return MeetingTypeFromApi({
32
- environment: this.environmentService.getEnvironment(),
33
- calendarId: req.hostId,
34
- meetingTypeApi: mt,
35
- metadata: req.metadata,
36
- calendarSlug: req.calendarSlug,
37
- });
38
- });
39
- }));
40
- }
41
- listAvailableTimeSlots(req) {
42
- return this.guestAPIService.listAvailableTimeSlots(req).pipe(map(resp => resp.timeSlots ? resp.timeSlots.map(ts => TimeSpanFromApi(ts)) : []));
43
- }
44
- bookMeeting(req) {
45
- return this.guestAPIService.bookMeeting(Object.assign(Object.assign({}, req), { attendees: req.attendees, formAnswers: answersToAPI(req.formAnswers) })).pipe(map((resp) => resp));
46
- }
47
- cancelMeeting(req) {
48
- return this.guestAPIService.cancelMeeting(req).pipe(mapTo(null));
49
- }
50
- rescheduleMeeting(req) {
51
- return this.guestAPIService.rescheduleMeeting(req).pipe(mapTo(null));
52
- }
53
- // getHost returns an individual host by their hostId
54
- getHost(req) {
55
- return this.guestAPIService.getHost(req).pipe(map(resp => HostFromApi(resp.host)));
56
- }
57
- // getCalendar returns a Calendar, which may represent an individual host OR a grouping of hosts (I.e., a team)
58
- getCalendar(req) {
59
- return this.guestAPIService.getCalendar(req).pipe(map(resp => CalendarFromApi(resp.calendar)));
60
- }
61
- getBookedMeetingInfo(meetingId, authToken) {
62
- return this.guestAPIService.getGuestBookedMeeting({
63
- meetingId: meetingId, authToken: authToken,
64
- }).pipe(map(resp => ({
65
- start: resp.startTime,
66
- end: resp.endTime,
67
- timeZone: resp.timeZone,
68
- meetingTypeId: resp.meetingTypeId
69
- })));
70
- }
71
- isHostConfigured(req) {
72
- return this.guestAPIService.isHostConfigured(req).pipe(map((resp) => resp.isConfigured));
73
- }
74
- }
75
- GuestService.decorators = [
76
- { type: Injectable }
77
- ];
78
- GuestService.ctorParameters = () => [
79
- { type: MeetingGuestApiService },
80
- { type: undefined, decorators: [{ type: Inject, args: [EnvironmentServiceInterfaceToken,] }] }
81
- ];
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Vlc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvY29kZWZyZXNoL3ZvbHVtZS9tZWV0aW5ncy9zZGtzL3R5cGVzY3JpcHQvc3JjL21lZXRpbmdzX3Nkay9zcmMvIiwic291cmNlcyI6WyJsaWIvZ3Vlc3QvZ3Vlc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBSUgsc0JBQXNCLEVBRXpCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQ0gsWUFBWSxFQUNaLGVBQWUsRUFFZixXQUFXLEVBSVgsa0JBQWtCLEVBRWxCLGVBQWUsRUFDbEIsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUE4QixnQ0FBZ0MsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBNEI3RixNQUFNLE9BQU8sWUFBWTtJQUVyQixZQUNZLGVBQXVDLEVBQ1ksa0JBQStDO1FBRGxHLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUNZLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBNkI7SUFDM0csQ0FBQztJQUVKLGNBQWMsQ0FBQyxHQUlkO1FBQ0csT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNQLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUM1QixPQUFPLEVBQWlCLENBQUM7YUFDNUI7WUFDRCxPQUFPLGtCQUFrQixDQUFDO2dCQUN0QixXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRTtnQkFDckQsVUFBVSxFQUFFLEdBQUcsQ0FBQyxZQUFZO2dCQUM1QixjQUFjLEVBQUUsSUFBSSxD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QWlCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQztZQUM5QyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTO1NBQzdDLENBQUMsQ0FBQyxJQUFJLENBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBb0I7WUFDNUIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3JCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTztZQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ25DLENBQUEsQ0FBQyxDQUNOLENBQUE7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBdUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDbEQsR0FBRyxDQUFDLENBQUMsSUFBbUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUNsRSxDQUFDO0lBQ04sQ0FBQzs7O1lBdEhKLFVBQVU7OztZQTVDUCxzQkFBc0I7NENBaURqQixNQUFNLFNBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDYWxlbmRhckludGVyZmFjZSxcbiAgICBDb250YWN0LFxuICAgIEd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlLFxuICAgIE1lZXRpbmdHdWVzdEFwaVNlcnZpY2UsXG4gICAgVGltZVpvbmVJbnRlcmZhY2Vcbn0gZnJvbSAnLi4vX2ludGVybmFsL2luZGV4JztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgbWFwVG99IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgYW5zd2Vyc1RvQVBJLFxuICAgIENhbGVuZGFyRnJvbUFwaSxcbiAgICBIb3N0LFxuICAgIEhvc3RGcm9tQXBpLFxuICAgIE1lZXRpbmdGb3JtLFxuICAgIE1lZXRpbmdNZXRhZGF0YSxcbiAgICBNZWV0aW5nVHlwZSxcbiAgICBNZWV0aW5nVHlwZUZyb21BcGksXG4gICAgVGltZVNwYW4sXG4gICAgVGltZVNwYW5Gcm9tQXBpXG59IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQge0Vudmlyb25tZW50U2VydmljZUludGVyZmFjZSwgRW52aXJvbm1lbnRTZXJ2aWNlSW50ZXJmYWNlVG9rZW59IGZyb20gJ0B2ZW5kYXN0YS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBCb29rTWVldGluZ1Jlc3BvbnNlIHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBob3N0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb29rZWRNZWV0aW5nSW5mbyB7XG4gICAgc3RhcnQ6IERhdGU7XG4gICAgZW5kOiBEYXRlO1xuICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZTtcbiAgICBtZWV0aW5nVHlwZUlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3Vlc3RTZXJ2aWNlSW50ZXJmYWNlIHtcbiAgICBnZXRCb29rZWRNZWV0aW5nSW5mbyhtZWV0aW5nSWQ6IHN0cmluZywgYXV0aFRva2VuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEJvb2tlZE1lZXRpbmdJbmZvPlxuXG4gICAgbGlzdE1lZXRpbmdUeXBlcyhyZXE6IHtcbiAgICAgICAgaG9zdElkOiBzdHJpbmcsXG4gICAgICAgIHRpbWVab25lPzogVGltZVpvbmVJbnRlcmZhY2UsXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIHNsdWc/OiBzdHJpbmcsXG4gICAgfSk6IE9ic2VydmFibGU8TWVldGluZ1R5cGVbXT5cblxuICAgIGlzSG9zdENvbmZpZ3VyZWQocmVxOiB7IGhvc3RJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHdWVzdFNlcnZpY2UgaW1wbGVtZW50cyBHdWVzdFNlcnZpY2VJbnRlcmZhY2Uge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZ3Vlc3RBUElTZXJ2aWNlOiBNZWV0aW5nR3Vlc3RBcGlTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEVudmlyb25tZW50U2VydmljZUludGVyZmFjZVRva2VuKSBwcml2YXRlIHJlYWRvbmx5IGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlSW50ZXJmYWNlLFxuICAgICkge31cblxuICAgIGdldE1lZXRpbmdUeXBlKHJlcToge1xuICAgICAgICBjYWxlbmRhclNsdWc6IHN0cmluZyxcbiAgICAgICAgbWVldGluZ1R5cGVTbHVnOiBzdHJpbmcsXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgfSk6IE9ic2VydmFibGU8TWVldGluZ1R5cGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3Vlc3RBUElTZXJ2aWNlLmdldE1lZXRpbmdUeXBlKHJlcSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3AgfHwgIXJlc3AubWVldGluZ1R5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt9IGFzIE1lZXRpbmdUeXBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEVudmlyb25tZW50KCksXG4gICAgICAgICAgICAgICAgICAgIGNhbGVuZGFySWQ6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiByZXNwLm1lZXRpbmdUeXBlLFxuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YTogcmVxLm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGxpc3RNZWV0aW5nVHlwZXMocmVxOiB7XG4gICAgICAgIGhvc3RJZDogc3RyaW5nLFxuICAgICAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICAgICAvLyBkZXByZWNhdGVkOiB1bnVzZWQgZmllbGQuXG4gICAgICAgIHRpbWVab25lPzogVGltZVpvbmVJbnRlcmZhY2UsXG4gICAgICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZyxcbiAgICB9KTogT2JzZXJ2YWJsZTxNZWV0aW5nVHlwZVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmd1ZXN0QVBJU2VydmljZS5saXN0TWVldGluZ1R5cGVzKHJlcSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3AgfHwgIXJlc3AubWVldGluZ1R5cGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3AubWVldGluZ1R5cGVzLm1hcChtdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBNZWV0aW5nVHlwZUZyb21BcGkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEVudmlyb25tZW50KCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhcklkOiByZXEuaG9zdElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ1R5cGVBcGk6IG10LFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGE6IHJlcS5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyU2x1ZzogcmVxLmNhbGVuZGFyU2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgbGlzdEF2YWlsYWJsZVRpbWVTbG90cyhyZXE6IHtcbiAgICAgICAgaG9zdElkOiBzdHJpbmcsXG4gICAgICAgIG1lZXRpbmdUeXBlSWQ6IHN0cmluZyxcbiAgICAgICAgdGltZVNwYW46IFRpbWVTcGFuLFxuICAgICAgICB0aW1lWm9uZTogVGltZVpvbmVJbnRlcmZhY2VcbiAgICB9KTogT2JzZXJ2YWJsZTxUaW1lU3BhbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmd1ZXN0QVBJU2VydmljZS5saXN0QXZhaWxhYmxlVGltZVNsb3RzKHJlcSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHJlc3AudGltZVNsb3RzID8gcmVzcC50aW1lU2xvdHMubWFwKHRzID0+IFRpbWVTcGFuRnJvbUFwaSh0cykpIDogW10pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBib29rTWVldGluZyhyZXE6IHtcbiAgICAgICAgICAgICAgICAgICAgaG9zdElkOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IERhdGUsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGE/OiBNZWV0aW5nTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIGF0dGVuZGVlczogKE9taXQ8Q29udGFjdCwgJ2Zyb21Qcm90bycgfCAndG9BcGlKc29uJyB8ICdjb25zdHJ1Y3RvcicgfCAndGltZVpvbmUnPiAmIHsgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlIH0pW10sXG4gICAgICAgICAgICAgICAgICAgIGZvcm1BbnN3ZXJzPzogTWVldGluZ0Zvcm0sXG4gICAgICAgICAgICAgICAgICAgIHJlY2FwdGNoYVRva2VuOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgfVxuICAgICk6IE9ic2VydmFibGU8Qm9va01lZXRpbmdSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ndWVzdEFQSVNlcnZpY2UuYm9va01lZXRpbmcoe1xuICAgICAgICAgICAgLi4ucmVxLFxuICAgICAgICAgICAgYXR0ZW5kZWVzOiByZXEuYXR0ZW5kZWVzLFxuICAgICAgICAgICAgZm9ybUFuc3dlcnM6IGFuc3dlcnNUb0FQSShyZXEuZm9ybUFuc3dlcnMpLFxuICAgICAgICB9KS5waXBlKG1hcCgocmVzcDogYW55KSA9PiByZXNwIGFzIEJvb2tNZWV0aW5nUmVzcG9uc2UpKTtcbiAgICB9XG5cbiAgICBjYW5jZWxNZWV0aW5nKHJlcTogeyBhdXRoVG9rZW46IHN0cmluZywgbWVldGluZ0lkOiBzdHJpbmcsIGNhbmNlbGxhdGlvblJlYXNvbjogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3Vlc3RBUElTZXJ2aWNlLmNhbmNlbE1lZXRpbmcocmVxKS5waXBlKG1hcFRvKG51bGwpKTtcbiAgICB9XG5cbiAgICByZXNjaGVkdWxlTWVldGluZyhyZXE6IHsgYXV0aFRva2VuOiBzdHJpbmcsIG1lZXRpbmdJZDogc3RyaW5nLCBzdGFydDogRGF0ZSwgdGltZVpvbmU/OiBUaW1lWm9uZUludGVyZmFjZSB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmd1ZXN0QVBJU2VydmljZS5yZXNjaGVkdWxlTWVldGluZyhyZXEpLnBpcGUobWFwVG8obnVsbCkpO1xuICAgIH1cblxuICAgIC8vIGdldEhvc3QgcmV0dXJucyBhbiBpbmRpdmlkdWFsIGhvc3QgYnkgdGhlaXIgaG9zdElkXG4gICAgZ2V0SG9zdChyZXE6IHsgaG9zdElkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8SG9zdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ndWVzdEFQSVNlcnZpY2UuZ2V0SG9zdChyZXEpLnBpcGUobWFwKHJlc3AgPT4gSG9zdEZyb21BcGkocmVzcC5ob3N0KSkpXG4gICAgfVxuXG4gICAgLy8gZ2V0Q2FsZW5kYXIgcmV0dXJucyBhIENhbGVuZGFyLCB3aGljaCBtYXkgcmVwcmVzZW50IGFuIGluZGl2aWR1YWwgaG9zdCBPUiBhIGdyb3VwaW5nIG9mIGhvc3RzIChJLmUuLCBhIHRlYW0pXG4gICAgZ2V0Q2FsZW5kYXIocmVxOiB7IGNhbGVuZGFySWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxDYWxlbmRhckludGVyZmFjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ndWVzdEFQSVNlcnZpY2UuZ2V0Q2FsZW5kYXIocmVxKS5waXBlKG1hcChyZXNwID0+IENhbGVuZGFyRnJvbUFwaShyZXNwLmNhbGVuZGFyKSkpXG4gICAgfVxuXG4gICAgZ2V0Qm9va2VkTWVldGluZ0luZm8obWVldGluZ0lkOiBzdHJpbmcsIGF1dGhUb2tlbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxCb29rZWRNZWV0aW5nSW5mbz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ndWVzdEFQSVNlcnZpY2UuZ2V0R3Vlc3RCb29rZWRNZWV0aW5nKHtcbiAgICAgICAgICAgIG1lZXRpbmdJZDogbWVldGluZ0lkLCBhdXRoVG9rZW46IGF1dGhUb2tlbixcbiAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwID0+ICg8Qm9va2VkTWVldGluZ0luZm8+e1xuICAgICAgICAgICAgICAgIHN0YXJ0OiByZXNwLnN0YXJ0VGltZSxcbiAgICAgICAgICAgICAgICBlbmQ6IHJlc3AuZW5kVGltZSxcbiAgICAgICAgICAgICAgICB0aW1lWm9uZTogcmVzcC50aW1lWm9uZSxcbiAgICAgICAgICAgICAgICBtZWV0aW5nVHlwZUlkOiByZXNwLm1lZXRpbmdUeXBlSWRcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgaXNIb3N0Q29uZmlndXJlZChyZXE6IHsgaG9zdElkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ndWVzdEFQSVNlcnZpY2UuaXNIb3N0Q29uZmlndXJlZChyZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3A6IEd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlKSA9PiByZXNwLmlzQ29uZmlndXJlZClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './guest.service';
2
- export * from './guest.module';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL2NvZGVmcmVzaC92b2x1bWUvbWVldGluZ3Mvc2Rrcy90eXBlc2NyaXB0L3NyYy9tZWV0aW5nc19zZGsvc3JjLyIsInNvdXJjZXMiOlsibGliL2d1ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ3Vlc3Quc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vZ3Vlc3QubW9kdWxlJ1xuIl19
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { HostService } from './host.service';
3
- import { MeetingsInternalModule } from '../_internal/meetings.module';
4
- export class HostModule {
5
- }
6
- HostModule.decorators = [
7
- { type: NgModule, args: [{
8
- imports: [
9
- MeetingsInternalModule,
10
- ],
11
- providers: [
12
- HostService
13
- ]
14
- },] }
15
- ];
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiL2NvZGVmcmVzaC92b2x1bWUvbWVldGluZ3Mvc2Rrcy90eXBlc2NyaXB0L3NyYy9tZWV0aW5nc19zZGsvc3JjLyIsInNvdXJjZXMiOlsibGliL2hvc3QvaG9zdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFVcEUsTUFBTSxPQUFPLFVBQVU7OztZQVJ0QixRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFFO29CQUNMLHNCQUFzQjtpQkFDekI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNQLFdBQVc7aUJBQ2Q7YUFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0hvc3RTZXJ2aWNlfSBmcm9tICcuL2hvc3Quc2VydmljZSc7XG5pbXBvcnQge01lZXRpbmdzSW50ZXJuYWxNb2R1bGV9IGZyb20gJy4uL19pbnRlcm5hbC9tZWV0aW5ncy5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTWVldGluZ3NJbnRlcm5hbE1vZHVsZSxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBIb3N0U2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgSG9zdE1vZHVsZSB7fVxuIl19
@@ -1,283 +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/index';
5
- import { CalendarFromApi, getFieldMask, meetingFromApi, MeetingTypeFromApi, MeetingTypeToApi, PagedResponse, PreferencesFromApi } from '../shared/index';
6
- import { EnvironmentServiceInterfaceToken } from '@vendasta/core';
7
- import { getBookingUrlImplementation, getGeneralBookingUrlImplementation } from './url';
8
- import { hostUserFromApi } from '../shared/host-user';
9
- export class HostService {
10
- constructor(hostAPIService, environmentService) {
11
- this.hostAPIService = hostAPIService;
12
- this.environmentService = environmentService;
13
- }
14
- // Use buildHostId to get an identifier that can be used in subsequent requests. See vendastaapis for more details
15
- buildHostId(req) {
16
- return this.hostAPIService.buildHostId({
17
- userId: req.userId,
18
- // Gross typecast exists because I want to restrict the properties on the map (for now).
19
- applicationContextProperties: req.applicationContextProperties
20
- }).pipe(map(res => res.hostId || ''));
21
- }
22
- doesCalendarExist(calendarIdentifier) {
23
- return this.hostAPIService.doesCalendarExist({ calendarIdentifier: calendarIdentifier }).pipe(map(resp => resp.exists));
24
- }
25
- getCalendar(req) {
26
- return this.hostAPIService.getCalendar({ calendarId: req.calendarId }).pipe(map(res => CalendarFromApi(res === null || res === void 0 ? void 0 : res.calendar)));
27
- }
28
- ensurePersonalCalendarExists(req) {
29
- return this.hostAPIService.ensurePersonalCalendarExists({
30
- userId: req.userId,
31
- applicationContextProperties: req.applicationContextProperties,
32
- }).pipe(map(res => res ? res.calendarId : ''));
33
- }
34
- ensureGroupCalendarsExist(req) {
35
- return this.hostAPIService.ensureGroupCalendarsExist({ externalIds: req.externalIds }).pipe(map(res => (res === null || res === void 0 ? void 0 : res.calendarIds) || []));
36
- }
37
- /*
38
- createCalendar creates a calendar which meeting types can be created for and events can be booked on
39
- The fields of a calendar are documented in https://github.com/vendasta/vendastaapis/blob/master/meetings/v1/shared.proto
40
- */
41
- createCalendar(req) {
42
- return this.hostAPIService.createCalendar(req);
43
- }
44
- updateCalendarSlug(calendarId, newSlug) {
45
- return this.hostAPIService.updateCalendar({
46
- calendarId: calendarId,
47
- calendarUpdate: { slug: newSlug },
48
- fieldMask: { paths: ['slug'] },
49
- }).pipe(mapTo(undefined));
50
- }
51
- updateCalendarHostUserIDs(calendarId, replacementHostUserIds) {
52
- return this.hostAPIService.updateCalendar({
53
- calendarId: calendarId,
54
- calendarUpdate: { hostUserIds: replacementHostUserIds },
55
- fieldMask: { paths: ['host_user_ids'] },
56
- }).pipe(mapTo(undefined));
57
- }
58
- getMeetingTypesForCalendars(req) {
59
- return this.hostAPIService.getMeetingTypesForCalendars({ calendarIds: req.calendarIds }).pipe(map(res => {
60
- if (!(res === null || res === void 0 ? void 0 : res.calendarMeetingTypesMap)) {
61
- return {};
62
- }
63
- return Object.keys(res.calendarMeetingTypesMap).reduce((calendarToMeetingTypeMap, calendarId) => {
64
- var _a;
65
- const meetingTypes = (((_a = res.calendarMeetingTypesMap[calendarId]) === null || _a === void 0 ? void 0 : _a.meetingTypes) || []).map(mt => MeetingTypeFromApi({
66
- meetingTypeApi: mt,
67
- environment: this.environmentService.getEnvironment(),
68
- calendarId,
69
- metadata: req.metadata,
70
- }));
71
- return Object.assign(Object.assign({}, calendarToMeetingTypeMap), { [calendarId]: meetingTypes });
72
- }, {});
73
- }));
74
- }
75
- /*
76
- listMeetingTypes returns a list of meeting types for a host
77
- @param hostId: An identifier for an individual host
78
- @param metadata: optional metadata to include on the meeting type booking link
79
- @param calendarSlug: used to replace hostId in the url. Use it when you are confident you know the host's slug.
80
- - calendarSlug IS NOT USED TO RETRIEVE MEETING TYPES, ONLY TO MAKE THE BOOKING URLS
81
- */
82
- listMeetingTypes(req) {
83
- return this.hostAPIService.listMeetingTypes(req).pipe(map(resp => {
84
- if (!resp || !resp.meetingTypes) {
85
- return [];
86
- }
87
- return resp.meetingTypes.map(mt => {
88
- return MeetingTypeFromApi({
89
- meetingTypeApi: mt,
90
- calendarId: req.hostId,
91
- environment: this.environmentService.getEnvironment(),
92
- metadata: req.metadata,
93
- calendarSlug: req.calendarSlug,
94
- });
95
- });
96
- }));
97
- }
98
- /*
99
- getBookingUrl returns a link that can be used to book a meeting with this host.
100
- @param calendarId: An identifier for an individual host or grouping of hosts (i.e., team).
101
- @param @deprecated hostId: An identifier for an individual host.
102
- @param meetingTypeId: An optional identifier for the meeting type. Default: 30-minutes.
103
- @param metadata: optional metadata to include in the url.
104
- - metadata can be used to pre-fill certain form fields and will be stored during the booking process.
105
- - metadata can be obtained by subscribing to the booking event.
106
- @param calendarSlug: used to replace hostId in the url. Use it when you are confident you know the host's slug.
107
- */
108
- getBookingUrl(req) {
109
- return of(getBookingUrlImplementation(Object.assign(Object.assign({}, req), { calendarId: req.calendarId || req.hostId, environment: this.environmentService.getEnvironment(), calendarSlug: req.calendarSlug })));
110
- }
111
- /*
112
- getGeneralBookingUrl returns a link that can be used to select a meeting type to book with the given calendar.
113
- @param calendarId: An identifier for an individual host or grouping of hosts (i.e., team).
114
- @param metadata: optional metadata to include in the url.
115
- - metadata can be used to pre-fill certain form fields and will be stored during the booking process.
116
- - metadata can be obtained by subscribing to the booking event.
117
- @param calendarSlug: used to replace hostId in the url. Use it when you are confident you know the host's slug.
118
- */
119
- getGeneralBookingUrl(req) {
120
- return of(getGeneralBookingUrlImplementation({
121
- environment: this.environmentService.getEnvironment(),
122
- calendarId: req.calendarId,
123
- metadata: req.metadata,
124
- calendarSlug: req.calendarSlug,
125
- }));
126
- }
127
- /*
128
- getBookingUrlsMulti returns a mapping of hosts -> event types -> booking links.
129
- @param calendarId: An identifier for an individual host or grouping of hosts.
130
- @param meetingTypeSlug: meetingTypeSlugs are passed in the form {hostId: [meetingTypeSlug1, meetingTypeSlug2]}
131
- @param metadata: optional metadata to include in the url.
132
- - metadata can be used to pre-fill certain form fields and will be stored during the booking process.
133
- - metadata can be obtained by subscribing to the booking event.
134
- @param calendarSlug: used to replace hostId in the url. Use it when you are confident you know the host's slug.
135
- */
136
- getBookingUrlsMulti(req, metadata, calendarSlug) {
137
- return of(Object.keys(req).reduce((hostMap, calendarId) => {
138
- return Object.assign(Object.assign({}, hostMap), { [calendarId]: req[calendarId].reduce((meetingTypeMap, meetingTypeSlug) => {
139
- return Object.assign(Object.assign({}, meetingTypeMap), { [meetingTypeSlug]: getBookingUrlImplementation({
140
- calendarId,
141
- meetingTypeSlug,
142
- metadata,
143
- environment: this.environmentService.getEnvironment(),
144
- calendarSlug,
145
- }) });
146
- }, {}) });
147
- }, {}));
148
- }
149
- isHostConfigured(req) {
150
- return this.hostAPIService.isHostConfigured(req).pipe(map((resp) => resp.isConfigured));
151
- }
152
- setGeneralAvailability(req) {
153
- const apiReq = Object.assign(Object.assign({}, req), { timeZone: new TimeZone(req.timeZone) });
154
- if (req.timeSlot) {
155
- apiReq.timeSlot = new TimeRange(req.timeSlot);
156
- }
157
- return this.hostAPIService.setGeneralAvailability(apiReq).pipe(mapTo(null));
158
- }
159
- listBookedMeetings(req) {
160
- 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) => {
161
- const meetings = (resp.meetings || []).map(meeting => meetingFromApi(meeting));
162
- return new PagedResponse(meetings, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);
163
- }));
164
- }
165
- cancelMeeting(req) {
166
- return this.hostAPIService.cancelMeeting(Object.assign({}, req)).pipe(mapTo(null));
167
- }
168
- rescheduleMeeting(req) {
169
- return this.hostAPIService.rescheduleMeeting(Object.assign({}, req)).pipe(mapTo(null));
170
- }
171
- listAvailability(req) {
172
- return this.hostAPIService.listAvailability(req).pipe(map(response => {
173
- const results = (response.availabilityRules || []).filter(Boolean).map(a => {
174
- return {
175
- hostId: a.hostId || '',
176
- meetingTypeId: a.meetingTypeId || '',
177
- day: a.day,
178
- timeSlot: a.timeSlot,
179
- timeZone: a.timeZone,
180
- };
181
- });
182
- return new PagedResponse(results, response.metadata.nextCursor, response.metadata.hasMore);
183
- }));
184
- }
185
- /* updatePreferences will update the host's preferences.
186
- * It is guaranteed to only update the fields provided.
187
- * For example:
188
- * updatePreferences({meetingIntegration: MeetingSource.MEETING_SOURCE_GOOGLE_MEET})
189
- * will only update the preference meetingIntegration to Google Meet. Keeping the other preferences the same.
190
- *
191
- * Alternatively, you can provide a list of keys to update as the second argument.
192
- * For example:
193
- * updatePreferences({...object with all fields}, ['meetingIntegration'])
194
- * will only update the field 'meetingIntegration' to the value in preferences.
195
- *
196
- * Calling with an empty object and no keys is a no-op, or an undefined object.
197
- * Calling with an object containing fields not in `Preferences` or with updateFields not linked to properties in
198
- * `Preferences` is an error.
199
- */
200
- updatePreferences(req) {
201
- const fieldMask = getFieldMask({ o: req.preferences, updateFields: req.updateFields });
202
- if (fieldMask.paths.length === 0) {
203
- return of();
204
- }
205
- return this.hostAPIService.updateHostPreferences({
206
- hostId: req.hostId,
207
- preferences: req.preferences,
208
- fieldMask,
209
- }).pipe(mapTo(undefined));
210
- }
211
- getPreferences(req) {
212
- return this.hostAPIService.getHostPreferences({
213
- hostId: req.hostId
214
- }).pipe(map(response => PreferencesFromApi(response.preferences)));
215
- }
216
- getMeeting(meetingId, location) {
217
- return this.hostAPIService.getHostMeeting({
218
- meetingId: meetingId, location: location,
219
- }).pipe(map((resp) => meetingFromApi(resp.meeting)));
220
- }
221
- updateMeetingMetadata(req) {
222
- return this.hostAPIService.updateMeetingMetadata({
223
- meetingId: req.meetingId,
224
- metadata: req.metadata
225
- }).pipe(mapTo(undefined));
226
- }
227
- bookMeeting(req) {
228
- return this.hostAPIService.bookMeeting(req).pipe(map((resp) => resp.meetingId));
229
- }
230
- // createDefaultMeetingTypes will create what Meeting Scheduler deems to be the default meeting types.
231
- // If the calendar already has meeting types, this is guaranteed to be a no-op.
232
- createDefaultMeetingTypes(req) {
233
- return this.hostAPIService.createDefaultMeetingTypes({ calendarId: req.calendarId }).pipe(mapTo(undefined));
234
- }
235
- createMeetingType(req) {
236
- return this.hostAPIService.createMeetingType({ meetingType: MeetingTypeToApi({ meetingType: req.meetingType }) })
237
- .pipe(map(res => res.id));
238
- }
239
- /* updateMeetingType will update the meeting type fields.
240
- * It is guaranteed to only update the fields provided.
241
- * For example:
242
- * updateMeetingType({name: 'Onboarding'})
243
- * will only update the field 'name' to 'Onboarding'. Keeping the other fields the same.
244
- *
245
- * Alternatively, you can provide a list of keys to update as the second argument.
246
- * For example:
247
- * updateMeetingType({...object with all fields}, ['name'])
248
- * will only update the field 'name' to the value passed in.
249
- *
250
- * Calling with an empty object and no keys is a no-op, or an undefined object.
251
- * Calling with an object containing fields not in `MeetingType` or with updateFields not linked to properties in
252
- * `MeetingType` is an error.
253
- */
254
- updateMeetingType(req) {
255
- const fieldMask = getFieldMask({ o: req.meetingType, updateFields: req.updateFields });
256
- if (fieldMask.paths.length === 0) {
257
- return of();
258
- }
259
- return this.hostAPIService.updateMeetingType({
260
- id: req.id,
261
- meetingType: MeetingTypeToApi({ meetingType: req.meetingType }),
262
- fieldMask,
263
- }).pipe(mapTo(undefined));
264
- }
265
- deleteMeetingType(req) {
266
- return this.hostAPIService.deleteMeetingType({ id: req.id }).pipe(mapTo(undefined));
267
- }
268
- getHostsForCalendar(req) {
269
- return this.hostAPIService.getHostsForCalendar({ calendarId: req.calendarId }).pipe(map(res => {
270
- return (res.hostUsers || []).map(hostuser => {
271
- return hostUserFromApi(hostuser);
272
- });
273
- }));
274
- }
275
- }
276
- HostService.decorators = [
277
- { type: Injectable }
278
- ];
279
- HostService.ctorParameters = () => [
280
- { type: MeetingHostApiService },
281
- { type: undefined, decorators: [{ type: Inject, args: [EnvironmentServiceInterfaceToken,] }] }
282
- ];
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9jb2RlZnJlc2gvdm9sdW1lL21lZXRpbmdzL3Nka3MvdHlwZXNjcmlwdC9zcmMvbWVldGluZ3Nfc2RrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9ob3N0L2hvc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQVNILGdDQUFnQyxFQUdoQyxxQkFBcUIsRUFDckIsbUJBQW1CLEVBRW5CLFNBQVMsRUFFVCxRQUFRLEVBR1gsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBSUgsZUFBZSxFQUNmLFlBQVksRUFHWixjQUFjLEVBR2Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsa0JBQWtCLEVBQ3JCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUE4QixnQ0FBZ0MsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzdGLE9BQU8sRUFBQywyQkFBMkIsRUFBRSxrQ0FBa0MsRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUN0RixPQUFPLEVBQVcsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUE7QUFJN0QsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFDWSxjQUFxQyxFQUNjLGtCQUErQztRQURsRyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDYyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQTZCO0lBRTlHLENBQUM7SUFFRCxrSEFBa0g7SUFDbEgsV0FBVyxDQUFDLEdBQXNGO1FBQzlGLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7WUFDL0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1lB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QixDQUFDLEdBQTJCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQzdFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDcEMsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FDTCxDQUFBO0lBQ0wsQ0FBQzs7O1lBM1lKLFVBQVU7OztZQS9CUCxxQkFBcUI7NENBbUNoQixNQUFNLFNBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgbWFwVG99IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlLFxuICAgIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2UsXG4gICAgRGF5T2ZXZWVrLFxuICAgIEdldEhvc3RNZWV0aW5nUmVzcG9uc2UsXG4gICAgSG9zdEJvb2tNZWV0aW5nUmVxdWVzdEludGVyZmFjZSxcbiAgICBIb3N0Qm9va01lZXRpbmdSZXNwb25zZSxcbiAgICBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UsXG4gICAgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlLFxuICAgIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlLFxuICAgIExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlLFxuICAgIE1lZXRpbmdIb3N0QXBpU2VydmljZSxcbiAgICBQYWdlZFJlcXVlc3RPcHRpb25zLFxuICAgIFBhZ2VkUmVxdWVzdE9wdGlvbnNJbnRlcmZhY2UsXG4gICAgVGltZVJhbmdlLFxuICAgIFRpbWVSYW5nZUludGVyZmFjZSxcbiAgICBUaW1lWm9uZSxcbiAgICBUaW1lWm9uZUludGVyZmFjZSxcbiAgICBXZWVrZGF5QXZhaWxhYmlsaXR5XG59IGZyb20gJy4uL19pbnRlcm5hbC9pbmRleCc7XG5pbXBvcnQge1xuICAgIEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNTZXQsXG4gICAgQXZhaWxhYmlsaXR5UnVsZSxcbiAgICBDYWxlbmRhcixcbiAgICBDYWxlbmRhckZyb21BcGksXG4gICAgZ2V0RmllbGRNYXNrLFxuICAgIEhvc3RVcmxNYXAsXG4gICAgTWVldGluZyxcbiAgICBtZWV0aW5nRnJvbUFwaSxcbiAgICBNZWV0aW5nTWV0YWRhdGEsXG4gICAgTWVldGluZ1R5cGUsXG4gICAgTWVldGluZ1R5cGVGcm9tQXBpLFxuICAgIE1lZXRpbmdUeXBlVG9BcGksXG4gICAgUGFnZWRSZXNwb25zZSxcbiAgICBQcmVmZXJlbmNlcyxcbiAgICBQcmVmZXJlbmNlc0Zyb21BcGlcbn0gZnJvbSAnLi4vc2hhcmVkL2luZGV4JztcbmltcG9ydCB7RW52aXJvbm1lbnRTZXJ2aWNlSW50ZXJmYWNlLCBFbnZpcm9ubWVudFNlcnZpY2VJbnRlcmZhY2VUb2tlbn0gZnJvbSAnQHZlbmRhc3RhL2NvcmUnO1xuaW1wb3J0IHtnZXRCb29raW5nVXJsSW1wbGVtZW50YXRpb24sIGdldEdlbmVyYWxCb29raW5nVXJsSW1wbGVtZW50YXRpb259IGZyb20gJy4vdXJsJztcbmltcG9ydCB7SG9zdFVzZXIsIGhvc3RVc2VyRnJvbUFwaX0gZnJvbSAnLi4vc2hhcmVkL2hvc3QtdXNlcidcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSG9zdFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGhvc3RBUElTZXJ2aWNlOiBNZWV0aW5nSG9zdEFwaVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRW52aXJvbm1lbnRTZXJ2aWNlSW50ZXJmYWNlVG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2VJbnRlcmZhY2UsXG4gICAgKSB7XG4gICAgfVxuXG4gICAgLy8gVXNlIGJ1aWxkSG9zdElkIHRvIGdldCBhbiBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQgaW4gc3Vic2VxdWVudCByZXF1ZXN0cy4gU2VlIHZlbmRhc3RhYXBpcyBmb3IgbW9yZSBkZXRhaWxzXG4gICAgYnVpbGRIb3N0SWQocmVxOiB7IHVzZXJJZDogc3RyaW5nLCBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOiBBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzU2V0IH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5idWlsZEhvc3RJZCh7XG4gICAgICAgICAgICAgICAgdXNlcklkOiByZXEudXNlcklkLFxuICAgICAgICAgICAgICAgIC8vIEdyb3NzIHR5cGVjYXN0IGV4aXN0cyBiZWNhdXNlIEkgd2FudCB0byByZXN0cmljdCB0aGUgcHJvcGVydGllcyBvbiB0aGUgbWFwIChmb3Igbm93KS5cbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOiByZXEuYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyBhcyBhbnkgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgICAgICAgICAgfVxuICAgICAgICApLnBpcGUobWFwKHJlcyA9PiByZXMuaG9zdElkIHx8ICcnKSk7XG4gICAgfVxuXG4gICAgZG9lc0NhbGVuZGFyRXhpc3QoY2FsZW5kYXJJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZG9lc0NhbGVuZGFyRXhpc3Qoe2NhbGVuZGFySWRlbnRpZmllcjogY2FsZW5kYXJJZGVudGlmaWVyfSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHJlc3AuZXhpc3RzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldENhbGVuZGFyKHJlcTogeyBjYWxlbmRhcklkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8Q2FsZW5kYXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZ2V0Q2FsZW5kYXIoe2NhbGVuZGFySWQ6IHJlcS5jYWxlbmRhcklkfSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXMgPT4gQ2FsZW5kYXJGcm9tQXBpKHJlcz8uY2FsZW5kYXIpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHMocmVxOiB7XG4gICAgICAgIHVzZXJJZDogc3RyaW5nLFxuICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOiBBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzU2V0XG4gICAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHMoe1xuICAgICAgICAgICAgdXNlcklkOiByZXEudXNlcklkLFxuICAgICAgICAgICAgYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllczogcmVxLmFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMgYXMgYW55IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIH0pLnBpcGUobWFwKHJlcyA9PiByZXMgPyByZXMuY2FsZW5kYXJJZCA6ICcnKSk7XG4gICAgfVxuXG4gICAgZW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdChyZXE6IHsgZXh0ZXJuYWxJZHM6IHN0cmluZ1tdIH0pOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3Qoe2V4dGVybmFsSWRzOiByZXEuZXh0ZXJuYWxJZHN9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlcyA9PiByZXM/LmNhbGVuZGFySWRzIHx8IFtdKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qXG4gICAgIGNyZWF0ZUNhbGVuZGFyIGNyZWF0ZXMgYSBjYWxlbmRhciB3aGljaCBtZWV0aW5nIHR5cGVzIGNhbiBiZSBjcmVhdGVkIGZvciBhbmQgZXZlbnRzIGNhbiBiZSBib29rZWQgb25cbiAgICAgVGhlIGZpZWxkcyBvZiBhIGNhbGVuZGFyIGFyZSBkb2N1bWVudGVkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS92ZW5kYXN0YS92ZW5kYXN0YWFwaXMvYmxvYi9tYXN0ZXIvbWVldGluZ3MvdjEvc2hhcmVkLnByb3RvXG4gICAgKi9cbiAgICBjcmVhdGVDYWxlbmRhcihyZXE6IENyZWF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8Q3JlYXRlQ2FsZW5kYXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5jcmVhdGVDYWxlbmRhcihyZXEpO1xuICAgIH1cblxuICAgIHVwZGF0ZUNhbGVuZGFyU2x1ZyhjYWxlbmRhcklkOiBzdHJpbmcsIG5ld1NsdWc6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS51cGRhdGVDYWxlbmRhcih7XG4gICAgICAgICAgICBjYWxlbmRhcklkOiBjYWxlbmRhcklkLFxuICAgICAgICAgICAgY2FsZW5kYXJVcGRhdGU6IHtzbHVnOiBuZXdTbHVnfSxcbiAgICAgICAgICAgIGZpZWxkTWFzazoge3BhdGhzOiBbJ3NsdWcnXX0sXG4gICAgICAgIH0pLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQ2FsZW5kYXJIb3N0VXNlcklEcyhjYWxlbmRhcklkOiBzdHJpbmcsIHJlcGxhY2VtZW50SG9zdFVzZXJJZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLnVwZGF0ZUNhbGVuZGFyKHtcbiAgICAgICAgICAgIGNhbGVuZGFySWQ6IGNhbGVuZGFySWQsXG4gICAgICAgICAgICBjYWxlbmRhclVwZGF0ZToge2hvc3RVc2VySWRzOiByZXBsYWNlbWVudEhvc3RVc2VySWRzfSxcbiAgICAgICAgICAgIGZpZWxkTWFzazoge3BhdGhzOiBbJ2hvc3RfdXNlcl9pZHMnXX0sXG4gICAgICAgIH0pLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgZ2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzKHJlcToge1xuICAgICAgICBjYWxlbmRhcklkczogc3RyaW5nW10sXG4gICAgICAgIG1ldGFkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIH0pOiBPYnNlcnZhYmxlPHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IE1lZXRpbmdUeXBlW10gfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnMoe2NhbGVuZGFySWRzOiByZXEuY2FsZW5kYXJJZHN9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXM/LmNhbGVuZGFyTWVldGluZ1R5cGVzTWFwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlcy5jYWxlbmRhck1lZXRpbmdUeXBlc01hcCkucmVkdWNlKChjYWxlbmRhclRvTWVldGluZ1R5cGVNYXAsIGNhbGVuZGFySWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVldGluZ1R5cGVzID0gKHJlcy5jYWxlbmRhck1lZXRpbmdUeXBlc01hcFtjYWxlbmRhcklkXT8ubWVldGluZ1R5cGVzIHx8IFtdKS5tYXAobXQgPT4gTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiBtdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRFbnZpcm9ubWVudCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNhbGVuZGFyVG9NZWV0aW5nVHlwZU1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxlbmRhcklkXTogbWVldGluZ1R5cGVzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sIHt9IGFzIHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IE1lZXRpbmdUeXBlW10gfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAvKlxuICAgICBsaXN0TWVldGluZ1R5cGVzIHJldHVybnMgYSBsaXN0IG9mIG1lZXRpbmcgdHlwZXMgZm9yIGEgaG9zdFxuICAgICBAcGFyYW0gaG9zdElkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3RcbiAgICAgQHBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCBtZXRhZGF0YSB0byBpbmNsdWRlIG9uIHRoZSBtZWV0aW5nIHR5cGUgYm9va2luZyBsaW5rXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAgICAtIGNhbGVuZGFyU2x1ZyBJUyBOT1QgVVNFRCBUTyBSRVRSSUVWRSBNRUVUSU5HIFRZUEVTLCBPTkxZIFRPIE1BS0UgVEhFIEJPT0tJTkcgVVJMU1xuICAgICovXG4gICAgbGlzdE1lZXRpbmdUeXBlcyhyZXE6IHtcbiAgICAgICAgaG9zdElkOiBzdHJpbmcsXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH1cbiAgICAgICAgY2FsZW5kYXJTbHVnPzogc3RyaW5nLFxuICAgIH0pOiBPYnNlcnZhYmxlPE1lZXRpbmdUeXBlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdE1lZXRpbmdUeXBlcyhyZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzcCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwIHx8ICFyZXNwLm1lZXRpbmdUeXBlcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwLm1lZXRpbmdUeXBlcy5tYXAobXQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiBtdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFySWQ6IHJlcS5ob3N0SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIC8qXG4gICAgIGdldEJvb2tpbmdVcmwgcmV0dXJucyBhIGxpbmsgdGhhdCBjYW4gYmUgdXNlZCB0byBib29rIGEgbWVldGluZyB3aXRoIHRoaXMgaG9zdC5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cyAoaS5lLiwgdGVhbSkuXG4gICAgIEBwYXJhbSBAZGVwcmVjYXRlZCBob3N0SWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdC5cbiAgICAgQHBhcmFtIG1lZXRpbmdUeXBlSWQ6IEFuIG9wdGlvbmFsIGlkZW50aWZpZXIgZm9yIHRoZSBtZWV0aW5nIHR5cGUuIERlZmF1bHQ6IDMwLW1pbnV0ZXMuXG4gICAgIEBwYXJhbSBtZXRhZGF0YTogb3B0aW9uYWwgbWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgdXJsLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIHByZS1maWxsIGNlcnRhaW4gZm9ybSBmaWVsZHMgYW5kIHdpbGwgYmUgc3RvcmVkIGR1cmluZyB0aGUgYm9va2luZyBwcm9jZXNzLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSBvYnRhaW5lZCBieSBzdWJzY3JpYmluZyB0byB0aGUgYm9va2luZyBldmVudC5cbiAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgKi9cbiAgICBnZXRCb29raW5nVXJsKFxuICAgICAgICByZXE6IHtcbiAgICAgICAgICAgIC8vIEBkZXByZWNhdGVkOiB1c2UgY2FsZW5kYXJJZCBpbnN0ZWFkLiBjYWxlbmRhcklkIG5vdCByZXF1aXJlZCB0byBhdm9pZCBicmVha2luZyBleGlzdGluZyBjbGllbnRzLlxuICAgICAgICAgICAgaG9zdElkOiBzdHJpbmcsXG4gICAgICAgICAgICBjYWxlbmRhcklkPzogc3RyaW5nLFxuICAgICAgICAgICAgLy8gQGRlcHJlY2F0ZWQ6IHVzZSBtZWV0aW5nVHlwZVNsdWcgaW5zdGVhZFxuICAgICAgICAgICAgbWVldGluZ1R5cGVJZD86IHN0cmluZyxcbiAgICAgICAgICAgIG1lZXRpbmdUeXBlU2x1Zz86IHN0cmluZyxcbiAgICAgICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgICAgICBjYWxlbmRhclNsdWc/OiBzdHJpbmcsXG4gICAgICAgIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gb2YoZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgICAgICAgICAgICAuLi5yZXEsXG4gICAgICAgICAgICAgICAgY2FsZW5kYXJJZDogcmVxLmNhbGVuZGFySWQgfHwgcmVxLmhvc3RJZCxcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKSxcbiAgICAgICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qXG4gICAgIGdldEdlbmVyYWxCb29raW5nVXJsIHJldHVybnMgYSBsaW5rIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VsZWN0IGEgbWVldGluZyB0eXBlIHRvIGJvb2sgd2l0aCB0aGUgZ2l2ZW4gY2FsZW5kYXIuXG4gICAgIEBwYXJhbSBjYWxlbmRhcklkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3Qgb3IgZ3JvdXBpbmcgb2YgaG9zdHMgKGkuZS4sIHRlYW0pLlxuICAgICBAcGFyYW0gbWV0YWRhdGE6IG9wdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIHVybC5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBwcmUtZmlsbCBjZXJ0YWluIGZvcm0gZmllbGRzIGFuZCB3aWxsIGJlIHN0b3JlZCBkdXJpbmcgdGhlIGJvb2tpbmcgcHJvY2Vzcy5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgb2J0YWluZWQgYnkgc3Vic2NyaWJpbmcgdG8gdGhlIGJvb2tpbmcgZXZlbnQuXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAqL1xuICAgIGdldEdlbmVyYWxCb29raW5nVXJsKHJlcToge1xuICAgICAgICBjYWxlbmRhcklkOiBzdHJpbmcsXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZyxcbiAgICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG9mKGdldEdlbmVyYWxCb29raW5nVXJsSW1wbGVtZW50YXRpb24oe1xuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEVudmlyb25tZW50KCksXG4gICAgICAgICAgICBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICBjYWxlbmRhclNsdWc6IHJlcS5jYWxlbmRhclNsdWcsXG4gICAgICAgIH0pKVxuICAgIH1cblxuICAgIC8qXG4gICAgIGdldEJvb2tpbmdVcmxzTXVsdGkgcmV0dXJucyBhIG1hcHBpbmcgb2YgaG9zdHMgLT4gZXZlbnQgdHlwZXMgLT4gYm9va2luZyBsaW5rcy5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cy5cbiAgICAgQHBhcmFtIG1lZXRpbmdUeXBlU2x1ZzogbWVldGluZ1R5cGVTbHVncyBhcmUgcGFzc2VkIGluIHRoZSBmb3JtIHtob3N0SWQ6IFttZWV0aW5nVHlwZVNsdWcxLCBtZWV0aW5nVHlwZVNsdWcyXX1cbiAgICAgQHBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCBtZXRhZGF0YSB0byBpbmNsdWRlIGluIHRoZSB1cmwuXG4gICAgIC0gbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gcHJlLWZpbGwgY2VydGFpbiBmb3JtIGZpZWxkcyBhbmQgd2lsbCBiZSBzdG9yZWQgZHVyaW5nIHRoZSBib29raW5nIHByb2Nlc3MuXG4gICAgIC0gbWV0YWRhdGEgY2FuIGJlIG9idGFpbmVkIGJ5IHN1YnNjcmliaW5nIHRvIHRoZSBib29raW5nIGV2ZW50LlxuICAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgKi9cbiAgICBnZXRCb29raW5nVXJsc011bHRpKFxuICAgICAgICByZXE6IHsgW2NhbGVuZGFySWQ6IHN0cmluZ106IHN0cmluZ1tdIH0sXG4gICAgICAgIG1ldGFkYXRhPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZ1xuICAgICk6IE9ic2VydmFibGU8SG9zdFVybE1hcD4ge1xuICAgICAgICByZXR1cm4gb2YoT2JqZWN0LmtleXMocmVxKS5yZWR1Y2UoKGhvc3RNYXAsIGNhbGVuZGFySWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaG9zdE1hcCxcbiAgICAgICAgICAgICAgICBbY2FsZW5kYXJJZF06IHJlcVtjYWxlbmRhcklkXS5yZWR1Y2UoKG1lZXRpbmdUeXBlTWFwLCBtZWV0aW5nVHlwZVNsdWcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm1lZXRpbmdUeXBlTWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgW21lZXRpbmdUeXBlU2x1Z106IGdldEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nVHlwZVNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEVudmlyb25tZW50KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJTbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LCB7fSBhcyB7IFttZWV0aW5nVHlwZUlkOiBzdHJpbmddOiBzdHJpbmcgfSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIHt9IGFzIEhvc3RVcmxNYXApKTtcbiAgICB9XG5cbiAgICBpc0hvc3RDb25maWd1cmVkKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmlzSG9zdENvbmZpZ3VyZWQocmVxKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwOiBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UpID0+IHJlc3AuaXNDb25maWd1cmVkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldEdlbmVyYWxBdmFpbGFiaWxpdHkocmVxOiB7XG4gICAgICAgIGhvc3RJZDogc3RyaW5nLFxuICAgICAgICBtZWV0aW5nVHlwZUlkOiBzdHJpbmcsXG4gICAgICAgIC8vIEBkZXByZWNhdGVkOiB1c2Ugd2Vla2RheXNBdmFpbGFiaWxpdHkgaW5zdGVhZFxuICAgICAgICBkYXlzPzogRGF5T2ZXZWVrW10sXG4gICAgICAgIC8vIEBkZXByZWNhdGVkOiB1c2Ugd2Vla2RheXNBdmFpbGFiaWxpdHkgaW5zdGVhZFxuICAgICAgICB0aW1lU2xvdD86IFRpbWVSYW5nZUludGVyZmFjZSxcbiAgICAgICAgd2Vla2RheXNBdmFpbGFiaWxpdHk/OiBXZWVrZGF5QXZhaWxhYmlsaXR5W10sXG4gICAgICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZSxcbiAgICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgICAgIGNvbnN0IGFwaVJlcSA9IHtcbiAgICAgICAgICAgIC4uLnJlcSxcbiAgICAgICAgICAgIHRpbWVab25lOiBuZXcgVGltZVpvbmUocmVxLnRpbWVab25lKSxcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVxLnRpbWVTbG90KSB7XG4gICAgICAgICAgICBhcGlSZXEudGltZVNsb3QgPSBuZXcgVGltZVJhbmdlKHJlcS50aW1lU2xvdClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5zZXRHZW5lcmFsQXZhaWxhYmlsaXR5KGFwaVJlcSkucGlwZShtYXBUbyhudWxsKSlcbiAgICB9XG5cbiAgICBsaXN0Qm9va2VkTWVldGluZ3MocmVxOiB7XG4gICAgICAgIGZpbHRlcnM6IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlLFxuICAgICAgICBjdXJzb3I6IHN0cmluZyxcbiAgICAgICAgcGFnZVNpemU6IG51bWJlcixcbiAgICAgICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlLFxuICAgIH0pOiBPYnNlcnZhYmxlPFBhZ2VkUmVzcG9uc2U8TWVldGluZz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEJvb2tlZE1lZXRpbmdzKHtcbiAgICAgICAgICAgIC4uLnJlcSxcbiAgICAgICAgICAgIHBhZ2luZ09wdGlvbnM6IG5ldyBQYWdlZFJlcXVlc3RPcHRpb25zKHtjdXJzb3I6IHJlcS5jdXJzb3IsIHBhZ2VTaXplOiByZXEucGFnZVNpemV9KSxcbiAgICAgICAgICAgIGZpbHRlcnM6IG5ldyBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyhyZXEuZmlsdGVycyksXG4gICAgICAgICAgICB0aW1lWm9uZTogbmV3IFRpbWVab25lKHJlcS50aW1lWm9uZSksXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3A6IExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVldGluZ3MgPSAocmVzcC5tZWV0aW5ncyB8fCBbXSkubWFwKG1lZXRpbmcgPT4gbWVldGluZ0Zyb21BcGkobWVldGluZykpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUGFnZWRSZXNwb25zZShtZWV0aW5ncywgcmVzcC5wYWdpbmdNZXRhZGF0YS5uZXh0Q3Vyc29yLCByZXNwLnBhZ2luZ01ldGFkYXRhLmhhc01vcmUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY2FuY2VsTWVldGluZyhyZXE6IHtcbiAgICAgICAgbWVldGluZ0lkOiBzdHJpbmcsXG4gICAgICAgIGNhbmNlbGxhdGlvblJlYXNvbjogc3RyaW5nXG4gICAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5jYW5jZWxNZWV0aW5nKHtcbiAgICAgICAgICAgIC4uLnJlcVxuICAgICAgICB9KS5waXBlKG1hcFRvKG51bGwpKVxuICAgIH1cblxuICAgIHJlc2NoZWR1bGVNZWV0aW5nKHJlcToge1xuICAgICAgICBtZWV0aW5nSWQ6IHN0cmluZyxcbiAgICAgICAgc3RhcnQ6IERhdGVcbiAgICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLnJlc2NoZWR1bGVNZWV0aW5nKHtcbiAgICAgICAgICAgIC4uLnJlcVxuICAgICAgICB9KS5waXBlKG1hcFRvKG51bGwpKVxuICAgIH1cblxuICAgIGxpc3RBdmFpbGFiaWxpdHkocmVxOiB7XG4gICAgICAgIGZpbHRlcnM6IExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgICAgICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZSxcbiAgICAgICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlLFxuICAgIH0pOiBPYnNlcnZhYmxlPFBhZ2VkUmVzcG9uc2U8QXZhaWxhYmlsaXR5UnVsZT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEF2YWlsYWJpbGl0eShyZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSAocmVzcG9uc2UuYXZhaWxhYmlsaXR5UnVsZXMgfHwgW10pLmZpbHRlcihCb29sZWFuKS5tYXAoYSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0SWQ6IGEuaG9zdElkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ1R5cGVJZDogYS5tZWV0aW5nVHlwZUlkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF5OiBhLmRheSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVTbG90OiBhLnRpbWVTbG90LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZVpvbmU6IGEudGltZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VkUmVzcG9uc2UocmVzdWx0cywgcmVzcG9uc2UubWV0YWRhdGEubmV4dEN1cnNvciwgcmVzcG9uc2UubWV0YWRhdGEuaGFzTW9yZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyogdXBkYXRlUHJlZmVyZW5jZXMgd2lsbCB1cGRhdGUgdGhlIGhvc3QncyBwcmVmZXJlbmNlcy5cbiAgICAgKiBJdCBpcyBndWFyYW50ZWVkIHRvIG9ubHkgdXBkYXRlIHRoZSBmaWVsZHMgcHJvdmlkZWQuXG4gICAgICogRm9yIGV4YW1wbGU6XG4gICAgICogIHVwZGF0ZVByZWZlcmVuY2VzKHttZWV0aW5nSW50ZWdyYXRpb246IE1lZXRpbmdTb3VyY2UuTUVFVElOR19TT1VSQ0VfR09PR0xFX01FRVR9KVxuICAgICAqICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBwcmVmZXJlbmNlIG1lZXRpbmdJbnRlZ3JhdGlvbiB0byBHb29nbGUgTWVldC4gS2VlcGluZyB0aGUgb3RoZXIgcHJlZmVyZW5jZXMgdGhlIHNhbWUuXG4gICAgICpcbiAgICAgKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHByb3ZpZGUgYSBsaXN0IG9mIGtleXMgdG8gdXBkYXRlIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuXG4gICAgICogRm9yIGV4YW1wbGU6XG4gICAgICogICB1cGRhdGVQcmVmZXJlbmNlcyh7Li4ub2JqZWN0IHdpdGggYWxsIGZpZWxkc30sIFsnbWVldGluZ0ludGVncmF0aW9uJ10pXG4gICAgICogICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBmaWVsZCAnbWVldGluZ0ludGVncmF0aW9uJyB0byB0aGUgdmFsdWUgaW4gcHJlZmVyZW5jZXMuXG4gICAgICpcbiAgICAgKiBDYWxsaW5nIHdpdGggYW4gZW1wdHkgb2JqZWN0IGFuZCBubyBrZXlzIGlzIGEgbm8tb3AsIG9yIGFuIHVuZGVmaW5lZCBvYmplY3QuXG4gICAgICogQ2FsbGluZyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIGZpZWxkcyBub3QgaW4gYFByZWZlcmVuY2VzYCBvciB3aXRoIHVwZGF0ZUZpZWxkcyBub3QgbGlua2VkIHRvIHByb3BlcnRpZXMgaW5cbiAgICAgKiBgUHJlZmVyZW5jZXNgIGlzIGFuIGVycm9yLlxuICAgICAqL1xuICAgIHVwZGF0ZVByZWZlcmVuY2VzKHJlcTogeyBob3N0SWQ6IHN0cmluZywgcHJlZmVyZW5jZXM6IFBhcnRpYWw8UHJlZmVyZW5jZXM+LCB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgUHJlZmVyZW5jZXMpW10gfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe286IHJlcS5wcmVmZXJlbmNlcywgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzfSk7XG4gICAgICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS51cGRhdGVIb3N0UHJlZmVyZW5jZXMoe1xuICAgICAgICAgICAgaG9zdElkOiByZXEuaG9zdElkLFxuICAgICAgICAgICAgcHJlZmVyZW5jZXM6IHJlcS5wcmVmZXJlbmNlcyxcbiAgICAgICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBnZXRQcmVmZXJlbmNlcyhyZXE6IHsgaG9zdElkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8UHJlZmVyZW5jZXM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZ2V0SG9zdFByZWZlcmVuY2VzKHtcbiAgICAgICAgICAgIGhvc3RJZDogcmVxLmhvc3RJZFxuICAgICAgICB9KS5waXBlKG1hcChyZXNwb25zZSA9PiBQcmVmZXJlbmNlc0Zyb21BcGkocmVzcG9uc2UucHJlZmVyZW5jZXMpKSlcbiAgICB9XG5cbiAgICBnZXRNZWV0aW5nKG1lZXRpbmdJZDogc3RyaW5nLCBsb2NhdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxNZWV0aW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmdldEhvc3RNZWV0aW5nKHtcbiAgICAgICAgICAgIG1lZXRpbmdJZDogbWVldGluZ0lkLCBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3A6IEdldEhvc3RNZWV0aW5nUmVzcG9uc2UpID0+IG1lZXRpbmdGcm9tQXBpKHJlc3AubWVldGluZykpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICB1cGRhdGVNZWV0aW5nTWV0YWRhdGEocmVxOiB7IG1lZXRpbmdJZDogc3RyaW5nLCBtZXRhZGF0YTogTWVldGluZ01ldGFkYXRhIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UudXBkYXRlTWVldGluZ01ldGFkYXRhKHtcbiAgICAgICAgICAgIG1lZXRpbmdJZDogcmVxLm1lZXRpbmdJZCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGFcbiAgICAgICAgfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBib29rTWVldGluZyhyZXE6IEhvc3RCb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5ib29rTWVldGluZyhyZXEpLnBpcGUobWFwKChyZXNwOiBIb3N0Qm9va01lZXRpbmdSZXNwb25zZSkgPT4gcmVzcC5tZWV0aW5nSWQpKTtcbiAgICB9XG5cbiAgICAvLyBjcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzIHdpbGwgY3JlYXRlIHdoYXQgTWVldGluZyBTY2hlZHVsZXIgZGVlbXMgdG8gYmUgdGhlIGRlZmF1bHQgbWVldGluZyB0eXBlcy5cbiAgICAvLyBJZiB0aGUgY2FsZW5kYXIgYWxyZWFkeSBoYXMgbWVldGluZyB0eXBlcywgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGEgbm8tb3AuXG4gICAgY3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlcyhyZXE6IHsgY2FsZW5kYXJJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuY3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlcyh7Y2FsZW5kYXJJZDogcmVxLmNhbGVuZGFySWR9KS5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICAgIH1cblxuICAgIGNyZWF0ZU1lZXRpbmdUeXBlKHJlcTogeyBtZWV0aW5nVHlwZTogTWVldGluZ1R5cGUgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmNyZWF0ZU1lZXRpbmdUeXBlKHttZWV0aW5nVHlwZTogTWVldGluZ1R5cGVUb0FwaSh7bWVldGluZ1R5cGU6IHJlcS5tZWV0aW5nVHlwZX0pfSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLmlkKSk7XG4gICAgfVxuXG4gICAgLyogdXBkYXRlTWVldGluZ1R5cGUgd2lsbCB1cGRhdGUgdGhlIG1lZXRpbmcgdHlwZSBmaWVsZHMuXG4gICAgICogSXQgaXMgZ3VhcmFudGVlZCB0byBvbmx5IHVwZGF0ZSB0aGUgZmllbGRzIHByb3ZpZGVkLlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqICB1cGRhdGVNZWV0aW5nVHlwZSh7bmFtZTogJ09uYm9hcmRpbmcnfSlcbiAgICAgKiAgd2lsbCBvbmx5IHVwZGF0ZSB0aGUgZmllbGQgJ25hbWUnIHRvICdPbmJvYXJkaW5nJy4gS2VlcGluZyB0aGUgb3RoZXIgZmllbGRzIHRoZSBzYW1lLlxuICAgICAqXG4gICAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwcm92aWRlIGEgbGlzdCBvZiBrZXlzIHRvIHVwZGF0ZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqICAgdXBkYXRlTWVldGluZ1R5cGUoey4uLm9iamVjdCB3aXRoIGFsbCBmaWVsZHN9LCBbJ25hbWUnXSlcbiAgICAgKiAgIHdpbGwgb25seSB1cGRhdGUgdGhlIGZpZWxkICduYW1lJyB0byB0aGUgdmFsdWUgcGFzc2VkIGluLlxuICAgICAqXG4gICAgICogQ2FsbGluZyB3aXRoIGFuIGVtcHR5IG9iamVjdCBhbmQgbm8ga2V5cyBpcyBhIG5vLW9wLCBvciBhbiB1bmRlZmluZWQgb2JqZWN0LlxuICAgICAqIENhbGxpbmcgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyBmaWVsZHMgbm90IGluIGBNZWV0aW5nVHlwZWAgb3Igd2l0aCB1cGRhdGVGaWVsZHMgbm90IGxpbmtlZCB0byBwcm9wZXJ0aWVzIGluXG4gICAgICogYE1lZXRpbmdUeXBlYCBpcyBhbiBlcnJvci5cbiAgICAgKi9cbiAgICB1cGRhdGVNZWV0aW5nVHlwZShyZXE6IHsgaWQ6IHN0cmluZywgbWVldGluZ1R5cGU6IFBhcnRpYWw8TWVldGluZ1R5cGU+LCB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgTWVldGluZ1R5cGUpW10gfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe286IHJlcS5tZWV0aW5nVHlwZSwgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzfSk7XG4gICAgICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS51cGRhdGVNZWV0aW5nVHlwZSh7XG4gICAgICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICAgICAgbWVldGluZ1R5cGU6IE1lZXRpbmdUeXBlVG9BcGkoe21lZXRpbmdUeXBlOiByZXEubWVldGluZ1R5cGV9KSxcbiAgICAgICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBkZWxldGVNZWV0aW5nVHlwZShyZXE6IHsgaWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmRlbGV0ZU1lZXRpbmdUeXBlKHtpZDogcmVxLmlkfSkucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBnZXRIb3N0c0ZvckNhbGVuZGFyKHJlcTogeyBjYWxlbmRhcklkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8SG9zdFVzZXJbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRIb3N0c0ZvckNhbGVuZGFyKHtjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHJlcy5ob3N0VXNlcnMgfHwgW10pLm1hcChob3N0dXNlciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBob3N0VXNlckZyb21BcGkoaG9zdHVzZXIpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbn1cblxuXG5cbiJdfQ==
@@ -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
@@ -1,11 +0,0 @@
1
- export { MeetingsModule } from './meetings.module';
2
- export { MeetingsService } from './meetings.service';
3
- export { GuestModule } from './guest/guest.module';
4
- export { GuestService } from './guest/guest.service';
5
- export { HostService } from './host/host.service';
6
- export { HostModule } from './host/host.module';
7
- export { addMetadataToBookingLink } from './host/url';
8
- export { MeetingSource, MeetingSourceStatus, DayOfWeek, FormFieldType, CalendarType } from './_internal/enums/index';
9
- export { MeetingSourceQuery, MeetingSourceInfo, MeetingSourceListResponse, Contact, WeekdayAvailability, CreateCalendarRequest, CreateCalendarResponse, } from './_internal/objects/index';
10
- export { PagedResponse, WellKnownMeetingMetadataKeys, WellKnownFormFieldIds, meetingSchedulerIdToMetadataKey, durationFromString, durationToString, durationStringToMinutes, newBusinessCenterApplicationContextProperties, newSalesCenterApplicationContextProperties, newPartnerCenterApplicationContextProperties, KnownCalendarApplicationContextKeys, KnownCalendarExternalIntegrations, } from './shared/index';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL2NvZGVmcmVzaC92b2x1bWUvbWVldGluZ3Mvc2Rrcy90eXBlc2NyaXB0L3NyYy9tZWV0aW5nc19zZGsvc3JjLyIsInNvdXJjZXMiOlsibGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQWMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFaEUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQUMsYUFBYSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUE7QUFDbEgsT0FBTyxFQUNILGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUN6QixNQUFNLDJCQUEyQixDQUFBO0FBQ2xDLE9BQU8sRUFHSCxhQUFhLEVBY2IsNEJBQTRCLEVBQzVCLHFCQUFxQixFQUNyQiwrQkFBK0IsRUFDL0Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsNkNBQTZDLEVBQzdDLDBDQUEwQyxFQUMxQyw0Q0FBNEMsRUFLNUMsbUNBQW1DLEVBQ25DLGlDQUFpQyxHQUVwQyxNQUFNLGdCQUFnQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtNZWV0aW5nc01vZHVsZX0gZnJvbSAnLi9tZWV0aW5ncy5tb2R1bGUnO1xuZXhwb3J0IHtNZWV0aW5nc1NESywgTWVldGluZ3NTZXJ2aWNlfSBmcm9tICcuL21lZXRpbmdzLnNlcnZpY2UnO1xuZXhwb3J0IHtCb29rZWRNZWV0aW5nSW5mbywgQm9va01lZXRpbmdSZXNwb25zZSwgR3Vlc3RTZXJ2aWNlSW50ZXJmYWNlfSBmcm9tICcuL2d1ZXN0L2luZGV4JztcbmV4cG9ydCB7R3Vlc3RNb2R1bGV9IGZyb20gJy4vZ3Vlc3QvZ3Vlc3QubW9kdWxlJztcbmV4cG9ydCB7R3Vlc3RTZXJ2aWNlfSBmcm9tICcuL2d1ZXN0L2d1ZXN0LnNlcnZpY2UnO1xuZXhwb3J0IHtIb3N0U2VydmljZX0gZnJvbSAnLi9ob3N0L2hvc3Quc2VydmljZSc7XG5leHBvcnQge0hvc3RNb2R1bGV9IGZyb20gJy4vaG9zdC9ob3N0Lm1vZHVsZSc7XG5leHBvcnQge2FkZE1ldGFkYXRhVG9Cb29raW5nTGlua30gZnJvbSAnLi9ob3N0L3VybCc7XG5leHBvcnQge01lZXRpbmdTb3VyY2UsIE1lZXRpbmdTb3VyY2VTdGF0dXMsIERheU9mV2VlaywgRm9ybUZpZWxkVHlwZSwgQ2FsZW5kYXJUeXBlfSBmcm9tICcuL19pbnRlcm5hbC9lbnVtcy9pbmRleCdcbmV4cG9ydCB7XG4gICAgTWVldGluZ1NvdXJjZVF1ZXJ5LFxuICAgIE1lZXRpbmdTb3VyY2VJbmZvLFxuICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2UsXG4gICAgQ29udGFjdCxcbiAgICBXZWVrZGF5QXZhaWxhYmlsaXR5LFxuICAgIENyZWF0ZUNhbGVuZGFyUmVxdWVzdCxcbiAgICBDcmVhdGVDYWxlbmRhclJlc3BvbnNlLFxufSBmcm9tICcuL19pbnRlcm5hbC9vYmplY3RzL2luZGV4J1xuZXhwb3J0IHtcbiAgICBIb3N0LFxuICAgIFRpbWVTcGFuLFxuICAgIFBhZ2VkUmVzcG9uc2UsXG4gICAgTWVldGluZyxcbiAgICBNZWV0aW5nVHlwZSxcbiAgICBBdHRlbmRlZSxcbiAgICBBdmFpbGFiaWxpdHlSdWxlLFxuICAgIENhbGVuZGFyLFxuICAgIEhvc3RVcmxNYXAsXG4gICAgUHJlZmVyZW5jZXMsXG4gICAgRHVyYXRpb24sXG4gICAgTWVldGluZ1R5cGVGb3JtLFxuICAgIE1lZXRpbmdUeXBlRm9ybUZpZWxkLFxuICAgIE1lZXRpbmdGb3JtLFxuICAgIE1lZXRpbmdGb3JtQW5zd2VyLFxuICAgIE1lZXRpbmdNZXRhZGF0YSxcbiAgICBXZWxsS25vd25NZWV0aW5nTWV0YWRhdGFLZXlzLFxuICAgIFdlbGxLbm93bkZvcm1GaWVsZElkcyxcbiAgICBtZWV0aW5nU2NoZWR1bGVySWRUb01ldGFkYXRhS2V5LFxuICAgIGR1cmF0aW9uRnJvbVN0cmluZyxcbiAgICBkdXJhdGlvblRvU3RyaW5nLFxuICAgIGR1cmF0aW9uU3RyaW5nVG9NaW51dGVzLFxuICAgIG5ld0J1c2luZXNzQ2VudGVyQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyxcbiAgICBuZXdTYWxlc0NlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgbmV3UGFydG5lckNlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc1NldCxcbiAgICBCdXNpbmVzc0NlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgU2FsZXNDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIFBhcnRuZXJDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIEtub3duQ2FsZW5kYXJBcHBsaWNhdGlvbkNvbnRleHRLZXlzLFxuICAgIEtub3duQ2FsZW5kYXJFeHRlcm5hbEludGVncmF0aW9ucyxcbiAgICBIb3N0VXNlcixcbn0gZnJvbSAnLi9zaGFyZWQvaW5kZXgnXG5leHBvcnQge1xuICAgIFRpbWVSYW5nZUludGVyZmFjZSBhcyBUaW1lUmFuZ2UsXG4gICAgVGltZU9mRGF5SW50ZXJmYWNlIGFzIFRpbWVPZkRheSxcbiAgICBUaW1lWm9uZUludGVyZmFjZSBhcyBUaW1lWm9uZSxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSBhcyBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0QXZhaWxhYmlsaXR5UmVxdWVzdEZpbHRlcnNJbnRlcmZhY2UgYXMgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RGaWx0ZXJzLFxuICAgIFBhZ2VkUmVxdWVzdE9wdGlvbnNJbnRlcmZhY2UgYXMgUGFnZWRSZXF1ZXN0T3B0aW9ucyxcbiAgICBEYXRlUmFuZ2VJbnRlcmZhY2UgYXMgRGF0ZVJhbmdlLFxuICAgIENyZWF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSxcbiAgICBDcmVhdGVDYWxlbmRhclJlc3BvbnNlSW50ZXJmYWNlLFxuICAgIFVwZGF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSxcbiAgICBBdHRhY2htZW50SW50ZXJmYWNlLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWVJbnRlcmZhY2UsXG59IGZyb20gJy4vX2ludGVybmFsL2ludGVyZmFjZXMvaW5kZXgnXG4iXX0=
@@ -1,22 +0,0 @@
1
- // *********************************
2
- // Code generated by sdkgen - edited by you!
3
- //
4
- // This module contains any hand-written services or other things your module
5
- // needs to share with applications that use it.
6
- // *********************************
7
- import { NgModule } from '@angular/core';
8
- import { MeetingsInternalModule } from './_internal/meetings.module';
9
- import { MeetingsService } from './meetings.service';
10
- export class MeetingsModule {
11
- }
12
- MeetingsModule.decorators = [
13
- { type: NgModule, args: [{
14
- imports: [
15
- MeetingsInternalModule,
16
- ],
17
- providers: [
18
- MeetingsService
19
- ]
20
- },] }
21
- ];
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZ3MubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii9jb2RlZnJlc2gvdm9sdW1lL21lZXRpbmdzL3Nka3MvdHlwZXNjcmlwdC9zcmMvbWVldGluZ3Nfc2RrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9tZWV0aW5ncy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DO0FBQ3BDLDRDQUE0QztBQUM1QyxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLGdEQUFnRDtBQUNoRCxvQ0FBb0M7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFVckQsTUFBTSxPQUFPLGNBQWM7OztZQVIxQixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNMLHNCQUFzQjtpQkFDekI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNQLGVBQWU7aUJBQ2xCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlbiAtIGVkaXRlZCBieSB5b3UhXG4vL1xuLy8gVGhpcyBtb2R1bGUgY29udGFpbnMgYW55IGhhbmQtd3JpdHRlbiBzZXJ2aWNlcyBvciBvdGhlciB0aGluZ3MgeW91ciBtb2R1bGVcbi8vIG5lZWRzIHRvIHNoYXJlIHdpdGggYXBwbGljYXRpb25zIHRoYXQgdXNlIGl0LlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVldGluZ3NJbnRlcm5hbE1vZHVsZSB9IGZyb20gJy4vX2ludGVybmFsL21lZXRpbmdzLm1vZHVsZSc7XG5pbXBvcnQgeyBNZWV0aW5nc1NlcnZpY2UgfSBmcm9tICcuL21lZXRpbmdzLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgICBNZWV0aW5nc0ludGVybmFsTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICAgIE1lZXRpbmdzU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1lZXRpbmdzTW9kdWxlIHt9XG4iXX0=