sqlite-wasm-viewer 1.0.7 → 1.0.9
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/README.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -98,9 +98,13 @@ function showViewer() {
|
|
|
98
98
|
dbs[message.data.dbName].tables = tables;
|
|
99
99
|
(_explorerView = explorerView) === null || _explorerView === void 0 ? void 0 : _explorerView.addDatabaseItem(dbs[message.data.dbName]);
|
|
100
100
|
} else if (message.data.type === 'onQuery') {
|
|
101
|
-
if (message.data.label === '
|
|
101
|
+
if (message.data.label === 'tableViewColumns') {
|
|
102
102
|
var _tableViewer;
|
|
103
|
-
(_tableViewer = tableViewer) === null || _tableViewer === void 0 ? void 0 : _tableViewer.
|
|
103
|
+
(_tableViewer = tableViewer) === null || _tableViewer === void 0 ? void 0 : _tableViewer.setTableColumns(message.data.result.resultRows || []);
|
|
104
|
+
}
|
|
105
|
+
if (message.data.label === 'tableView') {
|
|
106
|
+
var _tableViewer2;
|
|
107
|
+
(_tableViewer2 = tableViewer) === null || _tableViewer2 === void 0 ? void 0 : _tableViewer2.setTableResults(message.data.result.resultRows || []);
|
|
104
108
|
}
|
|
105
109
|
}
|
|
106
110
|
};
|
|
@@ -13,6 +13,7 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
|
|
|
13
13
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
14
14
|
var SqlLogView = /*#__PURE__*/function () {
|
|
15
15
|
function SqlLogView(rootEl, queryRunner) {
|
|
16
|
+
var _this = this;
|
|
16
17
|
_classCallCheck(this, SqlLogView);
|
|
17
18
|
queryRunner.addListener(this.handleQueryRun.bind(this));
|
|
18
19
|
var container = document.createElement('div');
|
|
@@ -20,6 +21,13 @@ var SqlLogView = /*#__PURE__*/function () {
|
|
|
20
21
|
var header = document.createElement('div');
|
|
21
22
|
header.className = 'viewHeader';
|
|
22
23
|
header.innerText = 'SQL Log';
|
|
24
|
+
var clearBtn = document.createElement('button');
|
|
25
|
+
clearBtn.style.marginLeft = 'auto';
|
|
26
|
+
clearBtn.innerText = 'Clear';
|
|
27
|
+
clearBtn.onclick = function () {
|
|
28
|
+
_this.textArea.value = '';
|
|
29
|
+
};
|
|
30
|
+
header.appendChild(clearBtn);
|
|
23
31
|
container.appendChild(header);
|
|
24
32
|
this.textArea = document.createElement('textarea');
|
|
25
33
|
this.textArea.id = 'query_log_text';
|
|
@@ -7,6 +7,7 @@ exports.TableView = void 0;
|
|
|
7
7
|
var _viewerState = require("../../viewerState");
|
|
8
8
|
var _ListVirtualizer = require("../../ListVirtualizer");
|
|
9
9
|
require("./styles.css");
|
|
10
|
+
var _TableViewModel = require("./TableViewModel");
|
|
10
11
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
11
12
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
12
13
|
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, _toPropertyKey(descriptor.key), descriptor); } }
|
|
@@ -18,14 +19,12 @@ var TableView = /*#__PURE__*/function () {
|
|
|
18
19
|
function TableView(viewerElem, rootElement, queryRunner) {
|
|
19
20
|
var _this = this;
|
|
20
21
|
_classCallCheck(this, TableView);
|
|
21
|
-
_defineProperty(this, "columnNames", []);
|
|
22
|
-
_defineProperty(this, "fitlers", {});
|
|
23
22
|
_defineProperty(this, "updateTimer", null);
|
|
24
|
-
_defineProperty(this, "selectedCell", null);
|
|
25
23
|
this.viewerElem = viewerElem;
|
|
26
24
|
this.rootElement = rootElement;
|
|
27
25
|
this.queryRunner = queryRunner;
|
|
28
26
|
this.buildDomTemplate();
|
|
27
|
+
this.model = new _TableViewModel.TableViewModel();
|
|
29
28
|
this.viewerElem.addEventListener('tableSelected', function (event) {
|
|
30
29
|
var selectedTable = event.detail;
|
|
31
30
|
_this.setTable(selectedTable.tableName);
|
|
@@ -39,7 +38,7 @@ var TableView = /*#__PURE__*/function () {
|
|
|
39
38
|
container: this.container,
|
|
40
39
|
generatorFn: function generatorFn(i) {
|
|
41
40
|
var _row$rowid;
|
|
42
|
-
var row = _this.rows[i];
|
|
41
|
+
var row = _this.model.rows[i];
|
|
43
42
|
if (!row) {
|
|
44
43
|
return null;
|
|
45
44
|
}
|
|
@@ -66,11 +65,11 @@ var TableView = /*#__PURE__*/function () {
|
|
|
66
65
|
columnName: columnKey,
|
|
67
66
|
tableName: ((_ViewerState$instance = _viewerState.ViewerState.instance.selectedTable) === null || _ViewerState$instance === void 0 ? void 0 : _ViewerState$instance.tableName) || ''
|
|
68
67
|
});
|
|
69
|
-
if (_this.selectedCell) {
|
|
70
|
-
_this.selectedCell.classList.remove('selected');
|
|
68
|
+
if (_this.model.selectedCell) {
|
|
69
|
+
_this.model.selectedCell.classList.remove('selected');
|
|
71
70
|
}
|
|
72
71
|
td.classList.add('selected');
|
|
73
|
-
_this.selectedCell = td;
|
|
72
|
+
_this.model.selectedCell = td;
|
|
74
73
|
};
|
|
75
74
|
td.appendChild(contentEl);
|
|
76
75
|
tr.appendChild(td);
|
|
@@ -83,11 +82,18 @@ var TableView = /*#__PURE__*/function () {
|
|
|
83
82
|
_createClass(TableView, [{
|
|
84
83
|
key: "setTableResults",
|
|
85
84
|
value: function setTableResults(rows) {
|
|
86
|
-
this.rows = rows;
|
|
87
|
-
this.viewHeaderTitle.innerHTML = this.tableName;
|
|
88
|
-
this.buildHeader(rows);
|
|
85
|
+
this.model.rows = rows;
|
|
86
|
+
this.viewHeaderTitle.innerHTML = this.model.tableName;
|
|
89
87
|
this.virtualizer.setRowCount(rows.length);
|
|
90
88
|
}
|
|
89
|
+
}, {
|
|
90
|
+
key: "setTableColumns",
|
|
91
|
+
value: function setTableColumns(columns) {
|
|
92
|
+
this.model.columnNames = columns.map(function (column) {
|
|
93
|
+
return column.name;
|
|
94
|
+
});
|
|
95
|
+
this.buildHeader();
|
|
96
|
+
}
|
|
91
97
|
}, {
|
|
92
98
|
key: "buildDomTemplate",
|
|
93
99
|
value: function buildDomTemplate() {
|
|
@@ -100,7 +106,7 @@ var TableView = /*#__PURE__*/function () {
|
|
|
100
106
|
var updateBtn = document.createElement('button');
|
|
101
107
|
updateBtn.innerText = 'Update';
|
|
102
108
|
updateBtn.onclick = function () {
|
|
103
|
-
_this2.requestRows();
|
|
109
|
+
_this2.requestRows(true);
|
|
104
110
|
};
|
|
105
111
|
this.viewHeader.appendChild(updateBtn);
|
|
106
112
|
var saveBtn = document.createElement('button');
|
|
@@ -140,27 +146,31 @@ var TableView = /*#__PURE__*/function () {
|
|
|
140
146
|
}
|
|
141
147
|
}, {
|
|
142
148
|
key: "buildHeader",
|
|
143
|
-
value: function buildHeader(
|
|
149
|
+
value: function buildHeader() {
|
|
144
150
|
var _this3 = this;
|
|
145
|
-
if (this.columnNames.length
|
|
151
|
+
if (this.model.columnNames.length === 0) {
|
|
146
152
|
return;
|
|
147
153
|
}
|
|
148
|
-
var schema = rows.length > 0 ? Object.keys(rows[0]).filter(function (column) {
|
|
149
|
-
return column !== 'rowid';
|
|
150
|
-
}) : [];
|
|
151
|
-
if (schema.length > 0) {
|
|
152
|
-
this.columnNames = schema;
|
|
153
|
-
}
|
|
154
154
|
this.headerRow.innerHTML = '';
|
|
155
|
-
this.columnNames.forEach(function (column) {
|
|
155
|
+
this.model.columnNames.forEach(function (column) {
|
|
156
156
|
var columnHeader = document.createElement('th');
|
|
157
157
|
columnHeader.className = 'columnHeaderCell';
|
|
158
158
|
columnHeader.innerHTML = column;
|
|
159
159
|
var filterFieldCell = document.createElement('th');
|
|
160
160
|
filterFieldCell.className = 'columnFilterCell';
|
|
161
161
|
var filterField = document.createElement('input');
|
|
162
|
+
if (_this3.model.fitlers[column]) {
|
|
163
|
+
filterField.value = _this3.model.fitlers[column];
|
|
164
|
+
}
|
|
165
|
+
filterField.onkeydown = function (event) {
|
|
166
|
+
if (event.key === 'Escape') {
|
|
167
|
+
filterField.value = '';
|
|
168
|
+
_this3.model.fitlers[column] = '';
|
|
169
|
+
_this3.scheduleUpdate();
|
|
170
|
+
}
|
|
171
|
+
};
|
|
162
172
|
filterField.oninput = function () {
|
|
163
|
-
_this3.fitlers[column] = filterField.value;
|
|
173
|
+
_this3.model.fitlers[column] = filterField.value;
|
|
164
174
|
_this3.scheduleUpdate();
|
|
165
175
|
};
|
|
166
176
|
filterField.placeholder = 'Filter';
|
|
@@ -172,20 +182,27 @@ var TableView = /*#__PURE__*/function () {
|
|
|
172
182
|
}, {
|
|
173
183
|
key: "setTable",
|
|
174
184
|
value: function setTable(name) {
|
|
175
|
-
if (this.tableName === name) {
|
|
185
|
+
if (this.model.tableName === name) {
|
|
176
186
|
return;
|
|
177
187
|
}
|
|
178
|
-
this.tableName = name;
|
|
179
|
-
this.columnNames = [];
|
|
180
|
-
this.fitlers = {};
|
|
181
|
-
this.requestRows();
|
|
188
|
+
this.model.tableName = name;
|
|
189
|
+
this.model.columnNames = [];
|
|
190
|
+
this.model.fitlers = {};
|
|
191
|
+
this.requestRows(true);
|
|
182
192
|
}
|
|
183
193
|
}, {
|
|
184
194
|
key: "requestRows",
|
|
185
|
-
value: function requestRows() {
|
|
186
|
-
|
|
195
|
+
value: function requestRows(refetchColumns) {
|
|
196
|
+
if (refetchColumns) {
|
|
197
|
+
var _sql = "PRAGMA table_info(".concat(this.model.tableName, ");");
|
|
198
|
+
this.queryRunner.runQuery({
|
|
199
|
+
sql: _sql,
|
|
200
|
+
parameters: []
|
|
201
|
+
}, 'tableViewColumns');
|
|
202
|
+
}
|
|
203
|
+
var sql = "SELECT \"_rowid_\",* FROM ".concat(this.model.tableName);
|
|
187
204
|
var filterSql = [];
|
|
188
|
-
Object.entries(this.fitlers).forEach(function (filterEntry) {
|
|
205
|
+
Object.entries(this.model.fitlers).forEach(function (filterEntry) {
|
|
189
206
|
var column = filterEntry[0];
|
|
190
207
|
var filter = filterEntry[1];
|
|
191
208
|
if (filter) {
|
|
@@ -218,7 +235,7 @@ var TableView = /*#__PURE__*/function () {
|
|
|
218
235
|
sql: sql,
|
|
219
236
|
parameters: []
|
|
220
237
|
});
|
|
221
|
-
this.requestRows();
|
|
238
|
+
this.requestRows(true);
|
|
222
239
|
_viewerState.ViewerState.instance.setHasChanges(false);
|
|
223
240
|
}
|
|
224
241
|
}, {
|
|
@@ -229,7 +246,7 @@ var TableView = /*#__PURE__*/function () {
|
|
|
229
246
|
window.clearTimeout(this.updateTimer);
|
|
230
247
|
}
|
|
231
248
|
this.updateTimer = window.setTimeout(function () {
|
|
232
|
-
_this4.requestRows();
|
|
249
|
+
_this4.requestRows(false);
|
|
233
250
|
_this4.updateTimer = null;
|
|
234
251
|
}, 300);
|
|
235
252
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TableViewModel = void 0;
|
|
7
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
8
|
+
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, _toPropertyKey(descriptor.key), descriptor); } }
|
|
9
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
10
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
11
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
13
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
14
|
+
var TableViewModel = /*#__PURE__*/_createClass(function TableViewModel() {
|
|
15
|
+
_classCallCheck(this, TableViewModel);
|
|
16
|
+
_defineProperty(this, "columnNames", []);
|
|
17
|
+
_defineProperty(this, "fitlers", {});
|
|
18
|
+
_defineProperty(this, "selectedCell", null);
|
|
19
|
+
});
|
|
20
|
+
exports.TableViewModel = TableViewModel;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sqlite-wasm-viewer",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "An SQLite OPFS database viewer that enables database inspection and SQL command execution.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -52,4 +52,4 @@
|
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"@sqlite.org/sqlite-wasm": "^3.x.x"
|
|
54
54
|
}
|
|
55
|
-
}
|
|
55
|
+
}
|