@osdk/react-devtools 0.5.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/CHANGELOG.md +79 -0
- package/build/esm/DevToolsContext.js +19 -0
- package/build/esm/DevToolsContext.js.map +1 -0
- package/build/esm/components/ActionMetrics.js +89 -0
- package/build/esm/components/ActionMetrics.js.map +1 -0
- package/build/esm/components/BubbleChart.js +175 -0
- package/build/esm/components/BubbleChart.js.map +1 -0
- package/build/esm/components/BubbleChart.module.scss.js +6 -0
- package/build/esm/components/CacheInspectorTab.js +291 -0
- package/build/esm/components/CacheInspectorTab.js.map +1 -0
- package/build/esm/components/CacheInspectorTab.module.scss.js +39 -0
- package/build/esm/components/CacheMetrics.js +55 -0
- package/build/esm/components/CacheMetrics.js.map +1 -0
- package/build/esm/components/ComponentCard.js +124 -0
- package/build/esm/components/ComponentCard.js.map +1 -0
- package/build/esm/components/ComponentCard.module.scss.js +31 -0
- package/build/esm/components/ComputeTab.js +175 -0
- package/build/esm/components/ComputeTab.js.map +1 -0
- package/build/esm/components/CopyableCodeBlock.js +49 -0
- package/build/esm/components/CopyableCodeBlock.js.map +1 -0
- package/build/esm/components/CopyableCodeBlock.module.scss.js +10 -0
- package/build/esm/components/DebuggingTab.js +342 -0
- package/build/esm/components/DebuggingTab.js.map +1 -0
- package/build/esm/components/DebuggingTab.module.scss.js +18 -0
- package/build/esm/components/HookRow.js +180 -0
- package/build/esm/components/HookRow.js.map +1 -0
- package/build/esm/components/HookRow.module.scss.js +16 -0
- package/build/esm/components/ImprovementsTab.js +138 -0
- package/build/esm/components/ImprovementsTab.js.map +1 -0
- package/build/esm/components/ImprovementsTab.module.scss.js +30 -0
- package/build/esm/components/InspectorSelectionHeader.js +65 -0
- package/build/esm/components/InspectorSelectionHeader.js.map +1 -0
- package/build/esm/components/InterceptTab.js +862 -0
- package/build/esm/components/InterceptTab.js.map +1 -0
- package/build/esm/components/InterceptTab.module.scss.js +49 -0
- package/build/esm/components/IssueCard.js +115 -0
- package/build/esm/components/IssueCard.js.map +1 -0
- package/build/esm/components/IssueCard.module.scss.js +24 -0
- package/build/esm/components/LogEntryCard.js +94 -0
- package/build/esm/components/LogEntryCard.js.map +1 -0
- package/build/esm/components/LogEntryCard.module.scss.js +19 -0
- package/build/esm/components/MockEditor.js +316 -0
- package/build/esm/components/MockEditor.js.map +1 -0
- package/build/esm/components/MonitorErrorBoundary.js +64 -0
- package/build/esm/components/MonitorErrorBoundary.js.map +1 -0
- package/build/esm/components/MonitorErrorBoundary.module.scss.js +9 -0
- package/build/esm/components/MonitoringPanel.js +434 -0
- package/build/esm/components/MonitoringPanel.js.map +1 -0
- package/build/esm/components/MonitoringPanel.module.scss.js +81 -0
- package/build/esm/components/ObjectLoadingMetrics.js +60 -0
- package/build/esm/components/ObjectLoadingMetrics.js.map +1 -0
- package/build/esm/components/OsdkAppErrorBoundary.js +68 -0
- package/build/esm/components/OsdkAppErrorBoundary.js.map +1 -0
- package/build/esm/components/OsdkDevTools.js +40 -0
- package/build/esm/components/OsdkDevTools.js.map +1 -0
- package/build/esm/components/OverrideEditor.js +197 -0
- package/build/esm/components/OverrideEditor.js.map +1 -0
- package/build/esm/components/PerformanceTab.js +297 -0
- package/build/esm/components/PerformanceTab.js.map +1 -0
- package/build/esm/components/PrimitiveSelectionPanel.js +220 -0
- package/build/esm/components/PrimitiveSelectionPanel.js.map +1 -0
- package/build/esm/components/PrimitiveSelectionPanel.module.scss.js +26 -0
- package/build/esm/components/issueTypes.js +2 -0
- package/build/esm/components/issueTypes.js.map +1 -0
- package/build/esm/components/resolveComponentName.js +57 -0
- package/build/esm/components/resolveComponentName.js.map +1 -0
- package/build/esm/components/testHelpers.js +312 -0
- package/build/esm/components/testHelpers.js.map +1 -0
- package/build/esm/css.d.ts +20 -0
- package/build/esm/fiber/DegradationNotice.js +193 -0
- package/build/esm/fiber/DegradationNotice.js.map +1 -0
- package/build/esm/fiber/DevtoolsHook.js +252 -0
- package/build/esm/fiber/DevtoolsHook.js.map +1 -0
- package/build/esm/fiber/FiberAccess.js +65 -0
- package/build/esm/fiber/FiberAccess.js.map +1 -0
- package/build/esm/fiber/FiberInspection.js +140 -0
- package/build/esm/fiber/FiberInspection.js.map +1 -0
- package/build/esm/fiber/FiberTags.js +52 -0
- package/build/esm/fiber/FiberTags.js.map +1 -0
- package/build/esm/fiber/HookStateInspector.js +254 -0
- package/build/esm/fiber/HookStateInspector.js.map +1 -0
- package/build/esm/fiber/SafeFiberOperation.js +35 -0
- package/build/esm/fiber/SafeFiberOperation.js.map +1 -0
- package/build/esm/fiber/capabilities.js +180 -0
- package/build/esm/fiber/capabilities.js.map +1 -0
- package/build/esm/fiber/traverseFiber.js +129 -0
- package/build/esm/fiber/traverseFiber.js.map +1 -0
- package/build/esm/fiber/types.js +2 -0
- package/build/esm/fiber/types.js.map +1 -0
- package/build/esm/fiber/validation.js +155 -0
- package/build/esm/fiber/validation.js.map +1 -0
- package/build/esm/hooks/createPollingStore.js +81 -0
- package/build/esm/hooks/createPollingStore.js.map +1 -0
- package/build/esm/hooks/useActiveComponents.js +27 -0
- package/build/esm/hooks/useActiveComponents.js.map +1 -0
- package/build/esm/hooks/useComponentRegistry.js +25 -0
- package/build/esm/hooks/useComponentRegistry.js.map +1 -0
- package/build/esm/hooks/useComputeSelectors.js +43 -0
- package/build/esm/hooks/useComputeSelectors.js.map +1 -0
- package/build/esm/hooks/useConsoleLogs.js +46 -0
- package/build/esm/hooks/useConsoleLogs.js.map +1 -0
- package/build/esm/hooks/useInspectorSelection.js +93 -0
- package/build/esm/hooks/useInspectorSelection.js.map +1 -0
- package/build/esm/hooks/useMetrics.js +23 -0
- package/build/esm/hooks/useMetrics.js.map +1 -0
- package/build/esm/hooks/usePersistedState.js +89 -0
- package/build/esm/hooks/usePersistedState.js.map +1 -0
- package/build/esm/hooks/useRecommendations.js +123 -0
- package/build/esm/hooks/useRecommendations.js.map +1 -0
- package/build/esm/hooks/useSharedTick.js +49 -0
- package/build/esm/hooks/useSharedTick.js.map +1 -0
- package/build/esm/hooks/useTimeElapsed.js +51 -0
- package/build/esm/hooks/useTimeElapsed.js.map +1 -0
- package/build/esm/hooks/useTrackerSubscription.js +97 -0
- package/build/esm/hooks/useTrackerSubscription.js.map +1 -0
- package/build/esm/hooks/useUnusedFieldAnalysis.js +99 -0
- package/build/esm/hooks/useUnusedFieldAnalysis.js.map +1 -0
- package/build/esm/index.js +31 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/inspector/ClickToInspectSystem.js +228 -0
- package/build/esm/inspector/ClickToInspectSystem.js.map +1 -0
- package/build/esm/inspector/components/ComponentLabel.js +175 -0
- package/build/esm/inspector/components/ComponentLabel.js.map +1 -0
- package/build/esm/inspector/components/ComponentLabel.module.scss.js +12 -0
- package/build/esm/inspector/components/InspectorBanner.js +79 -0
- package/build/esm/inspector/components/InspectorBanner.js.map +1 -0
- package/build/esm/inspector/components/InspectorOverlay.js +149 -0
- package/build/esm/inspector/components/InspectorOverlay.js.map +1 -0
- package/build/esm/inspector/components/SelectionHighlight.js +74 -0
- package/build/esm/inspector/components/SelectionHighlight.js.map +1 -0
- package/build/esm/inspector/createClickToInspect.js +21 -0
- package/build/esm/inspector/createClickToInspect.js.map +1 -0
- package/build/esm/inspector/hooks/useAnimatedBounds.js +167 -0
- package/build/esm/inspector/hooks/useAnimatedBounds.js.map +1 -0
- package/build/esm/inspector/index.js +40 -0
- package/build/esm/inspector/index.js.map +1 -0
- package/build/esm/inspector/inspectorController.js +328 -0
- package/build/esm/inspector/inspectorController.js.map +1 -0
- package/build/esm/inspector/types.js +2 -0
- package/build/esm/inspector/types.js.map +1 -0
- package/build/esm/inspector/utils/elementBounds.js +72 -0
- package/build/esm/inspector/utils/elementBounds.js.map +1 -0
- package/build/esm/inspector/utils/interpolation.js +26 -0
- package/build/esm/inspector/utils/interpolation.js.map +1 -0
- package/build/esm/inspector/utils/labelPositioning.js +62 -0
- package/build/esm/inspector/utils/labelPositioning.js.map +1 -0
- package/build/esm/mocking/MockCacheKeyGenerator.js +109 -0
- package/build/esm/mocking/MockCacheKeyGenerator.js.map +1 -0
- package/build/esm/mocking/MockManager.js +281 -0
- package/build/esm/mocking/MockManager.js.map +1 -0
- package/build/esm/prototyping/PrototypeOverrideStore.js +66 -0
- package/build/esm/prototyping/PrototypeOverrideStore.js.map +1 -0
- package/build/esm/prototyping/index.js +18 -0
- package/build/esm/prototyping/index.js.map +1 -0
- package/build/esm/public/vite.js +19 -0
- package/build/esm/public/vite.js.map +1 -0
- package/build/esm/register.js +41 -0
- package/build/esm/register.js.map +1 -0
- package/build/esm/scss.d.ts +20 -0
- package/build/esm/store/ComputeStore.js +269 -0
- package/build/esm/store/ComputeStore.js.map +1 -0
- package/build/esm/store/ConsoleLogStore.js +289 -0
- package/build/esm/store/ConsoleLogStore.js.map +1 -0
- package/build/esm/store/MetricsStore.js +428 -0
- package/build/esm/store/MetricsStore.js.map +1 -0
- package/build/esm/store/MonitorStore.js +288 -0
- package/build/esm/store/MonitorStore.js.map +1 -0
- package/build/esm/store/SubscribableStore.js +38 -0
- package/build/esm/store/SubscribableStore.js.map +1 -0
- package/build/esm/store/WindowErrorStore.js +195 -0
- package/build/esm/store/WindowErrorStore.js.map +1 -0
- package/build/esm/styles.css +19441 -0
- package/build/esm/styles.js +31 -0
- package/build/esm/styles.js.map +1 -0
- package/build/esm/types/compute.js +2 -0
- package/build/esm/types/compute.js.map +1 -0
- package/build/esm/types/emissions.js +2 -0
- package/build/esm/types/emissions.js.map +1 -0
- package/build/esm/types/index.js +23 -0
- package/build/esm/types/index.js.map +1 -0
- package/build/esm/utils/ActionLifecycleTracker.js +178 -0
- package/build/esm/utils/ActionLifecycleTracker.js.map +1 -0
- package/build/esm/utils/CacheEfficiencyAnalyzer.js +198 -0
- package/build/esm/utils/CacheEfficiencyAnalyzer.js.map +1 -0
- package/build/esm/utils/CircularBuffer.js +96 -0
- package/build/esm/utils/CircularBuffer.js.map +1 -0
- package/build/esm/utils/ComponentContextCapture.js +215 -0
- package/build/esm/utils/ComponentContextCapture.js.map +1 -0
- package/build/esm/utils/ComponentPrimitiveDiscovery.js +173 -0
- package/build/esm/utils/ComponentPrimitiveDiscovery.js.map +1 -0
- package/build/esm/utils/ComponentQueryRegistry.js +340 -0
- package/build/esm/utils/ComponentQueryRegistry.js.map +1 -0
- package/build/esm/utils/ComputeMonitor.js +199 -0
- package/build/esm/utils/ComputeMonitor.js.map +1 -0
- package/build/esm/utils/EventTimeline.js +130 -0
- package/build/esm/utils/EventTimeline.js.map +1 -0
- package/build/esm/utils/LinkTraversalTracker.js +116 -0
- package/build/esm/utils/LinkTraversalTracker.js.map +1 -0
- package/build/esm/utils/MockDataGenerator.js +473 -0
- package/build/esm/utils/MockDataGenerator.js.map +1 -0
- package/build/esm/utils/ObservableClientMonitor.js +768 -0
- package/build/esm/utils/ObservableClientMonitor.js.map +1 -0
- package/build/esm/utils/PerformanceRecommendationEngine.js +185 -0
- package/build/esm/utils/PerformanceRecommendationEngine.js.map +1 -0
- package/build/esm/utils/PropertyAccessTracker.js +238 -0
- package/build/esm/utils/PropertyAccessTracker.js.map +1 -0
- package/build/esm/utils/RecommendationMatcher.js +53 -0
- package/build/esm/utils/RecommendationMatcher.js.map +1 -0
- package/build/esm/utils/SubscriptionTracker.js +132 -0
- package/build/esm/utils/SubscriptionTracker.js.map +1 -0
- package/build/esm/utils/UnusedFieldAnalyzer.js +186 -0
- package/build/esm/utils/UnusedFieldAnalyzer.js.map +1 -0
- package/build/esm/utils/WaterfallDetector.js +200 -0
- package/build/esm/utils/WaterfallDetector.js.map +1 -0
- package/build/esm/utils/computePayload.js +37 -0
- package/build/esm/utils/computePayload.js.map +1 -0
- package/build/esm/utils/computeRequest.js +29 -0
- package/build/esm/utils/computeRequest.js.map +1 -0
- package/build/esm/utils/format.js +69 -0
- package/build/esm/utils/format.js.map +1 -0
- package/build/esm/utils/logger.js +31 -0
- package/build/esm/utils/logger.js.map +1 -0
- package/build/esm/vite/constants.js +18 -0
- package/build/esm/vite/constants.js.map +1 -0
- package/build/esm/vite/hookInstaller.js +99 -0
- package/build/esm/vite/hookInstaller.js.map +1 -0
- package/build/esm/vite/index.js +77 -0
- package/build/esm/vite/index.js.map +1 -0
- package/build/types/DevToolsContext.d.ts +3 -0
- package/build/types/DevToolsContext.d.ts.map +1 -0
- package/build/types/components/ActionMetrics.d.ts +6 -0
- package/build/types/components/ActionMetrics.d.ts.map +1 -0
- package/build/types/components/BubbleChart.d.ts +10 -0
- package/build/types/components/BubbleChart.d.ts.map +1 -0
- package/build/types/components/CacheInspectorTab.d.ts +6 -0
- package/build/types/components/CacheInspectorTab.d.ts.map +1 -0
- package/build/types/components/CacheMetrics.d.ts +6 -0
- package/build/types/components/CacheMetrics.d.ts.map +1 -0
- package/build/types/components/ComponentCard.d.ts +13 -0
- package/build/types/components/ComponentCard.d.ts.map +1 -0
- package/build/types/components/ComputeTab.d.ts +6 -0
- package/build/types/components/ComputeTab.d.ts.map +1 -0
- package/build/types/components/CopyableCodeBlock.d.ts +7 -0
- package/build/types/components/CopyableCodeBlock.d.ts.map +1 -0
- package/build/types/components/DebuggingTab.d.ts +6 -0
- package/build/types/components/DebuggingTab.d.ts.map +1 -0
- package/build/types/components/HookRow.d.ts +9 -0
- package/build/types/components/HookRow.d.ts.map +1 -0
- package/build/types/components/ImprovementsTab.d.ts +7 -0
- package/build/types/components/ImprovementsTab.d.ts.map +1 -0
- package/build/types/components/InspectorSelectionHeader.d.ts +12 -0
- package/build/types/components/InspectorSelectionHeader.d.ts.map +1 -0
- package/build/types/components/InterceptTab.d.ts +126 -0
- package/build/types/components/InterceptTab.d.ts.map +1 -0
- package/build/types/components/IssueCard.d.ts +8 -0
- package/build/types/components/IssueCard.d.ts.map +1 -0
- package/build/types/components/LogEntryCard.d.ts +7 -0
- package/build/types/components/LogEntryCard.d.ts.map +1 -0
- package/build/types/components/MockEditor.d.ts +58 -0
- package/build/types/components/MockEditor.d.ts.map +1 -0
- package/build/types/components/MonitorErrorBoundary.d.ts +16 -0
- package/build/types/components/MonitorErrorBoundary.d.ts.map +1 -0
- package/build/types/components/MonitoringPanel.d.ts +8 -0
- package/build/types/components/MonitoringPanel.d.ts.map +1 -0
- package/build/types/components/ObjectLoadingMetrics.d.ts +7 -0
- package/build/types/components/ObjectLoadingMetrics.d.ts.map +1 -0
- package/build/types/components/OsdkAppErrorBoundary.d.ts +18 -0
- package/build/types/components/OsdkAppErrorBoundary.d.ts.map +1 -0
- package/build/types/components/OsdkDevTools.d.ts +2 -0
- package/build/types/components/OsdkDevTools.d.ts.map +1 -0
- package/build/types/components/OverrideEditor.d.ts +26 -0
- package/build/types/components/OverrideEditor.d.ts.map +1 -0
- package/build/types/components/PerformanceTab.d.ts +8 -0
- package/build/types/components/PerformanceTab.d.ts.map +1 -0
- package/build/types/components/PrimitiveSelectionPanel.d.ts +28 -0
- package/build/types/components/PrimitiveSelectionPanel.d.ts.map +1 -0
- package/build/types/components/issueTypes.d.ts +16 -0
- package/build/types/components/issueTypes.d.ts.map +1 -0
- package/build/types/components/resolveComponentName.d.ts +3 -0
- package/build/types/components/resolveComponentName.d.ts.map +1 -0
- package/build/types/components/testHelpers.d.ts +2 -0
- package/build/types/components/testHelpers.d.ts.map +1 -0
- package/build/types/css.d.d.ts +4 -0
- package/build/types/css.d.d.ts.map +1 -0
- package/build/types/fiber/DegradationNotice.d.ts +8 -0
- package/build/types/fiber/DegradationNotice.d.ts.map +1 -0
- package/build/types/fiber/DevtoolsHook.d.ts +7 -0
- package/build/types/fiber/DevtoolsHook.d.ts.map +1 -0
- package/build/types/fiber/FiberAccess.d.ts +2 -0
- package/build/types/fiber/FiberAccess.d.ts.map +1 -0
- package/build/types/fiber/FiberInspection.d.ts +6 -0
- package/build/types/fiber/FiberInspection.d.ts.map +1 -0
- package/build/types/fiber/FiberTags.d.ts +33 -0
- package/build/types/fiber/FiberTags.d.ts.map +1 -0
- package/build/types/fiber/HookStateInspector.d.ts +45 -0
- package/build/types/fiber/HookStateInspector.d.ts.map +1 -0
- package/build/types/fiber/SafeFiberOperation.d.ts +7 -0
- package/build/types/fiber/SafeFiberOperation.d.ts.map +1 -0
- package/build/types/fiber/capabilities.d.ts +38 -0
- package/build/types/fiber/capabilities.d.ts.map +1 -0
- package/build/types/fiber/traverseFiber.d.ts +5 -0
- package/build/types/fiber/traverseFiber.d.ts.map +1 -0
- package/build/types/fiber/types.d.ts +87 -0
- package/build/types/fiber/types.d.ts.map +1 -0
- package/build/types/fiber/validation.d.ts +10 -0
- package/build/types/fiber/validation.d.ts.map +1 -0
- package/build/types/hooks/createPollingStore.d.ts +5 -0
- package/build/types/hooks/createPollingStore.d.ts.map +1 -0
- package/build/types/hooks/useActiveComponents.d.ts +3 -0
- package/build/types/hooks/useActiveComponents.d.ts.map +1 -0
- package/build/types/hooks/useComponentRegistry.d.ts +3 -0
- package/build/types/hooks/useComponentRegistry.d.ts.map +1 -0
- package/build/types/hooks/useComputeSelectors.d.ts +7 -0
- package/build/types/hooks/useComputeSelectors.d.ts.map +1 -0
- package/build/types/hooks/useConsoleLogs.d.ts +7 -0
- package/build/types/hooks/useConsoleLogs.d.ts.map +1 -0
- package/build/types/hooks/useInspectorSelection.d.ts +9 -0
- package/build/types/hooks/useInspectorSelection.d.ts.map +1 -0
- package/build/types/hooks/useMetrics.d.ts +3 -0
- package/build/types/hooks/useMetrics.d.ts.map +1 -0
- package/build/types/hooks/usePersistedState.d.ts +1 -0
- package/build/types/hooks/usePersistedState.d.ts.map +1 -0
- package/build/types/hooks/useRecommendations.d.ts +10 -0
- package/build/types/hooks/useRecommendations.d.ts.map +1 -0
- package/build/types/hooks/useSharedTick.d.ts +1 -0
- package/build/types/hooks/useSharedTick.d.ts.map +1 -0
- package/build/types/hooks/useTimeElapsed.d.ts +1 -0
- package/build/types/hooks/useTimeElapsed.d.ts.map +1 -0
- package/build/types/hooks/useTrackerSubscription.d.ts +16 -0
- package/build/types/hooks/useTrackerSubscription.d.ts.map +1 -0
- package/build/types/hooks/useUnusedFieldAnalysis.d.ts +8 -0
- package/build/types/hooks/useUnusedFieldAnalysis.d.ts.map +1 -0
- package/build/types/index.d.ts +21 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/inspector/ClickToInspectSystem.d.ts +40 -0
- package/build/types/inspector/ClickToInspectSystem.d.ts.map +1 -0
- package/build/types/inspector/components/ComponentLabel.d.ts +3 -0
- package/build/types/inspector/components/ComponentLabel.d.ts.map +1 -0
- package/build/types/inspector/components/InspectorBanner.d.ts +5 -0
- package/build/types/inspector/components/InspectorBanner.d.ts.map +1 -0
- package/build/types/inspector/components/InspectorOverlay.d.ts +3 -0
- package/build/types/inspector/components/InspectorOverlay.d.ts.map +1 -0
- package/build/types/inspector/components/SelectionHighlight.d.ts +3 -0
- package/build/types/inspector/components/SelectionHighlight.d.ts.map +1 -0
- package/build/types/inspector/createClickToInspect.d.ts +3 -0
- package/build/types/inspector/createClickToInspect.d.ts.map +1 -0
- package/build/types/inspector/hooks/useAnimatedBounds.d.ts +2 -0
- package/build/types/inspector/hooks/useAnimatedBounds.d.ts.map +1 -0
- package/build/types/inspector/index.d.ts +13 -0
- package/build/types/inspector/index.d.ts.map +1 -0
- package/build/types/inspector/inspectorController.d.ts +2 -0
- package/build/types/inspector/inspectorController.d.ts.map +1 -0
- package/build/types/inspector/types.d.ts +94 -0
- package/build/types/inspector/types.d.ts.map +1 -0
- package/build/types/inspector/utils/elementBounds.d.ts +3 -0
- package/build/types/inspector/utils/elementBounds.d.ts.map +1 -0
- package/build/types/inspector/utils/interpolation.d.ts +7 -0
- package/build/types/inspector/utils/interpolation.d.ts.map +1 -0
- package/build/types/inspector/utils/labelPositioning.d.ts +3 -0
- package/build/types/inspector/utils/labelPositioning.d.ts.map +1 -0
- package/build/types/mocking/MockCacheKeyGenerator.d.ts +41 -0
- package/build/types/mocking/MockCacheKeyGenerator.d.ts.map +1 -0
- package/build/types/mocking/MockManager.d.ts +103 -0
- package/build/types/mocking/MockManager.d.ts.map +1 -0
- package/build/types/prototyping/PrototypeOverrideStore.d.ts +33 -0
- package/build/types/prototyping/PrototypeOverrideStore.d.ts.map +1 -0
- package/build/types/prototyping/index.d.ts +1 -0
- package/build/types/prototyping/index.d.ts.map +1 -0
- package/build/types/public/vite.d.ts +2 -0
- package/build/types/public/vite.d.ts.map +1 -0
- package/build/types/register.d.ts +1 -0
- package/build/types/register.d.ts.map +1 -0
- package/build/types/scss.d.d.ts +6 -0
- package/build/types/scss.d.d.ts.map +1 -0
- package/build/types/store/ComputeStore.d.ts +47 -0
- package/build/types/store/ComputeStore.d.ts.map +1 -0
- package/build/types/store/ConsoleLogStore.d.ts +29 -0
- package/build/types/store/ConsoleLogStore.d.ts.map +1 -0
- package/build/types/store/MetricsStore.d.ts +42 -0
- package/build/types/store/MetricsStore.d.ts.map +1 -0
- package/build/types/store/MonitorStore.d.ts +86 -0
- package/build/types/store/MonitorStore.d.ts.map +1 -0
- package/build/types/store/SubscribableStore.d.ts +6 -0
- package/build/types/store/SubscribableStore.d.ts.map +1 -0
- package/build/types/store/WindowErrorStore.d.ts +32 -0
- package/build/types/store/WindowErrorStore.d.ts.map +1 -0
- package/build/types/styles.d.ts +1 -0
- package/build/types/styles.d.ts.map +1 -0
- package/build/types/types/compute.d.ts +73 -0
- package/build/types/types/compute.d.ts.map +1 -0
- package/build/types/types/emissions.d.ts +24 -0
- package/build/types/types/emissions.d.ts.map +1 -0
- package/build/types/types/index.d.ts +143 -0
- package/build/types/types/index.d.ts.map +1 -0
- package/build/types/utils/ActionLifecycleTracker.d.ts +39 -0
- package/build/types/utils/ActionLifecycleTracker.d.ts.map +1 -0
- package/build/types/utils/CacheEfficiencyAnalyzer.d.ts +45 -0
- package/build/types/utils/CacheEfficiencyAnalyzer.d.ts.map +1 -0
- package/build/types/utils/CircularBuffer.d.ts +18 -0
- package/build/types/utils/CircularBuffer.d.ts.map +1 -0
- package/build/types/utils/ComponentContextCapture.d.ts +29 -0
- package/build/types/utils/ComponentContextCapture.d.ts.map +1 -0
- package/build/types/utils/ComponentPrimitiveDiscovery.d.ts +62 -0
- package/build/types/utils/ComponentPrimitiveDiscovery.d.ts.map +1 -0
- package/build/types/utils/ComponentQueryRegistry.d.ts +91 -0
- package/build/types/utils/ComponentQueryRegistry.d.ts.map +1 -0
- package/build/types/utils/ComputeMonitor.d.ts +14 -0
- package/build/types/utils/ComputeMonitor.d.ts.map +1 -0
- package/build/types/utils/EventTimeline.d.ts +102 -0
- package/build/types/utils/EventTimeline.d.ts.map +1 -0
- package/build/types/utils/LinkTraversalTracker.d.ts +43 -0
- package/build/types/utils/LinkTraversalTracker.d.ts.map +1 -0
- package/build/types/utils/MockDataGenerator.d.ts +23 -0
- package/build/types/utils/MockDataGenerator.d.ts.map +1 -0
- package/build/types/utils/ObservableClientMonitor.d.ts +62 -0
- package/build/types/utils/ObservableClientMonitor.d.ts.map +1 -0
- package/build/types/utils/PerformanceRecommendationEngine.d.ts +67 -0
- package/build/types/utils/PerformanceRecommendationEngine.d.ts.map +1 -0
- package/build/types/utils/PropertyAccessTracker.d.ts +50 -0
- package/build/types/utils/PropertyAccessTracker.d.ts.map +1 -0
- package/build/types/utils/RecommendationMatcher.d.ts +5 -0
- package/build/types/utils/RecommendationMatcher.d.ts.map +1 -0
- package/build/types/utils/SubscriptionTracker.d.ts +17 -0
- package/build/types/utils/SubscriptionTracker.d.ts.map +1 -0
- package/build/types/utils/UnusedFieldAnalyzer.d.ts +46 -0
- package/build/types/utils/UnusedFieldAnalyzer.d.ts.map +1 -0
- package/build/types/utils/WaterfallDetector.d.ts +28 -0
- package/build/types/utils/WaterfallDetector.d.ts.map +1 -0
- package/build/types/utils/computePayload.d.ts +3 -0
- package/build/types/utils/computePayload.d.ts.map +1 -0
- package/build/types/utils/computeRequest.d.ts +20 -0
- package/build/types/utils/computeRequest.d.ts.map +1 -0
- package/build/types/utils/format.d.ts +5 -0
- package/build/types/utils/format.d.ts.map +1 -0
- package/build/types/utils/logger.d.ts +2 -0
- package/build/types/utils/logger.d.ts.map +1 -0
- package/build/types/vite/constants.d.ts +1 -0
- package/build/types/vite/constants.d.ts.map +1 -0
- package/build/types/vite/hookInstaller.d.ts +1 -0
- package/build/types/vite/hookInstaller.d.ts.map +1 -0
- package/build/types/vite/index.d.ts +20 -0
- package/build/types/vite/index.d.ts.map +1 -0
- package/package.json +114 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { CircularBuffer } from "../utils/CircularBuffer.js";
|
|
18
|
+
import { SubscribableStore } from "./SubscribableStore.js";
|
|
19
|
+
const CONSOLE_LEVELS = ["log", "warn", "error", "info", "debug"];
|
|
20
|
+
let entryCounter = 0;
|
|
21
|
+
function nextId() {
|
|
22
|
+
return `console-${++entryCounter}-${Date.now()}`;
|
|
23
|
+
}
|
|
24
|
+
const MAX_DEPTH = 3;
|
|
25
|
+
const MAX_STRING_SIZE = 10240; // 10KB
|
|
26
|
+
const MAX_TOTAL_SIZE = 10240; // 10KB
|
|
27
|
+
|
|
28
|
+
const INTERNAL_FRAME_PATTERN = /ConsoleLogStore|serializeArg|serializeValue|getCallerLocation|capEntrySize|osdkConsoleWrapper/;
|
|
29
|
+
|
|
30
|
+
// BrowserLogger formats calls with %c CSS styling and a "border: 1px solid"
|
|
31
|
+
// pattern from its createStyle(). We filter these from the devtools console
|
|
32
|
+
// because devtools monitors the same operations through its own instrumentation.
|
|
33
|
+
const BROWSER_LOGGER_CSS = "border: 1px solid";
|
|
34
|
+
function isBrowserLoggerCall(args) {
|
|
35
|
+
return typeof args[0] === "string" && args[0].startsWith("%c") && typeof args[1] === "string" && args[1].includes(BROWSER_LOGGER_CSS);
|
|
36
|
+
}
|
|
37
|
+
const CHROME_FRAME_REGEX_PAREN = /at\s+.*?\((.*?):(\d+):\d+\)/;
|
|
38
|
+
const CHROME_FRAME_REGEX_BARE = /at\s+(.*?):(\d+):\d+/;
|
|
39
|
+
const FIREFOX_FRAME_REGEX = /@(.*?):(\d+):\d+/;
|
|
40
|
+
function serializeValue(value, depth, seen) {
|
|
41
|
+
if (value == null) {
|
|
42
|
+
return String(value);
|
|
43
|
+
}
|
|
44
|
+
const type = typeof value;
|
|
45
|
+
if (type === "string") {
|
|
46
|
+
if (depth === 0) {
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
return `"${value}"`;
|
|
50
|
+
}
|
|
51
|
+
if (type === "number" || type === "boolean") {
|
|
52
|
+
return String(value);
|
|
53
|
+
}
|
|
54
|
+
if (type === "bigint") {
|
|
55
|
+
return `BigInt(${String(value)})`;
|
|
56
|
+
}
|
|
57
|
+
if (type === "symbol") {
|
|
58
|
+
return `Symbol(${value.description ?? ""})`;
|
|
59
|
+
}
|
|
60
|
+
if (type === "function") {
|
|
61
|
+
return `[Function: ${value.name || "anonymous"}]`;
|
|
62
|
+
}
|
|
63
|
+
const obj = value;
|
|
64
|
+
if (typeof Node !== "undefined" && obj instanceof Node) {
|
|
65
|
+
return `[HTMLElement: ${obj.tagName ?? "unknown"}]`;
|
|
66
|
+
}
|
|
67
|
+
if (obj instanceof Error) {
|
|
68
|
+
return obj.stack ?? obj.message;
|
|
69
|
+
}
|
|
70
|
+
if (seen.has(obj)) {
|
|
71
|
+
return "[Circular]";
|
|
72
|
+
}
|
|
73
|
+
if (depth >= MAX_DEPTH) {
|
|
74
|
+
if (Array.isArray(obj)) {
|
|
75
|
+
return `[Array(${obj.length})]`;
|
|
76
|
+
}
|
|
77
|
+
return "[Object]";
|
|
78
|
+
}
|
|
79
|
+
seen.add(obj);
|
|
80
|
+
try {
|
|
81
|
+
if (Array.isArray(obj)) {
|
|
82
|
+
const items = [];
|
|
83
|
+
for (let i = 0; i < obj.length; i++) {
|
|
84
|
+
items.push(serializeValue(obj[i], depth + 1, seen));
|
|
85
|
+
}
|
|
86
|
+
return `[${items.join(",")}]`;
|
|
87
|
+
}
|
|
88
|
+
const entries = [];
|
|
89
|
+
for (const key of Object.keys(obj)) {
|
|
90
|
+
const val = serializeValue(obj[key], depth + 1, seen);
|
|
91
|
+
entries.push(`"${key}":${val}`);
|
|
92
|
+
}
|
|
93
|
+
return `{${entries.join(",")}}`;
|
|
94
|
+
} catch {
|
|
95
|
+
return String(obj);
|
|
96
|
+
} finally {
|
|
97
|
+
seen.delete(obj);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function serializeArg(arg) {
|
|
101
|
+
const seen = new WeakSet();
|
|
102
|
+
const result = serializeValue(arg, 0, seen);
|
|
103
|
+
if (result.length > MAX_STRING_SIZE) {
|
|
104
|
+
return result.slice(0, MAX_STRING_SIZE) + "...truncated";
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
function getCallerLocation() {
|
|
109
|
+
const err = new Error();
|
|
110
|
+
const stack = err.stack;
|
|
111
|
+
if (!stack) {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
const lines = stack.split("\n");
|
|
115
|
+
for (const line of lines) {
|
|
116
|
+
if (INTERNAL_FRAME_PATTERN.test(line)) {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
let match = CHROME_FRAME_REGEX_PAREN.exec(line);
|
|
120
|
+
if (!match) {
|
|
121
|
+
match = CHROME_FRAME_REGEX_BARE.exec(line);
|
|
122
|
+
}
|
|
123
|
+
if (!match) {
|
|
124
|
+
match = FIREFOX_FRAME_REGEX.exec(line);
|
|
125
|
+
}
|
|
126
|
+
if (match) {
|
|
127
|
+
const filePath = match[1];
|
|
128
|
+
const lineNum = match[2];
|
|
129
|
+
const fileName = filePath.split("/").pop() ?? filePath;
|
|
130
|
+
return `${fileName}:${lineNum}`;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
function capEntrySize(args) {
|
|
136
|
+
let totalSize = 0;
|
|
137
|
+
for (const arg of args) {
|
|
138
|
+
totalSize += arg.length;
|
|
139
|
+
}
|
|
140
|
+
if (totalSize <= MAX_TOTAL_SIZE) {
|
|
141
|
+
return args;
|
|
142
|
+
}
|
|
143
|
+
const result = args.slice();
|
|
144
|
+
while (totalSize > MAX_TOTAL_SIZE) {
|
|
145
|
+
let longestIndex = 0;
|
|
146
|
+
let longestLength = 0;
|
|
147
|
+
for (let i = 0; i < result.length; i++) {
|
|
148
|
+
if (result[i].length > longestLength) {
|
|
149
|
+
longestLength = result[i].length;
|
|
150
|
+
longestIndex = i;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (longestLength <= 40) {
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
const replacement = `...truncated (${longestLength} bytes)`;
|
|
157
|
+
totalSize += replacement.length - longestLength;
|
|
158
|
+
result[longestIndex] = replacement;
|
|
159
|
+
}
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
export class ConsoleLogStore extends SubscribableStore {
|
|
163
|
+
cachedEntries = null;
|
|
164
|
+
originals = new Map();
|
|
165
|
+
wrappers = new Map();
|
|
166
|
+
installed = false;
|
|
167
|
+
suppressed = false;
|
|
168
|
+
capturing = false;
|
|
169
|
+
notifyScheduled = false;
|
|
170
|
+
constructor(capacity = 1000) {
|
|
171
|
+
super();
|
|
172
|
+
this.entries = new CircularBuffer(capacity);
|
|
173
|
+
}
|
|
174
|
+
install() {
|
|
175
|
+
if (this.installed) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
for (const level of CONSOLE_LEVELS) {
|
|
179
|
+
const original = console[level]; // eslint-disable-line no-console
|
|
180
|
+
this.originals.set(level, original);
|
|
181
|
+
const store = this;
|
|
182
|
+
const wrapper = function (...args) {
|
|
183
|
+
// Capture the source synchronously, before any async boundary, so the
|
|
184
|
+
// user's frame is still on the stack. The in-panel `entry.source` is
|
|
185
|
+
// canonical and accurate — verified by ConsoleLogStore.test.ts.
|
|
186
|
+
//
|
|
187
|
+
// Browser DevTools source-link attribution (the clickable link beside
|
|
188
|
+
// each console row) is decided by V8 and follows wherever the original
|
|
189
|
+
// method was *called*. Routing the call through Function.prototype.apply
|
|
190
|
+
// is best-effort; in practice the link may still resolve to the wrapper
|
|
191
|
+
// file in some Chromium versions. There is no fully-portable JS-level
|
|
192
|
+
// mitigation; if needed, prefer the panel-side source field.
|
|
193
|
+
//
|
|
194
|
+
// Reentrancy note: capture work runs in queueMicrotask, so `capturing`
|
|
195
|
+
// resets between the wrapper microtask and any nested microtask. A
|
|
196
|
+
// getter that calls console.log during serialization may therefore be
|
|
197
|
+
// captured (one extra entry, no infinite loop). Strict synchronous
|
|
198
|
+
// reentrancy guarding is incompatible with the microtask deferral that
|
|
199
|
+
// makes the source attribution improvement possible.
|
|
200
|
+
const skipCapture = store.suppressed || store.capturing || isBrowserLoggerCall(args);
|
|
201
|
+
const source = skipCapture ? undefined : getCallerLocation();
|
|
202
|
+
Function.prototype.apply.call(original, this ?? console, args);
|
|
203
|
+
if (skipCapture) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
queueMicrotask(() => {
|
|
207
|
+
if (store.capturing) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
store.capturing = true;
|
|
211
|
+
try {
|
|
212
|
+
const serializedArgs = capEntrySize(args.map(serializeArg));
|
|
213
|
+
const entry = {
|
|
214
|
+
id: nextId(),
|
|
215
|
+
level,
|
|
216
|
+
args: serializedArgs,
|
|
217
|
+
timestamp: Date.now(),
|
|
218
|
+
...(source !== undefined ? {
|
|
219
|
+
source
|
|
220
|
+
} : {})
|
|
221
|
+
};
|
|
222
|
+
store.entries.push(entry);
|
|
223
|
+
store.cachedEntries = null;
|
|
224
|
+
store.scheduleNotify();
|
|
225
|
+
} catch {} finally {
|
|
226
|
+
store.capturing = false;
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
console[level] = wrapper; // eslint-disable-line no-console
|
|
231
|
+
this.wrappers.set(level, wrapper);
|
|
232
|
+
}
|
|
233
|
+
this.installed = true;
|
|
234
|
+
}
|
|
235
|
+
uninstall() {
|
|
236
|
+
if (!this.installed) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
for (const level of CONSOLE_LEVELS) {
|
|
240
|
+
const original = this.originals.get(level);
|
|
241
|
+
const ourWrapper = this.wrappers.get(level);
|
|
242
|
+
if (original && ourWrapper && console[level] === ourWrapper) {
|
|
243
|
+
// eslint-disable-line no-console
|
|
244
|
+
console[level] = original; // eslint-disable-line no-console
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
this.originals.clear();
|
|
248
|
+
this.wrappers.clear();
|
|
249
|
+
this.installed = false;
|
|
250
|
+
}
|
|
251
|
+
suppress() {
|
|
252
|
+
this.suppressed = true;
|
|
253
|
+
}
|
|
254
|
+
unsuppress() {
|
|
255
|
+
this.suppressed = false;
|
|
256
|
+
}
|
|
257
|
+
getEntries() {
|
|
258
|
+
if (this.cachedEntries != null) {
|
|
259
|
+
return this.cachedEntries;
|
|
260
|
+
}
|
|
261
|
+
this.cachedEntries = this.entries.toArray();
|
|
262
|
+
return this.cachedEntries;
|
|
263
|
+
}
|
|
264
|
+
getSize() {
|
|
265
|
+
return this.entries.getSize();
|
|
266
|
+
}
|
|
267
|
+
clear() {
|
|
268
|
+
this.entries.clear();
|
|
269
|
+
this.cachedEntries = null;
|
|
270
|
+
this.notifySubscribers();
|
|
271
|
+
}
|
|
272
|
+
dispose() {
|
|
273
|
+
this.uninstall();
|
|
274
|
+
this.entries.clear();
|
|
275
|
+
this.cachedEntries = null;
|
|
276
|
+
this.clearSubscribers();
|
|
277
|
+
}
|
|
278
|
+
scheduleNotify() {
|
|
279
|
+
if (this.notifyScheduled) {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
this.notifyScheduled = true;
|
|
283
|
+
queueMicrotask(() => {
|
|
284
|
+
this.notifyScheduled = false;
|
|
285
|
+
this.notifySubscribers();
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=ConsoleLogStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleLogStore.js","names":["CircularBuffer","SubscribableStore","CONSOLE_LEVELS","entryCounter","nextId","Date","now","MAX_DEPTH","MAX_STRING_SIZE","MAX_TOTAL_SIZE","INTERNAL_FRAME_PATTERN","BROWSER_LOGGER_CSS","isBrowserLoggerCall","args","startsWith","includes","CHROME_FRAME_REGEX_PAREN","CHROME_FRAME_REGEX_BARE","FIREFOX_FRAME_REGEX","serializeValue","value","depth","seen","String","type","description","name","obj","Node","tagName","Error","stack","message","has","Array","isArray","length","add","items","i","push","join","entries","key","Object","keys","val","delete","serializeArg","arg","WeakSet","result","slice","getCallerLocation","err","undefined","lines","split","line","test","match","exec","filePath","lineNum","fileName","pop","capEntrySize","totalSize","longestIndex","longestLength","replacement","ConsoleLogStore","cachedEntries","originals","Map","wrappers","installed","suppressed","capturing","notifyScheduled","constructor","capacity","install","level","original","console","set","store","wrapper","skipCapture","source","Function","prototype","apply","call","queueMicrotask","serializedArgs","map","entry","id","timestamp","scheduleNotify","uninstall","get","ourWrapper","clear","suppress","unsuppress","getEntries","toArray","getSize","notifySubscribers","dispose","clearSubscribers"],"sources":["ConsoleLogStore.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CircularBuffer } from \"../utils/CircularBuffer.js\";\nimport { SubscribableStore } from \"./SubscribableStore.js\";\n\nexport type ConsoleLogLevel = \"log\" | \"warn\" | \"error\" | \"info\" | \"debug\";\n\nconst CONSOLE_LEVELS: readonly ConsoleLogLevel[] = [\n \"log\",\n \"warn\",\n \"error\",\n \"info\",\n \"debug\",\n] as const;\n\nexport interface ConsoleLogEntry {\n readonly id: string;\n readonly level: ConsoleLogLevel;\n readonly args: readonly string[];\n readonly timestamp: number;\n readonly source?: string;\n}\n\nlet entryCounter = 0;\n\nfunction nextId(): string {\n return `console-${++entryCounter}-${Date.now()}`;\n}\n\nconst MAX_DEPTH = 3;\nconst MAX_STRING_SIZE = 10240; // 10KB\nconst MAX_TOTAL_SIZE = 10240; // 10KB\n\nconst INTERNAL_FRAME_PATTERN =\n /ConsoleLogStore|serializeArg|serializeValue|getCallerLocation|capEntrySize|osdkConsoleWrapper/;\n\n// BrowserLogger formats calls with %c CSS styling and a \"border: 1px solid\"\n// pattern from its createStyle(). We filter these from the devtools console\n// because devtools monitors the same operations through its own instrumentation.\nconst BROWSER_LOGGER_CSS = \"border: 1px solid\";\nfunction isBrowserLoggerCall(args: unknown[]): boolean {\n return typeof args[0] === \"string\"\n && args[0].startsWith(\"%c\")\n && typeof args[1] === \"string\"\n && args[1].includes(BROWSER_LOGGER_CSS);\n}\n\nconst CHROME_FRAME_REGEX_PAREN = /at\\s+.*?\\((.*?):(\\d+):\\d+\\)/;\nconst CHROME_FRAME_REGEX_BARE = /at\\s+(.*?):(\\d+):\\d+/;\nconst FIREFOX_FRAME_REGEX = /@(.*?):(\\d+):\\d+/;\n\nfunction serializeValue(\n value: unknown,\n depth: number,\n seen: WeakSet<object>,\n): string {\n if (value == null) {\n return String(value);\n }\n\n const type = typeof value;\n\n if (type === \"string\") {\n if (depth === 0) {\n return value as string;\n }\n return `\"${value as string}\"`;\n }\n if (type === \"number\" || type === \"boolean\") {\n return String(value);\n }\n if (type === \"bigint\") {\n return `BigInt(${String(value)})`;\n }\n if (type === \"symbol\") {\n return `Symbol(${(value as symbol).description ?? \"\"})`;\n }\n if (type === \"function\") {\n return `[Function: ${\n (value as (...args: readonly unknown[]) => unknown).name || \"anonymous\"\n }]`;\n }\n\n const obj = value as object;\n\n if (typeof Node !== \"undefined\" && obj instanceof Node) {\n const el = obj as { tagName?: string };\n return `[HTMLElement: ${el.tagName ?? \"unknown\"}]`;\n }\n\n if (obj instanceof Error) {\n return obj.stack ?? obj.message;\n }\n\n if (seen.has(obj)) {\n return \"[Circular]\";\n }\n\n if (depth >= MAX_DEPTH) {\n if (Array.isArray(obj)) {\n return `[Array(${obj.length})]`;\n }\n return \"[Object]\";\n }\n\n seen.add(obj);\n try {\n if (Array.isArray(obj)) {\n const items: string[] = [];\n for (let i = 0; i < obj.length; i++) {\n items.push(serializeValue(obj[i], depth + 1, seen));\n }\n return `[${items.join(\",\")}]`;\n }\n\n const entries: string[] = [];\n for (const key of Object.keys(obj)) {\n const val = serializeValue(\n (obj as Record<string, unknown>)[key],\n depth + 1,\n seen,\n );\n entries.push(`\"${key}\":${val}`);\n }\n return `{${entries.join(\",\")}}`;\n } catch {\n return String(obj);\n } finally {\n seen.delete(obj);\n }\n}\n\nfunction serializeArg(arg: unknown): string {\n const seen = new WeakSet<object>();\n const result = serializeValue(arg, 0, seen);\n if (result.length > MAX_STRING_SIZE) {\n return result.slice(0, MAX_STRING_SIZE) + \"...truncated\";\n }\n return result;\n}\n\nfunction getCallerLocation(): string | undefined {\n const err = new Error();\n const stack = err.stack;\n if (!stack) {\n return undefined;\n }\n\n const lines = stack.split(\"\\n\");\n\n for (const line of lines) {\n if (INTERNAL_FRAME_PATTERN.test(line)) {\n continue;\n }\n\n let match = CHROME_FRAME_REGEX_PAREN.exec(line);\n if (!match) {\n match = CHROME_FRAME_REGEX_BARE.exec(line);\n }\n if (!match) {\n match = FIREFOX_FRAME_REGEX.exec(line);\n }\n\n if (match) {\n const filePath = match[1];\n const lineNum = match[2];\n const fileName = filePath.split(\"/\").pop() ?? filePath;\n return `${fileName}:${lineNum}`;\n }\n }\n\n return undefined;\n}\n\nfunction capEntrySize(args: string[]): string[] {\n let totalSize = 0;\n for (const arg of args) {\n totalSize += arg.length;\n }\n\n if (totalSize <= MAX_TOTAL_SIZE) {\n return args;\n }\n\n const result = args.slice();\n while (totalSize > MAX_TOTAL_SIZE) {\n let longestIndex = 0;\n let longestLength = 0;\n for (let i = 0; i < result.length; i++) {\n if (result[i].length > longestLength) {\n longestLength = result[i].length;\n longestIndex = i;\n }\n }\n if (longestLength <= 40) {\n break;\n }\n const replacement = `...truncated (${longestLength} bytes)`;\n totalSize += replacement.length - longestLength;\n result[longestIndex] = replacement;\n }\n return result;\n}\n\nexport class ConsoleLogStore extends SubscribableStore {\n private readonly entries: CircularBuffer<ConsoleLogEntry>;\n private cachedEntries: readonly ConsoleLogEntry[] | null = null;\n private readonly originals = new Map<\n ConsoleLogLevel,\n (...args: unknown[]) => void\n >();\n private readonly wrappers = new Map<\n ConsoleLogLevel,\n (...args: unknown[]) => void\n >();\n private installed = false;\n private suppressed = false;\n private capturing = false;\n private notifyScheduled = false;\n\n constructor(capacity: number = 1000) {\n super();\n this.entries = new CircularBuffer(capacity);\n }\n\n install(): void {\n if (this.installed) {\n return;\n }\n\n for (const level of CONSOLE_LEVELS) {\n const original = console[level]; // eslint-disable-line no-console\n this.originals.set(level, original);\n\n const store = this;\n const wrapper = function osdkConsoleWrapper(\n this: Console,\n ...args: unknown[]\n ) {\n // Capture the source synchronously, before any async boundary, so the\n // user's frame is still on the stack. The in-panel `entry.source` is\n // canonical and accurate — verified by ConsoleLogStore.test.ts.\n //\n // Browser DevTools source-link attribution (the clickable link beside\n // each console row) is decided by V8 and follows wherever the original\n // method was *called*. Routing the call through Function.prototype.apply\n // is best-effort; in practice the link may still resolve to the wrapper\n // file in some Chromium versions. There is no fully-portable JS-level\n // mitigation; if needed, prefer the panel-side source field.\n //\n // Reentrancy note: capture work runs in queueMicrotask, so `capturing`\n // resets between the wrapper microtask and any nested microtask. A\n // getter that calls console.log during serialization may therefore be\n // captured (one extra entry, no infinite loop). Strict synchronous\n // reentrancy guarding is incompatible with the microtask deferral that\n // makes the source attribution improvement possible.\n const skipCapture = store.suppressed || store.capturing\n || isBrowserLoggerCall(args);\n const source = skipCapture ? undefined : getCallerLocation();\n\n Function.prototype.apply.call(original, this ?? console, args);\n\n if (skipCapture) {\n return;\n }\n\n queueMicrotask(() => {\n if (store.capturing) {\n return;\n }\n store.capturing = true;\n try {\n const serializedArgs = capEntrySize(args.map(serializeArg));\n const entry: ConsoleLogEntry = {\n id: nextId(),\n level,\n args: serializedArgs,\n timestamp: Date.now(),\n ...(source !== undefined ? { source } : {}),\n };\n\n store.entries.push(entry);\n store.cachedEntries = null;\n store.scheduleNotify();\n } catch {\n } finally {\n store.capturing = false;\n }\n });\n };\n\n console[level] = wrapper; // eslint-disable-line no-console\n this.wrappers.set(level, wrapper);\n }\n\n this.installed = true;\n }\n\n uninstall(): void {\n if (!this.installed) {\n return;\n }\n\n for (const level of CONSOLE_LEVELS) {\n const original = this.originals.get(level);\n const ourWrapper = this.wrappers.get(level);\n if (original && ourWrapper && console[level] === ourWrapper) { // eslint-disable-line no-console\n console[level] = original; // eslint-disable-line no-console\n }\n }\n\n this.originals.clear();\n this.wrappers.clear();\n this.installed = false;\n }\n\n suppress(): void {\n this.suppressed = true;\n }\n\n unsuppress(): void {\n this.suppressed = false;\n }\n\n getEntries(): readonly ConsoleLogEntry[] {\n if (this.cachedEntries != null) {\n return this.cachedEntries;\n }\n this.cachedEntries = this.entries.toArray();\n return this.cachedEntries;\n }\n\n getSize(): number {\n return this.entries.getSize();\n }\n\n clear(): void {\n this.entries.clear();\n this.cachedEntries = null;\n this.notifySubscribers();\n }\n\n dispose(): void {\n this.uninstall();\n this.entries.clear();\n this.cachedEntries = null;\n this.clearSubscribers();\n }\n\n private scheduleNotify(): void {\n if (this.notifyScheduled) {\n return;\n }\n this.notifyScheduled = true;\n queueMicrotask(() => {\n this.notifyScheduled = false;\n this.notifySubscribers();\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|