@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,66 @@
|
|
|
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 { SubscribableStore } from "../store/SubscribableStore.js";
|
|
18
|
+
export class PrototypeOverrideStore extends SubscribableStore {
|
|
19
|
+
overrides = new Map();
|
|
20
|
+
signatureToBindingId = new Map();
|
|
21
|
+
setOverride(override) {
|
|
22
|
+
this.overrides.set(override.bindingId, override);
|
|
23
|
+
this.signatureToBindingId.set(override.querySignature, override.bindingId);
|
|
24
|
+
this.notifySubscribers();
|
|
25
|
+
}
|
|
26
|
+
getOverride(bindingId) {
|
|
27
|
+
return this.overrides.get(bindingId);
|
|
28
|
+
}
|
|
29
|
+
getOverrideBySignature(querySignature) {
|
|
30
|
+
const bindingId = this.signatureToBindingId.get(querySignature);
|
|
31
|
+
if (bindingId) {
|
|
32
|
+
return this.overrides.get(bindingId);
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
updateOverride(bindingId, updates) {
|
|
37
|
+
const existing = this.overrides.get(bindingId);
|
|
38
|
+
if (existing) {
|
|
39
|
+
this.overrides.set(bindingId, {
|
|
40
|
+
...existing,
|
|
41
|
+
...updates
|
|
42
|
+
});
|
|
43
|
+
this.notifySubscribers();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
clearOverride(bindingId) {
|
|
47
|
+
const override = this.overrides.get(bindingId);
|
|
48
|
+
if (override) {
|
|
49
|
+
this.signatureToBindingId.delete(override.querySignature);
|
|
50
|
+
this.overrides.delete(bindingId);
|
|
51
|
+
this.notifySubscribers();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
clearAll() {
|
|
55
|
+
this.overrides.clear();
|
|
56
|
+
this.signatureToBindingId.clear();
|
|
57
|
+
this.notifySubscribers();
|
|
58
|
+
}
|
|
59
|
+
getAll() {
|
|
60
|
+
return Array.from(this.overrides.values());
|
|
61
|
+
}
|
|
62
|
+
hasOverride(querySignature) {
|
|
63
|
+
return this.signatureToBindingId.has(querySignature);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=PrototypeOverrideStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrototypeOverrideStore.js","names":["SubscribableStore","PrototypeOverrideStore","overrides","Map","signatureToBindingId","setOverride","override","set","bindingId","querySignature","notifySubscribers","getOverride","get","getOverrideBySignature","undefined","updateOverride","updates","existing","clearOverride","delete","clearAll","clear","getAll","Array","from","values","hasOverride","has"],"sources":["PrototypeOverrideStore.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 { SubscribableStore } from \"../store/SubscribableStore.js\";\n\nexport interface PrototypeOverrideParams {\n where?: Record<string, unknown>;\n orderBy?: Record<string, \"asc\" | \"desc\">;\n pageSize?: number;\n groupBy?: Record<string, unknown>;\n select?: Record<string, unknown>;\n}\n\nexport interface PrototypeOverride {\n bindingId: string;\n componentId: string;\n componentName: string;\n hookType: string;\n hookIndex: number;\n objectType: string;\n querySignature: string;\n originalParams: PrototypeOverrideParams;\n overrideParams: PrototypeOverrideParams;\n enabled: boolean;\n createdAt: number;\n}\n\nexport class PrototypeOverrideStore extends SubscribableStore {\n private overrides = new Map<string, PrototypeOverride>();\n private signatureToBindingId = new Map<string, string>();\n\n setOverride(override: PrototypeOverride): void {\n this.overrides.set(override.bindingId, override);\n this.signatureToBindingId.set(override.querySignature, override.bindingId);\n this.notifySubscribers();\n }\n\n getOverride(bindingId: string): PrototypeOverride | undefined {\n return this.overrides.get(bindingId);\n }\n\n getOverrideBySignature(\n querySignature: string,\n ): PrototypeOverride | undefined {\n const bindingId = this.signatureToBindingId.get(querySignature);\n if (bindingId) {\n return this.overrides.get(bindingId);\n }\n return undefined;\n }\n\n updateOverride(\n bindingId: string,\n updates: Partial<Pick<PrototypeOverride, \"overrideParams\" | \"enabled\">>,\n ): void {\n const existing = this.overrides.get(bindingId);\n if (existing) {\n this.overrides.set(bindingId, { ...existing, ...updates });\n this.notifySubscribers();\n }\n }\n\n clearOverride(bindingId: string): void {\n const override = this.overrides.get(bindingId);\n if (override) {\n this.signatureToBindingId.delete(override.querySignature);\n this.overrides.delete(bindingId);\n this.notifySubscribers();\n }\n }\n\n clearAll(): void {\n this.overrides.clear();\n this.signatureToBindingId.clear();\n this.notifySubscribers();\n }\n\n getAll(): PrototypeOverride[] {\n return Array.from(this.overrides.values());\n }\n\n hasOverride(querySignature: string): boolean {\n return this.signatureToBindingId.has(querySignature);\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,iBAAiB,QAAQ,+BAA+B;AAwBjE,OAAO,MAAMC,sBAAsB,SAASD,iBAAiB,CAAC;EACpDE,SAAS,GAAG,IAAIC,GAAG,CAA4B,CAAC;EAChDC,oBAAoB,GAAG,IAAID,GAAG,CAAiB,CAAC;EAExDE,WAAWA,CAACC,QAA2B,EAAQ;IAC7C,IAAI,CAACJ,SAAS,CAACK,GAAG,CAACD,QAAQ,CAACE,SAAS,EAAEF,QAAQ,CAAC;IAChD,IAAI,CAACF,oBAAoB,CAACG,GAAG,CAACD,QAAQ,CAACG,cAAc,EAAEH,QAAQ,CAACE,SAAS,CAAC;IAC1E,IAAI,CAACE,iBAAiB,CAAC,CAAC;EAC1B;EAEAC,WAAWA,CAACH,SAAiB,EAAiC;IAC5D,OAAO,IAAI,CAACN,SAAS,CAACU,GAAG,CAACJ,SAAS,CAAC;EACtC;EAEAK,sBAAsBA,CACpBJ,cAAsB,EACS;IAC/B,MAAMD,SAAS,GAAG,IAAI,CAACJ,oBAAoB,CAACQ,GAAG,CAACH,cAAc,CAAC;IAC/D,IAAID,SAAS,EAAE;MACb,OAAO,IAAI,CAACN,SAAS,CAACU,GAAG,CAACJ,SAAS,CAAC;IACtC;IACA,OAAOM,SAAS;EAClB;EAEAC,cAAcA,CACZP,SAAiB,EACjBQ,OAAuE,EACjE;IACN,MAAMC,QAAQ,GAAG,IAAI,CAACf,SAAS,CAACU,GAAG,CAACJ,SAAS,CAAC;IAC9C,IAAIS,QAAQ,EAAE;MACZ,IAAI,CAACf,SAAS,CAACK,GAAG,CAACC,SAAS,EAAE;QAAE,GAAGS,QAAQ;QAAE,GAAGD;MAAQ,CAAC,CAAC;MAC1D,IAAI,CAACN,iBAAiB,CAAC,CAAC;IAC1B;EACF;EAEAQ,aAAaA,CAACV,SAAiB,EAAQ;IACrC,MAAMF,QAAQ,GAAG,IAAI,CAACJ,SAAS,CAACU,GAAG,CAACJ,SAAS,CAAC;IAC9C,IAAIF,QAAQ,EAAE;MACZ,IAAI,CAACF,oBAAoB,CAACe,MAAM,CAACb,QAAQ,CAACG,cAAc,CAAC;MACzD,IAAI,CAACP,SAAS,CAACiB,MAAM,CAACX,SAAS,CAAC;MAChC,IAAI,CAACE,iBAAiB,CAAC,CAAC;IAC1B;EACF;EAEAU,QAAQA,CAAA,EAAS;IACf,IAAI,CAAClB,SAAS,CAACmB,KAAK,CAAC,CAAC;IACtB,IAAI,CAACjB,oBAAoB,CAACiB,KAAK,CAAC,CAAC;IACjC,IAAI,CAACX,iBAAiB,CAAC,CAAC;EAC1B;EAEAY,MAAMA,CAAA,EAAwB;IAC5B,OAAOC,KAAK,CAACC,IAAI,CAAC,IAAI,CAACtB,SAAS,CAACuB,MAAM,CAAC,CAAC,CAAC;EAC5C;EAEAC,WAAWA,CAACjB,cAAsB,EAAW;IAC3C,OAAO,IAAI,CAACL,oBAAoB,CAACuB,GAAG,CAAClB,cAAc,CAAC;EACtD;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
export { PrototypeOverrideStore } from "./PrototypeOverrideStore.js";
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["PrototypeOverrideStore"],"sources":["index.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\nexport {\n type PrototypeOverride,\n type PrototypeOverrideParams,\n PrototypeOverrideStore,\n} from \"./PrototypeOverrideStore.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAGEA,sBAAsB,QACjB,6BAA6B","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
export * from "../vite/index.js";
|
|
18
|
+
export { default } from "../vite/index.js";
|
|
19
|
+
//# sourceMappingURL=vite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite.js","names":["default"],"sources":["vite.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\nexport * from \"../vite/index.js\";\nexport { default } from \"../vite/index.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,kBAAkB;AAChC,SAASA,OAAO,QAAQ,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
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 { registerDevTools } from "@osdk/react/devtools-registry";
|
|
18
|
+
import React from "react";
|
|
19
|
+
import { SafeMonitoringPanel } from "./components/MonitoringPanel.js";
|
|
20
|
+
import { DevToolsContext } from "./DevToolsContext.js";
|
|
21
|
+
import { safelyInstallDevToolsHook } from "./fiber/DevtoolsHook.js";
|
|
22
|
+
import { MonitorStore } from "./store/MonitorStore.js";
|
|
23
|
+
const isDev = typeof process !== "undefined" ? process.env?.NODE_ENV !== "production" : true;
|
|
24
|
+
if (isDev) {
|
|
25
|
+
safelyInstallDevToolsHook();
|
|
26
|
+
const globalMonitorStore = new MonitorStore();
|
|
27
|
+
globalThis.__OSDK_DEVTOOLS_MONITOR_STORE__ = globalMonitorStore;
|
|
28
|
+
registerDevTools({
|
|
29
|
+
wrapClient: client => {
|
|
30
|
+
return globalMonitorStore.wrapExistingClient(client);
|
|
31
|
+
},
|
|
32
|
+
wrapChildren: children => {
|
|
33
|
+
return /*#__PURE__*/React.createElement(DevToolsContext.Provider, {
|
|
34
|
+
value: globalMonitorStore
|
|
35
|
+
}, children, /*#__PURE__*/React.createElement(SafeMonitoringPanel, {
|
|
36
|
+
monitorStore: globalMonitorStore
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","names":["registerDevTools","React","SafeMonitoringPanel","DevToolsContext","safelyInstallDevToolsHook","MonitorStore","isDev","process","env","NODE_ENV","globalMonitorStore","globalThis","__OSDK_DEVTOOLS_MONITOR_STORE__","wrapClient","client","wrapExistingClient","wrapChildren","children","createElement","Provider","value","monitorStore"],"sources":["register.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 type { ObservableClient } from \"@osdk/client/observable\";\nimport { registerDevTools } from \"@osdk/react/devtools-registry\";\nimport React from \"react\";\nimport { SafeMonitoringPanel } from \"./components/MonitoringPanel.js\";\nimport { DevToolsContext } from \"./DevToolsContext.js\";\nimport { safelyInstallDevToolsHook } from \"./fiber/DevtoolsHook.js\";\nimport { MonitorStore } from \"./store/MonitorStore.js\";\n\nconst isDev = typeof process !== \"undefined\"\n ? process.env?.NODE_ENV !== \"production\"\n : true;\n\nif (isDev) {\n safelyInstallDevToolsHook();\n const globalMonitorStore = new MonitorStore();\n (globalThis as Record<string, unknown>).__OSDK_DEVTOOLS_MONITOR_STORE__ =\n globalMonitorStore;\n\n registerDevTools({\n wrapClient: (client: ObservableClient) => {\n return globalMonitorStore.wrapExistingClient(client);\n },\n\n wrapChildren: (\n children: React.ReactNode,\n _monitoredClient: ObservableClient,\n ) => {\n return React.createElement(\n DevToolsContext.Provider,\n { value: globalMonitorStore },\n children,\n React.createElement(SafeMonitoringPanel, {\n monitorStore: globalMonitorStore,\n }),\n );\n },\n });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,gBAAgB,QAAQ,+BAA+B;AAChE,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,mBAAmB,QAAQ,iCAAiC;AACrE,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,yBAAyB,QAAQ,yBAAyB;AACnE,SAASC,YAAY,QAAQ,yBAAyB;AAEtD,MAAMC,KAAK,GAAG,OAAOC,OAAO,KAAK,WAAW,GACxCA,OAAO,CAACC,GAAG,EAAEC,QAAQ,KAAK,YAAY,GACtC,IAAI;AAER,IAAIH,KAAK,EAAE;EACTF,yBAAyB,CAAC,CAAC;EAC3B,MAAMM,kBAAkB,GAAG,IAAIL,YAAY,CAAC,CAAC;EAC5CM,UAAU,CAA6BC,+BAA+B,GACrEF,kBAAkB;EAEpBV,gBAAgB,CAAC;IACfa,UAAU,EAAGC,MAAwB,IAAK;MACxC,OAAOJ,kBAAkB,CAACK,kBAAkB,CAACD,MAAM,CAAC;IACtD,CAAC;IAEDE,YAAY,EACVC,QAAyB,IAEtB;MACH,oBAAOhB,KAAK,CAACiB,aAAa,CACxBf,eAAe,CAACgB,QAAQ,EACxB;QAAEC,KAAK,EAAEV;MAAmB,CAAC,EAC7BO,QAAQ,eACRhB,KAAK,CAACiB,aAAa,CAAChB,mBAAmB,EAAE;QACvCmB,YAAY,EAAEX;MAChB,CAAC,CACH,CAAC;IACH;EACF,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 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
|
+
declare module "*.module.scss" {
|
|
18
|
+
const classes: { readonly [key: string]: string };
|
|
19
|
+
export default classes;
|
|
20
|
+
}
|
|
@@ -0,0 +1,269 @@
|
|
|
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 DEFAULT_MAX_REQUESTS = 500;
|
|
20
|
+
export class ComputeStore extends SubscribableStore {
|
|
21
|
+
requestMap = new Map();
|
|
22
|
+
isNetworkPaused = false;
|
|
23
|
+
lastSnapshot = null;
|
|
24
|
+
version = 0;
|
|
25
|
+
cachedRequests = [];
|
|
26
|
+
cachedRequestsVersion = -1;
|
|
27
|
+
cachedMetrics = null;
|
|
28
|
+
cachedMetricsVersion = -1;
|
|
29
|
+
totalUsage = 0;
|
|
30
|
+
totalResponseBytes = 0;
|
|
31
|
+
fulfilledCount = 0;
|
|
32
|
+
fulfilledWithoutUsageCount = 0;
|
|
33
|
+
failedCount = 0;
|
|
34
|
+
pendingCount = 0;
|
|
35
|
+
constructor(maxRequests = DEFAULT_MAX_REQUESTS) {
|
|
36
|
+
super();
|
|
37
|
+
this.requests = new CircularBuffer(maxRequests, evicted => {
|
|
38
|
+
this.requestMap.delete(evicted.id);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
createPendingRequest(request) {
|
|
42
|
+
const id = crypto.randomUUID();
|
|
43
|
+
const pendingRequest = {
|
|
44
|
+
type: "pending",
|
|
45
|
+
id,
|
|
46
|
+
...request
|
|
47
|
+
};
|
|
48
|
+
this.requests.push(pendingRequest);
|
|
49
|
+
this.requestMap.set(id, pendingRequest);
|
|
50
|
+
this.pendingCount++;
|
|
51
|
+
this.invalidate();
|
|
52
|
+
return id;
|
|
53
|
+
}
|
|
54
|
+
fulfillRequest(requestId, responseInfo) {
|
|
55
|
+
const pending = this.requestMap.get(requestId);
|
|
56
|
+
if (!pending || pending.type !== "pending") {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const fulfilled = {
|
|
60
|
+
type: "fulfilled",
|
|
61
|
+
id: pending.id,
|
|
62
|
+
requestTimestamp: pending.requestTimestamp,
|
|
63
|
+
requestUrl: pending.requestUrl,
|
|
64
|
+
requestPayload: pending.requestPayload,
|
|
65
|
+
requestPayloadHash: pending.requestPayloadHash,
|
|
66
|
+
responseTimestamp: new Date(),
|
|
67
|
+
...responseInfo
|
|
68
|
+
};
|
|
69
|
+
this.requestMap.set(requestId, fulfilled);
|
|
70
|
+
this.pendingCount--;
|
|
71
|
+
this.fulfilledCount++;
|
|
72
|
+
this.totalUsage += responseInfo.computeUsage;
|
|
73
|
+
this.totalResponseBytes += responseInfo.responsePayloadBytes;
|
|
74
|
+
this.invalidate();
|
|
75
|
+
}
|
|
76
|
+
fulfillWithoutUsage(requestId, responseInfo) {
|
|
77
|
+
const pending = this.requestMap.get(requestId);
|
|
78
|
+
if (!pending || pending.type !== "pending") {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const fulfilled = {
|
|
82
|
+
type: "fulfilled-without-usage",
|
|
83
|
+
id: pending.id,
|
|
84
|
+
requestTimestamp: pending.requestTimestamp,
|
|
85
|
+
requestUrl: pending.requestUrl,
|
|
86
|
+
requestPayload: pending.requestPayload,
|
|
87
|
+
requestPayloadHash: pending.requestPayloadHash,
|
|
88
|
+
responseTimestamp: new Date(),
|
|
89
|
+
...responseInfo
|
|
90
|
+
};
|
|
91
|
+
this.requestMap.set(requestId, fulfilled);
|
|
92
|
+
this.pendingCount--;
|
|
93
|
+
this.fulfilledWithoutUsageCount++;
|
|
94
|
+
this.totalResponseBytes += responseInfo.responsePayloadBytes;
|
|
95
|
+
this.invalidate();
|
|
96
|
+
}
|
|
97
|
+
failRequest(requestId, error) {
|
|
98
|
+
const pending = this.requestMap.get(requestId);
|
|
99
|
+
if (!pending || pending.type !== "pending") {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const failed = {
|
|
103
|
+
type: "failed",
|
|
104
|
+
id: pending.id,
|
|
105
|
+
requestTimestamp: pending.requestTimestamp,
|
|
106
|
+
requestUrl: pending.requestUrl,
|
|
107
|
+
requestPayload: pending.requestPayload,
|
|
108
|
+
requestPayloadHash: pending.requestPayloadHash,
|
|
109
|
+
failedTimestamp: new Date(),
|
|
110
|
+
error
|
|
111
|
+
};
|
|
112
|
+
this.requestMap.set(requestId, failed);
|
|
113
|
+
this.pendingCount--;
|
|
114
|
+
this.failedCount++;
|
|
115
|
+
this.invalidate();
|
|
116
|
+
}
|
|
117
|
+
setIsRecording(isRecording) {
|
|
118
|
+
if (this.lastRecordingEvent?.type === "started" && isRecording) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (isRecording) {
|
|
122
|
+
this.lastRecordingEvent = {
|
|
123
|
+
type: "started",
|
|
124
|
+
timestamp: new Date()
|
|
125
|
+
};
|
|
126
|
+
this.requests.clear();
|
|
127
|
+
this.requestMap.clear();
|
|
128
|
+
this.totalUsage = 0;
|
|
129
|
+
this.totalResponseBytes = 0;
|
|
130
|
+
this.fulfilledCount = 0;
|
|
131
|
+
this.fulfilledWithoutUsageCount = 0;
|
|
132
|
+
this.failedCount = 0;
|
|
133
|
+
this.pendingCount = 0;
|
|
134
|
+
} else if (this.lastRecordingEvent?.type === "started") {
|
|
135
|
+
this.lastRecordingEvent = {
|
|
136
|
+
type: "ended",
|
|
137
|
+
timestamp: this.lastRecordingEvent.timestamp,
|
|
138
|
+
endTimestamp: new Date()
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
this.invalidate();
|
|
142
|
+
}
|
|
143
|
+
toggleNetworkPaused() {
|
|
144
|
+
this.isNetworkPaused = !this.isNetworkPaused;
|
|
145
|
+
this.invalidate();
|
|
146
|
+
}
|
|
147
|
+
getIsNetworkPaused() {
|
|
148
|
+
return this.isNetworkPaused;
|
|
149
|
+
}
|
|
150
|
+
getLastRecordingEvent() {
|
|
151
|
+
return this.lastRecordingEvent;
|
|
152
|
+
}
|
|
153
|
+
isRecording() {
|
|
154
|
+
return this.lastRecordingEvent?.type === "started";
|
|
155
|
+
}
|
|
156
|
+
reset() {
|
|
157
|
+
this.requests.clear();
|
|
158
|
+
this.requestMap.clear();
|
|
159
|
+
this.lastRecordingEvent = undefined;
|
|
160
|
+
this.isNetworkPaused = false;
|
|
161
|
+
this.totalUsage = 0;
|
|
162
|
+
this.totalResponseBytes = 0;
|
|
163
|
+
this.fulfilledCount = 0;
|
|
164
|
+
this.fulfilledWithoutUsageCount = 0;
|
|
165
|
+
this.failedCount = 0;
|
|
166
|
+
this.pendingCount = 0;
|
|
167
|
+
this.invalidate();
|
|
168
|
+
}
|
|
169
|
+
getRequests() {
|
|
170
|
+
if (this.cachedRequestsVersion === this.version) {
|
|
171
|
+
return this.cachedRequests;
|
|
172
|
+
}
|
|
173
|
+
const requestsFromBuffer = this.requests.toArray();
|
|
174
|
+
const newRequests = requestsFromBuffer.map(req => this.requestMap.get(req.id) ?? req);
|
|
175
|
+
if (this.arraysReferentiallyEqual(this.cachedRequests, newRequests)) {
|
|
176
|
+
this.cachedRequestsVersion = this.version;
|
|
177
|
+
return this.cachedRequests;
|
|
178
|
+
}
|
|
179
|
+
this.cachedRequests = newRequests;
|
|
180
|
+
this.cachedRequestsVersion = this.version;
|
|
181
|
+
return this.cachedRequests;
|
|
182
|
+
}
|
|
183
|
+
getSnapshot() {
|
|
184
|
+
if (this.lastSnapshot) {
|
|
185
|
+
return this.lastSnapshot;
|
|
186
|
+
}
|
|
187
|
+
const snapshot = {
|
|
188
|
+
metrics: this.getMetrics(),
|
|
189
|
+
requests: this.getRequests(),
|
|
190
|
+
isRecording: this.isRecording(),
|
|
191
|
+
isNetworkPaused: this.isNetworkPaused,
|
|
192
|
+
lastRecordingEvent: this.lastRecordingEvent
|
|
193
|
+
};
|
|
194
|
+
this.lastSnapshot = snapshot;
|
|
195
|
+
return snapshot;
|
|
196
|
+
}
|
|
197
|
+
getMetrics() {
|
|
198
|
+
if (this.cachedMetricsVersion === this.version && this.cachedMetrics) {
|
|
199
|
+
return this.cachedMetrics;
|
|
200
|
+
}
|
|
201
|
+
const oneMinuteAgo = Date.now() - 60000;
|
|
202
|
+
let lastMinuteUsage = 0;
|
|
203
|
+
const recentRequests = this.requests.getLast(100);
|
|
204
|
+
for (const req of recentRequests) {
|
|
205
|
+
const current = this.requestMap.get(req.id) ?? req;
|
|
206
|
+
if (current.type === "fulfilled" && current.responseTimestamp.getTime() >= oneMinuteAgo) {
|
|
207
|
+
lastMinuteUsage += current.computeUsage;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const requestCount = this.fulfilledCount + this.fulfilledWithoutUsageCount + this.failedCount + this.pendingCount;
|
|
211
|
+
const completedWithResponseBytes = this.fulfilledCount + this.fulfilledWithoutUsageCount;
|
|
212
|
+
const newMetrics = {
|
|
213
|
+
totalUsage: Math.round(this.totalUsage),
|
|
214
|
+
lastMinuteUsage: Math.round(lastMinuteUsage),
|
|
215
|
+
requestCount,
|
|
216
|
+
fulfilledCount: this.fulfilledCount,
|
|
217
|
+
fulfilledWithoutUsageCount: this.fulfilledWithoutUsageCount,
|
|
218
|
+
failedCount: this.failedCount,
|
|
219
|
+
pendingCount: this.pendingCount,
|
|
220
|
+
averageUsagePerRequest: this.fulfilledCount > 0 ? Math.round(this.totalUsage / this.fulfilledCount) : 0,
|
|
221
|
+
averageResponseBytes: completedWithResponseBytes > 0 ? Math.round(this.totalResponseBytes / completedWithResponseBytes) : 0
|
|
222
|
+
};
|
|
223
|
+
if (this.cachedMetrics && this.metricsEqual(this.cachedMetrics, newMetrics)) {
|
|
224
|
+
this.cachedMetricsVersion = this.version;
|
|
225
|
+
return this.cachedMetrics;
|
|
226
|
+
}
|
|
227
|
+
this.cachedMetrics = newMetrics;
|
|
228
|
+
this.cachedMetricsVersion = this.version;
|
|
229
|
+
return this.cachedMetrics;
|
|
230
|
+
}
|
|
231
|
+
dispose() {
|
|
232
|
+
this.requests.clear();
|
|
233
|
+
this.requestMap.clear();
|
|
234
|
+
this.clearSubscribers();
|
|
235
|
+
this.lastRecordingEvent = undefined;
|
|
236
|
+
this.isNetworkPaused = false;
|
|
237
|
+
this.totalUsage = 0;
|
|
238
|
+
this.totalResponseBytes = 0;
|
|
239
|
+
this.fulfilledCount = 0;
|
|
240
|
+
this.fulfilledWithoutUsageCount = 0;
|
|
241
|
+
this.failedCount = 0;
|
|
242
|
+
this.pendingCount = 0;
|
|
243
|
+
this.lastSnapshot = null;
|
|
244
|
+
this.cachedRequests = [];
|
|
245
|
+
this.cachedRequestsVersion = -1;
|
|
246
|
+
this.cachedMetrics = null;
|
|
247
|
+
this.cachedMetricsVersion = -1;
|
|
248
|
+
}
|
|
249
|
+
invalidate() {
|
|
250
|
+
this.version++;
|
|
251
|
+
this.lastSnapshot = null;
|
|
252
|
+
this.notifySubscribers();
|
|
253
|
+
}
|
|
254
|
+
arraysReferentiallyEqual(a, b) {
|
|
255
|
+
if (a.length !== b.length) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
for (let i = 0; i < a.length; i++) {
|
|
259
|
+
if (a[i] !== b[i]) {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
metricsEqual(a, b) {
|
|
266
|
+
return a.totalUsage === b.totalUsage && a.lastMinuteUsage === b.lastMinuteUsage && a.requestCount === b.requestCount && a.fulfilledCount === b.fulfilledCount && a.fulfilledWithoutUsageCount === b.fulfilledWithoutUsageCount && a.failedCount === b.failedCount && a.pendingCount === b.pendingCount && a.averageUsagePerRequest === b.averageUsagePerRequest && a.averageResponseBytes === b.averageResponseBytes;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=ComputeStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComputeStore.js","names":["CircularBuffer","SubscribableStore","DEFAULT_MAX_REQUESTS","ComputeStore","requestMap","Map","isNetworkPaused","lastSnapshot","version","cachedRequests","cachedRequestsVersion","cachedMetrics","cachedMetricsVersion","totalUsage","totalResponseBytes","fulfilledCount","fulfilledWithoutUsageCount","failedCount","pendingCount","constructor","maxRequests","requests","evicted","delete","id","createPendingRequest","request","crypto","randomUUID","pendingRequest","type","push","set","invalidate","fulfillRequest","requestId","responseInfo","pending","get","fulfilled","requestTimestamp","requestUrl","requestPayload","requestPayloadHash","responseTimestamp","Date","computeUsage","responsePayloadBytes","fulfillWithoutUsage","failRequest","error","failed","failedTimestamp","setIsRecording","isRecording","lastRecordingEvent","timestamp","clear","endTimestamp","toggleNetworkPaused","getIsNetworkPaused","getLastRecordingEvent","reset","undefined","getRequests","requestsFromBuffer","toArray","newRequests","map","req","arraysReferentiallyEqual","getSnapshot","snapshot","metrics","getMetrics","oneMinuteAgo","now","lastMinuteUsage","recentRequests","getLast","current","getTime","requestCount","completedWithResponseBytes","newMetrics","Math","round","averageUsagePerRequest","averageResponseBytes","metricsEqual","dispose","clearSubscribers","notifySubscribers","a","b","length","i"],"sources":["ComputeStore.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 type {\n ComputeMetrics,\n ComputeRequest,\n ComputeRequestError,\n ComputeSnapshot,\n PendingComputeRequest,\n RecordingEvent,\n} from \"../types/compute.js\";\nimport { CircularBuffer } from \"../utils/CircularBuffer.js\";\nimport { SubscribableStore } from \"./SubscribableStore.js\";\n\nconst DEFAULT_MAX_REQUESTS = 500;\n\nexport class ComputeStore extends SubscribableStore {\n private readonly requests: CircularBuffer<ComputeRequest>;\n private readonly requestMap = new Map<string, ComputeRequest>();\n private lastRecordingEvent: RecordingEvent | undefined;\n private isNetworkPaused = false;\n private lastSnapshot: ComputeSnapshot | null = null;\n\n private version = 0;\n private cachedRequests: ReadonlyArray<ComputeRequest> = [];\n private cachedRequestsVersion = -1;\n private cachedMetrics: ComputeMetrics | null = null;\n private cachedMetricsVersion = -1;\n\n private totalUsage = 0;\n private totalResponseBytes = 0;\n private fulfilledCount = 0;\n private fulfilledWithoutUsageCount = 0;\n private failedCount = 0;\n private pendingCount = 0;\n\n constructor(maxRequests: number = DEFAULT_MAX_REQUESTS) {\n super();\n this.requests = new CircularBuffer(maxRequests, (evicted) => {\n this.requestMap.delete(evicted.id);\n });\n }\n\n createPendingRequest(\n request: Omit<PendingComputeRequest, \"type\" | \"id\">,\n ): string {\n const id = crypto.randomUUID();\n const pendingRequest: PendingComputeRequest = {\n type: \"pending\",\n id,\n ...request,\n };\n this.requests.push(pendingRequest);\n this.requestMap.set(id, pendingRequest);\n this.pendingCount++;\n this.invalidate();\n return id;\n }\n\n fulfillRequest(\n requestId: string,\n responseInfo: {\n computeUsage: number;\n responsePayloadBytes: number;\n responsePayloadHash: number;\n responsePayload: string;\n },\n ): void {\n const pending = this.requestMap.get(requestId);\n\n if (!pending || pending.type !== \"pending\") {\n return;\n }\n\n const fulfilled: ComputeRequest = {\n type: \"fulfilled\",\n id: pending.id,\n requestTimestamp: pending.requestTimestamp,\n requestUrl: pending.requestUrl,\n requestPayload: pending.requestPayload,\n requestPayloadHash: pending.requestPayloadHash,\n responseTimestamp: new Date(),\n ...responseInfo,\n };\n\n this.requestMap.set(requestId, fulfilled);\n this.pendingCount--;\n this.fulfilledCount++;\n this.totalUsage += responseInfo.computeUsage;\n this.totalResponseBytes += responseInfo.responsePayloadBytes;\n this.invalidate();\n }\n\n fulfillWithoutUsage(\n requestId: string,\n responseInfo: {\n responsePayloadBytes: number;\n responsePayloadHash: number;\n responsePayload: string;\n },\n ): void {\n const pending = this.requestMap.get(requestId);\n\n if (!pending || pending.type !== \"pending\") {\n return;\n }\n\n const fulfilled: ComputeRequest = {\n type: \"fulfilled-without-usage\",\n id: pending.id,\n requestTimestamp: pending.requestTimestamp,\n requestUrl: pending.requestUrl,\n requestPayload: pending.requestPayload,\n requestPayloadHash: pending.requestPayloadHash,\n responseTimestamp: new Date(),\n ...responseInfo,\n };\n\n this.requestMap.set(requestId, fulfilled);\n this.pendingCount--;\n this.fulfilledWithoutUsageCount++;\n this.totalResponseBytes += responseInfo.responsePayloadBytes;\n this.invalidate();\n }\n\n failRequest(requestId: string, error: ComputeRequestError): void {\n const pending = this.requestMap.get(requestId);\n\n if (!pending || pending.type !== \"pending\") {\n return;\n }\n\n const failed: ComputeRequest = {\n type: \"failed\",\n id: pending.id,\n requestTimestamp: pending.requestTimestamp,\n requestUrl: pending.requestUrl,\n requestPayload: pending.requestPayload,\n requestPayloadHash: pending.requestPayloadHash,\n failedTimestamp: new Date(),\n error,\n };\n\n this.requestMap.set(requestId, failed);\n this.pendingCount--;\n this.failedCount++;\n this.invalidate();\n }\n\n setIsRecording(isRecording: boolean): void {\n if (\n this.lastRecordingEvent?.type === \"started\" && isRecording\n ) {\n return;\n }\n\n if (isRecording) {\n this.lastRecordingEvent = {\n type: \"started\",\n timestamp: new Date(),\n };\n this.requests.clear();\n this.requestMap.clear();\n this.totalUsage = 0;\n this.totalResponseBytes = 0;\n this.fulfilledCount = 0;\n this.fulfilledWithoutUsageCount = 0;\n this.failedCount = 0;\n this.pendingCount = 0;\n } else if (this.lastRecordingEvent?.type === \"started\") {\n this.lastRecordingEvent = {\n type: \"ended\",\n timestamp: this.lastRecordingEvent.timestamp,\n endTimestamp: new Date(),\n };\n }\n\n this.invalidate();\n }\n\n toggleNetworkPaused(): void {\n this.isNetworkPaused = !this.isNetworkPaused;\n this.invalidate();\n }\n\n getIsNetworkPaused(): boolean {\n return this.isNetworkPaused;\n }\n\n getLastRecordingEvent(): RecordingEvent | undefined {\n return this.lastRecordingEvent;\n }\n\n isRecording(): boolean {\n return this.lastRecordingEvent?.type === \"started\";\n }\n\n reset(): void {\n this.requests.clear();\n this.requestMap.clear();\n this.lastRecordingEvent = undefined;\n this.isNetworkPaused = false;\n this.totalUsage = 0;\n this.totalResponseBytes = 0;\n this.fulfilledCount = 0;\n this.fulfilledWithoutUsageCount = 0;\n this.failedCount = 0;\n this.pendingCount = 0;\n this.invalidate();\n }\n\n getRequests(): ReadonlyArray<ComputeRequest> {\n if (this.cachedRequestsVersion === this.version) {\n return this.cachedRequests;\n }\n\n const requestsFromBuffer = this.requests.toArray();\n const newRequests = requestsFromBuffer.map(req =>\n this.requestMap.get(req.id) ?? req\n );\n\n if (this.arraysReferentiallyEqual(this.cachedRequests, newRequests)) {\n this.cachedRequestsVersion = this.version;\n return this.cachedRequests;\n }\n\n this.cachedRequests = newRequests;\n this.cachedRequestsVersion = this.version;\n return this.cachedRequests;\n }\n\n getSnapshot(): ComputeSnapshot {\n if (this.lastSnapshot) {\n return this.lastSnapshot;\n }\n\n const snapshot: ComputeSnapshot = {\n metrics: this.getMetrics(),\n requests: this.getRequests(),\n isRecording: this.isRecording(),\n isNetworkPaused: this.isNetworkPaused,\n lastRecordingEvent: this.lastRecordingEvent,\n };\n\n this.lastSnapshot = snapshot;\n return snapshot;\n }\n\n getMetrics(): ComputeMetrics {\n if (this.cachedMetricsVersion === this.version && this.cachedMetrics) {\n return this.cachedMetrics;\n }\n\n const oneMinuteAgo = Date.now() - 60000;\n let lastMinuteUsage = 0;\n\n const recentRequests = this.requests.getLast(100);\n for (const req of recentRequests) {\n const current = this.requestMap.get(req.id) ?? req;\n if (\n current.type === \"fulfilled\"\n && current.responseTimestamp.getTime() >= oneMinuteAgo\n ) {\n lastMinuteUsage += current.computeUsage;\n }\n }\n\n const requestCount = this.fulfilledCount + this.fulfilledWithoutUsageCount\n + this.failedCount + this.pendingCount;\n\n const completedWithResponseBytes = this.fulfilledCount\n + this.fulfilledWithoutUsageCount;\n\n const newMetrics: ComputeMetrics = {\n totalUsage: Math.round(this.totalUsage),\n lastMinuteUsage: Math.round(lastMinuteUsage),\n requestCount,\n fulfilledCount: this.fulfilledCount,\n fulfilledWithoutUsageCount: this.fulfilledWithoutUsageCount,\n failedCount: this.failedCount,\n pendingCount: this.pendingCount,\n averageUsagePerRequest: this.fulfilledCount > 0\n ? Math.round(this.totalUsage / this.fulfilledCount)\n : 0,\n averageResponseBytes: completedWithResponseBytes > 0\n ? Math.round(this.totalResponseBytes / completedWithResponseBytes)\n : 0,\n };\n\n if (\n this.cachedMetrics && this.metricsEqual(this.cachedMetrics, newMetrics)\n ) {\n this.cachedMetricsVersion = this.version;\n return this.cachedMetrics;\n }\n\n this.cachedMetrics = newMetrics;\n this.cachedMetricsVersion = this.version;\n return this.cachedMetrics;\n }\n\n dispose(): void {\n this.requests.clear();\n this.requestMap.clear();\n this.clearSubscribers();\n this.lastRecordingEvent = undefined;\n this.isNetworkPaused = false;\n this.totalUsage = 0;\n this.totalResponseBytes = 0;\n this.fulfilledCount = 0;\n this.fulfilledWithoutUsageCount = 0;\n this.failedCount = 0;\n this.pendingCount = 0;\n this.lastSnapshot = null;\n this.cachedRequests = [];\n this.cachedRequestsVersion = -1;\n this.cachedMetrics = null;\n this.cachedMetricsVersion = -1;\n }\n\n private invalidate(): void {\n this.version++;\n this.lastSnapshot = null;\n this.notifySubscribers();\n }\n\n private arraysReferentiallyEqual(\n a: ReadonlyArray<ComputeRequest>,\n b: ReadonlyArray<ComputeRequest>,\n ): boolean {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n\n private metricsEqual(a: ComputeMetrics, b: ComputeMetrics): boolean {\n return a.totalUsage === b.totalUsage\n && a.lastMinuteUsage === b.lastMinuteUsage\n && a.requestCount === b.requestCount\n && a.fulfilledCount === b.fulfilledCount\n && a.fulfilledWithoutUsageCount === b.fulfilledWithoutUsageCount\n && a.failedCount === b.failedCount\n && a.pendingCount === b.pendingCount\n && a.averageUsagePerRequest === b.averageUsagePerRequest\n && a.averageResponseBytes === b.averageResponseBytes;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|