@parca/profile 0.19.140 → 0.19.142

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 (253) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/dist/GraphTooltipArrow/Content.js +224 -30
  3. package/dist/GraphTooltipArrow/DockedGraphTooltip/index.js +192 -33
  4. package/dist/GraphTooltipArrow/ExpandOnHoverValue.js +53 -3
  5. package/dist/GraphTooltipArrow/index.d.ts.map +1 -1
  6. package/dist/GraphTooltipArrow/index.js +86 -56
  7. package/dist/GraphTooltipArrow/useGraphTooltip/index.js +37 -37
  8. package/dist/GraphTooltipArrow/useGraphTooltipMetaInfo/index.d.ts.map +1 -1
  9. package/dist/GraphTooltipArrow/useGraphTooltipMetaInfo/index.js +104 -72
  10. package/dist/MatchersInput/SuggestionItem.js +91 -12
  11. package/dist/MatchersInput/SuggestionsList.d.ts +2 -1
  12. package/dist/MatchersInput/SuggestionsList.d.ts.map +1 -1
  13. package/dist/MatchersInput/SuggestionsList.js +371 -157
  14. package/dist/MatchersInput/SuggestionsList.test.d.ts +2 -0
  15. package/dist/MatchersInput/SuggestionsList.test.d.ts.map +1 -0
  16. package/dist/MatchersInput/index.js +308 -115
  17. package/dist/MetricsCircle/index.js +39 -3
  18. package/dist/MetricsGraph/MetricsContextMenu/index.js +119 -19
  19. package/dist/MetricsGraph/MetricsInfoPanel/index.js +81 -20
  20. package/dist/MetricsGraph/MetricsTooltip/index.d.ts.map +1 -1
  21. package/dist/MetricsGraph/MetricsTooltip/index.js +107 -74
  22. package/dist/MetricsGraph/index.js +552 -203
  23. package/dist/MetricsGraph/useMetricsGraphDimensions.js +46 -25
  24. package/dist/MetricsGraph/utils/colorMapping.js +24 -17
  25. package/dist/MetricsSeries/index.js +70 -7
  26. package/dist/PreSelectedMatchers/index.d.ts.map +1 -1
  27. package/dist/PreSelectedMatchers/index.js +249 -102
  28. package/dist/ProfileExplorer/ProfileExplorerCompare.d.ts.map +1 -1
  29. package/dist/ProfileExplorer/ProfileExplorerCompare.js +241 -45
  30. package/dist/ProfileExplorer/ProfileExplorerSingle.js +98 -11
  31. package/dist/ProfileExplorer/index.js +183 -32
  32. package/dist/ProfileFlameChart/SamplesStrips/SamplesGraph/index.js +333 -148
  33. package/dist/ProfileFlameChart/SamplesStrips/SamplesStrips.stories.js +69 -35
  34. package/dist/ProfileFlameChart/SamplesStrips/index.d.ts +2 -2
  35. package/dist/ProfileFlameChart/SamplesStrips/index.d.ts.map +1 -1
  36. package/dist/ProfileFlameChart/SamplesStrips/index.js +645 -134
  37. package/dist/ProfileFlameChart/SamplesStrips/labelSetUtils.js +114 -55
  38. package/dist/ProfileFlameChart/index.d.ts.map +1 -1
  39. package/dist/ProfileFlameChart/index.js +267 -129
  40. package/dist/ProfileFlameGraph/FlameGraphArrow/ContextMenu.d.ts.map +1 -1
  41. package/dist/ProfileFlameGraph/FlameGraphArrow/ContextMenu.js +288 -89
  42. package/dist/ProfileFlameGraph/FlameGraphArrow/ContextMenuWrapper.js +56 -20
  43. package/dist/ProfileFlameGraph/FlameGraphArrow/FlameGraphNodes.js +211 -140
  44. package/dist/ProfileFlameGraph/FlameGraphArrow/MemoizedTooltip.js +133 -38
  45. package/dist/ProfileFlameGraph/FlameGraphArrow/MiniMap.js +261 -216
  46. package/dist/ProfileFlameGraph/FlameGraphArrow/TextWithEllipsis.d.ts.map +1 -1
  47. package/dist/ProfileFlameGraph/FlameGraphArrow/TextWithEllipsis.js +72 -47
  48. package/dist/ProfileFlameGraph/FlameGraphArrow/TooltipContext.d.ts.map +1 -1
  49. package/dist/ProfileFlameGraph/FlameGraphArrow/TooltipContext.js +58 -28
  50. package/dist/ProfileFlameGraph/FlameGraphArrow/ZoomControls.d.ts.map +1 -1
  51. package/dist/ProfileFlameGraph/FlameGraphArrow/ZoomControls.js +59 -8
  52. package/dist/ProfileFlameGraph/FlameGraphArrow/index.js +396 -179
  53. package/dist/ProfileFlameGraph/FlameGraphArrow/useBatchedRendering.d.ts.map +1 -1
  54. package/dist/ProfileFlameGraph/FlameGraphArrow/useBatchedRendering.js +68 -50
  55. package/dist/ProfileFlameGraph/FlameGraphArrow/useMappingList.js +62 -38
  56. package/dist/ProfileFlameGraph/FlameGraphArrow/useNodeColor.js +14 -6
  57. package/dist/ProfileFlameGraph/FlameGraphArrow/useScrollViewport.js +124 -82
  58. package/dist/ProfileFlameGraph/FlameGraphArrow/useVisibleNodes.js +160 -98
  59. package/dist/ProfileFlameGraph/FlameGraphArrow/useZoom.js +232 -112
  60. package/dist/ProfileFlameGraph/FlameGraphArrow/utils.js +137 -114
  61. package/dist/ProfileFlameGraph/benchmarks/benchdata/populateData.js +85 -0
  62. package/dist/ProfileFlameGraph/index.d.ts.map +1 -1
  63. package/dist/ProfileFlameGraph/index.js +324 -150
  64. package/dist/ProfileMetricsGraph/hooks/useQueryRange.js +140 -32
  65. package/dist/ProfileMetricsGraph/index.d.ts.map +1 -1
  66. package/dist/ProfileMetricsGraph/index.js +519 -258
  67. package/dist/ProfileSelector/CompareButton.js +132 -12
  68. package/dist/ProfileSelector/MetricsGraphSection.d.ts.map +1 -1
  69. package/dist/ProfileSelector/MetricsGraphSection.js +236 -64
  70. package/dist/ProfileSelector/index.d.ts.map +1 -1
  71. package/dist/ProfileSelector/index.js +727 -141
  72. package/dist/ProfileSelector/useAutoQuerySelector.js +249 -130
  73. package/dist/ProfileSource.js +230 -163
  74. package/dist/ProfileTypeSelector/index.js +214 -125
  75. package/dist/ProfileView/components/ActionButtons/GroupByDropdown.js +50 -4
  76. package/dist/ProfileView/components/ActionButtons/SortByDropdown.d.ts.map +1 -1
  77. package/dist/ProfileView/components/ActionButtons/SortByDropdown.js +141 -35
  78. package/dist/ProfileView/components/ColorStackLegend.d.ts.map +1 -1
  79. package/dist/ProfileView/components/ColorStackLegend.js +185 -55
  80. package/dist/ProfileView/components/DashboardItems/index.js +87 -28
  81. package/dist/ProfileView/components/DashboardLayout/index.js +108 -16
  82. package/dist/ProfileView/components/DiffLegend.js +172 -29
  83. package/dist/ProfileView/components/GroupByLabelsDropdown/index.js +199 -55
  84. package/dist/ProfileView/components/InvertCallStack/index.d.ts.map +1 -1
  85. package/dist/ProfileView/components/InvertCallStack/index.js +100 -12
  86. package/dist/ProfileView/components/ProfileFilters/filterPresets.js +260 -315
  87. package/dist/ProfileView/components/ProfileFilters/index.js +518 -215
  88. package/dist/ProfileView/components/ProfileFilters/useProfileFilters.js +370 -306
  89. package/dist/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.d.ts +2 -1
  90. package/dist/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.d.ts.map +1 -1
  91. package/dist/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.js +188 -118
  92. package/dist/ProfileView/components/ProfileHeader/index.js +105 -11
  93. package/dist/ProfileView/components/ShareButton/ResultBox.js +119 -16
  94. package/dist/ProfileView/components/ShareButton/index.js +352 -62
  95. package/dist/ProfileView/components/Toolbars/MultiLevelDropdown.d.ts.map +1 -1
  96. package/dist/ProfileView/components/Toolbars/MultiLevelDropdown.js +678 -194
  97. package/dist/ProfileView/components/Toolbars/SwitchMenuItem.js +94 -7
  98. package/dist/ProfileView/components/Toolbars/TableColumnsDropdown.d.ts.map +1 -1
  99. package/dist/ProfileView/components/Toolbars/TableColumnsDropdown.js +199 -157
  100. package/dist/ProfileView/components/Toolbars/index.d.ts +2 -2
  101. package/dist/ProfileView/components/Toolbars/index.d.ts.map +1 -1
  102. package/dist/ProfileView/components/Toolbars/index.js +441 -21
  103. package/dist/ProfileView/components/ViewSelector/Dropdown.js +233 -22
  104. package/dist/ProfileView/components/ViewSelector/index.d.ts.map +1 -1
  105. package/dist/ProfileView/components/ViewSelector/index.js +212 -86
  106. package/dist/ProfileView/components/VisualizationContainer/index.d.ts.map +1 -1
  107. package/dist/ProfileView/components/VisualizationContainer/index.js +52 -7
  108. package/dist/ProfileView/components/VisualizationPanel.js +185 -8
  109. package/dist/ProfileView/context/DashboardContext.d.ts.map +1 -1
  110. package/dist/ProfileView/context/DashboardContext.js +85 -29
  111. package/dist/ProfileView/context/ProfileViewContext.js +56 -15
  112. package/dist/ProfileView/hooks/useAutoSelectDimension.js +71 -41
  113. package/dist/ProfileView/hooks/useProfileMetadata.js +50 -18
  114. package/dist/ProfileView/hooks/useResetFlameGraphState.d.ts.map +1 -1
  115. package/dist/ProfileView/hooks/useResetFlameGraphState.js +32 -12
  116. package/dist/ProfileView/hooks/useResetStateOnProfileTypeChange.d.ts.map +1 -1
  117. package/dist/ProfileView/hooks/useResetStateOnProfileTypeChange.js +71 -27
  118. package/dist/ProfileView/hooks/useResetStateOnSeriesChange.d.ts.map +1 -1
  119. package/dist/ProfileView/hooks/useResetStateOnSeriesChange.js +40 -19
  120. package/dist/ProfileView/hooks/useVisualizationState.d.ts +3 -3
  121. package/dist/ProfileView/hooks/useVisualizationState.d.ts.map +1 -1
  122. package/dist/ProfileView/hooks/useVisualizationState.js +258 -67
  123. package/dist/ProfileView/index.js +383 -45
  124. package/dist/ProfileView/types/visualization.js +1 -13
  125. package/dist/ProfileView/utils/colorUtils.js +8 -7
  126. package/dist/ProfileViewWithData.d.ts.map +1 -1
  127. package/dist/ProfileViewWithData.js +332 -228
  128. package/dist/QueryControls/index.js +418 -47
  129. package/dist/Sandwich/components/CalleesSection.js +54 -4
  130. package/dist/Sandwich/components/CallersSection.js +97 -27
  131. package/dist/Sandwich/components/TableSection.js +77 -4
  132. package/dist/Sandwich/index.d.ts.map +1 -1
  133. package/dist/Sandwich/index.js +126 -14
  134. package/dist/Sandwich/utils/processRowData.js +48 -39
  135. package/dist/SelectWithRefresh/index.js +102 -28
  136. package/dist/SimpleMatchers/Select.js +520 -187
  137. package/dist/SimpleMatchers/index.js +590 -288
  138. package/dist/SourceView/Highlighter.js +230 -70
  139. package/dist/SourceView/LineNo.js +72 -17
  140. package/dist/SourceView/index.d.ts.map +1 -1
  141. package/dist/SourceView/index.js +178 -104
  142. package/dist/SourceView/lang-detector/ext-to-lang.json +798 -798
  143. package/dist/SourceView/lang-detector/index.js +28 -14
  144. package/dist/SourceView/useSelectedLineRange.d.ts.map +1 -1
  145. package/dist/SourceView/useSelectedLineRange.js +99 -23
  146. package/dist/Table/ColorCell.js +42 -1
  147. package/dist/Table/ColumnsVisibility.js +114 -6
  148. package/dist/Table/MoreDropdown.d.ts.map +1 -1
  149. package/dist/Table/MoreDropdown.js +122 -25
  150. package/dist/Table/TableContextMenu.d.ts.map +1 -1
  151. package/dist/Table/TableContextMenu.js +151 -137
  152. package/dist/Table/TableContextMenuWrapper.js +59 -14
  153. package/dist/Table/hooks/useColorManagement.js +58 -16
  154. package/dist/Table/hooks/useTableConfiguration.d.ts.map +1 -1
  155. package/dist/Table/hooks/useTableConfiguration.js +333 -169
  156. package/dist/Table/index.d.ts.map +1 -1
  157. package/dist/Table/index.js +222 -128
  158. package/dist/Table/utils/functions.js +169 -144
  159. package/dist/Table/utils/topAndBottomExpandedRowModel.js +69 -52
  160. package/dist/TimelineGuide/index.js +209 -16
  161. package/dist/TopTable/benchmarks/benchdata/populateData.js +91 -0
  162. package/dist/TopTable/index.d.ts.map +1 -1
  163. package/dist/TopTable/index.js +342 -123
  164. package/dist/contexts/LabelsQueryProvider.js +94 -32
  165. package/dist/contexts/UnifiedLabelsContext.js +114 -49
  166. package/dist/contexts/utils.js +37 -15
  167. package/dist/hooks/useCompareModeMeta.d.ts.map +1 -1
  168. package/dist/hooks/useCompareModeMeta.js +158 -64
  169. package/dist/hooks/useLabels.js +295 -52
  170. package/dist/hooks/useQueryState.d.ts +3 -3
  171. package/dist/hooks/useQueryState.d.ts.map +1 -1
  172. package/dist/hooks/useQueryState.js +373 -332
  173. package/dist/index.d.ts +2 -3
  174. package/dist/index.d.ts.map +1 -1
  175. package/dist/index.js +22 -8
  176. package/dist/testdata/fg-diff.json +3750 -0
  177. package/dist/testdata/fg-simple.json +1879 -0
  178. package/dist/testdata/link_data.json +56 -0
  179. package/dist/testdata/tabular.json +30 -0
  180. package/dist/testdata/test_flamegraph.json +26846 -0
  181. package/dist/testdata/test_graph.json +53 -0
  182. package/dist/useDelayedLoader.js +32 -18
  183. package/dist/useGrpcQuery/index.js +71 -11
  184. package/dist/useHasProfileData.js +90 -12
  185. package/dist/useQuery.js +205 -64
  186. package/dist/useSumBy.d.ts +1 -1
  187. package/dist/useSumBy.d.ts.map +1 -1
  188. package/dist/useSumBy.js +294 -138
  189. package/dist/utils.js +62 -30
  190. package/package.json +9 -10
  191. package/src/GraphTooltipArrow/index.tsx +3 -0
  192. package/src/GraphTooltipArrow/useGraphTooltipMetaInfo/index.ts +13 -11
  193. package/src/MatchersInput/SuggestionsList.test.tsx +70 -0
  194. package/src/MatchersInput/SuggestionsList.tsx +11 -10
  195. package/src/MatchersInput/index.tsx +1 -1
  196. package/src/MetricsGraph/MetricsTooltip/index.tsx +22 -34
  197. package/src/PreSelectedMatchers/index.tsx +3 -0
  198. package/src/ProfileExplorer/ProfileExplorerCompare.tsx +9 -4
  199. package/src/ProfileFlameChart/SamplesStrips/index.tsx +2 -2
  200. package/src/ProfileFlameChart/index.tsx +28 -21
  201. package/src/ProfileFlameGraph/FlameGraphArrow/ContextMenu.tsx +9 -10
  202. package/src/ProfileFlameGraph/FlameGraphArrow/TextWithEllipsis.tsx +6 -5
  203. package/src/ProfileFlameGraph/FlameGraphArrow/TooltipContext.tsx +3 -0
  204. package/src/ProfileFlameGraph/FlameGraphArrow/ZoomControls.tsx +3 -0
  205. package/src/ProfileFlameGraph/FlameGraphArrow/useBatchedRendering.ts +3 -0
  206. package/src/ProfileFlameGraph/index.tsx +9 -6
  207. package/src/ProfileMetricsGraph/index.tsx +8 -6
  208. package/src/ProfileSelector/MetricsGraphSection.tsx +10 -5
  209. package/src/ProfileSelector/index.tsx +61 -39
  210. package/src/ProfileView/components/ActionButtons/SortByDropdown.tsx +6 -10
  211. package/src/ProfileView/components/ColorStackLegend.tsx +4 -2
  212. package/src/ProfileView/components/InvertCallStack/index.tsx +4 -5
  213. package/src/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.test.tsx +192 -94
  214. package/src/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.ts +21 -21
  215. package/src/ProfileView/components/Toolbars/MultiLevelDropdown.tsx +28 -24
  216. package/src/ProfileView/components/Toolbars/TableColumnsDropdown.tsx +5 -4
  217. package/src/ProfileView/components/Toolbars/index.tsx +3 -3
  218. package/src/ProfileView/components/ViewSelector/index.tsx +16 -9
  219. package/src/ProfileView/components/VisualizationContainer/index.tsx +3 -0
  220. package/src/ProfileView/context/DashboardContext.tsx +6 -6
  221. package/src/ProfileView/hooks/useResetFlameGraphState.ts +4 -6
  222. package/src/ProfileView/hooks/useResetStateOnProfileTypeChange.ts +26 -24
  223. package/src/ProfileView/hooks/useResetStateOnSeriesChange.ts +8 -16
  224. package/src/ProfileView/hooks/useVisualizationState.ts +69 -61
  225. package/src/ProfileViewWithData.tsx +35 -29
  226. package/src/Sandwich/index.tsx +3 -4
  227. package/src/SourceView/index.tsx +2 -4
  228. package/src/SourceView/useSelectedLineRange.ts +19 -34
  229. package/src/Table/MoreDropdown.tsx +11 -9
  230. package/src/Table/TableContextMenu.tsx +13 -10
  231. package/src/Table/hooks/useTableConfiguration.tsx +11 -16
  232. package/src/Table/index.tsx +21 -12
  233. package/src/TopTable/index.tsx +4 -3
  234. package/src/hooks/useCompareModeMeta.ts +91 -61
  235. package/src/hooks/useQueryState.test.tsx +345 -275
  236. package/src/hooks/useQueryState.ts +118 -136
  237. package/src/index.tsx +15 -16
  238. package/src/useDelayedLoader.ts +10 -10
  239. package/src/useSumBy.ts +15 -21
  240. package/dist/ProfileView/components/ProfileFilters/useProfileFiltersUrlState.test.js +0 -455
  241. package/dist/hooks/urlParsers.d.ts +0 -18
  242. package/dist/hooks/urlParsers.d.ts.map +0 -1
  243. package/dist/hooks/urlParsers.js +0 -32
  244. package/dist/hooks/useColorBy.d.ts +0 -5
  245. package/dist/hooks/useColorBy.d.ts.map +0 -1
  246. package/dist/hooks/useColorBy.js +0 -26
  247. package/dist/hooks/useDashboardItems.d.ts +0 -5
  248. package/dist/hooks/useDashboardItems.d.ts.map +0 -1
  249. package/dist/hooks/useDashboardItems.js +0 -27
  250. package/dist/hooks/useQueryState.test.js +0 -868
  251. package/src/hooks/urlParsers.ts +0 -38
  252. package/src/hooks/useColorBy.ts +0 -42
  253. package/src/hooks/useDashboardItems.ts +0 -46
