@deephaven/console 0.5.2-matplotlib.2 → 0.6.1-demo.8

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 (114) hide show
  1. package/dist/Console.d.ts +3 -0
  2. package/dist/Console.d.ts.map +1 -1
  3. package/dist/Console.js +807 -871
  4. package/dist/Console.js.map +1 -1
  5. package/dist/ConsoleInput.d.ts +1 -38
  6. package/dist/ConsoleInput.d.ts.map +1 -1
  7. package/dist/ConsoleInput.js +331 -436
  8. package/dist/ConsoleInput.js.map +1 -1
  9. package/dist/ConsoleMenu.js +159 -215
  10. package/dist/ConsoleMenu.js.map +1 -1
  11. package/dist/ConsolePropTypes.js +1 -1
  12. package/dist/ConsolePropTypes.js.map +1 -1
  13. package/dist/ConsoleShortcuts.js +2 -2
  14. package/dist/ConsoleShortcuts.js.map +1 -1
  15. package/dist/ConsoleStatusBar.js +85 -125
  16. package/dist/ConsoleStatusBar.js.map +1 -1
  17. package/dist/StoragePropTypes.js +2 -2
  18. package/dist/StoragePropTypes.js.map +1 -1
  19. package/dist/command-history/CommandHistory.css +5 -2
  20. package/dist/command-history/CommandHistory.css.map +1 -1
  21. package/dist/command-history/CommandHistory.d.ts +5 -0
  22. package/dist/command-history/CommandHistory.d.ts.map +1 -1
  23. package/dist/command-history/CommandHistory.js +303 -391
  24. package/dist/command-history/CommandHistory.js.map +1 -1
  25. package/dist/command-history/CommandHistoryActions.css +4 -0
  26. package/dist/command-history/CommandHistoryActions.css.map +1 -1
  27. package/dist/command-history/CommandHistoryActions.d.ts.map +1 -1
  28. package/dist/command-history/CommandHistoryActions.js +40 -79
  29. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  30. package/dist/command-history/CommandHistoryItem.css +1 -1
  31. package/dist/command-history/CommandHistoryItem.d.ts +5 -0
  32. package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
  33. package/dist/command-history/CommandHistoryItem.js +15 -9
  34. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  35. package/dist/command-history/CommandHistoryItemTooltip.d.ts +1 -40
  36. package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
  37. package/dist/command-history/CommandHistoryItemTooltip.js +139 -189
  38. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  39. package/dist/command-history/CommandHistoryViewportUpdater.js +30 -35
  40. package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
  41. package/dist/command-history/index.js +5 -5
  42. package/dist/command-history/index.js.map +1 -1
  43. package/dist/common/Code.js +34 -70
  44. package/dist/common/Code.js.map +1 -1
  45. package/dist/common/ConsoleConstants.js +3 -24
  46. package/dist/common/ConsoleConstants.js.map +1 -1
  47. package/dist/common/ConsoleUtils.d.ts +1 -3
  48. package/dist/common/ConsoleUtils.d.ts.map +1 -1
  49. package/dist/common/ConsoleUtils.js +60 -94
  50. package/dist/common/ConsoleUtils.js.map +1 -1
  51. package/dist/common/ObjectIcon.js +4 -2
  52. package/dist/common/ObjectIcon.js.map +1 -1
  53. package/dist/common/index.d.js +1 -34
  54. package/dist/common/index.d.js.map +1 -1
  55. package/dist/common/index.js +4 -4
  56. package/dist/common/index.js.map +1 -1
  57. package/dist/console-history/ConsoleHistory.js +27 -63
  58. package/dist/console-history/ConsoleHistory.js.map +1 -1
  59. package/dist/console-history/ConsoleHistoryItem.js +116 -154
  60. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  61. package/dist/console-history/ConsoleHistoryItemResult.js +4 -2
  62. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  63. package/dist/console-history/ConsoleHistoryResultErrorMessage.js +94 -132
  64. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  65. package/dist/console-history/ConsoleHistoryResultInProgress.js +42 -76
  66. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  67. package/dist/console-history/index.js +5 -5
  68. package/dist/console-history/index.js.map +1 -1
  69. package/dist/csv/CsvFormats.js +14 -28
  70. package/dist/csv/CsvFormats.js.map +1 -1
  71. package/dist/csv/CsvInputBar.css +25 -23
  72. package/dist/csv/CsvInputBar.css.map +1 -1
  73. package/dist/csv/CsvInputBar.d.ts +2 -45
  74. package/dist/csv/CsvInputBar.d.ts.map +1 -1
  75. package/dist/csv/CsvInputBar.js +298 -372
  76. package/dist/csv/CsvInputBar.js.map +1 -1
  77. package/dist/csv/CsvOverlay.js +197 -243
  78. package/dist/csv/CsvOverlay.js.map +1 -1
  79. package/dist/csv/CsvParser.js +186 -209
  80. package/dist/csv/CsvParser.js.map +1 -1
  81. package/dist/csv/CsvTypeParser.js +185 -210
  82. package/dist/csv/CsvTypeParser.js.map +1 -1
  83. package/dist/csv/NewTableColumnTypes.js +1 -5
  84. package/dist/csv/NewTableColumnTypes.js.map +1 -1
  85. package/dist/index.js +14 -14
  86. package/dist/index.js.map +1 -1
  87. package/dist/log/LogLevelMenuItem.js +24 -58
  88. package/dist/log/LogLevelMenuItem.js.map +1 -1
  89. package/dist/log/LogView.js +429 -484
  90. package/dist/log/LogView.js.map +1 -1
  91. package/dist/monaco/MonacoCompletionProvider.js +92 -124
  92. package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
  93. package/dist/monaco/MonacoUtils.js +315 -331
  94. package/dist/monaco/MonacoUtils.js.map +1 -1
  95. package/dist/monaco/index.js +2 -2
  96. package/dist/monaco/index.js.map +1 -1
  97. package/dist/monaco/lang/db.js +3 -3
  98. package/dist/monaco/lang/db.js.map +1 -1
  99. package/dist/monaco/lang/groovy.js +3 -3
  100. package/dist/monaco/lang/groovy.js.map +1 -1
  101. package/dist/monaco/lang/log.js +3 -3
  102. package/dist/monaco/lang/log.js.map +1 -1
  103. package/dist/monaco/lang/python.js +3 -3
  104. package/dist/monaco/lang/python.js.map +1 -1
  105. package/dist/monaco/lang/scala.js +5 -5
  106. package/dist/monaco/lang/scala.js.map +1 -1
  107. package/dist/notebook/Editor.js +101 -141
  108. package/dist/notebook/Editor.js.map +1 -1
  109. package/dist/notebook/ScriptEditor.js +261 -301
  110. package/dist/notebook/ScriptEditor.js.map +1 -1
  111. package/dist/notebook/ScriptEditorUtils.js +26 -42
  112. package/dist/notebook/ScriptEditorUtils.js.map +1 -1
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/package.json +26 -56
@@ -4,17 +4,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
7
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8
-
9
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
10
-
11
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
12
-
13
7
  // Intentionally using isNaN rather than Number.isNaN
