@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
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds the envelope header blocks (client/device/app/context) from the browser environment.
|
|
3
|
+
* Pure reads of navigator/location/Intl — all best-effort and SSR-safe.
|
|
4
|
+
*/
|
|
5
|
+
import { PKG_VERSION } from './version.generated.js';
|
|
6
|
+
export const SDK_NAME = '@scalebun/web';
|
|
7
|
+
export const SDK_VERSION = typeof __SCALEBUN_VERSION__ !== 'undefined' ? __SCALEBUN_VERSION__ : PKG_VERSION;
|
|
8
|
+
export function buildClient() {
|
|
9
|
+
return { platform: 'web', renderer: 'dom', sdk: { name: SDK_NAME, version: SDK_VERSION } };
|
|
10
|
+
}
|
|
11
|
+
export function buildDevice(deviceId) {
|
|
12
|
+
const ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';
|
|
13
|
+
const { browser, os } = parseUserAgent(ua);
|
|
14
|
+
return {
|
|
15
|
+
id: deviceId,
|
|
16
|
+
browser: browser.name,
|
|
17
|
+
browserVersion: browser.version,
|
|
18
|
+
os: os.name,
|
|
19
|
+
osVersion: os.version,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function buildApp(config) {
|
|
23
|
+
return { version: config.appVersion, environment: config.environment, release: config.release };
|
|
24
|
+
}
|
|
25
|
+
export function buildContext() {
|
|
26
|
+
const ctx = {};
|
|
27
|
+
try {
|
|
28
|
+
if (typeof navigator !== 'undefined')
|
|
29
|
+
ctx.locale = navigator.language;
|
|
30
|
+
ctx.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
31
|
+
if (typeof location !== 'undefined')
|
|
32
|
+
ctx.url = location.href;
|
|
33
|
+
if (typeof window !== 'undefined')
|
|
34
|
+
ctx.viewport = { width: window.innerWidth, height: window.innerHeight };
|
|
35
|
+
const conn = navigator?.connection;
|
|
36
|
+
if (conn?.effectiveType)
|
|
37
|
+
ctx.networkType = conn.effectiveType;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
/* best-effort */
|
|
41
|
+
}
|
|
42
|
+
return ctx;
|
|
43
|
+
}
|
|
44
|
+
/** Allocation-light UA parse — good enough for a "Chrome on macOS"-style label. */
|
|
45
|
+
function parseUserAgent(ua) {
|
|
46
|
+
const browser = {};
|
|
47
|
+
const os = {};
|
|
48
|
+
/**
|
|
49
|
+
* Chromium FORKS FIRST, in their own pass.
|
|
50
|
+
*
|
|
51
|
+
* Alternation only decides between branches at the SAME position — `exec` returns the leftmost
|
|
52
|
+
* match in the string. Edge and Opera both append their token AFTER Chrome's:
|
|
53
|
+
*
|
|
54
|
+
* … Chrome/120.0.0.0 Safari/537.36 Edg/120.0.2210.91
|
|
55
|
+
*
|
|
56
|
+
* so a single `(Edg|OPR|Chrome|…)` pattern matched `Chrome/` every time and the Edg→Edge mapping
|
|
57
|
+
* below was unreachable dead code. Every Edge and Opera visitor was recorded as Chrome. Two passes
|
|
58
|
+
* is the fix: ask for a fork, fall back to the base engines.
|
|
59
|
+
*
|
|
60
|
+
* Brave still reports Chrome, and that is correct — it ships a byte-identical UA deliberately.
|
|
61
|
+
* The backend's deviceLabel and the dashboard's security page already test `Edg/` separately,
|
|
62
|
+
* which is why login sessions named Edge correctly while SDK-captured sessions did not.
|
|
63
|
+
*/
|
|
64
|
+
const b = /(Edg|OPR)\/([\d.]+)/.exec(ua) ?? /(Chrome|Firefox|Safari)\/([\d.]+)/.exec(ua);
|
|
65
|
+
if (b && b[1]) {
|
|
66
|
+
browser.name = { Edg: 'Edge', OPR: 'Opera' }[b[1]] ?? b[1];
|
|
67
|
+
browser.version = b[2]?.split('.')[0];
|
|
68
|
+
}
|
|
69
|
+
if (/Windows NT ([\d.]+)/.test(ua)) {
|
|
70
|
+
os.name = 'Windows';
|
|
71
|
+
os.version = /Windows NT ([\d.]+)/.exec(ua)?.[1];
|
|
72
|
+
}
|
|
73
|
+
else if (/Mac OS X ([\d_]+)/.test(ua)) {
|
|
74
|
+
os.name = 'macOS';
|
|
75
|
+
os.version = /Mac OS X ([\d_]+)/.exec(ua)?.[1]?.replace(/_/g, '.');
|
|
76
|
+
}
|
|
77
|
+
else if (/Android ([\d.]+)/.test(ua)) {
|
|
78
|
+
os.name = 'Android';
|
|
79
|
+
os.version = /Android ([\d.]+)/.exec(ua)?.[1];
|
|
80
|
+
}
|
|
81
|
+
else if (/(iPhone|iPad).+OS ([\d_]+)/.test(ua)) {
|
|
82
|
+
os.name = 'iOS';
|
|
83
|
+
os.version = /OS ([\d_]+)/.exec(ua)?.[1]?.replace(/_/g, '.');
|
|
84
|
+
}
|
|
85
|
+
else if (/Linux/.test(ua)) {
|
|
86
|
+
os.name = 'Linux';
|
|
87
|
+
}
|
|
88
|
+
return { browser, os };
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=pageContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageContext.js","sourceRoot":"","sources":["../../src/core/pageContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** The persisted-buffer budget. Exported so producers can size their own buffers against the budget
|
|
2
|
+
* their data has to survive, instead of guessing — see `MAX_BUFFER_BYTES` in the replay recorder,
|
|
3
|
+
* which was 3MB against this 2MB and so could never be persisted whole. */
|
|
4
|
+
export declare const PERSIST_MAX_BYTES = 2000000;
|
|
5
|
+
/** Keep only items younger than the max age (by getTime). Items with no timestamp are kept. */
|
|
6
|
+
export declare function freshOnly<T>(items: T[], getTime: (it: T) => number | undefined, nowMs: number): T[];
|
|
7
|
+
/**
|
|
8
|
+
* Trim a queue to the persisted-byte budget.
|
|
9
|
+
*
|
|
10
|
+
* Sheds the OLDEST heavy (replay-frame) items until it fits, so what survives is the most recent
|
|
11
|
+
* replay plus every light item. Light telemetry is never traded for a frame: events, perf and
|
|
12
|
+
* network entries are two orders of magnitude smaller, so dropping them to keep a keyframe is a
|
|
13
|
+
* bad exchange in both directions.
|
|
14
|
+
*
|
|
15
|
+
* WHY THIS IS NOT `filter(not heavy)`:
|
|
16
|
+
* it used to be. One byte over budget removed EVERY frame in a single pass — keyframe included —
|
|
17
|
+
* while events/perf/network sailed through. That is precisely the failure signature measured on a
|
|
18
|
+
* live app: 44 of 164 sessions arrived complete in every other lane with not one frame stored
|
|
19
|
+
* (`npm run replay:diagnose`, the `missing` state). Its keyframes average 109 kB and reach 1.17 MB,
|
|
20
|
+
* and `persistQueue()` runs on every pagehide AND every failed flush, so a single transient 500
|
|
21
|
+
* mid-session was enough to discard a whole session's replay.
|
|
22
|
+
*
|
|
23
|
+
* `isBase` marks a keyframe. A delta whose keyframe was shed reconstructs nothing, so it goes too —
|
|
24
|
+
* storing it would only convert a `missing` session into an `orphaned` one, which is no better and
|
|
25
|
+
* costs bytes to find out.
|
|
26
|
+
*
|
|
27
|
+
* Always returns a fresh array (a synchronous snapshot) so the async IDB write can't capture a
|
|
28
|
+
* reference that a concurrent flush() splices out from under it (pagehide save-vs-flush race).
|
|
29
|
+
*/
|
|
30
|
+
export declare function capBytes<T>(items: T[], isHeavy?: (it: T) => boolean, isBase?: (it: T) => boolean): T[];
|
|
31
|
+
//# sourceMappingURL=prune.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../src/core/prune.ts"],"names":[],"mappings":"AAWA;;4EAE4E;AAC5E,eAAO,MAAM,iBAAiB,UAAY,CAAC;AAO3C,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAKnG;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,EAAE,CAuDtG"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounds for the PERSISTED egress buffer (IndexedDB), shared by both lanes. Keeps unsent data
|
|
3
|
+
* durable without letting it grow unbounded or replay data the app sat on for days. Zero deps.
|
|
4
|
+
*
|
|
5
|
+
* - freshOnly: applied when DRAINING — drop items older than the max age so a reload doesn't replay
|
|
6
|
+
* stale data.
|
|
7
|
+
* - capBytes: applied when SAVING — trim to a byte budget (shed heavy replay frames first, then
|
|
8
|
+
* oldest) so a few large frames can't blow the IndexedDB quota.
|
|
9
|
+
*/
|
|
10
|
+
const MAX_AGE_MS = 24 * 60 * 60 * 1000; // 24h
|
|
11
|
+
/** The persisted-buffer budget. Exported so producers can size their own buffers against the budget
|
|
12
|
+
* their data has to survive, instead of guessing — see `MAX_BUFFER_BYTES` in the replay recorder,
|
|
13
|
+
* which was 3MB against this 2MB and so could never be persisted whole. */
|
|
14
|
+
export const PERSIST_MAX_BYTES = 2000000; // ~2MB — well under typical IndexedDB quotas
|
|
15
|
+
/** Per-item cost, +1 for the separating comma. Summed once instead of re-stringifying the whole
|
|
16
|
+
* array per drop: the old shed loop was O(n) full stringifies, which on a 1000-item queue holding
|
|
17
|
+
* MB-scale keyframes is real main-thread time — spent on `pagehide`, of all moments. */
|
|
18
|
+
const itemSize = (it) => JSON.stringify(it).length + 1;
|
|
19
|
+
/** Keep only items younger than the max age (by getTime). Items with no timestamp are kept. */
|
|
20
|
+
export function freshOnly(items, getTime, nowMs) {
|
|
21
|
+
return items.filter((it) => {
|
|
22
|
+
const t = getTime(it);
|
|
23
|
+
return t == null || nowMs - t <= MAX_AGE_MS;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Trim a queue to the persisted-byte budget.
|
|
28
|
+
*
|
|
29
|
+
* Sheds the OLDEST heavy (replay-frame) items until it fits, so what survives is the most recent
|
|
30
|
+
* replay plus every light item. Light telemetry is never traded for a frame: events, perf and
|
|
31
|
+
* network entries are two orders of magnitude smaller, so dropping them to keep a keyframe is a
|
|
32
|
+
* bad exchange in both directions.
|
|
33
|
+
*
|
|
34
|
+
* WHY THIS IS NOT `filter(not heavy)`:
|
|
35
|
+
* it used to be. One byte over budget removed EVERY frame in a single pass — keyframe included —
|
|
36
|
+
* while events/perf/network sailed through. That is precisely the failure signature measured on a
|
|
37
|
+
* live app: 44 of 164 sessions arrived complete in every other lane with not one frame stored
|
|
38
|
+
* (`npm run replay:diagnose`, the `missing` state). Its keyframes average 109 kB and reach 1.17 MB,
|
|
39
|
+
* and `persistQueue()` runs on every pagehide AND every failed flush, so a single transient 500
|
|
40
|
+
* mid-session was enough to discard a whole session's replay.
|
|
41
|
+
*
|
|
42
|
+
* `isBase` marks a keyframe. A delta whose keyframe was shed reconstructs nothing, so it goes too —
|
|
43
|
+
* storing it would only convert a `missing` session into an `orphaned` one, which is no better and
|
|
44
|
+
* costs bytes to find out.
|
|
45
|
+
*
|
|
46
|
+
* Always returns a fresh array (a synchronous snapshot) so the async IDB write can't capture a
|
|
47
|
+
* reference that a concurrent flush() splices out from under it (pagehide save-vs-flush race).
|
|
48
|
+
*/
|
|
49
|
+
export function capBytes(items, isHeavy, isBase) {
|
|
50
|
+
const rows = items.map((it) => ({ it, n: itemSize(it), gone: false }));
|
|
51
|
+
let total = rows.reduce((a, r) => a + r.n, 0);
|
|
52
|
+
if (total <= PERSIST_MAX_BYTES)
|
|
53
|
+
return items.slice();
|
|
54
|
+
// Oldest-first over whatever `pick` selects, stopping the moment the budget is met.
|
|
55
|
+
const shed = (pick) => {
|
|
56
|
+
for (const r of rows) {
|
|
57
|
+
if (total <= PERSIST_MAX_BYTES)
|
|
58
|
+
return;
|
|
59
|
+
if (r.gone || !pick(r.it))
|
|
60
|
+
continue;
|
|
61
|
+
r.gone = true;
|
|
62
|
+
total -= r.n;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Pass 1 — frames, oldest first, BUT never the last surviving keyframe.
|
|
67
|
+
*
|
|
68
|
+
* Oldest-first alone is right whenever two segments exist: dropping the older base (and, via pass 3,
|
|
69
|
+
* its orphaned deltas) leaves a recent replay that still has motion, which beats keeping two static
|
|
70
|
+
* snapshots. That policy is preserved exactly.
|
|
71
|
+
*
|
|
72
|
+
* It breaks on the SINGLE-segment case. Early in a session there is one keyframe with deltas behind
|
|
73
|
+
* it; oldest-first sheds the base first, pass 3 then correctly drops the orphaned deltas, and the
|
|
74
|
+
* whole replay is gone — where shedding the deltas would have left a playable single-frame replay.
|
|
75
|
+
* That is the early/short session that dominates the `missing` bucket, and `persistQueue()` runs on
|
|
76
|
+
* every pagehide and every failed flush, so a visitor simply leaving is enough to reach it.
|
|
77
|
+
*
|
|
78
|
+
* The guard is "more than one keyframe left", not "is this the first": after the older bases have
|
|
79
|
+
* gone the survivor becomes protected in turn, so the rule needs no lookahead and cannot strand a
|
|
80
|
+
* session with deltas and no base.
|
|
81
|
+
*/
|
|
82
|
+
if (isHeavy && isBase) {
|
|
83
|
+
let basesLeft = rows.reduce((n, r) => n + (isBase(r.it) ? 1 : 0), 0);
|
|
84
|
+
for (const r of rows) {
|
|
85
|
+
if (total <= PERSIST_MAX_BYTES)
|
|
86
|
+
break;
|
|
87
|
+
if (r.gone || !isHeavy(r.it))
|
|
88
|
+
continue;
|
|
89
|
+
const isTheBase = isBase(r.it);
|
|
90
|
+
if (isTheBase && basesLeft <= 1)
|
|
91
|
+
continue; // the last thing that makes any of this playable
|
|
92
|
+
r.gone = true;
|
|
93
|
+
total -= r.n;
|
|
94
|
+
if (isTheBase)
|
|
95
|
+
basesLeft--;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if (isHeavy) {
|
|
99
|
+
shed(isHeavy); // no base predicate — nothing to protect, old behaviour
|
|
100
|
+
}
|
|
101
|
+
// Pass 2 — light items alone still over budget, or a lone keyframe that cannot fit on its own. This
|
|
102
|
+
// is the genuine last resort and may take the protected base with it; at that point there is no
|
|
103
|
+
// playable replay to save either way.
|
|
104
|
+
shed(() => true);
|
|
105
|
+
const kept = rows.filter((r) => !r.gone).map((r) => r.it);
|
|
106
|
+
if (!isHeavy || !isBase)
|
|
107
|
+
return kept;
|
|
108
|
+
// Pass 3 — drop deltas left with no keyframe ahead of them.
|
|
109
|
+
let based = false;
|
|
110
|
+
return kept.filter((it) => (!isHeavy(it) ? true : isBase(it) ? ((based = true), true) : based));
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=prune.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prune.js","sourceRoot":"","sources":["../../src/core/prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM;AAE9C;;4EAE4E;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAS,CAAC,CAAC,6CAA6C;AAEzF;;yFAEyF;AACzF,MAAM,QAAQ,GAAG,CAAC,EAAW,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAExE,+FAA+F;AAC/F,MAAM,UAAU,SAAS,CAAI,KAAU,EAAE,OAAsC,EAAE,KAAa;IAC5F,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,QAAQ,CAAI,KAAU,EAAE,OAA4B,EAAE,MAA2B;IAC/F,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,KAAK,IAAI,iBAAiB;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IAErD,oFAAoF;IACpF,MAAM,IAAI,GAAG,CAAC,IAAwB,EAAQ,EAAE;QAC9C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,KAAK,IAAI,iBAAiB;gBAAE,OAAO;YACvC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,SAAS;YACpC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;YACd,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,KAAK,IAAI,iBAAiB;gBAAE,MAAM;YACtC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,SAAS;YACvC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,SAAS,IAAI,SAAS,IAAI,CAAC;gBAAE,SAAS,CAAC,iDAAiD;YAC5F,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;YACd,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,IAAI,SAAS;gBAAE,SAAS,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,wDAAwD;IACzE,CAAC;IACD,oGAAoG;IACpG,gGAAgG;IAChG,sCAAsC;IACtC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACrC,4DAA4D;IAC5D,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClG,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared text redaction. A minimal, dependency-free scrub used by features that ship free-text
|
|
3
|
+
* (errors, console) so they never drift. Deliberately light — strips the obvious PII/secrets that
|
|
4
|
+
* must never leave the client by default; a full redaction policy can deepen later. The network
|
|
5
|
+
* feature has its own structured (header/body) denylist; this is for human-readable strings.
|
|
6
|
+
*/
|
|
7
|
+
/** Strip obvious emails + long opaque tokens from a free-text string. */
|
|
8
|
+
export declare function scrubText(msg: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Scrub PII/secrets from a structured props object (analytics `track()` props, super-properties).
|
|
11
|
+
* Denylisted KEYS → fully redacted; string VALUES → emails + long digit runs stripped. Bounded
|
|
12
|
+
* depth/breadth (cycle- & blowup-safe); returns a NEW value, never mutates the caller's object.
|
|
13
|
+
*/
|
|
14
|
+
export declare function scrubProps<T>(value: T, depth?: number): T;
|
|
15
|
+
//# sourceMappingURL=redact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/core/redact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7C;AA+BD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,SAAI,GAAG,CAAC,CAsBpD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared text redaction. A minimal, dependency-free scrub used by features that ship free-text
|
|
3
|
+
* (errors, console) so they never drift. Deliberately light — strips the obvious PII/secrets that
|
|
4
|
+
* must never leave the client by default; a full redaction policy can deepen later. The network
|
|
5
|
+
* feature has its own structured (header/body) denylist; this is for human-readable strings.
|
|
6
|
+
*/
|
|
7
|
+
/** Strip obvious emails + long opaque tokens from a free-text string. */
|
|
8
|
+
export function scrubText(msg) {
|
|
9
|
+
return msg
|
|
10
|
+
.replace(/[\w.+-]+@[\w-]+\.[\w.-]+/g, '[email]')
|
|
11
|
+
.replace(/\b[A-Za-z0-9_-]{24,}\b/g, '[token]');
|
|
12
|
+
}
|
|
13
|
+
// A3 — structured-props PII scrub. Keys matching secrets are fully redacted; string values lose
|
|
14
|
+
// emails + long digit runs (cards/SSNs/phones). Intentionally does NOT apply scrubText's aggressive
|
|
15
|
+
// 24+ token rule — that would nuke legitimate ids/uuids that belong in analytics properties.
|
|
16
|
+
const PII_KEY = /pass(word|wd)?|secret|token|api[_-]?key|authorization|auth|ssn|social|credit|card[_-]?(number|num)|cardnum|cvv|cvc/i;
|
|
17
|
+
const EMAIL_RE = /[\w.+-]+@[\w-]+\.[\w.-]+/g;
|
|
18
|
+
const LONGNUM_RE = /\b\d[\d -]{11,18}\d\b/g; // 13–20 digit sequences
|
|
19
|
+
/**
|
|
20
|
+
* Keys whose value is set by the ADVERTISER in their own ad URL, never typed by a person.
|
|
21
|
+
*
|
|
22
|
+
* Meta and TikTok pass numeric campaign / adset / ad ids through `utm_campaign`, `utm_content` and
|
|
23
|
+
* `utm_term` — 15–18 digits, which `LONGNUM_RE` cannot tell apart from a card or phone number. It
|
|
24
|
+
* replaced them, so every paid visit arrived carrying `campaign: '[redacted]'` and the ad's identity
|
|
25
|
+
* was destroyed in the browser, before the event was ever sent. Measured on production before this
|
|
26
|
+
* was fixed: 47,066 events on one site since 2026-07-25, ~2,300 a day, its largest paid channel —
|
|
27
|
+
* unrecoverable, because nothing server-side ever saw the original value.
|
|
28
|
+
*
|
|
29
|
+
* These keys are exempt from the DIGIT rule only. The `PII_KEY` denylist still redacts them whole if
|
|
30
|
+
* one is ever named like a secret, emails in them are still stripped, and every other property keeps
|
|
31
|
+
* `LONGNUM_RE` — which is what protects a genuine `phone` or `card_number` prop.
|
|
32
|
+
*
|
|
33
|
+
* Click ids (`gclid`, `fbclid`, …) need no exemption: their values are alphanumeric, so the digit
|
|
34
|
+
* rule never matched them. Left out on purpose rather than carried as dead bytes.
|
|
35
|
+
*/
|
|
36
|
+
const AD_PARAM_KEY = /^utm_/i;
|
|
37
|
+
function scrubValue(v) {
|
|
38
|
+
return v.replace(EMAIL_RE, '[email]').replace(LONGNUM_RE, '[redacted]');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Scrub PII/secrets from a structured props object (analytics `track()` props, super-properties).
|
|
42
|
+
* Denylisted KEYS → fully redacted; string VALUES → emails + long digit runs stripped. Bounded
|
|
43
|
+
* depth/breadth (cycle- & blowup-safe); returns a NEW value, never mutates the caller's object.
|
|
44
|
+
*/
|
|
45
|
+
export function scrubProps(value, depth = 0) {
|
|
46
|
+
if (value == null || depth > 4)
|
|
47
|
+
return value;
|
|
48
|
+
if (typeof value === 'string')
|
|
49
|
+
return scrubValue(value);
|
|
50
|
+
if (Array.isArray(value)) {
|
|
51
|
+
return value.slice(0, 1000).map((v) => scrubProps(v, depth + 1));
|
|
52
|
+
}
|
|
53
|
+
if (typeof value === 'object') {
|
|
54
|
+
const out = {};
|
|
55
|
+
let n = 0;
|
|
56
|
+
for (const k in value) {
|
|
57
|
+
if (n++ > 200)
|
|
58
|
+
break;
|
|
59
|
+
if (!Object.prototype.hasOwnProperty.call(value, k))
|
|
60
|
+
continue;
|
|
61
|
+
const v = value[k];
|
|
62
|
+
out[k] = PII_KEY.test(k)
|
|
63
|
+
? '[redacted]'
|
|
64
|
+
: AD_PARAM_KEY.test(k) && typeof v === 'string'
|
|
65
|
+
? v.replace(EMAIL_RE, '[email]')
|
|
66
|
+
: scrubProps(v, depth + 1);
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
return value;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=redact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/core/redact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yEAAyE;AACzE,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,OAAO,CAAC,2BAA2B,EAAE,SAAS,CAAC;SAC/C,OAAO,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,gGAAgG;AAChG,oGAAoG;AACpG,6FAA6F;AAC7F,MAAM,OAAO,GAAG,qHAAqH,CAAC;AACtI,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAC7C,MAAM,UAAU,GAAG,wBAAwB,CAAC,CAAC,wBAAwB;AACrE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,YAAY,GAAG,QAAQ,CAAC;AAE9B,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAI,KAAQ,EAAE,KAAK,GAAG,CAAC;IAC/C,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC,KAAK,CAAiB,CAAC;IACxE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAiB,CAAC;IACnF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,KAAgC,EAAE,CAAC;YACjD,IAAI,CAAC,EAAE,GAAG,GAAG;gBAAE,MAAM;YACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC9D,MAAM,CAAC,GAAI,KAAiC,CAAC,CAAC,CAAC,CAAC;YAChD,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAC7C,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC;oBAChC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,GAAmB,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replay coordinate tracking (M5) — the ScaleBun differentiator: stamp each error with WHERE the
|
|
3
|
+
* session replay was when it fired, so the dashboard can deep-link the player to the exact frame
|
|
4
|
+
* (not just "open the session"). Competitors link error↔session; we link error↔frame.
|
|
5
|
+
*
|
|
6
|
+
* Zero new coupling: replay frame items already flow through the bootstrap emit boundary, so we just
|
|
7
|
+
* remember the latest frame's `seq` + the current segment (last keyframe's id) as they pass. Errors
|
|
8
|
+
* read it at capture time. Cheap (a kind-check + two assignments) so it's safe on the streaming path.
|
|
9
|
+
*/
|
|
10
|
+
import type { Item } from '@scalebun/protocol';
|
|
11
|
+
export interface ReplayCoord {
|
|
12
|
+
/** Monotonic frame sequence at error time — the player seeks here. */
|
|
13
|
+
seq?: number;
|
|
14
|
+
/** Current segment = the last keyframe's id (segment-aware seeking). */
|
|
15
|
+
segmentId?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Note a frame as it passes the emit boundary (no-op for non-frame items). */
|
|
18
|
+
export declare function noteReplayFrame(item: Item): void;
|
|
19
|
+
/** The current replay coordinate, or undefined when replay isn't producing frames. */
|
|
20
|
+
export declare function getReplayCoord(): ReplayCoord | undefined;
|
|
21
|
+
export declare function clearReplayCoord(): void;
|
|
22
|
+
//# sourceMappingURL=replayCoord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replayCoord.d.ts","sourceRoot":"","sources":["../../src/core/replayCoord.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAIhD;AAED,sFAAsF;AACtF,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAExD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
let seq;
|
|
2
|
+
let segmentId;
|
|
3
|
+
/** Note a frame as it passes the emit boundary (no-op for non-frame items). */
|
|
4
|
+
export function noteReplayFrame(item) {
|
|
5
|
+
if (item.kind !== 'frame')
|
|
6
|
+
return;
|
|
7
|
+
if (typeof item.seq === 'number')
|
|
8
|
+
seq = item.seq;
|
|
9
|
+
if (item.frameType === 'keyframe' && item.frameId)
|
|
10
|
+
segmentId = item.frameId;
|
|
11
|
+
}
|
|
12
|
+
/** The current replay coordinate, or undefined when replay isn't producing frames. */
|
|
13
|
+
export function getReplayCoord() {
|
|
14
|
+
return seq != null || segmentId != null ? { seq, segmentId } : undefined;
|
|
15
|
+
}
|
|
16
|
+
export function clearReplayCoord() {
|
|
17
|
+
seq = undefined;
|
|
18
|
+
segmentId = undefined;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=replayCoord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replayCoord.js","sourceRoot":"","sources":["../../src/core/replayCoord.ts"],"names":[],"mappings":"AAkBA,IAAI,GAAuB,CAAC;AAC5B,IAAI,SAA6B,CAAC;AAElC,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO;IAClC,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;QAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACjD,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO;QAAE,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9E,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,cAAc;IAC5B,OAAO,GAAG,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,GAAG,GAAG,SAAS,CAAC;IAChB,SAAS,GAAG,SAAS,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared retry primitives for the egress lanes (session pipeline + analytics /batch). Zero deps.
|
|
3
|
+
*
|
|
4
|
+
* - Exponential backoff with full jitter so a struggling/offline server isn't hit every flush tick.
|
|
5
|
+
* - Tiny online helpers so a reconnect flushes immediately instead of waiting for the next tick.
|
|
6
|
+
*
|
|
7
|
+
* Applied to the AUTO (timer/reconnect-driven) flush only; explicit/keepalive flushes still attempt
|
|
8
|
+
* unconditionally so ScaleBun.flush() and page-hide sends are never gated.
|
|
9
|
+
*/
|
|
10
|
+
/** navigator.onLine is false ONLY when the browser is sure it's offline; treat unknown as online. */
|
|
11
|
+
export declare function isOnline(): boolean;
|
|
12
|
+
/** Subscribe to the browser regaining connectivity. Returns an unsubscribe (no-op when off-DOM). */
|
|
13
|
+
export declare function onOnline(cb: () => void): () => void;
|
|
14
|
+
/** Exponential backoff (1s base → 30s cap, full jitter). Gates the auto-flush during an outage. */
|
|
15
|
+
export declare class Backoff {
|
|
16
|
+
private fails;
|
|
17
|
+
private nextAt;
|
|
18
|
+
/** True once the backoff window has elapsed and a send may be attempted. */
|
|
19
|
+
ready(nowMs: number): boolean;
|
|
20
|
+
/** Record a failed send → widen the window (capped, full jitter de-correlates retries). */
|
|
21
|
+
fail(nowMs: number): void;
|
|
22
|
+
/** Collapse the window so the next attempt fires immediately (on success or reconnect). */
|
|
23
|
+
reset(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/core/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,qGAAqG;AACrG,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED,oGAAoG;AACpG,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAInD;AAKD,mGAAmG;AACnG,qBAAa,OAAO;IAClB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;IAEnB,4EAA4E;IAC5E,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI7B,2FAA2F;IAC3F,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,2FAA2F;IAC3F,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared retry primitives for the egress lanes (session pipeline + analytics /batch). Zero deps.
|
|
3
|
+
*
|
|
4
|
+
* - Exponential backoff with full jitter so a struggling/offline server isn't hit every flush tick.
|
|
5
|
+
* - Tiny online helpers so a reconnect flushes immediately instead of waiting for the next tick.
|
|
6
|
+
*
|
|
7
|
+
* Applied to the AUTO (timer/reconnect-driven) flush only; explicit/keepalive flushes still attempt
|
|
8
|
+
* unconditionally so ScaleBun.flush() and page-hide sends are never gated.
|
|
9
|
+
*/
|
|
10
|
+
/** navigator.onLine is false ONLY when the browser is sure it's offline; treat unknown as online. */
|
|
11
|
+
export function isOnline() {
|
|
12
|
+
return typeof navigator === 'undefined' || navigator.onLine !== false;
|
|
13
|
+
}
|
|
14
|
+
/** Subscribe to the browser regaining connectivity. Returns an unsubscribe (no-op when off-DOM). */
|
|
15
|
+
export function onOnline(cb) {
|
|
16
|
+
if (typeof window === 'undefined')
|
|
17
|
+
return () => { };
|
|
18
|
+
window.addEventListener('online', cb);
|
|
19
|
+
return () => window.removeEventListener('online', cb);
|
|
20
|
+
}
|
|
21
|
+
const BASE_MS = 1000;
|
|
22
|
+
const MAX_MS = 30000;
|
|
23
|
+
/** Exponential backoff (1s base → 30s cap, full jitter). Gates the auto-flush during an outage. */
|
|
24
|
+
export class Backoff {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.fails = 0;
|
|
27
|
+
this.nextAt = 0;
|
|
28
|
+
}
|
|
29
|
+
/** True once the backoff window has elapsed and a send may be attempted. */
|
|
30
|
+
ready(nowMs) {
|
|
31
|
+
return nowMs >= this.nextAt;
|
|
32
|
+
}
|
|
33
|
+
/** Record a failed send → widen the window (capped, full jitter de-correlates retries). */
|
|
34
|
+
fail(nowMs) {
|
|
35
|
+
const exp = Math.min(MAX_MS, BASE_MS * 2 ** this.fails++);
|
|
36
|
+
this.nextAt = nowMs + Math.random() * exp;
|
|
37
|
+
}
|
|
38
|
+
/** Collapse the window so the next attempt fires immediately (on success or reconnect). */
|
|
39
|
+
reset() {
|
|
40
|
+
this.fails = 0;
|
|
41
|
+
this.nextAt = 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/core/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,qGAAqG;AACrG,MAAM,UAAU,QAAQ;IACtB,OAAO,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC;AACxE,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,QAAQ,CAAC,EAAc;IACrC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IACnD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACtC,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,MAAM,GAAG,KAAK,CAAC;AAErB,mGAAmG;AACnG,MAAM,OAAO,OAAO;IAApB;QACU,UAAK,GAAG,CAAC,CAAC;QACV,WAAM,GAAG,CAAC,CAAC;IAkBrB,CAAC;IAhBC,4EAA4E;IAC5E,KAAK,CAAC,KAAa;QACjB,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,2FAA2F;IAC3F,IAAI,CAAC,KAAa;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;IAC5C,CAAC;IAED,2FAA2F;IAC3F,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core/runtime.ts — the ONE place the SDK decides which JavaScript runtime it is executing in.
|
|
3
|
+
*
|
|
4
|
+
* Replaces scattered `typeof window !== 'undefined'` checks with a single, memoized detection so every
|
|
5
|
+
* feature can reason about the ENVIRONMENT (browser / SSR-node / edge / worker) instead of probing
|
|
6
|
+
* globals ad-hoc. Import-safe: detection is LAZY (first call), so importing this module touches no
|
|
7
|
+
* global. Conservative: anything not confidently a browser is treated as a server, so the SDK never
|
|
8
|
+
* runs DOM code in an ambiguous runtime.
|
|
9
|
+
*
|
|
10
|
+
* Nothing consumes this yet (P0 foundation) — `init()`/features wire into it in later phases.
|
|
11
|
+
*/
|
|
12
|
+
export type Runtime = 'browser' | 'ssr-node' | 'edge' | 'worker' | 'unknown';
|
|
13
|
+
/** The current runtime, detected once and memoized. */
|
|
14
|
+
export declare function getRuntime(): Runtime;
|
|
15
|
+
/** True only in a real browser (DOM present). Everything else is a server-side runtime. */
|
|
16
|
+
export declare function isBrowser(): boolean;
|
|
17
|
+
/** True on any non-browser runtime (SSR-node, edge, worker, unknown). */
|
|
18
|
+
export declare function isServer(): boolean;
|
|
19
|
+
/** True on an edge / WinterCG runtime (Vercel Edge, Cloudflare Workers). */
|
|
20
|
+
export declare function isEdge(): boolean;
|
|
21
|
+
/** Test-only: clear the memoized runtime so a suite can re-detect under mocked globals. */
|
|
22
|
+
export declare function __resetRuntimeForTests(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Test-only: force the runtime, bypassing detection. Lets node-based integration suites (real `fetch`
|
|
25
|
+
* + a local http server) drive the browser `init()` path without a DOM. Pair with `__resetRuntimeForTests`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function __setRuntimeForTests(rt: Runtime): void;
|
|
28
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAmC7E,uDAAuD;AACvD,wBAAgB,UAAU,IAAI,OAAO,CAGpC;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED,4EAA4E;AAC5E,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAED,2FAA2F;AAC3F,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAEtD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core/runtime.ts — the ONE place the SDK decides which JavaScript runtime it is executing in.
|
|
3
|
+
*
|
|
4
|
+
* Replaces scattered `typeof window !== 'undefined'` checks with a single, memoized detection so every
|
|
5
|
+
* feature can reason about the ENVIRONMENT (browser / SSR-node / edge / worker) instead of probing
|
|
6
|
+
* globals ad-hoc. Import-safe: detection is LAZY (first call), so importing this module touches no
|
|
7
|
+
* global. Conservative: anything not confidently a browser is treated as a server, so the SDK never
|
|
8
|
+
* runs DOM code in an ambiguous runtime.
|
|
9
|
+
*
|
|
10
|
+
* Nothing consumes this yet (P0 foundation) — `init()`/features wire into it in later phases.
|
|
11
|
+
*/
|
|
12
|
+
let cached = null;
|
|
13
|
+
function detect() {
|
|
14
|
+
const g = globalThis;
|
|
15
|
+
// Browser: a real DOM (document) + window. The only runtime that runs the full capture pipeline.
|
|
16
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined')
|
|
17
|
+
return 'browser';
|
|
18
|
+
// Edge / WinterCG (Vercel Edge, Cloudflare Workers) — no DOM, fetch present. Checked before the
|
|
19
|
+
// worker heuristic so a CF Worker classifies as 'edge', not 'worker'.
|
|
20
|
+
const nav = g.navigator;
|
|
21
|
+
const caches = g.caches;
|
|
22
|
+
if (typeof g.EdgeRuntime !== 'undefined' ||
|
|
23
|
+
nav?.userAgent === 'Cloudflare-Workers' ||
|
|
24
|
+
typeof g.WebSocketPair !== 'undefined' ||
|
|
25
|
+
(caches !== undefined && typeof caches.default !== 'undefined')) {
|
|
26
|
+
return 'edge';
|
|
27
|
+
}
|
|
28
|
+
// Dedicated / service worker (worker global scope; no document).
|
|
29
|
+
if (typeof g.importScripts === 'function' || typeof g.ServiceWorkerGlobalScope !== 'undefined') {
|
|
30
|
+
return 'worker';
|
|
31
|
+
}
|
|
32
|
+
// Node SSR (Next SSR/RSC/SSG/ISR, Node servers).
|
|
33
|
+
const proc = g.process;
|
|
34
|
+
if (proc?.versions?.node)
|
|
35
|
+
return 'ssr-node';
|
|
36
|
+
return 'unknown';
|
|
37
|
+
}
|
|
38
|
+
/** The current runtime, detected once and memoized. */
|
|
39
|
+
export function getRuntime() {
|
|
40
|
+
if (cached === null)
|
|
41
|
+
cached = detect();
|
|
42
|
+
return cached;
|
|
43
|
+
}
|
|
44
|
+
/** True only in a real browser (DOM present). Everything else is a server-side runtime. */
|
|
45
|
+
export function isBrowser() {
|
|
46
|
+
return getRuntime() === 'browser';
|
|
47
|
+
}
|
|
48
|
+
/** True on any non-browser runtime (SSR-node, edge, worker, unknown). */
|
|
49
|
+
export function isServer() {
|
|
50
|
+
return !isBrowser();
|
|
51
|
+
}
|
|
52
|
+
/** True on an edge / WinterCG runtime (Vercel Edge, Cloudflare Workers). */
|
|
53
|
+
export function isEdge() {
|
|
54
|
+
return getRuntime() === 'edge';
|
|
55
|
+
}
|
|
56
|
+
/** Test-only: clear the memoized runtime so a suite can re-detect under mocked globals. */
|
|
57
|
+
export function __resetRuntimeForTests() {
|
|
58
|
+
cached = null;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Test-only: force the runtime, bypassing detection. Lets node-based integration suites (real `fetch`
|
|
62
|
+
* + a local http server) drive the browser `init()` path without a DOM. Pair with `__resetRuntimeForTests`.
|
|
63
|
+
*/
|
|
64
|
+
export function __setRuntimeForTests(rt) {
|
|
65
|
+
cached = rt;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,IAAI,MAAM,GAAmB,IAAI,CAAC;AAElC,SAAS,MAAM;IACb,MAAM,CAAC,GAAG,UAAqC,CAAC;IAEhD,iGAAiG;IACjG,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAEvF,gGAAgG;IAChG,sEAAsE;IACtE,MAAM,GAAG,GAAG,CAAC,CAAC,SAA+C,CAAC;IAC9D,MAAM,MAAM,GAAG,CAAC,CAAC,MAA2C,CAAC;IAC7D,IACE,OAAO,CAAC,CAAC,WAAW,KAAK,WAAW;QACpC,GAAG,EAAE,SAAS,KAAK,oBAAoB;QACvC,OAAO,CAAC,CAAC,aAAa,KAAK,WAAW;QACtC,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW,CAAC,EAC/D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iEAAiE;IACjE,IAAI,OAAO,CAAC,CAAC,aAAa,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,wBAAwB,KAAK,WAAW,EAAE,CAAC;QAC/F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,iDAAiD;IACjD,MAAM,IAAI,GAAG,CAAC,CAAC,OAAuD,CAAC;IACvE,IAAI,IAAI,EAAE,QAAQ,EAAE,IAAI;QAAE,OAAO,UAAU,CAAC;IAE5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,UAAU;IACxB,IAAI,MAAM,KAAK,IAAI;QAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,SAAS;IACvB,OAAO,UAAU,EAAE,KAAK,SAAS,CAAC;AACpC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,SAAS,EAAE,CAAC;AACtB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,MAAM;IACpB,OAAO,UAAU,EAAE,KAAK,MAAM,CAAC;AACjC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAW;IAC9C,MAAM,GAAG,EAAE,CAAC;AACd,CAAC"}
|