@scalebun-release/web 2.2.2
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/LICENSE +21 -0
- package/README.md +57 -0
- package/dist/bootstrap/FeatureRegistry.d.ts +44 -0
- package/dist/bootstrap/FeatureRegistry.d.ts.map +1 -0
- package/dist/bootstrap/FeatureRegistry.js +85 -0
- package/dist/bootstrap/FeatureRegistry.js.map +1 -0
- package/dist/bootstrap/SDKBootstrapper.d.ts +37 -0
- package/dist/bootstrap/SDKBootstrapper.d.ts.map +1 -0
- package/dist/bootstrap/SDKBootstrapper.js +346 -0
- package/dist/bootstrap/SDKBootstrapper.js.map +1 -0
- package/dist/browser.d.ts +51 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +86 -0
- package/dist/browser.js.map +1 -0
- package/dist/config/endpoints.d.ts +12 -0
- package/dist/config/endpoints.d.ts.map +1 -0
- package/dist/config/endpoints.js +12 -0
- package/dist/config/endpoints.js.map +1 -0
- package/dist/config/schema.d.ts +120 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +117 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/breadcrumbs.d.ts +56 -0
- package/dist/core/breadcrumbs.d.ts.map +1 -0
- package/dist/core/breadcrumbs.js +141 -0
- package/dist/core/breadcrumbs.js.map +1 -0
- package/dist/core/capabilities.d.ts +38 -0
- package/dist/core/capabilities.d.ts.map +1 -0
- package/dist/core/capabilities.js +78 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/consent.d.ts +17 -0
- package/dist/core/consent.d.ts.map +1 -0
- package/dist/core/consent.js +38 -0
- package/dist/core/consent.js.map +1 -0
- package/dist/core/csp.d.ts +31 -0
- package/dist/core/csp.d.ts.map +1 -0
- package/dist/core/csp.js +74 -0
- package/dist/core/csp.js.map +1 -0
- package/dist/core/evalContext.d.ts +7 -0
- package/dist/core/evalContext.d.ts.map +1 -0
- package/dist/core/evalContext.js +22 -0
- package/dist/core/evalContext.js.map +1 -0
- package/dist/core/ids.d.ts +6 -0
- package/dist/core/ids.d.ts.map +1 -0
- package/dist/core/ids.js +35 -0
- package/dist/core/ids.js.map +1 -0
- package/dist/core/index.d.ts +16 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +16 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lifecycle.d.ts +4 -0
- package/dist/core/lifecycle.d.ts.map +1 -0
- package/dist/core/lifecycle.js +24 -0
- package/dist/core/lifecycle.js.map +1 -0
- package/dist/core/logger.d.ts +12 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +14 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/observe.d.ts +3 -0
- package/dist/core/observe.d.ts.map +1 -0
- package/dist/core/observe.js +22 -0
- package/dist/core/observe.js.map +1 -0
- package/dist/core/pageContext.d.ts +13 -0
- package/dist/core/pageContext.d.ts.map +1 -0
- package/dist/core/pageContext.js +90 -0
- package/dist/core/pageContext.js.map +1 -0
- package/dist/core/prune.d.ts +31 -0
- package/dist/core/prune.d.ts.map +1 -0
- package/dist/core/prune.js +112 -0
- package/dist/core/prune.js.map +1 -0
- package/dist/core/redact.d.ts +15 -0
- package/dist/core/redact.d.ts.map +1 -0
- package/dist/core/redact.js +72 -0
- package/dist/core/redact.js.map +1 -0
- package/dist/core/replayCoord.d.ts +22 -0
- package/dist/core/replayCoord.d.ts.map +1 -0
- package/dist/core/replayCoord.js +20 -0
- package/dist/core/replayCoord.js.map +1 -0
- package/dist/core/retry.d.ts +25 -0
- package/dist/core/retry.d.ts.map +1 -0
- package/dist/core/retry.js +44 -0
- package/dist/core/retry.js.map +1 -0
- package/dist/core/runtime.d.ts +28 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +67 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/scrollDepth.d.ts +48 -0
- package/dist/core/scrollDepth.d.ts.map +1 -0
- package/dist/core/scrollDepth.js +63 -0
- package/dist/core/scrollDepth.js.map +1 -0
- package/dist/core/uiStateReader.d.ts +35 -0
- package/dist/core/uiStateReader.d.ts.map +1 -0
- package/dist/core/uiStateReader.js +47 -0
- package/dist/core/uiStateReader.js.map +1 -0
- package/dist/core/version.generated.d.ts +9 -0
- package/dist/core/version.generated.d.ts.map +1 -0
- package/dist/core/version.generated.js +9 -0
- package/dist/core/version.generated.js.map +1 -0
- package/dist/debug/index.d.ts +6 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/index.js +2 -0
- package/dist/debug/index.js.map +1 -0
- package/dist/features/analytics/AnalyticsFeature.d.ts +123 -0
- package/dist/features/analytics/AnalyticsFeature.d.ts.map +1 -0
- package/dist/features/analytics/AnalyticsFeature.js +785 -0
- package/dist/features/analytics/AnalyticsFeature.js.map +1 -0
- package/dist/features/analytics/autocapture.d.ts +13 -0
- package/dist/features/analytics/autocapture.d.ts.map +1 -0
- package/dist/features/analytics/autocapture.js +436 -0
- package/dist/features/analytics/autocapture.js.map +1 -0
- package/dist/features/analytics/governance.d.ts +15 -0
- package/dist/features/analytics/governance.d.ts.map +1 -0
- package/dist/features/analytics/governance.js +30 -0
- package/dist/features/analytics/governance.js.map +1 -0
- package/dist/features/analytics/revenue.d.ts +77 -0
- package/dist/features/analytics/revenue.d.ts.map +1 -0
- package/dist/features/analytics/revenue.js +56 -0
- package/dist/features/analytics/revenue.js.map +1 -0
- package/dist/features/analytics/sampler.d.ts +2 -0
- package/dist/features/analytics/sampler.d.ts.map +1 -0
- package/dist/features/analytics/sampler.js +24 -0
- package/dist/features/analytics/sampler.js.map +1 -0
- package/dist/features/analytics/subscription.d.ts +35 -0
- package/dist/features/analytics/subscription.d.ts.map +1 -0
- package/dist/features/analytics/subscription.js +95 -0
- package/dist/features/analytics/subscription.js.map +1 -0
- package/dist/features/attention/index.d.ts +29 -0
- package/dist/features/attention/index.d.ts.map +1 -0
- package/dist/features/attention/index.js +128 -0
- package/dist/features/attention/index.js.map +1 -0
- package/dist/features/bugreport/BugReportFeature.d.ts +37 -0
- package/dist/features/bugreport/BugReportFeature.d.ts.map +1 -0
- package/dist/features/bugreport/BugReportFeature.js +56 -0
- package/dist/features/bugreport/BugReportFeature.js.map +1 -0
- package/dist/features/bugreport/collect.d.ts +33 -0
- package/dist/features/bugreport/collect.d.ts.map +1 -0
- package/dist/features/bugreport/collect.js +30 -0
- package/dist/features/bugreport/collect.js.map +1 -0
- package/dist/features/bugreport/widget.d.ts +40 -0
- package/dist/features/bugreport/widget.d.ts.map +1 -0
- package/dist/features/bugreport/widget.js +145 -0
- package/dist/features/bugreport/widget.js.map +1 -0
- package/dist/features/coach/CoachmarkFeature.d.ts +78 -0
- package/dist/features/coach/CoachmarkFeature.d.ts.map +1 -0
- package/dist/features/coach/CoachmarkFeature.js +161 -0
- package/dist/features/coach/CoachmarkFeature.js.map +1 -0
- package/dist/features/coach/anchor.d.ts +32 -0
- package/dist/features/coach/anchor.d.ts.map +1 -0
- package/dist/features/coach/anchor.js +128 -0
- package/dist/features/coach/anchor.js.map +1 -0
- package/dist/features/coach/observers.d.ts +17 -0
- package/dist/features/coach/observers.d.ts.map +1 -0
- package/dist/features/coach/observers.js +49 -0
- package/dist/features/coach/observers.js.map +1 -0
- package/dist/features/coach/overlay.d.ts +15 -0
- package/dist/features/coach/overlay.d.ts.map +1 -0
- package/dist/features/coach/overlay.js +205 -0
- package/dist/features/coach/overlay.js.map +1 -0
- package/dist/features/coach/position.d.ts +9 -0
- package/dist/features/coach/position.d.ts.map +1 -0
- package/dist/features/coach/position.js +83 -0
- package/dist/features/coach/position.js.map +1 -0
- package/dist/features/coach/predicate.d.ts +10 -0
- package/dist/features/coach/predicate.d.ts.map +1 -0
- package/dist/features/coach/predicate.js +36 -0
- package/dist/features/coach/predicate.js.map +1 -0
- package/dist/features/coach/tour.d.ts +55 -0
- package/dist/features/coach/tour.d.ts.map +1 -0
- package/dist/features/coach/tour.js +181 -0
- package/dist/features/coach/tour.js.map +1 -0
- package/dist/features/coach/types.d.ts +161 -0
- package/dist/features/coach/types.d.ts.map +1 -0
- package/dist/features/coach/types.js +2 -0
- package/dist/features/coach/types.js.map +1 -0
- package/dist/features/coach/wait.d.ts +34 -0
- package/dist/features/coach/wait.d.ts.map +1 -0
- package/dist/features/coach/wait.js +107 -0
- package/dist/features/coach/wait.js.map +1 -0
- package/dist/features/config/ConfigFeature.d.ts +117 -0
- package/dist/features/config/ConfigFeature.d.ts.map +1 -0
- package/dist/features/config/ConfigFeature.js +437 -0
- package/dist/features/config/ConfigFeature.js.map +1 -0
- package/dist/features/config/bucketing.d.ts +20 -0
- package/dist/features/config/bucketing.d.ts.map +1 -0
- package/dist/features/config/bucketing.js +37 -0
- package/dist/features/config/bucketing.js.map +1 -0
- package/dist/features/config/configStore.d.ts +11 -0
- package/dist/features/config/configStore.d.ts.map +1 -0
- package/dist/features/config/configStore.js +66 -0
- package/dist/features/config/configStore.js.map +1 -0
- package/dist/features/config/targeting.d.ts +11 -0
- package/dist/features/config/targeting.d.ts.map +1 -0
- package/dist/features/config/targeting.js +57 -0
- package/dist/features/config/targeting.js.map +1 -0
- package/dist/features/config/types.d.ts +100 -0
- package/dist/features/config/types.d.ts.map +1 -0
- package/dist/features/config/types.js +9 -0
- package/dist/features/config/types.js.map +1 -0
- package/dist/features/console/ConsoleFeature.d.ts +31 -0
- package/dist/features/console/ConsoleFeature.d.ts.map +1 -0
- package/dist/features/console/ConsoleFeature.js +98 -0
- package/dist/features/console/ConsoleFeature.js.map +1 -0
- package/dist/features/console/normalize.d.ts +18 -0
- package/dist/features/console/normalize.d.ts.map +1 -0
- package/dist/features/console/normalize.js +64 -0
- package/dist/features/console/normalize.js.map +1 -0
- package/dist/features/console/serialize.d.ts +24 -0
- package/dist/features/console/serialize.d.ts.map +1 -0
- package/dist/features/console/serialize.js +99 -0
- package/dist/features/console/serialize.js.map +1 -0
- package/dist/features/console/throttle.d.ts +27 -0
- package/dist/features/console/throttle.d.ts.map +1 -0
- package/dist/features/console/throttle.js +37 -0
- package/dist/features/console/throttle.js.map +1 -0
- package/dist/features/crash/CrashFeature.d.ts +46 -0
- package/dist/features/crash/CrashFeature.d.ts.map +1 -0
- package/dist/features/crash/CrashFeature.js +173 -0
- package/dist/features/crash/CrashFeature.js.map +1 -0
- package/dist/features/crash/liveness.d.ts +30 -0
- package/dist/features/crash/liveness.d.ts.map +1 -0
- package/dist/features/crash/liveness.js +131 -0
- package/dist/features/crash/liveness.js.map +1 -0
- package/dist/features/engage/EngageFeature.d.ts +67 -0
- package/dist/features/engage/EngageFeature.d.ts.map +1 -0
- package/dist/features/engage/EngageFeature.js +243 -0
- package/dist/features/engage/EngageFeature.js.map +1 -0
- package/dist/features/engage/attachments.d.ts +24 -0
- package/dist/features/engage/attachments.d.ts.map +1 -0
- package/dist/features/engage/attachments.js +209 -0
- package/dist/features/engage/attachments.js.map +1 -0
- package/dist/features/engage/gameLogic.d.ts +60 -0
- package/dist/features/engage/gameLogic.d.ts.map +1 -0
- package/dist/features/engage/gameLogic.js +213 -0
- package/dist/features/engage/gameLogic.js.map +1 -0
- package/dist/features/engage/gameResolver.d.ts +35 -0
- package/dist/features/engage/gameResolver.d.ts.map +1 -0
- package/dist/features/engage/gameResolver.js +81 -0
- package/dist/features/engage/gameResolver.js.map +1 -0
- package/dist/features/engage/gameTypes.d.ts +76 -0
- package/dist/features/engage/gameTypes.d.ts.map +1 -0
- package/dist/features/engage/gameTypes.js +17 -0
- package/dist/features/engage/gameTypes.js.map +1 -0
- package/dist/features/engage/inappSlots.d.ts +39 -0
- package/dist/features/engage/inappSlots.d.ts.map +1 -0
- package/dist/features/engage/inappSlots.js +50 -0
- package/dist/features/engage/inappSlots.js.map +1 -0
- package/dist/features/engage/normalize.d.ts +11 -0
- package/dist/features/engage/normalize.d.ts.map +1 -0
- package/dist/features/engage/normalize.js +210 -0
- package/dist/features/engage/normalize.js.map +1 -0
- package/dist/features/engage/richInApp.d.ts +64 -0
- package/dist/features/engage/richInApp.d.ts.map +1 -0
- package/dist/features/engage/richInApp.js +1082 -0
- package/dist/features/engage/richInApp.js.map +1 -0
- package/dist/features/engage/runtime.d.ts +89 -0
- package/dist/features/engage/runtime.d.ts.map +1 -0
- package/dist/features/engage/runtime.js +364 -0
- package/dist/features/engage/runtime.js.map +1 -0
- package/dist/features/engage/shakeDetector.d.ts +6 -0
- package/dist/features/engage/shakeDetector.d.ts.map +1 -0
- package/dist/features/engage/shakeDetector.js +105 -0
- package/dist/features/engage/shakeDetector.js.map +1 -0
- package/dist/features/engage/theme.d.ts +129 -0
- package/dist/features/engage/theme.d.ts.map +1 -0
- package/dist/features/engage/theme.js +270 -0
- package/dist/features/engage/theme.js.map +1 -0
- package/dist/features/engage/throttle.d.ts +41 -0
- package/dist/features/engage/throttle.d.ts.map +1 -0
- package/dist/features/engage/throttle.js +220 -0
- package/dist/features/engage/throttle.js.map +1 -0
- package/dist/features/engage/transport.d.ts +62 -0
- package/dist/features/engage/transport.d.ts.map +1 -0
- package/dist/features/engage/transport.js +185 -0
- package/dist/features/engage/transport.js.map +1 -0
- package/dist/features/engage/triggerEngine.d.ts +39 -0
- package/dist/features/engage/triggerEngine.d.ts.map +1 -0
- package/dist/features/engage/triggerEngine.js +105 -0
- package/dist/features/engage/triggerEngine.js.map +1 -0
- package/dist/features/engage/types.d.ts +271 -0
- package/dist/features/engage/types.d.ts.map +1 -0
- package/dist/features/engage/types.js +3 -0
- package/dist/features/engage/types.js.map +1 -0
- package/dist/features/engage/widget/InAppWidget.d.ts +10 -0
- package/dist/features/engage/widget/InAppWidget.d.ts.map +1 -0
- package/dist/features/engage/widget/InAppWidget.js +137 -0
- package/dist/features/engage/widget/InAppWidget.js.map +1 -0
- package/dist/features/engage/widget/SurveyWidget.d.ts +11 -0
- package/dist/features/engage/widget/SurveyWidget.d.ts.map +1 -0
- package/dist/features/engage/widget/SurveyWidget.js +547 -0
- package/dist/features/engage/widget/SurveyWidget.js.map +1 -0
- package/dist/features/errors/ErrorsFeature.d.ts +62 -0
- package/dist/features/errors/ErrorsFeature.d.ts.map +1 -0
- package/dist/features/errors/ErrorsFeature.js +209 -0
- package/dist/features/errors/ErrorsFeature.js.map +1 -0
- package/dist/features/errors/causes.d.ts +15 -0
- package/dist/features/errors/causes.d.ts.map +1 -0
- package/dist/features/errors/causes.js +29 -0
- package/dist/features/errors/causes.js.map +1 -0
- package/dist/features/errors/dedup.d.ts +28 -0
- package/dist/features/errors/dedup.d.ts.map +1 -0
- package/dist/features/errors/dedup.js +42 -0
- package/dist/features/errors/dedup.js.map +1 -0
- package/dist/features/errors/group/fingerprint.d.ts +13 -0
- package/dist/features/errors/group/fingerprint.d.ts.map +1 -0
- package/dist/features/errors/group/fingerprint.js +45 -0
- package/dist/features/errors/group/fingerprint.js.map +1 -0
- package/dist/features/errors/lazy.d.ts +8 -0
- package/dist/features/errors/lazy.d.ts.map +1 -0
- package/dist/features/errors/lazy.js +8 -0
- package/dist/features/errors/lazy.js.map +1 -0
- package/dist/features/errors/normalize.d.ts +26 -0
- package/dist/features/errors/normalize.d.ts.map +1 -0
- package/dist/features/errors/normalize.js +58 -0
- package/dist/features/errors/normalize.js.map +1 -0
- package/dist/features/errors/parse/stacktrace.d.ts +13 -0
- package/dist/features/errors/parse/stacktrace.d.ts.map +1 -0
- package/dist/features/errors/parse/stacktrace.js +85 -0
- package/dist/features/errors/parse/stacktrace.js.map +1 -0
- package/dist/features/errors/redact.d.ts +7 -0
- package/dist/features/errors/redact.d.ts.map +1 -0
- package/dist/features/errors/redact.js +39 -0
- package/dist/features/errors/redact.js.map +1 -0
- package/dist/features/errors/sampling.d.ts +2 -0
- package/dist/features/errors/sampling.d.ts.map +1 -0
- package/dist/features/errors/sampling.js +24 -0
- package/dist/features/errors/sampling.js.map +1 -0
- package/dist/features/errors/scope.d.ts +26 -0
- package/dist/features/errors/scope.d.ts.map +1 -0
- package/dist/features/errors/scope.js +30 -0
- package/dist/features/errors/scope.js.map +1 -0
- package/dist/features/exit-intent/ExitIntentFeature.d.ts +16 -0
- package/dist/features/exit-intent/ExitIntentFeature.d.ts.map +1 -0
- package/dist/features/exit-intent/ExitIntentFeature.js +25 -0
- package/dist/features/exit-intent/ExitIntentFeature.js.map +1 -0
- package/dist/features/exit-intent/engine.d.ts +127 -0
- package/dist/features/exit-intent/engine.d.ts.map +1 -0
- package/dist/features/exit-intent/engine.js +227 -0
- package/dist/features/exit-intent/engine.js.map +1 -0
- package/dist/features/forms/index.d.ts +83 -0
- package/dist/features/forms/index.d.ts.map +1 -0
- package/dist/features/forms/index.js +405 -0
- package/dist/features/forms/index.js.map +1 -0
- package/dist/features/inapp/InApp2Feature.d.ts +24 -0
- package/dist/features/inapp/InApp2Feature.d.ts.map +1 -0
- package/dist/features/inapp/InApp2Feature.js +44 -0
- package/dist/features/inapp/InApp2Feature.js.map +1 -0
- package/dist/features/inapp/a11y/focus.d.ts +24 -0
- package/dist/features/inapp/a11y/focus.d.ts.map +1 -0
- package/dist/features/inapp/a11y/focus.js +112 -0
- package/dist/features/inapp/a11y/focus.js.map +1 -0
- package/dist/features/inapp/anchor/controller.d.ts +64 -0
- package/dist/features/inapp/anchor/controller.d.ts.map +1 -0
- package/dist/features/inapp/anchor/controller.js +155 -0
- package/dist/features/inapp/anchor/controller.js.map +1 -0
- package/dist/features/inapp/api.d.ts +28 -0
- package/dist/features/inapp/api.d.ts.map +1 -0
- package/dist/features/inapp/api.js +41 -0
- package/dist/features/inapp/api.js.map +1 -0
- package/dist/features/inapp/blocks/blocks.d.ts +65 -0
- package/dist/features/inapp/blocks/blocks.d.ts.map +1 -0
- package/dist/features/inapp/blocks/blocks.js +196 -0
- package/dist/features/inapp/blocks/blocks.js.map +1 -0
- package/dist/features/inapp/blocks/feedback.d.ts +13 -0
- package/dist/features/inapp/blocks/feedback.d.ts.map +1 -0
- package/dist/features/inapp/blocks/feedback.js +154 -0
- package/dist/features/inapp/blocks/feedback.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/carousel.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/carousel.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/carousel.js +67 -0
- package/dist/features/inapp/blocks/heavy/carousel.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/chart.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/chart.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/chart.js +83 -0
- package/dist/features/inapp/blocks/heavy/chart.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/code.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/code.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/code.js +47 -0
- package/dist/features/inapp/blocks/heavy/code.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/confetti.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/confetti.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/confetti.js +76 -0
- package/dist/features/inapp/blocks/heavy/confetti.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/countdown.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/countdown.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/countdown.js +59 -0
- package/dist/features/inapp/blocks/heavy/countdown.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/index.d.ts +11 -0
- package/dist/features/inapp/blocks/heavy/index.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/index.js +45 -0
- package/dist/features/inapp/blocks/heavy/index.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/markdown.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/markdown.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/markdown.js +76 -0
- package/dist/features/inapp/blocks/heavy/markdown.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/productgrid.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/productgrid.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/productgrid.js +46 -0
- package/dist/features/inapp/blocks/heavy/productgrid.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/qr.d.ts +10 -0
- package/dist/features/inapp/blocks/heavy/qr.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/qr.js +69 -0
- package/dist/features/inapp/blocks/heavy/qr.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/scratch.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/scratch.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/scratch.js +141 -0
- package/dist/features/inapp/blocks/heavy/scratch.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/slot.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/slot.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/slot.js +96 -0
- package/dist/features/inapp/blocks/heavy/slot.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.js +127 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/steps.d.ts +27 -0
- package/dist/features/inapp/blocks/heavy/steps.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/steps.js +135 -0
- package/dist/features/inapp/blocks/heavy/steps.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/streak.d.ts +18 -0
- package/dist/features/inapp/blocks/heavy/streak.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/streak.js +52 -0
- package/dist/features/inapp/blocks/heavy/streak.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/table.d.ts +7 -0
- package/dist/features/inapp/blocks/heavy/table.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/table.js +30 -0
- package/dist/features/inapp/blocks/heavy/table.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/unavailable.d.ts +28 -0
- package/dist/features/inapp/blocks/heavy/unavailable.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/unavailable.js +33 -0
- package/dist/features/inapp/blocks/heavy/unavailable.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/video.d.ts +7 -0
- package/dist/features/inapp/blocks/heavy/video.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/video.js +38 -0
- package/dist/features/inapp/blocks/heavy/video.js.map +1 -0
- package/dist/features/inapp/blocks/styles.d.ts +7 -0
- package/dist/features/inapp/blocks/styles.d.ts.map +1 -0
- package/dist/features/inapp/blocks/styles.js +225 -0
- package/dist/features/inapp/blocks/styles.js.map +1 -0
- package/dist/features/inapp/center/bridge.d.ts +12 -0
- package/dist/features/inapp/center/bridge.d.ts.map +1 -0
- package/dist/features/inapp/center/bridge.js +59 -0
- package/dist/features/inapp/center/bridge.js.map +1 -0
- package/dist/features/inapp/center/panel.d.ts +20 -0
- package/dist/features/inapp/center/panel.d.ts.map +1 -0
- package/dist/features/inapp/center/panel.js +228 -0
- package/dist/features/inapp/center/panel.js.map +1 -0
- package/dist/features/inapp/center/store.d.ts +50 -0
- package/dist/features/inapp/center/store.d.ts.map +1 -0
- package/dist/features/inapp/center/store.js +188 -0
- package/dist/features/inapp/center/store.js.map +1 -0
- package/dist/features/inapp/center/sync.d.ts +32 -0
- package/dist/features/inapp/center/sync.d.ts.map +1 -0
- package/dist/features/inapp/center/sync.js +60 -0
- package/dist/features/inapp/center/sync.js.map +1 -0
- package/dist/features/inapp/center/types.d.ts +46 -0
- package/dist/features/inapp/center/types.d.ts.map +1 -0
- package/dist/features/inapp/center/types.js +5 -0
- package/dist/features/inapp/center/types.js.map +1 -0
- package/dist/features/inapp/core/analytics.d.ts +35 -0
- package/dist/features/inapp/core/analytics.d.ts.map +1 -0
- package/dist/features/inapp/core/analytics.js +70 -0
- package/dist/features/inapp/core/analytics.js.map +1 -0
- package/dist/features/inapp/core/compat.d.ts +28 -0
- package/dist/features/inapp/core/compat.d.ts.map +1 -0
- package/dist/features/inapp/core/compat.js +104 -0
- package/dist/features/inapp/core/compat.js.map +1 -0
- package/dist/features/inapp/core/debugOverlay.d.ts +5 -0
- package/dist/features/inapp/core/debugOverlay.d.ts.map +1 -0
- package/dist/features/inapp/core/debugOverlay.js +79 -0
- package/dist/features/inapp/core/debugOverlay.js.map +1 -0
- package/dist/features/inapp/core/engine.d.ts +72 -0
- package/dist/features/inapp/core/engine.d.ts.map +1 -0
- package/dist/features/inapp/core/engine.js +248 -0
- package/dist/features/inapp/core/engine.js.map +1 -0
- package/dist/features/inapp/core/environment.d.ts +21 -0
- package/dist/features/inapp/core/environment.d.ts.map +1 -0
- package/dist/features/inapp/core/environment.js +57 -0
- package/dist/features/inapp/core/environment.js.map +1 -0
- package/dist/features/inapp/core/host.d.ts +53 -0
- package/dist/features/inapp/core/host.d.ts.map +1 -0
- package/dist/features/inapp/core/host.js +243 -0
- package/dist/features/inapp/core/host.js.map +1 -0
- package/dist/features/inapp/core/keyboard.d.ts +27 -0
- package/dist/features/inapp/core/keyboard.d.ts.map +1 -0
- package/dist/features/inapp/core/keyboard.js +69 -0
- package/dist/features/inapp/core/keyboard.js.map +1 -0
- package/dist/features/inapp/core/metrics.d.ts +73 -0
- package/dist/features/inapp/core/metrics.d.ts.map +1 -0
- package/dist/features/inapp/core/metrics.js +125 -0
- package/dist/features/inapp/core/metrics.js.map +1 -0
- package/dist/features/inapp/core/migration.d.ts +32 -0
- package/dist/features/inapp/core/migration.d.ts.map +1 -0
- package/dist/features/inapp/core/migration.js +28 -0
- package/dist/features/inapp/core/migration.js.map +1 -0
- package/dist/features/inapp/core/orchestrator.d.ts +77 -0
- package/dist/features/inapp/core/orchestrator.d.ts.map +1 -0
- package/dist/features/inapp/core/orchestrator.js +144 -0
- package/dist/features/inapp/core/orchestrator.js.map +1 -0
- package/dist/features/inapp/core/respect.d.ts +51 -0
- package/dist/features/inapp/core/respect.d.ts.map +1 -0
- package/dist/features/inapp/core/respect.js +78 -0
- package/dist/features/inapp/core/respect.js.map +1 -0
- package/dist/features/inapp/core/slots.d.ts +19 -0
- package/dist/features/inapp/core/slots.d.ts.map +1 -0
- package/dist/features/inapp/core/slots.js +53 -0
- package/dist/features/inapp/core/slots.js.map +1 -0
- package/dist/features/inapp/core/targeting.d.ts +85 -0
- package/dist/features/inapp/core/targeting.d.ts.map +1 -0
- package/dist/features/inapp/core/targeting.js +255 -0
- package/dist/features/inapp/core/targeting.js.map +1 -0
- package/dist/features/inapp/core/transport.d.ts +66 -0
- package/dist/features/inapp/core/transport.d.ts.map +1 -0
- package/dist/features/inapp/core/transport.js +154 -0
- package/dist/features/inapp/core/transport.js.map +1 -0
- package/dist/features/inapp/core/triggers.d.ts +94 -0
- package/dist/features/inapp/core/triggers.d.ts.map +1 -0
- package/dist/features/inapp/core/triggers.js +368 -0
- package/dist/features/inapp/core/triggers.js.map +1 -0
- package/dist/features/inapp/inappContract.web.d.ts +47 -0
- package/dist/features/inapp/inappContract.web.d.ts.map +1 -0
- package/dist/features/inapp/inappContract.web.js +230 -0
- package/dist/features/inapp/inappContract.web.js.map +1 -0
- package/dist/features/inapp/index.d.ts +23 -0
- package/dist/features/inapp/index.d.ts.map +1 -0
- package/dist/features/inapp/index.js +23 -0
- package/dist/features/inapp/index.js.map +1 -0
- package/dist/features/inapp/registry.canonical.hash.d.ts +7 -0
- package/dist/features/inapp/registry.canonical.hash.d.ts.map +1 -0
- package/dist/features/inapp/registry.canonical.hash.js +7 -0
- package/dist/features/inapp/registry.canonical.hash.js.map +1 -0
- package/dist/features/inapp/registry.web.canonical.d.ts +21 -0
- package/dist/features/inapp/registry.web.canonical.d.ts.map +1 -0
- package/dist/features/inapp/registry.web.canonical.js +136 -0
- package/dist/features/inapp/registry.web.canonical.js.map +1 -0
- package/dist/features/inapp/registry.web.catalog.d.ts +12 -0
- package/dist/features/inapp/registry.web.catalog.d.ts.map +1 -0
- package/dist/features/inapp/registry.web.catalog.js +208 -0
- package/dist/features/inapp/registry.web.catalog.js.map +1 -0
- package/dist/features/inapp/surfaces/banner.d.ts +7 -0
- package/dist/features/inapp/surfaces/banner.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/banner.js +30 -0
- package/dist/features/inapp/surfaces/banner.js.map +1 -0
- package/dist/features/inapp/surfaces/checklist.d.ts +13 -0
- package/dist/features/inapp/surfaces/checklist.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/checklist.js +127 -0
- package/dist/features/inapp/surfaces/checklist.js.map +1 -0
- package/dist/features/inapp/surfaces/coachmark.d.ts +10 -0
- package/dist/features/inapp/surfaces/coachmark.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/coachmark.js +95 -0
- package/dist/features/inapp/surfaces/coachmark.js.map +1 -0
- package/dist/features/inapp/surfaces/hotspot.d.ts +8 -0
- package/dist/features/inapp/surfaces/hotspot.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/hotspot.js +91 -0
- package/dist/features/inapp/surfaces/hotspot.js.map +1 -0
- package/dist/features/inapp/surfaces/inline.d.ts +13 -0
- package/dist/features/inapp/surfaces/inline.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/inline.js +78 -0
- package/dist/features/inapp/surfaces/inline.js.map +1 -0
- package/dist/features/inapp/surfaces/launcher.d.ts +9 -0
- package/dist/features/inapp/surfaces/launcher.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/launcher.js +54 -0
- package/dist/features/inapp/surfaces/launcher.js.map +1 -0
- package/dist/features/inapp/surfaces/modal.d.ts +8 -0
- package/dist/features/inapp/surfaces/modal.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/modal.js +70 -0
- package/dist/features/inapp/surfaces/modal.js.map +1 -0
- package/dist/features/inapp/surfaces/mount.d.ts +19 -0
- package/dist/features/inapp/surfaces/mount.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/mount.js +29 -0
- package/dist/features/inapp/surfaces/mount.js.map +1 -0
- package/dist/features/inapp/surfaces/palette.d.ts +9 -0
- package/dist/features/inapp/surfaces/palette.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/palette.js +127 -0
- package/dist/features/inapp/surfaces/palette.js.map +1 -0
- package/dist/features/inapp/surfaces/panel.d.ts +14 -0
- package/dist/features/inapp/surfaces/panel.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/panel.js +91 -0
- package/dist/features/inapp/surfaces/panel.js.map +1 -0
- package/dist/features/inapp/surfaces/popover.d.ts +10 -0
- package/dist/features/inapp/surfaces/popover.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/popover.js +69 -0
- package/dist/features/inapp/surfaces/popover.js.map +1 -0
- package/dist/features/inapp/surfaces/render.d.ts +34 -0
- package/dist/features/inapp/surfaces/render.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/render.js +56 -0
- package/dist/features/inapp/surfaces/render.js.map +1 -0
- package/dist/features/inapp/surfaces/slideover.d.ts +9 -0
- package/dist/features/inapp/surfaces/slideover.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/slideover.js +144 -0
- package/dist/features/inapp/surfaces/slideover.js.map +1 -0
- package/dist/features/inapp/surfaces/styles.d.ts +7 -0
- package/dist/features/inapp/surfaces/styles.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/styles.js +235 -0
- package/dist/features/inapp/surfaces/styles.js.map +1 -0
- package/dist/features/inapp/surfaces/surface.d.ts +69 -0
- package/dist/features/inapp/surfaces/surface.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/surface.js +80 -0
- package/dist/features/inapp/surfaces/surface.js.map +1 -0
- package/dist/features/inapp/surfaces/takeover.d.ts +9 -0
- package/dist/features/inapp/surfaces/takeover.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/takeover.js +60 -0
- package/dist/features/inapp/surfaces/takeover.js.map +1 -0
- package/dist/features/inapp/surfaces/toast.d.ts +7 -0
- package/dist/features/inapp/surfaces/toast.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/toast.js +48 -0
- package/dist/features/inapp/surfaces/toast.js.map +1 -0
- package/dist/features/inapp/surfaces/toolbar.d.ts +8 -0
- package/dist/features/inapp/surfaces/toolbar.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/toolbar.js +65 -0
- package/dist/features/inapp/surfaces/toolbar.js.map +1 -0
- package/dist/features/inapp/surfaces/tour.d.ts +14 -0
- package/dist/features/inapp/surfaces/tour.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/tour.js +202 -0
- package/dist/features/inapp/surfaces/tour.js.map +1 -0
- package/dist/features/inapp/types.d.ts +165 -0
- package/dist/features/inapp/types.d.ts.map +1 -0
- package/dist/features/inapp/types.js +12 -0
- package/dist/features/inapp/types.js.map +1 -0
- package/dist/features/inbox/InboxFeature.d.ts +57 -0
- package/dist/features/inbox/InboxFeature.d.ts.map +1 -0
- package/dist/features/inbox/InboxFeature.js +225 -0
- package/dist/features/inbox/InboxFeature.js.map +1 -0
- package/dist/features/inbox/runtime.d.ts +67 -0
- package/dist/features/inbox/runtime.d.ts.map +1 -0
- package/dist/features/inbox/runtime.js +376 -0
- package/dist/features/inbox/runtime.js.map +1 -0
- package/dist/features/inbox/store.d.ts +37 -0
- package/dist/features/inbox/store.d.ts.map +1 -0
- package/dist/features/inbox/store.js +149 -0
- package/dist/features/inbox/store.js.map +1 -0
- package/dist/features/inbox/sync.d.ts +49 -0
- package/dist/features/inbox/sync.d.ts.map +1 -0
- package/dist/features/inbox/sync.js +131 -0
- package/dist/features/inbox/sync.js.map +1 -0
- package/dist/features/inbox/types.d.ts +275 -0
- package/dist/features/inbox/types.d.ts.map +1 -0
- package/dist/features/inbox/types.js +42 -0
- package/dist/features/inbox/types.js.map +1 -0
- package/dist/features/inbox/widget/InboxWidget.d.ts +16 -0
- package/dist/features/inbox/widget/InboxWidget.d.ts.map +1 -0
- package/dist/features/inbox/widget/InboxWidget.js +609 -0
- package/dist/features/inbox/widget/InboxWidget.js.map +1 -0
- package/dist/features/index.d.ts +21 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +2 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/journey/InteractionTracker.d.ts +87 -0
- package/dist/features/journey/InteractionTracker.d.ts.map +1 -0
- package/dist/features/journey/InteractionTracker.js +466 -0
- package/dist/features/journey/InteractionTracker.js.map +1 -0
- package/dist/features/journey/JourneyFeature.d.ts +18 -0
- package/dist/features/journey/JourneyFeature.d.ts.map +1 -0
- package/dist/features/journey/JourneyFeature.js +71 -0
- package/dist/features/journey/JourneyFeature.js.map +1 -0
- package/dist/features/journey/NavigationTracker.d.ts +16 -0
- package/dist/features/journey/NavigationTracker.d.ts.map +1 -0
- package/dist/features/journey/NavigationTracker.js +92 -0
- package/dist/features/journey/NavigationTracker.js.map +1 -0
- package/dist/features/journey/friction.d.ts +28 -0
- package/dist/features/journey/friction.d.ts.map +1 -0
- package/dist/features/journey/friction.js +64 -0
- package/dist/features/journey/friction.js.map +1 -0
- package/dist/features/journey/positionContext.d.ts +30 -0
- package/dist/features/journey/positionContext.d.ts.map +1 -0
- package/dist/features/journey/positionContext.js +116 -0
- package/dist/features/journey/positionContext.js.map +1 -0
- package/dist/features/journey/uiState.d.ts +44 -0
- package/dist/features/journey/uiState.d.ts.map +1 -0
- package/dist/features/journey/uiState.js +158 -0
- package/dist/features/journey/uiState.js.map +1 -0
- package/dist/features/manifest.d.ts +41 -0
- package/dist/features/manifest.d.ts.map +1 -0
- package/dist/features/manifest.js +93 -0
- package/dist/features/manifest.js.map +1 -0
- package/dist/features/network/NetworkFeature.d.ts +60 -0
- package/dist/features/network/NetworkFeature.d.ts.map +1 -0
- package/dist/features/network/NetworkFeature.js +260 -0
- package/dist/features/network/NetworkFeature.js.map +1 -0
- package/dist/features/network/capture/body.d.ts +31 -0
- package/dist/features/network/capture/body.d.ts.map +1 -0
- package/dist/features/network/capture/body.js +81 -0
- package/dist/features/network/capture/body.js.map +1 -0
- package/dist/features/network/classify.d.ts +21 -0
- package/dist/features/network/classify.d.ts.map +1 -0
- package/dist/features/network/classify.js +50 -0
- package/dist/features/network/classify.js.map +1 -0
- package/dist/features/network/dedup.d.ts +36 -0
- package/dist/features/network/dedup.d.ts.map +1 -0
- package/dist/features/network/dedup.js +68 -0
- package/dist/features/network/dedup.js.map +1 -0
- package/dist/features/network/fetchInterceptor.d.ts +20 -0
- package/dist/features/network/fetchInterceptor.d.ts.map +1 -0
- package/dist/features/network/fetchInterceptor.js +158 -0
- package/dist/features/network/fetchInterceptor.js.map +1 -0
- package/dist/features/network/intercept/beacon.d.ts +14 -0
- package/dist/features/network/intercept/beacon.d.ts.map +1 -0
- package/dist/features/network/intercept/beacon.js +56 -0
- package/dist/features/network/intercept/beacon.js.map +1 -0
- package/dist/features/network/intercept/sse.d.ts +16 -0
- package/dist/features/network/intercept/sse.d.ts.map +1 -0
- package/dist/features/network/intercept/sse.js +74 -0
- package/dist/features/network/intercept/sse.js.map +1 -0
- package/dist/features/network/intercept/streams.d.ts +23 -0
- package/dist/features/network/intercept/streams.d.ts.map +1 -0
- package/dist/features/network/intercept/streams.js +25 -0
- package/dist/features/network/intercept/streams.js.map +1 -0
- package/dist/features/network/intercept/websocket.d.ts +14 -0
- package/dist/features/network/intercept/websocket.d.ts.map +1 -0
- package/dist/features/network/intercept/websocket.js +97 -0
- package/dist/features/network/intercept/websocket.js.map +1 -0
- package/dist/features/network/lazy.d.ts +23 -0
- package/dist/features/network/lazy.d.ts.map +1 -0
- package/dist/features/network/lazy.js +65 -0
- package/dist/features/network/lazy.js.map +1 -0
- package/dist/features/network/normalize.d.ts +9 -0
- package/dist/features/network/normalize.d.ts.map +1 -0
- package/dist/features/network/normalize.js +49 -0
- package/dist/features/network/normalize.js.map +1 -0
- package/dist/features/network/parse/graphql.d.ts +17 -0
- package/dist/features/network/parse/graphql.d.ts.map +1 -0
- package/dist/features/network/parse/graphql.js +106 -0
- package/dist/features/network/parse/graphql.js.map +1 -0
- package/dist/features/network/parse/url.d.ts +12 -0
- package/dist/features/network/parse/url.d.ts.map +1 -0
- package/dist/features/network/parse/url.js +52 -0
- package/dist/features/network/parse/url.js.map +1 -0
- package/dist/features/network/sampler.d.ts +21 -0
- package/dist/features/network/sampler.d.ts.map +1 -0
- package/dist/features/network/sampler.js +25 -0
- package/dist/features/network/sampler.js.map +1 -0
- package/dist/features/network/size.d.ts +21 -0
- package/dist/features/network/size.d.ts.map +1 -0
- package/dist/features/network/size.js +63 -0
- package/dist/features/network/size.js.map +1 -0
- package/dist/features/network/thirdParty.d.ts +95 -0
- package/dist/features/network/thirdParty.d.ts.map +1 -0
- package/dist/features/network/thirdParty.js +126 -0
- package/dist/features/network/thirdParty.js.map +1 -0
- package/dist/features/network/timing.d.ts +41 -0
- package/dist/features/network/timing.d.ts.map +1 -0
- package/dist/features/network/timing.js +134 -0
- package/dist/features/network/timing.js.map +1 -0
- package/dist/features/network/tracing.d.ts +18 -0
- package/dist/features/network/tracing.d.ts.map +1 -0
- package/dist/features/network/tracing.js +46 -0
- package/dist/features/network/tracing.js.map +1 -0
- package/dist/features/network/types.d.ts +75 -0
- package/dist/features/network/types.d.ts.map +1 -0
- package/dist/features/network/types.js +2 -0
- package/dist/features/network/types.js.map +1 -0
- package/dist/features/network/xhrInterceptor.d.ts +12 -0
- package/dist/features/network/xhrInterceptor.d.ts.map +1 -0
- package/dist/features/network/xhrInterceptor.js +108 -0
- package/dist/features/network/xhrInterceptor.js.map +1 -0
- package/dist/features/performance/PerformanceFeature.d.ts +76 -0
- package/dist/features/performance/PerformanceFeature.d.ts.map +1 -0
- package/dist/features/performance/PerformanceFeature.js +265 -0
- package/dist/features/performance/PerformanceFeature.js.map +1 -0
- package/dist/features/performance/jankTap.d.ts +23 -0
- package/dist/features/performance/jankTap.d.ts.map +1 -0
- package/dist/features/performance/jankTap.js +20 -0
- package/dist/features/performance/jankTap.js.map +1 -0
- package/dist/features/performance/longTasks.d.ts +14 -0
- package/dist/features/performance/longTasks.d.ts.map +1 -0
- package/dist/features/performance/longTasks.js +55 -0
- package/dist/features/performance/longTasks.js.map +1 -0
- package/dist/features/performance/normalize.d.ts +15 -0
- package/dist/features/performance/normalize.d.ts.map +1 -0
- package/dist/features/performance/normalize.js +30 -0
- package/dist/features/performance/normalize.js.map +1 -0
- package/dist/features/performance/resources.d.ts +19 -0
- package/dist/features/performance/resources.d.ts.map +1 -0
- package/dist/features/performance/resources.js +78 -0
- package/dist/features/performance/resources.js.map +1 -0
- package/dist/features/performance/sampler.d.ts +10 -0
- package/dist/features/performance/sampler.d.ts.map +1 -0
- package/dist/features/performance/sampler.js +23 -0
- package/dist/features/performance/sampler.js.map +1 -0
- package/dist/features/performance/spa.d.ts +2 -0
- package/dist/features/performance/spa.d.ts.map +1 -0
- package/dist/features/performance/spa.js +40 -0
- package/dist/features/performance/spa.js.map +1 -0
- package/dist/features/performance/throttle.d.ts +21 -0
- package/dist/features/performance/throttle.d.ts.map +1 -0
- package/dist/features/performance/throttle.js +26 -0
- package/dist/features/performance/throttle.js.map +1 -0
- package/dist/features/performance/trace/context.d.ts +17 -0
- package/dist/features/performance/trace/context.d.ts.map +1 -0
- package/dist/features/performance/trace/context.js +33 -0
- package/dist/features/performance/trace/context.js.map +1 -0
- package/dist/features/performance/trace/index.d.ts +7 -0
- package/dist/features/performance/trace/index.d.ts.map +1 -0
- package/dist/features/performance/trace/index.js +6 -0
- package/dist/features/performance/trace/index.js.map +1 -0
- package/dist/features/performance/trace/pageload.d.ts +3 -0
- package/dist/features/performance/trace/pageload.d.ts.map +1 -0
- package/dist/features/performance/trace/pageload.js +34 -0
- package/dist/features/performance/trace/pageload.js.map +1 -0
- package/dist/features/performance/trace/transaction.d.ts +61 -0
- package/dist/features/performance/trace/transaction.d.ts.map +1 -0
- package/dist/features/performance/trace/transaction.js +90 -0
- package/dist/features/performance/trace/transaction.js.map +1 -0
- package/dist/features/performance/trace/types.d.ts +23 -0
- package/dist/features/performance/trace/types.d.ts.map +1 -0
- package/dist/features/performance/trace/types.js +10 -0
- package/dist/features/performance/trace/types.js.map +1 -0
- package/dist/features/performance/traces.d.ts +36 -0
- package/dist/features/performance/traces.d.ts.map +1 -0
- package/dist/features/performance/traces.js +50 -0
- package/dist/features/performance/traces.js.map +1 -0
- package/dist/features/profiler/ProfilerFeature.d.ts +28 -0
- package/dist/features/profiler/ProfilerFeature.d.ts.map +1 -0
- package/dist/features/profiler/ProfilerFeature.js +82 -0
- package/dist/features/profiler/ProfilerFeature.js.map +1 -0
- package/dist/features/profiler/capture.d.ts +8 -0
- package/dist/features/profiler/capture.d.ts.map +1 -0
- package/dist/features/profiler/capture.js +21 -0
- package/dist/features/profiler/capture.js.map +1 -0
- package/dist/features/push/PushFeature.d.ts +120 -0
- package/dist/features/push/PushFeature.d.ts.map +1 -0
- package/dist/features/push/PushFeature.js +319 -0
- package/dist/features/push/PushFeature.js.map +1 -0
- package/dist/features/push/diagnostics.d.ts +55 -0
- package/dist/features/push/diagnostics.d.ts.map +1 -0
- package/dist/features/push/diagnostics.js +383 -0
- package/dist/features/push/diagnostics.js.map +1 -0
- package/dist/features/push/pushState.d.ts +58 -0
- package/dist/features/push/pushState.d.ts.map +1 -0
- package/dist/features/push/pushState.js +75 -0
- package/dist/features/push/pushState.js.map +1 -0
- package/dist/features/push/softAsk.d.ts +68 -0
- package/dist/features/push/softAsk.d.ts.map +1 -0
- package/dist/features/push/softAsk.js +142 -0
- package/dist/features/push/softAsk.js.map +1 -0
- package/dist/features/replay/ReplayFeature.d.ts +52 -0
- package/dist/features/replay/ReplayFeature.d.ts.map +1 -0
- package/dist/features/replay/ReplayFeature.js +282 -0
- package/dist/features/replay/ReplayFeature.js.map +1 -0
- package/dist/features/replay/engine/canvas.d.ts +45 -0
- package/dist/features/replay/engine/canvas.d.ts.map +1 -0
- package/dist/features/replay/engine/canvas.js +122 -0
- package/dist/features/replay/engine/canvas.js.map +1 -0
- package/dist/features/replay/engine/crossOrigin.d.ts +23 -0
- package/dist/features/replay/engine/crossOrigin.d.ts.map +1 -0
- package/dist/features/replay/engine/crossOrigin.js +108 -0
- package/dist/features/replay/engine/crossOrigin.js.map +1 -0
- package/dist/features/replay/engine/cssom.d.ts +31 -0
- package/dist/features/replay/engine/cssom.d.ts.map +1 -0
- package/dist/features/replay/engine/cssom.js +128 -0
- package/dist/features/replay/engine/cssom.js.map +1 -0
- package/dist/features/replay/engine/iframe.d.ts +65 -0
- package/dist/features/replay/engine/iframe.d.ts.map +1 -0
- package/dist/features/replay/engine/iframe.js +186 -0
- package/dist/features/replay/engine/iframe.js.map +1 -0
- package/dist/features/replay/engine/interactions.d.ts +172 -0
- package/dist/features/replay/engine/interactions.d.ts.map +1 -0
- package/dist/features/replay/engine/interactions.js +437 -0
- package/dist/features/replay/engine/interactions.js.map +1 -0
- package/dist/features/replay/engine/mutations.d.ts +65 -0
- package/dist/features/replay/engine/mutations.d.ts.map +1 -0
- package/dist/features/replay/engine/mutations.js +304 -0
- package/dist/features/replay/engine/mutations.js.map +1 -0
- package/dist/features/replay/engine/nodeRegistry.d.ts +23 -0
- package/dist/features/replay/engine/nodeRegistry.d.ts.map +1 -0
- package/dist/features/replay/engine/nodeRegistry.js +51 -0
- package/dist/features/replay/engine/nodeRegistry.js.map +1 -0
- package/dist/features/replay/engine/player.d.ts +11 -0
- package/dist/features/replay/engine/player.d.ts.map +1 -0
- package/dist/features/replay/engine/player.js +284 -0
- package/dist/features/replay/engine/player.js.map +1 -0
- package/dist/features/replay/engine/rebuild.d.ts +8 -0
- package/dist/features/replay/engine/rebuild.d.ts.map +1 -0
- package/dist/features/replay/engine/rebuild.js +46 -0
- package/dist/features/replay/engine/rebuild.js.map +1 -0
- package/dist/features/replay/engine/replayWorker.d.ts +33 -0
- package/dist/features/replay/engine/replayWorker.d.ts.map +1 -0
- package/dist/features/replay/engine/replayWorker.js +175 -0
- package/dist/features/replay/engine/replayWorker.js.map +1 -0
- package/dist/features/replay/engine/resources.d.ts +52 -0
- package/dist/features/replay/engine/resources.d.ts.map +1 -0
- package/dist/features/replay/engine/resources.js +132 -0
- package/dist/features/replay/engine/resources.js.map +1 -0
- package/dist/features/replay/engine/snapshot.d.ts +103 -0
- package/dist/features/replay/engine/snapshot.d.ts.map +1 -0
- package/dist/features/replay/engine/snapshot.js +459 -0
- package/dist/features/replay/engine/snapshot.js.map +1 -0
- package/dist/features/replay/engine/traverse.d.ts +19 -0
- package/dist/features/replay/engine/traverse.d.ts.map +1 -0
- package/dist/features/replay/engine/traverse.js +39 -0
- package/dist/features/replay/engine/traverse.js.map +1 -0
- package/dist/features/replay/engine/types.d.ts +149 -0
- package/dist/features/replay/engine/types.d.ts.map +1 -0
- package/dist/features/replay/engine/types.js +6 -0
- package/dist/features/replay/engine/types.js.map +1 -0
- package/dist/features/replay/engine/webglPatch.d.ts +26 -0
- package/dist/features/replay/engine/webglPatch.d.ts.map +1 -0
- package/dist/features/replay/engine/webglPatch.js +83 -0
- package/dist/features/replay/engine/webglPatch.js.map +1 -0
- package/dist/features/replay/lifecycle/adaptive.d.ts +38 -0
- package/dist/features/replay/lifecycle/adaptive.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/adaptive.js +90 -0
- package/dist/features/replay/lifecycle/adaptive.js.map +1 -0
- package/dist/features/replay/lifecycle/cadence.d.ts +35 -0
- package/dist/features/replay/lifecycle/cadence.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/cadence.js +149 -0
- package/dist/features/replay/lifecycle/cadence.js.map +1 -0
- package/dist/features/replay/lifecycle/deltaBatcher.d.ts +31 -0
- package/dist/features/replay/lifecycle/deltaBatcher.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/deltaBatcher.js +32 -0
- package/dist/features/replay/lifecycle/deltaBatcher.js.map +1 -0
- package/dist/features/replay/lifecycle/deviceSignals.d.ts +35 -0
- package/dist/features/replay/lifecycle/deviceSignals.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/deviceSignals.js +61 -0
- package/dist/features/replay/lifecycle/deviceSignals.js.map +1 -0
- package/dist/features/replay/lifecycle/offloadDomFrames.d.ts +69 -0
- package/dist/features/replay/lifecycle/offloadDomFrames.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/offloadDomFrames.js +107 -0
- package/dist/features/replay/lifecycle/offloadDomFrames.js.map +1 -0
- package/dist/features/replay/lifecycle/pii.d.ts +14 -0
- package/dist/features/replay/lifecycle/pii.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/pii.js +52 -0
- package/dist/features/replay/lifecycle/pii.js.map +1 -0
- package/dist/features/replay/lifecycle/recorder.d.ts +178 -0
- package/dist/features/replay/lifecycle/recorder.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/recorder.js +644 -0
- package/dist/features/replay/lifecycle/recorder.js.map +1 -0
- package/dist/features/replay/lifecycle/sampling.d.ts +28 -0
- package/dist/features/replay/lifecycle/sampling.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/sampling.js +31 -0
- package/dist/features/replay/lifecycle/sampling.js.map +1 -0
- package/dist/features/replay/lifecycle/segmentBuffer.d.ts +75 -0
- package/dist/features/replay/lifecycle/segmentBuffer.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/segmentBuffer.js +130 -0
- package/dist/features/replay/lifecycle/segmentBuffer.js.map +1 -0
- package/dist/features/replay/lifecycle/viewContext.d.ts +7 -0
- package/dist/features/replay/lifecycle/viewContext.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/viewContext.js +51 -0
- package/dist/features/replay/lifecycle/viewContext.js.map +1 -0
- package/dist/features/scroll/index.d.ts +33 -0
- package/dist/features/scroll/index.d.ts.map +1 -0
- package/dist/features/scroll/index.js +106 -0
- package/dist/features/scroll/index.js.map +1 -0
- package/dist/features/session/sessionManager.d.ts +41 -0
- package/dist/features/session/sessionManager.d.ts.map +1 -0
- package/dist/features/session/sessionManager.js +67 -0
- package/dist/features/session/sessionManager.js.map +1 -0
- package/dist/features/session/sessionStore.d.ts +137 -0
- package/dist/features/session/sessionStore.d.ts.map +1 -0
- package/dist/features/session/sessionStore.js +323 -0
- package/dist/features/session/sessionStore.js.map +1 -0
- package/dist/features/watchdog/WatchdogFeature.d.ts +23 -0
- package/dist/features/watchdog/WatchdogFeature.d.ts.map +1 -0
- package/dist/features/watchdog/WatchdogFeature.js +29 -0
- package/dist/features/watchdog/WatchdogFeature.js.map +1 -0
- package/dist/features/watchdog/collectors.d.ts +18 -0
- package/dist/features/watchdog/collectors.d.ts.map +1 -0
- package/dist/features/watchdog/collectors.js +107 -0
- package/dist/features/watchdog/collectors.js.map +1 -0
- package/dist/features/watchdog/config.d.ts +51 -0
- package/dist/features/watchdog/config.d.ts.map +1 -0
- package/dist/features/watchdog/config.js +28 -0
- package/dist/features/watchdog/config.js.map +1 -0
- package/dist/features/watchdog/engine.d.ts +22 -0
- package/dist/features/watchdog/engine.d.ts.map +1 -0
- package/dist/features/watchdog/engine.js +123 -0
- package/dist/features/watchdog/engine.js.map +1 -0
- package/dist/features/watchdog/incidents.d.ts +79 -0
- package/dist/features/watchdog/incidents.d.ts.map +1 -0
- package/dist/features/watchdog/incidents.js +204 -0
- package/dist/features/watchdog/incidents.js.map +1 -0
- package/dist/features/watchdog/rollup.d.ts +41 -0
- package/dist/features/watchdog/rollup.d.ts.map +1 -0
- package/dist/features/watchdog/rollup.js +76 -0
- package/dist/features/watchdog/rollup.js.map +1 -0
- package/dist/features/webVitals/WebVitalsFeature.d.ts +46 -0
- package/dist/features/webVitals/WebVitalsFeature.d.ts.map +1 -0
- package/dist/features/webVitals/WebVitalsFeature.js +252 -0
- package/dist/features/webVitals/WebVitalsFeature.js.map +1 -0
- package/dist/features/webVitals/attribution.d.ts +50 -0
- package/dist/features/webVitals/attribution.d.ts.map +1 -0
- package/dist/features/webVitals/attribution.js +186 -0
- package/dist/features/webVitals/attribution.js.map +1 -0
- package/dist/features/webVitals/observe.d.ts +6 -0
- package/dist/features/webVitals/observe.d.ts.map +1 -0
- package/dist/features/webVitals/observe.js +6 -0
- package/dist/features/webVitals/observe.js.map +1 -0
- package/dist/features/webVitals/vitals.d.ts +99 -0
- package/dist/features/webVitals/vitals.d.ts.map +1 -0
- package/dist/features/webVitals/vitals.js +166 -0
- package/dist/features/webVitals/vitals.js.map +1 -0
- package/dist/features/webperf/WebPerfFeature.d.ts +19 -0
- package/dist/features/webperf/WebPerfFeature.d.ts.map +1 -0
- package/dist/features/webperf/WebPerfFeature.js +48 -0
- package/dist/features/webperf/WebPerfFeature.js.map +1 -0
- package/dist/features/webperf/collectors.d.ts +3 -0
- package/dist/features/webperf/collectors.d.ts.map +1 -0
- package/dist/features/webperf/collectors.js +118 -0
- package/dist/features/webperf/collectors.js.map +1 -0
- package/dist/features/webperf/math.d.ts +12 -0
- package/dist/features/webperf/math.d.ts.map +1 -0
- package/dist/features/webperf/math.js +26 -0
- package/dist/features/webperf/math.js.map +1 -0
- package/dist/inapp.d.ts +6 -0
- package/dist/inapp.d.ts.map +1 -0
- package/dist/inapp.js +6 -0
- package/dist/inapp.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/index.d.ts +7 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +2 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/pipeline/index.d.ts +3 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +3 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/pipeline.d.ts +263 -0
- package/dist/pipeline/pipeline.d.ts.map +1 -0
- package/dist/pipeline/pipeline.js +783 -0
- package/dist/pipeline/pipeline.js.map +1 -0
- package/dist/public/ScaleBunFacade.d.ts +436 -0
- package/dist/public/ScaleBunFacade.d.ts.map +1 -0
- package/dist/public/ScaleBunFacade.js +857 -0
- package/dist/public/ScaleBunFacade.js.map +1 -0
- package/dist/public/index.d.ts +5 -0
- package/dist/public/index.d.ts.map +1 -0
- package/dist/public/index.js +4 -0
- package/dist/public/index.js.map +1 -0
- package/dist/public/typedTracker.d.ts +91 -0
- package/dist/public/typedTracker.d.ts.map +1 -0
- package/dist/public/typedTracker.js +60 -0
- package/dist/public/typedTracker.js.map +1 -0
- package/dist/scalebun-push-sw.js +236 -0
- package/dist/scalebun.min.js +717 -0
- package/dist/scalebun.min.js.map +7 -0
- package/dist/storage/idb.d.ts +16 -0
- package/dist/storage/idb.d.ts.map +1 -0
- package/dist/storage/idb.js +76 -0
- package/dist/storage/idb.js.map +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +3 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/transport/gzip.d.ts +2 -0
- package/dist/transport/gzip.d.ts.map +1 -0
- package/dist/transport/gzip.js +20 -0
- package/dist/transport/gzip.js.map +1 -0
- package/dist/transport/httpClient.d.ts +156 -0
- package/dist/transport/httpClient.d.ts.map +1 -0
- package/dist/transport/httpClient.js +277 -0
- package/dist/transport/httpClient.js.map +1 -0
- package/dist/transport/index.d.ts +3 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +3 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/sign.d.ts +25 -0
- package/dist/transport/sign.d.ts.map +1 -0
- package/dist/transport/sign.js +58 -0
- package/dist/transport/sign.js.map +1 -0
- package/package.json +67 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ScaleBun
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# @scalebun/web
|
|
2
|
+
|
|
3
|
+
The **ScaleBun web SDK** — unified-session observability for the browser: errors, network,
|
|
4
|
+
performance, replay, and analytics, all captured under one session model. Framework-agnostic core;
|
|
5
|
+
framework adapters (`@scalebun/web-react`, `-vue`, `-angular`, `-next`, `-svelte`) layer on top.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @scalebun/web
|
|
11
|
+
# or: pnpm add @scalebun/web / yarn add @scalebun/web
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Quick start
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { ScaleBun } from '@scalebun/web';
|
|
18
|
+
|
|
19
|
+
await ScaleBun.init({
|
|
20
|
+
clientKey: 'your-client-key',
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// Track product events
|
|
24
|
+
ScaleBun.track('checkout_completed', { plan: 'pro', amount: 49 });
|
|
25
|
+
|
|
26
|
+
// Attach a user identity
|
|
27
|
+
ScaleBun.identify('user_123', { email: 'jane@example.com' });
|
|
28
|
+
|
|
29
|
+
// Let a user file a bug report
|
|
30
|
+
await ScaleBun.reportBug({ message: 'The export button does nothing' });
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Errors, network requests, performance metrics, and replay frames are captured automatically once
|
|
34
|
+
`init()` resolves (subject to your config).
|
|
35
|
+
|
|
36
|
+
## Script-tag / CDN usage
|
|
37
|
+
|
|
38
|
+
A prebuilt browser bundle is published for `unpkg`/`jsDelivr`. Configure via `data-` attributes:
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<script
|
|
42
|
+
src="https://unpkg.com/@scalebun/web/dist/scalebun.min.js"
|
|
43
|
+
data-client-key="your-client-key"
|
|
44
|
+
></script>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Entry points
|
|
48
|
+
|
|
49
|
+
| Import | Purpose |
|
|
50
|
+
|---|---|
|
|
51
|
+
| `@scalebun/web` | Main SDK (ESM) — the `ScaleBun` facade + typed tracking helpers. |
|
|
52
|
+
| `@scalebun/web/inapp` | In-app messaging / widget surface. |
|
|
53
|
+
| `@scalebun/web/browser` | Prebuilt minified browser bundle (IIFE, for `<script>` tags). |
|
|
54
|
+
|
|
55
|
+
## License
|
|
56
|
+
|
|
57
|
+
[MIT](./LICENSE)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeatureRegistry — stores features and sets them up fail-isolated (one feature throwing never
|
|
3
|
+
* stops the others). Mirrors the RN SDK's cleanest abstraction. Infra only — no features here.
|
|
4
|
+
*/
|
|
5
|
+
import type { IFeature, FeatureContext } from '@scalebun/sdk-contracts';
|
|
6
|
+
/**
|
|
7
|
+
* Does this failure look like a dynamic `import()` that never arrived?
|
|
8
|
+
*
|
|
9
|
+
* The three engines word it differently and none of them expose a typed error, so the message is the
|
|
10
|
+
* only signal available:
|
|
11
|
+
* Chrome/Edge "Failed to fetch dynamically imported module: <url>"
|
|
12
|
+
* Firefox "error loading dynamically imported module"
|
|
13
|
+
* Safari "Importing a module script failed."
|
|
14
|
+
*
|
|
15
|
+
* Worth classifying rather than leaving to whoever reads the string later: it separates "the feature's
|
|
16
|
+
* own setup threw" from "the chunk never loaded" (CSP `script-src`, a 404 after a deploy, chunk-hash
|
|
17
|
+
* skew, a dropped request), and those have completely different fixes.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isModuleLoadFailure(message: string): boolean;
|
|
20
|
+
export declare class FeatureRegistry {
|
|
21
|
+
private readonly features;
|
|
22
|
+
add(feature: IFeature): void;
|
|
23
|
+
/** Look up a registered feature by name (e.g. the facade delegating to ErrorsFeature). */
|
|
24
|
+
get(name: string): IFeature | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Set every feature up, fail-isolated — and REPORT each failure, don't just log it.
|
|
27
|
+
*
|
|
28
|
+
* The log line alone was a blind spot with a measured cost. `ctx.log` is a debug channel, off in
|
|
29
|
+
* production, so a feature that failed to set up was indistinguishable from one that ran and found
|
|
30
|
+
* nothing to say. Replay is where that bit: 46 of 231 live web sessions (`npm run replay:diagnose`)
|
|
31
|
+
* lasted long enough to record and stored zero frames, and 43 of those 46 carried events and perf
|
|
32
|
+
* metrics — proving the SDK loaded, authenticated and uploaded fine. Capture is lazy-imported while
|
|
33
|
+
* events/perf sit in the eager core, so a chunk that never arrives kills replay ALONE and leaves no
|
|
34
|
+
* trace anywhere: nothing was sent, so the backend cannot see it either.
|
|
35
|
+
*
|
|
36
|
+
* The diagnostic rides `trackEvent` (kind:'event') on purpose. That is the one lane those 43 sessions
|
|
37
|
+
* prove works, it is ungated by the 0-cost-closed entitlement map (which only gates frame/network/
|
|
38
|
+
* error/performance kinds), and the pipeline queues it durably — `setupAll` runs BEFORE
|
|
39
|
+
* `pipeline.start`, so the event is flushed rather than dropped.
|
|
40
|
+
*/
|
|
41
|
+
setupAll(ctx: FeatureContext): Promise<void>;
|
|
42
|
+
teardownAll(): void;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=FeatureRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureRegistry.d.ts","sourceRoot":"","sources":["../../src/bootstrap/FeatureRegistry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IAExD,GAAG,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAI5B,0FAA0F;IAC1F,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC;;;;;;;;;;;;;;;OAeG;IACG,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBlD,WAAW,IAAI,IAAI;CAUpB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeatureRegistry — stores features and sets them up fail-isolated (one feature throwing never
|
|
3
|
+
* stops the others). Mirrors the RN SDK's cleanest abstraction. Infra only — no features here.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Does this failure look like a dynamic `import()` that never arrived?
|
|
7
|
+
*
|
|
8
|
+
* The three engines word it differently and none of them expose a typed error, so the message is the
|
|
9
|
+
* only signal available:
|
|
10
|
+
* Chrome/Edge "Failed to fetch dynamically imported module: <url>"
|
|
11
|
+
* Firefox "error loading dynamically imported module"
|
|
12
|
+
* Safari "Importing a module script failed."
|
|
13
|
+
*
|
|
14
|
+
* Worth classifying rather than leaving to whoever reads the string later: it separates "the feature's
|
|
15
|
+
* own setup threw" from "the chunk never loaded" (CSP `script-src`, a 404 after a deploy, chunk-hash
|
|
16
|
+
* skew, a dropped request), and those have completely different fixes.
|
|
17
|
+
*/
|
|
18
|
+
export function isModuleLoadFailure(message) {
|
|
19
|
+
return /dynamically imported module|module script failed|error loading dynamically/i.test(message);
|
|
20
|
+
}
|
|
21
|
+
export class FeatureRegistry {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.features = new Map();
|
|
24
|
+
}
|
|
25
|
+
add(feature) {
|
|
26
|
+
this.features.set(feature.name, feature);
|
|
27
|
+
}
|
|
28
|
+
/** Look up a registered feature by name (e.g. the facade delegating to ErrorsFeature). */
|
|
29
|
+
get(name) {
|
|
30
|
+
return this.features.get(name);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Set every feature up, fail-isolated — and REPORT each failure, don't just log it.
|
|
34
|
+
*
|
|
35
|
+
* The log line alone was a blind spot with a measured cost. `ctx.log` is a debug channel, off in
|
|
36
|
+
* production, so a feature that failed to set up was indistinguishable from one that ran and found
|
|
37
|
+
* nothing to say. Replay is where that bit: 46 of 231 live web sessions (`npm run replay:diagnose`)
|
|
38
|
+
* lasted long enough to record and stored zero frames, and 43 of those 46 carried events and perf
|
|
39
|
+
* metrics — proving the SDK loaded, authenticated and uploaded fine. Capture is lazy-imported while
|
|
40
|
+
* events/perf sit in the eager core, so a chunk that never arrives kills replay ALONE and leaves no
|
|
41
|
+
* trace anywhere: nothing was sent, so the backend cannot see it either.
|
|
42
|
+
*
|
|
43
|
+
* The diagnostic rides `trackEvent` (kind:'event') on purpose. That is the one lane those 43 sessions
|
|
44
|
+
* prove works, it is ungated by the 0-cost-closed entitlement map (which only gates frame/network/
|
|
45
|
+
* error/performance kinds), and the pipeline queues it durably — `setupAll` runs BEFORE
|
|
46
|
+
* `pipeline.start`, so the event is flushed rather than dropped.
|
|
47
|
+
*/
|
|
48
|
+
async setupAll(ctx) {
|
|
49
|
+
for (const f of this.features.values()) {
|
|
50
|
+
try {
|
|
51
|
+
await f.setup(ctx);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
ctx.log(`[scalebun] feature "${f.name}" failed to set up:`, err);
|
|
55
|
+
try {
|
|
56
|
+
const e = err;
|
|
57
|
+
// Truncated, but generously: a module-load message carries the failing chunk URL, which is
|
|
58
|
+
// the single most useful field here — it names which chunk to go look for.
|
|
59
|
+
const message = String(e?.message ?? err).slice(0, 300);
|
|
60
|
+
ctx.trackEvent('sdk_feature_setup_failed', {
|
|
61
|
+
feature: f.name,
|
|
62
|
+
error: e?.name || 'Error',
|
|
63
|
+
message,
|
|
64
|
+
moduleLoad: isModuleLoadFailure(message),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
/* A diagnostic must never be the thing that breaks setup. */
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
teardownAll() {
|
|
74
|
+
for (const f of this.features.values()) {
|
|
75
|
+
try {
|
|
76
|
+
f.teardown();
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
/* ignore */
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
this.features.clear();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=FeatureRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureRegistry.js","sourceRoot":"","sources":["../../src/bootstrap/FeatureRegistry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,6EAA6E,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrG,CAAC;AAED,MAAM,OAAO,eAAe;IAA5B;QACmB,aAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IA6D1D,CAAC;IA3DC,GAAG,CAAC,OAAiB;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,0FAA0F;IAC1F,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAmB;QAChC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,IAAI,qBAAqB,EAAE,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,GAAsD,CAAC;oBACjE,2FAA2F;oBAC3F,2EAA2E;oBAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACxD,GAAG,CAAC,UAAU,CAAC,0BAA0B,EAAE;wBACzC,OAAO,EAAE,CAAC,CAAC,IAAI;wBACf,KAAK,EAAE,CAAC,EAAE,IAAI,IAAI,OAAO;wBACzB,OAAO;wBACP,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC;qBACzC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,6DAA6D;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW;QACT,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,CAAC,CAAC,QAAQ,EAAE,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDKBootstrapper — the single real init path (mirrors the RN SDK's bootstrap).
|
|
3
|
+
* Flow: validate config → build the unified pipeline + transport + session → register features from
|
|
4
|
+
* the manifest → setup features → start the pipeline (which opens the session + flush loop).
|
|
5
|
+
*/
|
|
6
|
+
import type { ScaleBunInitConfig } from '@scalebun/sdk-contracts';
|
|
7
|
+
import { type ResolvedConfig } from '../config/schema.js';
|
|
8
|
+
import { type ConsentStatus } from '../core/index.js';
|
|
9
|
+
import { SessionManager } from '../features/session/sessionManager.js';
|
|
10
|
+
import { HttpClient } from '../transport/httpClient.js';
|
|
11
|
+
import { Pipeline } from '../pipeline/pipeline.js';
|
|
12
|
+
import { FeatureRegistry } from './FeatureRegistry.js';
|
|
13
|
+
export declare function entitlementForKind(k: string | undefined): string;
|
|
14
|
+
export interface SdkRuntime {
|
|
15
|
+
config: ResolvedConfig;
|
|
16
|
+
session: SessionManager;
|
|
17
|
+
pipeline: Pipeline;
|
|
18
|
+
transport: HttpClient;
|
|
19
|
+
registry: FeatureRegistry;
|
|
20
|
+
log: (...args: unknown[]) => void;
|
|
21
|
+
/** Resolve consent (typically from a CMP callback). Granting activates capture; denying purges. */
|
|
22
|
+
setConsent: (granted: boolean) => void;
|
|
23
|
+
/** Current consent state. */
|
|
24
|
+
readonly consentStatus: ConsentStatus;
|
|
25
|
+
}
|
|
26
|
+
export declare class SDKBootstrapper {
|
|
27
|
+
/**
|
|
28
|
+
* `opts.edge` = the edge/worker LITE lane: analytics + config only (via the P2 capability gate),
|
|
29
|
+
* transport-only. The session/replay pipeline stays inert (no startSession, no flush timer, no DOM
|
|
30
|
+
* lifecycle listeners) — its egress gate is left closed so facade session-lane emits drop instead of
|
|
31
|
+
* buffering unsent. The analytics lane self-manages its own /batch egress and works fine on edge.
|
|
32
|
+
*/
|
|
33
|
+
static bootstrap(input: ScaleBunInitConfig, opts?: {
|
|
34
|
+
edge?: boolean;
|
|
35
|
+
}): Promise<SdkRuntime>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=SDKBootstrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SDKBootstrapper.d.ts","sourceRoot":"","sources":["../../src/bootstrap/SDKBootstrapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,yBAAyB,CAAC;AAElF,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAwJ,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AACnM,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAkBpD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAUhE;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC;IAC1B,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,mGAAmG;IACnG,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,6BAA6B;IAC7B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAED,qBAAa,eAAe;IAC1B;;;;;OAKG;WACU,SAAS,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CAmTlG"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDKBootstrapper — the single real init path (mirrors the RN SDK's bootstrap).
|
|
3
|
+
* Flow: validate config → build the unified pipeline + transport + session → register features from
|
|
4
|
+
* the manifest → setup features → start the pipeline (which opens the session + flush loop).
|
|
5
|
+
*/
|
|
6
|
+
import { resolveConfig } from '../config/schema.js';
|
|
7
|
+
import { createLogger, ConsentGate, recordBreadcrumb, clearBreadcrumbs, breadcrumbs, setBeforeBreadcrumb, noteReplayFrame, clearReplayCoord, patchEvalContext } from '../core/index.js';
|
|
8
|
+
import { SessionManager } from '../features/session/sessionManager.js';
|
|
9
|
+
import { HttpClient } from '../transport/httpClient.js';
|
|
10
|
+
import { Pipeline } from '../pipeline/pipeline.js';
|
|
11
|
+
import { FeatureRegistry } from './FeatureRegistry.js';
|
|
12
|
+
import { FEATURES, OPTIONAL_FEATURES, featureRequirements } from '../features/manifest.js';
|
|
13
|
+
import { can } from '../core/index.js';
|
|
14
|
+
/**
|
|
15
|
+
* How often the session bounds are re-checked while the page stays open.
|
|
16
|
+
*
|
|
17
|
+
* A minute is far finer than the shortest bound it feeds (a 30-minute idle window), and the check is
|
|
18
|
+
* a storage read plus two subtractions — the same cost `touchSession` already pays on the envelope
|
|
19
|
+
* path once a minute. Anything finer would buy nothing a viewer could perceive.
|
|
20
|
+
*/
|
|
21
|
+
const SESSION_CHECK_MS = 60000;
|
|
22
|
+
// 0-cost-closed: map an item kind → the SDK-suppressible entitlement that gates it (or '' if
|
|
23
|
+
// ungated). When the org has CLOSED one of these features (admin dashboard → /config entitlements),
|
|
24
|
+
// the SDK drops the item BEFORE egress — the request never leaves the browser (true 0 cost, not just
|
|
25
|
+
// a server-side reject). Fail-open: only drops when the entitlement is explicitly `false`. Mirrors
|
|
26
|
+
// the backend's FEATURE_ENFORCEMENT `sdk` tier.
|
|
27
|
+
export function entitlementForKind(k) {
|
|
28
|
+
return k === 'frame'
|
|
29
|
+
? 'replay'
|
|
30
|
+
: k === 'network'
|
|
31
|
+
? 'networkMonitoring'
|
|
32
|
+
: k === 'error'
|
|
33
|
+
? 'crashReporting'
|
|
34
|
+
: k === 'performance' || k === 'resource' || k === 'trace' || k === 'transaction'
|
|
35
|
+
? 'performanceMonitoring'
|
|
36
|
+
: '';
|
|
37
|
+
}
|
|
38
|
+
export class SDKBootstrapper {
|
|
39
|
+
/**
|
|
40
|
+
* `opts.edge` = the edge/worker LITE lane: analytics + config only (via the P2 capability gate),
|
|
41
|
+
* transport-only. The session/replay pipeline stays inert (no startSession, no flush timer, no DOM
|
|
42
|
+
* lifecycle listeners) — its egress gate is left closed so facade session-lane emits drop instead of
|
|
43
|
+
* buffering unsent. The analytics lane self-manages its own /batch egress and works fine on edge.
|
|
44
|
+
*/
|
|
45
|
+
static async bootstrap(input, opts) {
|
|
46
|
+
const config = resolveConfig(input);
|
|
47
|
+
const log = createLogger(config.debug);
|
|
48
|
+
const session = new SessionManager(config);
|
|
49
|
+
const transport = new HttpClient(config);
|
|
50
|
+
const pipeline = new Pipeline(config, session, transport);
|
|
51
|
+
if (opts?.edge)
|
|
52
|
+
pipeline.setConsentGranted(false); // keep the session lane inert on edge
|
|
53
|
+
const registry = new FeatureRegistry();
|
|
54
|
+
// Breadcrumbs: fresh ring for this session, sized from config. Every item flowing through the
|
|
55
|
+
// pipeline is mirrored into the ring (the ONE place auto-breadcrumbs are captured).
|
|
56
|
+
clearBreadcrumbs();
|
|
57
|
+
clearReplayCoord();
|
|
58
|
+
if (typeof config.errors?.maxBreadcrumbs === 'number')
|
|
59
|
+
breadcrumbs.setMax(config.errors.maxBreadcrumbs);
|
|
60
|
+
// Cast across the contract↔core boundary: the config type uses the protocol (passthrough)
|
|
61
|
+
// Breadcrumb, core uses its structural twin — same runtime shape.
|
|
62
|
+
setBeforeBreadcrumb(config.errors?.beforeBreadcrumb);
|
|
63
|
+
const emitWithCrumb = (item) => {
|
|
64
|
+
// 0-cost-closed: drop items whose feature the org has closed, before they ever hit egress.
|
|
65
|
+
const ekey = entitlementForKind(item.kind);
|
|
66
|
+
if (ekey && registry.get('config')?.entitlement?.(ekey) === false)
|
|
67
|
+
return;
|
|
68
|
+
recordBreadcrumb(item);
|
|
69
|
+
noteReplayFrame(item); // track the live replay coordinate for error↔frame correlation
|
|
70
|
+
pipeline.emit(item);
|
|
71
|
+
};
|
|
72
|
+
// Capture-signal bus: features raise signals ('error'/'rage'/'report'); capture-on-signal
|
|
73
|
+
// features (replay) subscribe and flush their buffer.
|
|
74
|
+
const signalListeners = new Set();
|
|
75
|
+
// The narrow surface features get — emit Items, track events, read state, log, signal.
|
|
76
|
+
const ctx = {
|
|
77
|
+
sessionId: session.sessionId,
|
|
78
|
+
clientKey: config.clientKey,
|
|
79
|
+
deviceId: session.deviceId,
|
|
80
|
+
appVersion: config.appVersion, // E0 — Engage sends it as the config-query appVersion
|
|
81
|
+
// Resolved lazily: identity arrives when the host calls identify(), long after this context is
|
|
82
|
+
// built. Engage/IAM send it as the config-query `endUserId` so the backend can resolve segment
|
|
83
|
+
// targeting; while anonymous it stays undefined and a segment-targeted campaign fails closed.
|
|
84
|
+
getUserId: () => registry.get('analytics')?.identity?.userId,
|
|
85
|
+
emit: emitWithCrumb,
|
|
86
|
+
// No breadcrumb wrapper: this item belongs to a session that has already ended, so THIS
|
|
87
|
+
// session's breadcrumb trail would be the wrong context to attach to it.
|
|
88
|
+
emitFor: (sid, item) => pipeline.emitFor(sid, item),
|
|
89
|
+
egressPending: () => pipeline.pendingCount,
|
|
90
|
+
egressDropped: () => pipeline.dropped,
|
|
91
|
+
trackEvent: (name, props) => emitWithCrumb({ kind: 'event', name, props, timestamp: Date.now() }),
|
|
92
|
+
getAppState: () => (can('visibility') && document.visibilityState === 'hidden' ? 'background' : 'active'),
|
|
93
|
+
log,
|
|
94
|
+
apiBaseUrl: config.apiBaseUrl,
|
|
95
|
+
signal: (reason, detail) => {
|
|
96
|
+
for (const l of signalListeners) {
|
|
97
|
+
try {
|
|
98
|
+
l(reason, detail);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
/* never let a listener break the signaller */
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
onSignal: (cb) => {
|
|
106
|
+
signalListeners.add(cb);
|
|
107
|
+
return () => signalListeners.delete(cb);
|
|
108
|
+
},
|
|
109
|
+
replaySampling: config.replay,
|
|
110
|
+
// The gamified-outcome resolver. Passed through untouched; the engage runtime types it.
|
|
111
|
+
...(config.onInAppGameRequest
|
|
112
|
+
? { onInAppGameRequest: config.onInAppGameRequest }
|
|
113
|
+
: {}),
|
|
114
|
+
errorsOptions: config.errors,
|
|
115
|
+
networkOptions: config.network,
|
|
116
|
+
performanceOptions: config.performance,
|
|
117
|
+
watchdogOptions: config.watchdog, // W5.2 — Resource Watchdog tuning
|
|
118
|
+
analyticsOptions: config.analytics,
|
|
119
|
+
flagsBootstrap: config.flags?.bootstrap, // F3 — seed flags before the network responds
|
|
120
|
+
flagsRealtime: config.flags?.realtime, // F4 — subscribe to the realtime config stream (default on)
|
|
121
|
+
replayCanvas: config.replayCanvas,
|
|
122
|
+
replayDirectUpload: config.replayDirectUpload,
|
|
123
|
+
replayFrameOrigins: config.replayFrameOrigins,
|
|
124
|
+
autocapture: config.autocapture,
|
|
125
|
+
// Resolve the traceparent allowlist: same-origin + configured cross-origins, or [] when off.
|
|
126
|
+
traceOrigins: config.tracePropagation
|
|
127
|
+
? [...(typeof location !== 'undefined' ? [location.origin] : []), ...config.tracePropagationOrigins]
|
|
128
|
+
: [],
|
|
129
|
+
maskReplayText: config.privacy.maskReplayText,
|
|
130
|
+
maskEventText: config.privacy.maskEventText,
|
|
131
|
+
maskSelectors: config.privacy.maskSelectors,
|
|
132
|
+
maskInputs: config.privacy.maskInputs,
|
|
133
|
+
respectDnt: config.privacy.respectDnt,
|
|
134
|
+
exitIntent: config.exitIntent, // #25 P2 — host-tunable scroll-reversal thresholds
|
|
135
|
+
};
|
|
136
|
+
// Register a feature only when (a) it's enabled (config.features[name] !== false) AND (b) the current
|
|
137
|
+
// runtime has the capabilities it fundamentally needs (§P2 eligibility gate). In a browser every
|
|
138
|
+
// capability is present so this is a no-op (all enabled features register, unchanged); on an edge/
|
|
139
|
+
// worker runtime the DOM features are skipped and only the network-eligible surface (analytics/config)
|
|
140
|
+
// registers. Idempotent (Map by name) so it's safe to call again after a consent-deny teardownAll().
|
|
141
|
+
const enabled = config.features;
|
|
142
|
+
const registerFeatures = () => {
|
|
143
|
+
for (const f of FEATURES) {
|
|
144
|
+
if (enabled[f.name] === false)
|
|
145
|
+
continue;
|
|
146
|
+
if (!featureRequirements(f.name).every((cap) => can(cap)))
|
|
147
|
+
continue;
|
|
148
|
+
registry.add(f);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
registerFeatures();
|
|
152
|
+
/**
|
|
153
|
+
* P5a — register the OFF-BY-DEFAULT features, which are lazy-imported.
|
|
154
|
+
*
|
|
155
|
+
* Only reached for a name the host explicitly enabled: all five default to `false`, so the common
|
|
156
|
+
* page never issues any of these imports and never pays for them. That is the whole point — their
|
|
157
|
+
* shells used to sit in the eager core on every page load whether or not the site used them
|
|
158
|
+
* (measured: 1,383 B gzipped).
|
|
159
|
+
*
|
|
160
|
+
* Awaited inside `activate()` BEFORE `setupAll`, so an enabled feature is registered and set up in
|
|
161
|
+
* exactly the same order an eager one would be, and the setup-before-`pipeline.start` contract that
|
|
162
|
+
* F-VIT depends on is untouched.
|
|
163
|
+
*
|
|
164
|
+
* `Promise.all`, not sequential: two opted-in features are independent, and serialising their
|
|
165
|
+
* imports would put a second round trip in front of session start for no reason.
|
|
166
|
+
*
|
|
167
|
+
* A failed import must not stop the others or abort activation — a feature that cannot load is a
|
|
168
|
+
* missing feature, not a broken SDK. `FeatureRegistry.setupAll` already reports per-feature setup
|
|
169
|
+
* failures; this reports the earlier, rarer case where the chunk itself never arrives.
|
|
170
|
+
*/
|
|
171
|
+
const registerOptional = async () => {
|
|
172
|
+
await Promise.all(Object.entries(OPTIONAL_FEATURES).map(async ([name, load]) => {
|
|
173
|
+
if (enabled[name] !== true)
|
|
174
|
+
return;
|
|
175
|
+
if (!featureRequirements(name).every((cap) => can(cap)))
|
|
176
|
+
return;
|
|
177
|
+
if (registry.get(name))
|
|
178
|
+
return; // idempotent, like registerFeatures()
|
|
179
|
+
try {
|
|
180
|
+
registry.add(await load());
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
log(`[scalebun] optional feature "${name}" failed to load:`, err);
|
|
184
|
+
}
|
|
185
|
+
}));
|
|
186
|
+
};
|
|
187
|
+
// Consent-mode (F-CNS): when consent is required and not yet granted, DEFER activation — no
|
|
188
|
+
// feature setup (no observers installed) and no pipeline start (no session opened, no flush).
|
|
189
|
+
// Capture begins only on the first grant. Default (not required) → activate immediately.
|
|
190
|
+
const consent = new ConsentGate(config.consent.initial);
|
|
191
|
+
/**
|
|
192
|
+
* MAKE THE SESSION BOUNDS FIRE WHILE THE PAGE IS OPEN.
|
|
193
|
+
*
|
|
194
|
+
* Both bounds — the 30-minute idle window and the absolute cap — were only ever evaluated in the
|
|
195
|
+
* `SessionManager` constructor, i.e. once per document load. A single-page app that is opened and
|
|
196
|
+
* never reloaded was never re-evaluated, so neither could fire. Production, over 14 days: 141 web
|
|
197
|
+
* sessions ran past the four-hour cap and 2 were capped by it; the rest were held open until the
|
|
198
|
+
* server's reaper clamped them at 24 hours, on real spans of 24 to 28 hours carrying a single
|
|
199
|
+
* event apiece. This does not change the policy — the cap is unchanged and still configurable. It
|
|
200
|
+
* makes the policy that is already written down actually run.
|
|
201
|
+
*
|
|
202
|
+
* ORDER IS THE WHOLE DESIGN. Everything still queued belongs to the session that just ended, so
|
|
203
|
+
* it drains under the OLD id before the swap. Then the new row is opened server-side, because a
|
|
204
|
+
* batch filed against a session the server has never heard of is answered 200 and dropped —
|
|
205
|
+
* `unknown_session` is already the largest rejection reason in production at 13,385 items, and
|
|
206
|
+
* rotating without this would make it the largest by far. Replay is re-armed last: deltas
|
|
207
|
+
* reconstruct against a keyframe, and the new session has none until one is taken.
|
|
208
|
+
*
|
|
209
|
+
* Both a timer and a visibility check, because the two shapes of a long session are different: a
|
|
210
|
+
* backgrounded tab is caught on return, and a tab parked in the FOREGROUND — the clinic
|
|
211
|
+
* workstation that prompted the four-hour cap — is only ever caught by the timer.
|
|
212
|
+
*/
|
|
213
|
+
const installSessionRotation = () => {
|
|
214
|
+
const rotate = async () => {
|
|
215
|
+
if (!session.expired())
|
|
216
|
+
return;
|
|
217
|
+
await pipeline.drain(); // the queue belongs to the session that is ending
|
|
218
|
+
const prev = session.rotate();
|
|
219
|
+
if (!prev)
|
|
220
|
+
return; // raced another rotation; the winner has already done all of this
|
|
221
|
+
clearBreadcrumbs();
|
|
222
|
+
clearReplayCoord(); // a coordinate into the previous session's frames means nothing here
|
|
223
|
+
await pipeline.restart();
|
|
224
|
+
// pause() then resume() re-arms capture on a FRESH keyframe — see RecorderController.resume,
|
|
225
|
+
// which exists for exactly this "the DOM moved on and old deltas cannot rebase" case.
|
|
226
|
+
const replay = registry.get('replay');
|
|
227
|
+
replay?.pause?.();
|
|
228
|
+
replay?.resume?.();
|
|
229
|
+
log('[session] rotated', prev, '->', session.sessionId);
|
|
230
|
+
};
|
|
231
|
+
const timer = setInterval(() => void rotate(), SESSION_CHECK_MS);
|
|
232
|
+
// Unref where the host runtime supports it, so a Node/SSR consumer is not held open by us.
|
|
233
|
+
timer.unref?.();
|
|
234
|
+
if (can('visibility')) {
|
|
235
|
+
document.addEventListener('visibilitychange', () => {
|
|
236
|
+
if (document.visibilityState === 'visible')
|
|
237
|
+
void rotate();
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
let activated = false;
|
|
242
|
+
const activate = async () => {
|
|
243
|
+
if (activated)
|
|
244
|
+
return;
|
|
245
|
+
activated = true;
|
|
246
|
+
registerFeatures(); // re-register after a prior deny teardownAll() cleared the registry
|
|
247
|
+
await registerOptional(); // P5a — opted-in lazy features, before setup so ordering is unchanged
|
|
248
|
+
// Order matters: setupAll BEFORE pipeline.start (F-VIT relies on it — see its header).
|
|
249
|
+
await registry.setupAll(ctx);
|
|
250
|
+
// Edge-lite: skip the session-lane pipeline (no startSession fetch, no flush timer, no DOM
|
|
251
|
+
// lifecycle listeners). Analytics/config already self-manage their own /batch egress in setup().
|
|
252
|
+
if (!opts?.edge) {
|
|
253
|
+
await pipeline.start();
|
|
254
|
+
installSessionRotation();
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Re-assert a REMEMBERED identity so this session is attributed to the user.
|
|
258
|
+
* (SESSIONS-REAL-DATA-PLAN §2b)
|
|
259
|
+
* identify() persists the user id, but the backend links a user to a session only when it
|
|
260
|
+
* RECEIVES an identify item — it stamps `endUserId` on the session named in the request. A
|
|
261
|
+
* restored id sitting in memory would therefore label events while leaving every session after
|
|
262
|
+
* the first one Anonymous, which is the symptom this is here to remove. Emitting it once on
|
|
263
|
+
* activation costs one item and makes the link before anything else is sent.
|
|
264
|
+
*/
|
|
265
|
+
const ident = registry.get('analytics')?.identity;
|
|
266
|
+
if (ident?.userId && !opts?.edge) {
|
|
267
|
+
pipeline.emit({
|
|
268
|
+
kind: 'identify',
|
|
269
|
+
userId: ident.userId,
|
|
270
|
+
anonymousId: ident.anonymousId,
|
|
271
|
+
timestamp: Date.now(),
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Re-publish the persisted TARGETING context (F0) — not just the identity item above.
|
|
276
|
+
*
|
|
277
|
+
* `evalContext` is an in-memory bag and only ConfigFeature's `deviceId` was re-patched at boot.
|
|
278
|
+
* The user id (localStorage `scalebun_user_id`), super-properties and group memberships all
|
|
279
|
+
* survive a reload INSIDE AnalyticsFeature, but nothing republished them here — so after a
|
|
280
|
+
* refresh a flag / experiment / in-app rule targeting `userId`, a super-prop or a `group_*`
|
|
281
|
+
* attribute evaluated against a bag holding `deviceId` alone and silently resolved to the
|
|
282
|
+
* default, until the host app happened to call identify()/register() again on that page load.
|
|
283
|
+
* An app that identifies once at login (rather than from auth state on every mount) therefore
|
|
284
|
+
* lost user-scoped targeting on every navigation.
|
|
285
|
+
*
|
|
286
|
+
* Runs BEFORE the first host-app flag read but AFTER `setupAll`, because AnalyticsFeature loads
|
|
287
|
+
* super-props and groups from storage in its own setup() — earlier and the bag would be empty.
|
|
288
|
+
* Not gated on `opts.edge` (config/flags are live on the edge lane) and not gated on `userId`
|
|
289
|
+
* (super-props and groups are not identity-scoped — an anonymous visitor can carry both).
|
|
290
|
+
*
|
|
291
|
+
* Order is deliberate: super-props first, identity last, so a stale persisted super-prop named
|
|
292
|
+
* `userId` cannot shadow the real one. Group keys use the same `group_<type>` spelling the
|
|
293
|
+
* facade's group() writes, or restored memberships would not match existing rules.
|
|
294
|
+
*
|
|
295
|
+
* NOTE: identify() TRAITS are not restored — unlike super-props they are never persisted. To
|
|
296
|
+
* target a trait across reloads the host app must register() it or re-identify on each load.
|
|
297
|
+
*/
|
|
298
|
+
if (ident) {
|
|
299
|
+
patchEvalContext(ident.superProps);
|
|
300
|
+
const groups = ident.groups;
|
|
301
|
+
if (groups) {
|
|
302
|
+
for (const type of Object.keys(groups))
|
|
303
|
+
patchEvalContext({ [`group_${type}`]: groups[type] });
|
|
304
|
+
}
|
|
305
|
+
if (ident.userId)
|
|
306
|
+
patchEvalContext({ userId: ident.userId });
|
|
307
|
+
}
|
|
308
|
+
log(opts?.edge ? 'activated (edge-lite)' : 'activated', { sessionId: session.sessionId });
|
|
309
|
+
};
|
|
310
|
+
const setConsent = (granted) => {
|
|
311
|
+
consent.set(granted ? 'granted' : 'denied');
|
|
312
|
+
if (granted) {
|
|
313
|
+
pipeline.setConsentGranted(true);
|
|
314
|
+
void activate();
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
pipeline.setConsentGranted(false);
|
|
318
|
+
if (activated)
|
|
319
|
+
registry.teardownAll();
|
|
320
|
+
activated = false; // allow re-activation on a later grant (decline → change mind → accept)
|
|
321
|
+
void pipeline.discard(); // purge in-memory + persisted buffer; never sends
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
const runtime = {
|
|
325
|
+
config,
|
|
326
|
+
session,
|
|
327
|
+
pipeline,
|
|
328
|
+
transport,
|
|
329
|
+
registry,
|
|
330
|
+
log,
|
|
331
|
+
setConsent,
|
|
332
|
+
get consentStatus() {
|
|
333
|
+
return consent.value;
|
|
334
|
+
},
|
|
335
|
+
};
|
|
336
|
+
if (!config.consent.required || consent.granted) {
|
|
337
|
+
await activate();
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
log('consent required — capture deferred until setConsent(true)');
|
|
341
|
+
}
|
|
342
|
+
log('initialized', { sessionId: session.sessionId, consent: consent.value });
|
|
343
|
+
return runtime;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=SDKBootstrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SDKBootstrapper.js","sourceRoot":"","sources":["../../src/bootstrap/SDKBootstrapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,aAAa,EAAuB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,SAAS,CAAC;AACnM,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,KAAM,CAAC;AAEhC,6FAA6F;AAC7F,oGAAoG;AACpG,qGAAqG;AACrG,mGAAmG;AACnG,gDAAgD;AAChD,MAAM,UAAU,kBAAkB,CAAC,CAAqB;IACtD,OAAO,CAAC,KAAK,OAAO;QAClB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,CAAC,KAAK,SAAS;YACf,CAAC,CAAC,mBAAmB;YACrB,CAAC,CAAC,CAAC,KAAK,OAAO;gBACb,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,CAAC,KAAK,aAAa,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,aAAa;oBAC/E,CAAC,CAAC,uBAAuB;oBACzB,CAAC,CAAC,EAAE,CAAC;AACf,CAAC;AAeD,MAAM,OAAO,eAAe;IAC1B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAyB,EAAE,IAAyB;QACzE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,IAAI,IAAI,EAAE,IAAI;YAAE,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,sCAAsC;QACzF,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QAEvC,8FAA8F;QAC9F,oFAAoF;QACpF,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,IAAI,OAAO,MAAM,CAAC,MAAM,EAAE,cAAc,KAAK,QAAQ;YAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACxG,0FAA0F;QAC1F,kEAAkE;QAClE,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,gBAA6D,CAAC,CAAC;QAClG,MAAM,aAAa,GAAG,CAAC,IAAU,EAAQ,EAAE;YACzC,2FAA2F;YAC3F,MAAM,IAAI,GAAG,kBAAkB,CAAE,IAA0B,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,IAAI,IAAK,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAA0D,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK;gBAAE,OAAO;YACpI,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,+DAA+D;YACtF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,0FAA0F;QAC1F,sDAAsD;QACtD,MAAM,eAAe,GAAG,IAAI,GAAG,EAA8D,CAAC;QAE9F,uFAAuF;QACvF,MAAM,GAAG,GAAmB;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,sDAAsD;YACrF,+FAA+F;YAC/F,+FAA+F;YAC/F,8FAA8F;YAC9F,SAAS,EAAE,GAAG,EAAE,CACb,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAoD,EAAE,QAAQ,EAAE,MAAM;YAEjG,IAAI,EAAE,aAAa;YACnB,wFAAwF;YACxF,yEAAyE;YACzE,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;YACnD,aAAa,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY;YAC1C,aAAa,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO;YACrC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACjG,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzG,GAAG;YACH,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACzB,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBACpB,CAAC;oBAAC,MAAM,CAAC;wBACP,8CAA8C;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;gBACf,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,cAAc,EAAE,MAAM,CAAC,MAAM;YAC7B,wFAAwF;YACxF,GAAG,CAAC,MAAM,CAAC,kBAAkB;gBAC3B,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;YACP,aAAa,EAAE,MAAM,CAAC,MAAM;YAC5B,cAAc,EAAE,MAAM,CAAC,OAAO;YAC9B,kBAAkB,EAAE,MAAM,CAAC,WAAW;YACtC,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,kCAAkC;YACpE,gBAAgB,EAAE,MAAM,CAAC,SAAS;YAClC,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,8CAA8C;YACvF,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,4DAA4D;YACnG,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,6FAA6F;YAC7F,YAAY,EAAE,MAAM,CAAC,gBAAgB;gBACnC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,uBAAuB,CAAC;gBACpG,CAAC,CAAC,EAAE;YACN,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc;YAC7C,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa;YAC3C,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa;YAC3C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;YACrC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;YACrC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,mDAAmD;SACnF,CAAC;QAEF,sGAAsG;QACtG,iGAAiG;QACjG,mGAAmG;QACnG,uGAAuG;QACvG,qGAAqG;QACrG,MAAM,OAAO,GAAG,MAAM,CAAC,QAA8C,CAAC;QACtE,MAAM,gBAAgB,GAAG,GAAS,EAAE;YAClC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK;oBAAE,SAAS;gBACxC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAAE,SAAS;gBACpE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC;QACF,gBAAgB,EAAE,CAAC;QAEnB;;;;;;;;;;;;;;;;;;WAkBG;QACH,MAAM,gBAAgB,GAAG,KAAK,IAAmB,EAAE;YACjD,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;gBAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI;oBAAE,OAAO;gBACnC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO;gBAChE,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,OAAO,CAAC,sCAAsC;gBACtE,IAAI,CAAC;oBACH,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,gCAAgC,IAAI,mBAAmB,EAAE,GAAG,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;QAEF,4FAA4F;QAC5F,8FAA8F;QAC9F,yFAAyF;QACzF,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD;;;;;;;;;;;;;;;;;;;;;WAqBG;QACH,MAAM,sBAAsB,GAAG,GAAS,EAAE;YACxC,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;gBACvC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;oBAAE,OAAO;gBAC/B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,kDAAkD;gBAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI;oBAAE,OAAO,CAAC,kEAAkE;gBACrF,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB,EAAE,CAAC,CAAC,qEAAqE;gBACzF,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACzB,6FAA6F;gBAC7F,sFAAsF;gBACtF,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAA4D,CAAC;gBACjG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBAClB,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;gBACnB,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1D,CAAC,CAAC;YACF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;YACjE,2FAA2F;YAC1F,KAA2C,CAAC,KAAK,EAAE,EAAE,CAAC;YACvD,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtB,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;oBACjD,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS;wBAAE,KAAK,MAAM,EAAE,CAAC;gBAC5D,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;YACzC,IAAI,SAAS;gBAAE,OAAO;YACtB,SAAS,GAAG,IAAI,CAAC;YACjB,gBAAgB,EAAE,CAAC,CAAC,oEAAoE;YACxF,MAAM,gBAAgB,EAAE,CAAC,CAAC,sEAAsE;YAChG,uFAAuF;YACvF,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7B,2FAA2F;YAC3F,iGAAiG;YACjG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;gBAChB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACvB,sBAAsB,EAAE,CAAC;YAC3B,CAAC;YACD;;;;;;;;eAQG;YACH,MAAM,KAAK,GACT,QAAQ,CAAC,GAAG,CAAC,WAAW,CAUzB,EAAE,QAAQ,CAAC;YACZ,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACb,CAAC,CAAC;YACd,CAAC;YACD;;;;;;;;;;;;;;;;;;;;;;;eAuBG;YACH,IAAI,KAAK,EAAE,CAAC;gBACV,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACnC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC5B,IAAI,MAAM,EAAE,CAAC;oBACX,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;wBAAE,gBAAgB,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChG,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM;oBAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5F,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAQ,EAAE;YAC5C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACjC,KAAK,QAAQ,EAAE,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,SAAS;oBAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACtC,SAAS,GAAG,KAAK,CAAC,CAAC,wEAAwE;gBAC3F,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,kDAAkD;YAC7E,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,OAAO,GAAe;YAC1B,MAAM;YACN,OAAO;YACP,QAAQ;YACR,SAAS;YACT,QAAQ;YACR,GAAG;YACH,UAAU;YACV,IAAI,aAAa;gBACf,OAAO,OAAO,CAAC,KAAK,CAAC;YACvB,CAAC;SACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAChD,MAAM,QAAQ,EAAE,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,4DAA4D,CAAC,CAAC;QACpE,CAAC;QAED,GAAG,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7E,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|