@qualified-salesforce/web 0.0.1-oidc-bootstrap
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/41842993ec71d6628e4949e9a22b146b.svg +3 -0
- package/7271f3433ed82fc7f56adcd9e30275f4.svg +17 -0
- package/LICENSE.txt +82 -0
- package/components/helpers/entriesStringValidations.js +69 -0
- package/components/helpers/languages.js +32 -0
- package/components/shared/assertUnreachable.js +5 -0
- package/components/shared/controls/imageCropperHelpers.js +43 -0
- package/components/shared/meetingLoadingProgressSpec.js +116 -0
- package/constants.generated.js +9883 -0
- package/css/widget/multimodal_v2/host.split-css.css +162 -0
- package/css/widget/multimodal_v2/index.split-css.panda.css +5240 -0
- package/css/widget/widget.split-css.css +100 -0
- package/fonts/inter/Inter-Black.woff +0 -0
- package/fonts/inter/Inter-Black.woff2 +0 -0
- package/fonts/inter/Inter-BlackItalic.woff +0 -0
- package/fonts/inter/Inter-BlackItalic.woff2 +0 -0
- package/fonts/inter/Inter-Bold.woff +0 -0
- package/fonts/inter/Inter-Bold.woff2 +0 -0
- package/fonts/inter/Inter-BoldItalic.woff +0 -0
- package/fonts/inter/Inter-BoldItalic.woff2 +0 -0
- package/fonts/inter/Inter-ExtraBold.woff +0 -0
- package/fonts/inter/Inter-ExtraBold.woff2 +0 -0
- package/fonts/inter/Inter-ExtraBoldItalic.woff +0 -0
- package/fonts/inter/Inter-ExtraBoldItalic.woff2 +0 -0
- package/fonts/inter/Inter-ExtraLight.woff +0 -0
- package/fonts/inter/Inter-ExtraLight.woff2 +0 -0
- package/fonts/inter/Inter-ExtraLightItalic.woff +0 -0
- package/fonts/inter/Inter-ExtraLightItalic.woff2 +0 -0
- package/fonts/inter/Inter-Italic.woff +0 -0
- package/fonts/inter/Inter-Italic.woff2 +0 -0
- package/fonts/inter/Inter-Light.woff +0 -0
- package/fonts/inter/Inter-Light.woff2 +0 -0
- package/fonts/inter/Inter-LightItalic.woff +0 -0
- package/fonts/inter/Inter-LightItalic.woff2 +0 -0
- package/fonts/inter/Inter-Medium.woff +0 -0
- package/fonts/inter/Inter-Medium.woff2 +0 -0
- package/fonts/inter/Inter-MediumItalic.woff +0 -0
- package/fonts/inter/Inter-MediumItalic.woff2 +0 -0
- package/fonts/inter/Inter-Regular.woff +0 -0
- package/fonts/inter/Inter-Regular.woff2 +0 -0
- package/fonts/inter/Inter-SemiBold.woff +0 -0
- package/fonts/inter/Inter-SemiBold.woff2 +0 -0
- package/fonts/inter/Inter-SemiBoldItalic.woff +0 -0
- package/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
- package/fonts/inter/Inter-Thin.woff +0 -0
- package/fonts/inter/Inter-Thin.woff2 +0 -0
- package/fonts/inter/Inter-ThinItalic.woff +0 -0
- package/fonts/inter/Inter-ThinItalic.woff2 +0 -0
- package/fonts/inter/Inter-italic.var.woff2 +0 -0
- package/fonts/inter/Inter-roman.var.woff2 +0 -0
- package/images/close.js +63 -0
- package/images/logo.js +22 -0
- package/js/4101.js +19721 -0
- package/js/daily-esm.js +9948 -0
- package/js/date-fns.js +427 -0
- package/js/multimodal_v2.js +1653 -0
- package/js/runtime.js +109 -0
- package/media/Inter-Black.796be8d8bf.woff2 +0 -0
- package/media/Inter-Black.b254104c56.woff +0 -0
- package/media/Inter-BlackItalic.70306b0eae.woff +0 -0
- package/media/Inter-BlackItalic.752f1e0aaa.woff2 +0 -0
- package/media/Inter-Bold.579e0f95ca.woff2 +0 -0
- package/media/Inter-Bold.b1234477a5.woff +0 -0
- package/media/Inter-BoldItalic.3d0d804323.woff +0 -0
- package/media/Inter-BoldItalic.828a494e04.woff2 +0 -0
- package/media/Inter-ExtraBold.208a9e6c99.woff +0 -0
- package/media/Inter-ExtraBold.d65f028165.woff2 +0 -0
- package/media/Inter-ExtraBoldItalic.30429962ec.woff +0 -0
- package/media/Inter-ExtraBoldItalic.8c7eac5ce3.woff2 +0 -0
- package/media/Inter-ExtraLight.15c082a57d.woff +0 -0
- package/media/Inter-ExtraLight.6824177d1e.woff2 +0 -0
- package/media/Inter-ExtraLightItalic.05138dddf3.woff2 +0 -0
- package/media/Inter-ExtraLightItalic.3beee54f59.woff +0 -0
- package/media/Inter-Italic.9beab78452.woff +0 -0
- package/media/Inter-Italic.d593a8df79.woff2 +0 -0
- package/media/Inter-Light.27083fa637.woff2 +0 -0
- package/media/Inter-Light.91dfddd842.woff +0 -0
- package/media/Inter-LightItalic.0a783b89b3.woff2 +0 -0
- package/media/Inter-LightItalic.f8ccf2813f.woff +0 -0
- package/media/Inter-Medium.dc792b508e.woff2 +0 -0
- package/media/Inter-Medium.ec7dd2d9d8.woff +0 -0
- package/media/Inter-MediumItalic.17301e5b40.woff +0 -0
- package/media/Inter-MediumItalic.84d3493a9f.woff2 +0 -0
- package/media/Inter-Regular.f1f0c35b32.woff2 +0 -0
- package/media/Inter-Regular.f356e84aa0.woff +0 -0
- package/media/Inter-SemiBold.55027e4724.woff +0 -0
- package/media/Inter-SemiBold.fcb100c760.woff2 +0 -0
- package/media/Inter-SemiBoldItalic.ab9105ed3b.woff +0 -0
- package/media/Inter-SemiBoldItalic.d90f295d0c.woff2 +0 -0
- package/media/Inter-Thin.16325d9b0f.woff +0 -0
- package/media/Inter-Thin.dafaa44d99.woff2 +0 -0
- package/media/Inter-ThinItalic.4fc662b3cf.woff2 +0 -0
- package/media/Inter-ThinItalic.d3d8994788.woff +0 -0
- package/media/Inter-italic.var.958a0b9742.woff2 +0 -0
- package/media/Inter-roman.var.b2129c009c.woff2 +0 -0
- package/package.json +20 -0
- package/packs/widget/api/docking/docking_host.js +97 -0
- package/packs/widget/api/docking/index.js +294 -0
- package/packs/widget/api/docking/shared.js +164 -0
- package/packs/widget/api/docking/viewport_lock.js +488 -0
- package/packs/widget/api/docking/viewport_resize.js +1203 -0
- package/packs/widget/esm/fonts/Inter-Black.796be8d8bf.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Black.b254104c56.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BlackItalic.70306b0eae.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BlackItalic.752f1e0aaa.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Bold.579e0f95ca.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Bold.b1234477a5.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BoldItalic.3d0d804323.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BoldItalic.828a494e04.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBold.208a9e6c99.woff +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBold.d65f028165.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBoldItalic.30429962ec.woff +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBoldItalic.8c7eac5ce3.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLight.15c082a57d.woff +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLight.6824177d1e.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLightItalic.05138dddf3.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLightItalic.3beee54f59.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Italic.9beab78452.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Italic.d593a8df79.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Light.27083fa637.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Light.91dfddd842.woff +0 -0
- package/packs/widget/esm/fonts/Inter-LightItalic.0a783b89b3.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-LightItalic.f8ccf2813f.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Medium.dc792b508e.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Medium.ec7dd2d9d8.woff +0 -0
- package/packs/widget/esm/fonts/Inter-MediumItalic.17301e5b40.woff +0 -0
- package/packs/widget/esm/fonts/Inter-MediumItalic.84d3493a9f.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Regular.f1f0c35b32.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Regular.f356e84aa0.woff +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBold.55027e4724.woff +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBold.fcb100c760.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBoldItalic.ab9105ed3b.woff +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBoldItalic.d90f295d0c.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Thin.16325d9b0f.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Thin.dafaa44d99.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ThinItalic.4fc662b3cf.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ThinItalic.d3d8994788.woff +0 -0
- package/packs/widget/esm/fonts/Inter-italic.var.958a0b9742.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-roman.var.b2129c009c.woff2 +0 -0
- package/packs/widget/esm/index.js +183 -0
- package/packs/widget/esm/qualified.css +5502 -0
- package/routes/app/offers/scripts/OfferMainScript.js +154 -0
- package/routes/app/offers/scripts/constants.js +71 -0
- package/routes/app/offers/scripts/main/ButtonManager.js +65 -0
- package/routes/app/offers/scripts/main/FormManager.js +325 -0
- package/routes/app/offers/scripts/main/MainContext.js +19 -0
- package/routes/app/offers/scripts/main/OfferManager.js +91 -0
- package/routes/app/offers/scripts/main/TriggerManager.js +125 -0
- package/routes/app/offers/scripts/rendering/ContentManager.js +53 -0
- package/routes/app/offers/scripts/rendering/LocationManager.js +83 -0
- package/routes/app/offers/scripts/rendering/RenderedOffer.js +188 -0
- package/routes/app/offers/scripts/rendering/Renderer.js +69 -0
- package/routes/app/offers/scripts/rendering/RenderingInitializer.js +62 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManager.js +31 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerFooter.js +81 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerHeader.js +81 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerModal.js +117 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerSidebar.js +75 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationResult.js +43 -0
- package/routes/app/offers/scripts/rendering/animations/Animator.js +78 -0
- package/routes/app/offers/scripts/rendering/animations/BaseAnimationManager.js +25 -0
- package/routes/app/offers/scripts/rendering/lib/BaseComponent.js +106 -0
- package/routes/app/offers/scripts/rendering/lib/FormComponent.js +134 -0
- package/routes/app/offers/scripts/rendering/lib/OfferComponent.js +144 -0
- package/routes/app/offers/scripts/rendering/lib/ScrollbarWidth.js +27 -0
- package/routes/app/offers/scripts/rendering/lib/decorators.js +20 -0
- package/routes/app/offers/scripts/rendering/locations/CSSVarsManager.js +66 -0
- package/routes/app/offers/scripts/rendering/locations/ElementResizeObserver.js +49 -0
- package/routes/app/offers/scripts/rendering/locations/footer.js +53 -0
- package/routes/app/offers/scripts/rendering/locations/header/AsyncBatchProcessor.js +70 -0
- package/routes/app/offers/scripts/rendering/locations/header/CSSTransitionObserver.js +182 -0
- package/routes/app/offers/scripts/rendering/locations/header/ElementStyleChangeObserver.js +138 -0
- package/routes/app/offers/scripts/rendering/locations/header/ExternalStyleManager.js +110 -0
- package/routes/app/offers/scripts/rendering/locations/header/Header.js +353 -0
- package/routes/app/offers/scripts/rendering/locations/header/InlineStyleManager.js +105 -0
- package/routes/app/offers/scripts/rendering/locations/header/MatchingElementsObserver.js +107 -0
- package/routes/app/offers/scripts/rendering/locations/header/NewElementsObserver.js +129 -0
- package/routes/app/offers/scripts/rendering/locations/header/RuleWrapper.js +46 -0
- package/routes/app/offers/scripts/rendering/locations/header/SelectorObservable.js +23 -0
- package/routes/app/offers/scripts/rendering/locations/header/SelectorObserver.js +61 -0
- package/routes/app/offers/scripts/rendering/locations/header/ShiftedElementsManager.js +45 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleElementManager.js +37 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleElementWrapper.js +62 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/ObservedSelectorValue.js +45 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/ObservedSelectors.js +62 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/StyleSelectorObserver.js +294 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/constants.js +21 -0
- package/routes/app/offers/scripts/rendering/locations/header/WindowResizeObserver.js +43 -0
- package/routes/app/offers/scripts/rendering/locations/header/utils.js +25 -0
- package/routes/app/offers/scripts/rendering/locations/popup.js +66 -0
- package/routes/app/offers/scripts/rendering/locations/sidebar.js +21 -0
- package/routes/app/offers/scripts/rendering/variations/ButtonBanner.js +105 -0
- package/routes/app/offers/scripts/rendering/variations/ButtonModal.js +114 -0
- package/routes/app/offers/scripts/rendering/variations/FormBanner.js +214 -0
- package/routes/app/offers/scripts/rendering/variations/FormModal.js +325 -0
- package/routes/app/offers/scripts/rendering/variations/LinkBanner.js +105 -0
- package/routes/app/offers/scripts/rendering/variations/components/Body.js +29 -0
- package/routes/app/offers/scripts/rendering/variations/components/Button.js +128 -0
- package/routes/app/offers/scripts/rendering/variations/components/DismissButton.js +39 -0
- package/routes/app/offers/scripts/rendering/variations/components/ForegroundImageBanner.js +110 -0
- package/routes/app/offers/scripts/rendering/variations/components/ForegroundImageModal.js +128 -0
- package/routes/app/offers/scripts/rendering/variations/components/Headline.js +94 -0
- package/routes/app/offers/scripts/rendering/variations/components/MultiFieldForm.js +302 -0
- package/routes/app/offers/scripts/rendering/variations/components/Tooltip.js +74 -0
- package/routes/app/offers/scripts/rendering/variations/icons.js +15 -0
- package/routes/app/offers/scripts/utils.js +115 -0
- package/routes/app/offers/utils/HTMLUtils.js +10 -0
- package/routes/app/offers/utils/createTypeGuard.js +32 -0
- package/routes/app/offers/utils/promise-utils.js +22 -0
- package/routes/app/websiteBuilder/stores/storeHelpers.js +18 -0
- package/sounds/message-initial.mp3 +0 -0
- package/sounds/message-received.mp3 +0 -0
- package/sounds/message-sent.mp3 +0 -0
- package/src/arrays.js +15 -0
- package/src/audio.js +106 -0
- package/src/bounded-set.js +16 -0
- package/src/bounding_box_observer.js +129 -0
- package/src/decorators.js +29 -0
- package/src/dom.js +128 -0
- package/src/dom_roots.js +26 -0
- package/src/embedded_forms/EmbeddedForm.js +638 -0
- package/src/embedded_forms/QualifiedEmbeddedForm.js +51 -0
- package/src/embedded_forms/QualifiedFormField.js +137 -0
- package/src/embedded_forms/utils.js +17 -0
- package/src/graphql-types.js +1686 -0
- package/src/iframes.js +86 -0
- package/src/localstorage.js +43 -0
- package/src/mirror/Shipper.js +133 -0
- package/src/mirror/constants.generated.js +13 -0
- package/src/mirror/constants.js +238 -0
- package/src/mirror/shipper/ChangeQueue.js +155 -0
- package/src/mirror/shipper/DOMSerializer.js +392 -0
- package/src/mirror/shipper/observers.js +441 -0
- package/src/mirror/shipper/utils.js +98 -0
- package/src/mixins/disposable.js +125 -0
- package/src/mixins/injectable.js +37 -0
- package/src/personalizations/personalization-manager.js +110 -0
- package/src/personalizations/strategies/node-freezing-strategy.js +174 -0
- package/src/personalizations/utils.js +187 -0
- package/src/promises.js +107 -0
- package/src/proxy.js +144 -0
- package/src/qualified_root.js +35 -0
- package/src/query_params.js +55 -0
- package/src/shadow-dom-helper.js +63 -0
- package/src/singleton_host.js +39 -0
- package/src/smart_website/trigger.js +49 -0
- package/src/smart_website/utils.js +149 -0
- package/src/string.js +53 -0
- package/src/timezone.js +57 -0
- package/src/timing.js +49 -0
- package/src/type-utils.js +76 -0
- package/src/url-utils.js +102 -0
- package/src/url.js +50 -0
- package/src/utils.js +72 -0
- package/src/validation.js.js +29 -0
- package/src/validation_ts.js +6 -0
- package/vendor/actioncable/adapters.js +6 -0
- package/vendor/actioncable/connection.js +204 -0
- package/vendor/actioncable/connection_monitor.js +129 -0
- package/vendor/actioncable/consumer.js +91 -0
- package/vendor/actioncable/index.js +34 -0
- package/vendor/actioncable/internal.js +22 -0
- package/vendor/actioncable/logger.js +28 -0
- package/vendor/actioncable/subscription.js +93 -0
- package/vendor/actioncable/subscriptions.js +89 -0
- package/vendor/open-telemetry-idgenerator.js +43 -0
- package/widget/analytics/facebook_tracker.js +8 -0
- package/widget/analytics/google_analytics_tracker.js +83 -0
- package/widget/analytics/google_tag_manager_tracker.js +22 -0
- package/widget/analytics.js +58 -0
- package/widget/api_handler/api_handler.js +730 -0
- package/widget/api_handler/base_api_handler.js +249 -0
- package/widget/booker_intent_tracker.js +391 -0
- package/widget/booker_outcome_tracker.js +329 -0
- package/widget/capture_widget_exceptions.js +150 -0
- package/widget/channel.js +282 -0
- package/widget/composite_experience_adapter.js +101 -0
- package/widget/constants.generated.js +350 -0
- package/widget/constants.js +21 -0
- package/widget/container.js +193 -0
- package/widget/content_activity_emitter.js +36 -0
- package/widget/data360_visitor.js +67 -0
- package/widget/date_provider.js +11 -0
- package/widget/debug_mode_state.js +175 -0
- package/widget/dummy_module.js +9 -0
- package/widget/eloqua_visitor.js +17 -0
- package/widget/form_cta_booker_intent.js +246 -0
- package/widget/hubspot_visitor.js +39 -0
- package/widget/inline_meeting_booker_page.js +90 -0
- package/widget/local_state/abstract_local_state.js +38 -0
- package/widget/local_state/debug_state/abstract_debug_flow.js +29 -0
- package/widget/local_state/debug_state/custom_form_flow.js +14 -0
- package/widget/local_state/debug_state/hubspot_form_flow.js +19 -0
- package/widget/local_state/debug_state/hubspot_v4_form_flow.js +19 -0
- package/widget/local_state/debug_state/marketo_form_flow.js +20 -0
- package/widget/local_state/debug_state/pardot_form_flow.js +18 -0
- package/widget/local_state/debug_state.js +362 -0
- package/widget/local_state/trace_state.js +20 -0
- package/widget/location_provider.js +9 -0
- package/widget/marketo_visitor.js +39 -0
- package/widget/meetings/tracing/buttons_forms_triggering_tracer.js +124 -0
- package/widget/meetings/tracing/spans/button_spans.js +18 -0
- package/widget/meetings/tracing/spans/form_spans.js +11 -0
- package/widget/multimodal_v2/assets_preloader.js +97 -0
- package/widget/multimodal_v2/components/AppLayout.js +93 -0
- package/widget/multimodal_v2/components/CursorOverlay.js +93 -0
- package/widget/multimodal_v2/components/PointerRectOverlay.js +74 -0
- package/widget/multimodal_v2/components/app/Artifact.js +109 -0
- package/widget/multimodal_v2/components/app/Background.js +27 -0
- package/widget/multimodal_v2/components/app/CalendarLoadingContent.js +255 -0
- package/widget/multimodal_v2/components/app/Chat.js +39 -0
- package/widget/multimodal_v2/components/app/CookieConsentModal.js +149 -0
- package/widget/multimodal_v2/components/app/Foreground.js +48 -0
- package/widget/multimodal_v2/components/app/HiddenInput.js +41 -0
- package/widget/multimodal_v2/components/app/Input.js +72 -0
- package/widget/multimodal_v2/components/app/LightboxExperience.js +769 -0
- package/widget/multimodal_v2/components/app/LoadingOverlay.js +97 -0
- package/widget/multimodal_v2/components/app/Main.js +985 -0
- package/widget/multimodal_v2/components/app/MessengerButton.js +160 -0
- package/widget/multimodal_v2/components/app/Multimodal.js +17 -0
- package/widget/multimodal_v2/components/app/OverlayControls.js +79 -0
- package/widget/multimodal_v2/components/app/Preview.js +32 -0
- package/widget/multimodal_v2/components/app/PrivacyDisclosure.js +57 -0
- package/widget/multimodal_v2/components/app/RotateDeviceOverlay.js +70 -0
- package/widget/multimodal_v2/components/app/Toolbar.js +156 -0
- package/widget/multimodal_v2/components/chat/ChatComposer.js +129 -0
- package/widget/multimodal_v2/components/chat/ChatInputForm.js +398 -0
- package/widget/multimodal_v2/components/chat/ColdStartQuestions.js +354 -0
- package/widget/multimodal_v2/components/chat/ComposerErrorBanner.js +62 -0
- package/widget/multimodal_v2/components/chat/PostCallSurvey.js +359 -0
- package/widget/multimodal_v2/components/chat/preview/FieldRequestRenderer.js +41 -0
- package/widget/multimodal_v2/components/chat/preview/PreviewMessageRenderer.js +60 -0
- package/widget/multimodal_v2/components/chat/preview/SharedOfferRenderer.js +143 -0
- package/widget/multimodal_v2/components/chat/preview/TextRenderer.js +27 -0
- package/widget/multimodal_v2/components/chat/preview/TimelinePreview.js +254 -0
- package/widget/multimodal_v2/components/chat/timeline/CalendarEventOfferRenderer.js +103 -0
- package/widget/multimodal_v2/components/chat/timeline/CalendarEventPickRenderer.js +148 -0
- package/widget/multimodal_v2/components/chat/timeline/FieldEntryRenderer.js +84 -0
- package/widget/multimodal_v2/components/chat/timeline/FieldRequestRenderer.js +56 -0
- package/widget/multimodal_v2/components/chat/timeline/InlinePrivacyDisclosure.js +66 -0
- package/widget/multimodal_v2/components/chat/timeline/LinkPreviewCard.js +70 -0
- package/widget/multimodal_v2/components/chat/timeline/MessageEntry.js +88 -0
- package/widget/multimodal_v2/components/chat/timeline/PresentContentRenderer.js +30 -0
- package/widget/multimodal_v2/components/chat/timeline/PresentDeckRenderer.js +279 -0
- package/widget/multimodal_v2/components/chat/timeline/PresentVideoRenderer.js +131 -0
- package/widget/multimodal_v2/components/chat/timeline/ShareContentRenderer.js +59 -0
- package/widget/multimodal_v2/components/chat/timeline/SharedOfferRenderer.js +131 -0
- package/widget/multimodal_v2/components/chat/timeline/SystemRenderer.js +82 -0
- package/widget/multimodal_v2/components/chat/timeline/TextRenderer.js +66 -0
- package/widget/multimodal_v2/components/chat/timeline/Timeline.js +158 -0
- package/widget/multimodal_v2/components/debug/DebugMultimodalPanel.js +327 -0
- package/widget/multimodal_v2/components/decks/index.js +160 -0
- package/widget/multimodal_v2/components/field_request/BooleanField.js +77 -0
- package/widget/multimodal_v2/components/field_request/FieldComponents.js +69 -0
- package/widget/multimodal_v2/components/field_request/Form.js +87 -0
- package/widget/multimodal_v2/components/field_request/MultiPicklistField.js +240 -0
- package/widget/multimodal_v2/components/field_request/PicklistField.js +166 -0
- package/widget/multimodal_v2/components/field_request/SingleLineInputField.js +69 -0
- package/widget/multimodal_v2/components/field_request/TextField.js +37 -0
- package/widget/multimodal_v2/components/field_request/index.js +170 -0
- package/widget/multimodal_v2/components/helpers/AutoScroll.js +37 -0
- package/widget/multimodal_v2/components/helpers/ErrorBoundary.js +53 -0
- package/widget/multimodal_v2/components/helpers/FocusTrapDialog.js +26 -0
- package/widget/multimodal_v2/components/helpers/ImpressionTracker.js +94 -0
- package/widget/multimodal_v2/components/helpers/ListRenderer.js +37 -0
- package/widget/multimodal_v2/components/helpers/Localization.js +76 -0
- package/widget/multimodal_v2/components/helpers/Persisted.js +166 -0
- package/widget/multimodal_v2/components/helpers/RichText.js +358 -0
- package/widget/multimodal_v2/components/helpers/ScreenReaderHeading.js +17 -0
- package/widget/multimodal_v2/components/helpers/Thumbnail.js +190 -0
- package/widget/multimodal_v2/components/helpers/VisuallyHidden.js +41 -0
- package/widget/multimodal_v2/components/helpers/content_click_payloads.js +58 -0
- package/widget/multimodal_v2/components/helpers/useDraggable.js +103 -0
- package/widget/multimodal_v2/components/helpers/useTextOverflow.js +44 -0
- package/widget/multimodal_v2/components/lightbox_gather/index.js +741 -0
- package/widget/multimodal_v2/components/meetings/ArtifactEntryPoint.js +252 -0
- package/widget/multimodal_v2/components/meetings/MeetingAdditionalAttendees.js +325 -0
- package/widget/multimodal_v2/components/meetings/MeetingBookerEntry.js +100 -0
- package/widget/multimodal_v2/components/meetings/MeetingDetailsCard.js +99 -0
- package/widget/multimodal_v2/components/meetings/MeetingErrorBanner.js +62 -0
- package/widget/multimodal_v2/components/meetings/MeetingOfferEmailStep.js +239 -0
- package/widget/multimodal_v2/components/meetings/MeetingOfferFooter.js +104 -0
- package/widget/multimodal_v2/components/meetings/MeetingOfferSelectionStep.js +60 -0
- package/widget/multimodal_v2/components/meetings/MeetingRepHeader.js +222 -0
- package/widget/multimodal_v2/components/meetings/MeetingStepShell.js +92 -0
- package/widget/multimodal_v2/components/meetings/MeetingSummaryRail.js +515 -0
- package/widget/multimodal_v2/components/meetings/MeetingTimeSelector.js +603 -0
- package/widget/multimodal_v2/components/meetings/MonthDatePicker.js +422 -0
- package/widget/multimodal_v2/components/meetings/NavigationButtons.js +76 -0
- package/widget/multimodal_v2/components/meetings/TimeSlotHeader.js +357 -0
- package/widget/multimodal_v2/components/meetings/WeekViewHeader.js +20 -0
- package/widget/multimodal_v2/components/meetings/constants.js +7 -0
- package/widget/multimodal_v2/components/meetings/index.js +47 -0
- package/widget/multimodal_v2/components/meetings/utils.js +328 -0
- package/widget/multimodal_v2/components/multimodal/Audio.js +28 -0
- package/widget/multimodal_v2/components/multimodal/Controls.js +188 -0
- package/widget/multimodal_v2/components/multimodal/LiveVideo.js +63 -0
- package/widget/multimodal_v2/components/multimodal/MultiModalComponent.js +424 -0
- package/widget/multimodal_v2/components/multimodal/MultimodalAvatar.js +36 -0
- package/widget/multimodal_v2/components/multimodal/OrbAvatar.js +326 -0
- package/widget/multimodal_v2/components/multimodal/Status.js +220 -0
- package/widget/multimodal_v2/components/multimodal/VideoAvatar.js +24 -0
- package/widget/multimodal_v2/components/multimodal/VideoPreview.js +114 -0
- package/widget/multimodal_v2/components/multimodal/useAudioLevelMonitoring.js +96 -0
- package/widget/multimodal_v2/components/multimodal/useMultimodal.js +434 -0
- package/widget/multimodal_v2/components/presentations/index.js +372 -0
- package/widget/multimodal_v2/components/shared/Avatar.js +92 -0
- package/widget/multimodal_v2/components/shared/AvatarGroup.js +135 -0
- package/widget/multimodal_v2/components/shared/Button.js +245 -0
- package/widget/multimodal_v2/components/shared/ButtonGroup.js +133 -0
- package/widget/multimodal_v2/components/shared/ComposerForm.js +98 -0
- package/widget/multimodal_v2/components/shared/SpeakingIndicator.js +239 -0
- package/widget/multimodal_v2/components/shared/ThinkingAnimation.js +165 -0
- package/widget/multimodal_v2/components/shared/Tooltip.js +266 -0
- package/widget/multimodal_v2/components/shared/controls/Dropdown.js +79 -0
- package/widget/multimodal_v2/components/shared/controls/PillToggle.js +142 -0
- package/widget/multimodal_v2/components/shared/controls/TextArea.js +114 -0
- package/widget/multimodal_v2/components/shared/toolCallLabels.js +12 -0
- package/widget/multimodal_v2/components/slides/SlidesThumbnail.js +47 -0
- package/widget/multimodal_v2/components/slides/index.js +61 -0
- package/widget/multimodal_v2/constants.js +88 -0
- package/widget/multimodal_v2/host.split-css.js +2 -0
- package/widget/multimodal_v2/host.string.js +96 -0
- package/widget/multimodal_v2/images/icons.js +582 -0
- package/widget/multimodal_v2/images/posters/piper_low_res.jpg +0 -0
- package/widget/multimodal_v2/index.js +23 -0
- package/widget/multimodal_v2/index.panda.js +28 -0
- package/widget/multimodal_v2/index.split-css.panda.js +2 -0
- package/widget/multimodal_v2/inline_meeting_booker.js +182 -0
- package/widget/multimodal_v2/locales/cs.js +196 -0
- package/widget/multimodal_v2/locales/da.js +196 -0
- package/widget/multimodal_v2/locales/de.js +196 -0
- package/widget/multimodal_v2/locales/en.js +196 -0
- package/widget/multimodal_v2/locales/en_AU.js +197 -0
- package/widget/multimodal_v2/locales/en_GB.js +197 -0
- package/widget/multimodal_v2/locales/es.js +197 -0
- package/widget/multimodal_v2/locales/es_LA.js +196 -0
- package/widget/multimodal_v2/locales/fi.js +196 -0
- package/widget/multimodal_v2/locales/fr.js +197 -0
- package/widget/multimodal_v2/locales/fr_CA.js +196 -0
- package/widget/multimodal_v2/locales/id.js +196 -0
- package/widget/multimodal_v2/locales/index.js +48 -0
- package/widget/multimodal_v2/locales/it.js +196 -0
- package/widget/multimodal_v2/locales/ja.js +196 -0
- package/widget/multimodal_v2/locales/ko.js +196 -0
- package/widget/multimodal_v2/locales/nb.js +196 -0
- package/widget/multimodal_v2/locales/nl.js +196 -0
- package/widget/multimodal_v2/locales/pl.js +196 -0
- package/widget/multimodal_v2/locales/pt_BR.js +196 -0
- package/widget/multimodal_v2/locales/ru.js +196 -0
- package/widget/multimodal_v2/locales/sv.js +196 -0
- package/widget/multimodal_v2/locales/th.js +196 -0
- package/widget/multimodal_v2/locales/tr.js +196 -0
- package/widget/multimodal_v2/locales/vi.js +196 -0
- package/widget/multimodal_v2/locales/zh_CN.js +196 -0
- package/widget/multimodal_v2/locales/zh_TW.js +196 -0
- package/widget/multimodal_v2/multimodal.js +633 -0
- package/widget/multimodal_v2/multimodal_channel.js +195 -0
- package/widget/multimodal_v2/signals/active_conversation_signal.js +33 -0
- package/widget/multimodal_v2/signals/allowed_conversation_mode_signal.js +38 -0
- package/widget/multimodal_v2/signals/artifact_signal.js +22 -0
- package/widget/multimodal_v2/signals/layout_signal.js +98 -0
- package/widget/multimodal_v2/signals/messages_signal.js +207 -0
- package/widget/multimodal_v2/signals/ui_state_signal.js +128 -0
- package/widget/multimodal_v2/stable_bundle_src.js +44 -0
- package/widget/multimodal_v2/stores/ai_conversation_store.js +221 -0
- package/widget/multimodal_v2/stores/artifact_store.js +205 -0
- package/widget/multimodal_v2/stores/base_store.js +16 -0
- package/widget/multimodal_v2/stores/call_store.js +770 -0
- package/widget/multimodal_v2/stores/call_ui_adapter.js +225 -0
- package/widget/multimodal_v2/stores/debug_multimodal_scenario_store.js +471 -0
- package/widget/multimodal_v2/stores/decks_store.js +285 -0
- package/widget/multimodal_v2/stores/device_store.js +63 -0
- package/widget/multimodal_v2/stores/docking_store.js +62 -0
- package/widget/multimodal_v2/stores/field_request_store.js +326 -0
- package/widget/multimodal_v2/stores/meeting_store.js +477 -0
- package/widget/multimodal_v2/stores/participant_store.js +73 -0
- package/widget/multimodal_v2/stores/post_call_survey_store.js +160 -0
- package/widget/multimodal_v2/stores/pounce_tracking_store.js +163 -0
- package/widget/multimodal_v2/stores/pounce_tracking_store_v2.js +511 -0
- package/widget/multimodal_v2/stores/presentations_store.js +111 -0
- package/widget/multimodal_v2/stores/root_store.js +1919 -0
- package/widget/multimodal_v2/stores/screen_share_store.js +217 -0
- package/widget/multimodal_v2/stores/slides_store.js +21 -0
- package/widget/multimodal_v2/stores/translation_store.js +185 -0
- package/widget/multimodal_v2/stores/ui_store.js +496 -0
- package/widget/multimodal_v2/stores/waiting_store.js +159 -0
- package/widget/multimodal_v2/stores/website_navigation_store.js +767 -0
- package/widget/multimodal_v2/styled-system/css/conditions.js +34 -0
- package/widget/multimodal_v2/styled-system/css/css.js +48 -0
- package/widget/multimodal_v2/styled-system/css/cva.js +96 -0
- package/widget/multimodal_v2/styled-system/css/cx.js +13 -0
- package/widget/multimodal_v2/styled-system/css/index.js +15 -0
- package/widget/multimodal_v2/styled-system/css/sva.js +69 -0
- package/widget/multimodal_v2/styled-system/helpers.js +384 -0
- package/widget/multimodal_v2/styled-system/jsx/create-style-context.js +96 -0
- package/widget/multimodal_v2/styled-system/jsx/factory-helper.js +19 -0
- package/widget/multimodal_v2/styled-system/jsx/factory.js +111 -0
- package/widget/multimodal_v2/styled-system/jsx/index.js +12 -0
- package/widget/multimodal_v2/styled-system/jsx/is-valid-prop.js +22 -0
- package/widget/multimodal_v2/types.js +105 -0
- package/widget/multimodal_v2/utils/auto_scroller.js +157 -0
- package/widget/multimodal_v2/utils/flip_animation.js +124 -0
- package/widget/multimodal_v2/utils/focus_gate.js +237 -0
- package/widget/multimodal_v2/utils/locale.js +16 -0
- package/widget/multimodal_v2/utils/media_queries.js +30 -0
- package/widget/multimodal_v2/utils/multimodal_cache.js +19 -0
- package/widget/multimodal_v2/utils/mutation_effect.js +14 -0
- package/widget/multimodal_v2/utils/navigation_interceptor.js +205 -0
- package/widget/multimodal_v2/utils/navigation_strategies/dom_swap.js +393 -0
- package/widget/multimodal_v2/utils/navigation_strategies/index.js +12 -0
- package/widget/multimodal_v2/utils/navigation_strategies/lwr.js +61 -0
- package/widget/multimodal_v2/utils/navigation_strategies/navigation_utils.js +46 -0
- package/widget/multimodal_v2/utils/navigation_strategies/next_js.js +24 -0
- package/widget/multimodal_v2/utils/navigation_strategies/wouter_v3.js +15 -0
- package/widget/multimodal_v2/utils/objects_map.js +38 -0
- package/widget/multimodal_v2/utils/perceived_voice_turn_tracker.js +345 -0
- package/widget/multimodal_v2/utils/sanitize_html.js +132 -0
- package/widget/multimodal_v2/utils/signals.js +97 -0
- package/widget/multimodal_v2/utils/slide_zoom.js +114 -0
- package/widget/multimodal_v2/utils/theme_styles.js +137 -0
- package/widget/multimodal_v2/utils/url_observer.js +52 -0
- package/widget/multimodal_v2/utils/voice_onset_detector.js +127 -0
- package/widget/page_mirror.js +89 -0
- package/widget/page_view_activity_emitter.js +71 -0
- package/widget/pardot_visitor.js +137 -0
- package/widget/personalization_observer.js +96 -0
- package/widget/personalizations_config.js +160 -0
- package/widget/qualified_form/constants.js +23 -0
- package/widget/qualified_form/phone_utils.js +38 -0
- package/widget/qualified_form/qualified_form_action.js +91 -0
- package/widget/qualified_form/qualified_form_action_orchestrator.js +21 -0
- package/widget/qualified_form/qualified_form_api.js +471 -0
- package/widget/scroll_disabler.js +109 -0
- package/widget/server-logger.js +156 -0
- package/widget/smart_website_config.js +112 -0
- package/widget/telemetry/context.js +75 -0
- package/widget/telemetry/index.js +16 -0
- package/widget/telemetry/messenger_uptime.js +80 -0
- package/widget/telemetry/metrics.js +120 -0
- package/widget/telemetry/span.js +82 -0
- package/widget/telemetry/telemetry.js +180 -0
- package/widget/telemetry/tracer.js +41 -0
- package/widget/telemetry/tracing_store.js +310 -0
- package/widget/tracker.js +916 -0
- package/widget/utils/native_globals.js +129 -0
- package/widget/v1_adapter.js +50 -0
- package/widget/v2_adapter.js +368 -0
- package/widget/visitor/base_visitor_state.js +11 -0
- package/widget/visitor/cookie_visitor_state.js +128 -0
- package/widget/visitor/in_memory_visitor_state.js +29 -0
- package/widget/visitor/visitor_state.js +384 -0
- package/widget/visitor.js +356 -0
- package/widget/widget/linked_widget_v2.js +227 -0
- package/widget/widget/page_mirror_factory.js +22 -0
- package/widget/widget/sentry.js +130 -0
- package/widget/widget/widget.js +1698 -0
- package/widget/widget.split-css.js +2 -0
- package/widget/widget_bootstrap.js +97 -0
- package/widget/widget_object.js +73 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { __webpack_require__ } from "../js/runtime.js";
|
|
2
|
+
import { _class_private_field_loose_base, _class_private_field_loose_key, _extends } from "../js/4101.js";
|
|
3
|
+
import { getSentryClient } from "./widget/sentry.js";
|
|
4
|
+
|
|
5
|
+
const isNil = __webpack_require__("11655");
|
|
6
|
+
var isNil_default = /*#__PURE__*/__webpack_require__.n(isNil);
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _config = /*#__PURE__*/ _class_private_field_loose_key("_config"), _widgetId = /*#__PURE__*/ _class_private_field_loose_key("_widgetId"), _visitorId = /*#__PURE__*/ _class_private_field_loose_key("_visitorId");
|
|
13
|
+
class ServerLogger {
|
|
14
|
+
/**
|
|
15
|
+
* Updates the widget configuration.
|
|
16
|
+
* @param config - Widget configuration containing host and token
|
|
17
|
+
*/ setConfig(config) {
|
|
18
|
+
_class_private_field_loose_base(this, _config)[_config] = config;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Sets the visitor ID for subsequent log requests.
|
|
22
|
+
* @param visitorId - The unique visitor identifier
|
|
23
|
+
*/ setVisitorId(visitorId) {
|
|
24
|
+
_class_private_field_loose_base(this, _visitorId)[_visitorId] = visitorId;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Sets the widget ID for subsequent log requests.
|
|
28
|
+
* @param widgetId - The unique widget identifier
|
|
29
|
+
*/ setWidgetId(widgetId) {
|
|
30
|
+
_class_private_field_loose_base(this, _widgetId)[_widgetId] = widgetId;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Constructs a full URL for a widget API resource.
|
|
34
|
+
* @param name - The resource endpoint name
|
|
35
|
+
* @param params - Optional query parameters
|
|
36
|
+
* @returns The full URL string
|
|
37
|
+
*/ resourceUrl(name, params) {
|
|
38
|
+
let url = _class_private_field_loose_base(this, _config)[_config].host + "/w/1/" + _class_private_field_loose_base(this, _config)[_config].token + "/" + name;
|
|
39
|
+
if (params) {
|
|
40
|
+
const queryParams = new URLSearchParams();
|
|
41
|
+
Object.entries(params).forEach((param)=>{
|
|
42
|
+
let [key, value] = param;
|
|
43
|
+
if (!isNil_default()(value)) {
|
|
44
|
+
queryParams.set(key, String(value));
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
url += "?" + queryParams.toString();
|
|
48
|
+
}
|
|
49
|
+
return url;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Logs an event to the server.
|
|
53
|
+
*
|
|
54
|
+
* @param params - The log parameters
|
|
55
|
+
* @param params.message - The log message or event description
|
|
56
|
+
* @param params.type - Event type: "log" (default), "sentry", or "both"
|
|
57
|
+
* @param params.extra - Additional structured data to include with the log
|
|
58
|
+
* @param params.fireAndForget - If true, errors are silently ignored.
|
|
59
|
+
* Use this for page unload scenarios (beforeunload, pagehide, visibilitychange).
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* // Normal logging with error reporting
|
|
63
|
+
* serverLog({ message: "User clicked button" });
|
|
64
|
+
*
|
|
65
|
+
* // Fire-and-forget for page unload
|
|
66
|
+
* serverLog({ message: "Page closing", fireAndForget: true });
|
|
67
|
+
*/ serverLog(param) {
|
|
68
|
+
let { type = "log", message: event, extra = {}, fireAndForget = false } = param;
|
|
69
|
+
if (!_class_private_field_loose_base(this, _config)[_config].host || !_class_private_field_loose_base(this, _config)[_config].token) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.sendEvent("visitor_events", {
|
|
73
|
+
params: {
|
|
74
|
+
wu: _class_private_field_loose_base(this, _widgetId)[_widgetId],
|
|
75
|
+
uuid: _class_private_field_loose_base(this, _visitorId)[_visitorId]
|
|
76
|
+
},
|
|
77
|
+
body: {
|
|
78
|
+
event,
|
|
79
|
+
type,
|
|
80
|
+
extra
|
|
81
|
+
}
|
|
82
|
+
}, {
|
|
83
|
+
fireAndForget
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Records a telemetry trace event to the server.
|
|
88
|
+
* Used for OpenTelemetry-compatible tracing data.
|
|
89
|
+
*
|
|
90
|
+
* @param payload - The trace payload containing span data and attributes
|
|
91
|
+
*/ recordTrace(payload) {
|
|
92
|
+
if (!_class_private_field_loose_base(this, _config)[_config].host || !_class_private_field_loose_base(this, _config)[_config].token) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.sendEvent("events/trace", {
|
|
96
|
+
body: _extends({}, payload, {
|
|
97
|
+
widget_id: _class_private_field_loose_base(this, _widgetId)[_widgetId],
|
|
98
|
+
visitor_id: _class_private_field_loose_base(this, _visitorId)[_visitorId]
|
|
99
|
+
})
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
async sendEvent(path, param, param1) {
|
|
103
|
+
let { params, body } = param;
|
|
104
|
+
let { fireAndForget = false } = param1 === void 0 ? {} : param1;
|
|
105
|
+
// Using keepalive ensures requests complete even during page unload.
|
|
106
|
+
// Using credentials: 'omit' avoids CORS issues with wildcard origins.
|
|
107
|
+
// No timeout is set because: (1) fireAndForget calls don't wait for response,
|
|
108
|
+
// (2) regular calls are non-blocking logging, and (3) browser defaults apply.
|
|
109
|
+
const request = fetch(this.resourceUrl(path, params), {
|
|
110
|
+
method: "POST",
|
|
111
|
+
body: JSON.stringify(body),
|
|
112
|
+
headers: {
|
|
113
|
+
"Content-Type": "application/json"
|
|
114
|
+
},
|
|
115
|
+
keepalive: true,
|
|
116
|
+
credentials: "omit"
|
|
117
|
+
});
|
|
118
|
+
if (fireAndForget) {
|
|
119
|
+
// Intentionally silent: fireAndForget is used during page unload (beforeunload,
|
|
120
|
+
// pagehide) where we cannot wait for responses or report errors. This matches
|
|
121
|
+
// the previous sendBeacon behavior which also provided no error feedback.
|
|
122
|
+
request.catch(()=>{});
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const response = await request;
|
|
127
|
+
if (!response.ok) {
|
|
128
|
+
throw new Error("Failed to send event " + path + ": " + response.status + " " + response.statusText);
|
|
129
|
+
}
|
|
130
|
+
} catch (error) {
|
|
131
|
+
var _getSentryClient;
|
|
132
|
+
(_getSentryClient = getSentryClient()) == null ? void 0 : _getSentryClient.captureException(error);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
constructor(config){
|
|
136
|
+
Object.defineProperty(this, _config, {
|
|
137
|
+
writable: true,
|
|
138
|
+
value: void 0
|
|
139
|
+
});
|
|
140
|
+
Object.defineProperty(this, _widgetId, {
|
|
141
|
+
writable: true,
|
|
142
|
+
value: void 0
|
|
143
|
+
});
|
|
144
|
+
Object.defineProperty(this, _visitorId, {
|
|
145
|
+
writable: true,
|
|
146
|
+
value: void 0
|
|
147
|
+
});
|
|
148
|
+
_class_private_field_loose_base(this, _config)[_config] = config;
|
|
149
|
+
_class_private_field_loose_base(this, _widgetId)[_widgetId] = undefined;
|
|
150
|
+
_class_private_field_loose_base(this, _visitorId)[_visitorId] = undefined;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
const serverLogger = new ServerLogger({});
|
|
154
|
+
|
|
155
|
+
var server_logger_ServerLogger = /* unused export */ undefined;
|
|
156
|
+
export { serverLogger, server_logger_ServerLogger as ServerLogger };
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Trigger } from "../src/smart_website/trigger.js";
|
|
2
|
+
import { sortTriggers, isDebugMode, isMatchingSelector } from "../src/smart_website/utils.js";
|
|
3
|
+
import { normalizeURL, hasURLMatch } from "../src/url-utils.js";
|
|
4
|
+
import { _extends } from "../js/4101.js";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
function transformOldTrigger(param) {
|
|
11
|
+
let { selector, api } = param;
|
|
12
|
+
return new Trigger({
|
|
13
|
+
url: "",
|
|
14
|
+
selector,
|
|
15
|
+
api,
|
|
16
|
+
global: false,
|
|
17
|
+
legacy: true
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
const WEBSITE_CONFIGS = "WEBSITE_CONFIGS";
|
|
21
|
+
class SmartWebsiteConfig {
|
|
22
|
+
get normalizedCurrentURL() {
|
|
23
|
+
return normalizeURL(window.location.href);
|
|
24
|
+
}
|
|
25
|
+
// This is what Tracker.handleTriggers expects to use, a map from selector to bot API names
|
|
26
|
+
get triggerSelectors() {
|
|
27
|
+
return this.currentTriggerQuerySelectors;
|
|
28
|
+
}
|
|
29
|
+
get hasCurrentTriggerSelectors() {
|
|
30
|
+
return Object.keys(this.triggerSelectors).length > 0;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Prefer new triggers over old, so attempt to match on new ones first before old
|
|
34
|
+
* @param target
|
|
35
|
+
* @returns matching selector
|
|
36
|
+
*/ matchingSelector(target) {
|
|
37
|
+
const selector = Object.keys(this.currentTriggerQuerySelectors).find((selector)=>isMatchingSelector(target, selector));
|
|
38
|
+
this.debugLog("Matched trigger " + selector);
|
|
39
|
+
return selector;
|
|
40
|
+
}
|
|
41
|
+
get currentTriggers() {
|
|
42
|
+
return sortTriggers(this.websiteConfigs.filter((param)=>{
|
|
43
|
+
let { url, global } = param;
|
|
44
|
+
return this.hasURLMatch(url, global);
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
hasURLMatch(url, global) {
|
|
48
|
+
return hasURLMatch(this.normalizedCurrentURL, normalizeURL(url), global);
|
|
49
|
+
}
|
|
50
|
+
get oldTriggers() {
|
|
51
|
+
return Object.entries(this.smartCtaTriggers).reduce((acc, param)=>{
|
|
52
|
+
let [key, value] = param;
|
|
53
|
+
if (key !== WEBSITE_CONFIGS) {
|
|
54
|
+
acc.push(transformOldTrigger({
|
|
55
|
+
selector: key,
|
|
56
|
+
api: value
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
return acc;
|
|
60
|
+
}, []);
|
|
61
|
+
}
|
|
62
|
+
get currentTriggerQuerySelectors() {
|
|
63
|
+
// currentTriggers is already ordered by precedence
|
|
64
|
+
const triggerQuerySelectors = this.currentTriggers.reduce((acc, param)=>{
|
|
65
|
+
let { selector, api } = param;
|
|
66
|
+
if (!acc[selector]) {
|
|
67
|
+
acc[selector] = api;
|
|
68
|
+
} else {
|
|
69
|
+
this.debugLog("Skipping duplicate trigger " + selector + " for " + api);
|
|
70
|
+
}
|
|
71
|
+
return acc;
|
|
72
|
+
}, {});
|
|
73
|
+
// Prefer new triggers over old
|
|
74
|
+
this.oldTriggers.forEach((param)=>{
|
|
75
|
+
let { selector, api } = param;
|
|
76
|
+
if (!triggerQuerySelectors[selector]) {
|
|
77
|
+
triggerQuerySelectors[selector] = api;
|
|
78
|
+
} else {
|
|
79
|
+
this.debugLog("Skipping duplicate trigger " + selector + " for " + api);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return triggerQuerySelectors;
|
|
83
|
+
}
|
|
84
|
+
get smartCtaTriggers() {
|
|
85
|
+
return this.config.smartCtaTriggers;
|
|
86
|
+
}
|
|
87
|
+
get websiteConfigs() {
|
|
88
|
+
if (!this.smartCtaTriggers.WEBSITE_CONFIGS || typeof this.smartCtaTriggers.WEBSITE_CONFIGS === "string") {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
return this.smartCtaTriggers.WEBSITE_CONFIGS.map((config)=>new Trigger(_extends({}, config, {
|
|
92
|
+
legacy: false
|
|
93
|
+
})));
|
|
94
|
+
}
|
|
95
|
+
constructor(smartWebsiteConfig){
|
|
96
|
+
this.isDebug = false;
|
|
97
|
+
this.debugLog = (msg)=>{
|
|
98
|
+
if (this.isDebug) {
|
|
99
|
+
// eslint-disable-next-line no-console
|
|
100
|
+
console.log("[Qualified] " + msg);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
if (document.location.search) {
|
|
104
|
+
this.isDebug = isDebugMode();
|
|
105
|
+
this.debugLog("[DEBUG MODE]");
|
|
106
|
+
}
|
|
107
|
+
this.config = smartWebsiteConfig;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/* export default */ const smart_website_config = (SmartWebsiteConfig);
|
|
111
|
+
|
|
112
|
+
export default smart_website_config;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { __webpack_require__ } from "../../js/runtime.js";
|
|
2
|
+
import "../utils/native_globals.js";
|
|
3
|
+
|
|
4
|
+
/* provided dependency */ var context_setTimeout = __webpack_require__(68034).pS;
|
|
5
|
+
/* provided dependency */ var context_setInterval = __webpack_require__(68034).LK;
|
|
6
|
+
let currentCtx = null;
|
|
7
|
+
/** Internal helper to swap to given context while fn executes. */ function withContext(ctx, fn) {
|
|
8
|
+
const oldCtx = currentCtx;
|
|
9
|
+
currentCtx = ctx;
|
|
10
|
+
try {
|
|
11
|
+
return fn();
|
|
12
|
+
} finally{
|
|
13
|
+
currentCtx = oldCtx;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Gets a variable from the current dynamic scope chain
|
|
18
|
+
* @param {string} name - The variable name
|
|
19
|
+
* @returns {any} - The variable value or undefined
|
|
20
|
+
*/ function getCtxVar(name) {
|
|
21
|
+
let ctx = currentCtx;
|
|
22
|
+
while(ctx){
|
|
23
|
+
if (name in ctx.vars) {
|
|
24
|
+
return ctx.vars[name];
|
|
25
|
+
}
|
|
26
|
+
ctx = ctx.parent;
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Runs a function within a new child dynamic scope with the given variables set.
|
|
32
|
+
* @param {Function} fn - The function to execute within the scope
|
|
33
|
+
* @param {Object} variables - Variables to set in the new scope
|
|
34
|
+
* @returns {any} - The result of the function
|
|
35
|
+
*/ function withCtxVars(vars, fn) {
|
|
36
|
+
const newCtx = {
|
|
37
|
+
parent: currentCtx,
|
|
38
|
+
vars
|
|
39
|
+
};
|
|
40
|
+
return withContext(newCtx, fn);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Wrap any function that has deferred execution so that when it executes, it first restores the current context from the
|
|
44
|
+
* time wrapCallback was called.
|
|
45
|
+
* @param {Function} fn - The function to wrap
|
|
46
|
+
* @returns {Function} - A wrapped function
|
|
47
|
+
*/ function wrapCallback(fn) {
|
|
48
|
+
if (!currentCtx) {
|
|
49
|
+
return fn;
|
|
50
|
+
}
|
|
51
|
+
const contextAtBind = currentCtx;
|
|
52
|
+
return function() {
|
|
53
|
+
for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
|
|
54
|
+
args[_key] = arguments[_key];
|
|
55
|
+
}
|
|
56
|
+
return withContext(contextAtBind, ()=>fn.apply(this, args));
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const context_wrappedSetTimeout = function wrappedSetTimeout(fn) {
|
|
60
|
+
for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
|
|
61
|
+
args[_key - 1] = arguments[_key];
|
|
62
|
+
}
|
|
63
|
+
return context_setTimeout(wrapCallback(fn), ...args);
|
|
64
|
+
};
|
|
65
|
+
const context_wrappedSetInterval = function wrappedSetInterval(fn) {
|
|
66
|
+
for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
|
|
67
|
+
args[_key - 1] = arguments[_key];
|
|
68
|
+
}
|
|
69
|
+
return context_setInterval(wrapCallback(fn), ...args);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
var context_wrapCallback = /* unused export */ undefined;
|
|
73
|
+
var telemetry_context_wrappedSetInterval = /* unused export */ undefined;
|
|
74
|
+
var telemetry_context_wrappedSetTimeout = /* unused export */ undefined;
|
|
75
|
+
export { context_wrapCallback as wrapCallback, getCtxVar, telemetry_context_wrappedSetInterval as wrappedSetInterval, telemetry_context_wrappedSetTimeout as wrappedSetTimeout, withCtxVars };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var telemetry_Span = /* unused export */ undefined;
|
|
9
|
+
var telemetry_Spans = /* unused export */ undefined;
|
|
10
|
+
var telemetry_TracingStore = /* unused export */ undefined;
|
|
11
|
+
export { telemetry_Span as Span, telemetry_Spans as Spans, telemetry_TracingStore as TracingStore };
|
|
12
|
+
export { PerformanceSpan, TimedSpan } from "./span.js";
|
|
13
|
+
export { SpanStatusCodeEnum, Telemetry, buildTraceParent, getTelemetryCtx, telemetry, withSpan, withTelemetryCtx } from "./telemetry.js";
|
|
14
|
+
export { Tracer } from "./tracer.js";
|
|
15
|
+
export { isWidgetBundleResource, metrics, resolveOriginTime, widgetConsumer } from "./metrics.js";
|
|
16
|
+
export { tracingStore } from "./tracing_store.js";
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { __webpack_require__ } from "../../js/runtime.js";
|
|
2
|
+
import { metrics } from "./metrics.js";
|
|
3
|
+
import "../utils/native_globals.js";
|
|
4
|
+
|
|
5
|
+
/* provided dependency */ var messenger_uptime_clearTimeout = __webpack_require__(68034).Kj;
|
|
6
|
+
/* provided dependency */ var messenger_uptime_setTimeout = __webpack_require__(68034).pS;
|
|
7
|
+
|
|
8
|
+
// Availability budget for the init phase: widget.init() -> first `initState`
|
|
9
|
+
// (the backend's broadcast_total_state). No `initState` within this window counts
|
|
10
|
+
// as unavailable (`timeout`). This is an availability SLI ("did the messenger come
|
|
11
|
+
// up"), not a latency target, so the threshold should only trip on genuinely-dead
|
|
12
|
+
// sessions, not the slow tail.
|
|
13
|
+
const MESSENGER_INIT_BUDGET_MS = 30000;
|
|
14
|
+
/**
|
|
15
|
+
* Tracks widget init-phase availability: from `widget.init()` (armed via
|
|
16
|
+
* {@link start}) to the first `initState` ({@link resolveSuccess}). There is only
|
|
17
|
+
* ever one init per widget instance.
|
|
18
|
+
*
|
|
19
|
+
* Emits `widget.initialized` (count, tag `status`):
|
|
20
|
+
* - `success` — `initState` arrived within the budget.
|
|
21
|
+
* - `timeout` — the budget elapsed first (unavailable).
|
|
22
|
+
* - `late` — `initState` arrived after a `timeout` was already emitted; the
|
|
23
|
+
* messenger came up, just past the budget (slow backend, not a true outage).
|
|
24
|
+
*
|
|
25
|
+
* Strict availability = `success / (success + timeout)`. Genuinely-dead sessions
|
|
26
|
+
* are `timeout - late`. A visitor who leaves before any resolution self-excludes:
|
|
27
|
+
* the page tears down and the pending timer dies with it, so nothing is emitted.
|
|
28
|
+
*/ class MessengerUptimeTracker {
|
|
29
|
+
emit(status) {
|
|
30
|
+
metrics.emitIncrement("widget_initialized", {
|
|
31
|
+
status
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
clearTimer() {
|
|
35
|
+
if (this.timeoutId !== null) {
|
|
36
|
+
messenger_uptime_clearTimeout(this.timeoutId);
|
|
37
|
+
this.timeoutId = null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// `budgetMs` is an injection point for tests.
|
|
41
|
+
// eslint-disable-next-line no-useless-constructor
|
|
42
|
+
constructor(budgetMs = MESSENGER_INIT_BUDGET_MS){
|
|
43
|
+
this.budgetMs = budgetMs;
|
|
44
|
+
// Starts idle so a stray resolveSuccess()/dispose() before start() is a no-op.
|
|
45
|
+
this.state = "idle";
|
|
46
|
+
this.timeoutId = null;
|
|
47
|
+
/** `widget.init()`: arm the watchdog for the init attempt. */ this.start = ()=>{
|
|
48
|
+
this.clearTimer();
|
|
49
|
+
this.state = "armed";
|
|
50
|
+
this.timeoutId = messenger_uptime_setTimeout(()=>{
|
|
51
|
+
this.timeoutId = null;
|
|
52
|
+
if (this.state !== "armed") return;
|
|
53
|
+
this.state = "timedOut";
|
|
54
|
+
this.emit("timeout");
|
|
55
|
+
}, this.budgetMs);
|
|
56
|
+
};
|
|
57
|
+
/** First `initState` received: the messenger has the state it needs to render. */ this.resolveSuccess = ()=>{
|
|
58
|
+
if (this.state === "armed") {
|
|
59
|
+
this.clearTimer();
|
|
60
|
+
this.state = "idle";
|
|
61
|
+
this.emit("success");
|
|
62
|
+
} else if (this.state === "timedOut") {
|
|
63
|
+
this.state = "idle";
|
|
64
|
+
this.emit("late");
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Explicit teardown: abandon the attempt without emitting. Routine visitor
|
|
69
|
+
* abandonment doesn't need this (the timer dies with the page); this covers
|
|
70
|
+
* in-page teardown so a pending timer doesn't fire, and a post-timeout `late`
|
|
71
|
+
* isn't recorded, after the widget is gone.
|
|
72
|
+
*/ this.dispose = ()=>{
|
|
73
|
+
this.clearTimer();
|
|
74
|
+
this.state = "idle";
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
var messenger_uptime_MESSENGER_INIT_BUDGET_MS = /* unused export */ undefined;
|
|
80
|
+
export { MessengerUptimeTracker, messenger_uptime_MESSENGER_INIT_BUDGET_MS as MESSENGER_INIT_BUDGET_MS };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { isDebugMode } from "../../src/smart_website/utils.js";
|
|
2
|
+
import { serverLogger } from "../server-logger.js";
|
|
3
|
+
import { _extends } from "../../js/4101.js";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Emit a distribution (timing) metric. NaN and non-positive deltas are
|
|
10
|
+
* filtered out so they are never sent to the server.
|
|
11
|
+
*/ function emitTiming(metricName, deltaMs, tags) {
|
|
12
|
+
if (Number.isNaN(deltaMs) || deltaMs <= 0) return;
|
|
13
|
+
if (isDebugMode()) {
|
|
14
|
+
// eslint-disable-next-line no-console
|
|
15
|
+
console.log("[Metrics] " + metricName + ": timing " + deltaMs + "ms", tags != null ? tags : "");
|
|
16
|
+
}
|
|
17
|
+
serverLogger.serverLog({
|
|
18
|
+
message: metricName,
|
|
19
|
+
type: "log",
|
|
20
|
+
extra: _extends({
|
|
21
|
+
method: "dist",
|
|
22
|
+
operand: deltaMs
|
|
23
|
+
}, tags ? {
|
|
24
|
+
tags
|
|
25
|
+
} : {})
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Emit a counter increment metric.
|
|
30
|
+
*/ function emitIncrement(metricName, tags) {
|
|
31
|
+
if (isDebugMode()) {
|
|
32
|
+
// eslint-disable-next-line no-console
|
|
33
|
+
console.log("[Metrics] " + metricName + ": increment", tags != null ? tags : "");
|
|
34
|
+
}
|
|
35
|
+
serverLogger.serverLog({
|
|
36
|
+
message: metricName,
|
|
37
|
+
type: "log",
|
|
38
|
+
extra: _extends({
|
|
39
|
+
method: "inc"
|
|
40
|
+
}, tags ? {
|
|
41
|
+
tags
|
|
42
|
+
} : {})
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
// Matches bare qualified.js (hosted) and qualified-<hash>.js (self-hosted zip).
|
|
46
|
+
const WIDGET_BUNDLE_NAME = /\/qualified(-[\w-]+)?\.js/;
|
|
47
|
+
/** True when a performance-resource name is our widget bundle. */ function isWidgetBundleResource(name) {
|
|
48
|
+
return WIDGET_BUNDLE_NAME.test(name);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Page-origin-relative ms when Qualified began loading.
|
|
52
|
+
*
|
|
53
|
+
* Hosted snippet / self-hosted zip: the `startTime` of the `qualified.js` resource entry — when
|
|
54
|
+
* the browser began downloading our script. npm: our code is inlined into the consumer's
|
|
55
|
+
* content-hashed chunk, so there is no such entry; `setup()` records `window._q_setupCalledAt`
|
|
56
|
+
* instead and we fall back to it. `null` only when neither is available.
|
|
57
|
+
*
|
|
58
|
+
* Resolved lazily at the call site (init time), not at module eval — under npm the `setup()`
|
|
59
|
+
* timestamp is written after this module is imported, so a module-eval snapshot would miss it.
|
|
60
|
+
*/ function resolveOriginTime(entries) {
|
|
61
|
+
var _window__q_setupCalledAt;
|
|
62
|
+
var _resourceEntries_find;
|
|
63
|
+
// Resolved lazily, so guard `getEntriesByType` — it is absent in some non-browser hosts and,
|
|
64
|
+
// unlike the old module-eval snapshot, this now runs at init time. Missing ⇒ no resource entry
|
|
65
|
+
// ⇒ fall through to the setup() timestamp.
|
|
66
|
+
const resourceEntries = entries != null ? entries : typeof performance.getEntriesByType === "function" ? performance.getEntriesByType("resource") : [];
|
|
67
|
+
const fromResource = (_resourceEntries_find = resourceEntries.find((entry)=>isWidgetBundleResource(entry.name))) == null ? void 0 : _resourceEntries_find.startTime;
|
|
68
|
+
if (fromResource != null) return fromResource;
|
|
69
|
+
return (_window__q_setupCalledAt = window._q_setupCalledAt) != null ? _window__q_setupCalledAt : null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* "npm" iff the ESM `setup()` entry ran (only it sets `_q_setupCalledAt`); "hosted" otherwise
|
|
73
|
+
* (snippet + self-hosted zip). Lets dashboards segment consumers whose page-origin-relative
|
|
74
|
+
* timings mean different things — an npm consumer calls `setup()` whenever it likes, so its
|
|
75
|
+
* `script_time_to_start_ms` includes their latency and reads as a regression if mixed in.
|
|
76
|
+
*/ function widgetConsumer() {
|
|
77
|
+
return window._q_setupCalledAt === undefined ? "hosted" : "npm";
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Records the time since the page's performance origin (`performance.now()`)
|
|
81
|
+
* at the moment `log()` is invoked, then ships it as a distribution metric.
|
|
82
|
+
*
|
|
83
|
+
* The first `log()` or `skip()` call latches the instance — subsequent calls
|
|
84
|
+
* are no-ops. Use `skip()` to permanently suppress the metric without emitting
|
|
85
|
+
* (e.g. when the first opportunity to record it has passed without the
|
|
86
|
+
* required preconditions, so a later attempt would record a misleading delta).
|
|
87
|
+
*/ class InitializationMetric {
|
|
88
|
+
// eslint-disable-next-line no-useless-constructor
|
|
89
|
+
constructor(metricName){
|
|
90
|
+
this.metricName = metricName;
|
|
91
|
+
this.logged = false;
|
|
92
|
+
this.log = ()=>{
|
|
93
|
+
if (this.logged) return;
|
|
94
|
+
// Always relative to widget init; skip when there's no baseline.
|
|
95
|
+
const startTime = window._q_widgetInitializedAt;
|
|
96
|
+
if (!startTime) return;
|
|
97
|
+
const delta = performance.now() - startTime;
|
|
98
|
+
emitTiming(this.metricName, delta);
|
|
99
|
+
this.logged = true;
|
|
100
|
+
};
|
|
101
|
+
this.skip = ()=>{
|
|
102
|
+
this.logged = true;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// TODO:
|
|
107
|
+
// Add DeltaMetric class
|
|
108
|
+
// Add IncrementMetric class
|
|
109
|
+
const multimodal = {
|
|
110
|
+
timeToInit: new InitializationMetric("multimodal_time_to_init_ms"),
|
|
111
|
+
timeToReplaceGutter: new InitializationMetric("multimodal_time_to_replace_gutter_ms")
|
|
112
|
+
};
|
|
113
|
+
// TODO: Add other metric domains here
|
|
114
|
+
const metrics = {
|
|
115
|
+
emitTiming: emitTiming,
|
|
116
|
+
emitIncrement: emitIncrement,
|
|
117
|
+
multimodal: multimodal
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
export { isWidgetBundleResource, metrics, resolveOriginTime, widgetConsumer };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { RandomIdGenerator } from "../../vendor/open-telemetry-idgenerator.js";
|
|
2
|
+
import { SpanStatusCodeEnum } from "./telemetry.js";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Span {
|
|
7
|
+
get id() {
|
|
8
|
+
return this._id;
|
|
9
|
+
}
|
|
10
|
+
get name() {
|
|
11
|
+
return this._name;
|
|
12
|
+
}
|
|
13
|
+
get parentSpanId() {
|
|
14
|
+
return this._parentSpanId;
|
|
15
|
+
}
|
|
16
|
+
get attributes() {
|
|
17
|
+
return this._attributes;
|
|
18
|
+
}
|
|
19
|
+
get status() {
|
|
20
|
+
return this._status;
|
|
21
|
+
}
|
|
22
|
+
get startTime() {
|
|
23
|
+
return this._startTime;
|
|
24
|
+
}
|
|
25
|
+
get endTime() {
|
|
26
|
+
return this._endTime;
|
|
27
|
+
}
|
|
28
|
+
setAttributes(attributes) {
|
|
29
|
+
if (!attributes || Object.keys(attributes).length === 0) return;
|
|
30
|
+
for (const [key, value] of Object.entries(attributes)){
|
|
31
|
+
if (value) this.setAttribute(key, value);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
setAttribute(attribute, value) {
|
|
35
|
+
this._attributes[attribute] = value;
|
|
36
|
+
}
|
|
37
|
+
setStatus(code, message) {
|
|
38
|
+
this._status = {
|
|
39
|
+
code,
|
|
40
|
+
message
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
constructor(name, parentSpanId){
|
|
44
|
+
this._status = {
|
|
45
|
+
code: SpanStatusCodeEnum.UNSET,
|
|
46
|
+
message: ""
|
|
47
|
+
};
|
|
48
|
+
this._id = new RandomIdGenerator().generateSpanId();
|
|
49
|
+
this._name = name;
|
|
50
|
+
this._parentSpanId = parentSpanId;
|
|
51
|
+
// OpenTelemetry allows Date, epoch milliseconds or performance.now()
|
|
52
|
+
// We assume performance.now in all cases
|
|
53
|
+
this._startTime = 0;
|
|
54
|
+
this._endTime = 0;
|
|
55
|
+
this._attributes = {};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
class TimedSpan extends Span {
|
|
59
|
+
end() {
|
|
60
|
+
if (this.endTime !== 0) {
|
|
61
|
+
throw new Error("end() already called on span.");
|
|
62
|
+
}
|
|
63
|
+
this._endTime = performance.now();
|
|
64
|
+
}
|
|
65
|
+
constructor(name, attributes, parentSpanId){
|
|
66
|
+
super(name, parentSpanId);
|
|
67
|
+
this.setAttributes(attributes);
|
|
68
|
+
this._startTime = performance.now();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Used to record Performance entries that occur out-of-band
|
|
72
|
+
class PerformanceSpan extends Span {
|
|
73
|
+
constructor(name, attributes, parentSpanId, startTime, endTime){
|
|
74
|
+
super(name, parentSpanId);
|
|
75
|
+
this.setAttributes(attributes);
|
|
76
|
+
this._startTime = startTime;
|
|
77
|
+
this._endTime = endTime;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
var span_Span = /* unused export */ undefined;
|
|
82
|
+
export { PerformanceSpan, TimedSpan, span_Span as Span };
|