14
8
 
15
9
  /* eslint-disable no-restricted-globals */
16
10
  import Papa from 'papaparse';
17
- import NewTableColumnTypes from './NewTableColumnTypes'; // Initially column types start al unknown
11
+ import NewTableColumnTypes from "./NewTableColumnTypes.js"; // Initially column types start al unknown
18
12
 
19
13
  var UNKNOWN = 'unknown';
20
14
  var MAX_INT = 2147483647;
@@ -25,270 +19,251 @@ var LOCAL_TIME_REGEX = /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\.[0-9]{1,9})?$
25
19
  * Determines the type of each column in a CSV file by parsing it and looking at every value.
26
20
  */
27
21
 
28
- var CsvTypeParser = /*#__PURE__*/function () {
29
- function CsvTypeParser(onFileCompleted, file, readHeaders, parentConfig, nullString, onProgress, onError, totalChunks, isZip, shouldTrim) {
30
- _classCallCheck(this, CsvTypeParser);
31
-
32
- this.onFileCompleted = onFileCompleted;
33
- this.file = file;
34
- this.readHeaders = readHeaders;
35
- this.nullString = nullString;
36
- this.onProgress = onProgress;
37
- this.onError = onError;
38
- this.types = null;
39
- this.chunks = 0;
40
- this.totalChunks = totalChunks;
41
- this.isZip = isZip;
42
- this.shouldTrim = shouldTrim;
43
- this.zipProgress = 0;
44
- this.handleChunk = this.handleChunk.bind(this);
45
- this.handleComplete = this.handleComplete.bind(this);
46
- this.handleError = this.handleError.bind(this);
47
- this.handleNodeUpdate = this.handleNodeUpdate.bind(this);
48
- this.config = _objectSpread(_objectSpread({}, parentConfig), {}, {
49
- error: this.handleError,
50
- chunk: this.handleChunk,
51
- complete: this.handleComplete
52
- });
53
- }
54
-
55
- _createClass(CsvTypeParser, [{
56
- key: "parse",
57
- value: function parse() {
58
- var toParse = this.isZip ? this.file.nodeStream('nodebuffer', this.handleNodeUpdate) : this.file;
59
- Papa.parse(toParse, this.config);
22
+ class CsvTypeParser {
23
+ static determineType(value, type, nullString) {
24
+ if (!value || value === nullString) {
25
+ // A null tells us nothing about the type
26
+ return type;
60
27
  }
61
- }, {
62
- key: "handleChunk",
63
- value: function handleChunk(result, parser) {
64
- var _this = this;
65
-
66
- var data = result.data;
67
-
68
- if (!this.types) {
69
- if (!data || data.length === 0) {
70
- parser.abort();
71
- this.onError('Error parsing CSV: no data in file.');
72
- return;
73
- }
74
28
 
75
- this.types = new Array(data[0].length).fill(UNKNOWN);
29
+ switch (type) {
30
+ case NewTableColumnTypes.STRING:
31
+ // Strings never get promoted
32
+ return NewTableColumnTypes.STRING;
76
33
 
77
- if (this.readHeaders) {
78
- // If headers are being read from the file, remove them from type analysis
79
- data = data.slice(1);
80
- }
81
- }
34
+ case NewTableColumnTypes.INTEGER:
35
+ return CsvTypeParser.checkInteger(value);
82
36
 
83
- data.forEach(function (row) {
84
- if (row.length >= _this.types.length) {
85
- for (var i = 0; i < _this.types.length; i += 1) {
86
- _this.types[i] = CsvTypeParser.determineType(_this.shouldTrim ? row[i].trim() : row[i], _this.types[i], _this.nullString);
87
- }
88
- } else {
89
- parser.abort();
37
+ case NewTableColumnTypes.LONG:
38
+ return CsvTypeParser.checkLong(value);
90
39
 
91
- _this.onError("Error parsing CSV: Insufficient data in row.\nExpected length ".concat(_this.types.length, " but found ").concat(row.length, ".\nRow = ").concat(row));
92
- }
93
- });
94
- this.chunks += 1; // 50 because the type parsing accounts for 50% of the parsing
40
+ case NewTableColumnTypes.DOUBLE:
41
+ return CsvTypeParser.checkDouble(value);
95
42
 
96
- var progress = 0;
43
+ case NewTableColumnTypes.BOOLEAN:
44
+ return CsvTypeParser.checkBoolean(value);
97
45
 
98
- if (this.totalChunks > 0) {
99
- progress = Math.round(this.chunks / this.totalChunks * 50);
100
- } else {
101
- progress = Math.round(this.zipProgress / 2);
102
- }
46
+ case NewTableColumnTypes.DATE_TIME:
47
+ return CsvTypeParser.checkDateTime(value);
103
48
 
104
- var isCancelled = this.onProgress(progress);
49
+ case NewTableColumnTypes.LOCAL_TIME:
50
+ return CsvTypeParser.checkLocalTime(value);
105
51
 
106
- if (isCancelled) {
107
- parser.abort();
108
- }
109
- }
110
- }, {
111
- key: "handleComplete",
112
- value: function handleComplete(results) {
113
- var types = this.types,
114
- onFileCompleted = this.onFileCompleted; // results is undefined for a succesful parse, but has meta data for an abort
115
-
116
- if (!results || !results.meta.aborted) {
117
- onFileCompleted(types.map(function (type) {
118
- return type === UNKNOWN ? NewTableColumnTypes.STRING : type;
119
- }));
120
- }
121
- }
122
- }, {
123
- key: "handleError",
124
- value: function handleError(error) {
125
- var onError = this.onError;
126
- onError(error);
52
+ default:
53
+ return CsvTypeParser.getTypeFromUnknown(value);
127
54
  }
128
- }, {
129
- key: "handleNodeUpdate",
130
- value: function handleNodeUpdate(metadata) {
131
- this.zipProgress = metadata.percent;
132
- }
133
- }], [{
134
- key: "determineType",
135
- value: function determineType(value, type, nullString) {
136
- if (!value || value === nullString) {
137
- // A null tells us nothing about the type
138
- return type;
139
- }
55
+ } // Allows for cusomt rules in addition to isNaN
140
56
 
141
- switch (type) {
142
- case NewTableColumnTypes.STRING:
143
- // Strings never get promoted
144
- return NewTableColumnTypes.STRING;
145
57
 
146
- case NewTableColumnTypes.INTEGER:
147
- return CsvTypeParser.checkInteger(value);
148
-
149
- case NewTableColumnTypes.LONG:
150
- return CsvTypeParser.checkLong(value);
58
+ static isNotParsableNumber(s) {
59
+ return isNaN(s) || s === 'Infinity' || s === '-Infinity';
60
+ }
151
61
 
152
- case NewTableColumnTypes.DOUBLE:
153
- return CsvTypeParser.checkDouble(value);
62
+ static checkInteger(value) {
63
+ var noCommas = value.replace(/,/g, '');
154
64
 
155
- case NewTableColumnTypes.BOOLEAN:
156
- return CsvTypeParser.checkBoolean(value);
65
+ if (CsvTypeParser.isNotParsableNumber(noCommas)) {
66
+ return NewTableColumnTypes.STRING;
67
+ }
157
68
 
158
- case NewTableColumnTypes.DATE_TIME:
159
- return CsvTypeParser.checkDateTime(value);
69
+ return CsvTypeParser.getNumberType(noCommas);
70
+ }
160
71
 
161
- case NewTableColumnTypes.LOCAL_TIME:
162
- return CsvTypeParser.checkLocalTime(value);
72
+ static checkLong(value) {
73
+ var noCommas = value.replace(/,/g, '');
163
74
 
164
- default:
165
- return CsvTypeParser.getTypeFromUnknown(value);
166
- }
167
- } // Allows for cusomt rules in addition to isNaN
75
+ if (CsvTypeParser.isNotParsableNumber(noCommas)) {
76
+ return NewTableColumnTypes.STRING;
77
+ }
168
78
 
169
- }, {
170
- key: "isNotParsableNumber",
171
- value: function isNotParsableNumber(s) {
172
- return isNaN(s) || s === 'Infinity' || s === '-Infinity';
79
+ if (noCommas.includes('.')) {
80
+ return NewTableColumnTypes.DOUBLE;
173
81
  }
174
- }, {
175
- key: "checkInteger",
176
- value: function checkInteger(value) {
177
- var noCommas = value.replace(/,/g, '');
178
82
 
179
- if (CsvTypeParser.isNotParsableNumber(noCommas)) {
180
- return NewTableColumnTypes.STRING;
181
- }
83
+ return NewTableColumnTypes.LONG;
84
+ }
182
85
 
183
- return CsvTypeParser.getNumberType(noCommas);
86
+ static checkDouble(value) {
87
+ var noCommas = value.replace(/,/g, '');
88
+
89
+ if (CsvTypeParser.isNotParsableNumber(noCommas)) {
90
+ return NewTableColumnTypes.STRING;
184
91
  }
185
- }, {
186
- key: "checkLong",
187
- value: function checkLong(value) {
188
- var noCommas = value.replace(/,/g, '');
189
92
 
190
- if (CsvTypeParser.isNotParsableNumber(noCommas)) {
191
- return NewTableColumnTypes.STRING;
192
- }
93
+ return NewTableColumnTypes.DOUBLE;
94
+ }
193
95
 
194
- if (noCommas.includes('.')) {
195
- return NewTableColumnTypes.DOUBLE;
196
- }
96
+ static checkBoolean(value) {
97
+ var lower = value.toLowerCase();
197
98
 
198
- return NewTableColumnTypes.LONG;
99
+ if (lower === 'true' || lower === 'false') {
100
+ return NewTableColumnTypes.BOOLEAN;
199
101
  }
200
- }, {
201
- key: "checkDouble",
202
- value: function checkDouble(value) {
203
- var noCommas = value.replace(/,/g, '');
204
102
 
205
- if (CsvTypeParser.isNotParsableNumber(noCommas)) {
206
- return NewTableColumnTypes.STRING;
207
- }
103
+ return NewTableColumnTypes.STRING;
104
+ }
208
105
 
209
- return NewTableColumnTypes.DOUBLE;
106
+ static checkDateTime(value) {
107
+ if (DATE_TIME_REGEX.test(value)) {
108
+ return NewTableColumnTypes.DATE_TIME;
109
+ }
110
+
111
+ return NewTableColumnTypes.STRING;
112
+ }
113
+
114
+ static checkLocalTime(value) {
115
+ if (LOCAL_TIME_REGEX.test(value)) {
116
+ return NewTableColumnTypes.LOCAL_TIME;
210
117
  }
211
- }, {
212
- key: "checkBoolean",
213
- value: function checkBoolean(value) {
118
+
119
+ return NewTableColumnTypes.STRING;
120
+ }
121
+
122
+ static getTypeFromUnknown(value) {
123
+ var noCommas = value.replace(/,/g, '');
124
+
125
+ if (CsvTypeParser.isNotParsableNumber(noCommas)) {
214
126
  var lower = value.toLowerCase();
215
127
 
216
128
  if (lower === 'true' || lower === 'false') {
217
129
  return NewTableColumnTypes.BOOLEAN;
218
130
  }
219
131
 
220
- return NewTableColumnTypes.STRING;
221
- }
222
- }, {
223
- key: "checkDateTime",
224
- value: function checkDateTime(value) {
225
- if (DATE_TIME_REGEX.test(value)) {
132
+ if (DATE_TIME_REGEX.test(value) && value.includes(':')) {
226
133
  return NewTableColumnTypes.DATE_TIME;
227
134
  }
228
135
 
229
- return NewTableColumnTypes.STRING;
230
- }
231
- }, {
232
- key: "checkLocalTime",
233
- value: function checkLocalTime(value) {
234
136
  if (LOCAL_TIME_REGEX.test(value)) {
235
137
  return NewTableColumnTypes.LOCAL_TIME;
236
138
  }
237
139
 
238
140
  return NewTableColumnTypes.STRING;
239
141
  }
240
- }, {
241
- key: "getTypeFromUnknown",
242
- value: function getTypeFromUnknown(value) {
243
- var noCommas = value.replace(/,/g, '');
244
142
 
245
- if (CsvTypeParser.isNotParsableNumber(noCommas)) {
246
- var lower = value.toLowerCase();
143
+ return CsvTypeParser.getNumberType(noCommas);
144
+ }
247
145
 
248
- if (lower === 'true' || lower === 'false') {
249
- return NewTableColumnTypes.BOOLEAN;
250
- }
146
+ static getNumberType(value) {
147
+ if (value.includes('.')) {
148
+ return NewTableColumnTypes.DOUBLE;
149
+ } // Fast length check
251
150
 
252
- if (DATE_TIME_REGEX.test(value) && value.includes(':')) {
253
- return NewTableColumnTypes.DATE_TIME;
254
- }
255
151
 
256
- if (LOCAL_TIME_REGEX.test(value)) {
257
- return NewTableColumnTypes.LOCAL_TIME;
258
- }
152
+ var maxIntLength = value.startsWith('-') ? 11 : 10;
259
153
 
260
- return NewTableColumnTypes.STRING;
261
- }
154
+ if (value.length > maxIntLength) {
155
+ return NewTableColumnTypes.LONG;
156
+ } // Slower parseInt check
262
157
 
263
- return CsvTypeParser.getNumberType(noCommas);
158
+
159
+ var intValue = parseInt(value, 10);
160
+
161
+ if (intValue > MAX_INT || intValue < MIN_INT) {
162
+ return NewTableColumnTypes.LONG;
264
163
  }
265
- }, {
266
- key: "getNumberType",
267
- value: function getNumberType(value) {
268
- if (value.includes('.')) {
269
- return NewTableColumnTypes.DOUBLE;
270
- } // Fast length check
271
164
 
165
+ return NewTableColumnTypes.INTEGER;
166
+ }
272
167
 
273
- var maxIntLength = value.startsWith('-') ? 11 : 10;
168
+ constructor(onFileCompleted, file, readHeaders, parentConfig, nullString, onProgress, onError, totalChunks, isZip, shouldTrim) {
169
+ this.onFileCompleted = onFileCompleted;
170
+ this.file = file;
171
+ this.readHeaders = readHeaders;
172
+ this.nullString = nullString;
173
+ this.onProgress = onProgress;
174
+ this.onError = onError;
175
+ this.types = null;
176
+ this.chunks = 0;
177
+ this.totalChunks = totalChunks;
178
+ this.isZip = isZip;
179
+ this.shouldTrim = shouldTrim;
180
+ this.zipProgress = 0;
181
+ this.handleChunk = this.handleChunk.bind(this);
182
+ this.handleComplete = this.handleComplete.bind(this);
183
+ this.handleError = this.handleError.bind(this);
184
+ this.handleNodeUpdate = this.handleNodeUpdate.bind(this);
185
+ this.config = _objectSpread(_objectSpread({}, parentConfig), {}, {
186
+ error: this.handleError,
187
+ chunk: this.handleChunk,
188
+ complete: this.handleComplete
189
+ });
190
+ }
274
191
 
275
- if (value.length > maxIntLength) {
276
- return NewTableColumnTypes.LONG;
277
- } // Slower parseInt check
192
+ parse() {
193
+ var toParse = this.isZip ? this.file.nodeStream('nodebuffer', this.handleNodeUpdate) : this.file;
194
+ Papa.parse(toParse, this.config);
195
+ }
196
+
197
+ handleChunk(result, parser) {
198
+ var {
199
+ data
200
+ } = result;
278
201
 
202
+ if (!this.types) {
203
+ if (!data || data.length === 0) {
204
+ parser.abort();
205
+ this.onError('Error parsing CSV: no data in file.');
206
+ return;
207
+ }
279
208
 
280
- var intValue = parseInt(value, 10);
209
+ this.types = new Array(data[0].length).fill(UNKNOWN);
281
210
 
282
- if (intValue > MAX_INT || intValue < MIN_INT) {
283
- return NewTableColumnTypes.LONG;
211
+ if (this.readHeaders) {
212
+ // If headers are being read from the file, remove them from type analysis
213
+ data = data.slice(1);
284
214
  }
215
+ }
285
216
 
286
- return NewTableColumnTypes.INTEGER;
217
+ data.forEach(row => {
218
+ if (row.length >= this.types.length) {
219
+ for (var i = 0; i < this.types.length; i += 1) {
220
+ this.types[i] = CsvTypeParser.determineType(this.shouldTrim ? row[i].trim() : row[i], this.types[i], this.nullString);
221
+ }
222
+ } else {
223
+ parser.abort();
224
+ this.onError("Error parsing CSV: Insufficient data in row.\nExpected length ".concat(this.types.length, " but found ").concat(row.length, ".\nRow = ").concat(row));
225
+ }
226
+ });
227
+ this.chunks += 1; // 50 because the type parsing accounts for 50% of the parsing
228
+
229
+ var progress = 0;
230
+
231
+ if (this.totalChunks > 0) {
232
+ progress = Math.round(this.chunks / this.totalChunks * 50);
233
+ } else {
234
+ progress = Math.round(this.zipProgress / 2);
235
+ }
236
+
237
+ var isCancelled = this.onProgress(progress);
238
+
239
+ if (isCancelled) {
240
+ parser.abort();
241
+ }
242
+ }
243
+
244
+ handleComplete(results) {
245
+ var {
246
+ types,
247
+ onFileCompleted
248
+ } = this; // results is undefined for a succesful parse, but has meta data for an abort
249
+
250
+ if (!results || !results.meta.aborted) {
251
+ onFileCompleted(types.map(type => type === UNKNOWN ? NewTableColumnTypes.STRING : type));
287
252
  }
288
- }]);
253
+ }
254
+
255
+ handleError(error) {
256
+ var {
257
+ onError
258
+ } = this;
259
+ onError(error);
260
+ }
261
+
262
+ handleNodeUpdate(metadata) {
263
+ this.zipProgress = metadata.percent;
264
+ }
289
265
 
290
- return CsvTypeParser;
291
- }();
266
+ }
292
267
 
293
268
  export default CsvTypeParser;
294
269
  //# sourceMappingURL=CsvTypeParser.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/csv/CsvTypeParser.js"],"names":["Papa","NewTableColumnTypes","UNKNOWN","MAX_INT","MIN_INT","DATE_TIME_REGEX","LOCAL_TIME_REGEX","CsvTypeParser","onFileCompleted","file","readHeaders","parentConfig","nullString","onProgress","onError","totalChunks","isZip","shouldTrim","types","chunks","zipProgress","handleChunk","bind","handleComplete","handleError","handleNodeUpdate","config","error","chunk","complete","toParse","nodeStream","parse","result","parser","data","length","abort","Array","fill","slice","forEach","row","i","determineType","trim","progress","Math","round","isCancelled","results","meta","aborted","map","type","STRING","metadata","percent","value","INTEGER","checkInteger","LONG","checkLong","DOUBLE","checkDouble","BOOLEAN","checkBoolean","DATE_TIME","checkDateTime","LOCAL_TIME","checkLocalTime","getTypeFromUnknown","s","isNaN","noCommas","replace","isNotParsableNumber","getNumberType","includes","lower","toLowerCase","test","maxIntLength","startsWith","intValue","parseInt"],"mappings":"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","sourcesContent":["// Intentionally using isNaN rather than Number.isNaN\n/* eslint-disable no-restricted-globals */\nimport Papa from 'papaparse';\nimport NewTableColumnTypes from './NewTableColumnTypes';\n\n// Initially column types start al unknown\nconst UNKNOWN = 'unknown';\n\nconst MAX_INT = 2147483647;\nconst MIN_INT = -2147483648;\n\nconst DATE_TIME_REGEX = /^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/;\nconst LOCAL_TIME_REGEX = /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\\.[0-9]{1,9})?$/;\n\n/**\n * Determines the type of each column in a CSV file by parsing it and looking at every value.\n */\nclass CsvTypeParser {\n static determineType(value, type, nullString) {\n if (!value || value === nullString) {\n // A null tells us nothing about the type\n return type;\n }\n\n switch (type) {\n case NewTableColumnTypes.STRING:\n // Strings never get promoted\n return NewTableColumnTypes.STRING;\n case NewTableColumnTypes.INTEGER:\n return CsvTypeParser.checkInteger(value);\n case NewTableColumnTypes.LONG:\n return CsvTypeParser.checkLong(value);\n case NewTableColumnTypes.DOUBLE:\n return CsvTypeParser.checkDouble(value);\n case NewTableColumnTypes.BOOLEAN:\n return CsvTypeParser.checkBoolean(value);\n case NewTableColumnTypes.DATE_TIME:\n return CsvTypeParser.checkDateTime(value);\n case NewTableColumnTypes.LOCAL_TIME:\n return CsvTypeParser.checkLocalTime(value);\n default:\n return CsvTypeParser.getTypeFromUnknown(value);\n }\n }\n\n // Allows for cusomt rules in addition to isNaN\n static isNotParsableNumber(s) {\n return isNaN(s) || s === 'Infinity' || s === '-Infinity';\n }\n\n static checkInteger(value) {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static checkLong(value) {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n if (noCommas.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n return NewTableColumnTypes.LONG;\n }\n\n static checkDouble(value) {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return NewTableColumnTypes.DOUBLE;\n }\n\n static checkBoolean(value) {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n return NewTableColumnTypes.STRING;\n }\n\n static checkDateTime(value) {\n if (DATE_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static checkLocalTime(value) {\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static getTypeFromUnknown(value) {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n\n if (DATE_TIME_REGEX.test(value) && value.includes(':')) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static getNumberType(value) {\n if (value.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n // Fast length check\n const maxIntLength = value.startsWith('-') ? 11 : 10;\n if (value.length > maxIntLength) {\n return NewTableColumnTypes.LONG;\n }\n\n // Slower parseInt check\n const intValue = parseInt(value, 10);\n if (intValue > MAX_INT || intValue < MIN_INT) {\n return NewTableColumnTypes.LONG;\n }\n\n return NewTableColumnTypes.INTEGER;\n }\n\n constructor(\n onFileCompleted,\n file,\n readHeaders,\n parentConfig,\n nullString,\n onProgress,\n onError,\n totalChunks,\n isZip,\n shouldTrim\n ) {\n this.onFileCompleted = onFileCompleted;\n this.file = file;\n this.readHeaders = readHeaders;\n this.nullString = nullString;\n this.onProgress = onProgress;\n this.onError = onError;\n this.types = null;\n this.chunks = 0;\n this.totalChunks = totalChunks;\n this.isZip = isZip;\n this.shouldTrim = shouldTrim;\n this.zipProgress = 0;\n\n this.handleChunk = this.handleChunk.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n\n this.config = {\n ...parentConfig,\n error: this.handleError,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n };\n }\n\n parse() {\n const toParse = this.isZip\n ? this.file.nodeStream('nodebuffer', this.handleNodeUpdate)\n : this.file;\n Papa.parse(toParse, this.config);\n }\n\n handleChunk(result, parser) {\n let { data } = result;\n if (!this.types) {\n if (!data || data.length === 0) {\n parser.abort();\n this.onError('Error parsing CSV: no data in file.');\n return;\n }\n this.types = new Array(data[0].length).fill(UNKNOWN);\n if (this.readHeaders) {\n // If headers are being read from the file, remove them from type analysis\n data = data.slice(1);\n }\n }\n\n data.forEach(row => {\n if (row.length >= this.types.length) {\n for (let i = 0; i < this.types.length; i += 1) {\n this.types[i] = CsvTypeParser.determineType(\n this.shouldTrim ? row[i].trim() : row[i],\n this.types[i],\n this.nullString\n );\n }\n } else {\n parser.abort();\n this.onError(\n `Error parsing CSV: Insufficient data in row.\\nExpected length ${this.types.length} but found ${row.length}.\\nRow = ${row}`\n );\n }\n });\n\n this.chunks += 1;\n // 50 because the type parsing accounts for 50% of the parsing\n let progress = 0;\n if (this.totalChunks > 0) {\n progress = Math.round((this.chunks / this.totalChunks) * 50);\n } else {\n progress = Math.round(this.zipProgress / 2);\n }\n const isCancelled = this.onProgress(progress);\n if (isCancelled) {\n parser.abort();\n }\n }\n\n handleComplete(results) {\n const { types, onFileCompleted } = this;\n // results is undefined for a succesful parse, but has meta data for an abort\n if (!results || !results.meta.aborted) {\n onFileCompleted(\n types.map(type =>\n type === UNKNOWN ? NewTableColumnTypes.STRING : type\n )\n );\n }\n }\n\n handleError(error) {\n const { onError } = this;\n onError(error);\n }\n\n handleNodeUpdate(metadata) {\n this.zipProgress = metadata.percent;\n }\n}\n\nexport default CsvTypeParser;\n"],"file":"CsvTypeParser.js"}
1
+ {"version":3,"sources":["../../src/csv/CsvTypeParser.js"],"names":["Papa","NewTableColumnTypes","UNKNOWN","MAX_INT","MIN_INT","DATE_TIME_REGEX","LOCAL_TIME_REGEX","CsvTypeParser","determineType","value","type","nullString","STRING","INTEGER","checkInteger","LONG","checkLong","DOUBLE","checkDouble","BOOLEAN","checkBoolean","DATE_TIME","checkDateTime","LOCAL_TIME","checkLocalTime","getTypeFromUnknown","isNotParsableNumber","s","isNaN","noCommas","replace","getNumberType","includes","lower","toLowerCase","test","maxIntLength","startsWith","length","intValue","parseInt","constructor","onFileCompleted","file","readHeaders","parentConfig","onProgress","onError","totalChunks","isZip","shouldTrim","types","chunks","zipProgress","handleChunk","bind","handleComplete","handleError","handleNodeUpdate","config","error","chunk","complete","parse","toParse","nodeStream","result","parser","data","abort","Array","fill","slice","forEach","row","i","trim","progress","Math","round","isCancelled","results","meta","aborted","map","metadata","percent"],"mappings":"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","sourcesContent":["// Intentionally using isNaN rather than Number.isNaN\n/* eslint-disable no-restricted-globals */\nimport Papa from 'papaparse';\nimport NewTableColumnTypes from './NewTableColumnTypes';\n\n// Initially column types start al unknown\nconst UNKNOWN = 'unknown';\n\nconst MAX_INT = 2147483647;\nconst MIN_INT = -2147483648;\n\nconst DATE_TIME_REGEX = /^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/;\nconst LOCAL_TIME_REGEX = /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\\.[0-9]{1,9})?$/;\n\n/**\n * Determines the type of each column in a CSV file by parsing it and looking at every value.\n */\nclass CsvTypeParser {\n static determineType(value, type, nullString) {\n if (!value || value === nullString) {\n // A null tells us nothing about the type\n return type;\n }\n\n switch (type) {\n case NewTableColumnTypes.STRING:\n // Strings never get promoted\n return NewTableColumnTypes.STRING;\n case NewTableColumnTypes.INTEGER:\n return CsvTypeParser.checkInteger(value);\n case NewTableColumnTypes.LONG:\n return CsvTypeParser.checkLong(value);\n case NewTableColumnTypes.DOUBLE:\n return CsvTypeParser.checkDouble(value);\n case NewTableColumnTypes.BOOLEAN:\n return CsvTypeParser.checkBoolean(value);\n case NewTableColumnTypes.DATE_TIME:\n return CsvTypeParser.checkDateTime(value);\n case NewTableColumnTypes.LOCAL_TIME:\n return CsvTypeParser.checkLocalTime(value);\n default:\n return CsvTypeParser.getTypeFromUnknown(value);\n }\n }\n\n // Allows for cusomt rules in addition to isNaN\n static isNotParsableNumber(s) {\n return isNaN(s) || s === 'Infinity' || s === '-Infinity';\n }\n\n static checkInteger(value) {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static checkLong(value) {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n if (noCommas.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n return NewTableColumnTypes.LONG;\n }\n\n static checkDouble(value) {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return NewTableColumnTypes.DOUBLE;\n }\n\n static checkBoolean(value) {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n return NewTableColumnTypes.STRING;\n }\n\n static checkDateTime(value) {\n if (DATE_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static checkLocalTime(value) {\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static getTypeFromUnknown(value) {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n\n if (DATE_TIME_REGEX.test(value) && value.includes(':')) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static getNumberType(value) {\n if (value.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n // Fast length check\n const maxIntLength = value.startsWith('-') ? 11 : 10;\n if (value.length > maxIntLength) {\n return NewTableColumnTypes.LONG;\n }\n\n // Slower parseInt check\n const intValue = parseInt(value, 10);\n if (intValue > MAX_INT || intValue < MIN_INT) {\n return NewTableColumnTypes.LONG;\n }\n\n return NewTableColumnTypes.INTEGER;\n }\n\n constructor(\n onFileCompleted,\n file,\n readHeaders,\n parentConfig,\n nullString,\n onProgress,\n onError,\n totalChunks,\n isZip,\n shouldTrim\n ) {\n this.onFileCompleted = onFileCompleted;\n this.file = file;\n this.readHeaders = readHeaders;\n this.nullString = nullString;\n this.onProgress = onProgress;\n this.onError = onError;\n this.types = null;\n this.chunks = 0;\n this.totalChunks = totalChunks;\n this.isZip = isZip;\n this.shouldTrim = shouldTrim;\n this.zipProgress = 0;\n\n this.handleChunk = this.handleChunk.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n\n this.config = {\n ...parentConfig,\n error: this.handleError,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n };\n }\n\n parse() {\n const toParse = this.isZip\n ? this.file.nodeStream('nodebuffer', this.handleNodeUpdate)\n : this.file;\n Papa.parse(toParse, this.config);\n }\n\n handleChunk(result, parser) {\n let { data } = result;\n if (!this.types) {\n if (!data || data.length === 0) {\n parser.abort();\n this.onError('Error parsing CSV: no data in file.');\n return;\n }\n this.types = new Array(data[0].length).fill(UNKNOWN);\n if (this.readHeaders) {\n // If headers are being read from the file, remove them from type analysis\n data = data.slice(1);\n }\n }\n\n data.forEach(row => {\n if (row.length >= this.types.length) {\n for (let i = 0; i < this.types.length; i += 1) {\n this.types[i] = CsvTypeParser.determineType(\n this.shouldTrim ? row[i].trim() : row[i],\n this.types[i],\n this.nullString\n );\n }\n } else {\n parser.abort();\n this.onError(\n `Error parsing CSV: Insufficient data in row.\\nExpected length ${this.types.length} but found ${row.length}.\\nRow = ${row}`\n );\n }\n });\n\n this.chunks += 1;\n // 50 because the type parsing accounts for 50% of the parsing\n let progress = 0;\n if (this.totalChunks > 0) {\n progress = Math.round((this.chunks / this.totalChunks) * 50);\n } else {\n progress = Math.round(this.zipProgress / 2);\n }\n const isCancelled = this.onProgress(progress);\n if (isCancelled) {\n parser.abort();\n }\n }\n\n handleComplete(results) {\n const { types, onFileCompleted } = this;\n // results is undefined for a succesful parse, but has meta data for an abort\n if (!results || !results.meta.aborted) {\n onFileCompleted(\n types.map(type =>\n type === UNKNOWN ? NewTableColumnTypes.STRING : type\n )\n );\n }\n }\n\n handleError(error) {\n const { onError } = this;\n onError(error);\n }\n\n handleNodeUpdate(metadata) {\n this.zipProgress = metadata.percent;\n }\n}\n\nexport default CsvTypeParser;\n"],"file":"CsvTypeParser.js"}
@@ -1,13 +1,9 @@
1
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2
-
3
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
2
 
5
3
  /**
6
4
  * Valid column types to be used for a call to newTable.
7
5
  */
8
- var NewTableColumnTypes = function NewTableColumnTypes() {
9
- _classCallCheck(this, NewTableColumnTypes);
10
- };
6
+ class NewTableColumnTypes {}
11
7
 
12
8
  _defineProperty(NewTableColumnTypes, "INTEGER", 'int');
13
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/csv/NewTableColumnTypes.js"],"names":["NewTableColumnTypes"],"mappings":";;;;AAAA;AACA;AACA;IACMA,mB;;;;gBAAAA,mB,aACa,K;;gBADbA,mB,UAGU,M;;gBAHVA,mB,YAKY,Q;;gBALZA,mB,aAOa,M;;gBAPbA,mB,YASY,Q;;gBATZA,mB,eAWe,U;;gBAXfA,mB,gBAagB,W;;AAGtB,eAAeA,mBAAf","sourcesContent":["/**\n * Valid column types to be used for a call to newTable.\n */\nclass NewTableColumnTypes {\n static INTEGER = 'int';\n\n static LONG = 'long';\n\n static DOUBLE = 'double';\n\n static BOOLEAN = 'bool';\n\n static STRING = 'string';\n\n static DATE_TIME = 'datetime';\n\n static LOCAL_TIME = 'localtime';\n}\n\nexport default NewTableColumnTypes;\n"],"file":"NewTableColumnTypes.js"}
1
+ {"version":3,"sources":["../../src/csv/NewTableColumnTypes.js"],"names":["NewTableColumnTypes"],"mappings":";;AAAA;AACA;AACA;AACA,MAAMA,mBAAN,CAA0B;;gBAApBA,mB,aACa,K;;gBADbA,mB,UAGU,M;;gBAHVA,mB,YAKY,Q;;gBALZA,mB,aAOa,M;;gBAPbA,mB,YASY,Q;;gBATZA,mB,eAWe,U;;gBAXfA,mB,gBAagB,W;;AAGtB,eAAeA,mBAAf","sourcesContent":["/**\n * Valid column types to be used for a call to newTable.\n */\nclass NewTableColumnTypes {\n static INTEGER = 'int';\n\n static LONG = 'long';\n\n static DOUBLE = 'double';\n\n static BOOLEAN = 'bool';\n\n static STRING = 'string';\n\n static DATE_TIME = 'datetime';\n\n static LOCAL_TIME = 'localtime';\n}\n\nexport default NewTableColumnTypes;\n"],"file":"NewTableColumnTypes.js"}
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
- export { default as Console } from './Console';
2
- export { default as ConsoleInput } from './ConsoleInput';
3
- export { default as ConsoleMenu } from './ConsoleMenu';
4
- export { default as SHORTCUTS } from './ConsoleShortcuts';
5
- export { default as ConsoleStatusBar } from './ConsoleStatusBar';
6
- export { default as MonacoUtils } from './monaco/MonacoUtils';
7
- export { default as Editor } from './notebook/Editor';
8
- export { default as ScriptEditor } from './notebook/ScriptEditor';
9
- export { default as ScriptEditorUtils } from './notebook/ScriptEditorUtils';
10
- export * from './common';
11
- export * from './command-history';
12
- export * from './console-history';
13
- export { default as LogView } from './log/LogView';
14
- export { default } from './Console';
1
+ export { default as Console } from "./Console.js";
2
+ export { default as ConsoleInput } from "./ConsoleInput.js";
3
+ export { default as ConsoleMenu } from "./ConsoleMenu.js";
4
+ export { default as SHORTCUTS } from "./ConsoleShortcuts.js";
5
+ export { default as ConsoleStatusBar } from "./ConsoleStatusBar.js";
6
+ export { default as MonacoUtils } from "./monaco/MonacoUtils.js";
7
+ export { default as Editor } from "./notebook/Editor.js";
8
+ export { default as ScriptEditor } from "./notebook/ScriptEditor.js";
9
+ export { default as ScriptEditorUtils } from "./notebook/ScriptEditorUtils.js";
10
+ export * from "./common/index.js";
11
+ export * from "./command-history/index.js";
12
+ export * from "./console-history/index.js";
13
+ export { default as LogView } from "./log/LogView.js";
14
+ export { default } from "./Console.js";
15
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["default","Console","ConsoleInput","ConsoleMenu","SHORTCUTS","ConsoleStatusBar","MonacoUtils","Editor","ScriptEditor","ScriptEditorUtils","LogView"],"mappings":"AAAA,SAASA,OAAO,IAAIC,OAApB,QAAmC,WAAnC;AACA,SAASD,OAAO,IAAIE,YAApB,QAAwC,gBAAxC;AACA,SAASF,OAAO,IAAIG,WAApB,QAAuC,eAAvC;AACA,SAASH,OAAO,IAAII,SAApB,QAAqC,oBAArC;AACA,SAASJ,OAAO,IAAIK,gBAApB,QAA4C,oBAA5C;AACA,SAASL,OAAO,IAAIM,WAApB,QAAuC,sBAAvC;AACA,SAASN,OAAO,IAAIO,MAApB,QAAkC,mBAAlC;AACA,SAASP,OAAO,IAAIQ,YAApB,QAAwC,yBAAxC;AACA,SAASR,OAAO,IAAIS,iBAApB,QAA6C,8BAA7C;AACA,cAAc,UAAd;AACA,cAAc,mBAAd;AACA,cAAc,mBAAd;AACA,SAAST,OAAO,IAAIU,OAApB,QAAmC,eAAnC;AAEA,SAASV,OAAT,QAAwB,WAAxB","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';\n\nexport { default } from './Console';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"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;SAEXV,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';\n\nexport { default } from './Console';\n"],"file":"index.js"}