@@ -1,4 +1,13 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
2
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
3
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
4
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
5
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
6
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
8
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
10
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
2
11
  // Copyright 2022 The Parca Authors
3
12
  // Licensed under the Apache License, Version 2.0 (the "License");
4
13
  // you may not use this file except in compliance with the License.
@@ -11,248 +20,343 @@ import { jsx as _jsx } from "react/jsx-runtime";
11
20
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
21
  // See the License for the specific language governing permissions and
13
22
  // limitations under the License.
23
+
14
24
  import { useEffect, useMemo, useState } from 'react';
15
- import { useQueryState } from 'nuqs';
16
25
  import { QueryRequest_ReportType } from '@parca/client';
17
- import { useGrpcMetadata, useParcaContext } from '@parca/components';
26
+ import { NumberParser, NumberSerializer, useGrpcMetadata, useParcaContext, useURLState, useURLStateCustom } from '@parca/components';
18
27
  import { saveAsBlob } from '@parca/utilities';
19
28
  import { validateFlameChartQuery } from './ProfileFlameGraph';
20
29
  import { FIELD_FUNCTION_NAME } from './ProfileFlameGraph/FlameGraphArrow';
21
30
  import { boundsFromProfileSource } from './ProfileFlameGraph/FlameGraphArrow/utils';
