@nylas/web-elements 1.1.0-canary.5 → 1.1.0-canary.7
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/dist/cjs/add-circle-icon.cjs.entry.js +1 -1
- package/dist/cjs/add-circle-icon_22.cjs.entry.js +222 -92
- package/dist/cjs/add-circle-icon_22.cjs.entry.js.map +1 -1
- package/dist/cjs/archive-icon.cjs.entry.js +1 -1
- package/dist/cjs/archive-icon_7.cjs.entry.js +7 -7
- package/dist/cjs/arrow-icon.cjs.entry.js +1 -1
- package/dist/cjs/bold-icon.cjs.entry.js +1 -1
- package/dist/cjs/bold-icon_3.cjs.entry.js +3 -3
- package/dist/cjs/button-component.cjs.entry.js +2 -2
- package/dist/cjs/button-component.cjs.entry.js.map +1 -1
- package/dist/cjs/calendar-cancel-icon.cjs.entry.js +1 -1
- package/dist/cjs/calendar-check-icon.cjs.entry.js +1 -1
- package/dist/cjs/calendar-check-icon_2.cjs.entry.js +2 -2
- package/dist/cjs/calendar-icon.cjs.entry.js +1 -1
- package/dist/cjs/calendar-info-icon.cjs.entry.js +1 -1
- package/dist/cjs/calendar-patterns-icon.cjs.entry.js +1 -1
- package/dist/cjs/checkmark-circle-icon.cjs.entry.js +1 -1
- package/dist/cjs/chevron-icon.cjs.entry.js +1 -1
- package/dist/cjs/chevron-icon_3.cjs.entry.js +4 -4
- package/dist/cjs/close-icon.cjs.entry.js +1 -1
- package/dist/cjs/{constants-6baf1f1d.js → constants-3e962931.js} +11 -1
- package/dist/cjs/{constants-6baf1f1d.js.map → constants-3e962931.js.map} +1 -1
- package/dist/cjs/{constants-0fba94a4.js → constants-d590922e.js} +11 -1
- package/dist/cjs/{constants-0fba94a4.js.map → constants-d590922e.js.map} +1 -1
- package/dist/cjs/document-refresh-icon.cjs.entry.js +1 -1
- package/dist/cjs/flow-icon.cjs.entry.js +1 -1
- package/dist/cjs/folder-icon.cjs.entry.js +1 -1
- package/dist/cjs/forward-icon.cjs.entry.js +1 -1
- package/dist/cjs/forward-icon_6.cjs.entry.js +7 -7
- package/dist/cjs/globe-icon.cjs.entry.js +1 -1
- package/dist/cjs/google-logo-icon.cjs.entry.js +1 -1
- package/dist/cjs/google-logo-icon_4.cjs.entry.js +93 -49
- package/dist/cjs/google-logo-icon_4.cjs.entry.js.map +1 -1
- package/dist/cjs/inbox-icon.cjs.entry.js +1 -1
- package/dist/cjs/index-7af03e3f.js +1 -158
- package/dist/cjs/index-c14ea8f5.js +1 -362
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/info-icon.cjs.entry.js +1 -1
- package/dist/cjs/info-icon_2.cjs.entry.js +2 -2
- package/dist/cjs/italic-icon.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/loading-icon.cjs.entry.js +1 -1
- package/dist/cjs/location-icon.cjs.entry.js +1 -1
- package/dist/cjs/location-off-icon.cjs.entry.js +1 -1
- package/dist/cjs/microsoft-logo-icon.cjs.entry.js +1 -1
- package/dist/cjs/multi-select-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/nylas-additional-participants.cjs.entry.js +1 -1
- package/dist/cjs/{nylas-api-request-2a0e7022.js → nylas-api-request-27c25287.js} +13 -2
- package/dist/cjs/nylas-api-request-27c25287.js.map +1 -0
- package/dist/cjs/{nylas-api-request-55923233.js → nylas-api-request-abdb8dd8.js} +13 -2
- package/dist/cjs/nylas-api-request-abdb8dd8.js.map +1 -0
- package/dist/cjs/nylas-availability-picker.cjs.entry.js +31 -14
- package/dist/cjs/nylas-availability-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-booked-event-card.cjs.entry.js +1 -1
- package/dist/cjs/nylas-booked-event-card_10.cjs.entry.js +5 -5
- package/dist/cjs/nylas-booking-calendar-picker.cjs.entry.js +10 -4
- package/dist/cjs/nylas-booking-calendar-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-calendar-picker.cjs.entry.js +11 -6
- package/dist/cjs/nylas-calendar-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-cancel-booking-form.cjs.entry.js +1 -1
- package/dist/cjs/nylas-cancelled-event-card.cjs.entry.js +1 -1
- package/dist/cjs/nylas-composer.cjs.entry.js +1 -1
- package/dist/cjs/nylas-custom-booking-flow.cjs.entry.js +19 -10
- package/dist/cjs/nylas-custom-booking-flow.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-editor-tabs.cjs.entry.js +67 -38
- package/dist/cjs/nylas-editor-tabs.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-event-description.cjs.entry.js +13 -4
- package/dist/cjs/nylas-event-description.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-event-duration.cjs.entry.js +13 -8
- package/dist/cjs/nylas-event-duration.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-event-info.cjs.entry.js +1 -1
- package/dist/cjs/nylas-event-limits.cjs.entry.js +1 -1
- package/dist/cjs/nylas-event-title.cjs.entry.js +50 -10
- package/dist/cjs/nylas-event-title.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-form-card.cjs.entry.js +1 -1
- package/dist/cjs/nylas-limit-future-bookings.cjs.entry.js +22 -9
- package/dist/cjs/nylas-limit-future-bookings.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-list-configurations.cjs.entry.js +24 -9
- package/dist/cjs/nylas-list-configurations.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-list-folders.cjs.entry.js +1 -1
- package/dist/cjs/nylas-list-threads.cjs.entry.js +1 -1
- package/dist/cjs/nylas-locale-switch.cjs.entry.js +1 -1
- package/dist/cjs/nylas-location-component.cjs.entry.js +15 -4
- package/dist/cjs/nylas-location-component.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-login.cjs.entry.js +1 -1
- package/dist/cjs/nylas-logo.cjs.entry.js +1 -1
- package/dist/cjs/nylas-mailbox-toolbar-button.cjs.entry.js +1 -1
- package/dist/cjs/nylas-mailbox.cjs.entry.js +1 -1
- package/dist/cjs/nylas-min-cancellation-notice.cjs.entry.js +26 -11
- package/dist/cjs/nylas-min-cancellation-notice.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-notification.cjs.entry.js +1 -1
- package/dist/cjs/nylas-provider.cjs.entry.js +3 -3
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +16 -16
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js +1 -1
- package/dist/cjs/nylas-selected-event-card.cjs.entry.js +1 -1
- package/dist/cjs/nylas-summarize-message-button.cjs.entry.js +2 -2
- package/dist/cjs/nylas-threads-refresh.cjs.entry.js +2 -2
- package/dist/cjs/nylas-threads-search.cjs.entry.js +1 -1
- package/dist/cjs/nylas-time-window-picker.cjs.entry.js +1 -1
- package/dist/cjs/nylas-view-email.cjs.entry.js +1 -1
- package/dist/cjs/nylas-view-thread.cjs.entry.js +1 -1
- package/dist/cjs/nylas-web-elements.cjs.js +1 -1
- package/dist/cjs/people-icon.cjs.entry.js +1 -1
- package/dist/cjs/play-icon.cjs.entry.js +1 -1
- package/dist/cjs/play-icon_2.cjs.entry.js +2 -2
- package/dist/cjs/refresh-icon.cjs.entry.js +1 -1
- package/dist/cjs/reply-all-icon.cjs.entry.js +1 -1
- package/dist/cjs/reply-icon.cjs.entry.js +1 -1
- package/dist/cjs/{scheduler-config-store-4d93a9b7.js → scheduler-config-store-37690bf0.js} +10 -4
- package/dist/cjs/scheduler-config-store-37690bf0.js.map +1 -0
- package/dist/cjs/{scheduler-config-store-a0e08cab.js → scheduler-config-store-529c8d7e.js} +10 -4
- package/dist/cjs/scheduler-config-store-529c8d7e.js.map +1 -0
- package/dist/cjs/{scheduler-store-a492526c.js → scheduler-store-0081970d.js} +15 -2
- package/dist/cjs/scheduler-store-0081970d.js.map +1 -0
- package/dist/cjs/{scheduler-store-e148a4cc.js → scheduler-store-67dc1986.js} +15 -2
- package/dist/cjs/scheduler-store-67dc1986.js.map +1 -0
- package/dist/cjs/search-icon.cjs.entry.js +1 -1
- package/dist/cjs/select-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/sent-icon.cjs.entry.js +1 -1
- package/dist/cjs/spam-icon.cjs.entry.js +1 -1
- package/dist/cjs/star-icon.cjs.entry.js +1 -1
- package/dist/cjs/stop-icon.cjs.entry.js +1 -1
- package/dist/cjs/time-period-selector.cjs.entry.js +1 -1
- package/dist/cjs/tooltip-component.cjs.entry.js +1 -1
- package/dist/cjs/translate-icon.cjs.entry.js +1 -1
- package/dist/cjs/trash-icon.cjs.entry.js +1 -1
- package/dist/cjs/underline-icon.cjs.entry.js +1 -1
- package/dist/cjs/warning-icon.cjs.entry.js +1 -1
- package/dist/collection/common/constants.js +9 -0
- package/dist/collection/common/constants.js.map +1 -1
- package/dist/collection/common/icons/add-circle.js +1 -1
- package/dist/collection/common/icons/archive.js +1 -1
- package/dist/collection/common/icons/arrow.js +1 -1
- package/dist/collection/common/icons/bold.js +1 -1
- package/dist/collection/common/icons/calendar-cancel.js +1 -1
- package/dist/collection/common/icons/calendar-check.js +1 -1
- package/dist/collection/common/icons/calendar-info.js +1 -1
- package/dist/collection/common/icons/calendar-patterns.js +1 -1
- package/dist/collection/common/icons/calendar.js +1 -1
- package/dist/collection/common/icons/checkmark-circle.js +1 -1
- package/dist/collection/common/icons/chevron.js +1 -1
- package/dist/collection/common/icons/close.js +1 -1
- package/dist/collection/common/icons/document-refresh.js +1 -1
- package/dist/collection/common/icons/flow.js +1 -1
- package/dist/collection/common/icons/folder.js +1 -1
- package/dist/collection/common/icons/forward.js +1 -1
- package/dist/collection/common/icons/globe.js +1 -1
- package/dist/collection/common/icons/google-logo.js +1 -1
- package/dist/collection/common/icons/inbox.js +1 -1
- package/dist/collection/common/icons/info.js +1 -1
- package/dist/collection/common/icons/italic.js +1 -1
- package/dist/collection/common/icons/loading.js +1 -1
- package/dist/collection/common/icons/location-off.js +1 -1
- package/dist/collection/common/icons/location.js +1 -1
- package/dist/collection/common/icons/microsoft-logo.js +1 -1
- package/dist/collection/common/icons/nylas-logo.js +1 -1
- package/dist/collection/common/icons/people.js +1 -1
- package/dist/collection/common/icons/play.js +1 -1
- package/dist/collection/common/icons/refresh.js +1 -1
- package/dist/collection/common/icons/reply-all.js +1 -1
- package/dist/collection/common/icons/reply.js +1 -1
- package/dist/collection/common/icons/search.js +1 -1
- package/dist/collection/common/icons/sent.js +1 -1
- package/dist/collection/common/icons/spam.js +1 -1
- package/dist/collection/common/icons/star.js +1 -1
- package/dist/collection/common/icons/stop.js +1 -1
- package/dist/collection/common/icons/translate.js +1 -1
- package/dist/collection/common/icons/trash.js +1 -1
- package/dist/collection/common/icons/underline.js +1 -1
- package/dist/collection/common/icons/warning.js +1 -1
- package/dist/collection/common/nylas-api-request.js +12 -1
- package/dist/collection/common/nylas-api-request.js.map +1 -1
- package/dist/collection/components/design-system/button-component/button-component.css +5 -0
- package/dist/collection/components/design-system/button-component/button-component.js +1 -1
- package/dist/collection/components/design-system/multi-select-dropdown/multi-select-dropdown.js +2 -2
- package/dist/collection/components/design-system/select-dropdown/select-dropdown.js +2 -2
- package/dist/collection/components/design-system/time-period-selector/time-period-selector.js +1 -1
- package/dist/collection/components/design-system/tooltip-component/toolitp-component.js +1 -1
- package/dist/collection/components/mailbox/nylas-composer/nylas-composer.js +1 -1
- package/dist/collection/components/mailbox/nylas-list-folders/nylas-list-folders.js +1 -1
- package/dist/collection/components/mailbox/nylas-list-threads/nylas-list-threads.js +1 -1
- package/dist/collection/components/mailbox/nylas-mailbox/nylas-mailbox.js +1 -1
- package/dist/collection/components/mailbox/nylas-mailbox-toolbar-button/nylas-mailbox-toolbar-button.js +1 -1
- package/dist/collection/components/mailbox/nylas-summarize-message-button/nylas-summarize-message-button.js +2 -2
- package/dist/collection/components/mailbox/nylas-threads-refresh/nylas-threads-refresh.js +2 -2
- package/dist/collection/components/mailbox/nylas-threads-search/nylas-threads-search.js +1 -1
- package/dist/collection/components/mailbox/nylas-view-email/nylas-view-email.js +1 -1
- package/dist/collection/components/mailbox/nylas-view-thread/nylas-view-thread.js +1 -1
- package/dist/collection/components/nylas-login/nylas-login.js +1 -1
- package/dist/collection/components/nylas-provider/nylas-provider.js +2 -2
- package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.js +1 -1
- package/dist/collection/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.js +1 -1
- package/dist/collection/components/scheduler/nylas-notification/nylas-notification.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js +55 -15
- package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.js +32 -5
- package/dist/collection/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.js +23 -14
- package/dist/collection/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.js +41 -9
- package/dist/collection/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.css +35 -3
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js +99 -36
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/tab-contents.js +4 -4
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/tab-contents.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.css +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js +34 -2
- package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.css +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.js +35 -7
- package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-info/nylas-event-info.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-limits/nylas-event-limits.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.css +8 -1
- package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.js +83 -9
- package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-form-card/nylas-form-card.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.js +45 -9
- package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.css +39 -2
- package/dist/collection/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.js +46 -9
- package/dist/collection/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-location-component/nylas-location-component.css +2 -2
- package/dist/collection/components/scheduler-editor/nylas-location-component/nylas-location-component.js +37 -3
- package/dist/collection/components/scheduler-editor/nylas-location-component/nylas-location-component.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.js +49 -11
- package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.css +6 -0
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js +36 -16
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.js +1 -1
- package/dist/collection/connector/nylas-scheduler-connector/errors/index.js +8 -0
- package/dist/collection/connector/nylas-scheduler-connector/errors/index.js.map +1 -1
- package/dist/collection/connector/shared/api/scheduler-config.js +6 -6
- package/dist/collection/connector/shared/api/scheduler-config.js.map +1 -1
- package/dist/collection/connector/shared/api/scheduler.js +6 -1
- package/dist/collection/connector/shared/api/scheduler.js.map +1 -1
- package/dist/collection/index.js +0 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/stores/scheduler-config-store.js +9 -3
- package/dist/collection/stores/scheduler-config-store.js.map +1 -1
- package/dist/components/add-circle.js +1 -1
- package/dist/components/archive.js +1 -1
- package/dist/components/arrow.js +1 -1
- package/dist/components/bold.js +1 -1
- package/dist/components/button-component2.js +2 -2
- package/dist/components/button-component2.js.map +1 -1
- package/dist/components/calendar-cancel.js +1 -1
- package/dist/components/calendar-check.js +1 -1
- package/dist/components/calendar-info.js +1 -1
- package/dist/components/calendar-patterns.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/checkmark-circle.js +1 -1
- package/dist/components/chevron.js +1 -1
- package/dist/components/close.js +1 -1
- package/dist/components/constants.js +11 -2
- package/dist/components/constants.js.map +1 -1
- package/dist/components/document-refresh-icon.js +1 -1
- package/dist/components/flow.js +1 -1
- package/dist/components/focus-visible.js +1 -1
- package/dist/components/folder.js +1 -1
- package/dist/components/forward.js +1 -1
- package/dist/components/globe.js +1 -1
- package/dist/components/google-logo.js +1 -1
- package/dist/components/inbox.js +1 -1
- package/dist/components/index.d.ts +0 -179
- package/dist/components/index.es.js +2 -194
- package/dist/components/index.es.js.map +1 -1
- package/dist/components/index.js +2 -89
- package/dist/components/index.js.map +1 -1
- package/dist/components/index2.js +196 -0
- package/dist/components/index2.js.map +1 -0
- package/dist/components/info.js +1 -1
- package/dist/components/italic.js +1 -1
- package/dist/components/loading.js +1 -1
- package/dist/components/location-off.js +1 -1
- package/dist/components/location.js +1 -1
- package/dist/components/mailbox-store.js +3 -2
- package/dist/components/mailbox-store.js.map +1 -1
- package/dist/components/microsoft-logo.js +1 -1
- package/dist/components/multi-select-dropdown2.js +3 -3
- package/dist/components/nylas-additional-participants.js +2 -2
- package/dist/components/nylas-api-request.js +58 -0
- package/dist/components/nylas-api-request.js.map +1 -0
- package/dist/components/nylas-availability-picker2.js +33 -14
- package/dist/components/nylas-availability-picker2.js.map +1 -1
- package/dist/components/nylas-booked-event-card2.js +1 -1
- package/dist/components/nylas-booking-calendar-picker2.js +12 -5
- package/dist/components/nylas-booking-calendar-picker2.js.map +1 -1
- package/dist/components/nylas-booking-form2.js +1 -1
- package/dist/components/nylas-buffer-time2.js +1 -1
- package/dist/components/nylas-calendar-picker2.js +13 -8
- package/dist/components/nylas-calendar-picker2.js.map +1 -1
- package/dist/components/nylas-cancel-booking-form2.js +2 -2
- package/dist/components/nylas-cancelled-event-card2.js +2 -2
- package/dist/components/nylas-composer2.js +2 -2
- package/dist/components/nylas-custom-booking-flow2.js +23 -12
- package/dist/components/nylas-custom-booking-flow2.js.map +1 -1
- package/dist/components/nylas-date-picker2.js +1 -1
- package/dist/components/nylas-editor-tabs2.js +74 -43
- package/dist/components/nylas-editor-tabs2.js.map +1 -1
- package/dist/components/nylas-event-description2.js +17 -6
- package/dist/components/nylas-event-description2.js.map +1 -1
- package/dist/components/nylas-event-duration2.js +16 -9
- package/dist/components/nylas-event-duration2.js.map +1 -1
- package/dist/components/nylas-event-info2.js +2 -2
- package/dist/components/nylas-event-limits2.js +2 -2
- package/dist/components/nylas-event-title2.js +56 -13
- package/dist/components/nylas-event-title2.js.map +1 -1
- package/dist/components/nylas-form-card2.js +2 -2
- package/dist/components/nylas-if-state.js +1 -1
- package/dist/components/nylas-limit-future-bookings2.js +25 -10
- package/dist/components/nylas-limit-future-bookings2.js.map +1 -1
- package/dist/components/nylas-list-configurations2.js +28 -11
- package/dist/components/nylas-list-configurations2.js.map +1 -1
- package/dist/components/nylas-list-folders.js +2 -2
- package/dist/components/nylas-list-threads.js +2 -2
- package/dist/components/nylas-location-component2.js +18 -5
- package/dist/components/nylas-location-component2.js.map +1 -1
- package/dist/components/nylas-login.js +1 -1
- package/dist/components/nylas-logo2.js +1 -1
- package/dist/components/nylas-mailbox-pagination.js +1 -1
- package/dist/components/nylas-mailbox-toolbar-button.js +2 -2
- package/dist/components/nylas-mailbox.js +2 -2
- package/dist/components/nylas-min-cancellation-notice2.js +29 -12
- package/dist/components/nylas-min-cancellation-notice2.js.map +1 -1
- package/dist/components/nylas-notification2.js +2 -2
- package/dist/components/nylas-provider.js +2 -2
- package/dist/components/nylas-scheduler-editor.js +18 -58
- package/dist/components/nylas-scheduler-editor.js.map +1 -1
- package/dist/components/nylas-scheduling.js +1 -1
- package/dist/components/nylas-selected-event-card2.js +1 -1
- package/dist/components/nylas-summarize-message-button2.js +3 -3
- package/dist/components/nylas-threads-refresh.js +3 -3
- package/dist/components/nylas-threads-search.js +2 -2
- package/dist/components/nylas-time-window-picker2.js +2 -2
- package/dist/components/nylas-timeslot-picker2.js +1 -1
- package/dist/components/nylas-view-email2.js +2 -2
- package/dist/components/nylas-view-thread.js +2 -2
- package/dist/components/people-icon.js +1 -1
- package/dist/components/play.js +1 -1
- package/dist/components/refresh.js +1 -1
- package/dist/components/register-component.js +1 -1
- package/dist/components/reply-all.js +1 -1
- package/dist/components/reply.js +1 -1
- package/dist/components/scheduler-config-store.js +10 -4
- package/dist/components/scheduler-config-store.js.map +1 -1
- package/dist/components/scheduler-store.js +16 -3
- package/dist/components/scheduler-store.js.map +1 -1
- package/dist/components/search.js +1 -1
- package/dist/components/select-dropdown2.js +2 -2
- package/dist/components/sent.js +1 -1
- package/dist/components/spam.js +1 -1
- package/dist/components/star.js +1 -1
- package/dist/components/stop.js +1 -1
- package/dist/components/time-period-selector2.js +2 -2
- package/dist/components/toolitp-component.js +1 -1
- package/dist/components/translate.js +1 -1
- package/dist/components/trash.js +1 -1
- package/dist/components/underline.js +1 -1
- package/dist/components/utils.js +1 -1
- package/dist/components/warning.js +1 -1
- package/dist/esm/add-circle-icon.entry.js +1 -1
- package/dist/esm/add-circle-icon_22.entry.js +222 -92
- package/dist/esm/add-circle-icon_22.entry.js.map +1 -1
- package/dist/esm/archive-icon.entry.js +1 -1
- package/dist/esm/archive-icon_7.entry.js +7 -7
- package/dist/esm/arrow-icon.entry.js +1 -1
- package/dist/esm/bold-icon.entry.js +1 -1
- package/dist/esm/bold-icon_3.entry.js +3 -3
- package/dist/esm/button-component.entry.js +2 -2
- package/dist/esm/button-component.entry.js.map +1 -1
- package/dist/esm/calendar-cancel-icon.entry.js +1 -1
- package/dist/esm/calendar-check-icon.entry.js +1 -1
- package/dist/esm/calendar-check-icon_2.entry.js +2 -2
- package/dist/esm/calendar-icon.entry.js +1 -1
- package/dist/esm/calendar-info-icon.entry.js +1 -1
- package/dist/esm/calendar-patterns-icon.entry.js +1 -1
- package/dist/esm/checkmark-circle-icon.entry.js +1 -1
- package/dist/esm/chevron-icon.entry.js +1 -1
- package/dist/esm/chevron-icon_3.entry.js +4 -4
- package/dist/esm/close-icon.entry.js +1 -1
- package/dist/esm/{constants-335dffcf.js → constants-bf39e913.js} +11 -2
- package/dist/esm/{constants-335dffcf.js.map → constants-bf39e913.js.map} +1 -1
- package/dist/esm/{constants-6ee60d6d.js → constants-f34b9c6e.js} +11 -2
- package/dist/esm/{constants-6ee60d6d.js.map → constants-f34b9c6e.js.map} +1 -1
- package/dist/esm/document-refresh-icon.entry.js +1 -1
- package/dist/esm/flow-icon.entry.js +1 -1
- package/dist/esm/folder-icon.entry.js +1 -1
- package/dist/esm/forward-icon.entry.js +1 -1
- package/dist/esm/forward-icon_6.entry.js +7 -7
- package/dist/esm/globe-icon.entry.js +1 -1
- package/dist/esm/google-logo-icon.entry.js +1 -1
- package/dist/esm/google-logo-icon_4.entry.js +93 -49
- package/dist/esm/google-logo-icon_4.entry.js.map +1 -1
- package/dist/esm/inbox-icon.entry.js +1 -1
- package/dist/esm/index-7cb0dd3d.js +1 -158
- package/dist/esm/index-8362ce5c.js +1 -362
- package/dist/esm/index.js +1 -1
- package/dist/esm/info-icon.entry.js +1 -1
- package/dist/esm/info-icon_2.entry.js +2 -2
- package/dist/esm/italic-icon.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/loading-icon.entry.js +1 -1
- package/dist/esm/location-icon.entry.js +1 -1
- package/dist/esm/location-off-icon.entry.js +1 -1
- package/dist/esm/microsoft-logo-icon.entry.js +1 -1
- package/dist/esm/multi-select-dropdown.entry.js +2 -2
- package/dist/esm/nylas-additional-participants.entry.js +1 -1
- package/dist/esm/{nylas-api-request-3120d9ac.js → nylas-api-request-8932547a.js} +13 -2
- package/dist/esm/nylas-api-request-8932547a.js.map +1 -0
- package/dist/{nylas-web-elements/nylas-api-request-4f3dbb72.js → esm/nylas-api-request-b085294d.js} +13 -2
- package/dist/esm/nylas-api-request-b085294d.js.map +1 -0
- package/dist/esm/nylas-availability-picker.entry.js +31 -14
- package/dist/esm/nylas-availability-picker.entry.js.map +1 -1
- package/dist/esm/nylas-booked-event-card.entry.js +1 -1
- package/dist/esm/nylas-booked-event-card_10.entry.js +5 -5
- package/dist/esm/nylas-booking-calendar-picker.entry.js +10 -4
- package/dist/esm/nylas-booking-calendar-picker.entry.js.map +1 -1
- package/dist/esm/nylas-calendar-picker.entry.js +11 -6
- package/dist/esm/nylas-calendar-picker.entry.js.map +1 -1
- package/dist/esm/nylas-cancel-booking-form.entry.js +1 -1
- package/dist/esm/nylas-cancelled-event-card.entry.js +1 -1
- package/dist/esm/nylas-composer.entry.js +1 -1
- package/dist/esm/nylas-custom-booking-flow.entry.js +19 -10
- package/dist/esm/nylas-custom-booking-flow.entry.js.map +1 -1
- package/dist/esm/nylas-editor-tabs.entry.js +67 -38
- package/dist/esm/nylas-editor-tabs.entry.js.map +1 -1
- package/dist/esm/nylas-event-description.entry.js +13 -4
- package/dist/esm/nylas-event-description.entry.js.map +1 -1
- package/dist/esm/nylas-event-duration.entry.js +13 -8
- package/dist/esm/nylas-event-duration.entry.js.map +1 -1
- package/dist/esm/nylas-event-info.entry.js +1 -1
- package/dist/esm/nylas-event-limits.entry.js +1 -1
- package/dist/esm/nylas-event-title.entry.js +50 -10
- package/dist/esm/nylas-event-title.entry.js.map +1 -1
- package/dist/esm/nylas-form-card.entry.js +1 -1
- package/dist/esm/nylas-limit-future-bookings.entry.js +22 -9
- package/dist/esm/nylas-limit-future-bookings.entry.js.map +1 -1
- package/dist/esm/nylas-list-configurations.entry.js +24 -9
- package/dist/esm/nylas-list-configurations.entry.js.map +1 -1
- package/dist/esm/nylas-list-folders.entry.js +1 -1
- package/dist/esm/nylas-list-threads.entry.js +1 -1
- package/dist/esm/nylas-locale-switch.entry.js +1 -1
- package/dist/esm/nylas-location-component.entry.js +15 -4
- package/dist/esm/nylas-location-component.entry.js.map +1 -1
- package/dist/esm/nylas-login.entry.js +1 -1
- package/dist/esm/nylas-logo.entry.js +1 -1
- package/dist/esm/nylas-mailbox-toolbar-button.entry.js +1 -1
- package/dist/esm/nylas-mailbox.entry.js +1 -1
- package/dist/esm/nylas-min-cancellation-notice.entry.js +26 -11
- package/dist/esm/nylas-min-cancellation-notice.entry.js.map +1 -1
- package/dist/esm/nylas-notification.entry.js +1 -1
- package/dist/esm/nylas-provider.entry.js +3 -3
- package/dist/esm/nylas-scheduler-editor.entry.js +16 -16
- package/dist/esm/nylas-scheduler-editor.entry.js.map +1 -1
- package/dist/esm/nylas-scheduling.entry.js +1 -1
- package/dist/esm/nylas-selected-event-card.entry.js +1 -1
- package/dist/esm/nylas-summarize-message-button.entry.js +2 -2
- package/dist/esm/nylas-threads-refresh.entry.js +2 -2
- package/dist/esm/nylas-threads-search.entry.js +1 -1
- package/dist/esm/nylas-time-window-picker.entry.js +1 -1
- package/dist/esm/nylas-view-email.entry.js +1 -1
- package/dist/esm/nylas-view-thread.entry.js +1 -1
- package/dist/esm/nylas-web-elements.js +1 -1
- package/dist/esm/people-icon.entry.js +1 -1
- package/dist/esm/play-icon.entry.js +1 -1
- package/dist/esm/play-icon_2.entry.js +2 -2
- package/dist/esm/refresh-icon.entry.js +1 -1
- package/dist/esm/reply-all-icon.entry.js +1 -1
- package/dist/esm/reply-icon.entry.js +1 -1
- package/dist/esm/{scheduler-config-store-6222c0ed.js → scheduler-config-store-07d98279.js} +10 -4
- package/dist/esm/scheduler-config-store-07d98279.js.map +1 -0
- package/dist/esm/{scheduler-config-store-0efc3519.js → scheduler-config-store-8f2e658e.js} +10 -4
- package/dist/esm/scheduler-config-store-8f2e658e.js.map +1 -0
- package/dist/{nylas-web-elements/scheduler-store-8ddcc496.js → esm/scheduler-store-66c2168c.js} +15 -2
- package/dist/esm/scheduler-store-66c2168c.js.map +1 -0
- package/dist/esm/{scheduler-store-39d37291.js → scheduler-store-a175fc3e.js} +15 -2
- package/dist/esm/scheduler-store-a175fc3e.js.map +1 -0
- package/dist/esm/search-icon.entry.js +1 -1
- package/dist/esm/select-dropdown.entry.js +2 -2
- package/dist/esm/sent-icon.entry.js +1 -1
- package/dist/esm/spam-icon.entry.js +1 -1
- package/dist/esm/star-icon.entry.js +1 -1
- package/dist/esm/stop-icon.entry.js +1 -1
- package/dist/esm/time-period-selector.entry.js +1 -1
- package/dist/esm/tooltip-component.entry.js +1 -1
- package/dist/esm/translate-icon.entry.js +1 -1
- package/dist/esm/trash-icon.entry.js +1 -1
- package/dist/esm/underline-icon.entry.js +1 -1
- package/dist/esm/warning-icon.entry.js +1 -1
- package/dist/nylas-web-elements/add-circle-icon.entry.js +1 -1
- package/dist/nylas-web-elements/archive-icon.entry.js +1 -1
- package/dist/nylas-web-elements/arrow-icon.entry.js +1 -1
- package/dist/nylas-web-elements/bold-icon.entry.js +1 -1
- package/dist/nylas-web-elements/button-component.entry.js +2 -2
- package/dist/nylas-web-elements/button-component.entry.js.map +1 -1
- package/dist/nylas-web-elements/calendar-cancel-icon.entry.js +1 -1
- package/dist/nylas-web-elements/calendar-check-icon.entry.js +1 -1
- package/dist/nylas-web-elements/calendar-icon.entry.js +1 -1
- package/dist/nylas-web-elements/calendar-info-icon.entry.js +1 -1
- package/dist/nylas-web-elements/calendar-patterns-icon.entry.js +1 -1
- package/dist/nylas-web-elements/checkmark-circle-icon.entry.js +1 -1
- package/dist/nylas-web-elements/chevron-icon.entry.js +1 -1
- package/dist/nylas-web-elements/close-icon.entry.js +1 -1
- package/dist/nylas-web-elements/{constants-335dffcf.js → constants-bf39e913.js} +11 -2
- package/dist/nylas-web-elements/{constants-335dffcf.js.map → constants-bf39e913.js.map} +1 -1
- package/dist/nylas-web-elements/document-refresh-icon.entry.js +1 -1
- package/dist/nylas-web-elements/flow-icon.entry.js +1 -1
- package/dist/nylas-web-elements/folder-icon.entry.js +1 -1
- package/dist/nylas-web-elements/forward-icon.entry.js +1 -1
- package/dist/nylas-web-elements/globe-icon.entry.js +1 -1
- package/dist/nylas-web-elements/google-logo-icon.entry.js +1 -1
- package/dist/nylas-web-elements/inbox-icon.entry.js +1 -1
- package/dist/nylas-web-elements/index.esm.js +1 -1
- package/dist/nylas-web-elements/info-icon.entry.js +1 -1
- package/dist/nylas-web-elements/italic-icon.entry.js +1 -1
- package/dist/nylas-web-elements/loading-icon.entry.js +1 -1
- package/dist/nylas-web-elements/location-icon.entry.js +1 -1
- package/dist/nylas-web-elements/location-off-icon.entry.js +1 -1
- package/dist/nylas-web-elements/microsoft-logo-icon.entry.js +1 -1
- package/dist/nylas-web-elements/multi-select-dropdown.entry.js +2 -2
- package/dist/nylas-web-elements/nylas-additional-participants.entry.js +1 -1
- package/dist/{esm/nylas-api-request-4f3dbb72.js → nylas-web-elements/nylas-api-request-b085294d.js} +13 -2
- package/dist/nylas-web-elements/nylas-api-request-b085294d.js.map +1 -0
- package/dist/nylas-web-elements/nylas-availability-picker.entry.js +31 -14
- package/dist/nylas-web-elements/nylas-availability-picker.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-booked-event-card.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-booking-calendar-picker.entry.js +10 -4
- package/dist/nylas-web-elements/nylas-booking-calendar-picker.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-calendar-picker.entry.js +11 -6
- package/dist/nylas-web-elements/nylas-calendar-picker.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-cancel-booking-form.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-cancelled-event-card.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-composer.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-custom-booking-flow.entry.js +19 -10
- package/dist/nylas-web-elements/nylas-custom-booking-flow.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-editor-tabs.entry.js +67 -38
- package/dist/nylas-web-elements/nylas-editor-tabs.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-event-description.entry.js +13 -4
- package/dist/nylas-web-elements/nylas-event-description.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-event-duration.entry.js +13 -8
- package/dist/nylas-web-elements/nylas-event-duration.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-event-info.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-event-limits.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-event-title.entry.js +50 -10
- package/dist/nylas-web-elements/nylas-event-title.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-form-card.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-limit-future-bookings.entry.js +22 -9
- package/dist/nylas-web-elements/nylas-limit-future-bookings.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-list-configurations.entry.js +24 -9
- package/dist/nylas-web-elements/nylas-list-configurations.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-list-folders.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-list-threads.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-locale-switch.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-location-component.entry.js +15 -4
- package/dist/nylas-web-elements/nylas-location-component.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-login.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-logo.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-mailbox-toolbar-button.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-mailbox.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-min-cancellation-notice.entry.js +26 -11
- package/dist/nylas-web-elements/nylas-min-cancellation-notice.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-notification.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-provider.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-scheduler-editor.entry.js +16 -16
- package/dist/nylas-web-elements/nylas-scheduler-editor.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-scheduling.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-selected-event-card.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-summarize-message-button.entry.js +2 -2
- package/dist/nylas-web-elements/nylas-threads-refresh.entry.js +2 -2
- package/dist/nylas-web-elements/nylas-threads-search.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-time-window-picker.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-view-email.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-view-thread.entry.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
- package/dist/nylas-web-elements/p-00a9efc1.entry.js +2 -0
- package/dist/nylas-web-elements/p-1a91cce5.entry.js +2 -0
- package/dist/nylas-web-elements/p-1a91cce5.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-fe3b8e66.entry.js → p-1d25ca06.entry.js} +2 -2
- package/dist/nylas-web-elements/p-1e445e86.entry.js +2 -0
- package/dist/nylas-web-elements/{p-7692056f.entry.js → p-2081b475.entry.js} +2 -2
- package/dist/nylas-web-elements/p-22e5436c.js +2 -0
- package/dist/nylas-web-elements/p-22e5436c.js.map +1 -0
- package/dist/nylas-web-elements/p-2b636359.entry.js +2 -0
- package/dist/nylas-web-elements/p-2b636359.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-618b94cd.entry.js → p-30784693.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-1260ac06.entry.js → p-33b940fb.entry.js} +2 -2
- package/dist/nylas-web-elements/p-343a02e1.entry.js +2 -0
- package/dist/nylas-web-elements/{p-674b6d5d.entry.js → p-343b8684.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-1c94940d.entry.js → p-3909ec3f.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-9c399019.entry.js → p-3b281401.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-55368bc0.entry.js → p-42791515.entry.js} +2 -2
- package/dist/nylas-web-elements/p-44a9ce77.entry.js +2 -0
- package/dist/nylas-web-elements/{p-1819b3d7.js → p-49f716ed.js} +4 -4
- package/dist/nylas-web-elements/p-49f716ed.js.map +1 -0
- package/dist/nylas-web-elements/{p-1ab25f04.entry.js → p-50b4a80f.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-266f9995.entry.js → p-571472d4.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-57b753c6.entry.js → p-607b547b.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-424f4d9a.entry.js → p-6110351b.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-1655dec3.entry.js → p-665ef10b.entry.js} +4 -4
- package/dist/nylas-web-elements/p-665ef10b.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-945caf14.entry.js → p-694b511a.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-18a936a3.entry.js → p-73c062f8.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-c451c9e1.entry.js → p-75a8d077.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-c199d203.entry.js → p-80d6175c.entry.js} +2 -2
- package/dist/nylas-web-elements/p-939db546.entry.js +2 -0
- package/dist/nylas-web-elements/{p-858f0aad.entry.js → p-95a3094a.entry.js} +2 -2
- package/dist/nylas-web-elements/p-a628eaeb.js +2 -0
- package/dist/nylas-web-elements/p-a628eaeb.js.map +1 -0
- package/dist/nylas-web-elements/{p-04e3a98e.entry.js → p-ad64c2b8.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-8b1a6e27.entry.js → p-b25821e1.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-572bf8c2.entry.js → p-b53062f7.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-3f6155de.entry.js → p-bbf9aff2.entry.js} +2 -2
- package/dist/nylas-web-elements/p-c20ab972.entry.js +2 -0
- package/dist/nylas-web-elements/{p-ae893050.entry.js → p-cc674b3b.entry.js} +3 -3
- package/dist/nylas-web-elements/{p-9d4bffbb.entry.js → p-d8f09631.entry.js} +2 -2
- package/dist/nylas-web-elements/p-db15d382.js +2 -0
- package/dist/nylas-web-elements/p-db15d382.js.map +1 -0
- package/dist/nylas-web-elements/{p-81ea7310.entry.js → p-df6d54c7.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-370cdcca.entry.js → p-f154a362.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-9b195811.entry.js → p-f1f8f745.entry.js} +2 -2
- package/dist/nylas-web-elements/people-icon.entry.js +1 -1
- package/dist/nylas-web-elements/play-icon.entry.js +1 -1
- package/dist/nylas-web-elements/refresh-icon.entry.js +1 -1
- package/dist/nylas-web-elements/reply-all-icon.entry.js +1 -1
- package/dist/nylas-web-elements/reply-icon.entry.js +1 -1
- package/dist/nylas-web-elements/{scheduler-config-store-0efc3519.js → scheduler-config-store-8f2e658e.js} +10 -4
- package/dist/nylas-web-elements/scheduler-config-store-8f2e658e.js.map +1 -0
- package/dist/{esm/scheduler-store-8ddcc496.js → nylas-web-elements/scheduler-store-66c2168c.js} +15 -2
- package/dist/nylas-web-elements/scheduler-store-66c2168c.js.map +1 -0
- package/dist/nylas-web-elements/search-icon.entry.js +1 -1
- package/dist/nylas-web-elements/select-dropdown.entry.js +2 -2
- package/dist/nylas-web-elements/sent-icon.entry.js +1 -1
- package/dist/nylas-web-elements/spam-icon.entry.js +1 -1
- package/dist/nylas-web-elements/star-icon.entry.js +1 -1
- package/dist/nylas-web-elements/stop-icon.entry.js +1 -1
- package/dist/nylas-web-elements/time-period-selector.entry.js +1 -1
- package/dist/nylas-web-elements/tooltip-component.entry.js +1 -1
- package/dist/nylas-web-elements/translate-icon.entry.js +1 -1
- package/dist/nylas-web-elements/trash-icon.entry.js +1 -1
- package/dist/nylas-web-elements/underline-icon.entry.js +1 -1
- package/dist/nylas-web-elements/warning-icon.entry.js +1 -1
- package/dist/types/common/constants.d.ts +2 -0
- package/dist/types/common/nylas-api-request.d.ts +3 -0
- package/dist/types/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.d.ts +10 -4
- package/dist/types/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.d.ts +2 -0
- package/dist/types/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.d.ts +3 -2
- package/dist/types/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.d.ts +4 -1
- package/dist/types/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.d.ts +35 -5
- package/dist/types/components/scheduler-editor/nylas-event-description/nylas-event-description.d.ts +3 -0
- package/dist/types/components/scheduler-editor/nylas-event-duration/nylas-event-duration.d.ts +3 -0
- package/dist/types/components/scheduler-editor/nylas-event-title/nylas-event-title.d.ts +6 -1
- package/dist/types/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.d.ts +6 -6
- package/dist/types/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.d.ts +2 -0
- package/dist/types/components/scheduler-editor/nylas-location-component/nylas-location-component.d.ts +3 -0
- package/dist/types/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.d.ts +4 -1
- package/dist/types/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.d.ts +3 -2
- package/dist/types/components.d.ts +110 -22
- package/dist/types/connector/nylas-connector/index.d.ts +1 -1
- package/dist/types/connector/nylas-scheduler-config-connector/index.d.ts +1 -1
- package/dist/types/connector/nylas-scheduler-connector/errors/index.d.ts +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/stores/scheduler-config-store.d.ts +6 -2
- package/package.json +4 -2
- package/dist/cjs/nylas-api-request-2a0e7022.js.map +0 -1
- package/dist/cjs/nylas-api-request-55923233.js.map +0 -1
- package/dist/cjs/scheduler-config-store-4d93a9b7.js.map +0 -1
- package/dist/cjs/scheduler-config-store-a0e08cab.js.map +0 -1
- package/dist/cjs/scheduler-store-a492526c.js.map +0 -1
- package/dist/cjs/scheduler-store-e148a4cc.js.map +0 -1
- package/dist/esm/nylas-api-request-3120d9ac.js.map +0 -1
- package/dist/esm/nylas-api-request-4f3dbb72.js.map +0 -1
- package/dist/esm/scheduler-config-store-0efc3519.js.map +0 -1
- package/dist/esm/scheduler-config-store-6222c0ed.js.map +0 -1
- package/dist/esm/scheduler-store-39d37291.js.map +0 -1
- package/dist/esm/scheduler-store-8ddcc496.js.map +0 -1
- package/dist/nylas-web-elements/nylas-api-request-4f3dbb72.js.map +0 -1
- package/dist/nylas-web-elements/p-0edb3b69.entry.js +0 -2
- package/dist/nylas-web-elements/p-1655dec3.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-1819b3d7.js.map +0 -1
- package/dist/nylas-web-elements/p-1aa7b357.js +0 -2
- package/dist/nylas-web-elements/p-1aa7b357.js.map +0 -1
- package/dist/nylas-web-elements/p-1f843391.js +0 -2
- package/dist/nylas-web-elements/p-1f843391.js.map +0 -1
- package/dist/nylas-web-elements/p-3116f5cc.js +0 -2
- package/dist/nylas-web-elements/p-3116f5cc.js.map +0 -1
- package/dist/nylas-web-elements/p-47180df9.entry.js +0 -2
- package/dist/nylas-web-elements/p-605142a9.entry.js +0 -2
- package/dist/nylas-web-elements/p-6dcc9411.entry.js +0 -2
- package/dist/nylas-web-elements/p-6dcc9411.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-9d0c0340.entry.js +0 -2
- package/dist/nylas-web-elements/p-9d75bcb2.entry.js +0 -2
- package/dist/nylas-web-elements/p-9d75bcb2.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-be7124f0.entry.js +0 -2
- package/dist/nylas-web-elements/p-c45ac7c6.entry.js +0 -2
- package/dist/nylas-web-elements/scheduler-config-store-0efc3519.js.map +0 -1
- package/dist/nylas-web-elements/scheduler-store-8ddcc496.js.map +0 -1
- /package/dist/nylas-web-elements/{p-c45ac7c6.entry.js.map → p-00a9efc1.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-fe3b8e66.entry.js.map → p-1d25ca06.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-47180df9.entry.js.map → p-1e445e86.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-7692056f.entry.js.map → p-2081b475.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-618b94cd.entry.js.map → p-30784693.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-1260ac06.entry.js.map → p-33b940fb.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-be7124f0.entry.js.map → p-343a02e1.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-674b6d5d.entry.js.map → p-343b8684.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-1c94940d.entry.js.map → p-3909ec3f.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-9c399019.entry.js.map → p-3b281401.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-55368bc0.entry.js.map → p-42791515.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-605142a9.entry.js.map → p-44a9ce77.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-1ab25f04.entry.js.map → p-50b4a80f.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-266f9995.entry.js.map → p-571472d4.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-57b753c6.entry.js.map → p-607b547b.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-424f4d9a.entry.js.map → p-6110351b.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-945caf14.entry.js.map → p-694b511a.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-18a936a3.entry.js.map → p-73c062f8.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-c451c9e1.entry.js.map → p-75a8d077.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-c199d203.entry.js.map → p-80d6175c.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-9d0c0340.entry.js.map → p-939db546.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-858f0aad.entry.js.map → p-95a3094a.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-04e3a98e.entry.js.map → p-ad64c2b8.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-8b1a6e27.entry.js.map → p-b25821e1.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-572bf8c2.entry.js.map → p-b53062f7.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3f6155de.entry.js.map → p-bbf9aff2.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-0edb3b69.entry.js.map → p-c20ab972.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-ae893050.entry.js.map → p-cc674b3b.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-9d4bffbb.entry.js.map → p-d8f09631.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-81ea7310.entry.js.map → p-df6d54c7.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-370cdcca.entry.js.map → p-f154a362.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-9b195811.entry.js.map → p-f1f8f745.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["NylasSchedulerConfigAPIConnector","constructor","nylasApiRequest","nylasSchedulerConfigStore","this","currentUser","console","warn","getCalendars","dataResponse","message","response","error","request","method","path","isNylasErrorResponse","state","calendars","data","getConfigurationById","configurationId","forceFetch","existingConfig","configurations","find","c","id","config","map","getConfigurations","createConfiguration","configuration","requires_session_auth","defaultRequiresSessionAuth","body","updateConfiguration","deleteConfiguration","filter","NylasSchedulerConfigConnector","init","debug","schedulerConfigStore","schedulerConfig","_schedulerConfigConnector","resetStores","reset","logout","lookup","revLookup","Arr","Uint8Array","Array","inited","code","i","len","length","charCodeAt","toByteArray","b64","j","l","tmp","placeHolders","arr","Error","L","tripletToBase64","num","encodeChunk","uint8","start","end","output","push","join","fromByteArray","extraBytes","parts","maxChunkLength","len2","read","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","write","value","rt","abs","isNaN","floor","log","LN2","toString","isArray","call","INSPECT_MAX_BYTES","Buffer","TYPED_ARRAY_SUPPORT","global","undefined","kMaxLength","createBuffer","that","RangeError","__proto__","prototype","arg","encodingOrOffset","allocUnsafe","from","poolSize","_augment","TypeError","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","size","alloc","fill","encoding","checked","allocUnsafeSlow","string","isEncoding","byteLength","actual","slice","fromArrayLike","array","byteOffset","obj","internalIsBuffer","copy","isnan","type","isBuffer","b","_isBuffer","compare","a","x","y","min","String","toLowerCase","concat","list","pos","buf","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","swap16","swap32","swap64","arguments","apply","equals","inspect","str","max","match","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","indexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","includes","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","isFinite","toJSON","_arr","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","toHex","bytes","newBuf","subarray","sliceLen","checkOffset","ext","readUIntLE","noAssert","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","objectWriteUInt16","littleEndian","writeUInt16LE","writeUInt16BE","objectWriteUInt32","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","set","INVALID_BASE64_RE","base64clean","stringtrim","replace","trim","units","leadSurrogate","byteArray","hi","lo","src","dst","isFastBuffer","isSlowBuffer","LocalStorage","get","key","Promise","record","window","localStorage","getItem","JSON","parse","remove","removeItem","setItem","stringify","PKCE_KEY","GRANT_KEY","USER_KEY","Storage","local","store","setPKCE","encrypt","getPKCE","pkce","removePKCE","setGrant","resp","multiAccount","grant_id","removeGrant","getGrant","grant","setUserToken","token","userTokens","getUserTokens","userToken","t","newTokens","newUserTokens","getUserToken","tokens","removeUserTokens","removeUserToken","clearSession","forEach","IndexedDBStorage","databaseName","storeName","self","resolve","reject","openDatabase","then","db","transaction","objectStore","getRequest","onsuccess","result","onerror","oncomplete","close","indexedDB","open","onupgradeneeded","event","createObjectStore","deleteRequest","delete","setRequest","put","process","ERROR","WINDOW","root","JS_SHA256_NO_WINDOW","WEB_WORKER","NODE_JS","JS_SHA256_NO_NODE_JS","versions","node","COMMON_JS","JS_SHA256_NO_COMMON_JS","module","exports","ARRAY_BUFFER","JS_SHA256_NO_ARRAY_BUFFER","HEX_CHARS","split","EXTRA","SHIFT","K","OUTPUT_TYPES","blocks","Object","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","createOutputMethod","outputType","is224","Sha256","update","createMethod","nodeWrap","create","crypto","eval","algorithm","nodeMethod","createHash","digest","createHmacOutputMethod","HmacSha256","createHmacMethod","sharedMemory","h0","h1","h2","h3","h4","h5","h6","h7","block","hBytes","finalized","hashed","first","notString","index","lastByteIndex","hash","finalize","f","g","h","s0","s1","maj","t1","t2","ch","ab","da","cd","bc","hex","arrayBuffer","dataView","DataView","setUint32","oKeyPad","iKeyPad","inner","innerHash","sha256","sha224","hmac","getRandomValues","rnds8","rng","bind","msCrypto","REGEX","validate","uuid","test","byteToHex","v4","options","rnds","random","async","getBytes","stream","onChunk","reader","getReader","done","getLines","onLine","position","fieldLength","discardTrailingNewline","bufLength","lineStart","lineEnd","getMessages","onId","onRetry","onMessage","newMessage","decoder","TextDecoder","line","field","decode","valueOffset","retry","__rest","p","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","EventStreamContentType","DefaultRetryInterval","LastEventId","fetchEventSource","input","_a","signal","inputSignal","headers","inputHeaders","onopen","inputOnOpen","onmessage","onclose","openWhenHidden","fetch","inputFetch","rest","assign","accept","curRequestController","onVisibilityChange","abort","document","hidden","addEventListener","retryInterval","retryTimer","dispose","removeEventListener","clearTimeout","defaultOnOpen","AbortController","err","aborted","interval","setTimeout","innerErr","contentType","startsWith","Base64EncodeUrl","getTimestamp","Date","now","name","r","atob","o","charAt","decodeURIComponent","toUpperCase","header","NylasSessions","clientId","redirectUri","accessType","domain","versioned","hosted","loginId","versionedPart","substring","sw","storage","codeExchange","validateAccessToken","access_token","responseData","json","validateIDToken","id_token","status","getDomain","auth","location","origin","hostedSetCodeChallenge","url","generateAuthURL","popup","popUp","codeChallenge","getCodeChallege","provider","loginHint","includeGrantScopes","scope","prompt","metadata","generateReauthURL","scopes","email","generateCodeChallenge","code_verifier","params","URLSearchParams","search","codeChallengeHashed","codeChallengeEncrypted","isLoggedIn","isMultiAccount","profile","getProfile","payload","detail","dispatchEvent","CustomEvent","tok","getProfiles","removeProfile","authIMAP","code_challenge","imap_username","username","imap_password","password","imap_host","hostIMAP","imap_port","portIMAP","smtp_host","hostSMTP","smtp_port","portSMTP","redirect_uri","public_application_id","access_type","code_challenge_method","Headers","authEWS","detectEmail","applicationInfo","getAvailableProviders","providers","onLoginSuccess","callback","onLogoutSuccess","onLoginFail","onTokenRefreshSuccess","onTokenRefreshFail","onSessionExpired","error_description","error_code","history","pushState","title","pathname","opener","client_id","grant_type","exchangeResponse","handleCodeExchangeResponse","valid","tokenExchange","refresh_token","expires_in","isValidToken","isValid","user","jwtDecode","width","height","left","screenX","outerWidth","top","screenY","outerHeight","popupURL","externalPopup","timer","setInterval","closed","clearInterval","currentUrl","href","success","reload","getAccessToken","timeLeft","sse","parseJSON","profileCount","profiles","isPrototypeOf","Authorization","append","has","isAuthenticated","isAuthenticatedResponse","fetchRequest","URL","accessToken","mode","referrer","addAPIKey","aud","exp","email_verified","iat","iss","Symbol","for","q","u","v","w","z","iterator","A","B","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","D","E","props","context","refs","updater","isReactComponent","setState","forceUpdate","F","G","H","isPureReactComponent","I","J","current","ref","__self","__source","M","k","children","defaultProps","$$typeof","_owner","N","O","escape","P","Q","R","next","keys","S","T","_status","_result","default","U","V","transition","W","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","react_production_min","Children","count","toArray","only","Component","Fragment","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","_context","createElement","createFactory","createRef","render","isValidElement","lazy","_payload","_init","memo","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","LoginRequired","authenticationUrl","class","onClick","preventDefault","authUrl","nylasSchedulerEditorCss","NylasSchedulerEditorStyle0","NylasSchedulerEditor","handleSchedulerConfigCloseClicked","_event","schedulerConfigCloseClicked","emit","host","connectedCallback","componentWillLoad","stores","CreateNylasSchedulerConfigStore","defaultSchedulerConfigStoreState","nylasSessionsConfig","nylasSession","nylasSchedulerConfigConnector","loggedIn","loggedInHandler","loggedOut","NylasIdentityRequestWrapper","baseProvider","NylasBaseProvider","automaticComponentRegistration","eventOverrides","getStore","initEvent","defaultPrevented","onChange","componentDidLoad","componentDisconnected","defaultRequiresSessionAuthChanged","newRequireSessionAuth","configurationIdChanged","newConfigurationId","schedulerConnector","registerComponentHandler","registerComponent","unregisterComponentHandler","unregisterComponent","defaultEditor","Host","part","action"],"sources":["src/connector/shared/api/scheduler-config.ts","src/connector/nylas-scheduler-config-connector/index.ts","../../node_modules/.pnpm/rollup-plugin-node-polyfills@0.2.1/node_modules/rollup-plugin-node-polyfills/polyfills/buffer-es6.js","../nylas-identity/esm/client/localStorage.js","../nylas-identity/esm/client/store.js","../nylas-identity/esm/client/indexedDB.js","../../node_modules/.pnpm/process@0.11.10/node_modules/process/index.js","../../node_modules/.pnpm/js-sha256@0.9.0/node_modules/js-sha256/src/sha256.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/regex.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/validate.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/v4.js","../../node_modules/.pnpm/@microsoft+fetch-event-source@2.0.1/node_modules/@microsoft/fetch-event-source/lib/esm/parse.js","../../node_modules/.pnpm/@microsoft+fetch-event-source@2.0.1/node_modules/@microsoft/fetch-event-source/lib/esm/fetch.js","../nylas-identity/esm/helpers/index.js","../../node_modules/.pnpm/jwt-decode@3.1.2/node_modules/jwt-decode/build/jwt-decode.esm.js","../nylas-identity/esm/app.js","../../node_modules/.pnpm/react@18.2.0/node_modules/react/cjs/react.production.min.js","src/components/scheduler-editor/nylas-scheduler-editor/LoginRequired.tsx","src/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.scss?tag=nylas-scheduler-editor&encapsulation=shadow","src/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.tsx"],"sourcesContent":["import { NylasApiRequest } from '@/common/nylas-api-request';\nimport { NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { dataResponse } from '@/utils/utils';\nimport { Calendar, Configuration, NylasResponse, isNylasErrorResponse } from '@nylas/core';\n\ntype NylasSchedulerConfigAPIConnectorOptions = {\n nylasApiRequest?: NylasApiRequest;\n nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n};\n\n/**\n * Nylas Scheduler Config API Connector\n * This class is responsible for making API requests to the Nylas API for Scheduler Configurations.\n */\nexport class NylasSchedulerConfigAPIConnector {\n private nylasApiRequest?: NylasApiRequest;\n private nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n\n constructor({ nylasApiRequest, nylasSchedulerConfigStore }: NylasSchedulerConfigAPIConnectorOptions) {\n this.nylasApiRequest = nylasApiRequest;\n this.nylasSchedulerConfigStore = nylasSchedulerConfigStore;\n }\n\n /**\n * Get the current user.\n * @returns The current user or null if the request is not initialized.\n */\n public async currentUser() {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return null;\n }\n\n return this.nylasApiRequest.currentUser();\n }\n\n /**\n * Get the current user's calendars.\n * @returns The current user's calendars or an error if the request is not initialized.\n */\n public async getCalendars() {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching calendars: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Calendar[]>>({\n method: 'GET',\n path: `calendars`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching calendars: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching calendars: ' + response.error?.message,\n });\n }\n\n // Set the new calendars as the current calendars\n this.nylasSchedulerConfigStore.state.calendars = response.data;\n\n return dataResponse(response.data);\n }\n\n /**\n * Get a configuration by its ID.\n * @param configurationId The ID of the configuration to fetch.\n */\n public async getConfigurationById(configurationId: string, forceFetch: boolean = false) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching configuration: Nylas API Request is not initialized',\n });\n }\n\n // If the configuration is already in the store, return it\n if (!forceFetch) {\n const existingConfig = this.nylasSchedulerConfigStore.state.configurations.find(c => c.id === configurationId);\n if (existingConfig) {\n this.nylasSchedulerConfigStore.state.config = existingConfig;\n return dataResponse(existingConfig);\n }\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'GET',\n path: `scheduling/configurations/${configurationId}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching configuration: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.config = response.data;\n\n // If the configuration was updated, update the list of configurations\n // If it doesn't exist, add it to the list\n if (this.nylasSchedulerConfigStore.state.configurations.find(c => c.id === configurationId)) {\n this.nylasSchedulerConfigStore.state.configurations = this.nylasSchedulerConfigStore.state.configurations.map(c => (c.id === configurationId ? response.data : c));\n } else {\n this.nylasSchedulerConfigStore.state.configurations = [...this.nylasSchedulerConfigStore.state.configurations, response.data];\n }\n\n return dataResponse(response.data);\n }\n\n /**\n * Get all configurations.\n * @returns The list of configurations or an error if the request is not initialized.\n */\n public async getConfigurations() {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching configurations: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration[]>>({\n method: 'GET',\n path: `scheduling/configurations`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching configurations: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching configurations: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.configurations = response.data;\n\n return dataResponse(response.data);\n }\n\n /**\n * Create a new configuration.\n * @param configuration The configuration to create.\n * @returns The new configuration or an error if the request is not initialized.\n */\n public async createConfiguration(configuration: Omit<Partial<Configuration>, 'id'>) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error creating configuration: Nylas API Request is not initialized',\n });\n }\n\n // Set the default require_session_auth based on the state value\n configuration.requires_session_auth = this.nylasSchedulerConfigStore.state.defaultRequiresSessionAuth;\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'POST',\n path: `scheduling/configurations`,\n body: configuration,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error creating configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error creating configuration: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.config = response.data;\n\n // Add the new configuration to the list of configurations\n this.nylasSchedulerConfigStore.state.configurations = [...this.nylasSchedulerConfigStore.state.configurations, response.data];\n\n return dataResponse(response.data);\n }\n\n /**\n * Update an existing configuration.\n * @param configuration The configuration to update.\n * @returns The updated configuration or an error if the request is not initialized.\n */\n public async updateConfiguration(configuration: Partial<Configuration>) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error updating configuration: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'PUT',\n path: `scheduling/configurations/${configuration.id}`,\n body: configuration,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error updating configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error updating configuration: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.config = response.data;\n\n // If the configuration was updated, update the list of configurations\n // If it doesn't exist, add it to the list\n if (this.nylasSchedulerConfigStore.state.configurations.find(c => c.id === configuration.id)) {\n this.nylasSchedulerConfigStore.state.configurations = this.nylasSchedulerConfigStore.state.configurations.map(c => (c.id === configuration.id ? response.data : c));\n } else {\n this.nylasSchedulerConfigStore.state.configurations = [...this.nylasSchedulerConfigStore.state.configurations, response.data];\n }\n\n return dataResponse(response.data);\n }\n\n /**\n * Delete a configuration by its ID.\n * @param configurationId The ID of the configuration to delete.\n * @returns The deleted configuration or an error if the request is not initialized.\n */\n public async deleteConfiguration(configurationId: string) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error deleting configuration: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'DELETE',\n path: `scheduling/configurations/${configurationId}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error deleting configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error deleting configuration: ' + response.error?.message,\n });\n }\n\n // Remove the configuration from the list\n this.nylasSchedulerConfigStore.state.configurations = this.nylasSchedulerConfigStore.state.configurations.filter(c => c.id !== configurationId);\n\n // If the deleted configuration was the current configuration, reset it\n if (this.nylasSchedulerConfigStore.state.config?.id === configurationId) {\n this.nylasSchedulerConfigStore.state.config = {};\n }\n\n return dataResponse(response.data);\n }\n}\n","import { NylasApiRequest } from '@/common/nylas-api-request';\nimport { NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { debug } from '@/utils/utils';\nimport { NylasSchedulerConfigAPIConnector } from '../shared/api/scheduler-config';\n\ntype NylasSchedulerConfigConnectorOptions = {\n nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n nylasApiRequest?: NylasApiRequest;\n};\n\nexport class NylasSchedulerConfigConnector {\n public nylasApiRequest?: NylasApiRequest;\n public nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n\n private _schedulerConfigConnector: NylasSchedulerConfigAPIConnector | undefined;\n\n constructor({ nylasApiRequest, nylasSchedulerConfigStore }: NylasSchedulerConfigConnectorOptions) {\n this.nylasApiRequest = nylasApiRequest;\n this.nylasSchedulerConfigStore = nylasSchedulerConfigStore;\n }\n\n public init() {\n debug('NylasSchedulerConfigConnector init');\n }\n\n public get schedulerConfigStore() {\n return this.nylasSchedulerConfigStore;\n }\n\n public get schedulerConfig() {\n if (this._schedulerConfigConnector) {\n return this._schedulerConfigConnector;\n }\n\n this._schedulerConfigConnector = new NylasSchedulerConfigAPIConnector({\n nylasApiRequest: this.nylasApiRequest,\n nylasSchedulerConfigStore: this.nylasSchedulerConfigStore,\n });\n return this._schedulerConfigConnector;\n }\n\n public resetStores() {\n debug('NylasSchedulerConfigConnector resetStores');\n this.nylasSchedulerConfigStore.reset();\n }\n\n public async logout() {\n debug('NylasSchedulerConfigConnector logout');\n this.resetStores();\n }\n}\n\nexport type PublicMethods<T> = {\n [K in keyof T]: T[K] extends Function ? (string extends K ? never : K) : never;\n}[keyof T];\n\nexport type NylasSchedulerConfigConnectorPublicMethods = PublicMethods<NylasSchedulerConfigConnector>;\n","var lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength();\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return '<Buffer ' + str + '>'\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\nexport { Buffer, INSPECT_MAX_BYTES, SlowBuffer, isBuffer, _kMaxLength as kMaxLength };\n","class LocalStorage {\n get(key) {\n return new Promise((res) => {\n const record = window.localStorage.getItem(key);\n if (!record) {\n res(null);\n }\n else {\n res(JSON.parse(record));\n }\n });\n }\n async remove(key) {\n window.localStorage.removeItem(key);\n return new Promise((res) => {\n res(null);\n });\n }\n set(key, value) {\n window.localStorage.setItem(key, JSON.stringify(value));\n return new Promise((res) => {\n res(null);\n });\n }\n}\nexport default LocalStorage;\n","import { Buffer } from \"buffer\";\nimport local from \"./localStorage\";\nconst PKCE_KEY = \"pkce\";\nconst GRANT_KEY = \"grant\";\nconst USER_KEY = \"user\";\nexport class Storage {\n Storage = new local();\n constructor(store) {\n if (store) {\n this.Storage = store;\n return;\n }\n }\n setPKCE(value) {\n const encrypt = Buffer.from(value);\n this.Storage.set(PKCE_KEY, encrypt.toString(\"base64\"));\n }\n async getPKCE() {\n try {\n const pkce = await this.Storage.get(PKCE_KEY);\n if (pkce) {\n const b = Buffer.from(pkce, \"base64\");\n return b.toString(\"utf8\");\n }\n }\n catch (error) {\n return null;\n }\n return null;\n }\n removePKCE() {\n this.Storage.remove(PKCE_KEY);\n }\n setGrant(resp, multiAccount = false) {\n const { grant_id } = resp;\n this.Storage.set(`${GRANT_KEY}${multiAccount ? \"-\" + grant_id : \"\"}`, resp);\n }\n removeGrant(id, multiAccount = false) {\n this.Storage.remove(`${GRANT_KEY}${multiAccount ? \"-\" + id : \"\"}`);\n }\n async getGrant(id, multiAccount = false) {\n const grant = await this.Storage.get(`${GRANT_KEY}${multiAccount ? \"-\" + id : \"\"}`);\n if (grant) {\n return grant;\n }\n return null;\n }\n // setUserToken is used to store the IDToken in storage\n async setUserToken(token) {\n const userTokens = await this.getUserTokens();\n // If userTokens exist, check if the token is already in the array\n if (userTokens) {\n const userToken = userTokens.find((t) => t.sub === token.sub);\n // If the token is not in the array, add it\n if (!userToken) {\n const newTokens = [...userTokens, token];\n this.Storage.set(USER_KEY, newTokens);\n }\n else {\n // If the token is in the array, update it\n const newUserTokens = userTokens.map((t) => {\n if (t.sub === token.sub) {\n t = token;\n }\n return t;\n });\n this.Storage.set(USER_KEY, newUserTokens);\n }\n }\n else {\n // If userTokens do not exist, create a new array with the token\n this.Storage.set(USER_KEY, [token]);\n }\n }\n // getUserToken is used to retrieve a specific IDToken from storage\n async getUserToken(id = \"\") {\n const tokens = await this.Storage.get(USER_KEY);\n if (tokens) {\n if (id === \"\") {\n // If no id is passed, return the first token\n return tokens[0];\n }\n // Find the token with the matching sub\n const userToken = tokens.find((token) => token.sub === id);\n return userToken;\n }\n return null;\n }\n // getUserTokens is used to retrieve all IDTokens from storage\n async getUserTokens() {\n const tokens = await this.Storage.get(USER_KEY);\n if (tokens) {\n return tokens;\n }\n return null;\n }\n // removeUserTokens is used to remove all IDTokens from storage\n removeUserTokens() {\n this.Storage.remove(USER_KEY);\n }\n // removeUserToken is used to remove a specific IDToken from storage\n async removeUserToken(id) {\n const userTokens = await this.getUserTokens();\n // Filter out the token with the matching sub\n const tokens = userTokens?.filter((token) => token.sub !== id);\n // If there are tokens left, store them\n this.Storage.set(USER_KEY, tokens);\n }\n async clearSession() {\n const tokens = await this.getUserTokens();\n tokens?.forEach((token) => {\n this.removeGrant(token.sub);\n });\n this.removePKCE();\n this.removeUserTokens();\n }\n}\n","class IndexedDBStorage {\n databaseName = \"identity-db\";\n storeName = \"identity\";\n get(key) {\n const self = this;\n return new Promise((resolve, reject) => {\n self.openDatabase().then(function (db) {\n const transaction = db.transaction(self.storeName, \"readwrite\");\n const objectStore = transaction.objectStore(self.storeName);\n const getRequest = objectStore.get(key);\n getRequest.onsuccess = () => {\n resolve(getRequest.result);\n };\n getRequest.onerror = () => {\n reject(getRequest.error);\n };\n transaction.oncomplete = () => {\n db.close();\n };\n });\n });\n }\n async remove(key) {\n const self = this;\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.databaseName);\n request.onupgradeneeded = function (event) {\n const db = event.target.result;\n db.createObjectStore(self.storeName);\n };\n request.onerror = () => {\n reject(request.error);\n };\n request.onsuccess = (event) => {\n const db = event.target.result;\n const transaction = db.transaction(this.storeName, \"readwrite\");\n const objectStore = transaction.objectStore(this.storeName);\n const deleteRequest = objectStore.delete(key);\n deleteRequest.onsuccess = () => {\n resolve(null);\n };\n deleteRequest.onerror = () => {\n reject(deleteRequest.error);\n };\n transaction.oncomplete = () => {\n db.close();\n };\n };\n });\n }\n set(key, value) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.databaseName);\n request.onerror = () => {\n reject(request.error);\n };\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n db.createObjectStore(this.storeName);\n };\n request.onsuccess = (event) => {\n const db = event.target.result;\n const transaction = db.transaction(this.storeName, \"readwrite\");\n const objectStore = transaction.objectStore(this.storeName);\n const setRequest = objectStore.put(value, key);\n setRequest.onsuccess = () => {\n resolve(value);\n };\n setRequest.onerror = () => {\n reject(setRequest.error);\n };\n transaction.oncomplete = () => {\n db.close();\n };\n };\n });\n }\n openDatabase() {\n const self = this;\n return new Promise(function (resolve, reject) {\n const request = indexedDB.open(self.databaseName, 2);\n request.onupgradeneeded = function (event) {\n const db = event.target.result;\n db.createObjectStore(self.storeName);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n request.onerror = function (event) {\n reject(event.error);\n };\n });\n }\n}\nexport default IndexedDBStorage;\n","// for now just expose the builtin process global from node.js\nmodule.exports = global.process;\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","export async function getBytes(stream, onChunk) {\r\n const reader = stream.getReader();\r\n let result;\r\n while (!(result = await reader.read()).done) {\r\n onChunk(result.value);\r\n }\r\n}\r\nexport function getLines(onLine) {\r\n let buffer;\r\n let position;\r\n let fieldLength;\r\n let discardTrailingNewline = false;\r\n return function onChunk(arr) {\r\n if (buffer === undefined) {\r\n buffer = arr;\r\n position = 0;\r\n fieldLength = -1;\r\n }\r\n else {\r\n buffer = concat(buffer, arr);\r\n }\r\n const bufLength = buffer.length;\r\n let lineStart = 0;\r\n while (position < bufLength) {\r\n if (discardTrailingNewline) {\r\n if (buffer[position] === 10) {\r\n lineStart = ++position;\r\n }\r\n discardTrailingNewline = false;\r\n }\r\n let lineEnd = -1;\r\n for (; position < bufLength && lineEnd === -1; ++position) {\r\n switch (buffer[position]) {\r\n case 58:\r\n if (fieldLength === -1) {\r\n fieldLength = position - lineStart;\r\n }\r\n break;\r\n case 13:\r\n discardTrailingNewline = true;\r\n case 10:\r\n lineEnd = position;\r\n break;\r\n }\r\n }\r\n if (lineEnd === -1) {\r\n break;\r\n }\r\n onLine(buffer.subarray(lineStart, lineEnd), fieldLength);\r\n lineStart = position;\r\n fieldLength = -1;\r\n }\r\n if (lineStart === bufLength) {\r\n buffer = undefined;\r\n }\r\n else if (lineStart !== 0) {\r\n buffer = buffer.subarray(lineStart);\r\n position -= lineStart;\r\n }\r\n };\r\n}\r\nexport function getMessages(onId, onRetry, onMessage) {\r\n let message = newMessage();\r\n const decoder = new TextDecoder();\r\n return function onLine(line, fieldLength) {\r\n if (line.length === 0) {\r\n onMessage === null || onMessage === void 0 ? void 0 : onMessage(message);\r\n message = newMessage();\r\n }\r\n else if (fieldLength > 0) {\r\n const field = decoder.decode(line.subarray(0, fieldLength));\r\n const valueOffset = fieldLength + (line[fieldLength + 1] === 32 ? 2 : 1);\r\n const value = decoder.decode(line.subarray(valueOffset));\r\n switch (field) {\r\n case 'data':\r\n message.data = message.data\r\n ? message.data + '\\n' + value\r\n : value;\r\n break;\r\n case 'event':\r\n message.event = value;\r\n break;\r\n case 'id':\r\n onId(message.id = value);\r\n break;\r\n case 'retry':\r\n const retry = parseInt(value, 10);\r\n if (!isNaN(retry)) {\r\n onRetry(message.retry = retry);\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n}\r\nfunction concat(a, b) {\r\n const res = new Uint8Array(a.length + b.length);\r\n res.set(a);\r\n res.set(b, a.length);\r\n return res;\r\n}\r\nfunction newMessage() {\r\n return {\r\n data: '',\r\n event: '',\r\n id: '',\r\n retry: undefined,\r\n };\r\n}\r\n//# sourceMappingURL=parse.js.map","var __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nimport { getBytes, getLines, getMessages } from './parse';\r\nexport const EventStreamContentType = 'text/event-stream';\r\nconst DefaultRetryInterval = 1000;\r\nconst LastEventId = 'last-event-id';\r\nexport function fetchEventSource(input, _a) {\r\n var { signal: inputSignal, headers: inputHeaders, onopen: inputOnOpen, onmessage, onclose, onerror, openWhenHidden, fetch: inputFetch } = _a, rest = __rest(_a, [\"signal\", \"headers\", \"onopen\", \"onmessage\", \"onclose\", \"onerror\", \"openWhenHidden\", \"fetch\"]);\r\n return new Promise((resolve, reject) => {\r\n const headers = Object.assign({}, inputHeaders);\r\n if (!headers.accept) {\r\n headers.accept = EventStreamContentType;\r\n }\r\n let curRequestController;\r\n function onVisibilityChange() {\r\n curRequestController.abort();\r\n if (!document.hidden) {\r\n create();\r\n }\r\n }\r\n if (!openWhenHidden) {\r\n document.addEventListener('visibilitychange', onVisibilityChange);\r\n }\r\n let retryInterval = DefaultRetryInterval;\r\n let retryTimer = 0;\r\n function dispose() {\r\n document.removeEventListener('visibilitychange', onVisibilityChange);\r\n window.clearTimeout(retryTimer);\r\n curRequestController.abort();\r\n }\r\n inputSignal === null || inputSignal === void 0 ? void 0 : inputSignal.addEventListener('abort', () => {\r\n dispose();\r\n resolve();\r\n });\r\n const fetch = inputFetch !== null && inputFetch !== void 0 ? inputFetch : window.fetch;\r\n const onopen = inputOnOpen !== null && inputOnOpen !== void 0 ? inputOnOpen : defaultOnOpen;\r\n async function create() {\r\n var _a;\r\n curRequestController = new AbortController();\r\n try {\r\n const response = await fetch(input, Object.assign(Object.assign({}, rest), { headers, signal: curRequestController.signal }));\r\n await onopen(response);\r\n await getBytes(response.body, getLines(getMessages(id => {\r\n if (id) {\r\n headers[LastEventId] = id;\r\n }\r\n else {\r\n delete headers[LastEventId];\r\n }\r\n }, retry => {\r\n retryInterval = retry;\r\n }, onmessage)));\r\n onclose === null || onclose === void 0 ? void 0 : onclose();\r\n dispose();\r\n resolve();\r\n }\r\n catch (err) {\r\n if (!curRequestController.signal.aborted) {\r\n try {\r\n const interval = (_a = onerror === null || onerror === void 0 ? void 0 : onerror(err)) !== null && _a !== void 0 ? _a : retryInterval;\r\n window.clearTimeout(retryTimer);\r\n retryTimer = window.setTimeout(create, interval);\r\n }\r\n catch (innerErr) {\r\n dispose();\r\n reject(innerErr);\r\n }\r\n }\r\n }\r\n }\r\n create();\r\n });\r\n}\r\nfunction defaultOnOpen(response) {\r\n const contentType = response.headers.get('content-type');\r\n if (!(contentType === null || contentType === void 0 ? void 0 : contentType.startsWith(EventStreamContentType))) {\r\n throw new Error(`Expected content-type to be ${EventStreamContentType}, Actual: ${contentType}`);\r\n }\r\n}\r\n//# sourceMappingURL=fetch.js.map","export function Base64EncodeUrl(str) {\n return str.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\nexport function Base64DecodeUrl(str) {\n str = (str + \"===\").slice(0, str.length + (str.length % 4));\n return str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n}\nexport function getTimestamp() {\n return Math.floor(Date.now() / 1000);\n}\nexport async function sha256(message) {\n // encode as UTF-8\n const msgBuffer = new TextEncoder().encode(message);\n // hash the message\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", msgBuffer);\n // convert ArrayBuffer to Array\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n // convert bytes to hex string\n const hashHex = hashArray\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return hashHex;\n}\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","import { Storage } from \"./client/store\";\nimport IndexedDBStorage from \"./client/indexedDB\";\nimport { sha256 } from \"js-sha256\";\nimport { Buffer } from \"buffer\";\nimport { v4 as uuid } from \"uuid\";\nimport { fetchEventSource, } from \"@microsoft/fetch-event-source\";\nimport { Base64EncodeUrl, getTimestamp } from \"./helpers\";\nimport jwtDecode from \"jwt-decode\";\nexport class NylasSessions {\n clientId;\n redirectUri;\n accessType = \"online\";\n domain = \"http://api.nylas.com\";\n versioned = false;\n Storage;\n hosted = false;\n multiAccount = false;\n loginId = \"\";\n constructor(config) {\n this.clientId = config.clientId;\n this.redirectUri = config.redirectUri;\n if (config.domain) {\n this.domain = config.domain;\n const versionedPart = this.domain.substring(this.domain.length - 3);\n if (versionedPart.includes(\"/v\")) {\n this.versioned = true;\n }\n }\n if (config.multiAccount) {\n this.multiAccount = config.multiAccount;\n }\n if (config.sw) {\n const storage = new IndexedDBStorage();\n this.Storage = new Storage(storage);\n }\n else {\n this.Storage = new Storage();\n }\n if (config.accessType) {\n this.accessType = config.accessType;\n }\n if (config.loginId) {\n this.loginId = config.loginId;\n }\n if (config.hosted) {\n this.hosted = config.hosted;\n }\n this.codeExchange(null);\n // check();\n // registerServiceWorker();\n }\n // Validates access token\n async validateAccessToken(grant_id = \"\") {\n const { access_token } = await this.Storage.getGrant(grant_id, this.multiAccount);\n try {\n const response = await fetch(`${this.domain}/connect/tokeninfo?access_token=${access_token}`, {\n method: \"GET\",\n });\n const responseData = await response.json();\n if (!responseData.data) {\n return false;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n }\n // Validates id token\n async validateIDToken(grant_id = \"\") {\n const { id_token } = await this.Storage.getGrant(grant_id, this.multiAccount);\n try {\n const response = await fetch(`${this.domain}/connect/tokeninfo?id_token=${id_token}`, {\n method: \"GET\",\n });\n if (response.status !== 200) {\n return false;\n }\n const responseData = await response.json();\n if (!responseData.data) {\n return false;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n }\n // Gets domain of UAS\n getDomain() {\n return this.domain;\n }\n // Gets auth link\n async auth(config) {\n if (this.hosted &&\n (this.domain === window.location.origin ||\n (this.versioned && this.domain.includes(window.location.origin)))) {\n await this.hostedSetCodeChallenge();\n }\n const url = await this.generateAuthURL(config);\n if (config.popup) {\n this.popUp(url);\n return;\n }\n return url;\n }\n // Generates auth URL\n async generateAuthURL(config) {\n const codeChallenge = await this.getCodeChallege();\n let url = `${this.domain}/connect/auth?client_id=${this.clientId}&redirect_uri=${this.redirectUri}&access_type=${this.accessType}&response_type=code`;\n if (codeChallenge) {\n url += `&code_challenge=${codeChallenge}&code_challenge_method=S256&options=rotate_refresh_token`;\n }\n if (config.provider) {\n url += `&provider=${config.provider}`;\n }\n if (config.loginHint) {\n url += `&login_hint=${config.loginHint}`;\n if (config.includeGrantScopes) {\n url += `&include_grant_scopes=${config.includeGrantScopes}`;\n }\n }\n if (config.scope) {\n url += `&scope=${config.scope.join(\" \")}`;\n }\n if (config.prompt) {\n url += `&prompt=${config.prompt}`;\n }\n if (config.metadata) {\n url += `&metadata=${config.metadata}`;\n }\n if (config.state || this.loginId) {\n url += `&state=${this.loginId ? this.loginId : config.state}`;\n }\n return url;\n }\n // Generates auth URL\n async generateReauthURL(grant_id, scopes) {\n if (!grant_id) {\n throw new Error(\"Grant ID is required\");\n }\n const userToken = await this.Storage.getUserToken(grant_id);\n const codeChallenge = await this.getCodeChallege();\n let url = `${this.domain}/connect/auth?client_id=${this.clientId}&redirect_uri=${this.redirectUri}&access_type=${this.accessType}&response_type=code`;\n if (codeChallenge) {\n url += `&code_challenge=${codeChallenge}&code_challenge_method=S256&options=rotate_refresh_token`;\n }\n if (userToken?.provider) {\n url += `&provider=${userToken.provider}`;\n }\n if (userToken?.email) {\n url += `&login_hint=${userToken.email}`;\n }\n if (scopes) {\n url += `&scope=${scopes.join(\" \")}`;\n }\n return url;\n }\n // Generates UUID code challenge\n async generateCodeChallenge() {\n const code_verifier = await this.Storage.getPKCE();\n if (code_verifier) {\n return;\n }\n const codeChallenge = uuid();\n this.Storage.setPKCE(codeChallenge);\n return;\n }\n // Gets code challenge from URL query params\n async hostedSetCodeChallenge() {\n if (!this.hosted) {\n throw console.error(\"Method only used with hosted flag enabled\");\n }\n const params = new URLSearchParams(window.location.search);\n const codeChallenge = params.get(\"code_challenge\");\n if (!codeChallenge) {\n const code_verifier = await this.Storage.getPKCE();\n if (code_verifier) {\n return;\n }\n console.warn(\"Code challenge is recomended\");\n return;\n }\n this.Storage.setPKCE(codeChallenge);\n }\n // Gets code challenge from store\n async getCodeChallege() {\n if (this.hosted &&\n (this.domain === window.location.origin ||\n (this.versioned && this.domain.includes(window.location.origin)))) {\n const params = new URLSearchParams(window.location.search);\n const codeChallenge = params.get(\"code_challenge\");\n if (!codeChallenge) {\n console.warn(\"Code challenge is recomended\");\n return \"\";\n }\n return codeChallenge;\n }\n const code_verifier = await this.Storage.getPKCE();\n if (code_verifier) {\n const codeChallengeHashed = sha256(code_verifier);\n let codeChallengeEncrypted = Buffer.from(codeChallengeHashed).toString(\"base64\");\n codeChallengeEncrypted = Base64EncodeUrl(codeChallengeEncrypted);\n return codeChallengeEncrypted;\n }\n return \"\";\n }\n // checks if user is logged in\n async isLoggedIn() {\n // if hosted identity isLoggedIn always returns false\n if (this.hosted &&\n (this.domain === window.location.origin ||\n (this.versioned && this.domain.includes(window.location.origin)))) {\n return false;\n }\n const tokens = await this.Storage.getUserTokens();\n if (tokens && tokens.length > 0) {\n if (this.multiAccount) {\n await this.generateCodeChallenge();\n }\n return true;\n }\n await this.generateCodeChallenge();\n return false;\n }\n // Checks if user is multi account\n isMultiAccount() {\n return this.multiAccount;\n }\n // Logs user out\n async logout() {\n const profile = await this.getProfile();\n await this.Storage.clearSession();\n const payload = { detail: profile };\n window.dispatchEvent(new CustomEvent(\"onLogoutSuccess\", payload));\n }\n // Gets profile info from ID token\n async getProfile(grant_id = \"\") {\n let tok;\n if (grant_id) {\n tok = await this.Storage.getUserToken(grant_id);\n }\n else {\n tok = await this.Storage.getUserToken();\n }\n if (tok) {\n return tok;\n }\n return null;\n }\n // Gets profile info from ID tokens\n async getProfiles() {\n const tok = await this.Storage.getUserTokens();\n if (tok) {\n return tok;\n }\n return null;\n }\n // Remove a specific profile\n async removeProfile(id) {\n await this.Storage.removeUserToken(id);\n await this.Storage.removeGrant(id);\n return null;\n }\n // IMAP authentication\n async authIMAP(data) {\n const code_challenge = await this.getCodeChallege();\n const payload = {\n imap_username: data.username,\n imap_password: data.password,\n imap_host: data.hostIMAP,\n imap_port: data.portIMAP,\n type: data.type,\n smtp_host: data.hostSMTP,\n smtp_port: data.portSMTP,\n provider: data.provider,\n redirect_uri: this.redirectUri,\n state: data.state,\n public_application_id: this.clientId,\n access_type: this.accessType,\n };\n if (this.loginId) {\n payload.id = this.loginId;\n }\n if (code_challenge != \"\") {\n payload.code_challenge = code_challenge;\n payload.code_challenge_method = \"S256\";\n }\n const response = await fetch(`${this.domain}/connect/login/imap`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n return responseData;\n }\n // EWS authentication\n async authEWS(data) {\n const code_challenge = await this.getCodeChallege();\n const payload = {\n ...data,\n redirect_uri: this.redirectUri,\n public_application_id: this.clientId,\n access_type: this.accessType,\n };\n if (this.loginId) {\n payload.id = this.loginId;\n }\n if (code_challenge != \"\") {\n payload.code_challenge = code_challenge;\n payload.code_challenge_method = \"S256\";\n }\n const response = await fetch(`${this.domain}/connect/login/ews`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n return responseData;\n }\n // Detects email\n async detectEmail(email) {\n const response = await fetch(`${this.versioned ? this.domain : this.domain + \"/connect\"}/providers/detect?client_id=${this.clientId}&email=${email}`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n });\n const responseData = await response.json();\n return responseData.data;\n }\n // Gets app info from UAS\n async applicationInfo() {\n const response = await fetch(`${this.versioned ? this.domain : this.domain + \"/connect\"}/applications?client_id=${this.clientId}`, {\n method: \"GET\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n });\n const responseData = await response.json();\n return responseData.data;\n }\n // Gets providers form UAS\n async getAvailableProviders() {\n const response = await fetch(`${this.domain}/connect/providers/find?client_id=${this.clientId}`, {\n method: \"GET\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n });\n if (response) {\n const responseData = await response.json();\n const providers = responseData.data;\n return providers;\n }\n return null;\n }\n // EVENT HOOKS\n onLoginSuccess(callback) {\n window.addEventListener(\"onLoginSuccess\", (e) => callback(e));\n }\n onLogoutSuccess(callback) {\n window.addEventListener(\"onLogoutSuccess\", (e) => callback(e));\n }\n onLoginFail(callback) {\n window.addEventListener(\"onLoginFail\", (e) => callback(e));\n }\n onTokenRefreshSuccess(callback) {\n window.addEventListener(\"onTokenRefreshSuccess\", (e) => callback(e));\n }\n onTokenRefreshFail(callback) {\n window.addEventListener(\"onTokenRefreshFail\", (e) => callback(e));\n }\n onSessionExpired(callback) {\n window.addEventListener(\"onSessionExpired\", (e) => callback(e));\n }\n // Exchanges code for ID token and refresh and access tokens\n async codeExchange(search) {\n let params = new URLSearchParams(window.location.search);\n if (search) {\n params = new URLSearchParams(search);\n }\n const code = params.get(\"code\");\n const state = params.get(\"state\");\n const error = params.get(\"error\");\n const error_description = params.get(\"error_description\");\n const error_code = params.get(\"error_code\");\n if (error && error_description && error_code) {\n const payload = {\n detail: { error, error_description, error_code },\n };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n window.history.pushState({}, document.title, window.location.pathname);\n return false;\n }\n if (!code) {\n console.warn(\"No code found\");\n return false;\n }\n // If popup window stop internal code exchange\n if (window.opener && window.name === \"uas-popup\") {\n console.warn(\"Popup window detected\");\n return false;\n }\n // Get PKCE code_challenge from local storage\n const code_verifier = await this.Storage.getPKCE();\n if (!code_verifier) {\n console.warn(\"No code verifier found\");\n return false;\n }\n // Prepare request\n try {\n const payload = {\n client_id: this.clientId,\n redirect_uri: this.redirectUri,\n code: code,\n grant_type: \"authorization_code\",\n code_verifier: code_verifier,\n };\n const response = await fetch(`${this.domain}/connect/token`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n // Parse response\n // Store ID token\n if (responseData) {\n if (responseData.error) {\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n return true;\n }\n const exchangeResponse = await this.handleCodeExchangeResponse(responseData);\n if (!exchangeResponse.valid) {\n const payload = { detail: exchangeResponse.data };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n return true;\n }\n else {\n if (state) {\n exchangeResponse.data.state = state;\n }\n const payload = { detail: exchangeResponse.data };\n window.dispatchEvent(new CustomEvent(\"onLoginSuccess\", payload));\n window.history.pushState({}, document.title, window.location.pathname);\n }\n }\n this.Storage.removePKCE();\n return true;\n // Remove PKCE code_challenge from local storage\n }\n catch (error) {\n const payload = { detail: error };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n window.history.pushState({}, document.title, window.location.pathname);\n return false;\n }\n }\n // Token Exchange for session maintenece\n async tokenExchange(grant_id = \"\") {\n const { refresh_token } = await this.Storage.getGrant(grant_id, this.multiAccount);\n try {\n const payload = {\n client_id: this.clientId,\n redirect_uri: this.redirectUri,\n refresh_token,\n grant_type: \"refresh_token\",\n };\n const response = await fetch(`${this.domain}/connect/token`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n // Parse response\n // Store ID token\n if (responseData) {\n if (responseData.error) {\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshFail\", payload));\n return true;\n }\n const now = getTimestamp();\n responseData.expires_in = now + responseData.expires_in;\n this.Storage.setGrant(responseData, this.multiAccount);\n const isValidToken = await this.validateIDToken(grant_id);\n if (!isValidToken) {\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshFail\", payload));\n return true;\n }\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshSuccess\", payload));\n return true;\n }\n // Remove PKCE code_challenge from local storage\n this.Storage.removePKCE();\n }\n catch (error) {\n const payload = { detail: error };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshFail\", payload));\n return false;\n }\n }\n // Handles the response of code exchange\n async handleCodeExchangeResponse(responseData) {\n const isValid = true;\n if (responseData.error) {\n return {\n data: responseData,\n valid: false,\n };\n }\n const now = getTimestamp();\n responseData.expires_in = now + responseData.expires_in;\n this.Storage.setGrant(responseData, this.multiAccount);\n const user = jwtDecode(responseData.id_token);\n user.status = \"authenticated\";\n this.Storage.setUserToken(user);\n const isValidToken = await this.validateIDToken(user.sub);\n if (!isValidToken) {\n return {\n data: responseData,\n valid: false,\n };\n }\n return {\n data: responseData,\n valid: isValid,\n };\n }\n // Regulates POPUP behaivior\n async popUp(url) {\n const width = 500;\n const height = 600;\n const left = window.screenX + (window.outerWidth - width) / 2;\n const top = window.screenY + (window.outerHeight - height) / 2.5;\n const title = `uas-popup`;\n const popupURL = url;\n const externalPopup = window.open(popupURL, title, `width=${width},height=${height},left=${left},top=${top}`);\n if (!externalPopup) {\n return;\n }\n const timer = setInterval(async () => {\n if (externalPopup.closed) {\n const payload = {\n detail: { error_description: \"OAuth provider window closed\" },\n };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n timer && clearInterval(timer);\n return;\n }\n try {\n const currentUrl = externalPopup.location.href.split(\"?\");\n if (!currentUrl[0]) {\n return;\n }\n const search = externalPopup.location.search;\n externalPopup.history.pushState({}, document.title, window.location.pathname);\n if (currentUrl[0] === this.redirectUri && currentUrl.length > 1) {\n const success = await this.codeExchange(search);\n externalPopup.close();\n if (success) {\n location.reload();\n }\n timer && clearInterval(timer);\n return;\n }\n }\n catch (error) {\n return;\n }\n }, 1000);\n }\n // Returns access token\n async getAccessToken(grant_id = \"\") {\n const now = getTimestamp();\n const { access_token, expires_in } = await this.Storage.getGrant(grant_id, this.multiAccount);\n const token = access_token;\n if (token) {\n if (expires_in && expires_in > getTimestamp()) {\n const timeLeft = expires_in - now;\n // If more then 30 secounds remain return access token\n if (timeLeft > 30) {\n return token;\n }\n }\n }\n await this.tokenExchange(grant_id);\n const grant = await this.Storage.getGrant(grant_id, this.multiAccount);\n return grant.access_token;\n }\n async sse(url, request) {\n const headers = request.headers || {};\n const grant_id = headers[\"Grant-ID\"];\n let token = \"\";\n if (this.multiAccount) {\n if (!grant_id) {\n throw new Error(\"Grant ID is required for multi account calls\");\n }\n token = await this.getAccessToken(grant_id);\n }\n else {\n token = await this.getAccessToken();\n }\n delete headers[\"Grant-ID\"];\n headers[\"Authorization\"] = `Bearer ${token}`;\n if (!headers[\"content-type\"]) {\n headers[\"content-type\"] = \"application/json\";\n }\n return fetchEventSource(`${this.domain}/${url}`, {\n ...request,\n headers,\n });\n }\n // Used to call Nylas API endpoints\n async fetch(url, request, parseJSON = true, domain) {\n let token = \"\";\n let profileCount = 1;\n if (this.multiAccount) {\n if (!request.grant_id) {\n throw new Error(\"Grant ID is required for multi account calls\");\n }\n const profiles = await this.getProfiles();\n profileCount = profiles ? profiles.length : 1;\n token = await this.getAccessToken(request.grant_id);\n }\n else {\n token = await this.getAccessToken();\n }\n let headers = request.headers;\n if (!Headers.prototype.isPrototypeOf(headers)) {\n headers = new Headers({\n Authorization: `Bearer ${token}`,\n \"content-type\": \"application/json\",\n });\n }\n else {\n headers.append(\"Authorization\", `Bearer ${token}`);\n if (!headers.has(\"content-type\")) {\n headers.append(\"content-type\", \"application/json\");\n }\n }\n try {\n if (request?.body) {\n request.body = JSON.stringify(request?.body);\n }\n const response = await fetch(`${domain || this.domain}/${url}`, {\n ...request,\n headers,\n });\n if (!parseJSON) {\n return response;\n }\n const responseData = await response?.json();\n const isAuthenticated = await this.isAuthenticatedResponse(response.status, responseData);\n if (!isAuthenticated) {\n if (profileCount > 1) {\n const user = await this.getProfile(request.grant_id);\n if (user) {\n user.status = \"unauthorized\";\n await this.Storage.setUserToken(user);\n const payload = {\n detail: { user },\n };\n window.dispatchEvent(new CustomEvent(\"onSessionExpired\", payload));\n }\n }\n else {\n const user = await this.Storage.getUserToken();\n const payload = {\n detail: { user },\n };\n window.dispatchEvent(new CustomEvent(\"onSessionExpired\", payload));\n this.logout();\n }\n return;\n }\n return responseData;\n }\n catch (e) {\n throw e;\n }\n }\n async fetchRequest(path, method, body, parseJSON = true, domain, request) {\n const isLoggedIn = await this.isLoggedIn();\n const url = new URL(path, domain ?? this.domain);\n const headers = new Headers();\n headers.append(\"Accept\", \"application/json\");\n headers.append(\"Content-Type\", \"application/json\");\n headers.append(\"User-Agent\", \"nylas-identity\");\n if (isLoggedIn) {\n const accessToken = await this.getAccessToken();\n headers.append(\"Authorization\", `Bearer ${accessToken}`);\n }\n const response = await fetch(url.toString(), {\n method: method || \"GET\",\n headers,\n mode: \"cors\",\n referrer: location.origin,\n body: body ? JSON.stringify(body) : undefined,\n ...(request || {}),\n });\n // If we don't want to parse the response as JSON, return the raw response\n if (!parseJSON) {\n return response.body;\n }\n const json = await response.json();\n return json;\n }\n // Checks if the response is not 401\n async isAuthenticatedResponse(status, responseData) {\n if (status == 401 &&\n responseData?.error?.type == \"token.unauthorized_access\") {\n return false;\n }\n return true;\n }\n addAPIKey(grant_id, email, key) {\n this.Storage.setUserToken({\n aud: \"https://api-staging.us.nylas.com/\",\n exp: 2000000000,\n email_verified: true,\n iat: getTimestamp(),\n iss: \"\",\n email,\n provider: \"virtual-calendar\",\n status: \"authenticated\",\n name: email,\n sub: grant_id,\n });\n this.Storage.setGrant({\n grant_id,\n access_token: key,\n expires_in: 2000000000,\n }, this.multiAccount);\n }\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","import { h } from '@stencil/core';\n\nexport type LoginRequiredProps = {\n authenticationUrl: (provider?: string) => Promise<string>;\n};\n\nexport const LoginRequired = ({ authenticationUrl }: LoginRequiredProps) => (\n <div class={'login-required'}>\n <div class={'card'}>\n <p>Log into your account to use the Scheduler Editor.</p>\n\n <button\n class=\"google-button\"\n onClick={async event => {\n event.preventDefault();\n const authUrl = await authenticationUrl('google');\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n console.error(`[nylas-scheduler-editor] Unable to get authentication URL.`);\n }\n }}\n >\n <span class=\"icon\">\n <google-logo-icon width=\"15\" height=\"15\" />\n </span>\n Continue with Google\n </button>\n\n <button\n class=\"microsoft-button\"\n onClick={async event => {\n event.preventDefault();\n const authUrl = await authenticationUrl('microsoft');\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n console.error(`[nylas-scheduler-editor] Unable to get authentication URL.`);\n }\n }}\n >\n <span class=\"icon\">\n <microsoft-logo-icon width=\"15\" height=\"15\" />\n </span>\n Continue with Microsoft\n </button>\n\n <button\n class=\"other-provider-button\"\n onClick={async event => {\n event.preventDefault();\n const authUrl = await authenticationUrl();\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n console.error(`[nylas-scheduler-editor] Unable to get authentication URL.`);\n }\n }}\n >\n View all providers <chevron-icon width=\"17\" height=\"17\" />\n </button>\n\n <small class=\"disclaimer-text\">* You will be redirected to authenticate your account.</small>\n </div>\n </div>\n);\n","@import '../../../common/styles/variables.scss';\n@import '../../../common/mixins/buttons.scss';\n\n:host {\n display: flex;\n flex-direction: column;\n overflow: visible;\n border-radius: var(--nylas-border-radius-2x);\n width: fit-content;\n @media #{$mobile} {\n width: auto;\n min-width: 325px;\n }\n background: var(--nylas-base-0);\n position: relative;\n box-shadow:\n 0px 4px 6px -2px rgba(0, 0, 0, 0.05),\n 0px 10px 15px -3px rgba(0, 0, 0, 0.1);\n @include default-css-variables;\n}\n\ndiv.scheduler-editor-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n color: var(--nylas-base-900);\n\n h1.scheduler-editor-title {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 858px;\n margin: 0;\n font-size: 18px;\n line-height: 24px;\n font-weight: 600;\n @media #{$mobile} {\n width: auto;\n min-width: calc(325px - 1rem);\n }\n }\n button {\n @include invisible-button;\n }\n}\n\nnylas-editor-tabs {\n width: auto;\n}\n\n.card {\n display: flex;\n flex-direction: column;\n padding: 2rem;\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n border-radius: 5px;\n\n max-width: fit-content;\n\n align-self: center;\n}\n\n.login-required {\n display: flex;\n flex-direction: column;\n padding: 2rem 1rem;\n background-color: var(--nylas-base-25);\n\n p {\n margin: 0 0 1rem;\n }\n\n .microsoft-button,\n .google-button {\n @include button;\n display: flex;\n margin-bottom: 1rem;\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n border-radius: 5px;\n justify-content: center;\n gap: 0.5rem;\n align-items: center;\n\n &:hover {\n background-color: var(--nylas-base-25);\n }\n }\n\n .other-provider-button {\n @include button;\n display: flex;\n border: 0;\n background-color: var(--nylas-base-0);\n height: 48px;\n margin-bottom: 1rem;\n font-size: 0.95rem;\n justify-content: center;\n gap: 0.25rem;\n align-items: center;\n\n svg {\n transform: rotate(180deg);\n }\n\n &:hover {\n background-color: var(--nylas-base-25);\n }\n }\n\n .disclaimer-text {\n font-size: 0.75rem;\n color: var(--nylas-base-600);\n align-self: center;\n }\n}\n\n.list-configurations {\n padding: 2rem;\n}\n","import { NylasBaseProvider } from '@/common/abstract-provider';\nimport type { SchedulerEditorEventOverride } from '@/common/component-types';\nimport { NylasIdentityRequestWrapper, User, type NylasApiRequest } from '@/common/nylas-api-request';\nimport { RegisteredComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { CreateNylasSchedulerConfigStore, NylasSchedulerConfigStoreState, NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { debug } from '@/utils/utils';\nimport { Config, NylasSessions } from '@nylas/identity';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { LoginRequired } from './LoginRequired';\n\n/**\n * The `nylas-scheduler-editor` component is a form that allows users to configure the settings for the Nylas Scheduler.\n *\n * @slot login-required - This slot is used to display a message when the user is not logged in.\n */\n@Component({\n tag: 'nylas-scheduler-editor',\n styleUrl: 'nylas-scheduler-editor.scss',\n shadow: true,\n})\nexport class NylasSchedulerEditor {\n /**\n * Stores to be used by the provider.\n */\n private stores?: {\n schedulerConfig: NylasSchedulerConfigStoreType;\n };\n\n /**\n * This is a base provide that defines the common methods and properties\n * that all providers should have.\n *\n * Because stencil does not support abstract classes, we have to use a\n * property to store the base provider instance.\n */\n private baseProvider?: NylasBaseProvider<Exclude<typeof this.stores, undefined>>;\n\n /**\n * The Nylas Scheduler Config Connector instance.\n * The brains of the provider. It manages data fetching and state synchronization.\n */\n private nylasSchedulerConfigConnector?: NylasSchedulerConfigConnector;\n\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasSchedulerEditorElement;\n\n /**\n * The default require session auth flag to used to set the default value for the requireSessionAuth\n * property when creating a configuration. If set to true, then a session token must be provided\n * to the <nylas-scheduling/> component. If set to false, then a session token is not required\n * and the configuration id can passed to the <nylas-scheduling/> component instead.\n */\n @Prop({ mutable: true }) defaultRequiresSessionAuth: boolean = true;\n\n /***\n * The configuration id to use for the scheduler editor.\n * If provided, then the scheduler editor will try and fetch the configuration\n * with the provided id. If found, it will automatically load the editor\n * with the configuration settings for editing.\n */\n @Prop({ mutable: true }) configurationId?: string;\n\n /**\n * The Nylas Api Request instance.\n * Used to make requests to the Nylas API.\n */\n @Prop({ mutable: true }) nylasApiRequest?: NylasApiRequest;\n\n /**\n * The Nylas Sessions configuration.\n * Used to configure the Nylas Sessions instance.\n */\n @Prop() nylasSessionsConfig?: Config;\n\n /**\n * This provides a way to override the default event handlers.\n */\n @Prop() eventOverrides: SchedulerEditorEventOverride = {};\n\n /**\n * The scheduler preview link to use when the user clicks on the preview button.\n * You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n\n /**\n * The default scheduler config store state.\n * Used to set the initial state of the scheduler config store.\n */\n @Prop({ attribute: 'default-scheduler-config-store-state' }) readonly defaultSchedulerConfigStoreState?: NylasSchedulerConfigStoreState;\n\n /**\n * The is used to set the mode for the scheduler config.\n * The mode can be 'app' or 'composable'.\n * The default mode is 'app'.\n */\n @Prop({ attribute: 'mode' }) readonly mode: 'app' | 'composable' = 'app';\n\n /**\n * This event is fired when the provider is initialized.\n * By default, this event handles determining if the user is logged in or not.\n * In addition, it fetches the provided configuration if a valid configuration id is provided.\n */\n @Event({ cancelable: true }) readonly init!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the the NyalsAuth isAuthenticated state changes\n * to true.\n */\n @Event({ cancelable: true }) readonly loggedIn!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the the NyalsAuth isAuthenticated state changes\n * to true.\n */\n @Event({ cancelable: true }) readonly loggedOut!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the close button on scheduler config is clicked.\n */\n @Event({ cancelable: true }) readonly schedulerConfigCloseClicked!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * Automatically register components that have the `@RegisterComponent` decorator.\n * If this is set to false, you will need to manually register components using the\n * `registerComponent` method.\n * @default true\n */\n @State() automaticComponentRegistration: boolean = true;\n\n connectedCallback() {\n debug(`[nylas-scheduler-editor] connectedCallback`);\n }\n\n async componentWillLoad() {\n debug(`[nylas-scheduler-editor] componentWillLoad`);\n this.stores = {\n schedulerConfig: CreateNylasSchedulerConfigStore({\n ...this.defaultSchedulerConfigStoreState,\n }),\n };\n\n // Update our store state\n this.stores?.schedulerConfig?.set('defaultRequiresSessionAuth', this.defaultRequiresSessionAuth);\n\n if (!this.nylasApiRequest && this.nylasSessionsConfig) {\n const nylasSession = new NylasSessions(this.nylasSessionsConfig);\n\n // We must check if the user is logged in before continuing\n // otherwise, a PCKE code will not be generated and the user\n // will not be able to log in.\n await nylasSession.isLoggedIn();\n\n // Watch for login events so that we can automatically update the state\n nylasSession.onLoginSuccess(async () => {\n const currentUser = await this.nylasSchedulerConfigConnector?.schedulerConfig?.currentUser();\n if (currentUser) {\n this.loggedIn.emit(this.host);\n this.loggedInHandler(currentUser);\n }\n });\n\n // Watch for logout events so that we can automatically update the state\n nylasSession.onLoginFail(async () => {\n this.stores?.schedulerConfig?.set('currentUser', null);\n this.loggedOut.emit(this.host);\n });\n\n this.nylasApiRequest = new NylasIdentityRequestWrapper(nylasSession);\n }\n\n this.baseProvider = new NylasBaseProvider(this.host, this.stores, this.automaticComponentRegistration, this.eventOverrides);\n\n const nylasSchedulerConfigStore = this.baseProvider.getStore('schedulerConfig');\n this.nylasSchedulerConfigConnector = new NylasSchedulerConfigConnector({\n nylasApiRequest: this.nylasApiRequest,\n nylasSchedulerConfigStore: nylasSchedulerConfigStore,\n });\n\n const initEvent = this.init.emit(this.host);\n if (!initEvent.defaultPrevented) {\n const currentUser = await this.nylasSchedulerConfigConnector?.schedulerConfig?.currentUser();\n if (currentUser) {\n this.loggedIn.emit(this.host);\n await this.loggedInHandler(currentUser);\n } else {\n this.stores?.schedulerConfig?.set('currentUser', null);\n this.loggedOut.emit(this.host);\n }\n }\n\n // Watch for store changes\n this.stores?.schedulerConfig?.onChange('config', async config => {\n if (config && config.id) {\n this.configurationId = config.id;\n }\n });\n\n this.baseProvider?.componentWillLoad(this.nylasSchedulerConfigConnector);\n }\n\n async componentDidLoad() {\n debug(`[nylas-scheduler-editor] componentDidLoad`);\n this.baseProvider?.componentDidLoad();\n }\n\n componentDisconnected() {\n this.baseProvider?.componentDisconnected();\n }\n\n /**\n * Watch for changes to the defaultRequiresSessionAuth property and update the\n * defaultRequiresSessionAuth property in the scheduler config store.\n * @param newRequireSessionAuth The new value for the defaultRequiresSessionAuth property\n */\n @Watch('defaultRequiresSessionAuth')\n defaultRequiresSessionAuthChanged(newRequireSessionAuth: boolean) {\n this.stores?.schedulerConfig?.set('defaultRequiresSessionAuth', newRequireSessionAuth);\n }\n\n /**\n * Watch for changes to the configuration id and automatically fetch the configuration\n * when the configuration id changes. If the configuration id is cleared, then the\n * configuration is cleared as well.\n * @param newConfigurationId The new configuration id\n */\n @Watch('configurationId')\n async configurationIdChanged(newConfigurationId: string) {\n if (newConfigurationId) {\n await this.nylasSchedulerConfigConnector?.schedulerConfig?.getConfigurationById(newConfigurationId);\n this.stores?.schedulerConfig?.set('action', 'edit');\n } else {\n // Clear the configuration\n this.stores?.schedulerConfig?.set('config', {});\n this.stores?.schedulerConfig?.set('action', null);\n }\n }\n\n /**\n * This method is used to get the NylasSchedulerConfigStore instance.\n * You can use this instance to update or get the state of the store.\n * @returns Promise<NylasSchedulerConfigStoreType | undefined>\n */\n @Method()\n async store(): Promise<NylasSchedulerConfigStoreType | undefined> {\n return this.stores?.schedulerConfig;\n }\n\n /**\n * This method is used to get the NylasSchedulerConfigConnector instance.\n * You can use this instance to make requests to the Nylas API.\n * @returns Promise<NylasSchedulerConfigConnector | undefined>\n */\n @Method()\n async schedulerConnector(): Promise<NylasSchedulerConfigConnector | undefined> {\n return this.nylasSchedulerConfigConnector;\n }\n\n /**\n * This is a custom event handler that is used to register a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to register\n * @returns Promise<void>\n */\n @Listen('registerComponent')\n async registerComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n this.baseProvider?.registerComponent(event.detail);\n }\n\n /**\n * This is a custom event handler that is used to unregister a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to unregister\n * @returns Promise<void>\n */\n @Listen('unregisterComponent')\n async unregisterComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n this.baseProvider?.unregisterComponent(event.detail);\n }\n\n /**\n * Upon login, set the current user and fetch the configuration and calendars.\n * @param currentUser The current user that is logged in\n */\n private async loggedInHandler(currentUser: User) {\n this.stores?.schedulerConfig?.set('currentUser', currentUser);\n\n if (!this.nylasSchedulerConfigConnector) {\n return;\n }\n\n if (this.configurationId) {\n await this.nylasSchedulerConfigConnector.schedulerConfig?.getConfigurationById(this.configurationId);\n }\n\n await this.nylasSchedulerConfigConnector.schedulerConfig?.getCalendars();\n }\n\n /**\n * This is a custom event handler that is used to update the state of the provider.\n */\n private handleSchedulerConfigCloseClicked = (_event: Event) => {\n this.schedulerConfigCloseClicked.emit(this.host);\n };\n\n /**\n * This method is used to get the authentication URL for a provider.\n * @param provider The provider to get the authentication URL for (e.g. google, microsoft, etc.)\n * @returns Promise<string> The authentication URL to redirect the user for the provider\n */\n private authenticationUrl = async (provider?: string) => {\n if (!this.nylasApiRequest) {\n console.error(`[nylas-scheduler-editor] Nylas API Request is not initialized.`);\n return '';\n }\n const url = await this.nylasApiRequest.authenticationUrl({ provider });\n\n return url || '';\n };\n\n render() {\n const defaultEditor = this.mode === 'app';\n\n if (defaultEditor) {\n return (\n <Host>\n <div class=\"scheduler-editor-header\" part=\"nse__header\">\n <h1 class=\"scheduler-editor-title\" part=\"nse__title\">\n <calendar-icon width=\"18\" height=\"18\" />\n Scheduler editor\n </h1>\n <button class=\"scheduler-editor-close\" onClick={e => this.handleSchedulerConfigCloseClicked(e)} part=\"nse__close-button\">\n <close-icon width=\"18\" height=\"18\" />\n </button>\n </div>\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === null && (\n <div class=\"list-configurations\">\n <nylas-list-configurations></nylas-list-configurations>\n </div>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && (this.stores.schedulerConfig.state.action === 'create' || this.stores.schedulerConfig.state.action === 'edit') && (\n <nylas-editor-tabs></nylas-editor-tabs>\n )}\n {!this.stores?.schedulerConfig?.state.currentUser && (\n <slot name=\"login-required\">\n <LoginRequired authenticationUrl={this.authenticationUrl} />\n </slot>\n )}\n </Host>\n );\n }\n\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|