@scalebun/web 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +59 -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 +248 -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 +81 -0
- package/dist/browser.js.map +1 -0
- package/dist/config/schema.d.ts +108 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +95 -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 +15 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +15 -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 +73 -0
- package/dist/core/pageContext.js.map +1 -0
- package/dist/core/prune.d.ts +7 -0
- package/dist/core/prune.d.ts.map +1 -0
- package/dist/core/prune.js +31 -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 +50 -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/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 +122 -0
- package/dist/features/analytics/AnalyticsFeature.d.ts.map +1 -0
- package/dist/features/analytics/AnalyticsFeature.js +757 -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 +398 -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 +38 -0
- package/dist/features/analytics/revenue.d.ts.map +1 -0
- package/dist/features/analytics/revenue.js +26 -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 +25 -0
- package/dist/features/analytics/subscription.d.ts.map +1 -0
- package/dist/features/analytics/subscription.js +51 -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 +36 -0
- package/dist/features/bugreport/BugReportFeature.d.ts.map +1 -0
- package/dist/features/bugreport/BugReportFeature.js +55 -0
- package/dist/features/bugreport/BugReportFeature.js.map +1 -0
- package/dist/features/bugreport/collect.d.ts +21 -0
- package/dist/features/bugreport/collect.d.ts.map +1 -0
- package/dist/features/bugreport/collect.js +27 -0
- package/dist/features/bugreport/collect.js.map +1 -0
- package/dist/features/bugreport/widget.d.ts +21 -0
- package/dist/features/bugreport/widget.d.ts.map +1 -0
- package/dist/features/bugreport/widget.js +111 -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 +183 -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 +61 -0
- package/dist/features/engage/EngageFeature.d.ts.map +1 -0
- package/dist/features/engage/EngageFeature.js +221 -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 +203 -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 +78 -0
- package/dist/features/engage/runtime.d.ts.map +1 -0
- package/dist/features/engage/runtime.js +349 -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 +31 -0
- package/dist/features/engage/throttle.d.ts.map +1 -0
- package/dist/features/engage/throttle.js +130 -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 +265 -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 +136 -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 +546 -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 +43 -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 +127 -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 +198 -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 +194 -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 +70 -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 +239 -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 +58 -0
- package/dist/features/inapp/core/targeting.d.ts.map +1 -0
- package/dist/features/inapp/core/targeting.js +181 -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 +219 -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 +92 -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 +88 -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 +72 -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 +66 -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 +52 -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 +186 -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 +62 -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 +199 -0
- package/dist/features/inapp/surfaces/tour.js.map +1 -0
- package/dist/features/inapp/types.d.ts +163 -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 +608 -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 +34 -0
- package/dist/features/journey/InteractionTracker.d.ts.map +1 -0
- package/dist/features/journey/InteractionTracker.js +125 -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 +57 -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 +29 -0
- package/dist/features/journey/friction.d.ts.map +1 -0
- package/dist/features/journey/friction.js +65 -0
- package/dist/features/journey/friction.js.map +1 -0
- package/dist/features/manifest.d.ts +20 -0
- package/dist/features/manifest.d.ts.map +1 -0
- package/dist/features/manifest.js +76 -0
- package/dist/features/manifest.js.map +1 -0
- package/dist/features/network/NetworkFeature.d.ts +56 -0
- package/dist/features/network/NetworkFeature.d.ts.map +1 -0
- package/dist/features/network/NetworkFeature.js +235 -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/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 +141 -0
- package/dist/features/push/softAsk.js.map +1 -0
- package/dist/features/replay/ReplayFeature.d.ts +32 -0
- package/dist/features/replay/ReplayFeature.d.ts.map +1 -0
- package/dist/features/replay/ReplayFeature.js +132 -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 +142 -0
- package/dist/features/replay/engine/interactions.d.ts.map +1 -0
- package/dist/features/replay/engine/interactions.js +371 -0
- package/dist/features/replay/engine/interactions.js.map +1 -0
- package/dist/features/replay/engine/mutations.d.ts +49 -0
- package/dist/features/replay/engine/mutations.d.ts.map +1 -0
- package/dist/features/replay/engine/mutations.js +261 -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 +409 -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 +137 -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 +20 -0
- package/dist/features/replay/lifecycle/cadence.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/cadence.js +62 -0
- package/dist/features/replay/lifecycle/cadence.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/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 +129 -0
- package/dist/features/replay/lifecycle/recorder.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/recorder.js +509 -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 +31 -0
- package/dist/features/scroll/index.d.ts.map +1 -0
- package/dist/features/scroll/index.js +102 -0
- package/dist/features/scroll/index.js.map +1 -0
- package/dist/features/session/sessionManager.d.ts +25 -0
- package/dist/features/session/sessionManager.d.ts.map +1 -0
- package/dist/features/session/sessionManager.js +36 -0
- package/dist/features/session/sessionManager.js.map +1 -0
- package/dist/features/session/sessionStore.d.ts +106 -0
- package/dist/features/session/sessionStore.d.ts.map +1 -0
- package/dist/features/session/sessionStore.js +265 -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 +31 -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 +84 -0
- package/dist/pipeline/pipeline.d.ts.map +1 -0
- package/dist/pipeline/pipeline.js +284 -0
- package/dist/pipeline/pipeline.js.map +1 -0
- package/dist/public/ScaleBunFacade.d.ts +382 -0
- package/dist/public/ScaleBunFacade.d.ts.map +1 -0
- package/dist/public/ScaleBunFacade.js +787 -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 +635 -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 +60 -0
- package/dist/transport/httpClient.d.ts.map +1 -0
- package/dist/transport/httpClient.js +154 -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 +60 -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,59 @@
|
|
|
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
|
+
apiBaseUrl: 'https://ingest.your-scalebun-host.com/api/v1',
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// Track product events
|
|
25
|
+
ScaleBun.track('checkout_completed', { plan: 'pro', amount: 49 });
|
|
26
|
+
|
|
27
|
+
// Attach a user identity
|
|
28
|
+
ScaleBun.identify('user_123', { email: 'jane@example.com' });
|
|
29
|
+
|
|
30
|
+
// Let a user file a bug report
|
|
31
|
+
await ScaleBun.reportBug({ message: 'The export button does nothing' });
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Errors, network requests, performance metrics, and replay frames are captured automatically once
|
|
35
|
+
`init()` resolves (subject to your config).
|
|
36
|
+
|
|
37
|
+
## Script-tag / CDN usage
|
|
38
|
+
|
|
39
|
+
A prebuilt browser bundle is published for `unpkg`/`jsDelivr`. Configure via `data-` attributes:
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<script
|
|
43
|
+
src="https://unpkg.com/@scalebun/web/dist/scalebun.min.js"
|
|
44
|
+
data-client-key="your-client-key"
|
|
45
|
+
data-api-base-url="https://ingest.your-scalebun-host.com/api/v1"
|
|
46
|
+
></script>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Entry points
|
|
50
|
+
|
|
51
|
+
| Import | Purpose |
|
|
52
|
+
|---|---|
|
|
53
|
+
| `@scalebun/web` | Main SDK (ESM) — the `ScaleBun` facade + typed tracking helpers. |
|
|
54
|
+
| `@scalebun/web/inapp` | In-app messaging / widget surface. |
|
|
55
|
+
| `@scalebun/web/browser` | Prebuilt minified browser bundle (IIFE, for `<script>` tags). |
|
|
56
|
+
|
|
57
|
+
## License
|
|
58
|
+
|
|
59
|
+
[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';
|
|
8
|
+
import { type ConsentStatus } from '../core';
|
|
9
|
+
import { SessionManager } from '../features/session/sessionManager';
|
|
10
|
+
import { HttpClient } from '../transport/httpClient';
|
|
11
|
+
import { Pipeline } from '../pipeline/pipeline';
|
|
12
|
+
import { FeatureRegistry } from './FeatureRegistry';
|
|
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;AASpD,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;CA2NlG"}
|
|
@@ -0,0 +1,248 @@
|
|
|
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';
|
|
7
|
+
import { createLogger, ConsentGate, recordBreadcrumb, clearBreadcrumbs, breadcrumbs, setBeforeBreadcrumb, noteReplayFrame, clearReplayCoord, patchEvalContext } from '../core';
|
|
8
|
+
import { SessionManager } from '../features/session/sessionManager';
|
|
9
|
+
import { HttpClient } from '../transport/httpClient';
|
|
10
|
+
import { Pipeline } from '../pipeline/pipeline';
|
|
11
|
+
import { FeatureRegistry } from './FeatureRegistry';
|
|
12
|
+
import { FEATURES, featureRequirements } from '../features/manifest';
|
|
13
|
+
import { can } from '../core';
|
|
14
|
+
// 0-cost-closed: map an item kind → the SDK-suppressible entitlement that gates it (or '' if
|
|
15
|
+
// ungated). When the org has CLOSED one of these features (admin dashboard → /config entitlements),
|
|
16
|
+
// the SDK drops the item BEFORE egress — the request never leaves the browser (true 0 cost, not just
|
|
17
|
+
// a server-side reject). Fail-open: only drops when the entitlement is explicitly `false`. Mirrors
|
|
18
|
+
// the backend's FEATURE_ENFORCEMENT `sdk` tier.
|
|
19
|
+
export function entitlementForKind(k) {
|
|
20
|
+
return k === 'frame'
|
|
21
|
+
? 'replay'
|
|
22
|
+
: k === 'network'
|
|
23
|
+
? 'networkMonitoring'
|
|
24
|
+
: k === 'error'
|
|
25
|
+
? 'crashReporting'
|
|
26
|
+
: k === 'performance' || k === 'resource' || k === 'trace' || k === 'transaction'
|
|
27
|
+
? 'performanceMonitoring'
|
|
28
|
+
: '';
|
|
29
|
+
}
|
|
30
|
+
export class SDKBootstrapper {
|
|
31
|
+
/**
|
|
32
|
+
* `opts.edge` = the edge/worker LITE lane: analytics + config only (via the P2 capability gate),
|
|
33
|
+
* transport-only. The session/replay pipeline stays inert (no startSession, no flush timer, no DOM
|
|
34
|
+
* lifecycle listeners) — its egress gate is left closed so facade session-lane emits drop instead of
|
|
35
|
+
* buffering unsent. The analytics lane self-manages its own /batch egress and works fine on edge.
|
|
36
|
+
*/
|
|
37
|
+
static async bootstrap(input, opts) {
|
|
38
|
+
const config = resolveConfig(input);
|
|
39
|
+
const log = createLogger(config.debug);
|
|
40
|
+
const session = new SessionManager(config);
|
|
41
|
+
const transport = new HttpClient(config);
|
|
42
|
+
const pipeline = new Pipeline(config, session, transport);
|
|
43
|
+
if (opts?.edge)
|
|
44
|
+
pipeline.setConsentGranted(false); // keep the session lane inert on edge
|
|
45
|
+
const registry = new FeatureRegistry();
|
|
46
|
+
// Breadcrumbs: fresh ring for this session, sized from config. Every item flowing through the
|
|
47
|
+
// pipeline is mirrored into the ring (the ONE place auto-breadcrumbs are captured).
|
|
48
|
+
clearBreadcrumbs();
|
|
49
|
+
clearReplayCoord();
|
|
50
|
+
if (typeof config.errors?.maxBreadcrumbs === 'number')
|
|
51
|
+
breadcrumbs.setMax(config.errors.maxBreadcrumbs);
|
|
52
|
+
// Cast across the contract↔core boundary: the config type uses the protocol (passthrough)
|
|
53
|
+
// Breadcrumb, core uses its structural twin — same runtime shape.
|
|
54
|
+
setBeforeBreadcrumb(config.errors?.beforeBreadcrumb);
|
|
55
|
+
const emitWithCrumb = (item) => {
|
|
56
|
+
// 0-cost-closed: drop items whose feature the org has closed, before they ever hit egress.
|
|
57
|
+
const ekey = entitlementForKind(item.kind);
|
|
58
|
+
if (ekey && registry.get('config')?.entitlement?.(ekey) === false)
|
|
59
|
+
return;
|
|
60
|
+
recordBreadcrumb(item);
|
|
61
|
+
noteReplayFrame(item); // track the live replay coordinate for error↔frame correlation
|
|
62
|
+
pipeline.emit(item);
|
|
63
|
+
};
|
|
64
|
+
// Capture-signal bus: features raise signals ('error'/'rage'/'report'); capture-on-signal
|
|
65
|
+
// features (replay) subscribe and flush their buffer.
|
|
66
|
+
const signalListeners = new Set();
|
|
67
|
+
// The narrow surface features get — emit Items, track events, read state, log, signal.
|
|
68
|
+
const ctx = {
|
|
69
|
+
sessionId: session.sessionId,
|
|
70
|
+
clientKey: config.clientKey,
|
|
71
|
+
deviceId: session.deviceId,
|
|
72
|
+
appVersion: config.appVersion, // E0 — Engage sends it as the config-query appVersion
|
|
73
|
+
// Resolved lazily: identity arrives when the host calls identify(), long after this context is
|
|
74
|
+
// built. Engage/IAM send it as the config-query `endUserId` so the backend can resolve segment
|
|
75
|
+
// targeting; while anonymous it stays undefined and a segment-targeted campaign fails closed.
|
|
76
|
+
getUserId: () => registry.get('analytics')?.identity?.userId,
|
|
77
|
+
emit: emitWithCrumb,
|
|
78
|
+
// No breadcrumb wrapper: this item belongs to a session that has already ended, so THIS
|
|
79
|
+
// session's breadcrumb trail would be the wrong context to attach to it.
|
|
80
|
+
emitFor: (sid, item) => pipeline.emitFor(sid, item),
|
|
81
|
+
egressPending: () => pipeline.pendingCount,
|
|
82
|
+
trackEvent: (name, props) => emitWithCrumb({ kind: 'event', name, props, timestamp: Date.now() }),
|
|
83
|
+
getAppState: () => (can('visibility') && document.visibilityState === 'hidden' ? 'background' : 'active'),
|
|
84
|
+
log,
|
|
85
|
+
apiBaseUrl: config.apiBaseUrl,
|
|
86
|
+
signal: (reason, detail) => {
|
|
87
|
+
for (const l of signalListeners) {
|
|
88
|
+
try {
|
|
89
|
+
l(reason, detail);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
/* never let a listener break the signaller */
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
onSignal: (cb) => {
|
|
97
|
+
signalListeners.add(cb);
|
|
98
|
+
return () => signalListeners.delete(cb);
|
|
99
|
+
},
|
|
100
|
+
replaySampling: config.replay,
|
|
101
|
+
// The gamified-outcome resolver. Passed through untouched; the engage runtime types it.
|
|
102
|
+
...(config.onInAppGameRequest
|
|
103
|
+
? { onInAppGameRequest: config.onInAppGameRequest }
|
|
104
|
+
: {}),
|
|
105
|
+
errorsOptions: config.errors,
|
|
106
|
+
networkOptions: config.network,
|
|
107
|
+
performanceOptions: config.performance,
|
|
108
|
+
watchdogOptions: config.watchdog, // W5.2 — Resource Watchdog tuning
|
|
109
|
+
analyticsOptions: config.analytics,
|
|
110
|
+
flagsBootstrap: config.flags?.bootstrap, // F3 — seed flags before the network responds
|
|
111
|
+
flagsRealtime: config.flags?.realtime, // F4 — subscribe to the realtime config stream (default on)
|
|
112
|
+
replayCanvas: config.replayCanvas,
|
|
113
|
+
replayFrameOrigins: config.replayFrameOrigins,
|
|
114
|
+
autocapture: config.autocapture,
|
|
115
|
+
// Resolve the traceparent allowlist: same-origin + configured cross-origins, or [] when off.
|
|
116
|
+
traceOrigins: config.tracePropagation
|
|
117
|
+
? [...(typeof location !== 'undefined' ? [location.origin] : []), ...config.tracePropagationOrigins]
|
|
118
|
+
: [],
|
|
119
|
+
maskReplayText: config.privacy.maskReplayText,
|
|
120
|
+
maskEventText: config.privacy.maskEventText,
|
|
121
|
+
maskSelectors: config.privacy.maskSelectors,
|
|
122
|
+
maskInputs: config.privacy.maskInputs,
|
|
123
|
+
respectDnt: config.privacy.respectDnt,
|
|
124
|
+
exitIntent: config.exitIntent, // #25 P2 — host-tunable scroll-reversal thresholds
|
|
125
|
+
};
|
|
126
|
+
// Register a feature only when (a) it's enabled (config.features[name] !== false) AND (b) the current
|
|
127
|
+
// runtime has the capabilities it fundamentally needs (§P2 eligibility gate). In a browser every
|
|
128
|
+
// capability is present so this is a no-op (all enabled features register, unchanged); on an edge/
|
|
129
|
+
// worker runtime the DOM features are skipped and only the network-eligible surface (analytics/config)
|
|
130
|
+
// registers. Idempotent (Map by name) so it's safe to call again after a consent-deny teardownAll().
|
|
131
|
+
const enabled = config.features;
|
|
132
|
+
const registerFeatures = () => {
|
|
133
|
+
for (const f of FEATURES) {
|
|
134
|
+
if (enabled[f.name] === false)
|
|
135
|
+
continue;
|
|
136
|
+
if (!featureRequirements(f.name).every((cap) => can(cap)))
|
|
137
|
+
continue;
|
|
138
|
+
registry.add(f);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
registerFeatures();
|
|
142
|
+
// Consent-mode (F-CNS): when consent is required and not yet granted, DEFER activation — no
|
|
143
|
+
// feature setup (no observers installed) and no pipeline start (no session opened, no flush).
|
|
144
|
+
// Capture begins only on the first grant. Default (not required) → activate immediately.
|
|
145
|
+
const consent = new ConsentGate(config.consent.initial);
|
|
146
|
+
let activated = false;
|
|
147
|
+
const activate = async () => {
|
|
148
|
+
if (activated)
|
|
149
|
+
return;
|
|
150
|
+
activated = true;
|
|
151
|
+
registerFeatures(); // re-register after a prior deny teardownAll() cleared the registry
|
|
152
|
+
// Order matters: setupAll BEFORE pipeline.start (F-VIT relies on it — see its header).
|
|
153
|
+
await registry.setupAll(ctx);
|
|
154
|
+
// Edge-lite: skip the session-lane pipeline (no startSession fetch, no flush timer, no DOM
|
|
155
|
+
// lifecycle listeners). Analytics/config already self-manage their own /batch egress in setup().
|
|
156
|
+
if (!opts?.edge)
|
|
157
|
+
await pipeline.start();
|
|
158
|
+
/**
|
|
159
|
+
* Re-assert a REMEMBERED identity so this session is attributed to the user.
|
|
160
|
+
* (SESSIONS-REAL-DATA-PLAN §2b)
|
|
161
|
+
* identify() persists the user id, but the backend links a user to a session only when it
|
|
162
|
+
* RECEIVES an identify item — it stamps `endUserId` on the session named in the request. A
|
|
163
|
+
* restored id sitting in memory would therefore label events while leaving every session after
|
|
164
|
+
* the first one Anonymous, which is the symptom this is here to remove. Emitting it once on
|
|
165
|
+
* activation costs one item and makes the link before anything else is sent.
|
|
166
|
+
*/
|
|
167
|
+
const ident = registry.get('analytics')?.identity;
|
|
168
|
+
if (ident?.userId && !opts?.edge) {
|
|
169
|
+
pipeline.emit({
|
|
170
|
+
kind: 'identify',
|
|
171
|
+
userId: ident.userId,
|
|
172
|
+
anonymousId: ident.anonymousId,
|
|
173
|
+
timestamp: Date.now(),
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Re-publish the persisted TARGETING context (F0) — not just the identity item above.
|
|
178
|
+
*
|
|
179
|
+
* `evalContext` is an in-memory bag and only ConfigFeature's `deviceId` was re-patched at boot.
|
|
180
|
+
* The user id (localStorage `scalebun_user_id`), super-properties and group memberships all
|
|
181
|
+
* survive a reload INSIDE AnalyticsFeature, but nothing republished them here — so after a
|
|
182
|
+
* refresh a flag / experiment / in-app rule targeting `userId`, a super-prop or a `group_*`
|
|
183
|
+
* attribute evaluated against a bag holding `deviceId` alone and silently resolved to the
|
|
184
|
+
* default, until the host app happened to call identify()/register() again on that page load.
|
|
185
|
+
* An app that identifies once at login (rather than from auth state on every mount) therefore
|
|
186
|
+
* lost user-scoped targeting on every navigation.
|
|
187
|
+
*
|
|
188
|
+
* Runs BEFORE the first host-app flag read but AFTER `setupAll`, because AnalyticsFeature loads
|
|
189
|
+
* super-props and groups from storage in its own setup() — earlier and the bag would be empty.
|
|
190
|
+
* Not gated on `opts.edge` (config/flags are live on the edge lane) and not gated on `userId`
|
|
191
|
+
* (super-props and groups are not identity-scoped — an anonymous visitor can carry both).
|
|
192
|
+
*
|
|
193
|
+
* Order is deliberate: super-props first, identity last, so a stale persisted super-prop named
|
|
194
|
+
* `userId` cannot shadow the real one. Group keys use the same `group_<type>` spelling the
|
|
195
|
+
* facade's group() writes, or restored memberships would not match existing rules.
|
|
196
|
+
*
|
|
197
|
+
* NOTE: identify() TRAITS are not restored — unlike super-props they are never persisted. To
|
|
198
|
+
* target a trait across reloads the host app must register() it or re-identify on each load.
|
|
199
|
+
*/
|
|
200
|
+
if (ident) {
|
|
201
|
+
patchEvalContext(ident.superProps);
|
|
202
|
+
const groups = ident.groups;
|
|
203
|
+
if (groups) {
|
|
204
|
+
for (const type of Object.keys(groups))
|
|
205
|
+
patchEvalContext({ [`group_${type}`]: groups[type] });
|
|
206
|
+
}
|
|
207
|
+
if (ident.userId)
|
|
208
|
+
patchEvalContext({ userId: ident.userId });
|
|
209
|
+
}
|
|
210
|
+
log(opts?.edge ? 'activated (edge-lite)' : 'activated', { sessionId: session.sessionId });
|
|
211
|
+
};
|
|
212
|
+
const setConsent = (granted) => {
|
|
213
|
+
consent.set(granted ? 'granted' : 'denied');
|
|
214
|
+
if (granted) {
|
|
215
|
+
pipeline.setConsentGranted(true);
|
|
216
|
+
void activate();
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
pipeline.setConsentGranted(false);
|
|
220
|
+
if (activated)
|
|
221
|
+
registry.teardownAll();
|
|
222
|
+
activated = false; // allow re-activation on a later grant (decline → change mind → accept)
|
|
223
|
+
void pipeline.discard(); // purge in-memory + persisted buffer; never sends
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
const runtime = {
|
|
227
|
+
config,
|
|
228
|
+
session,
|
|
229
|
+
pipeline,
|
|
230
|
+
transport,
|
|
231
|
+
registry,
|
|
232
|
+
log,
|
|
233
|
+
setConsent,
|
|
234
|
+
get consentStatus() {
|
|
235
|
+
return consent.value;
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
if (!config.consent.required || consent.granted) {
|
|
239
|
+
await activate();
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
log('consent required — capture deferred until setConsent(true)');
|
|
243
|
+
}
|
|
244
|
+
log('initialized', { sessionId: session.sessionId, consent: consent.value });
|
|
245
|
+
return runtime;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=SDKBootstrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SDKBootstrapper.js","sourceRoot":"","sources":["../../src/bootstrap/SDKBootstrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser global entry — the no-build install target.
|
|
3
|
+
*
|
|
4
|
+
* esbuild bundles this as an IIFE (see scripts/build-browser.mjs) so a plain
|
|
5
|
+
* <script src="https://cdn…/scalebun.min.js"></script>
|
|
6
|
+
* exposes `window.ScaleBun` and `ScaleBun.init({...})` works with NO bundler. It is the SAME facade as
|
|
7
|
+
* the npm/ESM build — one runtime, no fork.
|
|
8
|
+
*
|
|
9
|
+
* IMPORTANT: this module is NOT imported by src/index.ts, so it never enters the eager-core bundle the
|
|
10
|
+
* `size:check` gate measures. The 30 KB ESM gate is unaffected by anything here.
|
|
11
|
+
*
|
|
12
|
+
* Two no-build install shapes are supported:
|
|
13
|
+
*
|
|
14
|
+
* 1. ASYNC LOADER SNIPPET (recommended) — an inline stub queues early calls, then loads this bundle:
|
|
15
|
+
* <script>
|
|
16
|
+
* !function(w,d){w.ScaleBun=w.ScaleBun||{q:[]};
|
|
17
|
+
* ['init','track','identify','trackPurchase','setConsent','reset','register','group','alias']
|
|
18
|
+
* .forEach(function(m){w.ScaleBun[m]=w.ScaleBun[m]||function(){w.ScaleBun.q.push([m,arguments]);};});
|
|
19
|
+
* var s=d.createElement('script');s.async=true;
|
|
20
|
+
* s.src='https://cdn.jsdelivr.net/npm/@scalebun/web@1/dist/scalebun.min.js';
|
|
21
|
+
* d.head.appendChild(s);}(window,document);
|
|
22
|
+
* ScaleBun.init({clientKey:'…',apiBaseUrl:'…'});
|
|
23
|
+
* </script>
|
|
24
|
+
* On load we replace the stub, replay `ScaleBun.q` in order — no race, no lost calls.
|
|
25
|
+
*
|
|
26
|
+
* 2. DECLARATIVE TAG (CSP-clean, zero inline JS) — config via data-* on the tag itself:
|
|
27
|
+
* <script async src="…/scalebun.min.js" data-client-key="…" data-api-base-url="…"></script>
|
|
28
|
+
* We read the loading script's dataset and auto-init.
|
|
29
|
+
*/
|
|
30
|
+
import { ScaleBun } from './public/ScaleBunFacade';
|
|
31
|
+
/** The async-loader stub captures pre-load calls as `[method, args]` on `.q`. */
|
|
32
|
+
interface ScaleBunStub {
|
|
33
|
+
q?: Array<[string, unknown[]]>;
|
|
34
|
+
}
|
|
35
|
+
declare global {
|
|
36
|
+
interface Window {
|
|
37
|
+
ScaleBun?: typeof ScaleBun | ScaleBunStub;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Install the real facade as `window.ScaleBun`: (1) drain any queued calls the loader stub captured
|
|
42
|
+
* before this bundle loaded, then (2) auto-init from the loading `<script>`'s data-* attributes.
|
|
43
|
+
* Exported for unit tests; the module runs it once on load below.
|
|
44
|
+
*/
|
|
45
|
+
export declare function installBrowserGlobal(win: {
|
|
46
|
+
ScaleBun?: typeof ScaleBun | ScaleBunStub;
|
|
47
|
+
}, currentScript: {
|
|
48
|
+
dataset?: DOMStringMap;
|
|
49
|
+
} | null): void;
|
|
50
|
+
export { ScaleBun as default, ScaleBun };
|
|
51
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,iFAAiF;AACjF,UAAU,YAAY;IACpB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;CAChC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,QAAQ,CAAC,EAAE,OAAO,QAAQ,GAAG,YAAY,CAAC;KAC3C;CACF;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,QAAQ,GAAG,YAAY,CAAA;CAAE,EAClD,aAAa,EAAE;IAAE,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,GAC/C,IAAI,CAiCN;AAaD,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|