@scalebun/web 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/bootstrap/FeatureRegistry.d.ts +44 -0
- package/dist/bootstrap/FeatureRegistry.d.ts.map +1 -0
- package/dist/bootstrap/FeatureRegistry.js +85 -0
- package/dist/bootstrap/FeatureRegistry.js.map +1 -0
- package/dist/bootstrap/SDKBootstrapper.d.ts +37 -0
- package/dist/bootstrap/SDKBootstrapper.d.ts.map +1 -0
- package/dist/bootstrap/SDKBootstrapper.js +248 -0
- package/dist/bootstrap/SDKBootstrapper.js.map +1 -0
- package/dist/browser.d.ts +51 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +81 -0
- package/dist/browser.js.map +1 -0
- package/dist/config/schema.d.ts +108 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +95 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/breadcrumbs.d.ts +56 -0
- package/dist/core/breadcrumbs.d.ts.map +1 -0
- package/dist/core/breadcrumbs.js +141 -0
- package/dist/core/breadcrumbs.js.map +1 -0
- package/dist/core/capabilities.d.ts +38 -0
- package/dist/core/capabilities.d.ts.map +1 -0
- package/dist/core/capabilities.js +78 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/consent.d.ts +17 -0
- package/dist/core/consent.d.ts.map +1 -0
- package/dist/core/consent.js +38 -0
- package/dist/core/consent.js.map +1 -0
- package/dist/core/csp.d.ts +31 -0
- package/dist/core/csp.d.ts.map +1 -0
- package/dist/core/csp.js +74 -0
- package/dist/core/csp.js.map +1 -0
- package/dist/core/evalContext.d.ts +7 -0
- package/dist/core/evalContext.d.ts.map +1 -0
- package/dist/core/evalContext.js +22 -0
- package/dist/core/evalContext.js.map +1 -0
- package/dist/core/ids.d.ts +6 -0
- package/dist/core/ids.d.ts.map +1 -0
- package/dist/core/ids.js +35 -0
- package/dist/core/ids.js.map +1 -0
- package/dist/core/index.d.ts +15 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +15 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lifecycle.d.ts +4 -0
- package/dist/core/lifecycle.d.ts.map +1 -0
- package/dist/core/lifecycle.js +24 -0
- package/dist/core/lifecycle.js.map +1 -0
- package/dist/core/logger.d.ts +12 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +14 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/observe.d.ts +3 -0
- package/dist/core/observe.d.ts.map +1 -0
- package/dist/core/observe.js +22 -0
- package/dist/core/observe.js.map +1 -0
- package/dist/core/pageContext.d.ts +13 -0
- package/dist/core/pageContext.d.ts.map +1 -0
- package/dist/core/pageContext.js +73 -0
- package/dist/core/pageContext.js.map +1 -0
- package/dist/core/prune.d.ts +7 -0
- package/dist/core/prune.d.ts.map +1 -0
- package/dist/core/prune.js +31 -0
- package/dist/core/prune.js.map +1 -0
- package/dist/core/redact.d.ts +15 -0
- package/dist/core/redact.d.ts.map +1 -0
- package/dist/core/redact.js +50 -0
- package/dist/core/redact.js.map +1 -0
- package/dist/core/replayCoord.d.ts +22 -0
- package/dist/core/replayCoord.d.ts.map +1 -0
- package/dist/core/replayCoord.js +20 -0
- package/dist/core/replayCoord.js.map +1 -0
- package/dist/core/retry.d.ts +25 -0
- package/dist/core/retry.d.ts.map +1 -0
- package/dist/core/retry.js +44 -0
- package/dist/core/retry.js.map +1 -0
- package/dist/core/runtime.d.ts +28 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +67 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/scrollDepth.d.ts +48 -0
- package/dist/core/scrollDepth.d.ts.map +1 -0
- package/dist/core/scrollDepth.js +63 -0
- package/dist/core/scrollDepth.js.map +1 -0
- package/dist/debug/index.d.ts +6 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/index.js +2 -0
- package/dist/debug/index.js.map +1 -0
- package/dist/features/analytics/AnalyticsFeature.d.ts +122 -0
- package/dist/features/analytics/AnalyticsFeature.d.ts.map +1 -0
- package/dist/features/analytics/AnalyticsFeature.js +757 -0
- package/dist/features/analytics/AnalyticsFeature.js.map +1 -0
- package/dist/features/analytics/autocapture.d.ts +13 -0
- package/dist/features/analytics/autocapture.d.ts.map +1 -0
- package/dist/features/analytics/autocapture.js +398 -0
- package/dist/features/analytics/autocapture.js.map +1 -0
- package/dist/features/analytics/governance.d.ts +15 -0
- package/dist/features/analytics/governance.d.ts.map +1 -0
- package/dist/features/analytics/governance.js +30 -0
- package/dist/features/analytics/governance.js.map +1 -0
- package/dist/features/analytics/revenue.d.ts +38 -0
- package/dist/features/analytics/revenue.d.ts.map +1 -0
- package/dist/features/analytics/revenue.js +26 -0
- package/dist/features/analytics/revenue.js.map +1 -0
- package/dist/features/analytics/sampler.d.ts +2 -0
- package/dist/features/analytics/sampler.d.ts.map +1 -0
- package/dist/features/analytics/sampler.js +24 -0
- package/dist/features/analytics/sampler.js.map +1 -0
- package/dist/features/analytics/subscription.d.ts +25 -0
- package/dist/features/analytics/subscription.d.ts.map +1 -0
- package/dist/features/analytics/subscription.js +51 -0
- package/dist/features/analytics/subscription.js.map +1 -0
- package/dist/features/attention/index.d.ts +29 -0
- package/dist/features/attention/index.d.ts.map +1 -0
- package/dist/features/attention/index.js +128 -0
- package/dist/features/attention/index.js.map +1 -0
- package/dist/features/bugreport/BugReportFeature.d.ts +36 -0
- package/dist/features/bugreport/BugReportFeature.d.ts.map +1 -0
- package/dist/features/bugreport/BugReportFeature.js +55 -0
- package/dist/features/bugreport/BugReportFeature.js.map +1 -0
- package/dist/features/bugreport/collect.d.ts +21 -0
- package/dist/features/bugreport/collect.d.ts.map +1 -0
- package/dist/features/bugreport/collect.js +27 -0
- package/dist/features/bugreport/collect.js.map +1 -0
- package/dist/features/bugreport/widget.d.ts +21 -0
- package/dist/features/bugreport/widget.d.ts.map +1 -0
- package/dist/features/bugreport/widget.js +111 -0
- package/dist/features/bugreport/widget.js.map +1 -0
- package/dist/features/coach/CoachmarkFeature.d.ts +78 -0
- package/dist/features/coach/CoachmarkFeature.d.ts.map +1 -0
- package/dist/features/coach/CoachmarkFeature.js +161 -0
- package/dist/features/coach/CoachmarkFeature.js.map +1 -0
- package/dist/features/coach/anchor.d.ts +32 -0
- package/dist/features/coach/anchor.d.ts.map +1 -0
- package/dist/features/coach/anchor.js +128 -0
- package/dist/features/coach/anchor.js.map +1 -0
- package/dist/features/coach/observers.d.ts +17 -0
- package/dist/features/coach/observers.d.ts.map +1 -0
- package/dist/features/coach/observers.js +49 -0
- package/dist/features/coach/observers.js.map +1 -0
- package/dist/features/coach/overlay.d.ts +15 -0
- package/dist/features/coach/overlay.d.ts.map +1 -0
- package/dist/features/coach/overlay.js +183 -0
- package/dist/features/coach/overlay.js.map +1 -0
- package/dist/features/coach/position.d.ts +9 -0
- package/dist/features/coach/position.d.ts.map +1 -0
- package/dist/features/coach/position.js +83 -0
- package/dist/features/coach/position.js.map +1 -0
- package/dist/features/coach/predicate.d.ts +10 -0
- package/dist/features/coach/predicate.d.ts.map +1 -0
- package/dist/features/coach/predicate.js +36 -0
- package/dist/features/coach/predicate.js.map +1 -0
- package/dist/features/coach/tour.d.ts +55 -0
- package/dist/features/coach/tour.d.ts.map +1 -0
- package/dist/features/coach/tour.js +181 -0
- package/dist/features/coach/tour.js.map +1 -0
- package/dist/features/coach/types.d.ts +161 -0
- package/dist/features/coach/types.d.ts.map +1 -0
- package/dist/features/coach/types.js +2 -0
- package/dist/features/coach/types.js.map +1 -0
- package/dist/features/coach/wait.d.ts +34 -0
- package/dist/features/coach/wait.d.ts.map +1 -0
- package/dist/features/coach/wait.js +107 -0
- package/dist/features/coach/wait.js.map +1 -0
- package/dist/features/config/ConfigFeature.d.ts +117 -0
- package/dist/features/config/ConfigFeature.d.ts.map +1 -0
- package/dist/features/config/ConfigFeature.js +437 -0
- package/dist/features/config/ConfigFeature.js.map +1 -0
- package/dist/features/config/bucketing.d.ts +20 -0
- package/dist/features/config/bucketing.d.ts.map +1 -0
- package/dist/features/config/bucketing.js +37 -0
- package/dist/features/config/bucketing.js.map +1 -0
- package/dist/features/config/configStore.d.ts +11 -0
- package/dist/features/config/configStore.d.ts.map +1 -0
- package/dist/features/config/configStore.js +66 -0
- package/dist/features/config/configStore.js.map +1 -0
- package/dist/features/config/targeting.d.ts +11 -0
- package/dist/features/config/targeting.d.ts.map +1 -0
- package/dist/features/config/targeting.js +57 -0
- package/dist/features/config/targeting.js.map +1 -0
- package/dist/features/config/types.d.ts +100 -0
- package/dist/features/config/types.d.ts.map +1 -0
- package/dist/features/config/types.js +9 -0
- package/dist/features/config/types.js.map +1 -0
- package/dist/features/console/ConsoleFeature.d.ts +31 -0
- package/dist/features/console/ConsoleFeature.d.ts.map +1 -0
- package/dist/features/console/ConsoleFeature.js +98 -0
- package/dist/features/console/ConsoleFeature.js.map +1 -0
- package/dist/features/console/normalize.d.ts +18 -0
- package/dist/features/console/normalize.d.ts.map +1 -0
- package/dist/features/console/normalize.js +64 -0
- package/dist/features/console/normalize.js.map +1 -0
- package/dist/features/console/serialize.d.ts +24 -0
- package/dist/features/console/serialize.d.ts.map +1 -0
- package/dist/features/console/serialize.js +99 -0
- package/dist/features/console/serialize.js.map +1 -0
- package/dist/features/console/throttle.d.ts +27 -0
- package/dist/features/console/throttle.d.ts.map +1 -0
- package/dist/features/console/throttle.js +37 -0
- package/dist/features/console/throttle.js.map +1 -0
- package/dist/features/crash/CrashFeature.d.ts +46 -0
- package/dist/features/crash/CrashFeature.d.ts.map +1 -0
- package/dist/features/crash/CrashFeature.js +173 -0
- package/dist/features/crash/CrashFeature.js.map +1 -0
- package/dist/features/crash/liveness.d.ts +30 -0
- package/dist/features/crash/liveness.d.ts.map +1 -0
- package/dist/features/crash/liveness.js +131 -0
- package/dist/features/crash/liveness.js.map +1 -0
- package/dist/features/engage/EngageFeature.d.ts +61 -0
- package/dist/features/engage/EngageFeature.d.ts.map +1 -0
- package/dist/features/engage/EngageFeature.js +221 -0
- package/dist/features/engage/EngageFeature.js.map +1 -0
- package/dist/features/engage/attachments.d.ts +24 -0
- package/dist/features/engage/attachments.d.ts.map +1 -0
- package/dist/features/engage/attachments.js +209 -0
- package/dist/features/engage/attachments.js.map +1 -0
- package/dist/features/engage/gameLogic.d.ts +60 -0
- package/dist/features/engage/gameLogic.d.ts.map +1 -0
- package/dist/features/engage/gameLogic.js +213 -0
- package/dist/features/engage/gameLogic.js.map +1 -0
- package/dist/features/engage/gameResolver.d.ts +35 -0
- package/dist/features/engage/gameResolver.d.ts.map +1 -0
- package/dist/features/engage/gameResolver.js +81 -0
- package/dist/features/engage/gameResolver.js.map +1 -0
- package/dist/features/engage/gameTypes.d.ts +76 -0
- package/dist/features/engage/gameTypes.d.ts.map +1 -0
- package/dist/features/engage/gameTypes.js +17 -0
- package/dist/features/engage/gameTypes.js.map +1 -0
- package/dist/features/engage/inappSlots.d.ts +39 -0
- package/dist/features/engage/inappSlots.d.ts.map +1 -0
- package/dist/features/engage/inappSlots.js +50 -0
- package/dist/features/engage/inappSlots.js.map +1 -0
- package/dist/features/engage/normalize.d.ts +11 -0
- package/dist/features/engage/normalize.d.ts.map +1 -0
- package/dist/features/engage/normalize.js +203 -0
- package/dist/features/engage/normalize.js.map +1 -0
- package/dist/features/engage/richInApp.d.ts +64 -0
- package/dist/features/engage/richInApp.d.ts.map +1 -0
- package/dist/features/engage/richInApp.js +1082 -0
- package/dist/features/engage/richInApp.js.map +1 -0
- package/dist/features/engage/runtime.d.ts +78 -0
- package/dist/features/engage/runtime.d.ts.map +1 -0
- package/dist/features/engage/runtime.js +349 -0
- package/dist/features/engage/runtime.js.map +1 -0
- package/dist/features/engage/shakeDetector.d.ts +6 -0
- package/dist/features/engage/shakeDetector.d.ts.map +1 -0
- package/dist/features/engage/shakeDetector.js +105 -0
- package/dist/features/engage/shakeDetector.js.map +1 -0
- package/dist/features/engage/theme.d.ts +129 -0
- package/dist/features/engage/theme.d.ts.map +1 -0
- package/dist/features/engage/theme.js +270 -0
- package/dist/features/engage/theme.js.map +1 -0
- package/dist/features/engage/throttle.d.ts +31 -0
- package/dist/features/engage/throttle.d.ts.map +1 -0
- package/dist/features/engage/throttle.js +130 -0
- package/dist/features/engage/throttle.js.map +1 -0
- package/dist/features/engage/transport.d.ts +62 -0
- package/dist/features/engage/transport.d.ts.map +1 -0
- package/dist/features/engage/transport.js +185 -0
- package/dist/features/engage/transport.js.map +1 -0
- package/dist/features/engage/triggerEngine.d.ts +39 -0
- package/dist/features/engage/triggerEngine.d.ts.map +1 -0
- package/dist/features/engage/triggerEngine.js +105 -0
- package/dist/features/engage/triggerEngine.js.map +1 -0
- package/dist/features/engage/types.d.ts +265 -0
- package/dist/features/engage/types.d.ts.map +1 -0
- package/dist/features/engage/types.js +3 -0
- package/dist/features/engage/types.js.map +1 -0
- package/dist/features/engage/widget/InAppWidget.d.ts +10 -0
- package/dist/features/engage/widget/InAppWidget.d.ts.map +1 -0
- package/dist/features/engage/widget/InAppWidget.js +136 -0
- package/dist/features/engage/widget/InAppWidget.js.map +1 -0
- package/dist/features/engage/widget/SurveyWidget.d.ts +11 -0
- package/dist/features/engage/widget/SurveyWidget.d.ts.map +1 -0
- package/dist/features/engage/widget/SurveyWidget.js +546 -0
- package/dist/features/engage/widget/SurveyWidget.js.map +1 -0
- package/dist/features/errors/ErrorsFeature.d.ts +62 -0
- package/dist/features/errors/ErrorsFeature.d.ts.map +1 -0
- package/dist/features/errors/ErrorsFeature.js +209 -0
- package/dist/features/errors/ErrorsFeature.js.map +1 -0
- package/dist/features/errors/causes.d.ts +15 -0
- package/dist/features/errors/causes.d.ts.map +1 -0
- package/dist/features/errors/causes.js +29 -0
- package/dist/features/errors/causes.js.map +1 -0
- package/dist/features/errors/dedup.d.ts +28 -0
- package/dist/features/errors/dedup.d.ts.map +1 -0
- package/dist/features/errors/dedup.js +42 -0
- package/dist/features/errors/dedup.js.map +1 -0
- package/dist/features/errors/group/fingerprint.d.ts +13 -0
- package/dist/features/errors/group/fingerprint.d.ts.map +1 -0
- package/dist/features/errors/group/fingerprint.js +45 -0
- package/dist/features/errors/group/fingerprint.js.map +1 -0
- package/dist/features/errors/lazy.d.ts +8 -0
- package/dist/features/errors/lazy.d.ts.map +1 -0
- package/dist/features/errors/lazy.js +8 -0
- package/dist/features/errors/lazy.js.map +1 -0
- package/dist/features/errors/normalize.d.ts +26 -0
- package/dist/features/errors/normalize.d.ts.map +1 -0
- package/dist/features/errors/normalize.js +58 -0
- package/dist/features/errors/normalize.js.map +1 -0
- package/dist/features/errors/parse/stacktrace.d.ts +13 -0
- package/dist/features/errors/parse/stacktrace.d.ts.map +1 -0
- package/dist/features/errors/parse/stacktrace.js +85 -0
- package/dist/features/errors/parse/stacktrace.js.map +1 -0
- package/dist/features/errors/redact.d.ts +7 -0
- package/dist/features/errors/redact.d.ts.map +1 -0
- package/dist/features/errors/redact.js +39 -0
- package/dist/features/errors/redact.js.map +1 -0
- package/dist/features/errors/sampling.d.ts +2 -0
- package/dist/features/errors/sampling.d.ts.map +1 -0
- package/dist/features/errors/sampling.js +24 -0
- package/dist/features/errors/sampling.js.map +1 -0
- package/dist/features/errors/scope.d.ts +26 -0
- package/dist/features/errors/scope.d.ts.map +1 -0
- package/dist/features/errors/scope.js +30 -0
- package/dist/features/errors/scope.js.map +1 -0
- package/dist/features/exit-intent/ExitIntentFeature.d.ts +16 -0
- package/dist/features/exit-intent/ExitIntentFeature.d.ts.map +1 -0
- package/dist/features/exit-intent/ExitIntentFeature.js +25 -0
- package/dist/features/exit-intent/ExitIntentFeature.js.map +1 -0
- package/dist/features/exit-intent/engine.d.ts +127 -0
- package/dist/features/exit-intent/engine.d.ts.map +1 -0
- package/dist/features/exit-intent/engine.js +227 -0
- package/dist/features/exit-intent/engine.js.map +1 -0
- package/dist/features/forms/index.d.ts +83 -0
- package/dist/features/forms/index.d.ts.map +1 -0
- package/dist/features/forms/index.js +405 -0
- package/dist/features/forms/index.js.map +1 -0
- package/dist/features/inapp/InApp2Feature.d.ts +24 -0
- package/dist/features/inapp/InApp2Feature.d.ts.map +1 -0
- package/dist/features/inapp/InApp2Feature.js +43 -0
- package/dist/features/inapp/InApp2Feature.js.map +1 -0
- package/dist/features/inapp/a11y/focus.d.ts +24 -0
- package/dist/features/inapp/a11y/focus.d.ts.map +1 -0
- package/dist/features/inapp/a11y/focus.js +112 -0
- package/dist/features/inapp/a11y/focus.js.map +1 -0
- package/dist/features/inapp/anchor/controller.d.ts +64 -0
- package/dist/features/inapp/anchor/controller.d.ts.map +1 -0
- package/dist/features/inapp/anchor/controller.js +155 -0
- package/dist/features/inapp/anchor/controller.js.map +1 -0
- package/dist/features/inapp/api.d.ts +28 -0
- package/dist/features/inapp/api.d.ts.map +1 -0
- package/dist/features/inapp/api.js +41 -0
- package/dist/features/inapp/api.js.map +1 -0
- package/dist/features/inapp/blocks/blocks.d.ts +65 -0
- package/dist/features/inapp/blocks/blocks.d.ts.map +1 -0
- package/dist/features/inapp/blocks/blocks.js +196 -0
- package/dist/features/inapp/blocks/blocks.js.map +1 -0
- package/dist/features/inapp/blocks/feedback.d.ts +13 -0
- package/dist/features/inapp/blocks/feedback.d.ts.map +1 -0
- package/dist/features/inapp/blocks/feedback.js +154 -0
- package/dist/features/inapp/blocks/feedback.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/carousel.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/carousel.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/carousel.js +67 -0
- package/dist/features/inapp/blocks/heavy/carousel.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/chart.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/chart.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/chart.js +83 -0
- package/dist/features/inapp/blocks/heavy/chart.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/code.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/code.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/code.js +47 -0
- package/dist/features/inapp/blocks/heavy/code.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/confetti.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/confetti.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/confetti.js +76 -0
- package/dist/features/inapp/blocks/heavy/confetti.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/countdown.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/countdown.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/countdown.js +59 -0
- package/dist/features/inapp/blocks/heavy/countdown.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/index.d.ts +11 -0
- package/dist/features/inapp/blocks/heavy/index.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/index.js +45 -0
- package/dist/features/inapp/blocks/heavy/index.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/markdown.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/markdown.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/markdown.js +76 -0
- package/dist/features/inapp/blocks/heavy/markdown.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/productgrid.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/productgrid.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/productgrid.js +46 -0
- package/dist/features/inapp/blocks/heavy/productgrid.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/qr.d.ts +10 -0
- package/dist/features/inapp/blocks/heavy/qr.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/qr.js +69 -0
- package/dist/features/inapp/blocks/heavy/qr.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/scratch.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/scratch.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/scratch.js +141 -0
- package/dist/features/inapp/blocks/heavy/scratch.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/slot.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/slot.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/slot.js +96 -0
- package/dist/features/inapp/blocks/heavy/slot.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.js +127 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/steps.d.ts +27 -0
- package/dist/features/inapp/blocks/heavy/steps.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/steps.js +127 -0
- package/dist/features/inapp/blocks/heavy/steps.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/streak.d.ts +18 -0
- package/dist/features/inapp/blocks/heavy/streak.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/streak.js +52 -0
- package/dist/features/inapp/blocks/heavy/streak.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/table.d.ts +7 -0
- package/dist/features/inapp/blocks/heavy/table.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/table.js +30 -0
- package/dist/features/inapp/blocks/heavy/table.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/unavailable.d.ts +28 -0
- package/dist/features/inapp/blocks/heavy/unavailable.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/unavailable.js +33 -0
- package/dist/features/inapp/blocks/heavy/unavailable.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/video.d.ts +7 -0
- package/dist/features/inapp/blocks/heavy/video.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/video.js +38 -0
- package/dist/features/inapp/blocks/heavy/video.js.map +1 -0
- package/dist/features/inapp/blocks/styles.d.ts +7 -0
- package/dist/features/inapp/blocks/styles.d.ts.map +1 -0
- package/dist/features/inapp/blocks/styles.js +198 -0
- package/dist/features/inapp/blocks/styles.js.map +1 -0
- package/dist/features/inapp/center/bridge.d.ts +12 -0
- package/dist/features/inapp/center/bridge.d.ts.map +1 -0
- package/dist/features/inapp/center/bridge.js +59 -0
- package/dist/features/inapp/center/bridge.js.map +1 -0
- package/dist/features/inapp/center/panel.d.ts +20 -0
- package/dist/features/inapp/center/panel.d.ts.map +1 -0
- package/dist/features/inapp/center/panel.js +194 -0
- package/dist/features/inapp/center/panel.js.map +1 -0
- package/dist/features/inapp/center/store.d.ts +50 -0
- package/dist/features/inapp/center/store.d.ts.map +1 -0
- package/dist/features/inapp/center/store.js +188 -0
- package/dist/features/inapp/center/store.js.map +1 -0
- package/dist/features/inapp/center/sync.d.ts +32 -0
- package/dist/features/inapp/center/sync.d.ts.map +1 -0
- package/dist/features/inapp/center/sync.js +60 -0
- package/dist/features/inapp/center/sync.js.map +1 -0
- package/dist/features/inapp/center/types.d.ts +46 -0
- package/dist/features/inapp/center/types.d.ts.map +1 -0
- package/dist/features/inapp/center/types.js +5 -0
- package/dist/features/inapp/center/types.js.map +1 -0
- package/dist/features/inapp/core/analytics.d.ts +35 -0
- package/dist/features/inapp/core/analytics.d.ts.map +1 -0
- package/dist/features/inapp/core/analytics.js +70 -0
- package/dist/features/inapp/core/analytics.js.map +1 -0
- package/dist/features/inapp/core/compat.d.ts +28 -0
- package/dist/features/inapp/core/compat.d.ts.map +1 -0
- package/dist/features/inapp/core/compat.js +104 -0
- package/dist/features/inapp/core/compat.js.map +1 -0
- package/dist/features/inapp/core/debugOverlay.d.ts +5 -0
- package/dist/features/inapp/core/debugOverlay.d.ts.map +1 -0
- package/dist/features/inapp/core/debugOverlay.js +79 -0
- package/dist/features/inapp/core/debugOverlay.js.map +1 -0
- package/dist/features/inapp/core/engine.d.ts +70 -0
- package/dist/features/inapp/core/engine.d.ts.map +1 -0
- package/dist/features/inapp/core/engine.js +248 -0
- package/dist/features/inapp/core/engine.js.map +1 -0
- package/dist/features/inapp/core/environment.d.ts +21 -0
- package/dist/features/inapp/core/environment.d.ts.map +1 -0
- package/dist/features/inapp/core/environment.js +57 -0
- package/dist/features/inapp/core/environment.js.map +1 -0
- package/dist/features/inapp/core/host.d.ts +53 -0
- package/dist/features/inapp/core/host.d.ts.map +1 -0
- package/dist/features/inapp/core/host.js +239 -0
- package/dist/features/inapp/core/host.js.map +1 -0
- package/dist/features/inapp/core/keyboard.d.ts +27 -0
- package/dist/features/inapp/core/keyboard.d.ts.map +1 -0
- package/dist/features/inapp/core/keyboard.js +69 -0
- package/dist/features/inapp/core/keyboard.js.map +1 -0
- package/dist/features/inapp/core/metrics.d.ts +73 -0
- package/dist/features/inapp/core/metrics.d.ts.map +1 -0
- package/dist/features/inapp/core/metrics.js +125 -0
- package/dist/features/inapp/core/metrics.js.map +1 -0
- package/dist/features/inapp/core/migration.d.ts +32 -0
- package/dist/features/inapp/core/migration.d.ts.map +1 -0
- package/dist/features/inapp/core/migration.js +28 -0
- package/dist/features/inapp/core/migration.js.map +1 -0
- package/dist/features/inapp/core/orchestrator.d.ts +77 -0
- package/dist/features/inapp/core/orchestrator.d.ts.map +1 -0
- package/dist/features/inapp/core/orchestrator.js +144 -0
- package/dist/features/inapp/core/orchestrator.js.map +1 -0
- package/dist/features/inapp/core/respect.d.ts +51 -0
- package/dist/features/inapp/core/respect.d.ts.map +1 -0
- package/dist/features/inapp/core/respect.js +78 -0
- package/dist/features/inapp/core/respect.js.map +1 -0
- package/dist/features/inapp/core/slots.d.ts +19 -0
- package/dist/features/inapp/core/slots.d.ts.map +1 -0
- package/dist/features/inapp/core/slots.js +53 -0
- package/dist/features/inapp/core/slots.js.map +1 -0
- package/dist/features/inapp/core/targeting.d.ts +58 -0
- package/dist/features/inapp/core/targeting.d.ts.map +1 -0
- package/dist/features/inapp/core/targeting.js +181 -0
- package/dist/features/inapp/core/targeting.js.map +1 -0
- package/dist/features/inapp/core/transport.d.ts +66 -0
- package/dist/features/inapp/core/transport.d.ts.map +1 -0
- package/dist/features/inapp/core/transport.js +154 -0
- package/dist/features/inapp/core/transport.js.map +1 -0
- package/dist/features/inapp/core/triggers.d.ts +94 -0
- package/dist/features/inapp/core/triggers.d.ts.map +1 -0
- package/dist/features/inapp/core/triggers.js +368 -0
- package/dist/features/inapp/core/triggers.js.map +1 -0
- package/dist/features/inapp/inappContract.web.d.ts +47 -0
- package/dist/features/inapp/inappContract.web.d.ts.map +1 -0
- package/dist/features/inapp/inappContract.web.js +219 -0
- package/dist/features/inapp/inappContract.web.js.map +1 -0
- package/dist/features/inapp/index.d.ts +23 -0
- package/dist/features/inapp/index.d.ts.map +1 -0
- package/dist/features/inapp/index.js +23 -0
- package/dist/features/inapp/index.js.map +1 -0
- package/dist/features/inapp/registry.canonical.hash.d.ts +7 -0
- package/dist/features/inapp/registry.canonical.hash.d.ts.map +1 -0
- package/dist/features/inapp/registry.canonical.hash.js +7 -0
- package/dist/features/inapp/registry.canonical.hash.js.map +1 -0
- package/dist/features/inapp/registry.web.canonical.d.ts +21 -0
- package/dist/features/inapp/registry.web.canonical.d.ts.map +1 -0
- package/dist/features/inapp/registry.web.canonical.js +136 -0
- package/dist/features/inapp/registry.web.canonical.js.map +1 -0
- package/dist/features/inapp/registry.web.catalog.d.ts +12 -0
- package/dist/features/inapp/registry.web.catalog.d.ts.map +1 -0
- package/dist/features/inapp/registry.web.catalog.js +208 -0
- package/dist/features/inapp/registry.web.catalog.js.map +1 -0
- package/dist/features/inapp/surfaces/banner.d.ts +7 -0
- package/dist/features/inapp/surfaces/banner.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/banner.js +30 -0
- package/dist/features/inapp/surfaces/banner.js.map +1 -0
- package/dist/features/inapp/surfaces/checklist.d.ts +13 -0
- package/dist/features/inapp/surfaces/checklist.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/checklist.js +127 -0
- package/dist/features/inapp/surfaces/checklist.js.map +1 -0
- package/dist/features/inapp/surfaces/coachmark.d.ts +10 -0
- package/dist/features/inapp/surfaces/coachmark.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/coachmark.js +92 -0
- package/dist/features/inapp/surfaces/coachmark.js.map +1 -0
- package/dist/features/inapp/surfaces/hotspot.d.ts +8 -0
- package/dist/features/inapp/surfaces/hotspot.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/hotspot.js +88 -0
- package/dist/features/inapp/surfaces/hotspot.js.map +1 -0
- package/dist/features/inapp/surfaces/inline.d.ts +13 -0
- package/dist/features/inapp/surfaces/inline.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/inline.js +72 -0
- package/dist/features/inapp/surfaces/inline.js.map +1 -0
- package/dist/features/inapp/surfaces/launcher.d.ts +9 -0
- package/dist/features/inapp/surfaces/launcher.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/launcher.js +54 -0
- package/dist/features/inapp/surfaces/launcher.js.map +1 -0
- package/dist/features/inapp/surfaces/modal.d.ts +8 -0
- package/dist/features/inapp/surfaces/modal.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/modal.js +70 -0
- package/dist/features/inapp/surfaces/modal.js.map +1 -0
- package/dist/features/inapp/surfaces/mount.d.ts +19 -0
- package/dist/features/inapp/surfaces/mount.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/mount.js +29 -0
- package/dist/features/inapp/surfaces/mount.js.map +1 -0
- package/dist/features/inapp/surfaces/palette.d.ts +9 -0
- package/dist/features/inapp/surfaces/palette.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/palette.js +127 -0
- package/dist/features/inapp/surfaces/palette.js.map +1 -0
- package/dist/features/inapp/surfaces/panel.d.ts +14 -0
- package/dist/features/inapp/surfaces/panel.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/panel.js +91 -0
- package/dist/features/inapp/surfaces/panel.js.map +1 -0
- package/dist/features/inapp/surfaces/popover.d.ts +10 -0
- package/dist/features/inapp/surfaces/popover.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/popover.js +66 -0
- package/dist/features/inapp/surfaces/popover.js.map +1 -0
- package/dist/features/inapp/surfaces/render.d.ts +34 -0
- package/dist/features/inapp/surfaces/render.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/render.js +52 -0
- package/dist/features/inapp/surfaces/render.js.map +1 -0
- package/dist/features/inapp/surfaces/slideover.d.ts +9 -0
- package/dist/features/inapp/surfaces/slideover.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/slideover.js +144 -0
- package/dist/features/inapp/surfaces/slideover.js.map +1 -0
- package/dist/features/inapp/surfaces/styles.d.ts +7 -0
- package/dist/features/inapp/surfaces/styles.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/styles.js +186 -0
- package/dist/features/inapp/surfaces/styles.js.map +1 -0
- package/dist/features/inapp/surfaces/surface.d.ts +69 -0
- package/dist/features/inapp/surfaces/surface.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/surface.js +80 -0
- package/dist/features/inapp/surfaces/surface.js.map +1 -0
- package/dist/features/inapp/surfaces/takeover.d.ts +9 -0
- package/dist/features/inapp/surfaces/takeover.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/takeover.js +60 -0
- package/dist/features/inapp/surfaces/takeover.js.map +1 -0
- package/dist/features/inapp/surfaces/toast.d.ts +7 -0
- package/dist/features/inapp/surfaces/toast.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/toast.js +48 -0
- package/dist/features/inapp/surfaces/toast.js.map +1 -0
- package/dist/features/inapp/surfaces/toolbar.d.ts +8 -0
- package/dist/features/inapp/surfaces/toolbar.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/toolbar.js +62 -0
- package/dist/features/inapp/surfaces/toolbar.js.map +1 -0
- package/dist/features/inapp/surfaces/tour.d.ts +14 -0
- package/dist/features/inapp/surfaces/tour.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/tour.js +199 -0
- package/dist/features/inapp/surfaces/tour.js.map +1 -0
- package/dist/features/inapp/types.d.ts +163 -0
- package/dist/features/inapp/types.d.ts.map +1 -0
- package/dist/features/inapp/types.js +12 -0
- package/dist/features/inapp/types.js.map +1 -0
- package/dist/features/inbox/InboxFeature.d.ts +57 -0
- package/dist/features/inbox/InboxFeature.d.ts.map +1 -0
- package/dist/features/inbox/InboxFeature.js +225 -0
- package/dist/features/inbox/InboxFeature.js.map +1 -0
- package/dist/features/inbox/runtime.d.ts +67 -0
- package/dist/features/inbox/runtime.d.ts.map +1 -0
- package/dist/features/inbox/runtime.js +376 -0
- package/dist/features/inbox/runtime.js.map +1 -0
- package/dist/features/inbox/store.d.ts +37 -0
- package/dist/features/inbox/store.d.ts.map +1 -0
- package/dist/features/inbox/store.js +149 -0
- package/dist/features/inbox/store.js.map +1 -0
- package/dist/features/inbox/sync.d.ts +49 -0
- package/dist/features/inbox/sync.d.ts.map +1 -0
- package/dist/features/inbox/sync.js +131 -0
- package/dist/features/inbox/sync.js.map +1 -0
- package/dist/features/inbox/types.d.ts +275 -0
- package/dist/features/inbox/types.d.ts.map +1 -0
- package/dist/features/inbox/types.js +42 -0
- package/dist/features/inbox/types.js.map +1 -0
- package/dist/features/inbox/widget/InboxWidget.d.ts +16 -0
- package/dist/features/inbox/widget/InboxWidget.d.ts.map +1 -0
- package/dist/features/inbox/widget/InboxWidget.js +608 -0
- package/dist/features/inbox/widget/InboxWidget.js.map +1 -0
- package/dist/features/index.d.ts +21 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +2 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/journey/InteractionTracker.d.ts +34 -0
- package/dist/features/journey/InteractionTracker.d.ts.map +1 -0
- package/dist/features/journey/InteractionTracker.js +125 -0
- package/dist/features/journey/InteractionTracker.js.map +1 -0
- package/dist/features/journey/JourneyFeature.d.ts +18 -0
- package/dist/features/journey/JourneyFeature.d.ts.map +1 -0
- package/dist/features/journey/JourneyFeature.js +57 -0
- package/dist/features/journey/JourneyFeature.js.map +1 -0
- package/dist/features/journey/NavigationTracker.d.ts +16 -0
- package/dist/features/journey/NavigationTracker.d.ts.map +1 -0
- package/dist/features/journey/NavigationTracker.js +92 -0
- package/dist/features/journey/NavigationTracker.js.map +1 -0
- package/dist/features/journey/friction.d.ts +29 -0
- package/dist/features/journey/friction.d.ts.map +1 -0
- package/dist/features/journey/friction.js +65 -0
- package/dist/features/journey/friction.js.map +1 -0
- package/dist/features/manifest.d.ts +20 -0
- package/dist/features/manifest.d.ts.map +1 -0
- package/dist/features/manifest.js +76 -0
- package/dist/features/manifest.js.map +1 -0
- package/dist/features/network/NetworkFeature.d.ts +56 -0
- package/dist/features/network/NetworkFeature.d.ts.map +1 -0
- package/dist/features/network/NetworkFeature.js +235 -0
- package/dist/features/network/NetworkFeature.js.map +1 -0
- package/dist/features/network/capture/body.d.ts +31 -0
- package/dist/features/network/capture/body.d.ts.map +1 -0
- package/dist/features/network/capture/body.js +81 -0
- package/dist/features/network/capture/body.js.map +1 -0
- package/dist/features/network/classify.d.ts +21 -0
- package/dist/features/network/classify.d.ts.map +1 -0
- package/dist/features/network/classify.js +50 -0
- package/dist/features/network/classify.js.map +1 -0
- package/dist/features/network/dedup.d.ts +36 -0
- package/dist/features/network/dedup.d.ts.map +1 -0
- package/dist/features/network/dedup.js +68 -0
- package/dist/features/network/dedup.js.map +1 -0
- package/dist/features/network/fetchInterceptor.d.ts +20 -0
- package/dist/features/network/fetchInterceptor.d.ts.map +1 -0
- package/dist/features/network/fetchInterceptor.js +158 -0
- package/dist/features/network/fetchInterceptor.js.map +1 -0
- package/dist/features/network/intercept/beacon.d.ts +14 -0
- package/dist/features/network/intercept/beacon.d.ts.map +1 -0
- package/dist/features/network/intercept/beacon.js +56 -0
- package/dist/features/network/intercept/beacon.js.map +1 -0
- package/dist/features/network/intercept/sse.d.ts +16 -0
- package/dist/features/network/intercept/sse.d.ts.map +1 -0
- package/dist/features/network/intercept/sse.js +74 -0
- package/dist/features/network/intercept/sse.js.map +1 -0
- package/dist/features/network/intercept/streams.d.ts +23 -0
- package/dist/features/network/intercept/streams.d.ts.map +1 -0
- package/dist/features/network/intercept/streams.js +25 -0
- package/dist/features/network/intercept/streams.js.map +1 -0
- package/dist/features/network/intercept/websocket.d.ts +14 -0
- package/dist/features/network/intercept/websocket.d.ts.map +1 -0
- package/dist/features/network/intercept/websocket.js +97 -0
- package/dist/features/network/intercept/websocket.js.map +1 -0
- package/dist/features/network/lazy.d.ts +23 -0
- package/dist/features/network/lazy.d.ts.map +1 -0
- package/dist/features/network/lazy.js +65 -0
- package/dist/features/network/lazy.js.map +1 -0
- package/dist/features/network/normalize.d.ts +9 -0
- package/dist/features/network/normalize.d.ts.map +1 -0
- package/dist/features/network/normalize.js +49 -0
- package/dist/features/network/normalize.js.map +1 -0
- package/dist/features/network/parse/graphql.d.ts +17 -0
- package/dist/features/network/parse/graphql.d.ts.map +1 -0
- package/dist/features/network/parse/graphql.js +106 -0
- package/dist/features/network/parse/graphql.js.map +1 -0
- package/dist/features/network/parse/url.d.ts +12 -0
- package/dist/features/network/parse/url.d.ts.map +1 -0
- package/dist/features/network/parse/url.js +52 -0
- package/dist/features/network/parse/url.js.map +1 -0
- package/dist/features/network/sampler.d.ts +21 -0
- package/dist/features/network/sampler.d.ts.map +1 -0
- package/dist/features/network/sampler.js +25 -0
- package/dist/features/network/sampler.js.map +1 -0
- package/dist/features/network/size.d.ts +21 -0
- package/dist/features/network/size.d.ts.map +1 -0
- package/dist/features/network/size.js +63 -0
- package/dist/features/network/size.js.map +1 -0
- package/dist/features/network/timing.d.ts +41 -0
- package/dist/features/network/timing.d.ts.map +1 -0
- package/dist/features/network/timing.js +134 -0
- package/dist/features/network/timing.js.map +1 -0
- package/dist/features/network/tracing.d.ts +18 -0
- package/dist/features/network/tracing.d.ts.map +1 -0
- package/dist/features/network/tracing.js +46 -0
- package/dist/features/network/tracing.js.map +1 -0
- package/dist/features/network/types.d.ts +75 -0
- package/dist/features/network/types.d.ts.map +1 -0
- package/dist/features/network/types.js +2 -0
- package/dist/features/network/types.js.map +1 -0
- package/dist/features/network/xhrInterceptor.d.ts +12 -0
- package/dist/features/network/xhrInterceptor.d.ts.map +1 -0
- package/dist/features/network/xhrInterceptor.js +108 -0
- package/dist/features/network/xhrInterceptor.js.map +1 -0
- package/dist/features/performance/PerformanceFeature.d.ts +76 -0
- package/dist/features/performance/PerformanceFeature.d.ts.map +1 -0
- package/dist/features/performance/PerformanceFeature.js +265 -0
- package/dist/features/performance/PerformanceFeature.js.map +1 -0
- package/dist/features/performance/jankTap.d.ts +23 -0
- package/dist/features/performance/jankTap.d.ts.map +1 -0
- package/dist/features/performance/jankTap.js +20 -0
- package/dist/features/performance/jankTap.js.map +1 -0
- package/dist/features/performance/longTasks.d.ts +14 -0
- package/dist/features/performance/longTasks.d.ts.map +1 -0
- package/dist/features/performance/longTasks.js +55 -0
- package/dist/features/performance/longTasks.js.map +1 -0
- package/dist/features/performance/normalize.d.ts +15 -0
- package/dist/features/performance/normalize.d.ts.map +1 -0
- package/dist/features/performance/normalize.js +30 -0
- package/dist/features/performance/normalize.js.map +1 -0
- package/dist/features/performance/resources.d.ts +19 -0
- package/dist/features/performance/resources.d.ts.map +1 -0
- package/dist/features/performance/resources.js +78 -0
- package/dist/features/performance/resources.js.map +1 -0
- package/dist/features/performance/sampler.d.ts +10 -0
- package/dist/features/performance/sampler.d.ts.map +1 -0
- package/dist/features/performance/sampler.js +23 -0
- package/dist/features/performance/sampler.js.map +1 -0
- package/dist/features/performance/spa.d.ts +2 -0
- package/dist/features/performance/spa.d.ts.map +1 -0
- package/dist/features/performance/spa.js +40 -0
- package/dist/features/performance/spa.js.map +1 -0
- package/dist/features/performance/throttle.d.ts +21 -0
- package/dist/features/performance/throttle.d.ts.map +1 -0
- package/dist/features/performance/throttle.js +26 -0
- package/dist/features/performance/throttle.js.map +1 -0
- package/dist/features/performance/trace/context.d.ts +17 -0
- package/dist/features/performance/trace/context.d.ts.map +1 -0
- package/dist/features/performance/trace/context.js +33 -0
- package/dist/features/performance/trace/context.js.map +1 -0
- package/dist/features/performance/trace/index.d.ts +7 -0
- package/dist/features/performance/trace/index.d.ts.map +1 -0
- package/dist/features/performance/trace/index.js +6 -0
- package/dist/features/performance/trace/index.js.map +1 -0
- package/dist/features/performance/trace/pageload.d.ts +3 -0
- package/dist/features/performance/trace/pageload.d.ts.map +1 -0
- package/dist/features/performance/trace/pageload.js +34 -0
- package/dist/features/performance/trace/pageload.js.map +1 -0
- package/dist/features/performance/trace/transaction.d.ts +61 -0
- package/dist/features/performance/trace/transaction.d.ts.map +1 -0
- package/dist/features/performance/trace/transaction.js +90 -0
- package/dist/features/performance/trace/transaction.js.map +1 -0
- package/dist/features/performance/trace/types.d.ts +23 -0
- package/dist/features/performance/trace/types.d.ts.map +1 -0
- package/dist/features/performance/trace/types.js +10 -0
- package/dist/features/performance/trace/types.js.map +1 -0
- package/dist/features/performance/traces.d.ts +36 -0
- package/dist/features/performance/traces.d.ts.map +1 -0
- package/dist/features/performance/traces.js +50 -0
- package/dist/features/performance/traces.js.map +1 -0
- package/dist/features/profiler/ProfilerFeature.d.ts +28 -0
- package/dist/features/profiler/ProfilerFeature.d.ts.map +1 -0
- package/dist/features/profiler/ProfilerFeature.js +82 -0
- package/dist/features/profiler/ProfilerFeature.js.map +1 -0
- package/dist/features/profiler/capture.d.ts +8 -0
- package/dist/features/profiler/capture.d.ts.map +1 -0
- package/dist/features/profiler/capture.js +21 -0
- package/dist/features/profiler/capture.js.map +1 -0
- package/dist/features/push/PushFeature.d.ts +120 -0
- package/dist/features/push/PushFeature.d.ts.map +1 -0
- package/dist/features/push/PushFeature.js +319 -0
- package/dist/features/push/PushFeature.js.map +1 -0
- package/dist/features/push/diagnostics.d.ts +55 -0
- package/dist/features/push/diagnostics.d.ts.map +1 -0
- package/dist/features/push/diagnostics.js +383 -0
- package/dist/features/push/diagnostics.js.map +1 -0
- package/dist/features/push/pushState.d.ts +58 -0
- package/dist/features/push/pushState.d.ts.map +1 -0
- package/dist/features/push/pushState.js +75 -0
- package/dist/features/push/pushState.js.map +1 -0
- package/dist/features/push/softAsk.d.ts +68 -0
- package/dist/features/push/softAsk.d.ts.map +1 -0
- package/dist/features/push/softAsk.js +141 -0
- package/dist/features/push/softAsk.js.map +1 -0
- package/dist/features/replay/ReplayFeature.d.ts +32 -0
- package/dist/features/replay/ReplayFeature.d.ts.map +1 -0
- package/dist/features/replay/ReplayFeature.js +132 -0
- package/dist/features/replay/ReplayFeature.js.map +1 -0
- package/dist/features/replay/engine/canvas.d.ts +45 -0
- package/dist/features/replay/engine/canvas.d.ts.map +1 -0
- package/dist/features/replay/engine/canvas.js +122 -0
- package/dist/features/replay/engine/canvas.js.map +1 -0
- package/dist/features/replay/engine/crossOrigin.d.ts +23 -0
- package/dist/features/replay/engine/crossOrigin.d.ts.map +1 -0
- package/dist/features/replay/engine/crossOrigin.js +108 -0
- package/dist/features/replay/engine/crossOrigin.js.map +1 -0
- package/dist/features/replay/engine/cssom.d.ts +31 -0
- package/dist/features/replay/engine/cssom.d.ts.map +1 -0
- package/dist/features/replay/engine/cssom.js +128 -0
- package/dist/features/replay/engine/cssom.js.map +1 -0
- package/dist/features/replay/engine/iframe.d.ts +65 -0
- package/dist/features/replay/engine/iframe.d.ts.map +1 -0
- package/dist/features/replay/engine/iframe.js +186 -0
- package/dist/features/replay/engine/iframe.js.map +1 -0
- package/dist/features/replay/engine/interactions.d.ts +142 -0
- package/dist/features/replay/engine/interactions.d.ts.map +1 -0
- package/dist/features/replay/engine/interactions.js +371 -0
- package/dist/features/replay/engine/interactions.js.map +1 -0
- package/dist/features/replay/engine/mutations.d.ts +49 -0
- package/dist/features/replay/engine/mutations.d.ts.map +1 -0
- package/dist/features/replay/engine/mutations.js +261 -0
- package/dist/features/replay/engine/mutations.js.map +1 -0
- package/dist/features/replay/engine/nodeRegistry.d.ts +23 -0
- package/dist/features/replay/engine/nodeRegistry.d.ts.map +1 -0
- package/dist/features/replay/engine/nodeRegistry.js +51 -0
- package/dist/features/replay/engine/nodeRegistry.js.map +1 -0
- package/dist/features/replay/engine/player.d.ts +11 -0
- package/dist/features/replay/engine/player.d.ts.map +1 -0
- package/dist/features/replay/engine/player.js +284 -0
- package/dist/features/replay/engine/player.js.map +1 -0
- package/dist/features/replay/engine/rebuild.d.ts +8 -0
- package/dist/features/replay/engine/rebuild.d.ts.map +1 -0
- package/dist/features/replay/engine/rebuild.js +46 -0
- package/dist/features/replay/engine/rebuild.js.map +1 -0
- package/dist/features/replay/engine/replayWorker.d.ts +33 -0
- package/dist/features/replay/engine/replayWorker.d.ts.map +1 -0
- package/dist/features/replay/engine/replayWorker.js +175 -0
- package/dist/features/replay/engine/replayWorker.js.map +1 -0
- package/dist/features/replay/engine/resources.d.ts +52 -0
- package/dist/features/replay/engine/resources.d.ts.map +1 -0
- package/dist/features/replay/engine/resources.js +132 -0
- package/dist/features/replay/engine/resources.js.map +1 -0
- package/dist/features/replay/engine/snapshot.d.ts +103 -0
- package/dist/features/replay/engine/snapshot.d.ts.map +1 -0
- package/dist/features/replay/engine/snapshot.js +409 -0
- package/dist/features/replay/engine/snapshot.js.map +1 -0
- package/dist/features/replay/engine/traverse.d.ts +19 -0
- package/dist/features/replay/engine/traverse.d.ts.map +1 -0
- package/dist/features/replay/engine/traverse.js +39 -0
- package/dist/features/replay/engine/traverse.js.map +1 -0
- package/dist/features/replay/engine/types.d.ts +137 -0
- package/dist/features/replay/engine/types.d.ts.map +1 -0
- package/dist/features/replay/engine/types.js +6 -0
- package/dist/features/replay/engine/types.js.map +1 -0
- package/dist/features/replay/engine/webglPatch.d.ts +26 -0
- package/dist/features/replay/engine/webglPatch.d.ts.map +1 -0
- package/dist/features/replay/engine/webglPatch.js +83 -0
- package/dist/features/replay/engine/webglPatch.js.map +1 -0
- package/dist/features/replay/lifecycle/adaptive.d.ts +38 -0
- package/dist/features/replay/lifecycle/adaptive.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/adaptive.js +90 -0
- package/dist/features/replay/lifecycle/adaptive.js.map +1 -0
- package/dist/features/replay/lifecycle/cadence.d.ts +20 -0
- package/dist/features/replay/lifecycle/cadence.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/cadence.js +62 -0
- package/dist/features/replay/lifecycle/cadence.js.map +1 -0
- package/dist/features/replay/lifecycle/deviceSignals.d.ts +35 -0
- package/dist/features/replay/lifecycle/deviceSignals.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/deviceSignals.js +61 -0
- package/dist/features/replay/lifecycle/deviceSignals.js.map +1 -0
- package/dist/features/replay/lifecycle/pii.d.ts +14 -0
- package/dist/features/replay/lifecycle/pii.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/pii.js +52 -0
- package/dist/features/replay/lifecycle/pii.js.map +1 -0
- package/dist/features/replay/lifecycle/recorder.d.ts +129 -0
- package/dist/features/replay/lifecycle/recorder.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/recorder.js +509 -0
- package/dist/features/replay/lifecycle/recorder.js.map +1 -0
- package/dist/features/replay/lifecycle/sampling.d.ts +28 -0
- package/dist/features/replay/lifecycle/sampling.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/sampling.js +31 -0
- package/dist/features/replay/lifecycle/sampling.js.map +1 -0
- package/dist/features/replay/lifecycle/segmentBuffer.d.ts +75 -0
- package/dist/features/replay/lifecycle/segmentBuffer.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/segmentBuffer.js +130 -0
- package/dist/features/replay/lifecycle/segmentBuffer.js.map +1 -0
- package/dist/features/replay/lifecycle/viewContext.d.ts +7 -0
- package/dist/features/replay/lifecycle/viewContext.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/viewContext.js +51 -0
- package/dist/features/replay/lifecycle/viewContext.js.map +1 -0
- package/dist/features/scroll/index.d.ts +31 -0
- package/dist/features/scroll/index.d.ts.map +1 -0
- package/dist/features/scroll/index.js +102 -0
- package/dist/features/scroll/index.js.map +1 -0
- package/dist/features/session/sessionManager.d.ts +25 -0
- package/dist/features/session/sessionManager.d.ts.map +1 -0
- package/dist/features/session/sessionManager.js +36 -0
- package/dist/features/session/sessionManager.js.map +1 -0
- package/dist/features/session/sessionStore.d.ts +106 -0
- package/dist/features/session/sessionStore.d.ts.map +1 -0
- package/dist/features/session/sessionStore.js +265 -0
- package/dist/features/session/sessionStore.js.map +1 -0
- package/dist/features/watchdog/WatchdogFeature.d.ts +23 -0
- package/dist/features/watchdog/WatchdogFeature.d.ts.map +1 -0
- package/dist/features/watchdog/WatchdogFeature.js +29 -0
- package/dist/features/watchdog/WatchdogFeature.js.map +1 -0
- package/dist/features/watchdog/collectors.d.ts +18 -0
- package/dist/features/watchdog/collectors.d.ts.map +1 -0
- package/dist/features/watchdog/collectors.js +107 -0
- package/dist/features/watchdog/collectors.js.map +1 -0
- package/dist/features/watchdog/config.d.ts +51 -0
- package/dist/features/watchdog/config.d.ts.map +1 -0
- package/dist/features/watchdog/config.js +28 -0
- package/dist/features/watchdog/config.js.map +1 -0
- package/dist/features/watchdog/engine.d.ts +22 -0
- package/dist/features/watchdog/engine.d.ts.map +1 -0
- package/dist/features/watchdog/engine.js +123 -0
- package/dist/features/watchdog/engine.js.map +1 -0
- package/dist/features/watchdog/incidents.d.ts +79 -0
- package/dist/features/watchdog/incidents.d.ts.map +1 -0
- package/dist/features/watchdog/incidents.js +204 -0
- package/dist/features/watchdog/incidents.js.map +1 -0
- package/dist/features/watchdog/rollup.d.ts +41 -0
- package/dist/features/watchdog/rollup.d.ts.map +1 -0
- package/dist/features/watchdog/rollup.js +76 -0
- package/dist/features/watchdog/rollup.js.map +1 -0
- package/dist/features/webVitals/WebVitalsFeature.d.ts +46 -0
- package/dist/features/webVitals/WebVitalsFeature.d.ts.map +1 -0
- package/dist/features/webVitals/WebVitalsFeature.js +252 -0
- package/dist/features/webVitals/WebVitalsFeature.js.map +1 -0
- package/dist/features/webVitals/attribution.d.ts +50 -0
- package/dist/features/webVitals/attribution.d.ts.map +1 -0
- package/dist/features/webVitals/attribution.js +186 -0
- package/dist/features/webVitals/attribution.js.map +1 -0
- package/dist/features/webVitals/observe.d.ts +6 -0
- package/dist/features/webVitals/observe.d.ts.map +1 -0
- package/dist/features/webVitals/observe.js +6 -0
- package/dist/features/webVitals/observe.js.map +1 -0
- package/dist/features/webVitals/vitals.d.ts +99 -0
- package/dist/features/webVitals/vitals.d.ts.map +1 -0
- package/dist/features/webVitals/vitals.js +166 -0
- package/dist/features/webVitals/vitals.js.map +1 -0
- package/dist/features/webperf/WebPerfFeature.d.ts +19 -0
- package/dist/features/webperf/WebPerfFeature.d.ts.map +1 -0
- package/dist/features/webperf/WebPerfFeature.js +48 -0
- package/dist/features/webperf/WebPerfFeature.js.map +1 -0
- package/dist/features/webperf/collectors.d.ts +3 -0
- package/dist/features/webperf/collectors.d.ts.map +1 -0
- package/dist/features/webperf/collectors.js +118 -0
- package/dist/features/webperf/collectors.js.map +1 -0
- package/dist/features/webperf/math.d.ts +12 -0
- package/dist/features/webperf/math.d.ts.map +1 -0
- package/dist/features/webperf/math.js +26 -0
- package/dist/features/webperf/math.js.map +1 -0
- package/dist/inapp.d.ts +6 -0
- package/dist/inapp.d.ts.map +1 -0
- package/dist/inapp.js +6 -0
- package/dist/inapp.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/index.d.ts +7 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +2 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/pipeline/index.d.ts +3 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +3 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/pipeline.d.ts +84 -0
- package/dist/pipeline/pipeline.d.ts.map +1 -0
- package/dist/pipeline/pipeline.js +284 -0
- package/dist/pipeline/pipeline.js.map +1 -0
- package/dist/public/ScaleBunFacade.d.ts +382 -0
- package/dist/public/ScaleBunFacade.d.ts.map +1 -0
- package/dist/public/ScaleBunFacade.js +787 -0
- package/dist/public/ScaleBunFacade.js.map +1 -0
- package/dist/public/index.d.ts +5 -0
- package/dist/public/index.d.ts.map +1 -0
- package/dist/public/index.js +4 -0
- package/dist/public/index.js.map +1 -0
- package/dist/public/typedTracker.d.ts +91 -0
- package/dist/public/typedTracker.d.ts.map +1 -0
- package/dist/public/typedTracker.js +60 -0
- package/dist/public/typedTracker.js.map +1 -0
- package/dist/scalebun-push-sw.js +236 -0
- package/dist/scalebun.min.js +635 -0
- package/dist/scalebun.min.js.map +7 -0
- package/dist/storage/idb.d.ts +16 -0
- package/dist/storage/idb.d.ts.map +1 -0
- package/dist/storage/idb.js +76 -0
- package/dist/storage/idb.js.map +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +3 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/transport/gzip.d.ts +2 -0
- package/dist/transport/gzip.d.ts.map +1 -0
- package/dist/transport/gzip.js +20 -0
- package/dist/transport/gzip.js.map +1 -0
- package/dist/transport/httpClient.d.ts +60 -0
- package/dist/transport/httpClient.d.ts.map +1 -0
- package/dist/transport/httpClient.js +154 -0
- package/dist/transport/httpClient.js.map +1 -0
- package/dist/transport/index.d.ts +3 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +3 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/sign.d.ts +25 -0
- package/dist/transport/sign.d.ts.map +1 -0
- package/dist/transport/sign.js +58 -0
- package/dist/transport/sign.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* takeSnapshot — serialize a DOM subtree (or whole document) into our compact SNode tree.
|
|
3
|
+
* Privacy-by-default: all text + input values masked at serialize time, so raw PII never leaves
|
|
4
|
+
* this function. CSSOM-first: <style> captures live cssRules (CSS-in-JS) and the document captures
|
|
5
|
+
* adoptedStyleSheets — the things rrweb drops from the initial snapshot.
|
|
6
|
+
*/
|
|
7
|
+
import { adoptedSheetId } from './cssom';
|
|
8
|
+
export const NO_MASK_TEXT_PARENTS = new Set(['STYLE', 'SCRIPT']);
|
|
9
|
+
// Attributes whose values can carry PII → masked when maskAllInputs is on. `srcdoc` is inline iframe
|
|
10
|
+
// HTML (same-origin srcdoc is also captured via contentDocument, so masking it loses nothing).
|
|
11
|
+
export const SENSITIVE_ATTRS = new Set(['value', 'placeholder', 'alt', 'title', 'aria-label', 'srcdoc']);
|
|
12
|
+
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
13
|
+
const MATHML_NS = 'http://www.w3.org/1998/Math/MathML';
|
|
14
|
+
// Always masked, regardless of maskAllText: developer-tagged regions and user-editable rich text
|
|
15
|
+
// (contenteditable is the DOM analog of an input — treat its text like a typed value).
|
|
16
|
+
const ALWAYS_MASK_SEL = '[data-scalebun-mask],[contenteditable=""],[contenteditable="true"]';
|
|
17
|
+
/** Build + validate the combined mask selector. An invalid host selector must never throw during
|
|
18
|
+
* capture — fall back to the always-mask defaults. */
|
|
19
|
+
function buildMaskSel(userSelectors) {
|
|
20
|
+
const extra = (userSelectors ?? []).filter((s) => typeof s === 'string' && s.trim());
|
|
21
|
+
const sel = extra.length ? `${ALWAYS_MASK_SEL},${extra.join(',')}` : ALWAYS_MASK_SEL;
|
|
22
|
+
try {
|
|
23
|
+
if (typeof document !== 'undefined')
|
|
24
|
+
document.documentElement.matches(sel); // throws on invalid syntax
|
|
25
|
+
return sel;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return ALWAYS_MASK_SEL;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** True when `el` (or an ancestor) matches the mask selector — used to mask a subtree even when
|
|
32
|
+
* maskAllText is off. Guarded: a malformed selector or detached node never throws. */
|
|
33
|
+
export function isMaskedSubtree(el, sel) {
|
|
34
|
+
if (!el || !sel)
|
|
35
|
+
return false;
|
|
36
|
+
try {
|
|
37
|
+
return !!el.closest(sel);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export function resolveSnapshotOpts(opts = {}) {
|
|
44
|
+
return {
|
|
45
|
+
maskAllText: opts.maskAllText ?? true,
|
|
46
|
+
maskAllInputs: opts.maskAllInputs ?? true,
|
|
47
|
+
maskSel: buildMaskSel(opts.maskSelectors),
|
|
48
|
+
cssBudget: { used: 0 },
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function takeSnapshot(root, reg, opts = {}) {
|
|
52
|
+
return serializeNode(root, reg, resolveSnapshotOpts(opts)) ?? { t: 'doc', id: reg.add(root), children: [] };
|
|
53
|
+
}
|
|
54
|
+
export function serializeNode(node, reg, o) {
|
|
55
|
+
switch (node.nodeType) {
|
|
56
|
+
case 9: {
|
|
57
|
+
// document
|
|
58
|
+
const id = reg.add(node);
|
|
59
|
+
const out = { t: 'doc', id, children: serializeChildren(node, reg, o) };
|
|
60
|
+
const adopted = serializeAdopted(node, node.baseURI);
|
|
61
|
+
if (adopted.length)
|
|
62
|
+
out.adoptedStyles = adopted;
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
case 10: {
|
|
66
|
+
const dt = node;
|
|
67
|
+
return { t: 'dt', id: reg.add(node), name: dt.name, publicId: dt.publicId, systemId: dt.systemId };
|
|
68
|
+
}
|
|
69
|
+
case 1: {
|
|
70
|
+
const el = node;
|
|
71
|
+
// A stylesheet <link> becomes an inline <style> holding its rules, in the
|
|
72
|
+
// same position so the cascade order is preserved. Without this the
|
|
73
|
+
// reconstruction has to re-fetch a URL that is often already gone.
|
|
74
|
+
if (isStylesheetLink(el))
|
|
75
|
+
return serializeStylesheetLink(el, reg, o, o.cssBudget);
|
|
76
|
+
const id = reg.add(node);
|
|
77
|
+
const tag = el.tagName.toLowerCase();
|
|
78
|
+
const ns = el.namespaceURI === SVG_NS ? 'svg' : el.namespaceURI === MATHML_NS ? 'math' : undefined;
|
|
79
|
+
const children = tag === 'style'
|
|
80
|
+
? serializeStyleChildren(el, reg)
|
|
81
|
+
: // <template> content lives in `.content` (a DocumentFragment), not childNodes — capture it
|
|
82
|
+
// so templated/declarative-shadow markup isn't lost.
|
|
83
|
+
tag === 'template'
|
|
84
|
+
? serializeChildren(el.content, reg, o)
|
|
85
|
+
: serializeChildren(el, reg, o);
|
|
86
|
+
const out = { t: 'el', id, tag, attrs: serializeAttrs(el, o), children };
|
|
87
|
+
if (ns)
|
|
88
|
+
out.ns = ns;
|
|
89
|
+
// Web components: descend into the OPEN shadow root (closed → shadowRoot is null → skipped).
|
|
90
|
+
const sr = el.shadowRoot;
|
|
91
|
+
if (sr)
|
|
92
|
+
out.shadow = serializeShadow(sr, reg, o);
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
case 3: {
|
|
96
|
+
const parentTag = node.parentNode?.nodeName ?? '';
|
|
97
|
+
const raw = node.data;
|
|
98
|
+
// Mask when maskAllText is on, OR (text shown) the parent is inside a masked subtree
|
|
99
|
+
// (contenteditable / [data-scalebun-mask] / host maskSelectors).
|
|
100
|
+
const mask = o.maskAllText || isMaskedSubtree(node.parentElement, o.maskSel);
|
|
101
|
+
const value = mask && !NO_MASK_TEXT_PARENTS.has(parentTag) ? maskText(raw) : raw;
|
|
102
|
+
return { t: 'tx', id: reg.add(node), value };
|
|
103
|
+
}
|
|
104
|
+
case 8:
|
|
105
|
+
return { t: 'cm', id: reg.add(node), value: node.data };
|
|
106
|
+
case 4: // CDATA → text
|
|
107
|
+
return { t: 'tx', id: reg.add(node), value: node.data };
|
|
108
|
+
default:
|
|
109
|
+
return null; // processing instructions etc.
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function serializeChildren(node, reg, o) {
|
|
113
|
+
const out = [];
|
|
114
|
+
node.childNodes.forEach((child) => {
|
|
115
|
+
const s = serializeNode(child, reg, o);
|
|
116
|
+
if (s)
|
|
117
|
+
out.push(s);
|
|
118
|
+
});
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Total inlined <link> CSS allowed per snapshot.
|
|
123
|
+
*
|
|
124
|
+
* Replay payloads are gzipped, but stylesheet text is the single biggest lever
|
|
125
|
+
* on snapshot size — a Tailwind/Bootstrap build can be hundreds of KB before
|
|
126
|
+
* compression. Past the cap we stop inlining and mark the remaining sheets
|
|
127
|
+
* unresolved rather than silently bloating every session.
|
|
128
|
+
*/
|
|
129
|
+
export const MAX_INLINED_CSS_BYTES = 2 * 1024 * 1024;
|
|
130
|
+
/**
|
|
131
|
+
* Marks a <link rel=stylesheet> whose rules we could not read (cross-origin
|
|
132
|
+
* without CORS, or over the size cap). The dashboard reads this to tell the
|
|
133
|
+
* operator WHY a reconstruction looks unstyled instead of presenting a broken
|
|
134
|
+
* page as if it were the real one.
|
|
135
|
+
*/
|
|
136
|
+
export const UNRESOLVED_SHEET_ATTR = 'data-scalebun-sheet-unresolved';
|
|
137
|
+
/** True for the <link> elements that actually contribute CSS to the page. */
|
|
138
|
+
function isStylesheetLink(el) {
|
|
139
|
+
if (el.tagName.toLowerCase() !== 'link')
|
|
140
|
+
return false;
|
|
141
|
+
const rel = (el.getAttribute('rel') ?? '').toLowerCase();
|
|
142
|
+
// `alternate stylesheet` is opt-in and not applied by default — leave it alone.
|
|
143
|
+
return rel.split(/\s+/).includes('stylesheet') && !rel.includes('alternate');
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Read the CSS text of a same-origin (or CORS-enabled) linked stylesheet.
|
|
147
|
+
*
|
|
148
|
+
* Deliberately SYNCHRONOUS via the CSSOM rather than `fetch()`: takeSnapshot is
|
|
149
|
+
* sync, the rules are already parsed and in memory, and going over the network
|
|
150
|
+
* would add CSP surprises, latency, and a second copy of every asset. This is
|
|
151
|
+
* the same mechanism rrweb's `inlineStylesheet` uses.
|
|
152
|
+
*
|
|
153
|
+
* Returns null when the sheet is unreadable — cross-origin sheets throw on
|
|
154
|
+
* `.cssRules` access by design, and that is not an error worth reporting.
|
|
155
|
+
*/
|
|
156
|
+
function readLinkedCss(link) {
|
|
157
|
+
try {
|
|
158
|
+
const rules = link.sheet?.cssRules;
|
|
159
|
+
if (!rules || rules.length === 0)
|
|
160
|
+
return null;
|
|
161
|
+
return Array.from(rules)
|
|
162
|
+
.map((r) => r.cssText)
|
|
163
|
+
.join('');
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return null; // cross-origin without CORS — expected, not exceptional
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Serialize a stylesheet <link> as an inline <style> holding its rules.
|
|
171
|
+
*
|
|
172
|
+
* WHY THIS EXISTS
|
|
173
|
+
* The serializer used to only ABSOLUTIZE a link's href and move on, so a
|
|
174
|
+
* reconstruction had to re-fetch that URL later, from a different page, to look
|
|
175
|
+
* like anything. Measured against a real capture, that meant: perfect DOM (309
|
|
176
|
+
* class attributes) and zero styling, because the hrefs pointed at Next.js
|
|
177
|
+
* content-hashed dev chunks (`_next/static/chunks/[root-of-the-server]__a968157c.css`)
|
|
178
|
+
* that stop existing on the next rebuild. Heatmap backdrops and replays both
|
|
179
|
+
* rendered as raw unstyled HTML.
|
|
180
|
+
*
|
|
181
|
+
* Emitting a <style> IN THE LINK'S POSITION preserves cascade order and needs no
|
|
182
|
+
* replayer change — <style> with a text child is already handled. `media` is
|
|
183
|
+
* carried across so a print-only sheet does not start applying to screen.
|
|
184
|
+
*/
|
|
185
|
+
function serializeStylesheetLink(link, reg, o, budget) {
|
|
186
|
+
const id = reg.add(link);
|
|
187
|
+
const css = readLinkedCss(link);
|
|
188
|
+
if (css && budget.used + css.length <= MAX_INLINED_CSS_BYTES) {
|
|
189
|
+
budget.used += css.length;
|
|
190
|
+
const absolute = absolutizeCssUrls(css, link.ownerDocument.baseURI);
|
|
191
|
+
const textNode = link.ownerDocument.createTextNode('');
|
|
192
|
+
const attrs = {};
|
|
193
|
+
const media = link.getAttribute('media');
|
|
194
|
+
if (media)
|
|
195
|
+
attrs.media = media;
|
|
196
|
+
// Keep the origin href for debugging; it is inert on a <style>.
|
|
197
|
+
const href = link.getAttribute('href');
|
|
198
|
+
if (href)
|
|
199
|
+
attrs['data-scalebun-href'] = absUrl(href, link.ownerDocument.baseURI);
|
|
200
|
+
return { t: 'el', id, tag: 'style', attrs, children: [{ t: 'tx', id: reg.add(textNode), value: absolute }] };
|
|
201
|
+
}
|
|
202
|
+
// Unreadable or over budget: keep the <link> so a same-origin replay can still
|
|
203
|
+
// resolve it, and flag it so the dashboard can say so out loud.
|
|
204
|
+
const attrs = serializeAttrs(link, o);
|
|
205
|
+
attrs[UNRESOLVED_SHEET_ATTR] = css ? 'budget' : 'cors';
|
|
206
|
+
return { t: 'el', id, tag: 'link', attrs, children: [] };
|
|
207
|
+
}
|
|
208
|
+
/** <style>: prefer live cssRules (captures insertRule/CSS-in-JS); fall back to textContent. */
|
|
209
|
+
function serializeStyleChildren(style, reg) {
|
|
210
|
+
let css = '';
|
|
211
|
+
try {
|
|
212
|
+
const rules = style.sheet?.cssRules;
|
|
213
|
+
if (rules && rules.length)
|
|
214
|
+
css = Array.from(rules).map((r) => r.cssText).join('');
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
/* cross-origin sheet — not readable */
|
|
218
|
+
}
|
|
219
|
+
if (!css)
|
|
220
|
+
css = style.textContent ?? '';
|
|
221
|
+
if (!css)
|
|
222
|
+
return [];
|
|
223
|
+
css = absolutizeCssUrls(css, style.ownerDocument.baseURI); // relative url()/@import → absolute
|
|
224
|
+
const textNode = style.firstChild ?? style.ownerDocument.createTextNode('');
|
|
225
|
+
return [{ t: 'tx', id: reg.add(textNode), value: css }];
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* A password field. Its CHARACTERS are never captured on any lane (keyframe, mutation, input event),
|
|
229
|
+
* whatever `maskAllInputs` says — the value is replaced with same-length asterisks via `maskSecret`.
|
|
230
|
+
*
|
|
231
|
+
* It used to be blanked to '' outright. That read as an untouched field on replay: an empty value lets
|
|
232
|
+
* the page's own placeholder show through, so a login where the user typed (or the browser autofilled)
|
|
233
|
+
* a password was indistinguishable from one where they never reached the field. Length-only masking
|
|
234
|
+
* keeps that distinction while still shipping nothing about the content.
|
|
235
|
+
*
|
|
236
|
+
* Shared rather than re-tested inline per lane, because the lanes had drifted. The keyframe and
|
|
237
|
+
* input-event lanes handled passwords unconditionally, but the mutation lane only masked `value` when
|
|
238
|
+
* `maskAllInputs` was on — so with masking off, `el.setAttribute('value', …)` on a password input
|
|
239
|
+
* shipped the credential in plaintext. That is reachable from ordinary code: a React `defaultValue`
|
|
240
|
+
* re-render, a server-rendered form re-hydrating, or an extension/password-manager shim that writes
|
|
241
|
+
* the attribute rather than the property.
|
|
242
|
+
*
|
|
243
|
+
* Note the property/attribute split is why that was invisible: typing and browser autofill mutate the
|
|
244
|
+
* `value` PROPERTY, which MutationObserver cannot see, so the common paths never reached the buggy
|
|
245
|
+
* branch and the leak only opened for code that writes the attribute explicitly.
|
|
246
|
+
*/
|
|
247
|
+
export function isPasswordField(el) {
|
|
248
|
+
const tag = el.tagName?.toLowerCase();
|
|
249
|
+
if (tag !== 'input' && tag !== 'textarea')
|
|
250
|
+
return false;
|
|
251
|
+
return (el.getAttribute?.('type') || '').toLowerCase() === 'password';
|
|
252
|
+
}
|
|
253
|
+
function serializeAttrs(el, o) {
|
|
254
|
+
const attrs = {};
|
|
255
|
+
for (const a of Array.from(el.attributes)) {
|
|
256
|
+
attrs[a.name] = o.maskAllInputs && SENSITIVE_ATTRS.has(a.name) ? maskText(a.value) : a.value;
|
|
257
|
+
}
|
|
258
|
+
const tag = el.tagName.toLowerCase();
|
|
259
|
+
// Input values. A password's CHARACTERS are never captured regardless of maskAllInputs — only its
|
|
260
|
+
// length, as asterisks. Other inputs are masked when maskAllInputs is on, else the real typed value
|
|
261
|
+
// (el.value) is captured. `el.value` is the live PROPERTY, which is what typing and browser autofill
|
|
262
|
+
// actually mutate; the `value` attribute usually still holds whatever the markup shipped with.
|
|
263
|
+
if (tag === 'input' || tag === 'textarea') {
|
|
264
|
+
const live = el.value ?? attrs.value ?? '';
|
|
265
|
+
if (isPasswordField(el))
|
|
266
|
+
attrs.value = maskSecret(live);
|
|
267
|
+
else
|
|
268
|
+
attrs.value = o.maskAllInputs ? maskText(live) : live;
|
|
269
|
+
}
|
|
270
|
+
// De-lazy: a `loading="lazy"` img/iframe may never enter the player's viewport, so it would never
|
|
271
|
+
// paint on replay. Capturing it eager (the URL is already in `src`/`srcset`) makes any player load it.
|
|
272
|
+
if (attrs.loading === 'lazy' && (tag === 'img' || tag === 'iframe'))
|
|
273
|
+
attrs.loading = 'eager';
|
|
274
|
+
// Absolutize resource URLs against the captured doc's base so a replay rendered from a DIFFERENT
|
|
275
|
+
// origin (e.g. the dashboard) still loads images, backgrounds, media, web fonts and SVG refs.
|
|
276
|
+
// Covers src / srcset / poster / inline style url(...) / <link> & SVG <use>/<image> href.
|
|
277
|
+
// Navigation hrefs (<a>, <base>) are deliberately left relative — they aren't fetched on replay.
|
|
278
|
+
const base = el.ownerDocument?.baseURI ?? '';
|
|
279
|
+
for (const name of RESOURCE_URL_ATTRS) {
|
|
280
|
+
const v = attrs[name];
|
|
281
|
+
if (v != null)
|
|
282
|
+
attrs[name] = absolutizeAttrValue(name, v, tag, base);
|
|
283
|
+
}
|
|
284
|
+
return attrs;
|
|
285
|
+
}
|
|
286
|
+
/** Serialize an OPEN shadow root — its subtree (masked via the same opts) + its own adopted sheets. */
|
|
287
|
+
export function serializeShadow(root, reg, o) {
|
|
288
|
+
const id = reg.add(root); // register the root so in-shadow deltas can target it as a parent
|
|
289
|
+
const shadow = { mode: 'open', id, children: serializeChildren(root, reg, o) };
|
|
290
|
+
const base = root.host?.ownerDocument?.baseURI ?? '';
|
|
291
|
+
const adopted = serializeAdopted(root, base);
|
|
292
|
+
if (adopted.length)
|
|
293
|
+
shadow.adoptedStyles = adopted;
|
|
294
|
+
return shadow;
|
|
295
|
+
}
|
|
296
|
+
function serializeAdopted(doc, base) {
|
|
297
|
+
try {
|
|
298
|
+
const sheets = doc.adoptedStyleSheets;
|
|
299
|
+
if (!sheets || !sheets.length)
|
|
300
|
+
return [];
|
|
301
|
+
const out = [];
|
|
302
|
+
for (const s of sheets) {
|
|
303
|
+
try {
|
|
304
|
+
const css = Array.from(s.cssRules)
|
|
305
|
+
.map((r) => r.cssText)
|
|
306
|
+
.join('');
|
|
307
|
+
if (css)
|
|
308
|
+
out.push({ id: adoptedSheetId(s), css: absolutizeCssUrls(css, base) });
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
/* cross-origin — skip */
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return out;
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
return [];
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/** Mask visible chars, preserve length + whitespace. Non-reversible. */
|
|
321
|
+
export function maskText(s) {
|
|
322
|
+
return s.replace(/\S/g, '*');
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Mask a credential: EVERY character becomes '*', length preserved, nothing else.
|
|
326
|
+
*
|
|
327
|
+
* Deliberately stricter than `maskText`, which preserves whitespace so masked prose still reads as
|
|
328
|
+
* prose. On a password that would leak real structure — a passphrase would show its word boundaries
|
|
329
|
+
* and word lengths. Here only the total length survives.
|
|
330
|
+
*
|
|
331
|
+
* Length is survivable-by-design: it is what makes the replayed field render as dots instead of
|
|
332
|
+
* falling back to the page's placeholder, which is the difference between "the user typed a password"
|
|
333
|
+
* and "the field looks untouched". The characters never leave the page.
|
|
334
|
+
*/
|
|
335
|
+
export function maskSecret(s) {
|
|
336
|
+
return '*'.repeat(s.length);
|
|
337
|
+
}
|
|
338
|
+
// Already-absolute / non-resolvable refs to leave alone: absolute or protocol-relative URLs, data:,
|
|
339
|
+
// blob:, about:, and intra-document fragments (e.g. SVG `url(#clip)`).
|
|
340
|
+
const SKIP_URL_RE = /^(?:[a-z][a-z0-9+.-]*:|\/\/|#)/i;
|
|
341
|
+
/** Resolve a possibly-relative resource ref against `base`; leave absolute/data/blob/fragment refs. */
|
|
342
|
+
export function absUrl(ref, base) {
|
|
343
|
+
const r = ref.trim();
|
|
344
|
+
if (!r || !base || SKIP_URL_RE.test(r))
|
|
345
|
+
return ref;
|
|
346
|
+
try {
|
|
347
|
+
return new URL(r, base).href;
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
return ref;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/** Rewrite relative `url(...)` + `@import "…"` refs in CSS to absolute, so a replay rendered from a
|
|
354
|
+
* DIFFERENT origin still resolves background images, web fonts, and imported sheets. */
|
|
355
|
+
export function absolutizeCssUrls(css, base) {
|
|
356
|
+
if (!css || !base)
|
|
357
|
+
return css;
|
|
358
|
+
let out = css.replace(/url\(\s*(['"]?)([^'")]*)\1\s*\)/gi, (_m, q, ref) => `url(${q}${absUrl(ref, base)}${q})`);
|
|
359
|
+
out = out.replace(/@import\s+(['"])([^'"]+)\1/gi, (_m, q, ref) => `@import ${q}${absUrl(ref, base)}${q}`);
|
|
360
|
+
return out;
|
|
361
|
+
}
|
|
362
|
+
/** URL-bearing attributes we absolutize so a cross-origin replay can still fetch the referenced asset. */
|
|
363
|
+
const RESOURCE_URL_ATTRS = ['src', 'srcset', 'poster', 'style', 'href', 'xlink:href', 'data'];
|
|
364
|
+
/**
|
|
365
|
+
* Absolutize one URL-bearing attribute value against `base`. Resource refs (images, media, posters,
|
|
366
|
+
* inline background-image url(...), web fonts, SVG <use>/<image>) → absolute; navigation refs
|
|
367
|
+
* (<a>/<base> href) are left untouched. Shared by the initial snapshot and the mutation delta path so
|
|
368
|
+
* assets added AFTER load resolve identically. `absUrl`/`absolutizeCssUrls` already skip
|
|
369
|
+
* absolute/data/blob/fragment refs, so this is safe to call unconditionally.
|
|
370
|
+
*/
|
|
371
|
+
export function absolutizeAttrValue(name, value, tag, base) {
|
|
372
|
+
if (!value || !base)
|
|
373
|
+
return value;
|
|
374
|
+
switch (name) {
|
|
375
|
+
case 'src':
|
|
376
|
+
case 'poster':
|
|
377
|
+
return absUrl(value, base);
|
|
378
|
+
case 'srcset':
|
|
379
|
+
return absolutizeSrcset(value, base);
|
|
380
|
+
case 'style':
|
|
381
|
+
return absolutizeCssUrls(value, base); // inline style="background-image:url(...)" etc.
|
|
382
|
+
case 'href':
|
|
383
|
+
return tag === 'link' || tag === 'use' || tag === 'image' ? absUrl(value, base) : value;
|
|
384
|
+
case 'xlink:href':
|
|
385
|
+
return tag === 'use' || tag === 'image' ? absUrl(value, base) : value;
|
|
386
|
+
case 'data':
|
|
387
|
+
return tag === 'object' ? absUrl(value, base) : value; // <object data="…"> resource ref
|
|
388
|
+
default:
|
|
389
|
+
return value;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/** Absolutize every candidate URL in a srcset ("url 1x, url 2x" / "url 100w, …"). Left untouched when
|
|
393
|
+
* it contains a data: URI — embedded commas would break naive splitting, and data URIs are already
|
|
394
|
+
* self-contained. */
|
|
395
|
+
export function absolutizeSrcset(srcset, base) {
|
|
396
|
+
if (!srcset || !base || /data:/i.test(srcset))
|
|
397
|
+
return srcset;
|
|
398
|
+
return srcset
|
|
399
|
+
.split(',')
|
|
400
|
+
.map((part) => {
|
|
401
|
+
const seg = part.trim();
|
|
402
|
+
if (!seg)
|
|
403
|
+
return seg;
|
|
404
|
+
const sp = seg.search(/\s/); // URL is up to the first whitespace; the rest is the descriptor
|
|
405
|
+
return sp === -1 ? absUrl(seg, base) : absUrl(seg.slice(0, sp), base) + seg.slice(sp);
|
|
406
|
+
})
|
|
407
|
+
.join(', ');
|
|
408
|
+
}
|
|
409
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../../src/features/replay/engine/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NodeRegistry } from './nodeRegistry';
|
|
2
|
+
/**
|
|
3
|
+
* Unregister a node and its whole subtree (on removal — descendants' ids go stale).
|
|
4
|
+
*
|
|
5
|
+
* Recurses OPEN shadow roots: a host's shadow tree holds registered ids too, and `childNodes` does not
|
|
6
|
+
* cross the shadow boundary. Without this, removing a shadow host left every id inside its shadow tree
|
|
7
|
+
* in the registry — pinning the detached nodes for the life of the session (a real leak in long SPA
|
|
8
|
+
* sessions that mount/unmount web components).
|
|
9
|
+
*/
|
|
10
|
+
export declare function unregisterSubtree(node: Node, reg: NodeRegistry): void;
|
|
11
|
+
/**
|
|
12
|
+
* Every OPEN shadow root inside `node`'s subtree (its own + nested). Used to release the per-root
|
|
13
|
+
* MutationObservers when a host is removed — otherwise the observer keeps running against a detached
|
|
14
|
+
* tree and the strong ShadowRoot key retains it.
|
|
15
|
+
*/
|
|
16
|
+
export declare function collectShadowRoots(node: Node, out?: ShadowRoot[]): ShadowRoot[];
|
|
17
|
+
/** Mark a node + its subtree as already-handled (so nested adds aren't double-serialized). */
|
|
18
|
+
export declare function markSubtree(node: Node, set: Set<Node>): void;
|
|
19
|
+
//# sourceMappingURL=traverse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../../../src/features/replay/engine/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAO9C;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAKrE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAE,UAAU,EAAO,GAAG,UAAU,EAAE,CAQnF;AAED,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAG5D"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** The open shadow root of a node, if any. Closed roots are invisible to us by design. */
|
|
2
|
+
function shadowOf(node) {
|
|
3
|
+
return node.shadowRoot ?? null;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Unregister a node and its whole subtree (on removal — descendants' ids go stale).
|
|
7
|
+
*
|
|
8
|
+
* Recurses OPEN shadow roots: a host's shadow tree holds registered ids too, and `childNodes` does not
|
|
9
|
+
* cross the shadow boundary. Without this, removing a shadow host left every id inside its shadow tree
|
|
10
|
+
* in the registry — pinning the detached nodes for the life of the session (a real leak in long SPA
|
|
11
|
+
* sessions that mount/unmount web components).
|
|
12
|
+
*/
|
|
13
|
+
export function unregisterSubtree(node, reg) {
|
|
14
|
+
reg.remove(node);
|
|
15
|
+
const sr = shadowOf(node);
|
|
16
|
+
if (sr)
|
|
17
|
+
sr.childNodes.forEach((c) => unregisterSubtree(c, reg));
|
|
18
|
+
node.childNodes.forEach((c) => unregisterSubtree(c, reg));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Every OPEN shadow root inside `node`'s subtree (its own + nested). Used to release the per-root
|
|
22
|
+
* MutationObservers when a host is removed — otherwise the observer keeps running against a detached
|
|
23
|
+
* tree and the strong ShadowRoot key retains it.
|
|
24
|
+
*/
|
|
25
|
+
export function collectShadowRoots(node, out = []) {
|
|
26
|
+
const sr = shadowOf(node);
|
|
27
|
+
if (sr) {
|
|
28
|
+
out.push(sr);
|
|
29
|
+
sr.childNodes.forEach((c) => collectShadowRoots(c, out));
|
|
30
|
+
}
|
|
31
|
+
node.childNodes.forEach((c) => collectShadowRoots(c, out));
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
/** Mark a node + its subtree as already-handled (so nested adds aren't double-serialized). */
|
|
35
|
+
export function markSubtree(node, set) {
|
|
36
|
+
set.add(node);
|
|
37
|
+
node.childNodes.forEach((c) => markSubtree(c, set));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=traverse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../../../src/features/replay/engine/traverse.ts"],"names":[],"mappings":"AAEA,0FAA0F;AAC1F,SAAS,QAAQ,CAAC,IAAU;IAC1B,OAAQ,IAAgB,CAAC,UAAU,IAAI,IAAI,CAAC;AAC9C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAU,EAAE,GAAiB;IAC7D,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,EAAE;QAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAU,EAAE,MAAoB,EAAE;IACnE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,EAAE,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,WAAW,CAAC,IAAU,EAAE,GAAc;IACpD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACd,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Our own serialized-DOM node model. Compact discriminated union (short `t` tags + short keys) —
|
|
3
|
+
* size matters and we own both the recorder and the player, so the format is co-designed.
|
|
4
|
+
*/
|
|
5
|
+
export type NodeId = number;
|
|
6
|
+
export type SNode = SDocument | SDocType | SElement | SText | SComment;
|
|
7
|
+
/** One captured constructable stylesheet: a stable `id` (so deltas can target it) + its rule text. */
|
|
8
|
+
export interface AdoptedSheet {
|
|
9
|
+
id: number;
|
|
10
|
+
css: string;
|
|
11
|
+
}
|
|
12
|
+
export interface SDocument {
|
|
13
|
+
t: 'doc';
|
|
14
|
+
id: NodeId;
|
|
15
|
+
children: SNode[];
|
|
16
|
+
/** Serialized `document.adoptedStyleSheets` (the rrweb #1567 gap — captured natively, with ids). */
|
|
17
|
+
adoptedStyles?: AdoptedSheet[];
|
|
18
|
+
}
|
|
19
|
+
export interface SDocType {
|
|
20
|
+
t: 'dt';
|
|
21
|
+
id: NodeId;
|
|
22
|
+
name: string;
|
|
23
|
+
publicId: string;
|
|
24
|
+
systemId: string;
|
|
25
|
+
}
|
|
26
|
+
export interface SElement {
|
|
27
|
+
t: 'el';
|
|
28
|
+
id: NodeId;
|
|
29
|
+
tag: string;
|
|
30
|
+
ns?: 'svg' | 'math';
|
|
31
|
+
attrs: Record<string, string>;
|
|
32
|
+
children: SNode[];
|
|
33
|
+
/**
|
|
34
|
+
* Open shadow root attached to this element (web components). Closed roots are inaccessible
|
|
35
|
+
* (`element.shadowRoot` is null) and are never captured. Light-DOM children stay in `children`, so
|
|
36
|
+
* the player rebuilds host + shadow + light DOM and the browser distributes `<slot>`s natively.
|
|
37
|
+
*/
|
|
38
|
+
shadow?: SShadow;
|
|
39
|
+
}
|
|
40
|
+
/** An inlined external resource (currently web fonts). `css` is a rewritten `@font-face` block with
|
|
41
|
+
* its `src url()` swapped to a `data:` URL; the player appends it as a stylesheet so the font renders
|
|
42
|
+
* even when the original is cross-origin/non-CORS/offline. Hash-addressed → emitted once, deduped. */
|
|
43
|
+
export interface SResource {
|
|
44
|
+
hash: string;
|
|
45
|
+
kind: 'font';
|
|
46
|
+
css: string;
|
|
47
|
+
}
|
|
48
|
+
/** A captured open shadow root: its own registry id (so deltas can target it as a parent), its
|
|
49
|
+
* subtree, and its own adoptedStyleSheets. */
|
|
50
|
+
export interface SShadow {
|
|
51
|
+
mode: 'open';
|
|
52
|
+
id: NodeId;
|
|
53
|
+
children: SNode[];
|
|
54
|
+
adoptedStyles?: AdoptedSheet[];
|
|
55
|
+
}
|
|
56
|
+
export interface SText {
|
|
57
|
+
t: 'tx';
|
|
58
|
+
id: NodeId;
|
|
59
|
+
value: string;
|
|
60
|
+
}
|
|
61
|
+
export interface SComment {
|
|
62
|
+
t: 'cm';
|
|
63
|
+
id: NodeId;
|
|
64
|
+
value: string;
|
|
65
|
+
}
|
|
66
|
+
export interface SnapshotOptions {
|
|
67
|
+
/** Mask all text nodes (except <style>/<script>). Default true. */
|
|
68
|
+
maskAllText?: boolean;
|
|
69
|
+
/** Mask input/textarea values + sensitive attributes; block password fields. Default true. */
|
|
70
|
+
maskAllInputs?: boolean;
|
|
71
|
+
/** Extra CSS selectors whose subtree text is masked even when maskAllText is off. `contenteditable`
|
|
72
|
+
* + `[data-scalebun-mask]` are always masked in addition to these. Invalid selectors are ignored. */
|
|
73
|
+
maskSelectors?: string[];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A stylesheet a CSSOM delta targets: an owned sheet via its `<style>`/`<link>` node id, or a
|
|
77
|
+
* constructable (adopted) sheet via its synthetic `adopted` id (see `cssom.ts`).
|
|
78
|
+
*/
|
|
79
|
+
export type SheetRef = {
|
|
80
|
+
node: NodeId;
|
|
81
|
+
} | {
|
|
82
|
+
adopted: number;
|
|
83
|
+
};
|
|
84
|
+
/** Incremental delta ops (a `frame` delta is a `Mutation[]`). Each references registry ids. */
|
|
85
|
+
export type Mutation = {
|
|
86
|
+
op: 'add';
|
|
87
|
+
parent: NodeId;
|
|
88
|
+
next: NodeId | null;
|
|
89
|
+
node: SNode;
|
|
90
|
+
} | {
|
|
91
|
+
op: 'remove';
|
|
92
|
+
parent: NodeId;
|
|
93
|
+
id: NodeId;
|
|
94
|
+
} | {
|
|
95
|
+
op: 'attr';
|
|
96
|
+
id: NodeId;
|
|
97
|
+
key: string;
|
|
98
|
+
value: string | null;
|
|
99
|
+
} | {
|
|
100
|
+
op: 'text';
|
|
101
|
+
id: NodeId;
|
|
102
|
+
value: string;
|
|
103
|
+
} | {
|
|
104
|
+
op: 'sheet';
|
|
105
|
+
sheet: SheetRef;
|
|
106
|
+
action: 'insert';
|
|
107
|
+
rule: string;
|
|
108
|
+
index: number;
|
|
109
|
+
} | {
|
|
110
|
+
op: 'sheet';
|
|
111
|
+
sheet: SheetRef;
|
|
112
|
+
action: 'delete';
|
|
113
|
+
index: number;
|
|
114
|
+
} | {
|
|
115
|
+
op: 'sheet';
|
|
116
|
+
sheet: SheetRef;
|
|
117
|
+
action: 'replace';
|
|
118
|
+
rules: string[];
|
|
119
|
+
} | {
|
|
120
|
+
op: 'canvas';
|
|
121
|
+
id: NodeId;
|
|
122
|
+
data: string;
|
|
123
|
+
w: number;
|
|
124
|
+
h: number;
|
|
125
|
+
} | {
|
|
126
|
+
op: 'iframe';
|
|
127
|
+
id: NodeId;
|
|
128
|
+
doc: SNode;
|
|
129
|
+
} | {
|
|
130
|
+
op: 'shadow';
|
|
131
|
+
host: NodeId;
|
|
132
|
+
shadow: SShadow;
|
|
133
|
+
} | {
|
|
134
|
+
op: 'resource';
|
|
135
|
+
resources: SResource[];
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/features/replay/engine/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/features/replay/engine/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|