@deephaven/console 0.15.6-beta.5 → 0.15.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.
- package/dist/HeapUsage.css +60 -0
- package/dist/HeapUsage.css.map +1 -0
- package/dist/HeapUsage.d.ts +13 -0
- package/dist/HeapUsage.d.ts.map +1 -0
- package/dist/HeapUsage.js +179 -0
- package/dist/HeapUsage.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +11 -10
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
.max-memory {
|
|
2
|
+
position: relative;
|
|
3
|
+
color: #c0bfbf;
|
|
4
|
+
background-color: #211f22;
|
|
5
|
+
border: #1a171a;
|
|
6
|
+
width: 4.25rem;
|
|
7
|
+
vertical-align: middle;
|
|
8
|
+
text-align: center;
|
|
9
|
+
user-select: none;
|
|
10
|
+
z-index: 1;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.total-memory,
|
|
14
|
+
.used-memory {
|
|
15
|
+
position: absolute;
|
|
16
|
+
inset: 0;
|
|
17
|
+
margin: 1px;
|
|
18
|
+
z-index: -1;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.total-memory {
|
|
22
|
+
background-color: #403e41;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.used-memory {
|
|
26
|
+
background-color: #5b5a5c;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.heap-overflow {
|
|
30
|
+
background-color: #f95d84;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.heap-tooltip {
|
|
34
|
+
padding: 0.25rem;
|
|
35
|
+
width: 200px;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.heap-usage-info-row {
|
|
39
|
+
display: flex;
|
|
40
|
+
color: #f0f0ee;
|
|
41
|
+
padding: 0.25rem;
|
|
42
|
+
justify-content: space-between;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.heap-plot {
|
|
46
|
+
display: flex;
|
|
47
|
+
align-items: center;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.heading-bottom-border {
|
|
51
|
+
border-bottom: 1px solid #211f22;
|
|
52
|
+
margin-bottom: 0.25rem;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.heap-utilisation-text {
|
|
56
|
+
margin-top: 0.25rem;
|
|
57
|
+
color: #929192;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/*# sourceMappingURL=HeapUsage.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../src/HeapUsage.scss","../../components/scss/bootstrap_overrides.scss","../../components/scss/new_variables.scss"],"names":[],"mappings":"AAEA;EACE;EACA,OCgBS;EDfT,kBCsBS;EDrBT,QCQe;EDPf;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE,kBCCS;;;ADEX;EACE,kBCLS;;;ADQX;EACE,kBC5BI;;;AD+BN;EACE,SEjCS;EFkCT;;;AAGF;EACE;EACA,OC5Be;ED6Bf,SExCS;EFyCT;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA,eEnDS;;;AFsDX;EACE,YEvDS;EFwDT,OCrCS","file":"HeapUsage.css"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { QueryConnectable } from '@deephaven/jsapi-shim';
|
|
2
|
+
import { ReactElement } from 'react';
|
|
3
|
+
import './HeapUsage.scss';
|
|
4
|
+
interface HeapUsageProps {
|
|
5
|
+
connection: QueryConnectable;
|
|
6
|
+
defaultUpdateInterval: number;
|
|
7
|
+
hoverUpdateInterval: number;
|
|
8
|
+
bgMonitoring?: boolean;
|
|
9
|
+
monitorDuration: number;
|
|
10
|
+
}
|
|
11
|
+
declare const HeapUsage: ({ connection, defaultUpdateInterval, hoverUpdateInterval, bgMonitoring, monitorDuration, }: HeapUsageProps) => ReactElement;
|
|
12
|
+
export default HeapUsage;
|
|
13
|
+
//# sourceMappingURL=HeapUsage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeapUsage.d.ts","sourceRoot":"","sources":["../src/HeapUsage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAc,EAAuB,YAAY,EAAU,MAAM,OAAO,CAAC;AAEzE,OAAO,kBAAkB,CAAC;AAG1B,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,QAAA,MAAM,SAAS,+FAMZ,cAAc,KAAG,YAgLnB,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
2
|
+
|
|
3
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
4
|
+
|
|
5
|
+
import { Tooltip } from '@deephaven/components';
|
|
6
|
+
import React, { useEffect, useState, useRef } from 'react';
|
|
7
|
+
import { Plot, ChartTheme } from '@deephaven/chart';
|
|
8
|
+
import "./HeapUsage.css";
|
|
9
|
+
import classNames from 'classnames';
|
|
10
|
+
|
|
11
|
+
var HeapUsage = _ref => {
|
|
12
|
+
var _timestamps2;
|
|
13
|
+
|
|
14
|
+
var {
|
|
15
|
+
connection,
|
|
16
|
+
defaultUpdateInterval,
|
|
17
|
+
hoverUpdateInterval,
|
|
18
|
+
bgMonitoring = true,
|
|
19
|
+
monitorDuration
|
|
20
|
+
} = _ref;
|
|
21
|
+
var [memoryUsage, setMemoryUsage] = useState({
|
|
22
|
+
freeMemory: 0,
|
|
23
|
+
maximumHeapSize: 999,
|
|
24
|
+
totalHeapSize: 0
|
|
25
|
+
});
|
|
26
|
+
var [isOpen, setIsOpen] = useState(false);
|
|
27
|
+
var historyUsage = useRef({
|
|
28
|
+
timestamps: [],
|
|
29
|
+
usages: []
|
|
30
|
+
});
|
|
31
|
+
useEffect(function setUsageUpdateInterval() {
|
|
32
|
+
var fetchAndUpdate = /*#__PURE__*/function () {
|
|
33
|
+
var _ref2 = _asyncToGenerator(function* () {
|
|
34
|
+
var newUsage = yield connection.getWorkerHeapInfo();
|
|
35
|
+
setMemoryUsage(newUsage);
|
|
36
|
+
|
|
37
|
+
if (bgMonitoring || isOpen) {
|
|
38
|
+
var currentUsage = (newUsage.totalHeapSize - newUsage.freeMemory) / newUsage.maximumHeapSize;
|
|
39
|
+
var currentTime = Date.now();
|
|
40
|
+
var {
|
|
41
|
+
timestamps: _timestamps,
|
|
42
|
+
usages: _usages
|
|
43
|
+
} = historyUsage.current;
|
|
44
|
+
|
|
45
|
+
while (_timestamps.length !== 0 && currentTime - _timestamps[0] > monitorDuration * 1.5) {
|
|
46
|
+
_timestamps.shift();
|
|
47
|
+
|
|
48
|
+
_usages.shift();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
_timestamps.push(currentTime);
|
|
52
|
+
|
|
53
|
+
_usages.push(currentUsage);
|
|
54
|
+
} else {
|
|
55
|
+
historyUsage.current = {
|
|
56
|
+
timestamps: [],
|
|
57
|
+
usages: []
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
return function fetchAndUpdate() {
|
|
63
|
+
return _ref2.apply(this, arguments);
|
|
64
|
+
};
|
|
65
|
+
}();
|
|
66
|
+
|
|
67
|
+
fetchAndUpdate();
|
|
68
|
+
var updateUsage = setInterval(fetchAndUpdate, isOpen ? hoverUpdateInterval : defaultUpdateInterval);
|
|
69
|
+
return () => {
|
|
70
|
+
clearInterval(updateUsage);
|
|
71
|
+
};
|
|
72
|
+
}, [isOpen, hoverUpdateInterval, connection, defaultUpdateInterval, monitorDuration, bgMonitoring]);
|
|
73
|
+
|
|
74
|
+
var toDecimalPlace = (num, dec) => Math.round(num * 10 ** dec) / 10 ** dec;
|
|
75
|
+
|
|
76
|
+
var decimalPlace = 2;
|
|
77
|
+
var GbToByte = 1024 ** 3;
|
|
78
|
+
var {
|
|
79
|
+
freeMemory,
|
|
80
|
+
totalHeapSize,
|
|
81
|
+
maximumHeapSize
|
|
82
|
+
} = memoryUsage;
|
|
83
|
+
var freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);
|
|
84
|
+
var totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);
|
|
85
|
+
var maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);
|
|
86
|
+
var inUseGB = totalHeapGB - freeMemoryGB;
|
|
87
|
+
|
|
88
|
+
var getRow = function getRow(text, size) {
|
|
89
|
+
var bottomBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
90
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
91
|
+
className: classNames("heap-usage-info-row", {
|
|
92
|
+
'heading-bottom-border': bottomBorder
|
|
93
|
+
})
|
|
94
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
95
|
+
className: "font-weight-bold"
|
|
96
|
+
}, text), /*#__PURE__*/React.createElement("div", null, size));
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
var {
|
|
100
|
+
timestamps,
|
|
101
|
+
usages
|
|
102
|
+
} = historyUsage.current;
|
|
103
|
+
var lastTimestamp = (_timestamps2 = timestamps[timestamps.length - 1]) !== null && _timestamps2 !== void 0 ? _timestamps2 : 0;
|
|
104
|
+
var totalPercentage = totalHeapSize / maximumHeapSize;
|
|
105
|
+
var usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;
|
|
106
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
107
|
+
className: "max-memory"
|
|
108
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
109
|
+
className: "total-memory",
|
|
110
|
+
style: {
|
|
111
|
+
width: "calc(".concat(totalPercentage * 100, "% - ").concat(totalPercentage * 2, "px")
|
|
112
|
+
}
|
|
113
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
114
|
+
className: classNames('used-memory', {
|
|
115
|
+
'heap-overflow': (totalHeapSize - freeMemory) / maximumHeapSize > 0.95
|
|
116
|
+
}),
|
|
117
|
+
style: {
|
|
118
|
+
width: "calc(".concat(usedPercentage * 100, "% - ").concat(usedPercentage * 2, "px")
|
|
119
|
+
}
|
|
120
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
121
|
+
className: "memory-text"
|
|
122
|
+
}, maxHeapGB.toFixed(1), " GB")), /*#__PURE__*/React.createElement(Tooltip, {
|
|
123
|
+
onEntered: () => setIsOpen(true),
|
|
124
|
+
onExited: () => setIsOpen(false),
|
|
125
|
+
interactive: true
|
|
126
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
127
|
+
className: "heap-tooltip"
|
|
128
|
+
}, getRow('In use:', "".concat(inUseGB.toFixed(decimalPlace), " of ").concat(maxHeapGB.toFixed(decimalPlace), " GB"), true), getRow('Free:', "".concat(freeMemoryGB.toFixed(decimalPlace), " GB")), getRow('Total:', "".concat(totalHeapGB.toFixed(decimalPlace), " GB")), getRow('Max:', "".concat(maxHeapGB.toFixed(decimalPlace), " GB")), /*#__PURE__*/React.createElement("div", {
|
|
129
|
+
className: "heap-plot"
|
|
130
|
+
}, /*#__PURE__*/React.createElement(Plot, {
|
|
131
|
+
data: [{
|
|
132
|
+
x: [...timestamps],
|
|
133
|
+
y: [...usages],
|
|
134
|
+
type: 'scatter',
|
|
135
|
+
mode: 'lines'
|
|
136
|
+
}],
|
|
137
|
+
config: {
|
|
138
|
+
staticPlot: true,
|
|
139
|
+
responsive: true
|
|
140
|
+
},
|
|
141
|
+
style: {
|
|
142
|
+
width: '196px',
|
|
143
|
+
height: '100px'
|
|
144
|
+
},
|
|
145
|
+
layout: {
|
|
146
|
+
legend: false,
|
|
147
|
+
margin: {
|
|
148
|
+
l: 2,
|
|
149
|
+
t: 2,
|
|
150
|
+
r: 2,
|
|
151
|
+
b: 2
|
|
152
|
+
},
|
|
153
|
+
plot_bgcolor: 'transparent',
|
|
154
|
+
paper_bgcolor: 'transparent',
|
|
155
|
+
colorway: ['#4878ea'],
|
|
156
|
+
xaxis: {
|
|
157
|
+
dtick: Math.round(monitorDuration / 6),
|
|
158
|
+
gridcolor: ChartTheme.linecolor,
|
|
159
|
+
range: [lastTimestamp - monitorDuration, lastTimestamp],
|
|
160
|
+
linecolor: ChartTheme.linecolor,
|
|
161
|
+
linewidth: 2,
|
|
162
|
+
mirror: true
|
|
163
|
+
},
|
|
164
|
+
yaxis: {
|
|
165
|
+
dtick: 0.2,
|
|
166
|
+
gridcolor: ChartTheme.linecolor,
|
|
167
|
+
range: [0, 1],
|
|
168
|
+
linecolor: ChartTheme.linecolor,
|
|
169
|
+
linewidth: 2,
|
|
170
|
+
mirror: true
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
174
|
+
className: "heap-utilisation-text"
|
|
175
|
+
}, "% utilization over ", Math.round(monitorDuration / 1000 / 60), " min."))));
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
export default HeapUsage;
|
|
179
|
+
//# sourceMappingURL=HeapUsage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/HeapUsage.tsx"],"names":["Tooltip","React","useEffect","useState","useRef","Plot","ChartTheme","classNames","HeapUsage","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","setUsageUpdateInterval","fetchAndUpdate","newUsage","getWorkerHeapInfo","currentUsage","currentTime","Date","now","current","length","shift","push","updateUsage","setInterval","clearInterval","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","lastTimestamp","totalPercentage","usedPercentage","width","toFixed","x","y","type","mode","staticPlot","responsive","height","legend","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"mappings":"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","sourcesContent":["import { Tooltip } from '@deephaven/components';\nimport { QueryConnectable } from '@deephaven/jsapi-shim';\nimport React, { useEffect, useState, ReactElement, useRef } from 'react';\nimport { Plot, ChartTheme } from '@deephaven/chart';\nimport './HeapUsage.scss';\nimport classNames from 'classnames';\n\ninterface HeapUsageProps {\n connection: QueryConnectable;\n defaultUpdateInterval: number;\n hoverUpdateInterval: number;\n bgMonitoring?: boolean;\n\n // in millis\n monitorDuration: number;\n}\n\nconst HeapUsage = ({\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration,\n}: HeapUsageProps): ReactElement => {\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 useEffect(\n function setUsageUpdateInterval() {\n const fetchAndUpdate = async () => {\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 };\n fetchAndUpdate();\n\n const updateUsage = setInterval(\n fetchAndUpdate,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n return () => {\n clearInterval(updateUsage);\n };\n },\n [\n isOpen,\n hoverUpdateInterval,\n connection,\n defaultUpdateInterval,\n monitorDuration,\n bgMonitoring,\n ]\n );\n\n const toDecimalPlace = (num: number, dec: 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 = (text: string, size: string, bottomBorder = false) => (\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 <>\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 </div>\n\n <Tooltip\n onEntered={() => setIsOpen(true)}\n onExited={() => 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 legend: false,\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 </>\n );\n};\n\nexport default HeapUsage;\n"],"file":"HeapUsage.js"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,5 +11,6 @@ export * from './common';
|
|
|
11
11
|
export * from './command-history';
|
|
12
12
|
export * from './console-history';
|
|
13
13
|
export { default as LogView } from './log/LogView';
|
|
14
|
+
export { default as HeapUsage } from './HeapUsage';
|
|
14
15
|
export { default } from './Console';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,5 +11,6 @@ export * from "./common/index.js";
|
|
|
11
11
|
export * from "./command-history/index.js";
|
|
12
12
|
export * from "./console-history/index.js";
|
|
13
13
|
export { default as LogView } from "./log/LogView.js";
|
|
14
|
+
export { default as HeapUsage } from "./HeapUsage.js";
|
|
14
15
|
export { default } from "./Console.js";
|
|
15
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["default","Console","ConsoleInput","ConsoleMenu","SHORTCUTS","ConsoleStatusBar","MonacoUtils","Editor","ScriptEditor","ScriptEditorUtils","LogView"],"mappings":"SAASA,OAAO,IAAIC,O;SACXD,OAAO,IAAIE,Y;SACXF,OAAO,IAAIG,W;SACXH,OAAO,IAAII,S;SACXJ,OAAO,IAAIK,gB;SACXL,OAAO,IAAIM,W;SACXN,OAAO,IAAIO,M;SACXP,OAAO,IAAIQ,Y;SACXR,OAAO,IAAIS,iB;;;;SAIXT,OAAO,IAAIU,O;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["default","Console","ConsoleInput","ConsoleMenu","SHORTCUTS","ConsoleStatusBar","MonacoUtils","Editor","ScriptEditor","ScriptEditorUtils","LogView","HeapUsage"],"mappings":"SAASA,OAAO,IAAIC,O;SACXD,OAAO,IAAIE,Y;SACXF,OAAO,IAAIG,W;SACXH,OAAO,IAAII,S;SACXJ,OAAO,IAAIK,gB;SACXL,OAAO,IAAIM,W;SACXN,OAAO,IAAIO,M;SACXP,OAAO,IAAIQ,Y;SACXR,OAAO,IAAIS,iB;;;;SAIXT,OAAO,IAAIU,O;SACXV,OAAO,IAAIW,S;SAEXX,O","sourcesContent":["export { default as Console } from './Console';\nexport { default as ConsoleInput } from './ConsoleInput';\nexport { default as ConsoleMenu } from './ConsoleMenu';\nexport { default as SHORTCUTS } from './ConsoleShortcuts';\nexport { default as ConsoleStatusBar } from './ConsoleStatusBar';\nexport { default as MonacoUtils } from './monaco/MonacoUtils';\nexport { default as Editor } from './notebook/Editor';\nexport { default as ScriptEditor } from './notebook/ScriptEditor';\nexport { default as ScriptEditorUtils } from './notebook/ScriptEditorUtils';\nexport * from './common';\nexport * from './command-history';\nexport * from './console-history';\nexport { default as LogView } from './log/LogView';\nexport { default as HeapUsage } from './HeapUsage';\n\nexport { default } from './Console';\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/console",
|
|
3
|
-
"version": "0.15.6
|
|
3
|
+
"version": "0.15.6",
|
|
4
4
|
"description": "Deephaven Console",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,12 +30,13 @@
|
|
|
30
30
|
"start": "cross-env NODE_ENV=development npm run watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@deephaven/
|
|
34
|
-
"@deephaven/
|
|
35
|
-
"@deephaven/
|
|
36
|
-
"@deephaven/
|
|
37
|
-
"@deephaven/
|
|
38
|
-
"@deephaven/
|
|
33
|
+
"@deephaven/chart": "^0.15.6",
|
|
34
|
+
"@deephaven/components": "^0.15.6",
|
|
35
|
+
"@deephaven/icons": "^0.15.0",
|
|
36
|
+
"@deephaven/jsapi-shim": "^0.15.6",
|
|
37
|
+
"@deephaven/log": "^0.15.5",
|
|
38
|
+
"@deephaven/storage": "^0.15.5",
|
|
39
|
+
"@deephaven/utils": "^0.15.6",
|
|
39
40
|
"@fortawesome/react-fontawesome": "^0.1.18",
|
|
40
41
|
"classnames": "^2.3.1",
|
|
41
42
|
"lodash.debounce": "^4.0.8",
|
|
@@ -53,8 +54,8 @@
|
|
|
53
54
|
"react-dom": "^17.x"
|
|
54
55
|
},
|
|
55
56
|
"devDependencies": {
|
|
56
|
-
"@deephaven/mocks": "^0.15.
|
|
57
|
-
"@deephaven/tsconfig": "^0.15.
|
|
57
|
+
"@deephaven/mocks": "^0.15.0",
|
|
58
|
+
"@deephaven/tsconfig": "^0.15.2"
|
|
58
59
|
},
|
|
59
60
|
"files": [
|
|
60
61
|
"dist"
|
|
@@ -65,5 +66,5 @@
|
|
|
65
66
|
"publishConfig": {
|
|
66
67
|
"access": "public"
|
|
67
68
|
},
|
|
68
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "c54e11a1fe772b855b6bac2a1534857c8cedc8f8"
|
|
69
70
|
}
|