22
- import { getStepCountFromScreenWidth, useQueryRange, } from './ProfileMetricsGraph/hooks/useQueryRange';
31
+ import { getStepCountFromScreenWidth, useQueryRange } from './ProfileMetricsGraph/hooks/useQueryRange';
23
32
  import { ProfileView } from './ProfileView';
24
33
  import { useProfileFilters } from './ProfileView/components/ProfileFilters/useProfileFilters';
25
- import { flamechartDimensionParser, groupByParser, intParam, invertCallStackParser, stringParam, } from './hooks/urlParsers';
26
- import { useDashboardItems } from './hooks/useDashboardItems';
27
34
  import { useQuery } from './useQuery';
28
35
  import { downloadPprof } from './utils';
29
- export const ProfileViewWithData = ({ queryClient, profileSource, showVisualizationSelector, onSwitchToFifteenMinutes, }) => {
30
- const metadata = useGrpcMetadata();
31
- const { dashboardItems, setDashboardItems } = useDashboardItems();
32
- const [sourceBuildID] = useQueryState('source_buildid', stringParam);
33
- const [sourceFilename] = useQueryState('source_filename', stringParam);
34
- const [groupBy] = useQueryState('group_by', groupByParser.withDefault([FIELD_FUNCTION_NAME]));
35
- const [sandwichFunctionName] = useQueryState('sandwich_function_name', stringParam);
36
- const [flamechartDimension] = useQueryState('flamechart_dimension', flamechartDimensionParser);
37
- const [invertCallStack] = useQueryState('invert_call_stack', invertCallStackParser);
38
- const [pprofDownloading, setPprofDownloading] = useState(false);
39
- const { protoFilters } = useProfileFilters();
40
- useEffect(() => {
41
- // If profile type is not delta, remove flamechart from the dashboard items
42
- // and set it to flame graph if no other items are selected.
43
- if (profileSource == null) {
44
- return;
45
- }
46
- const profileType = profileSource.ProfileType();
47
- let newDashboardItems = dashboardItems;
48
- if (dashboardItems.includes('flamechart') && !profileType.delta) {
49
- newDashboardItems = dashboardItems.filter(item => item !== 'flamechart');
50
- }
51
- else {
52
- return;
53
- }
54
- if (newDashboardItems.length === 0) {
55
- newDashboardItems = ['flamegraph'];
56
- }
57
- setDashboardItems(newDashboardItems);
58
- }, [profileSource, dashboardItems, setDashboardItems]);
59
- const nodeTrimThreshold = useMemo(() => {
60
- let width =
61
- // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
62
- window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
63
- // subtract the padding
64
- width = width - 12 - 16 - 12;
65
- return (1 / width) * 100;
66
- }, []);
67
- const { isLoading: flamegraphLoading, response: flamegraphResponse, error: flamegraphError, } = useQuery(queryClient, profileSource, QueryRequest_ReportType.FLAMEGRAPH_ARROW, {
68
- skip: !dashboardItems.includes('flamegraph'),
69
- nodeTrimThreshold,
70
- groupBy,
71
- invertCallStack: invertCallStack ?? false,
72
- protoFilters,
73
- });
74
- const samplesEnabled = !!(dashboardItems.includes('flamechart') &&
75
- validateFlameChartQuery(profileSource).isValid &&
76
- (flamechartDimension ?? []).length > 0);
77
- const [samplesFromMs, samplesToMs] = useMemo(() => {
78
- const bounds = boundsFromProfileSource(profileSource);
79
- return [Number(bounds[0] / 1000000n), Number(bounds[1] / 1000000n)];
80
- }, [profileSource]);
81
- const samplesSumBy = useMemo(() => (flamechartDimension ?? []).map(f => f.startsWith('labels.') ? f.slice('labels.'.length) : f), [flamechartDimension]);
82
- // Samples step count: 2px per data point for finer granularity in strips
83
- const [samplesStepCount] = useQueryState('samples_step_count', intParam.withDefault(getStepCountFromScreenWidth(2)));
84
- const { isLoading: samplesLoading, response: samplesRangeResponse, error: samplesError, stepDurationMs: samplesStepMs, } = useQueryRange(queryClient, samplesEnabled ? profileSource.query.toString() : '', samplesFromMs, samplesToMs, samplesSumBy, samplesStepCount, !samplesEnabled);
85
- // Map QueryRange response to SamplesData
86
- // TODO (manoj): Check if we can skip this mapping and adapt the CPUSampleStrips to work directly with the QueryRange response format.
87
- const samplesData = useMemo(() => {
88
- if (samplesLoading)
89
- return { loading: true, error: null };
90
- if (samplesError != null)
91
- return { loading: false, error: samplesError };
92
- if (samplesRangeResponse?.series?.length == null)
93
- return { loading: false, error: null };
94
- const series = samplesRangeResponse.series.map(ms => ({
95
- labelset: ms.labelset ?? { labels: [] },
96
- data: ms.samples.map(s => ({
97
- timestamp: Number(s.timestamp.seconds) * 1000 + Math.floor(s.timestamp.nanos / 1000000),
98
- value: Number(s.value),
99
- sampleCount: Number(s.count),
100
- })),
101
- }));
102
- return { loading: false, series, error: null, stepMs: samplesStepMs };
103
- }, [samplesLoading, samplesRangeResponse, samplesError, samplesStepMs]);
104
- const { isLoading: profileMetadataLoading, response: profileMetadataResponse, error: profileMetadataError, refetch: metadataRefetch, } = useQuery(queryClient, profileSource, QueryRequest_ReportType.PROFILE_METADATA, {
105
- nodeTrimThreshold,
106
- groupBy,
107
- protoFilters,
108
- staleTime: 0,
109
- });
110
- const { perf } = useParcaContext();
111
- const { isLoading: tableLoading, response: tableResponse, error: tableError, } = useQuery(queryClient, profileSource, QueryRequest_ReportType.TABLE_ARROW, {
112
- skip: !dashboardItems.includes('table') && !dashboardItems.includes('sandwich'),
113
- protoFilters,
114
- });
115
- const { isLoading: sourceLoading, response: sourceResponse, error: sourceError, } = useQuery(queryClient, profileSource, QueryRequest_ReportType.SOURCE, {
116
- skip: !dashboardItems.includes('source'),
117
- sourceBuildID: sourceBuildID ?? undefined,
118
- sourceFilename: sourceFilename ?? undefined,
119
- protoFilters,
120
- });
121
- const { isLoading: callersFlamegraphLoading, response: callersFlamegraphResponse, error: callersFlamegraphError, } = useQuery(queryClient, profileSource, QueryRequest_ReportType.FLAMEGRAPH_ARROW, {
122
- nodeTrimThreshold,
123
- groupBy: [FIELD_FUNCTION_NAME],
124
- invertCallStack: true,
125
- sandwichByFunction: sandwichFunctionName ?? undefined,
126
- skip: sandwichFunctionName == null && !dashboardItems.includes('sandwich'),
127
- protoFilters,
36
+ import { jsx as _jsx } from "react/jsx-runtime";
37
+ export var ProfileViewWithData = function ProfileViewWithData(_ref) {
38
+ var _flamegraphResponse$r, _flamegraphResponse$t, _flamegraphResponse$f, _profileMetadataRespo, _profileMetadataRespo2, _sourceResponse$repor, _calleesFlamegraphRes, _calleesFlamegraphRes2, _calleesFlamegraphRes3, _profileMetadataRespo3, _callersFlamegraphRes, _callersFlamegraphRes2, _callersFlamegraphRes3, _profileMetadataRespo4;
39
+ var queryClient = _ref.queryClient,
40
+ profileSource = _ref.profileSource,
41
+ showVisualizationSelector = _ref.showVisualizationSelector,
42
+ onSwitchToFifteenMinutes = _ref.onSwitchToFifteenMinutes;
43
+ var metadata = useGrpcMetadata();
44
+ var _useURLState = useURLState('dashboard_items', {
45
+ alwaysReturnArray: true
46
+ }),
47
+ _useURLState2 = _slicedToArray(_useURLState, 2),
48
+ dashboardItems = _useURLState2[0],
49
+ setDashboardItems = _useURLState2[1];
50
+ var _useURLState3 = useURLState('source_buildid'),
51
+ _useURLState4 = _slicedToArray(_useURLState3, 1),
52
+ sourceBuildID = _useURLState4[0];
53
+ var _useURLState5 = useURLState('source_filename'),
54
+ _useURLState6 = _slicedToArray(_useURLState5, 1),
55
+ sourceFilename = _useURLState6[0];
56
+ var _useURLState7 = useURLState('group_by', {
57
+ defaultValue: [FIELD_FUNCTION_NAME],
58
+ alwaysReturnArray: true
59
+ }),
60
+ _useURLState8 = _slicedToArray(_useURLState7, 1),
61
+ groupBy = _useURLState8[0];
62
+ var _useURLState9 = useURLState('sandwich_function_name'),
63
+ _useURLState0 = _slicedToArray(_useURLState9, 1),
64
+ sandwichFunctionName = _useURLState0[0];
65
+ var _useURLState1 = useURLState('flamechart_dimension', {
66
+ alwaysReturnArray: true
67
+ }),
68
+ _useURLState10 = _slicedToArray(_useURLState1, 1),
69
+ flamechartDimension = _useURLState10[0];
70
+ var _useURLState11 = useURLState('invert_call_stack'),
71
+ _useURLState12 = _slicedToArray(_useURLState11, 1),
72
+ invertStack = _useURLState12[0];
73
+ var invertCallStack = invertStack === 'true';
74
+ var _useState = useState(false),
75
+ _useState2 = _slicedToArray(_useState, 2),
76
+ pprofDownloading = _useState2[0],
77
+ setPprofDownloading = _useState2[1];
78
+ var _useProfileFilters = useProfileFilters(),
79
+ protoFilters = _useProfileFilters.protoFilters;
80
+ useEffect(function () {
81
+ // If profile type is not delta, remove flamechart from the dashboard items
82
+ // and set it to flame graph if no other items are selected.
83
+ if (profileSource == null) {
84
+ return;
85
+ }
86
+ var profileType = profileSource.ProfileType();
87
+ var newDashboardItems = dashboardItems;
88
+ if (dashboardItems.includes('flamechart') && !profileType.delta) {
89
+ newDashboardItems = dashboardItems.filter(function (item) {
90
+ return item !== 'flamechart';
91
+ });
92
+ } else {
93
+ return;
94
+ }
95
+ if (newDashboardItems.length === 0) {
96
+ newDashboardItems = ['flamegraph'];
97
+ }
98
+ setDashboardItems(newDashboardItems);
99
+ }, [profileSource, dashboardItems, setDashboardItems]);
100
+ var nodeTrimThreshold = useMemo(function () {
101
+ var width =
102
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
103
+ window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
104
+ // subtract the padding
105
+ width = width - 12 - 16 - 12;
106
+ return 1 / width * 100;
107
+ }, []);
108
+ var _useQuery = useQuery(queryClient, profileSource, QueryRequest_ReportType.FLAMEGRAPH_ARROW, {
109
+ skip: !dashboardItems.includes('flamegraph'),
110
+ nodeTrimThreshold: nodeTrimThreshold,
111
+ groupBy: groupBy,
112
+ invertCallStack: invertCallStack,
113
+ protoFilters: protoFilters
114
+ }),
115
+ flamegraphLoading = _useQuery.isLoading,
116
+ flamegraphResponse = _useQuery.response,
117
+ flamegraphError = _useQuery.error;
118
+ var samplesEnabled = !!(dashboardItems.includes('flamechart') && validateFlameChartQuery(profileSource).isValid && (flamechartDimension !== null && flamechartDimension !== void 0 ? flamechartDimension : []).length > 0);
119
+ var _useMemo = useMemo(function () {
120
+ var bounds = boundsFromProfileSource(profileSource);
121
+ return [Number(bounds[0] / 1000000n), Number(bounds[1] / 1000000n)];
122
+ }, [profileSource]),
123
+ _useMemo2 = _slicedToArray(_useMemo, 2),
124
+ samplesFromMs = _useMemo2[0],
125
+ samplesToMs = _useMemo2[1];
126
+ var samplesSumBy = useMemo(function () {
127
+ return (flamechartDimension !== null && flamechartDimension !== void 0 ? flamechartDimension : []).map(function (f) {
128
+ return f.startsWith('labels.') ? f.slice('labels.'.length) : f;
128
129
  });
129
- const { isLoading: calleesFlamegraphLoading, response: calleesFlamegraphResponse, error: calleesFlamegraphError, } = useQuery(queryClient, profileSource, QueryRequest_ReportType.FLAMEGRAPH_ARROW, {
130
- nodeTrimThreshold,
131
- groupBy: [FIELD_FUNCTION_NAME],
132
- invertCallStack: false,
133
- sandwichByFunction: sandwichFunctionName ?? undefined,
134
- skip: sandwichFunctionName == null && !dashboardItems.includes('sandwich'),
135
- protoFilters,
130
+ }, [flamechartDimension]);
131
+
132
+ // Samples step count: 2px per data point for finer granularity in strips
133
+ var _useURLStateCustom = useURLStateCustom('samples_step_count', {
134
+ defaultValue: String(getStepCountFromScreenWidth(2)),
135
+ parse: NumberParser,
136
+ stringify: NumberSerializer
137
+ }),
138
+ _useURLStateCustom2 = _slicedToArray(_useURLStateCustom, 1),
139
+ samplesStepCount = _useURLStateCustom2[0];
140
+ var _useQueryRange = useQueryRange(queryClient, samplesEnabled ? profileSource.query.toString() : '', samplesFromMs, samplesToMs, samplesSumBy, samplesStepCount, !samplesEnabled),
141
+ samplesLoading = _useQueryRange.isLoading,
142
+ samplesRangeResponse = _useQueryRange.response,
143
+ samplesError = _useQueryRange.error,
144
+ samplesStepMs = _useQueryRange.stepDurationMs;
145
+
146
+ // Map QueryRange response to SamplesData
147
+ // TODO (manoj): Check if we can skip this mapping and adapt the CPUSampleStrips to work directly with the QueryRange response format.
148
+ var samplesData = useMemo(function () {
149
+ var _samplesRangeResponse;
150
+ if (samplesLoading) return {
151
+ loading: true,
152
+ error: null
153
+ };
154
+ if (samplesError != null) return {
155
+ loading: false,
156
+ error: samplesError
157
+ };
158
+ if ((samplesRangeResponse === null || samplesRangeResponse === void 0 || (_samplesRangeResponse = samplesRangeResponse.series) === null || _samplesRangeResponse === void 0 ? void 0 : _samplesRangeResponse.length) == null) return {
159
+ loading: false,
160
+ error: null
161
+ };
162
+ var series = samplesRangeResponse.series.map(function (ms) {
163
+ var _ms$labelset;
164
+ return {
165
+ labelset: (_ms$labelset = ms.labelset) !== null && _ms$labelset !== void 0 ? _ms$labelset : {
166
+ labels: []
167
+ },
168
+ data: ms.samples.map(function (s) {
169
+ return {
170
+ timestamp: Number(s.timestamp.seconds) * 1000 + Math.floor(s.timestamp.nanos / 1000000),
171
+ value: Number(s.value),
172
+ sampleCount: Number(s.count)
173
+ };
174
+ })
175
+ };
136
176
  });
137
- useEffect(() => {
138
- if ((!flamegraphLoading && flamegraphResponse?.report.oneofKind === 'flamegraph') ||
139
- flamegraphResponse?.report.oneofKind === 'flamegraphArrow') {
140
- perf?.markInteraction('Flamegraph render', flamegraphResponse.total);
141
- }
142
- if (!tableLoading && tableResponse?.report.oneofKind === 'tableArrow') {
143
- perf?.markInteraction('table render', tableResponse.total);
144
- }
145
- if (!sourceLoading && sourceResponse?.report.oneofKind === 'source') {
146
- perf?.markInteraction('Source render', sourceResponse.total);
147
- }
148
- }, [
149
- flamegraphLoading,
150
- flamegraphResponse,
151
- tableLoading,
152
- tableResponse,
153
- sourceLoading,
154
- sourceResponse,
155
- perf,
156
- ]);
157
- const downloadPProfClick = async () => {
158
- if (profileSource == null || queryClient == null) {
159
- return;
160
- }
161
- try {
177
+ return {
178
+ loading: false,
179
+ series: series,
180
+ error: null,
181
+ stepMs: samplesStepMs
182
+ };
183
+ }, [samplesLoading, samplesRangeResponse, samplesError, samplesStepMs]);
184
+ var _useQuery2 = useQuery(queryClient, profileSource, QueryRequest_ReportType.PROFILE_METADATA, {
185
+ nodeTrimThreshold: nodeTrimThreshold,
186
+ groupBy: groupBy,
187
+ protoFilters: protoFilters,
188
+ staleTime: 0
189
+ }),
190
+ profileMetadataLoading = _useQuery2.isLoading,
191
+ profileMetadataResponse = _useQuery2.response,
192
+ profileMetadataError = _useQuery2.error,
193
+ metadataRefetch = _useQuery2.refetch;
194
+ var _useParcaContext = useParcaContext(),
195
+ perf = _useParcaContext.perf;
196
+ var _useQuery3 = useQuery(queryClient, profileSource, QueryRequest_ReportType.TABLE_ARROW, {
197
+ skip: !dashboardItems.includes('table') && !dashboardItems.includes('sandwich'),
198
+ protoFilters: protoFilters
199
+ }),
200
+ tableLoading = _useQuery3.isLoading,
201
+ tableResponse = _useQuery3.response,
202
+ tableError = _useQuery3.error;
203
+ var _useQuery4 = useQuery(queryClient, profileSource, QueryRequest_ReportType.SOURCE, {
204
+ skip: !dashboardItems.includes('source'),
205
+ sourceBuildID: sourceBuildID,
206
+ sourceFilename: sourceFilename,
207
+ protoFilters: protoFilters
208
+ }),
209
+ sourceLoading = _useQuery4.isLoading,
210
+ sourceResponse = _useQuery4.response,
211
+ sourceError = _useQuery4.error;
212
+ var _useQuery5 = useQuery(queryClient, profileSource, QueryRequest_ReportType.FLAMEGRAPH_ARROW, {
213
+ nodeTrimThreshold: nodeTrimThreshold,
214
+ groupBy: [FIELD_FUNCTION_NAME],
215
+ invertCallStack: true,
216
+ sandwichByFunction: sandwichFunctionName,
217
+ skip: sandwichFunctionName === undefined && !dashboardItems.includes('sandwich'),
218
+ protoFilters: protoFilters
219
+ }),
220
+ callersFlamegraphLoading = _useQuery5.isLoading,
221
+ callersFlamegraphResponse = _useQuery5.response,
222
+ callersFlamegraphError = _useQuery5.error;
223
+ var _useQuery6 = useQuery(queryClient, profileSource, QueryRequest_ReportType.FLAMEGRAPH_ARROW, {
224
+ nodeTrimThreshold: nodeTrimThreshold,
225
+ groupBy: [FIELD_FUNCTION_NAME],
226
+ invertCallStack: false,
227
+ sandwichByFunction: sandwichFunctionName,
228
+ skip: sandwichFunctionName === undefined && !dashboardItems.includes('sandwich'),
229
+ protoFilters: protoFilters
230
+ }),
231
+ calleesFlamegraphLoading = _useQuery6.isLoading,
232
+ calleesFlamegraphResponse = _useQuery6.response,
233
+ calleesFlamegraphError = _useQuery6.error;
234
+ useEffect(function () {
235
+ if (!flamegraphLoading && (flamegraphResponse === null || flamegraphResponse === void 0 ? void 0 : flamegraphResponse.report.oneofKind) === 'flamegraph' || (flamegraphResponse === null || flamegraphResponse === void 0 ? void 0 : flamegraphResponse.report.oneofKind) === 'flamegraphArrow') {
236
+ perf === null || perf === void 0 || perf.markInteraction('Flamegraph render', flamegraphResponse.total);
237
+ }
238
+ if (!tableLoading && (tableResponse === null || tableResponse === void 0 ? void 0 : tableResponse.report.oneofKind) === 'tableArrow') {
239
+ perf === null || perf === void 0 || perf.markInteraction('table render', tableResponse.total);
240
+ }
241
+ if (!sourceLoading && (sourceResponse === null || sourceResponse === void 0 ? void 0 : sourceResponse.report.oneofKind) === 'source') {
242
+ perf === null || perf === void 0 || perf.markInteraction('Source render', sourceResponse.total);
243
+ }
244
+ }, [flamegraphLoading, flamegraphResponse, tableLoading, tableResponse, sourceLoading, sourceResponse, perf]);
245
+ var downloadPProfClick = /*#__PURE__*/function () {
246
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
247
+ var req, blob, _t;
248
+ return _regenerator().w(function (_context) {
249
+ while (1) switch (_context.p = _context.n) {
250
+ case 0:
251
+ if (!(profileSource == null || queryClient == null)) {
252
+ _context.n = 1;
253
+ break;
254
+ }
255
+ return _context.a(2);
256
+ case 1:
257
+ _context.p = 1;
162
258
  setPprofDownloading(true);
163
- const req = profileSource.QueryRequest();
164
- req.groupBy = { fields: groupBy };
165
- const blob = await downloadPprof(req, queryClient, metadata);
166
- saveAsBlob(blob, `profile.pb.gz`);
259
+ req = profileSource.QueryRequest();
260
+ req.groupBy = {
261
+ fields: groupBy
262
+ };
263
+ _context.n = 2;
264
+ return downloadPprof(req, queryClient, metadata);
265
+ case 2:
266
+ blob = _context.v;
267
+ saveAsBlob(blob, "profile.pb.gz");
167
268
  setPprofDownloading(false);
168
- }
169
- catch (error) {
269
+ _context.n = 4;
270
+ break;
271
+ case 3:
272
+ _context.p = 3;
273
+ _t = _context.v;
170
274
  setPprofDownloading(false);
171
- console.error('Error while querying', error);
275
+ console.error('Error while querying', _t);
276
+ case 4:
277
+ return _context.a(2);
172
278
  }
279
+ }, _callee, null, [[1, 3]]);
280
+ }));
281
+ return function downloadPProfClick() {
282
+ return _ref2.apply(this, arguments);
173
283
  };
174
- // TODO: Refactor how we get responses such that we have a single response,
175
- // regardless of the report type.
176
- let total = BigInt(0);
177
- let filtered = BigInt(0);
178
- if (flamegraphResponse !== null) {
179
- total = BigInt(flamegraphResponse.total);
180
- filtered = BigInt(flamegraphResponse.filtered);
181
- }
182
- else if (tableResponse !== null) {
183
- total = BigInt(tableResponse.total);
184
- filtered = BigInt(tableResponse.filtered);
185
- }
186
- else if (sourceResponse !== null) {
187
- total = BigInt(sourceResponse.total);
188
- filtered = BigInt(sourceResponse.filtered);
189
- }
190
- else if (callersFlamegraphResponse !== null) {
191
- total = BigInt(callersFlamegraphResponse.total);
192
- filtered = BigInt(callersFlamegraphResponse.filtered);
193
- }
194
- else if (calleesFlamegraphResponse !== null) {
195
- total = BigInt(calleesFlamegraphResponse.total);
196
- filtered = BigInt(calleesFlamegraphResponse.filtered);
197
- }
198
- return (_jsx(ProfileView, { total: total, filtered: filtered, flamegraphData: {
199
- loading: flamegraphLoading && profileMetadataLoading,
200
- arrow: flamegraphResponse?.report.oneofKind === 'flamegraphArrow'
201
- ? flamegraphResponse?.report?.flamegraphArrow
202
- : undefined,
203
- total: BigInt(flamegraphResponse?.total ?? '0'),
204
- filtered: BigInt(flamegraphResponse?.filtered ?? '0'),
205
- error: flamegraphError ?? profileMetadataError,
206
- metadataMappingFiles: profileMetadataResponse?.report.oneofKind === 'profileMetadata'
207
- ? profileMetadataResponse?.report?.profileMetadata?.mappingFiles
208
- : undefined,
209
- metadataLabels: profileMetadataResponse?.report.oneofKind === 'profileMetadata'
210
- ? profileMetadataResponse?.report?.profileMetadata?.labels
211
- : undefined,
212
- metadataLoading: profileMetadataLoading,
213
- metadataRefetch,
214
- }, topTableData: {
215
- loading: tableLoading,
216
- arrow: tableResponse?.report.oneofKind === 'tableArrow'
217
- ? tableResponse.report.tableArrow
218
- : undefined,
219
- error: tableError,
220
- unit: tableResponse?.report.oneofKind === 'tableArrow'
221
- ? tableResponse.report.tableArrow.unit
222
- : '',
223
- }, sourceData: {
224
- loading: sourceLoading,
225
- data: sourceResponse?.report.oneofKind === 'source'
226
- ? sourceResponse?.report?.source
227
- : undefined,
228
- error: sourceError,
229
- }, sandwichData: {
230
- callees: {
231
- arrow: calleesFlamegraphResponse?.report.oneofKind === 'flamegraphArrow'
232
- ? calleesFlamegraphResponse?.report?.flamegraphArrow
233
- : undefined,
234
- loading: calleesFlamegraphLoading,
235
- error: calleesFlamegraphError,
236
- total: BigInt(calleesFlamegraphResponse?.total ?? '0'),
237
- filtered: BigInt(calleesFlamegraphResponse?.filtered ?? '0'),
238
- metadataMappingFiles: profileMetadataResponse?.report.oneofKind === 'profileMetadata'
239
- ? profileMetadataResponse?.report?.profileMetadata?.mappingFiles
240
- : undefined,
241
- metadataLoading: profileMetadataLoading,
242
- },
243
- callers: {
244
- arrow: callersFlamegraphResponse?.report.oneofKind === 'flamegraphArrow'
245
- ? callersFlamegraphResponse?.report?.flamegraphArrow
246
- : undefined,
247
- loading: callersFlamegraphLoading,
248
- error: callersFlamegraphError,
249
- total: BigInt(callersFlamegraphResponse?.total ?? '0'),
250
- filtered: BigInt(callersFlamegraphResponse?.filtered ?? '0'),
251
- metadataMappingFiles: profileMetadataResponse?.report.oneofKind === 'profileMetadata'
252
- ? profileMetadataResponse?.report?.profileMetadata?.mappingFiles
253
- : undefined,
254
- metadataLoading: profileMetadataLoading,
255
- },
256
- }, samplesData: samplesData, profileSource: profileSource, queryClient: queryClient, onDownloadPProf: () => void downloadPProfClick(), pprofDownloading: pprofDownloading, showVisualizationSelector: showVisualizationSelector, onSwitchToFifteenMinutes: onSwitchToFifteenMinutes }));
284
+ }();
285
+
286
+ // TODO: Refactor how we get responses such that we have a single response,
287
+ // regardless of the report type.
288
+ var total = BigInt(0);
289
+ var filtered = BigInt(0);
290
+ if (flamegraphResponse !== null) {
291
+ total = BigInt(flamegraphResponse.total);
292
+ filtered = BigInt(flamegraphResponse.filtered);
293
+ } else if (tableResponse !== null) {
294
+ total = BigInt(tableResponse.total);
295
+ filtered = BigInt(tableResponse.filtered);
296
+ } else if (sourceResponse !== null) {
297
+ total = BigInt(sourceResponse.total);
298
+ filtered = BigInt(sourceResponse.filtered);
299
+ } else if (callersFlamegraphResponse !== null) {
300
+ total = BigInt(callersFlamegraphResponse.total);
301
+ filtered = BigInt(callersFlamegraphResponse.filtered);
302
+ } else if (calleesFlamegraphResponse !== null) {
303
+ total = BigInt(calleesFlamegraphResponse.total);
304
+ filtered = BigInt(calleesFlamegraphResponse.filtered);
305
+ }
306
+ return /*#__PURE__*/_jsx(ProfileView, {
307
+ total: total,
308
+ filtered: filtered,
309
+ flamegraphData: {
310
+ loading: flamegraphLoading && profileMetadataLoading,
311
+ arrow: (flamegraphResponse === null || flamegraphResponse === void 0 ? void 0 : flamegraphResponse.report.oneofKind) === 'flamegraphArrow' ? flamegraphResponse === null || flamegraphResponse === void 0 || (_flamegraphResponse$r = flamegraphResponse.report) === null || _flamegraphResponse$r === void 0 ? void 0 : _flamegraphResponse$r.flamegraphArrow : undefined,
312
+ total: BigInt((_flamegraphResponse$t = flamegraphResponse === null || flamegraphResponse === void 0 ? void 0 : flamegraphResponse.total) !== null && _flamegraphResponse$t !== void 0 ? _flamegraphResponse$t : '0'),
313
+ filtered: BigInt((_flamegraphResponse$f = flamegraphResponse === null || flamegraphResponse === void 0 ? void 0 : flamegraphResponse.filtered) !== null && _flamegraphResponse$f !== void 0 ? _flamegraphResponse$f : '0'),
314
+ error: flamegraphError !== null && flamegraphError !== void 0 ? flamegraphError : profileMetadataError,
315
+ metadataMappingFiles: (profileMetadataResponse === null || profileMetadataResponse === void 0 ? void 0 : profileMetadataResponse.report.oneofKind) === 'profileMetadata' ? profileMetadataResponse === null || profileMetadataResponse === void 0 || (_profileMetadataRespo = profileMetadataResponse.report) === null || _profileMetadataRespo === void 0 || (_profileMetadataRespo = _profileMetadataRespo.profileMetadata) === null || _profileMetadataRespo === void 0 ? void 0 : _profileMetadataRespo.mappingFiles : undefined,
316
+ metadataLabels: (profileMetadataResponse === null || profileMetadataResponse === void 0 ? void 0 : profileMetadataResponse.report.oneofKind) === 'profileMetadata' ? profileMetadataResponse === null || profileMetadataResponse === void 0 || (_profileMetadataRespo2 = profileMetadataResponse.report) === null || _profileMetadataRespo2 === void 0 || (_profileMetadataRespo2 = _profileMetadataRespo2.profileMetadata) === null || _profileMetadataRespo2 === void 0 ? void 0 : _profileMetadataRespo2.labels : undefined,
317
+ metadataLoading: profileMetadataLoading,
318
+ metadataRefetch: metadataRefetch
319
+ },
320
+ topTableData: {
321
+ loading: tableLoading,
322
+ arrow: (tableResponse === null || tableResponse === void 0 ? void 0 : tableResponse.report.oneofKind) === 'tableArrow' ? tableResponse.report.tableArrow : undefined,
323
+ error: tableError,
324
+ unit: (tableResponse === null || tableResponse === void 0 ? void 0 : tableResponse.report.oneofKind) === 'tableArrow' ? tableResponse.report.tableArrow.unit : ''
325
+ },
326
+ sourceData: {
327
+ loading: sourceLoading,
328
+ data: (sourceResponse === null || sourceResponse === void 0 ? void 0 : sourceResponse.report.oneofKind) === 'source' ? sourceResponse === null || sourceResponse === void 0 || (_sourceResponse$repor = sourceResponse.report) === null || _sourceResponse$repor === void 0 ? void 0 : _sourceResponse$repor.source : undefined,
329
+ error: sourceError
330
+ },
331
+ sandwichData: {
332
+ callees: {
333
+ arrow: (calleesFlamegraphResponse === null || calleesFlamegraphResponse === void 0 ? void 0 : calleesFlamegraphResponse.report.oneofKind) === 'flamegraphArrow' ? calleesFlamegraphResponse === null || calleesFlamegraphResponse === void 0 || (_calleesFlamegraphRes = calleesFlamegraphResponse.report) === null || _calleesFlamegraphRes === void 0 ? void 0 : _calleesFlamegraphRes.flamegraphArrow : undefined,
334
+ loading: calleesFlamegraphLoading,
335
+ error: calleesFlamegraphError,
336
+ total: BigInt((_calleesFlamegraphRes2 = calleesFlamegraphResponse === null || calleesFlamegraphResponse === void 0 ? void 0 : calleesFlamegraphResponse.total) !== null && _calleesFlamegraphRes2 !== void 0 ? _calleesFlamegraphRes2 : '0'),
337
+ filtered: BigInt((_calleesFlamegraphRes3 = calleesFlamegraphResponse === null || calleesFlamegraphResponse === void 0 ? void 0 : calleesFlamegraphResponse.filtered) !== null && _calleesFlamegraphRes3 !== void 0 ? _calleesFlamegraphRes3 : '0'),
338
+ metadataMappingFiles: (profileMetadataResponse === null || profileMetadataResponse === void 0 ? void 0 : profileMetadataResponse.report.oneofKind) === 'profileMetadata' ? profileMetadataResponse === null || profileMetadataResponse === void 0 || (_profileMetadataRespo3 = profileMetadataResponse.report) === null || _profileMetadataRespo3 === void 0 || (_profileMetadataRespo3 = _profileMetadataRespo3.profileMetadata) === null || _profileMetadataRespo3 === void 0 ? void 0 : _profileMetadataRespo3.mappingFiles : undefined,
339
+ metadataLoading: profileMetadataLoading
340
+ },
341
+ callers: {
342
+ arrow: (callersFlamegraphResponse === null || callersFlamegraphResponse === void 0 ? void 0 : callersFlamegraphResponse.report.oneofKind) === 'flamegraphArrow' ? callersFlamegraphResponse === null || callersFlamegraphResponse === void 0 || (_callersFlamegraphRes = callersFlamegraphResponse.report) === null || _callersFlamegraphRes === void 0 ? void 0 : _callersFlamegraphRes.flamegraphArrow : undefined,
343
+ loading: callersFlamegraphLoading,
344
+ error: callersFlamegraphError,
345
+ total: BigInt((_callersFlamegraphRes2 = callersFlamegraphResponse === null || callersFlamegraphResponse === void 0 ? void 0 : callersFlamegraphResponse.total) !== null && _callersFlamegraphRes2 !== void 0 ? _callersFlamegraphRes2 : '0'),
346
+ filtered: BigInt((_callersFlamegraphRes3 = callersFlamegraphResponse === null || callersFlamegraphResponse === void 0 ? void 0 : callersFlamegraphResponse.filtered) !== null && _callersFlamegraphRes3 !== void 0 ? _callersFlamegraphRes3 : '0'),
347
+ metadataMappingFiles: (profileMetadataResponse === null || profileMetadataResponse === void 0 ? void 0 : profileMetadataResponse.report.oneofKind) === 'profileMetadata' ? profileMetadataResponse === null || profileMetadataResponse === void 0 || (_profileMetadataRespo4 = profileMetadataResponse.report) === null || _profileMetadataRespo4 === void 0 || (_profileMetadataRespo4 = _profileMetadataRespo4.profileMetadata) === null || _profileMetadataRespo4 === void 0 ? void 0 : _profileMetadataRespo4.mappingFiles : undefined,
348
+ metadataLoading: profileMetadataLoading
349
+ }
350
+ },
351
+ samplesData: samplesData,
352
+ profileSource: profileSource,
353
+ queryClient: queryClient,
354
+ onDownloadPProf: function onDownloadPProf() {
355
+ return void downloadPProfClick();
356
+ },
357
+ pprofDownloading: pprofDownloading,
358
+ showVisualizationSelector: showVisualizationSelector,
359
+ onSwitchToFifteenMinutes: onSwitchToFifteenMinutes
360
+ });
257
361
  };
258
- export default ProfileViewWithData;
362
+ export default ProfileViewWithData;