@deephaven/console 0.59.1-beta.3 → 0.59.1-beta.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"HeapUsage.d.ts","sourceRoot":"","sources":["../src/HeapUsage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,YAAY,EAAuB,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,OAAO,kBAAkB,CAAC;AAI1B,UAAU,cAAc;IACtB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,iBAAS,SAAS,CAAC,EACjB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,YAAmB,EACnB,eAAe,GAChB,EAAE,cAAc,GAAG,YAAY,CAuK/B;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"HeapUsage.d.ts","sourceRoot":"","sources":["../src/HeapUsage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,YAAY,EAAuB,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,OAAO,kBAAkB,CAAC;AAI1B,UAAU,cAAc;IACtB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,iBAAS,SAAS,CAAC,EACjB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,YAAmB,EACnB,eAAe,GAChB,EAAE,cAAc,GAAG,YAAY,CA8K/B;AAED,eAAe,SAAS,CAAC"}
package/dist/HeapUsage.js CHANGED
@@ -5,7 +5,7 @@ import classNames from 'classnames';
5
5
  import { Tooltip } from '@deephaven/components';
6
6
  import { Plot, useChartTheme } from '@deephaven/chart';
7
7
  import Log from '@deephaven/log';
8
- import { useAsyncInterval } from '@deephaven/react-hooks';
8
+ import { useAsyncInterval, useIsMountedRef } from '@deephaven/react-hooks';
9
9
  import "./HeapUsage.css";
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -30,9 +30,13 @@ function HeapUsage(_ref) {
30
30
  timestamps: [],
31
31
  usages: []
32
32
  });
33
+ var isMountedRef = useIsMountedRef();
33
34
  var setUsageUpdateInterval = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
34
35
  try {
35
36
  var newUsage = yield connection.getWorkerHeapInfo();
37
+ if (!isMountedRef.current) {
38
+ return;
39
+ }
36
40
  setMemoryUsage(newUsage);
37
41
  if (bgMonitoring || isOpen) {
38
42
  var currentUsage = (newUsage.totalHeapSize - newUsage.freeMemory) / newUsage.maximumHeapSize;
@@ -56,7 +60,7 @@ function HeapUsage(_ref) {
56
60
  } catch (e) {
57
61
  log.warn('Unable to get heap usage', e);
58
62
  }
59
- }), [isOpen, connection, monitorDuration, bgMonitoring]);
63
+ }), [connection, isMountedRef, bgMonitoring, isOpen, monitorDuration]);
60
64
  useAsyncInterval(setUsageUpdateInterval, isOpen ? hoverUpdateInterval : defaultUpdateInterval);
61
65
  var toDecimalPlace = (num, dec) => Math.round(num * 10 ** dec) / 10 ** dec;
62
66
  var decimalPlace = 2;
