@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.
Files changed (443) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/build/esm/DevToolsContext.js +19 -0
  3. package/build/esm/DevToolsContext.js.map +1 -0
  4. package/build/esm/components/ActionMetrics.js +89 -0
  5. package/build/esm/components/ActionMetrics.js.map +1 -0
  6. package/build/esm/components/BubbleChart.js +175 -0
  7. package/build/esm/components/BubbleChart.js.map +1 -0
  8. package/build/esm/components/BubbleChart.module.scss.js +6 -0
  9. package/build/esm/components/CacheInspectorTab.js +291 -0
  10. package/build/esm/components/CacheInspectorTab.js.map +1 -0
  11. package/build/esm/components/CacheInspectorTab.module.scss.js +39 -0
  12. package/build/esm/components/CacheMetrics.js +55 -0
  13. package/build/esm/components/CacheMetrics.js.map +1 -0
  14. package/build/esm/components/ComponentCard.js +124 -0
  15. package/build/esm/components/ComponentCard.js.map +1 -0
  16. package/build/esm/components/ComponentCard.module.scss.js +31 -0
  17. package/build/esm/components/ComputeTab.js +175 -0
  18. package/build/esm/components/ComputeTab.js.map +1 -0
  19. package/build/esm/components/CopyableCodeBlock.js +49 -0
  20. package/build/esm/components/CopyableCodeBlock.js.map +1 -0
  21. package/build/esm/components/CopyableCodeBlock.module.scss.js +10 -0
  22. package/build/esm/components/DebuggingTab.js +342 -0
  23. package/build/esm/components/DebuggingTab.js.map +1 -0
  24. package/build/esm/components/DebuggingTab.module.scss.js +18 -0
  25. package/build/esm/components/HookRow.js +180 -0
  26. package/build/esm/components/HookRow.js.map +1 -0
  27. package/build/esm/components/HookRow.module.scss.js +16 -0
  28. package/build/esm/components/ImprovementsTab.js +138 -0
  29. package/build/esm/components/ImprovementsTab.js.map +1 -0
  30. package/build/esm/components/ImprovementsTab.module.scss.js +30 -0
  31. package/build/esm/components/InspectorSelectionHeader.js +65 -0
  32. package/build/esm/components/InspectorSelectionHeader.js.map +1 -0
  33. package/build/esm/components/InterceptTab.js +862 -0
  34. package/build/esm/components/InterceptTab.js.map +1 -0
  35. package/build/esm/components/InterceptTab.module.scss.js +49 -0
  36. package/build/esm/components/IssueCard.js +115 -0
  37. package/build/esm/components/IssueCard.js.map +1 -0
  38. package/build/esm/components/IssueCard.module.scss.js +24 -0
  39. package/build/esm/components/LogEntryCard.js +94 -0
  40. package/build/esm/components/LogEntryCard.js.map +1 -0
  41. package/build/esm/components/LogEntryCard.module.scss.js +19 -0
  42. package/build/esm/components/MockEditor.js +316 -0
  43. package/build/esm/components/MockEditor.js.map +1 -0
  44. package/build/esm/components/MonitorErrorBoundary.js +64 -0
  45. package/build/esm/components/MonitorErrorBoundary.js.map +1 -0
  46. package/build/esm/components/MonitorErrorBoundary.module.scss.js +9 -0
  47. package/build/esm/components/MonitoringPanel.js +434 -0
  48. package/build/esm/components/MonitoringPanel.js.map +1 -0
  49. package/build/esm/components/MonitoringPanel.module.scss.js +81 -0
  50. package/build/esm/components/ObjectLoadingMetrics.js +60 -0
  51. package/build/esm/components/ObjectLoadingMetrics.js.map +1 -0
  52. package/build/esm/components/OsdkAppErrorBoundary.js +68 -0
  53. package/build/esm/components/OsdkAppErrorBoundary.js.map +1 -0
  54. package/build/esm/components/OsdkDevTools.js +40 -0
  55. package/build/esm/components/OsdkDevTools.js.map +1 -0
  56. package/build/esm/components/OverrideEditor.js +197 -0
  57. package/build/esm/components/OverrideEditor.js.map +1 -0
  58. package/build/esm/components/PerformanceTab.js +297 -0
  59. package/build/esm/components/PerformanceTab.js.map +1 -0
  60. package/build/esm/components/PrimitiveSelectionPanel.js +220 -0
  61. package/build/esm/components/PrimitiveSelectionPanel.js.map +1 -0
  62. package/build/esm/components/PrimitiveSelectionPanel.module.scss.js +26 -0
  63. package/build/esm/components/issueTypes.js +2 -0
  64. package/build/esm/components/issueTypes.js.map +1 -0
  65. package/build/esm/components/resolveComponentName.js +57 -0
  66. package/build/esm/components/resolveComponentName.js.map +1 -0
  67. package/build/esm/components/testHelpers.js +312 -0
  68. package/build/esm/components/testHelpers.js.map +1 -0
  69. package/build/esm/css.d.ts +20 -0
  70. package/build/esm/fiber/DegradationNotice.js +193 -0
  71. package/build/esm/fiber/DegradationNotice.js.map +1 -0
  72. package/build/esm/fiber/DevtoolsHook.js +252 -0
  73. package/build/esm/fiber/DevtoolsHook.js.map +1 -0
  74. package/build/esm/fiber/FiberAccess.js +65 -0
  75. package/build/esm/fiber/FiberAccess.js.map +1 -0
  76. package/build/esm/fiber/FiberInspection.js +140 -0
  77. package/build/esm/fiber/FiberInspection.js.map +1 -0
  78. package/build/esm/fiber/FiberTags.js +52 -0
  79. package/build/esm/fiber/FiberTags.js.map +1 -0
  80. package/build/esm/fiber/HookStateInspector.js +254 -0
  81. package/build/esm/fiber/HookStateInspector.js.map +1 -0
  82. package/build/esm/fiber/SafeFiberOperation.js +35 -0
  83. package/build/esm/fiber/SafeFiberOperation.js.map +1 -0
  84. package/build/esm/fiber/capabilities.js +180 -0
  85. package/build/esm/fiber/capabilities.js.map +1 -0
  86. package/build/esm/fiber/traverseFiber.js +129 -0
  87. package/build/esm/fiber/traverseFiber.js.map +1 -0
  88. package/build/esm/fiber/types.js +2 -0
  89. package/build/esm/fiber/types.js.map +1 -0
  90. package/build/esm/fiber/validation.js +155 -0
  91. package/build/esm/fiber/validation.js.map +1 -0
  92. package/build/esm/hooks/createPollingStore.js +81 -0
  93. package/build/esm/hooks/createPollingStore.js.map +1 -0
  94. package/build/esm/hooks/useActiveComponents.js +27 -0
  95. package/build/esm/hooks/useActiveComponents.js.map +1 -0
  96. package/build/esm/hooks/useComponentRegistry.js +25 -0
  97. package/build/esm/hooks/useComponentRegistry.js.map +1 -0
  98. package/build/esm/hooks/useComputeSelectors.js +43 -0
  99. package/build/esm/hooks/useComputeSelectors.js.map +1 -0
  100. package/build/esm/hooks/useConsoleLogs.js +46 -0
  101. package/build/esm/hooks/useConsoleLogs.js.map +1 -0
  102. package/build/esm/hooks/useInspectorSelection.js +93 -0
  103. package/build/esm/hooks/useInspectorSelection.js.map +1 -0
  104. package/build/esm/hooks/useMetrics.js +23 -0
  105. package/build/esm/hooks/useMetrics.js.map +1 -0
  106. package/build/esm/hooks/usePersistedState.js +89 -0
  107. package/build/esm/hooks/usePersistedState.js.map +1 -0
  108. package/build/esm/hooks/useRecommendations.js +123 -0
  109. package/build/esm/hooks/useRecommendations.js.map +1 -0
  110. package/build/esm/hooks/useSharedTick.js +49 -0
  111. package/build/esm/hooks/useSharedTick.js.map +1 -0
  112. package/build/esm/hooks/useTimeElapsed.js +51 -0
  113. package/build/esm/hooks/useTimeElapsed.js.map +1 -0
  114. package/build/esm/hooks/useTrackerSubscription.js +97 -0
  115. package/build/esm/hooks/useTrackerSubscription.js.map +1 -0
  116. package/build/esm/hooks/useUnusedFieldAnalysis.js +99 -0
  117. package/build/esm/hooks/useUnusedFieldAnalysis.js.map +1 -0
  118. package/build/esm/index.js +31 -0
  119. package/build/esm/index.js.map +1 -0
  120. package/build/esm/inspector/ClickToInspectSystem.js +228 -0
  121. package/build/esm/inspector/ClickToInspectSystem.js.map +1 -0
  122. package/build/esm/inspector/components/ComponentLabel.js +175 -0
  123. package/build/esm/inspector/components/ComponentLabel.js.map +1 -0
  124. package/build/esm/inspector/components/ComponentLabel.module.scss.js +12 -0
  125. package/build/esm/inspector/components/InspectorBanner.js +79 -0
  126. package/build/esm/inspector/components/InspectorBanner.js.map +1 -0
  127. package/build/esm/inspector/components/InspectorOverlay.js +149 -0
  128. package/build/esm/inspector/components/InspectorOverlay.js.map +1 -0
  129. package/build/esm/inspector/components/SelectionHighlight.js +74 -0
  130. package/build/esm/inspector/components/SelectionHighlight.js.map +1 -0
  131. package/build/esm/inspector/createClickToInspect.js +21 -0
  132. package/build/esm/inspector/createClickToInspect.js.map +1 -0
  133. package/build/esm/inspector/hooks/useAnimatedBounds.js +167 -0
  134. package/build/esm/inspector/hooks/useAnimatedBounds.js.map +1 -0
  135. package/build/esm/inspector/index.js +40 -0
  136. package/build/esm/inspector/index.js.map +1 -0
  137. package/build/esm/inspector/inspectorController.js +328 -0
  138. package/build/esm/inspector/inspectorController.js.map +1 -0
  139. package/build/esm/inspector/types.js +2 -0
  140. package/build/esm/inspector/types.js.map +1 -0
  141. package/build/esm/inspector/utils/elementBounds.js +72 -0
  142. package/build/esm/inspector/utils/elementBounds.js.map +1 -0
  143. package/build/esm/inspector/utils/interpolation.js +26 -0
  144. package/build/esm/inspector/utils/interpolation.js.map +1 -0
  145. package/build/esm/inspector/utils/labelPositioning.js +62 -0
  146. package/build/esm/inspector/utils/labelPositioning.js.map +1 -0
  147. package/build/esm/mocking/MockCacheKeyGenerator.js +109 -0
  148. package/build/esm/mocking/MockCacheKeyGenerator.js.map +1 -0
  149. package/build/esm/mocking/MockManager.js +281 -0
  150. package/build/esm/mocking/MockManager.js.map +1 -0
  151. package/build/esm/prototyping/PrototypeOverrideStore.js +66 -0
  152. package/build/esm/prototyping/PrototypeOverrideStore.js.map +1 -0
  153. package/build/esm/prototyping/index.js +18 -0
  154. package/build/esm/prototyping/index.js.map +1 -0
  155. package/build/esm/public/vite.js +19 -0
  156. package/build/esm/public/vite.js.map +1 -0
  157. package/build/esm/register.js +41 -0
  158. package/build/esm/register.js.map +1 -0
  159. package/build/esm/scss.d.ts +20 -0
  160. package/build/esm/store/ComputeStore.js +269 -0
  161. package/build/esm/store/ComputeStore.js.map +1 -0
  162. package/build/esm/store/ConsoleLogStore.js +289 -0
  163. package/build/esm/store/ConsoleLogStore.js.map +1 -0
  164. package/build/esm/store/MetricsStore.js +428 -0
  165. package/build/esm/store/MetricsStore.js.map +1 -0
  166. package/build/esm/store/MonitorStore.js +288 -0
  167. package/build/esm/store/MonitorStore.js.map +1 -0
  168. package/build/esm/store/SubscribableStore.js +38 -0
  169. package/build/esm/store/SubscribableStore.js.map +1 -0
  170. package/build/esm/store/WindowErrorStore.js +195 -0
  171. package/build/esm/store/WindowErrorStore.js.map +1 -0
  172. package/build/esm/styles.css +19441 -0
  173. package/build/esm/styles.js +31 -0
  174. package/build/esm/styles.js.map +1 -0
  175. package/build/esm/types/compute.js +2 -0
  176. package/build/esm/types/compute.js.map +1 -0
  177. package/build/esm/types/emissions.js +2 -0
  178. package/build/esm/types/emissions.js.map +1 -0
  179. package/build/esm/types/index.js +23 -0
  180. package/build/esm/types/index.js.map +1 -0
  181. package/build/esm/utils/ActionLifecycleTracker.js +178 -0
  182. package/build/esm/utils/ActionLifecycleTracker.js.map +1 -0
  183. package/build/esm/utils/CacheEfficiencyAnalyzer.js +198 -0
  184. package/build/esm/utils/CacheEfficiencyAnalyzer.js.map +1 -0
  185. package/build/esm/utils/CircularBuffer.js +96 -0
  186. package/build/esm/utils/CircularBuffer.js.map +1 -0
  187. package/build/esm/utils/ComponentContextCapture.js +215 -0
  188. package/build/esm/utils/ComponentContextCapture.js.map +1 -0
  189. package/build/esm/utils/ComponentPrimitiveDiscovery.js +173 -0
  190. package/build/esm/utils/ComponentPrimitiveDiscovery.js.map +1 -0
  191. package/build/esm/utils/ComponentQueryRegistry.js +340 -0
  192. package/build/esm/utils/ComponentQueryRegistry.js.map +1 -0
  193. package/build/esm/utils/ComputeMonitor.js +199 -0
  194. package/build/esm/utils/ComputeMonitor.js.map +1 -0
  195. package/build/esm/utils/EventTimeline.js +130 -0
  196. package/build/esm/utils/EventTimeline.js.map +1 -0
  197. package/build/esm/utils/LinkTraversalTracker.js +116 -0
  198. package/build/esm/utils/LinkTraversalTracker.js.map +1 -0
  199. package/build/esm/utils/MockDataGenerator.js +473 -0
  200. package/build/esm/utils/MockDataGenerator.js.map +1 -0
  201. package/build/esm/utils/ObservableClientMonitor.js +768 -0
  202. package/build/esm/utils/ObservableClientMonitor.js.map +1 -0
  203. package/build/esm/utils/PerformanceRecommendationEngine.js +185 -0
  204. package/build/esm/utils/PerformanceRecommendationEngine.js.map +1 -0
  205. package/build/esm/utils/PropertyAccessTracker.js +238 -0
  206. package/build/esm/utils/PropertyAccessTracker.js.map +1 -0
  207. package/build/esm/utils/RecommendationMatcher.js +53 -0
  208. package/build/esm/utils/RecommendationMatcher.js.map +1 -0
  209. package/build/esm/utils/SubscriptionTracker.js +132 -0
  210. package/build/esm/utils/SubscriptionTracker.js.map +1 -0
  211. package/build/esm/utils/UnusedFieldAnalyzer.js +186 -0
  212. package/build/esm/utils/UnusedFieldAnalyzer.js.map +1 -0
  213. package/build/esm/utils/WaterfallDetector.js +200 -0
  214. package/build/esm/utils/WaterfallDetector.js.map +1 -0
  215. package/build/esm/utils/computePayload.js +37 -0
  216. package/build/esm/utils/computePayload.js.map +1 -0
  217. package/build/esm/utils/computeRequest.js +29 -0
  218. package/build/esm/utils/computeRequest.js.map +1 -0
  219. package/build/esm/utils/format.js +69 -0
  220. package/build/esm/utils/format.js.map +1 -0
  221. package/build/esm/utils/logger.js +31 -0
  222. package/build/esm/utils/logger.js.map +1 -0
  223. package/build/esm/vite/constants.js +18 -0
  224. package/build/esm/vite/constants.js.map +1 -0
  225. package/build/esm/vite/hookInstaller.js +99 -0
  226. package/build/esm/vite/hookInstaller.js.map +1 -0
  227. package/build/esm/vite/index.js +77 -0
  228. package/build/esm/vite/index.js.map +1 -0
  229. package/build/types/DevToolsContext.d.ts +3 -0
  230. package/build/types/DevToolsContext.d.ts.map +1 -0
  231. package/build/types/components/ActionMetrics.d.ts +6 -0
  232. package/build/types/components/ActionMetrics.d.ts.map +1 -0
  233. package/build/types/components/BubbleChart.d.ts +10 -0
  234. package/build/types/components/BubbleChart.d.ts.map +1 -0
  235. package/build/types/components/CacheInspectorTab.d.ts +6 -0
  236. package/build/types/components/CacheInspectorTab.d.ts.map +1 -0
  237. package/build/types/components/CacheMetrics.d.ts +6 -0
  238. package/build/types/components/CacheMetrics.d.ts.map +1 -0
  239. package/build/types/components/ComponentCard.d.ts +13 -0
  240. package/build/types/components/ComponentCard.d.ts.map +1 -0
  241. package/build/types/components/ComputeTab.d.ts +6 -0
  242. package/build/types/components/ComputeTab.d.ts.map +1 -0
  243. package/build/types/components/CopyableCodeBlock.d.ts +7 -0
  244. package/build/types/components/CopyableCodeBlock.d.ts.map +1 -0
  245. package/build/types/components/DebuggingTab.d.ts +6 -0
  246. package/build/types/components/DebuggingTab.d.ts.map +1 -0
  247. package/build/types/components/HookRow.d.ts +9 -0
  248. package/build/types/components/HookRow.d.ts.map +1 -0
  249. package/build/types/components/ImprovementsTab.d.ts +7 -0
  250. package/build/types/components/ImprovementsTab.d.ts.map +1 -0
  251. package/build/types/components/InspectorSelectionHeader.d.ts +12 -0
  252. package/build/types/components/InspectorSelectionHeader.d.ts.map +1 -0
  253. package/build/types/components/InterceptTab.d.ts +126 -0
  254. package/build/types/components/InterceptTab.d.ts.map +1 -0
  255. package/build/types/components/IssueCard.d.ts +8 -0
  256. package/build/types/components/IssueCard.d.ts.map +1 -0
  257. package/build/types/components/LogEntryCard.d.ts +7 -0
  258. package/build/types/components/LogEntryCard.d.ts.map +1 -0
  259. package/build/types/components/MockEditor.d.ts +58 -0
  260. package/build/types/components/MockEditor.d.ts.map +1 -0
  261. package/build/types/components/MonitorErrorBoundary.d.ts +16 -0
  262. package/build/types/components/MonitorErrorBoundary.d.ts.map +1 -0
  263. package/build/types/components/MonitoringPanel.d.ts +8 -0
  264. package/build/types/components/MonitoringPanel.d.ts.map +1 -0
  265. package/build/types/components/ObjectLoadingMetrics.d.ts +7 -0
  266. package/build/types/components/ObjectLoadingMetrics.d.ts.map +1 -0
  267. package/build/types/components/OsdkAppErrorBoundary.d.ts +18 -0
  268. package/build/types/components/OsdkAppErrorBoundary.d.ts.map +1 -0
  269. package/build/types/components/OsdkDevTools.d.ts +2 -0
  270. package/build/types/components/OsdkDevTools.d.ts.map +1 -0
  271. package/build/types/components/OverrideEditor.d.ts +26 -0
  272. package/build/types/components/OverrideEditor.d.ts.map +1 -0
  273. package/build/types/components/PerformanceTab.d.ts +8 -0
  274. package/build/types/components/PerformanceTab.d.ts.map +1 -0
  275. package/build/types/components/PrimitiveSelectionPanel.d.ts +28 -0
  276. package/build/types/components/PrimitiveSelectionPanel.d.ts.map +1 -0
  277. package/build/types/components/issueTypes.d.ts +16 -0
  278. package/build/types/components/issueTypes.d.ts.map +1 -0
  279. package/build/types/components/resolveComponentName.d.ts +3 -0
  280. package/build/types/components/resolveComponentName.d.ts.map +1 -0
  281. package/build/types/components/testHelpers.d.ts +2 -0
  282. package/build/types/components/testHelpers.d.ts.map +1 -0
  283. package/build/types/css.d.d.ts +4 -0
  284. package/build/types/css.d.d.ts.map +1 -0
  285. package/build/types/fiber/DegradationNotice.d.ts +8 -0
  286. package/build/types/fiber/DegradationNotice.d.ts.map +1 -0
  287. package/build/types/fiber/DevtoolsHook.d.ts +7 -0
  288. package/build/types/fiber/DevtoolsHook.d.ts.map +1 -0
  289. package/build/types/fiber/FiberAccess.d.ts +2 -0
  290. package/build/types/fiber/FiberAccess.d.ts.map +1 -0
  291. package/build/types/fiber/FiberInspection.d.ts +6 -0
  292. package/build/types/fiber/FiberInspection.d.ts.map +1 -0
  293. package/build/types/fiber/FiberTags.d.ts +33 -0
  294. package/build/types/fiber/FiberTags.d.ts.map +1 -0
  295. package/build/types/fiber/HookStateInspector.d.ts +45 -0
  296. package/build/types/fiber/HookStateInspector.d.ts.map +1 -0
  297. package/build/types/fiber/SafeFiberOperation.d.ts +7 -0
  298. package/build/types/fiber/SafeFiberOperation.d.ts.map +1 -0
  299. package/build/types/fiber/capabilities.d.ts +38 -0
  300. package/build/types/fiber/capabilities.d.ts.map +1 -0
  301. package/build/types/fiber/traverseFiber.d.ts +5 -0
  302. package/build/types/fiber/traverseFiber.d.ts.map +1 -0
  303. package/build/types/fiber/types.d.ts +87 -0
  304. package/build/types/fiber/types.d.ts.map +1 -0
  305. package/build/types/fiber/validation.d.ts +10 -0
  306. package/build/types/fiber/validation.d.ts.map +1 -0
  307. package/build/types/hooks/createPollingStore.d.ts +5 -0
  308. package/build/types/hooks/createPollingStore.d.ts.map +1 -0
  309. package/build/types/hooks/useActiveComponents.d.ts +3 -0
  310. package/build/types/hooks/useActiveComponents.d.ts.map +1 -0
  311. package/build/types/hooks/useComponentRegistry.d.ts +3 -0
  312. package/build/types/hooks/useComponentRegistry.d.ts.map +1 -0
  313. package/build/types/hooks/useComputeSelectors.d.ts +7 -0
  314. package/build/types/hooks/useComputeSelectors.d.ts.map +1 -0
  315. package/build/types/hooks/useConsoleLogs.d.ts +7 -0
  316. package/build/types/hooks/useConsoleLogs.d.ts.map +1 -0
  317. package/build/types/hooks/useInspectorSelection.d.ts +9 -0
  318. package/build/types/hooks/useInspectorSelection.d.ts.map +1 -0
  319. package/build/types/hooks/useMetrics.d.ts +3 -0
  320. package/build/types/hooks/useMetrics.d.ts.map +1 -0
  321. package/build/types/hooks/usePersistedState.d.ts +1 -0
  322. package/build/types/hooks/usePersistedState.d.ts.map +1 -0
  323. package/build/types/hooks/useRecommendations.d.ts +10 -0
  324. package/build/types/hooks/useRecommendations.d.ts.map +1 -0
  325. package/build/types/hooks/useSharedTick.d.ts +1 -0
  326. package/build/types/hooks/useSharedTick.d.ts.map +1 -0
  327. package/build/types/hooks/useTimeElapsed.d.ts +1 -0
  328. package/build/types/hooks/useTimeElapsed.d.ts.map +1 -0
  329. package/build/types/hooks/useTrackerSubscription.d.ts +16 -0
  330. package/build/types/hooks/useTrackerSubscription.d.ts.map +1 -0
  331. package/build/types/hooks/useUnusedFieldAnalysis.d.ts +8 -0
  332. package/build/types/hooks/useUnusedFieldAnalysis.d.ts.map +1 -0
  333. package/build/types/index.d.ts +21 -0
  334. package/build/types/index.d.ts.map +1 -0
  335. package/build/types/inspector/ClickToInspectSystem.d.ts +40 -0
  336. package/build/types/inspector/ClickToInspectSystem.d.ts.map +1 -0
  337. package/build/types/inspector/components/ComponentLabel.d.ts +3 -0
  338. package/build/types/inspector/components/ComponentLabel.d.ts.map +1 -0
  339. package/build/types/inspector/components/InspectorBanner.d.ts +5 -0
  340. package/build/types/inspector/components/InspectorBanner.d.ts.map +1 -0
  341. package/build/types/inspector/components/InspectorOverlay.d.ts +3 -0
  342. package/build/types/inspector/components/InspectorOverlay.d.ts.map +1 -0
  343. package/build/types/inspector/components/SelectionHighlight.d.ts +3 -0
  344. package/build/types/inspector/components/SelectionHighlight.d.ts.map +1 -0
  345. package/build/types/inspector/createClickToInspect.d.ts +3 -0
  346. package/build/types/inspector/createClickToInspect.d.ts.map +1 -0
  347. package/build/types/inspector/hooks/useAnimatedBounds.d.ts +2 -0
  348. package/build/types/inspector/hooks/useAnimatedBounds.d.ts.map +1 -0
  349. package/build/types/inspector/index.d.ts +13 -0
  350. package/build/types/inspector/index.d.ts.map +1 -0
  351. package/build/types/inspector/inspectorController.d.ts +2 -0
  352. package/build/types/inspector/inspectorController.d.ts.map +1 -0
  353. package/build/types/inspector/types.d.ts +94 -0
  354. package/build/types/inspector/types.d.ts.map +1 -0
  355. package/build/types/inspector/utils/elementBounds.d.ts +3 -0
  356. package/build/types/inspector/utils/elementBounds.d.ts.map +1 -0
  357. package/build/types/inspector/utils/interpolation.d.ts +7 -0
  358. package/build/types/inspector/utils/interpolation.d.ts.map +1 -0
  359. package/build/types/inspector/utils/labelPositioning.d.ts +3 -0
  360. package/build/types/inspector/utils/labelPositioning.d.ts.map +1 -0
  361. package/build/types/mocking/MockCacheKeyGenerator.d.ts +41 -0
  362. package/build/types/mocking/MockCacheKeyGenerator.d.ts.map +1 -0
  363. package/build/types/mocking/MockManager.d.ts +103 -0
  364. package/build/types/mocking/MockManager.d.ts.map +1 -0
  365. package/build/types/prototyping/PrototypeOverrideStore.d.ts +33 -0
  366. package/build/types/prototyping/PrototypeOverrideStore.d.ts.map +1 -0
  367. package/build/types/prototyping/index.d.ts +1 -0
  368. package/build/types/prototyping/index.d.ts.map +1 -0
  369. package/build/types/public/vite.d.ts +2 -0
  370. package/build/types/public/vite.d.ts.map +1 -0
  371. package/build/types/register.d.ts +1 -0
  372. package/build/types/register.d.ts.map +1 -0
  373. package/build/types/scss.d.d.ts +6 -0
  374. package/build/types/scss.d.d.ts.map +1 -0
  375. package/build/types/store/ComputeStore.d.ts +47 -0
  376. package/build/types/store/ComputeStore.d.ts.map +1 -0
  377. package/build/types/store/ConsoleLogStore.d.ts +29 -0
  378. package/build/types/store/ConsoleLogStore.d.ts.map +1 -0
  379. package/build/types/store/MetricsStore.d.ts +42 -0
  380. package/build/types/store/MetricsStore.d.ts.map +1 -0
  381. package/build/types/store/MonitorStore.d.ts +86 -0
  382. package/build/types/store/MonitorStore.d.ts.map +1 -0
  383. package/build/types/store/SubscribableStore.d.ts +6 -0
  384. package/build/types/store/SubscribableStore.d.ts.map +1 -0
  385. package/build/types/store/WindowErrorStore.d.ts +32 -0
  386. package/build/types/store/WindowErrorStore.d.ts.map +1 -0
  387. package/build/types/styles.d.ts +1 -0
  388. package/build/types/styles.d.ts.map +1 -0
  389. package/build/types/types/compute.d.ts +73 -0
  390. package/build/types/types/compute.d.ts.map +1 -0
  391. package/build/types/types/emissions.d.ts +24 -0
  392. package/build/types/types/emissions.d.ts.map +1 -0
  393. package/build/types/types/index.d.ts +143 -0
  394. package/build/types/types/index.d.ts.map +1 -0
  395. package/build/types/utils/ActionLifecycleTracker.d.ts +39 -0
  396. package/build/types/utils/ActionLifecycleTracker.d.ts.map +1 -0
  397. package/build/types/utils/CacheEfficiencyAnalyzer.d.ts +45 -0
  398. package/build/types/utils/CacheEfficiencyAnalyzer.d.ts.map +1 -0
  399. package/build/types/utils/CircularBuffer.d.ts +18 -0
  400. package/build/types/utils/CircularBuffer.d.ts.map +1 -0
  401. package/build/types/utils/ComponentContextCapture.d.ts +29 -0
  402. package/build/types/utils/ComponentContextCapture.d.ts.map +1 -0
  403. package/build/types/utils/ComponentPrimitiveDiscovery.d.ts +62 -0
  404. package/build/types/utils/ComponentPrimitiveDiscovery.d.ts.map +1 -0
  405. package/build/types/utils/ComponentQueryRegistry.d.ts +91 -0
  406. package/build/types/utils/ComponentQueryRegistry.d.ts.map +1 -0
  407. package/build/types/utils/ComputeMonitor.d.ts +14 -0
  408. package/build/types/utils/ComputeMonitor.d.ts.map +1 -0
  409. package/build/types/utils/EventTimeline.d.ts +102 -0
  410. package/build/types/utils/EventTimeline.d.ts.map +1 -0
  411. package/build/types/utils/LinkTraversalTracker.d.ts +43 -0
  412. package/build/types/utils/LinkTraversalTracker.d.ts.map +1 -0
  413. package/build/types/utils/MockDataGenerator.d.ts +23 -0
  414. package/build/types/utils/MockDataGenerator.d.ts.map +1 -0
  415. package/build/types/utils/ObservableClientMonitor.d.ts +62 -0
  416. package/build/types/utils/ObservableClientMonitor.d.ts.map +1 -0
  417. package/build/types/utils/PerformanceRecommendationEngine.d.ts +67 -0
  418. package/build/types/utils/PerformanceRecommendationEngine.d.ts.map +1 -0
  419. package/build/types/utils/PropertyAccessTracker.d.ts +50 -0
  420. package/build/types/utils/PropertyAccessTracker.d.ts.map +1 -0
  421. package/build/types/utils/RecommendationMatcher.d.ts +5 -0
  422. package/build/types/utils/RecommendationMatcher.d.ts.map +1 -0
  423. package/build/types/utils/SubscriptionTracker.d.ts +17 -0
  424. package/build/types/utils/SubscriptionTracker.d.ts.map +1 -0
  425. package/build/types/utils/UnusedFieldAnalyzer.d.ts +46 -0
  426. package/build/types/utils/UnusedFieldAnalyzer.d.ts.map +1 -0
  427. package/build/types/utils/WaterfallDetector.d.ts +28 -0
  428. package/build/types/utils/WaterfallDetector.d.ts.map +1 -0
  429. package/build/types/utils/computePayload.d.ts +3 -0
  430. package/build/types/utils/computePayload.d.ts.map +1 -0
  431. package/build/types/utils/computeRequest.d.ts +20 -0
  432. package/build/types/utils/computeRequest.d.ts.map +1 -0
  433. package/build/types/utils/format.d.ts +5 -0
  434. package/build/types/utils/format.d.ts.map +1 -0
  435. package/build/types/utils/logger.d.ts +2 -0
  436. package/build/types/utils/logger.d.ts.map +1 -0
  437. package/build/types/vite/constants.d.ts +1 -0
  438. package/build/types/vite/constants.d.ts.map +1 -0
  439. package/build/types/vite/hookInstaller.d.ts +1 -0
  440. package/build/types/vite/hookInstaller.d.ts.map +1 -0
  441. package/build/types/vite/index.d.ts +20 -0
  442. package/build/types/vite/index.d.ts.map +1 -0
  443. package/package.json +114 -0