@@ -1 +1 @@
1
- {"version":3,"file":"HeapUsage.js","names":["useState","useRef","useCallback","classNames","Tooltip","Plot","useChartTheme","Log","useAsyncInterval","jsx","_jsx","jsxs","_jsxs","log","module","HeapUsage","_ref","_timestamps2","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","chartTheme","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","setUsageUpdateInterval","_asyncToGenerator","newUsage","getWorkerHeapInfo","currentUsage","currentTime","Date","now","current","length","shift","push","e","warn","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","arguments","undefined","className","children","lastTimestamp","totalPercentage","usedPercentage","style","width","concat","toFixed","onEntered","onExited","interactive","data","x","y","type","mode","config","staticPlot","responsive","height","layout","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import { useState, ReactElement, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport type { QueryConnectable } from '@deephaven/jsapi-types';\nimport { Plot, useChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport { useAsyncInterval } from '@deephaven/react-hooks';\nimport './HeapUsage.scss';\n\nconst log = Log.module('HeapUsage');\n\ninterface HeapUsageProps {\n connection: QueryConnectable;\n defaultUpdateInterval: number;\n hoverUpdateInterval: number;\n bgMonitoring?: boolean;\n\n // in millis\n monitorDuration: number;\n}\n\nfunction HeapUsage({\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration,\n}: HeapUsageProps): ReactElement {\n const chartTheme = useChartTheme();\n\n const [memoryUsage, setMemoryUsage] = useState({\n freeMemory: 0,\n maximumHeapSize: 999,\n totalHeapSize: 0,\n });\n\n const [isOpen, setIsOpen] = useState(false);\n\n const historyUsage = useRef<{ timestamps: number[]; usages: number[] }>({\n timestamps: [],\n usages: [],\n });\n\n const setUsageUpdateInterval = useCallback(async () => {\n try {\n const newUsage = await connection.getWorkerHeapInfo();\n setMemoryUsage(newUsage);\n\n if (bgMonitoring || isOpen) {\n const currentUsage =\n (newUsage.totalHeapSize - newUsage.freeMemory) /\n newUsage.maximumHeapSize;\n const currentTime = Date.now();\n\n const { timestamps, usages } = historyUsage.current;\n while (\n timestamps.length !== 0 &&\n currentTime - timestamps[0] > monitorDuration * 1.5\n ) {\n timestamps.shift();\n usages.shift();\n }\n\n timestamps.push(currentTime);\n usages.push(currentUsage);\n } else {\n historyUsage.current = { timestamps: [], usages: [] };\n }\n } catch (e) {\n log.warn('Unable to get heap usage', e);\n }\n }, [isOpen, connection, monitorDuration, bgMonitoring]);\n\n useAsyncInterval(\n setUsageUpdateInterval,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n\n const toDecimalPlace = (num: number, dec: number): number =>\n Math.round(num * 10 ** dec) / 10 ** dec;\n\n const decimalPlace = 2;\n const GbToByte = 1024 ** 3;\n\n const { freeMemory, totalHeapSize, maximumHeapSize } = memoryUsage;\n\n const freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);\n const totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);\n const maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);\n const inUseGB = totalHeapGB - freeMemoryGB;\n\n const getRow = (\n text: string,\n size: string,\n bottomBorder = false\n ): JSX.Element => (\n <div\n className={classNames(`heap-usage-info-row`, {\n 'heading-bottom-border': bottomBorder,\n })}\n >\n <div className=\"font-weight-bold\">{text}</div>\n <div>{size}</div>\n </div>\n );\n\n const { timestamps, usages } = historyUsage.current;\n\n const lastTimestamp = timestamps[timestamps.length - 1] ?? 0;\n\n const totalPercentage = totalHeapSize / maximumHeapSize;\n const usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;\n\n return (\n <div className=\"max-memory\">\n <div\n className=\"total-memory\"\n style={{\n width: `calc(${totalPercentage * 100}% - ${totalPercentage * 2}px`,\n }}\n />\n <div\n className={classNames('used-memory', {\n 'heap-overflow':\n (totalHeapSize - freeMemory) / maximumHeapSize > 0.95,\n })}\n style={{\n width: `calc(${usedPercentage * 100}% - ${usedPercentage * 2}px`,\n }}\n />\n <div className=\"memory-text\">{maxHeapGB.toFixed(1)} GB</div>\n\n <Tooltip\n onEntered={(): void => setIsOpen(true)}\n onExited={(): void => setIsOpen(false)}\n interactive\n >\n <div className=\"heap-tooltip\">\n {getRow(\n 'In use:',\n `${inUseGB.toFixed(decimalPlace)} of ${maxHeapGB.toFixed(\n decimalPlace\n )} GB`,\n true\n )}\n {getRow('Free:', `${freeMemoryGB.toFixed(decimalPlace)} GB`)}\n {getRow('Total:', `${totalHeapGB.toFixed(decimalPlace)} GB`)}\n {getRow('Max:', `${maxHeapGB.toFixed(decimalPlace)} GB`)}\n <div className=\"heap-plot\">\n <Plot\n data={[\n {\n x: [...timestamps],\n y: [...usages],\n type: 'scatter',\n mode: 'lines',\n },\n ]}\n config={{ staticPlot: true, responsive: true }}\n style={{\n width: '196px',\n height: '100px',\n }}\n layout={{\n margin: { l: 2, t: 2, r: 2, b: 2 },\n plot_bgcolor: 'transparent',\n paper_bgcolor: 'transparent',\n colorway: ['#4878ea'],\n xaxis: {\n dtick: Math.round(monitorDuration / 6),\n gridcolor: chartTheme.linecolor,\n range: [lastTimestamp - monitorDuration, lastTimestamp],\n linecolor: chartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n yaxis: {\n dtick: 0.2,\n gridcolor: chartTheme.linecolor,\n range: [0, 1],\n linecolor: chartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n }}\n />\n </div>\n <div className=\"heap-utilisation-text\">\n % utilization over {Math.round(monitorDuration / 1000 / 60)} min.\n </div>\n </div>\n </Tooltip>\n </div>\n );\n}\n\nexport default HeapUsage;\n"],"mappings":"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"}
1
+ {"version":3,"file":"HeapUsage.js","names":["useState","useRef","useCallback","classNames","Tooltip","Plot","useChartTheme","Log","useAsyncInterval","useIsMountedRef","jsx","_jsx","jsxs","_jsxs","log","module","HeapUsage","_ref","_timestamps2","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","chartTheme","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","isMountedRef","setUsageUpdateInterval","_asyncToGenerator","newUsage","getWorkerHeapInfo","current","currentUsage","currentTime","Date","now","length","shift","push","e","warn","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","arguments","undefined","className","children","lastTimestamp","totalPercentage","usedPercentage","style","width","concat","toFixed","onEntered","onExited","interactive","data","x","y","type","mode","config","staticPlot","responsive","height","layout","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import { useState, ReactElement, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport type { QueryConnectable } from '@deephaven/jsapi-types';\nimport { Plot, useChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport { useAsyncInterval, useIsMountedRef } from '@deephaven/react-hooks';\nimport './HeapUsage.scss';\n\nconst log = Log.module('HeapUsage');\n\ninterface HeapUsageProps {\n connection: QueryConnectable;\n defaultUpdateInterval: number;\n hoverUpdateInterval: number;\n bgMonitoring?: boolean;\n\n // in millis\n monitorDuration: number;\n}\n\nfunction HeapUsage({\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration,\n}: HeapUsageProps): ReactElement {\n const chartTheme = useChartTheme();\n\n const [memoryUsage, setMemoryUsage] = useState({\n freeMemory: 0,\n maximumHeapSize: 999,\n totalHeapSize: 0,\n });\n\n const [isOpen, setIsOpen] = useState(false);\n\n const historyUsage = useRef<{ timestamps: number[]; usages: number[] }>({\n timestamps: [],\n usages: [],\n });\n\n const isMountedRef = useIsMountedRef();\n\n const setUsageUpdateInterval = useCallback(async () => {\n try {\n const newUsage = await connection.getWorkerHeapInfo();\n\n if (!isMountedRef.current) {\n return;\n }\n\n setMemoryUsage(newUsage);\n\n if (bgMonitoring || isOpen) {\n const currentUsage =\n (newUsage.totalHeapSize - newUsage.freeMemory) /\n newUsage.maximumHeapSize;\n const currentTime = Date.now();\n\n const { timestamps, usages } = historyUsage.current;\n while (\n timestamps.length !== 0 &&\n currentTime - timestamps[0] > monitorDuration * 1.5\n ) {\n timestamps.shift();\n usages.shift();\n }\n\n timestamps.push(currentTime);\n usages.push(currentUsage);\n } else {\n historyUsage.current = { timestamps: [], usages: [] };\n }\n } catch (e) {\n log.warn('Unable to get heap usage', e);\n }\n }, [connection, isMountedRef, bgMonitoring, isOpen, monitorDuration]);\n\n useAsyncInterval(\n setUsageUpdateInterval,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n\n const toDecimalPlace = (num: number, dec: number): number =>\n Math.round(num * 10 ** dec) / 10 ** dec;\n\n const decimalPlace = 2;\n const GbToByte = 1024 ** 3;\n\n const { freeMemory, totalHeapSize, maximumHeapSize } = memoryUsage;\n\n const freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);\n const totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);\n const maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);\n const inUseGB = totalHeapGB - freeMemoryGB;\n\n const getRow = (\n text: string,\n size: string,\n bottomBorder = false\n ): JSX.Element => (\n <div\n className={classNames(`heap-usage-info-row`, {\n 'heading-bottom-border': bottomBorder,\n })}\n >\n <div className=\"font-weight-bold\">{text}</div>\n <div>{size}</div>\n </div>\n );\n\n const { timestamps, usages } = historyUsage.current;\n\n const lastTimestamp = timestamps[timestamps.length - 1] ?? 0;\n\n const totalPercentage = totalHeapSize / maximumHeapSize;\n const usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;\n\n return (\n <div className=\"max-memory\">\n <div\n className=\"total-memory\"\n style={{\n width: `calc(${totalPercentage * 100}% - ${totalPercentage * 2}px`,\n }}\n />\n <div\n className={classNames('used-memory', {\n 'heap-overflow':\n (totalHeapSize - freeMemory) / maximumHeapSize > 0.95,\n })}\n style={{\n width: `calc(${usedPercentage * 100}% - ${usedPercentage * 2}px`,\n }}\n />\n <div className=\"memory-text\">{maxHeapGB.toFixed(1)} GB</div>\n\n <Tooltip\n onEntered={(): void => setIsOpen(true)}\n onExited={(): void => setIsOpen(false)}\n interactive\n >\n <div className=\"heap-tooltip\">\n {getRow(\n 'In use:',\n `${inUseGB.toFixed(decimalPlace)} of ${maxHeapGB.toFixed(\n decimalPlace\n )} GB`,\n true\n )}\n {getRow('Free:', `${freeMemoryGB.toFixed(decimalPlace)} GB`)}\n {getRow('Total:', `${totalHeapGB.toFixed(decimalPlace)} GB`)}\n {getRow('Max:', `${maxHeapGB.toFixed(decimalPlace)} GB`)}\n <div className=\"heap-plot\">\n <Plot\n data={[\n {\n x: [...timestamps],\n y: [...usages],\n type: 'scatter',\n mode: 'lines',\n },\n ]}\n config={{ staticPlot: true, responsive: true }}\n style={{\n width: '196px',\n height: '100px',\n }}\n layout={{\n margin: { l: 2, t: 2, r: 2, b: 2 },\n plot_bgcolor: 'transparent',\n paper_bgcolor: 'transparent',\n colorway: ['#4878ea'],\n xaxis: {\n dtick: Math.round(monitorDuration / 6),\n gridcolor: chartTheme.linecolor,\n range: [lastTimestamp - monitorDuration, lastTimestamp],\n linecolor: chartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n yaxis: {\n dtick: 0.2,\n gridcolor: chartTheme.linecolor,\n range: [0, 1],\n linecolor: chartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n }}\n />\n </div>\n <div className=\"heap-utilisation-text\">\n % utilization over {Math.round(monitorDuration / 1000 / 60)} min.\n </div>\n </div>\n </Tooltip>\n </div>\n );\n}\n\nexport default HeapUsage;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/console",
3
- "version": "0.59.1-beta.3+e8b9f121",
3
+ "version": "0.59.1-beta.6+45fa9295",
4
4
  "description": "Deephaven Console",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -23,15 +23,15 @@
23
23
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
24
24
  },
25
25
  "dependencies": {
26
- "@deephaven/chart": "^0.59.1-beta.3+e8b9f121",
27
- "@deephaven/components": "^0.59.1-beta.3+e8b9f121",
28
- "@deephaven/icons": "^0.59.1-beta.3+e8b9f121",
29
- "@deephaven/jsapi-bootstrap": "^0.59.1-beta.3+e8b9f121",
30
- "@deephaven/jsapi-types": "^0.59.1-beta.3+e8b9f121",
31
- "@deephaven/log": "^0.59.1-beta.3+e8b9f121",
32
- "@deephaven/react-hooks": "^0.59.1-beta.3+e8b9f121",
33
- "@deephaven/storage": "^0.59.1-beta.3+e8b9f121",
34
- "@deephaven/utils": "^0.59.1-beta.3+e8b9f121",
26
+ "@deephaven/chart": "^0.59.1-beta.6+45fa9295",
27
+ "@deephaven/components": "^0.59.1-beta.6+45fa9295",
28
+ "@deephaven/icons": "^0.59.1-beta.6+45fa9295",
29
+ "@deephaven/jsapi-bootstrap": "^0.59.1-beta.6+45fa9295",
30
+ "@deephaven/jsapi-types": "^0.59.1-beta.6+45fa9295",
31
+ "@deephaven/log": "^0.59.1-beta.6+45fa9295",
32
+ "@deephaven/react-hooks": "^0.59.1-beta.6+45fa9295",
33
+ "@deephaven/storage": "^0.59.1-beta.6+45fa9295",
34
+ "@deephaven/utils": "^0.59.1-beta.6+45fa9295",
35
35
  "@fortawesome/react-fontawesome": "^0.2.0",
36
36
  "classnames": "^2.3.1",
37
37
  "linkifyjs": "^4.1.0",
@@ -51,8 +51,8 @@
51
51
  "react-dom": "^17.x"
52
52
  },
53
53
  "devDependencies": {
54
- "@deephaven/jsapi-shim": "^0.59.1-beta.3+e8b9f121",
55
- "@deephaven/mocks": "^0.59.1-beta.3+e8b9f121"
54
+ "@deephaven/jsapi-shim": "^0.59.1-beta.6+45fa9295",
55
+ "@deephaven/mocks": "^0.59.1-beta.6+45fa9295"
56
56
  },
57
57
  "files": [
58
58
  "dist"
@@ -63,5 +63,5 @@
63
63
  "publishConfig": {
64
64
  "access": "public"
65
65
  },
66
- "gitHead": "e8b9f121afaeb2c3dd6484a05ca1966a1d769260"
66
+ "gitHead": "45fa929586c0b13a738eceaa064b261eecbd8308"
67
67
  }