@@ -0,0 +1,862 @@
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 { Button, Icon } from "@blueprintjs/core";
18
+ import React, { useCallback, useMemo, useReducer } from "react";
19
+ import { createPollingStore } from "../hooks/createPollingStore.js";
20
+ import { useInspectorSelection } from "../hooks/useInspectorSelection.js";
21
+ import { MockDataGenerator } from "../utils/MockDataGenerator.js";
22
+ import { InspectorSelectionHeader } from "./InspectorSelectionHeader.js";
23
+ import styles from "./InterceptTab.module.scss.js";
24
+ import { createMatcherFromPrimitive, createResponseFromConfig, getMockPrimitiveInfo, MockEditor, MockItem } from "./MockEditor.js";
25
+ import { OverrideEditor, OverrideItem } from "./OverrideEditor.js";
26
+ import { PrimitiveSelectionPanel } from "./PrimitiveSelectionPanel.js";
27
+ const lazyJson = () => import("@codemirror/lang-json").then(m => m.json);
28
+ let jsonExtensionValue = null;
29
+ const jsonExtensionListeners = new Set();
30
+ const jsonExtensionPromise = lazyJson().then(jsonFn => {
31
+ jsonExtensionValue = jsonFn();
32
+ for (const listener of jsonExtensionListeners) {
33
+ listener();
34
+ }
35
+ });
36
+ function subscribeJsonExtension(callback) {
37
+ jsonExtensionListeners.add(callback);
38
+ return () => {
39
+ jsonExtensionListeners.delete(callback);
40
+ };
41
+ }
42
+ function getJsonExtensionSnapshot() {
43
+ return jsonExtensionValue;
44
+ }
45
+ function parseJsonField(text, fieldName) {
46
+ try {
47
+ const trimmed = text.trim();
48
+ if (trimmed && trimmed !== "{}") {
49
+ return {
50
+ value: JSON.parse(trimmed),
51
+ error: null
52
+ };
53
+ }
54
+ return {
55
+ value: undefined,
56
+ error: null
57
+ };
58
+ } catch {
59
+ return {
60
+ value: undefined,
61
+ error: `Invalid JSON in ${fieldName} field`
62
+ };
63
+ }
64
+ }
65
+ const DEFAULT_STATIC_DATA = "{\n \"status\": \"SUCCESS\",\n \"data\": {}\n}";
66
+ const DEFAULT_FUNCTION_CODE = "function generateMock(params) {\n return {\n status: \"SUCCESS\",\n data: {}\n };\n}";
67
+ const DEFAULT_ERROR_MESSAGE = "Mock request failed";
68
+ const initialState = {
69
+ selectedPrimitive: null,
70
+ mocks: [],
71
+ editingMock: null,
72
+ mockType: "static",
73
+ responseType: "success",
74
+ usePayload: true,
75
+ mockPayload: "{}",
76
+ useResponse: true,
77
+ staticData: DEFAULT_STATIC_DATA,
78
+ functionCode: DEFAULT_FUNCTION_CODE,
79
+ errorMessage: DEFAULT_ERROR_MESSAGE,
80
+ selectedQuery: null,
81
+ activeOverrides: [],
82
+ whereClauseText: "",
83
+ orderByText: "",
84
+ pageSize: undefined,
85
+ groupByText: "",
86
+ selectText: "",
87
+ choosingPrimitive: null,
88
+ error: null
89
+ };
90
+ function hydrateOverrideFields(params) {
91
+ const jsonOrEmpty = (val, fallback) => val ? JSON.stringify(val, null, 2) : fallback;
92
+ if (params.isAggregation) {
93
+ return {
94
+ whereClauseText: jsonOrEmpty(params.where, "{}"),
95
+ groupByText: jsonOrEmpty(params.groupBy, "{}"),
96
+ selectText: jsonOrEmpty(params.select, "{}"),
97
+ orderByText: "{}",
98
+ pageSize: undefined
99
+ };
100
+ }
101
+ return {
102
+ whereClauseText: jsonOrEmpty(params.where, "{}"),
103
+ orderByText: jsonOrEmpty(params.orderBy, "{}"),
104
+ pageSize: params.pageSize,
105
+ groupByText: "",
106
+ selectText: ""
107
+ };
108
+ }
109
+ function interceptReducer(state, action) {
110
+ switch (action.type) {
111
+ case "SET_SELECTED_PRIMITIVE":
112
+ return {
113
+ ...state,
114
+ selectedPrimitive: action.primitive
115
+ };
116
+ case "SET_MOCKS":
117
+ return {
118
+ ...state,
119
+ mocks: action.mocks
120
+ };
121
+ case "UPDATE_MOCKS":
122
+ return {
123
+ ...state,
124
+ mocks: action.updater(state.mocks)
125
+ };
126
+ case "SET_EDITING_MOCK":
127
+ return {
128
+ ...state,
129
+ editingMock: action.mock
130
+ };
131
+ case "SET_MOCK_TYPE":
132
+ return {
133
+ ...state,
134
+ mockType: action.mockType
135
+ };
136
+ case "SET_RESPONSE_TYPE":
137
+ return {
138
+ ...state,
139
+ responseType: action.responseType
140
+ };
141
+ case "SET_USE_PAYLOAD":
142
+ return {
143
+ ...state,
144
+ usePayload: action.usePayload
145
+ };
146
+ case "SET_MOCK_PAYLOAD":
147
+ return {
148
+ ...state,
149
+ mockPayload: action.mockPayload
150
+ };
151
+ case "SET_USE_RESPONSE":
152
+ return {
153
+ ...state,
154
+ useResponse: action.useResponse
155
+ };
156
+ case "SET_STATIC_DATA":
157
+ return {
158
+ ...state,
159
+ staticData: action.staticData
160
+ };
161
+ case "SET_FUNCTION_CODE":
162
+ return {
163
+ ...state,
164
+ functionCode: action.functionCode
165
+ };
166
+ case "SET_ERROR_MESSAGE":
167
+ return {
168
+ ...state,
169
+ errorMessage: action.errorMessage
170
+ };
171
+ case "SET_SELECTED_QUERY":
172
+ return {
173
+ ...state,
174
+ selectedQuery: action.query
175
+ };
176
+ case "SET_ACTIVE_OVERRIDES":
177
+ return {
178
+ ...state,
179
+ activeOverrides: action.overrides
180
+ };
181
+ case "SET_WHERE_CLAUSE_TEXT":
182
+ return {
183
+ ...state,
184
+ whereClauseText: action.text
185
+ };
186
+ case "SET_ORDER_BY_TEXT":
187
+ return {
188
+ ...state,
189
+ orderByText: action.text
190
+ };
191
+ case "SET_PAGE_SIZE":
192
+ return {
193
+ ...state,
194
+ pageSize: action.pageSize
195
+ };
196
+ case "SET_GROUP_BY_TEXT":
197
+ return {
198
+ ...state,
199
+ groupByText: action.text
200
+ };
201
+ case "SET_SELECT_TEXT":
202
+ return {
203
+ ...state,
204
+ selectText: action.text
205
+ };
206
+ case "SET_CHOOSING_PRIMITIVE":
207
+ return {
208
+ ...state,
209
+ choosingPrimitive: action.primitive
210
+ };
211
+ case "SET_ERROR":
212
+ return {
213
+ ...state,
214
+ error: action.error
215
+ };
216
+ case "HYDRATE_OVERRIDE_FORM":
217
+ return {
218
+ ...state,
219
+ ...hydrateOverrideFields(action.params)
220
+ };
221
+ case "INIT_MOCK_FORM_FROM_CONFIG":
222
+ {
223
+ const cfg = action.config;
224
+ return {
225
+ ...state,
226
+ mockType: cfg.mockType,
227
+ responseType: cfg.responseType,
228
+ usePayload: cfg.usePayload ?? false,
229
+ mockPayload: cfg.payload || "{}",
230
+ useResponse: cfg.useResponse ?? false,
231
+ staticData: cfg.staticData || DEFAULT_STATIC_DATA,
232
+ functionCode: cfg.functionCode || DEFAULT_FUNCTION_CODE,
233
+ errorMessage: cfg.errorMessage || DEFAULT_ERROR_MESSAGE
234
+ };
235
+ }
236
+ case "INIT_MOCK_FORM_FROM_PRIMITIVE":
237
+ return {
238
+ ...state,
239
+ staticData: MockDataGenerator.generateStaticData(action.primitive),
240
+ functionCode: MockDataGenerator.generateFunctionCode(action.primitive),
241
+ mockPayload: MockDataGenerator.generatePayload(action.primitive),
242
+ mockType: "static",
243
+ responseType: "success",
244
+ usePayload: true,
245
+ useResponse: true,
246
+ errorMessage: DEFAULT_ERROR_MESSAGE
247
+ };
248
+ case "SELECT_PRIMITIVE_FOR_MOCK":
249
+ return {
250
+ ...state,
251
+ selectedPrimitive: action.primitive,
252
+ editingMock: null
253
+ };
254
+ case "CANCEL_MOCK_EDITOR":
255
+ return {
256
+ ...state,
257
+ selectedPrimitive: null,
258
+ editingMock: null
259
+ };
260
+ case "CLEAR_SELECTION":
261
+ return {
262
+ ...state,
263
+ selectedQuery: null,
264
+ choosingPrimitive: null,
265
+ error: null
266
+ };
267
+ case "SAVE_MOCK_DONE":
268
+ return {
269
+ ...state,
270
+ selectedPrimitive: null,
271
+ editingMock: null
272
+ };
273
+ }
274
+ }
275
+ export const InterceptTab = ({
276
+ monitorStore,
277
+ theme
278
+ }) => {
279
+ const {
280
+ isSelectionActive,
281
+ discoveredPrimitives,
282
+ activateSelection,
283
+ clearDiscoveredPrimitives
284
+ } = useInspectorSelection(monitorStore);
285
+ const [state, dispatch] = useReducer(interceptReducer, initialState);
286
+ const {
287
+ selectedPrimitive,
288
+ mocks,
289
+ editingMock,
290
+ mockType,
291
+ responseType,
292
+ usePayload,
293
+ mockPayload,
294
+ useResponse,
295
+ staticData,
296
+ functionCode,
297
+ errorMessage,
298
+ selectedQuery,
299
+ activeOverrides,
300
+ whereClauseText,
301
+ orderByText,
302
+ pageSize,
303
+ groupByText,
304
+ selectText,
305
+ choosingPrimitive,
306
+ error
307
+ } = state;
308
+ const jsonExtension = React.useSyncExternalStore(subscribeJsonExtension, getJsonExtensionSnapshot);
309
+ const jsonExtensions = useMemo(() => jsonExtension ? [jsonExtension] : [], [jsonExtension]);
310
+ const overrideStore = monitorStore.getPrototypeOverrideStore();
311
+ const overrideSnapshotRef = React.useRef([]);
312
+ const overrideSubscribe = useCallback(callback => overrideStore.subscribe(callback), [overrideStore]);
313
+ const overrideGetSnapshot = useCallback(() => {
314
+ const current = overrideStore.getAll();
315
+ const prev = overrideSnapshotRef.current;
316
+ if (prev.length === current.length && prev.every((o, i) => o === current[i])) {
317
+ return prev;
318
+ }
319
+ overrideSnapshotRef.current = current;
320
+ return current;
321
+ }, [overrideStore]);
322
+ const overrideStoreOverrides = React.useSyncExternalStore(overrideSubscribe, overrideGetSnapshot);
323
+ const mockPollingStore = React.useMemo(() => {
324
+ const mockManager = monitorStore.getMockManager();
325
+ return createPollingStore(() => mockManager.getMocks(), 1000);
326
+ }, [monitorStore]);
327
+ const polledMocks = React.useSyncExternalStore(mockPollingStore.subscribe, mockPollingStore.getSnapshot);
328
+ const effectiveMocks = useMemo(() => {
329
+ if (!polledMocks || polledMocks.length === 0) {
330
+ return mocks;
331
+ }
332
+ return polledMocks.map(m => {
333
+ const existingMock = mocks.find(item => item.id === m.id);
334
+ if (existingMock?.config) {
335
+ return {
336
+ ...m,
337
+ config: existingMock.config
338
+ };
339
+ }
340
+ return {
341
+ ...m,
342
+ config: {
343
+ primitive: {
344
+ type: "action",
345
+ data: {
346
+ name: "unknown",
347
+ signature: "",
348
+ location: "",
349
+ hookIndex: 0
350
+ }
351
+ },
352
+ mockType: "static",
353
+ responseType: "success",
354
+ enabled: m.enabled
355
+ }
356
+ };
357
+ });
358
+ }, [polledMocks, mocks]);
359
+ const handleSelectPrimitive = useCallback(primitive => {
360
+ if (primitive.type === "objectSet" || primitive.type === "aggregation") {
361
+ dispatch({
362
+ type: "SET_CHOOSING_PRIMITIVE",
363
+ primitive
364
+ });
365
+ } else {
366
+ dispatch({
367
+ type: "SELECT_PRIMITIVE_FOR_MOCK",
368
+ primitive
369
+ });
370
+ dispatch({
371
+ type: "INIT_MOCK_FORM_FROM_PRIMITIVE",
372
+ primitive
373
+ });
374
+ }
375
+ }, []);
376
+ const handleChooseMock = useCallback(() => {
377
+ if (!choosingPrimitive) {
378
+ return;
379
+ }
380
+ dispatch({
381
+ type: "SELECT_PRIMITIVE_FOR_MOCK",
382
+ primitive: choosingPrimitive
383
+ });
384
+ dispatch({
385
+ type: "INIT_MOCK_FORM_FROM_PRIMITIVE",
386
+ primitive: choosingPrimitive
387
+ });
388
+ dispatch({
389
+ type: "SET_CHOOSING_PRIMITIVE",
390
+ primitive: null
391
+ });
392
+ }, [choosingPrimitive]);
393
+ const handleChooseOverride = useCallback(() => {
394
+ if (!choosingPrimitive || !discoveredPrimitives) {
395
+ return;
396
+ }
397
+ if (choosingPrimitive.type === "aggregation") {
398
+ const data = choosingPrimitive.data;
399
+ dispatch({
400
+ type: "SET_SELECTED_QUERY",
401
+ query: {
402
+ componentId: discoveredPrimitives.componentId,
403
+ componentName: discoveredPrimitives.componentName,
404
+ objectType: data.type,
405
+ hookType: "useOsdkAggregation",
406
+ hookIndex: data.hookIndex,
407
+ originalParams: {
408
+ where: data.whereClause,
409
+ groupBy: data.aggregate?.groupBy,
410
+ select: data.aggregate?.select
411
+ },
412
+ querySignature: data.querySignature,
413
+ isAggregation: true
414
+ }
415
+ });
416
+ dispatch({
417
+ type: "HYDRATE_OVERRIDE_FORM",
418
+ params: {
419
+ isAggregation: true,
420
+ where: data.whereClause,
421
+ groupBy: data.aggregate?.groupBy,
422
+ select: data.aggregate?.select
423
+ }
424
+ });
425
+ } else if (choosingPrimitive.type === "objectSet") {
426
+ const data = choosingPrimitive.data;
427
+ dispatch({
428
+ type: "SET_SELECTED_QUERY",
429
+ query: {
430
+ componentId: discoveredPrimitives.componentId,
431
+ componentName: discoveredPrimitives.componentName,
432
+ objectType: data.type,
433
+ hookType: "useOsdkObjects",
434
+ hookIndex: data.hookIndex,
435
+ originalParams: {
436
+ where: data.whereClause,
437
+ orderBy: data.orderBy,
438
+ pageSize: data.pageSize
439
+ },
440
+ querySignature: data.querySignature,
441
+ isAggregation: false
442
+ }
443
+ });
444
+ dispatch({
445
+ type: "HYDRATE_OVERRIDE_FORM",
446
+ params: {
447
+ isAggregation: false,
448
+ where: data.whereClause,
449
+ orderBy: data.orderBy,
450
+ pageSize: data.pageSize
451
+ }
452
+ });
453
+ }
454
+ dispatch({
455
+ type: "SET_CHOOSING_PRIMITIVE",
456
+ primitive: null
457
+ });
458
+ clearDiscoveredPrimitives();
459
+ dispatch({
460
+ type: "SET_ERROR",
461
+ error: null
462
+ });
463
+ }, [choosingPrimitive, discoveredPrimitives, clearDiscoveredPrimitives]);
464
+ const handleSaveMock = useCallback(() => {
465
+ if (!selectedPrimitive) {
466
+ return;
467
+ }
468
+ const mockManager = monitorStore.getMockManager();
469
+ dispatch({
470
+ type: "SET_ERROR",
471
+ error: null
472
+ });
473
+ try {
474
+ if (!selectedPrimitive.type || !selectedPrimitive.data) {
475
+ dispatch({
476
+ type: "SET_ERROR",
477
+ error: "Invalid primitive structure. Please try selecting the component again."
478
+ });
479
+ return;
480
+ }
481
+ const config = {
482
+ primitive: selectedPrimitive,
483
+ mockType,
484
+ responseType,
485
+ usePayload: selectedPrimitive.type === "action" ? usePayload : undefined,
486
+ payload: selectedPrimitive.type === "action" && usePayload ? mockPayload : undefined,
487
+ useResponse,
488
+ staticData: mockType === "static" && useResponse ? staticData : undefined,
489
+ functionCode: mockType === "function" && useResponse ? functionCode : undefined,
490
+ errorMessage: responseType === "error" && useResponse ? errorMessage : undefined,
491
+ enabled: true
492
+ };
493
+ let mockData;
494
+ if (!useResponse) {
495
+ mockData = null;
496
+ } else if (responseType === "error") {
497
+ mockData = {
498
+ error: true,
499
+ message: errorMessage || DEFAULT_ERROR_MESSAGE
500
+ };
501
+ } else if (mockType === "static" && staticData) {
502
+ try {
503
+ mockData = JSON.parse(staticData);
504
+ } catch (_jsonError) {
505
+ dispatch({
506
+ type: "SET_ERROR",
507
+ error: "Invalid JSON in mock data. Please check your JSON syntax."
508
+ });
509
+ return;
510
+ }
511
+ }
512
+ const response = !useResponse ? {
513
+ type: "passthrough"
514
+ } : responseType === "error" ? {
515
+ type: "error",
516
+ error: errorMessage || DEFAULT_ERROR_MESSAGE
517
+ } : createResponseFromConfig(selectedPrimitive, mockData);
518
+ const sharedFields = {
519
+ matcher: createMatcherFromPrimitive(selectedPrimitive),
520
+ response,
521
+ enabled: config.enabled,
522
+ usePayload: config.usePayload,
523
+ payload: config.payload,
524
+ usedCount: 0
525
+ };
526
+ if (editingMock) {
527
+ mockManager.removeMock(editingMock.id);
528
+ const mockResponse = {
529
+ ...editingMock,
530
+ ...sharedFields
531
+ };
532
+ const id = mockManager.registerMock(mockResponse);
533
+ dispatch({
534
+ type: "UPDATE_MOCKS",
535
+ updater: prevMocks => prevMocks.map(m => m.id === editingMock.id ? {
536
+ ...mockResponse,
537
+ config,
538
+ id
539
+ } : m)
540
+ });
541
+ } else {
542
+ const mockResponse = {
543
+ id: crypto.randomUUID(),
544
+ type: selectedPrimitive.type === "action" ? "action" : selectedPrimitive.type === "objectSet" || selectedPrimitive.type === "link" || selectedPrimitive.type === "aggregation" ? "list" : "object",
545
+ delay: 0,
546
+ ...sharedFields
547
+ };
548
+ const id = mockManager.registerMock(mockResponse);
549
+ dispatch({
550
+ type: "UPDATE_MOCKS",
551
+ updater: prevMocks => [...prevMocks, {
552
+ ...mockResponse,
553
+ config,
554
+ id
555
+ }]
556
+ });
557
+ }
558
+ dispatch({
559
+ type: "SAVE_MOCK_DONE"
560
+ });
561
+ clearDiscoveredPrimitives();
562
+ } catch (err) {
563
+ const msg = err instanceof Error ? err.message : "Unknown error";
564
+ dispatch({
565
+ type: "SET_ERROR",
566
+ error: `Failed to save mock: ${msg}`
567
+ });
568
+ }
569
+ }, [selectedPrimitive, editingMock, mockType, responseType, usePayload, mockPayload, useResponse, staticData, functionCode, errorMessage, monitorStore, clearDiscoveredPrimitives]);
570
+ const handleCancelMockEditor = useCallback(() => {
571
+ dispatch({
572
+ type: "CANCEL_MOCK_EDITOR"
573
+ });
574
+ }, []);
575
+ const handleToggleMock = useCallback(mockId => {
576
+ const mockManager = monitorStore.getMockManager();
577
+ const mock = mockManager.getMock(mockId);
578
+ if (mock) {
579
+ const newEnabled = !mock.enabled;
580
+ mockManager.updateMock(mockId, {
581
+ enabled: newEnabled
582
+ });
583
+ dispatch({
584
+ type: "UPDATE_MOCKS",
585
+ updater: prevMocks => prevMocks.map(m => m.id === mockId ? {
586
+ ...m,
587
+ enabled: newEnabled
588
+ } : m)
589
+ });
590
+ }
591
+ }, [monitorStore]);
592
+ const handleDeleteMock = useCallback(mockId => {
593
+ const mockManager = monitorStore.getMockManager();
594
+ mockManager.removeMock(mockId);
595
+ dispatch({
596
+ type: "UPDATE_MOCKS",
597
+ updater: prevMocks => prevMocks.filter(m => m.id !== mockId)
598
+ });
599
+ }, [monitorStore]);
600
+ const handleEditMock = useCallback(mock => {
601
+ dispatch({
602
+ type: "SET_EDITING_MOCK",
603
+ mock
604
+ });
605
+ dispatch({
606
+ type: "SET_SELECTED_PRIMITIVE",
607
+ primitive: mock.config.primitive
608
+ });
609
+ dispatch({
610
+ type: "INIT_MOCK_FORM_FROM_CONFIG",
611
+ config: mock.config
612
+ });
613
+ }, []);
614
+ const handleApplyOverride = useCallback(() => {
615
+ if (!selectedQuery) {
616
+ return;
617
+ }
618
+ dispatch({
619
+ type: "SET_ERROR",
620
+ error: null
621
+ });
622
+ const whereResult = parseJsonField(whereClauseText, "Where Clause");
623
+ if (whereResult.error) {
624
+ dispatch({
625
+ type: "SET_ERROR",
626
+ error: whereResult.error
627
+ });
628
+ return;
629
+ }
630
+ const bindingId = `${selectedQuery.componentId}:${selectedQuery.hookIndex}`;
631
+ let overrideParams;
632
+ if (selectedQuery.isAggregation) {
633
+ const groupByResult = parseJsonField(groupByText, "Group By");
634
+ if (groupByResult.error) {
635
+ dispatch({
636
+ type: "SET_ERROR",
637
+ error: groupByResult.error
638
+ });
639
+ return;
640
+ }
641
+ const selectResult = parseJsonField(selectText, "Select");
642
+ if (selectResult.error) {
643
+ dispatch({
644
+ type: "SET_ERROR",
645
+ error: selectResult.error
646
+ });
647
+ return;
648
+ }
649
+ overrideParams = {
650
+ where: whereResult.value,
651
+ groupBy: groupByResult.value,
652
+ select: selectResult.value
653
+ };
654
+ } else {
655
+ const orderByResult = parseJsonField(orderByText, "Order By");
656
+ if (orderByResult.error) {
657
+ dispatch({
658
+ type: "SET_ERROR",
659
+ error: orderByResult.error
660
+ });
661
+ return;
662
+ }
663
+ overrideParams = {
664
+ where: whereResult.value,
665
+ orderBy: orderByResult.value,
666
+ pageSize
667
+ };
668
+ }
669
+ const override = {
670
+ bindingId,
671
+ componentId: selectedQuery.componentId,
672
+ componentName: selectedQuery.componentName,
673
+ hookType: selectedQuery.hookType,
674
+ hookIndex: selectedQuery.hookIndex,
675
+ objectType: selectedQuery.objectType,
676
+ querySignature: selectedQuery.querySignature,
677
+ originalParams: selectedQuery.originalParams,
678
+ overrideParams,
679
+ enabled: true,
680
+ createdAt: Date.now()
681
+ };
682
+ overrideStore.setOverride(override);
683
+ dispatch({
684
+ type: "SET_SELECTED_QUERY",
685
+ query: null
686
+ });
687
+ }, [selectedQuery, whereClauseText, orderByText, pageSize, groupByText, selectText, overrideStore]);
688
+ const handleToggleOverride = useCallback(bindingId => {
689
+ const override = overrideStore.getOverride(bindingId);
690
+ if (override) {
691
+ overrideStore.updateOverride(bindingId, {
692
+ enabled: !override.enabled
693
+ });
694
+ }
695
+ }, [overrideStore]);
696
+ const handleRemoveOverride = useCallback(bindingId => {
697
+ overrideStore.clearOverride(bindingId);
698
+ }, [overrideStore]);
699
+ const handleEditOverride = useCallback(override => {
700
+ const isAggregation = override.hookType === "useOsdkAggregation";
701
+ dispatch({
702
+ type: "SET_SELECTED_QUERY",
703
+ query: {
704
+ componentId: override.componentId,
705
+ componentName: override.componentName,
706
+ objectType: override.objectType,
707
+ hookType: override.hookType,
708
+ hookIndex: override.hookIndex,
709
+ originalParams: override.originalParams,
710
+ querySignature: override.querySignature,
711
+ isAggregation
712
+ }
713
+ });
714
+ dispatch({
715
+ type: "HYDRATE_OVERRIDE_FORM",
716
+ params: {
717
+ isAggregation,
718
+ where: override.overrideParams.where,
719
+ orderBy: override.overrideParams.orderBy,
720
+ pageSize: override.overrideParams.pageSize,
721
+ groupBy: override.overrideParams.groupBy,
722
+ select: override.overrideParams.select
723
+ }
724
+ });
725
+ dispatch({
726
+ type: "SET_ERROR",
727
+ error: null
728
+ });
729
+ }, []);
730
+ const handleClearSelection = useCallback(() => {
731
+ dispatch({
732
+ type: "CLEAR_SELECTION"
733
+ });
734
+ clearDiscoveredPrimitives();
735
+ }, [clearDiscoveredPrimitives]);
736
+ const hasActiveIntercepts = effectiveMocks.length > 0 || overrideStoreOverrides.length > 0;
737
+ const mockPrimitiveInfo = useMemo(() => {
738
+ if (!selectedPrimitive) {
739
+ return null;
740
+ }
741
+ return getMockPrimitiveInfo(selectedPrimitive);
742
+ }, [selectedPrimitive]);
743
+ return /*#__PURE__*/React.createElement("div", {
744
+ className: styles.interceptTab
745
+ }, /*#__PURE__*/React.createElement(InspectorSelectionHeader, {
746
+ error: error,
747
+ onDismissError: () => dispatch({
748
+ type: "SET_ERROR",
749
+ error: null
750
+ }),
751
+ isSelectionActive: isSelectionActive,
752
+ onActivateSelection: activateSelection,
753
+ infoText: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("strong", null, "Intercept:"), " ", "Select a component to mock responses or override query parameters."),
754
+ activeWarningText: "Selection mode is active. Click on any component to discover its OSDK usage.",
755
+ buttonLabel: "Select Component",
756
+ showHelpTooltip: true
757
+ }), /*#__PURE__*/React.createElement("div", {
758
+ className: styles.content
759
+ }, discoveredPrimitives && !choosingPrimitive && !selectedPrimitive && /*#__PURE__*/React.createElement(PrimitiveSelectionPanel, {
760
+ primitives: discoveredPrimitives,
761
+ onSelectPrimitive: handleSelectPrimitive,
762
+ onClose: clearDiscoveredPrimitives
763
+ }), choosingPrimitive && /*#__PURE__*/React.createElement("div", {
764
+ className: styles.interceptTypeChoice
765
+ }, /*#__PURE__*/React.createElement("div", {
766
+ className: styles.panelHeader
767
+ }, /*#__PURE__*/React.createElement(Icon, {
768
+ icon: "fork"
769
+ }), /*#__PURE__*/React.createElement("span", null, "How do you want to intercept?"), /*#__PURE__*/React.createElement(Button, {
770
+ variant: "minimal",
771
+ size: "small",
772
+ icon: "cross",
773
+ "aria-label": "Cancel",
774
+ onClick: handleClearSelection
775
+ })), /*#__PURE__*/React.createElement("div", {
776
+ className: styles.choiceGrid
777
+ }, /*#__PURE__*/React.createElement("button", {
778
+ type: "button",
779
+ className: styles.choiceCard,
780
+ onClick: handleChooseMock
781
+ }, /*#__PURE__*/React.createElement(Icon, {
782
+ icon: "shield",
783
+ size: 24
784
+ }), /*#__PURE__*/React.createElement("div", {
785
+ className: styles.choiceTitle
786
+ }, "Mock Response"), /*#__PURE__*/React.createElement("div", {
787
+ className: styles.choiceDescription
788
+ }, "Replace the response data with static or dynamic mock data")), /*#__PURE__*/React.createElement("button", {
789
+ type: "button",
790
+ className: styles.choiceCard,
791
+ onClick: handleChooseOverride
792
+ }, /*#__PURE__*/React.createElement(Icon, {
793
+ icon: "edit",
794
+ size: 24
795
+ }), /*#__PURE__*/React.createElement("div", {
796
+ className: styles.choiceTitle
797
+ }, "Override Query"), /*#__PURE__*/React.createElement("div", {
798
+ className: styles.choiceDescription
799
+ }, "Edit where, orderBy, pageSize, or aggregation params in real-time")))), selectedPrimitive && /*#__PURE__*/React.createElement(MockEditor, {
800
+ selectedPrimitive: selectedPrimitive,
801
+ editingMock: editingMock,
802
+ mockType: mockType,
803
+ responseType: responseType,
804
+ usePayload: usePayload,
805
+ mockPayload: mockPayload,
806
+ useResponse: useResponse,
807
+ staticData: staticData,
808
+ functionCode: functionCode,
809
+ errorMessage: errorMessage,
810
+ dispatch: dispatch,
811
+ mockPrimitiveInfo: mockPrimitiveInfo,
812
+ onSaveMock: handleSaveMock,
813
+ onCancel: handleCancelMockEditor
814
+ }), selectedQuery && /*#__PURE__*/React.createElement(OverrideEditor, {
815
+ selectedQuery: selectedQuery,
816
+ whereClauseText: whereClauseText,
817
+ orderByText: orderByText,
818
+ pageSize: pageSize,
819
+ groupByText: groupByText,
820
+ selectText: selectText,
821
+ jsonExtensions: jsonExtensions,
822
+ theme: theme ?? "dark",
823
+ dispatch: dispatch,
824
+ onApplyOverride: handleApplyOverride,
825
+ onClearSelection: handleClearSelection
826
+ }), !discoveredPrimitives && !choosingPrimitive && !selectedQuery && !selectedPrimitive && /*#__PURE__*/React.createElement("div", {
827
+ className: styles.mainContent
828
+ }, /*#__PURE__*/React.createElement("div", {
829
+ className: styles.section
830
+ }, /*#__PURE__*/React.createElement("h3", {
831
+ className: styles.sectionTitle
832
+ }, /*#__PURE__*/React.createElement(Icon, {
833
+ icon: "shield"
834
+ }), "Active Intercepts"), !hasActiveIntercepts ? /*#__PURE__*/React.createElement("div", {
835
+ className: styles.emptyState
836
+ }, /*#__PURE__*/React.createElement(Icon, {
837
+ icon: "search",
838
+ size: 40
839
+ }), /*#__PURE__*/React.createElement("div", null, "No active intercepts"), /*#__PURE__*/React.createElement("div", {
840
+ className: styles.emptySubtext
841
+ }, "Select a component to mock responses or override query parameters"), /*#__PURE__*/React.createElement(Button, {
842
+ intent: "primary",
843
+ icon: "style",
844
+ onClick: activateSelection,
845
+ disabled: isSelectionActive
846
+ }, "Select Component")) : /*#__PURE__*/React.createElement("div", {
847
+ className: styles.interceptList
848
+ }, effectiveMocks.map(mock => /*#__PURE__*/React.createElement(MockItem, {
849
+ key: `mock-${mock.id}`,
850
+ mock: mock,
851
+ onToggle: () => handleToggleMock(mock.id),
852
+ onDelete: () => handleDeleteMock(mock.id),
853
+ onEdit: () => handleEditMock(mock)
854
+ })), overrideStoreOverrides.map(override => /*#__PURE__*/React.createElement(OverrideItem, {
855
+ key: `override-${override.bindingId}`,
856
+ override: override,
857
+ onToggle: () => handleToggleOverride(override.bindingId),
858
+ onRemove: () => handleRemoveOverride(override.bindingId),
859
+ onEdit: () => handleEditOverride(override)
860
+ })))))));
861
+ };
862
+ //# sourceMappingURL=InterceptTab.js.map