@kepler.gl/duckdb 3.1.0-alpha.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/components/index.d.ts +1 -0
- package/dist/components/index.js +17 -0
- package/dist/components/monaco-editor.d.ts +14 -0
- package/dist/components/monaco-editor.js +176 -0
- package/dist/components/preview-data-panel.d.ts +33 -0
- package/dist/components/preview-data-panel.js +138 -0
- package/dist/components/schema-panel.d.ts +4 -0
- package/dist/components/schema-panel.js +150 -0
- package/dist/components/sql-panel.d.ts +6 -0
- package/dist/components/sql-panel.js +199 -0
- package/dist/components/tree.d.ts +28 -0
- package/dist/components/tree.js +90 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +25 -0
- package/dist/init.d.ts +19 -0
- package/dist/init.js +154 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.js +32 -0
- package/dist/processors/data-processor.d.ts +18 -0
- package/dist/processors/data-processor.js +328 -0
- package/dist/table/duckdb-table.d.ts +37 -0
- package/dist/table/duckdb-table.js +443 -0
- package/dist/utils/perf.d.ts +4 -0
- package/dist/utils/perf.js +46 -0
- package/package.json +57 -0
package/dist/init.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.getDuckDB = exports.DEBUG = void 0;
|
|
9
|
+
exports.initializeDuckDb = initializeDuckDb;
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
+
var _duckdbWasm = _interopRequireWildcard(require("@duckdb/duckdb-wasm"));
|
|
13
|
+
var duckdb = _duckdbWasm;
|
|
14
|
+
var _perf = require("./utils/perf");
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
17
|
+
// SPDX-License-Identifier: MIT
|
|
18
|
+
// Copyright contributors to the kepler.gl project
|
|
19
|
+
|
|
20
|
+
// git@github.com:holdenmatt/duckdb-wasm-kit.git
|
|
21
|
+
|
|
22
|
+
var DEBUG;
|
|
23
|
+
var DuckDB;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Initialize DuckDB, ensuring we only initialize it once.
|
|
27
|
+
*
|
|
28
|
+
* @param debug If true, log DuckDB logs and elapsed times to the console.
|
|
29
|
+
* @param config An optional DuckDBConfig object.
|
|
30
|
+
*/
|
|
31
|
+
function initializeDuckDb(_x) {
|
|
32
|
+
return _initializeDuckDb2.apply(this, arguments);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Initialize DuckDB with a browser-specific Wasm bundle.
|
|
36
|
+
*/
|
|
37
|
+
function _initializeDuckDb2() {
|
|
38
|
+
_initializeDuckDb2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(options) {
|
|
39
|
+
var _ref3, _ref3$debug, debug, config;
|
|
40
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
41
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
42
|
+
case 0:
|
|
43
|
+
_ref3 = options || {}, _ref3$debug = _ref3.debug, debug = _ref3$debug === void 0 ? false : _ref3$debug, config = _ref3.config;
|
|
44
|
+
exports.DEBUG = DEBUG = debug;
|
|
45
|
+
if (DuckDB === undefined) {
|
|
46
|
+
DuckDB = _initializeDuckDb(config);
|
|
47
|
+
}
|
|
48
|
+
return _context3.abrupt("return", DuckDB);
|
|
49
|
+
case 4:
|
|
50
|
+
case "end":
|
|
51
|
+
return _context3.stop();
|
|
52
|
+
}
|
|
53
|
+
}, _callee3);
|
|
54
|
+
}));
|
|
55
|
+
return _initializeDuckDb2.apply(this, arguments);
|
|
56
|
+
}
|
|
57
|
+
var _initializeDuckDb = /*#__PURE__*/function () {
|
|
58
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(config) {
|
|
59
|
+
var start, JSDELIVR_BUNDLES, bundle, worker_url, worker, logger, db, res, buffer, fileNameMatch;
|
|
60
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
61
|
+
while (1) switch (_context.prev = _context.next) {
|
|
62
|
+
case 0:
|
|
63
|
+
start = performance.now(); // Select a bundle based on browser checks
|
|
64
|
+
JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles();
|
|
65
|
+
_context.next = 4;
|
|
66
|
+
return duckdb.selectBundle(JSDELIVR_BUNDLES);
|
|
67
|
+
case 4:
|
|
68
|
+
bundle = _context.sent;
|
|
69
|
+
worker_url = URL.createObjectURL(new Blob(["importScripts(\"".concat(bundle.mainWorker, "\");")], {
|
|
70
|
+
type: 'text/javascript'
|
|
71
|
+
})); // Instantiate the async version of DuckDB-wasm
|
|
72
|
+
worker = new Worker(worker_url);
|
|
73
|
+
logger = DEBUG ? new duckdb.ConsoleLogger() : new duckdb.VoidLogger();
|
|
74
|
+
db = new _duckdbWasm.AsyncDuckDB(logger, worker);
|
|
75
|
+
_context.next = 11;
|
|
76
|
+
return db.instantiate(bundle.mainModule, bundle.pthreadWorker);
|
|
77
|
+
case 11:
|
|
78
|
+
URL.revokeObjectURL(worker_url);
|
|
79
|
+
if (!config) {
|
|
80
|
+
_context.next = 26;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
if (!config.path) {
|
|
84
|
+
_context.next = 24;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
_context.next = 16;
|
|
88
|
+
return fetch(config.path);
|
|
89
|
+
case 16:
|
|
90
|
+
res = _context.sent;
|
|
91
|
+
_context.next = 19;
|
|
92
|
+
return res.arrayBuffer();
|
|
93
|
+
case 19:
|
|
94
|
+
buffer = _context.sent;
|
|
95
|
+
fileNameMatch = config.path.match(/[^/]*$/);
|
|
96
|
+
if (fileNameMatch) {
|
|
97
|
+
config.path = fileNameMatch[0];
|
|
98
|
+
}
|
|
99
|
+
_context.next = 24;
|
|
100
|
+
return db.registerFileBuffer(config.path, new Uint8Array(buffer));
|
|
101
|
+
case 24:
|
|
102
|
+
_context.next = 26;
|
|
103
|
+
return db.open(config);
|
|
104
|
+
case 26:
|
|
105
|
+
if (DEBUG) {
|
|
106
|
+
(0, _perf.logElapsedTime)('DuckDB initialized', start);
|
|
107
|
+
if (config) {
|
|
108
|
+
console.debug("DuckDbConfig: ".concat(JSON.stringify(config, null, 2)));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return _context.abrupt("return", db);
|
|
112
|
+
case 28:
|
|
113
|
+
case "end":
|
|
114
|
+
return _context.stop();
|
|
115
|
+
}
|
|
116
|
+
}, _callee);
|
|
117
|
+
}));
|
|
118
|
+
return function _initializeDuckDb(_x2) {
|
|
119
|
+
return _ref.apply(this, arguments);
|
|
120
|
+
};
|
|
121
|
+
}();
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Get the instance of DuckDB, initializing it if needed.
|
|
125
|
+
*
|
|
126
|
+
* Typically `useDuckDB` is used in React components instead, but this
|
|
127
|
+
* method provides access outside of React contexts.
|
|
128
|
+
*/
|
|
129
|
+
var getDuckDB = exports.getDuckDB = /*#__PURE__*/function () {
|
|
130
|
+
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
131
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
132
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
133
|
+
case 0:
|
|
134
|
+
if (!DuckDB) {
|
|
135
|
+
_context2.next = 4;
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
return _context2.abrupt("return", DuckDB);
|
|
139
|
+
case 4:
|
|
140
|
+
_context2.next = 6;
|
|
141
|
+
return initializeDuckDb();
|
|
142
|
+
case 6:
|
|
143
|
+
return _context2.abrupt("return", _context2.sent);
|
|
144
|
+
case 7:
|
|
145
|
+
case "end":
|
|
146
|
+
return _context2.stop();
|
|
147
|
+
}
|
|
148
|
+
}, _callee2);
|
|
149
|
+
}));
|
|
150
|
+
return function getDuckDB() {
|
|
151
|
+
return _ref2.apply(this, arguments);
|
|
152
|
+
};
|
|
153
|
+
}();
|
|
154
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHVja2RiV2FzbSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsImR1Y2tkYiIsIl9wZXJmIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiREVCVUciLCJEdWNrREIiLCJpbml0aWFsaXplRHVja0RiIiwiX3giLCJfaW5pdGlhbGl6ZUR1Y2tEYjIiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlMyIsIm9wdGlvbnMiLCJfcmVmMyIsIl9yZWYzJGRlYnVnIiwiZGVidWciLCJjb25maWciLCJ3cmFwIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwicHJldiIsIm5leHQiLCJleHBvcnRzIiwidW5kZWZpbmVkIiwiX2luaXRpYWxpemVEdWNrRGIiLCJhYnJ1cHQiLCJzdG9wIiwiX3JlZiIsIl9jYWxsZWUiLCJzdGFydCIsIkpTREVMSVZSX0JVTkRMRVMiLCJidW5kbGUiLCJ3b3JrZXJfdXJsIiwid29ya2VyIiwibG9nZ2VyIiwiZGIiLCJyZXMiLCJidWZmZXIiLCJmaWxlTmFtZU1hdGNoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInBlcmZvcm1hbmNlIiwibm93IiwiZ2V0SnNEZWxpdnJCdW5kbGVzIiwic2VsZWN0QnVuZGxlIiwic2VudCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIkJsb2IiLCJjb25jYXQiLCJtYWluV29ya2VyIiwidHlwZSIsIldvcmtlciIsIkNvbnNvbGVMb2dnZXIiLCJWb2lkTG9nZ2VyIiwiQXN5bmNEdWNrREIiLCJpbnN0YW50aWF0ZSIsIm1haW5Nb2R1bGUiLCJwdGhyZWFkV29ya2VyIiwicmV2b2tlT2JqZWN0VVJMIiwicGF0aCIsImZldGNoIiwiYXJyYXlCdWZmZXIiLCJtYXRjaCIsInJlZ2lzdGVyRmlsZUJ1ZmZlciIsIlVpbnQ4QXJyYXkiLCJvcGVuIiwibG9nRWxhcHNlZFRpbWUiLCJjb25zb2xlIiwiSlNPTiIsInN0cmluZ2lmeSIsIl94MiIsImdldER1Y2tEQiIsIl9yZWYyIiwiX2NhbGxlZTIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiXSwic291cmNlcyI6WyIuLi9zcmMvaW5pdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBnaXRAZ2l0aHViLmNvbTpob2xkZW5tYXR0L2R1Y2tkYi13YXNtLWtpdC5naXRcbmltcG9ydCAqIGFzIGR1Y2tkYiBmcm9tICdAZHVja2RiL2R1Y2tkYi13YXNtJztcbmltcG9ydCB7QXN5bmNEdWNrREIsIER1Y2tEQkNvbmZpZ30gZnJvbSAnQGR1Y2tkYi9kdWNrZGItd2FzbSc7XG5pbXBvcnQge2xvZ0VsYXBzZWRUaW1lfSBmcm9tICcuL3V0aWxzL3BlcmYnO1xuXG5leHBvcnQgbGV0IERFQlVHOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5sZXQgRHVja0RCOiBQcm9taXNlPEFzeW5jRHVja0RCPiB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBJbml0aWFsaXplIER1Y2tEQiwgZW5zdXJpbmcgd2Ugb25seSBpbml0aWFsaXplIGl0IG9uY2UuXG4gKlxuICogQHBhcmFtIGRlYnVnIElmIHRydWUsIGxvZyBEdWNrREIgbG9ncyBhbmQgZWxhcHNlZCB0aW1lcyB0byB0aGUgY29uc29sZS5cbiAqIEBwYXJhbSBjb25maWcgQW4gb3B0aW9uYWwgRHVja0RCQ29uZmlnIG9iamVjdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemVEdWNrRGIob3B0aW9ucz86IHtcbiAgZGVidWc/OiBib29sZWFuO1xuICBjb25maWc/OiBEdWNrREJDb25maWc7XG59KTogUHJvbWlzZTxBc3luY0R1Y2tEQj4ge1xuICBjb25zdCB7ZGVidWcgPSBmYWxzZSwgY29uZmlnfSA9IG9wdGlvbnMgfHwge307XG4gIERFQlVHID0gZGVidWc7XG5cbiAgaWYgKER1Y2tEQiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgRHVja0RCID0gX2luaXRpYWxpemVEdWNrRGIoY29uZmlnKTtcbiAgfVxuICByZXR1cm4gRHVja0RCO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgRHVja0RCIHdpdGggYSBicm93c2VyLXNwZWNpZmljIFdhc20gYnVuZGxlLlxuICovXG5jb25zdCBfaW5pdGlhbGl6ZUR1Y2tEYiA9IGFzeW5jIChjb25maWc/OiBEdWNrREJDb25maWcpOiBQcm9taXNlPEFzeW5jRHVja0RCPiA9PiB7XG4gIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgLy8gU2VsZWN0IGEgYnVuZGxlIGJhc2VkIG9uIGJyb3dzZXIgY2hlY2tzXG4gIGNvbnN0IEpTREVMSVZSX0JVTkRMRVMgPSBkdWNrZGIuZ2V0SnNEZWxpdnJCdW5kbGVzKCk7XG4gIGNvbnN0IGJ1bmRsZSA9IGF3YWl0IGR1Y2tkYi5zZWxlY3RCdW5kbGUoSlNERUxJVlJfQlVORExFUyk7XG5cbiAgY29uc3Qgd29ya2VyX3VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoXG4gICAgbmV3IEJsb2IoW2BpbXBvcnRTY3JpcHRzKFwiJHtidW5kbGUubWFpbldvcmtlciF9XCIpO2BdLCB7XG4gICAgICB0eXBlOiAndGV4dC9qYXZhc2NyaXB0J1xuICAgIH0pXG4gICk7XG5cbiAgLy8gSW5zdGFudGlhdGUgdGhlIGFzeW5jIHZlcnNpb24gb2YgRHVja0RCLXdhc21cbiAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJfdXJsKTtcbiAgY29uc3QgbG9nZ2VyID0gREVCVUcgPyBuZXcgZHVja2RiLkNvbnNvbGVMb2dnZXIoKSA6IG5ldyBkdWNrZGIuVm9pZExvZ2dlcigpO1xuICBjb25zdCBkYiA9IG5ldyBBc3luY0R1Y2tEQihsb2dnZXIsIHdvcmtlcik7XG4gIGF3YWl0IGRiLmluc3RhbnRpYXRlKGJ1bmRsZS5tYWluTW9kdWxlLCBidW5kbGUucHRocmVhZFdvcmtlcik7XG4gIFVSTC5yZXZva2VPYmplY3RVUkwod29ya2VyX3VybCk7XG5cbiAgaWYgKGNvbmZpZykge1xuICAgIGlmIChjb25maWcucGF0aCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goY29uZmlnLnBhdGgpO1xuICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgcmVzLmFycmF5QnVmZmVyKCk7XG4gICAgICBjb25zdCBmaWxlTmFtZU1hdGNoID0gY29uZmlnLnBhdGgubWF0Y2goL1teL10qJC8pO1xuICAgICAgaWYgKGZpbGVOYW1lTWF0Y2gpIHtcbiAgICAgICAgY29uZmlnLnBhdGggPSBmaWxlTmFtZU1hdGNoWzBdO1xuICAgICAgfVxuICAgICAgYXdhaXQgZGIucmVnaXN0ZXJGaWxlQnVmZmVyKGNvbmZpZy5wYXRoLCBuZXcgVWludDhBcnJheShidWZmZXIpKTtcbiAgICB9XG4gICAgYXdhaXQgZGIub3Blbihjb25maWcpO1xuICB9XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgbG9nRWxhcHNlZFRpbWUoJ0R1Y2tEQiBpbml0aWFsaXplZCcsIHN0YXJ0KTtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBEdWNrRGJDb25maWc6ICR7SlNPTi5zdHJpbmdpZnkoY29uZmlnLCBudWxsLCAyKX1gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRiO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGluc3RhbmNlIG9mIER1Y2tEQiwgaW5pdGlhbGl6aW5nIGl0IGlmIG5lZWRlZC5cbiAqXG4gKiBUeXBpY2FsbHkgYHVzZUR1Y2tEQmAgaXMgdXNlZCBpbiBSZWFjdCBjb21wb25lbnRzIGluc3RlYWQsIGJ1dCB0aGlzXG4gKiBtZXRob2QgcHJvdmlkZXMgYWNjZXNzIG91dHNpZGUgb2YgUmVhY3QgY29udGV4dHMuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREdWNrREIgPSBhc3luYyAoKTogUHJvbWlzZTxBc3luY0R1Y2tEQj4gPT4ge1xuICBpZiAoRHVja0RCKSB7XG4gICAgcmV0dXJuIER1Y2tEQjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXdhaXQgaW5pdGlhbGl6ZUR1Y2tEYigpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUlBLElBQUFBLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUE4QyxJQUFBQyxNQUFBLEdBQUFILFdBQUE7QUFFOUMsSUFBQUksS0FBQSxHQUFBRixPQUFBO0FBQTRDLFNBQUFHLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBTCx3QkFBQUssQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMs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
|
package/dist/plugin.d.ts
ADDED
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.keplerGlDuckDBPlugin = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _init = require("./init");
|
|
11
|
+
// SPDX-License-Identifier: MIT
|
|
12
|
+
// Copyright contributors to the kepler.gl project
|
|
13
|
+
|
|
14
|
+
var keplerGlDuckDBPlugin = exports.keplerGlDuckDBPlugin = {
|
|
15
|
+
init: function init() {
|
|
16
|
+
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
17
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
18
|
+
while (1) switch (_context.prev = _context.next) {
|
|
19
|
+
case 0:
|
|
20
|
+
_context.next = 2;
|
|
21
|
+
return (0, _init.initializeDuckDb)();
|
|
22
|
+
case 2:
|
|
23
|
+
console.log('kepler.gl DuckDB Plugin initialized');
|
|
24
|
+
case 3:
|
|
25
|
+
case "end":
|
|
26
|
+
return _context.stop();
|
|
27
|
+
}
|
|
28
|
+
}, _callee);
|
|
29
|
+
}))();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5pdCIsInJlcXVpcmUiLCJrZXBsZXJHbER1Y2tEQlBsdWdpbiIsImV4cG9ydHMiLCJpbml0IiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiaW5pdGlhbGl6ZUR1Y2tEYiIsImNvbnNvbGUiLCJsb2ciLCJzdG9wIl0sInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2luaXRpYWxpemVEdWNrRGJ9IGZyb20gJy4vaW5pdCc7XG5cbmV4cG9ydCBjb25zdCBrZXBsZXJHbER1Y2tEQlBsdWdpbiA9IHtcbiAgYXN5bmMgaW5pdCgpIHtcbiAgICBhd2FpdCBpbml0aWFsaXplRHVja0RiKCk7XG4gICAgY29uc29sZS5sb2coJ2tlcGxlci5nbCBEdWNrREIgUGx1Z2luIGluaXRpYWxpemVkJyk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUhBO0FBQ0E7O0FBSU8sSUFBTUMsb0JBQW9CLEdBQUFDLE9BQUEsQ0FBQUQsb0JBQUEsR0FBRztFQUM1QkUsSUFBSSxXQUFKQSxJQUFJQSxDQUFBLEVBQUc7SUFBQSxXQUFBQyxrQkFBQSwyQkFBQUMsWUFBQSxZQUFBQyxJQUFBLFVBQUFDLFFBQUE7TUFBQSxPQUFBRixZQUFBLFlBQUFHLElBQUEsVUFBQUMsU0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1VBQUE7WUFBQUYsUUFBQSxDQUFBRSxJQUFBO1lBQUEsT0FDTCxJQUFBQyxzQkFBZ0IsRUFBQyxDQUFDO1VBQUE7WUFDeEJDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHFDQUFxQyxDQUFDO1VBQUM7VUFBQTtZQUFBLE9BQUFMLFFBQUEsQ0FBQU0sSUFBQTtRQUFBO01BQUEsR0FBQVQsT0FBQTtJQUFBO0VBQ3JEO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as arrow from 'apache-arrow';
|
|
2
|
+
import { ProtoDatasetField } from '@kepler.gl/types';
|
|
3
|
+
import { processKeplerglJSON } from '@kepler.gl/processors';
|
|
4
|
+
export declare const CSV_NULLS: RegExp;
|
|
5
|
+
declare type RowsAsArray = any[][];
|
|
6
|
+
declare type RowsAsObject = Record<string, unknown>[];
|
|
7
|
+
declare type RowData = RowsAsArray | RowsAsObject;
|
|
8
|
+
export declare type ProcessorResult = {
|
|
9
|
+
cols?: arrow.Vector[];
|
|
10
|
+
rows: RowData;
|
|
11
|
+
fields: ProtoDatasetField[];
|
|
12
|
+
};
|
|
13
|
+
export declare function columnTypeToFieldType(columnType: string): string | null;
|
|
14
|
+
export declare function fieldTypeToColumnType(fieldType: string): string | null;
|
|
15
|
+
export declare function processKeplerglJSONforDuckDb(keplerJson: any): Promise<ReturnType<typeof processKeplerglJSON>>;
|
|
16
|
+
export declare function processCsvRowObject(rawData: Record<string, string | null>[]): Promise<ProcessorResult>;
|
|
17
|
+
export declare function processGeojson(rawData: unknown): ProcessorResult;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.CSV_NULLS = void 0;
|
|
8
|
+
exports.columnTypeToFieldType = columnTypeToFieldType;
|
|
9
|
+
exports.fieldTypeToColumnType = fieldTypeToColumnType;
|
|
10
|
+
exports.processCsvRowObject = processCsvRowObject;
|
|
11
|
+
exports.processGeojson = processGeojson;
|
|
12
|
+
exports.processKeplerglJSONforDuckDb = processKeplerglJSONforDuckDb;
|
|
13
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
16
|
+
var _geojsonNormalize = _interopRequireDefault(require("@mapbox/geojson-normalize"));
|
|
17
|
+
var _commonUtils = require("@kepler.gl/common-utils");
|
|
18
|
+
var _constants = require("@kepler.gl/constants");
|
|
19
|
+
var _processors = require("@kepler.gl/processors");
|
|
20
|
+
var _init = require("../init");
|
|
21
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
22
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
23
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
24
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
25
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
|
|
26
|
+
// Copyright contributors to the kepler.gl project
|
|
27
|
+
var CSV_NULLS = exports.CSV_NULLS = /^(null|NULL|Null|NaN|\/N||)$/;
|
|
28
|
+
var COLUMN_TYPES = /*#__PURE__*/function (COLUMN_TYPES) {
|
|
29
|
+
COLUMN_TYPES["GEOMETRY"] = "GEOMETRY";
|
|
30
|
+
COLUMN_TYPES["BOOLEAN"] = "BOOLEAN";
|
|
31
|
+
COLUMN_TYPES["INTEGER"] = "INTEGER";
|
|
32
|
+
COLUMN_TYPES["FLOAT"] = "FLOAT";
|
|
33
|
+
COLUMN_TYPES["TIME"] = "TIME";
|
|
34
|
+
COLUMN_TYPES["DATE"] = "DATE";
|
|
35
|
+
COLUMN_TYPES["TIMESTAMP"] = "TIMESTAMP";
|
|
36
|
+
COLUMN_TYPES["VARCHAR"] = "VARCHAR";
|
|
37
|
+
return COLUMN_TYPES;
|
|
38
|
+
}(COLUMN_TYPES || {}); // @ts-expect-error https://duckdb.org/docs/data/csv/auto_detection.html#type-detection
|
|
39
|
+
var COLUMN_TYPES_PRIORITIES = ['GEOMETRY', 'BOOLEAN', 'INTEGER', 'FLOAT', 'TIME', 'DATE', 'TIMESTAMP', 'VARCHAR'];
|
|
40
|
+
function columnTypeToFieldType(columnType) {
|
|
41
|
+
switch (columnType) {
|
|
42
|
+
case COLUMN_TYPES.BOOLEAN:
|
|
43
|
+
return _constants.ALL_FIELD_TYPES["boolean"];
|
|
44
|
+
case COLUMN_TYPES.DATE:
|
|
45
|
+
return _constants.ALL_FIELD_TYPES.date;
|
|
46
|
+
case COLUMN_TYPES.INTEGER:
|
|
47
|
+
return _constants.ALL_FIELD_TYPES.integer;
|
|
48
|
+
case COLUMN_TYPES.FLOAT:
|
|
49
|
+
return _constants.ALL_FIELD_TYPES.real;
|
|
50
|
+
case COLUMN_TYPES.VARCHAR:
|
|
51
|
+
return _constants.ALL_FIELD_TYPES.string;
|
|
52
|
+
case COLUMN_TYPES.TIMESTAMP:
|
|
53
|
+
return _constants.ALL_FIELD_TYPES.timestamp;
|
|
54
|
+
case COLUMN_TYPES.GEOMETRY:
|
|
55
|
+
return _constants.ALL_FIELD_TYPES.geojson;
|
|
56
|
+
default:
|
|
57
|
+
// is there any other type we didn't cover?
|
|
58
|
+
console.warn("Unsupported DuckDB Column type: ".concat(columnType));
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function fieldTypeToColumnType(fieldType) {
|
|
63
|
+
switch (fieldType) {
|
|
64
|
+
case _constants.ALL_FIELD_TYPES["boolean"]:
|
|
65
|
+
return COLUMN_TYPES.BOOLEAN;
|
|
66
|
+
case _constants.ALL_FIELD_TYPES.date:
|
|
67
|
+
return COLUMN_TYPES.DATE;
|
|
68
|
+
case _constants.ALL_FIELD_TYPES.integer:
|
|
69
|
+
return COLUMN_TYPES.INTEGER;
|
|
70
|
+
case _constants.ALL_FIELD_TYPES.real:
|
|
71
|
+
return COLUMN_TYPES.FLOAT;
|
|
72
|
+
case _constants.ALL_FIELD_TYPES.string:
|
|
73
|
+
return COLUMN_TYPES.VARCHAR;
|
|
74
|
+
case _constants.ALL_FIELD_TYPES.timestamp:
|
|
75
|
+
return COLUMN_TYPES.TIMESTAMP;
|
|
76
|
+
case _constants.ALL_FIELD_TYPES.geojson:
|
|
77
|
+
return COLUMN_TYPES.GEOMETRY;
|
|
78
|
+
default:
|
|
79
|
+
// is there any other type we didn't cover?
|
|
80
|
+
console.warn("Unsupported Field type for DuckDb: ".concat(fieldType));
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/*
|
|
86
|
+
* Process uploaded exported Keplergl json map.
|
|
87
|
+
* We need to populate field with proper DuckDb compatible type.
|
|
88
|
+
*/
|
|
89
|
+
// TODO: merge with logic from processCsvRowObject. Different formats: [[]] vs [{}]
|
|
90
|
+
function processKeplerglJSONforDuckDb(_x) {
|
|
91
|
+
return _processKeplerglJSONforDuckDb.apply(this, arguments);
|
|
92
|
+
}
|
|
93
|
+
/*
|
|
94
|
+
* Process uploaded csv returned by loaders.gl as row object and string value
|
|
95
|
+
*/
|
|
96
|
+
function _processKeplerglJSONforDuckDb() {
|
|
97
|
+
_processKeplerglJSONforDuckDb = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(keplerJson) {
|
|
98
|
+
var res, datasets, _iterator, _step, _loop2;
|
|
99
|
+
return _regenerator["default"].wrap(function _callee$(_context2) {
|
|
100
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
101
|
+
case 0:
|
|
102
|
+
res = (0, _processors.processKeplerglJSON)(keplerJson);
|
|
103
|
+
datasets = (res === null || res === void 0 ? void 0 : res.datasets) || [];
|
|
104
|
+
_iterator = _createForOfIteratorHelper(datasets);
|
|
105
|
+
_context2.prev = 3;
|
|
106
|
+
_loop2 = /*#__PURE__*/_regenerator["default"].mark(function _loop2() {
|
|
107
|
+
var dataset, rowsAll, fieldsAll, header, sample, schema, fieldsUpd;
|
|
108
|
+
return _regenerator["default"].wrap(function _loop2$(_context) {
|
|
109
|
+
while (1) switch (_context.prev = _context.next) {
|
|
110
|
+
case 0:
|
|
111
|
+
dataset = _step.value;
|
|
112
|
+
rowsAll = dataset.data.rows;
|
|
113
|
+
fieldsAll = dataset.data.fields;
|
|
114
|
+
header = fieldsAll.map(function (f) {
|
|
115
|
+
return f.name;
|
|
116
|
+
});
|
|
117
|
+
sample = (0, _commonUtils.getSampleForTypeAnalyze)({
|
|
118
|
+
fields: header,
|
|
119
|
+
rows: rowsAll
|
|
120
|
+
});
|
|
121
|
+
if (!(sample.length > 0)) {
|
|
122
|
+
_context.next = 11;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
_context.next = 8;
|
|
126
|
+
return sniffCsvSchema(sample);
|
|
127
|
+
case 8:
|
|
128
|
+
_context.t0 = _context.sent;
|
|
129
|
+
_context.next = 12;
|
|
130
|
+
break;
|
|
131
|
+
case 11:
|
|
132
|
+
_context.t0 = fieldsAll.reduce(function (acc, field) {
|
|
133
|
+
acc[field.name] = fieldTypeToColumnType(field.type);
|
|
134
|
+
return acc;
|
|
135
|
+
}, {});
|
|
136
|
+
case 12:
|
|
137
|
+
schema = _context.t0;
|
|
138
|
+
fieldsUpd = consolidateFieldTypes(dataset.data.fields, schema);
|
|
139
|
+
dataset.data.fields = fieldsAll.map(function (f, i) {
|
|
140
|
+
return _objectSpread(_objectSpread({}, fieldsUpd[i]), f);
|
|
141
|
+
});
|
|
142
|
+
case 15:
|
|
143
|
+
case "end":
|
|
144
|
+
return _context.stop();
|
|
145
|
+
}
|
|
146
|
+
}, _loop2);
|
|
147
|
+
});
|
|
148
|
+
_iterator.s();
|
|
149
|
+
case 6:
|
|
150
|
+
if ((_step = _iterator.n()).done) {
|
|
151
|
+
_context2.next = 10;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
return _context2.delegateYield(_loop2(), "t0", 8);
|
|
155
|
+
case 8:
|
|
156
|
+
_context2.next = 6;
|
|
157
|
+
break;
|
|
158
|
+
case 10:
|
|
159
|
+
_context2.next = 15;
|
|
160
|
+
break;
|
|
161
|
+
case 12:
|
|
162
|
+
_context2.prev = 12;
|
|
163
|
+
_context2.t1 = _context2["catch"](3);
|
|
164
|
+
_iterator.e(_context2.t1);
|
|
165
|
+
case 15:
|
|
166
|
+
_context2.prev = 15;
|
|
167
|
+
_iterator.f();
|
|
168
|
+
return _context2.finish(15);
|
|
169
|
+
case 18:
|
|
170
|
+
return _context2.abrupt("return", res);
|
|
171
|
+
case 19:
|
|
172
|
+
case "end":
|
|
173
|
+
return _context2.stop();
|
|
174
|
+
}
|
|
175
|
+
}, _callee, null, [[3, 12, 15, 18]]);
|
|
176
|
+
}));
|
|
177
|
+
return _processKeplerglJSONforDuckDb.apply(this, arguments);
|
|
178
|
+
}
|
|
179
|
+
function processCsvRowObject(_x2) {
|
|
180
|
+
return _processCsvRowObject.apply(this, arguments);
|
|
181
|
+
}
|
|
182
|
+
function _processCsvRowObject() {
|
|
183
|
+
_processCsvRowObject = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(rawData) {
|
|
184
|
+
var header, sample, schema, fieldsWAnalyzerType, fields;
|
|
185
|
+
return _regenerator["default"].wrap(function _callee2$(_context3) {
|
|
186
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
187
|
+
case 0:
|
|
188
|
+
if (!(!Array.isArray(rawData) || !rawData.length)) {
|
|
189
|
+
_context3.next = 2;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
return _context3.abrupt("return", {
|
|
193
|
+
fields: [],
|
|
194
|
+
rows: []
|
|
195
|
+
});
|
|
196
|
+
case 2:
|
|
197
|
+
header = Object.keys(rawData[0]); // [lat, lng, value]
|
|
198
|
+
// row object can still contain values like `Null` or `N/A`
|
|
199
|
+
cleanUpFalsyCsvValue(rawData);
|
|
200
|
+
sample = (0, _commonUtils.getSampleForTypeAnalyze)({
|
|
201
|
+
fields: header,
|
|
202
|
+
rows: rawData
|
|
203
|
+
}); // add sample data to duckdb and get schema
|
|
204
|
+
_context3.next = 7;
|
|
205
|
+
return sniffCsvSchema(sample);
|
|
206
|
+
case 7:
|
|
207
|
+
schema = _context3.sent;
|
|
208
|
+
fieldsWAnalyzerType = (0, _commonUtils.getFieldsFromData)(sample, header);
|
|
209
|
+
fields = consolidateFieldTypes(fieldsWAnalyzerType, schema);
|
|
210
|
+
return _context3.abrupt("return", {
|
|
211
|
+
rows: rawData,
|
|
212
|
+
fields: fields
|
|
213
|
+
});
|
|
214
|
+
case 11:
|
|
215
|
+
case "end":
|
|
216
|
+
return _context3.stop();
|
|
217
|
+
}
|
|
218
|
+
}, _callee2);
|
|
219
|
+
}));
|
|
220
|
+
return _processCsvRowObject.apply(this, arguments);
|
|
221
|
+
}
|
|
222
|
+
function cleanUpFalsyCsvValue(rows) {
|
|
223
|
+
var re = new RegExp(CSV_NULLS, 'g');
|
|
224
|
+
var _loop = function _loop(i) {
|
|
225
|
+
Object.keys(rows[i]).forEach(function (key) {
|
|
226
|
+
// here we parse empty data as null
|
|
227
|
+
if (typeof rows[i][key] === 'string' && rows[i][key].match(re)) {
|
|
228
|
+
rows[i][key] = null;
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
};
|
|
232
|
+
for (var i = 0; i < rows.length; i++) {
|
|
233
|
+
_loop(i);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// align type analyzer types with DuckDB csv auto detected column types
|
|
238
|
+
function consolidateFieldTypes(fields, schema) {
|
|
239
|
+
return fields.map(function (field) {
|
|
240
|
+
var columnName = field.name;
|
|
241
|
+
var detectedColumnType = schema[columnName];
|
|
242
|
+
|
|
243
|
+
// TODO columnTypeToFieldType tranforms detected timestamps to string,
|
|
244
|
+
// completely breaking time filter logic.
|
|
245
|
+
// const fieldType = columnTypeToFieldType(detectedColumnType) || field.type;
|
|
246
|
+
|
|
247
|
+
return _objectSpread(_objectSpread({}, field), {}, {
|
|
248
|
+
// type: fieldType,
|
|
249
|
+
duckDBColumnType: detectedColumnType
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
function toCSVRow(row) {
|
|
254
|
+
return "".concat(row.map(function (r) {
|
|
255
|
+
var rToStr = (0, _commonUtils.notNullorUndefined)(r) ? String(r).replace(/"/g, '\\"') : '';
|
|
256
|
+
return rToStr.includes(',') ? "\"".concat(rToStr, "\"") : rToStr;
|
|
257
|
+
}).join(','), "\n");
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Use DucckDB to detect csv column schema
|
|
261
|
+
function sniffCsvSchema(_x3) {
|
|
262
|
+
return _sniffCsvSchema.apply(this, arguments);
|
|
263
|
+
}
|
|
264
|
+
function _sniffCsvSchema() {
|
|
265
|
+
_sniffCsvSchema = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(sample) {
|
|
266
|
+
var headerRow, csvContent, db, c, fileName, result, schemaResult, columns, schema, i;
|
|
267
|
+
return _regenerator["default"].wrap(function _callee3$(_context4) {
|
|
268
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
269
|
+
case 0:
|
|
270
|
+
if (!(!Array.isArray(sample) || sample.length < 0)) {
|
|
271
|
+
_context4.next = 2;
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
return _context4.abrupt("return");
|
|
275
|
+
case 2:
|
|
276
|
+
headerRow = toCSVRow(Object.keys(sample[0]));
|
|
277
|
+
csvContent = sample.reduce(function (accu, row) {
|
|
278
|
+
return "".concat(accu).concat(toCSVRow(Object.values(row)));
|
|
279
|
+
}, headerRow);
|
|
280
|
+
_context4.next = 6;
|
|
281
|
+
return (0, _init.getDuckDB)();
|
|
282
|
+
case 6:
|
|
283
|
+
db = _context4.sent;
|
|
284
|
+
_context4.next = 9;
|
|
285
|
+
return db.connect();
|
|
286
|
+
case 9:
|
|
287
|
+
c = _context4.sent;
|
|
288
|
+
fileName = (0, _commonUtils.generateHashId)();
|
|
289
|
+
_context4.next = 13;
|
|
290
|
+
return db.registerFileText("".concat(fileName, "-").concat(_commonUtils.generateHashId, ".csv"), csvContent);
|
|
291
|
+
case 13:
|
|
292
|
+
_context4.next = 15;
|
|
293
|
+
return c.query("\n FROM sniff_csv('".concat(fileName, "-").concat(_commonUtils.generateHashId, ".csv', \n sample_size = 500,\n auto_type_candidates = ['FLOAT', 'INTEGER', 'TIMESTAMP', 'DATE', 'TIME', 'VARCHAR', 'BOOLEAN']);\n "));
|
|
294
|
+
case 15:
|
|
295
|
+
result = _context4.sent;
|
|
296
|
+
schemaResult = result.toArray().map(function (row) {
|
|
297
|
+
return row.toJSON();
|
|
298
|
+
});
|
|
299
|
+
columns = schemaResult[0].Columns;
|
|
300
|
+
schema = {};
|
|
301
|
+
for (i = 0; i < columns.length; i++) {
|
|
302
|
+
schema[columns.get(i).name] = columns.get(i).type;
|
|
303
|
+
}
|
|
304
|
+
return _context4.abrupt("return", schema);
|
|
305
|
+
case 21:
|
|
306
|
+
case "end":
|
|
307
|
+
return _context4.stop();
|
|
308
|
+
}
|
|
309
|
+
}, _callee3);
|
|
310
|
+
}));
|
|
311
|
+
return _sniffCsvSchema.apply(this, arguments);
|
|
312
|
+
}
|
|
313
|
+
function processGeojson(rawData) {
|
|
314
|
+
var normalizedGeojson = (0, _geojsonNormalize["default"])(rawData);
|
|
315
|
+
if (!normalizedGeojson || !Array.isArray(normalizedGeojson.features)) {
|
|
316
|
+
var error = new Error("Read File Failed: File is not a valid GeoJSON. Read more about [supported file format](".concat(_constants.GUIDES_FILE_FORMAT_DOC, ")"));
|
|
317
|
+
throw error;
|
|
318
|
+
// fail to normalize geojson
|
|
319
|
+
}
|
|
320
|
+
// console.log(normalizedGeojson);
|
|
321
|
+
|
|
322
|
+
return {
|
|
323
|
+
rows: normalizedGeojson,
|
|
324
|
+
// TODO get fields to preserve field names?
|
|
325
|
+
fields: []
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvanNvbk5vcm1hbGl6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl9wcm9jZXNzb3JzIiwiX2luaXQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJDU1ZfTlVMTFMiLCJleHBvcnRzIiwiQ09MVU1OX1RZUEVTIiwiQ09MVU1OX1RZUEVTX1BSSU9SSVRJRVMiLCJjb2x1bW5UeXBlVG9GaWVsZFR5cGUiLCJjb2x1bW5UeXBlIiwiQk9PTEVBTiIsIkFMTF9GSUVMRF9UWVBFUyIsIkRBVEUiLCJkYXRlIiwiSU5URUdFUiIsImludGVnZXIiLCJGTE9BVCIsInJlYWwiLCJWQVJDSEFSIiwic3RyaW5nIiwiVElNRVNUQU1QIiwidGltZXN0YW1wIiwiR0VPTUVUUlkiLCJnZW9qc29uIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJmaWVsZFR5cGVUb0NvbHVtblR5cGUiLCJmaWVsZFR5cGUiLCJwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiIiwiX3giLCJfcHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYiIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwia2VwbGVySnNvbiIsInJlcyIsImRhdGFzZXRzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfbG9vcDIiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dDIiLCJwcmV2IiwicHJvY2Vzc0tlcGxlcmdsSlNPTiIsImRhdGFzZXQiLCJyb3dzQWxsIiwiZmllbGRzQWxsIiwiaGVhZGVyIiwic2FtcGxlIiwic2NoZW1hIiwiZmllbGRzVXBkIiwiX2xvb3AyJCIsIl9jb250ZXh0IiwiZGF0YSIsInJvd3MiLCJmaWVsZHMiLCJtYXAiLCJnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZSIsInNuaWZmQ3N2U2NoZW1hIiwidDAiLCJzZW50IiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJ0eXBlIiwiY29uc29saWRhdGVGaWVsZFR5cGVzIiwiaSIsInN0b3AiLCJkZWxlZ2F0ZVlpZWxkIiwidDEiLCJmaW5pc2giLCJhYnJ1cHQiLCJwcm9jZXNzQ3N2Um93T2JqZWN0IiwiX3gyIiwiX3Byb2Nlc3NDc3ZSb3dPYmplY3QiLCJfY2FsbGVlMiIsInJhd0RhdGEiLCJmaWVsZHNXQW5hbHl6ZXJUeXBlIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQzIiwiY2xlYW5VcEZhbHN5Q3N2VmFsdWUiLCJnZXRGaWVsZHNGcm9tRGF0YSIsInJlIiwiUmVnRXhwIiwiX2xvb3AiLCJrZXkiLCJtYXRjaCIsImNvbHVtbk5hbWUiLCJkZXRlY3RlZENvbHVtblR5cGUiLCJkdWNrREJDb2x1bW5UeXBlIiwidG9DU1ZSb3ciLCJyb3ciLCJyVG9TdHIiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJTdHJpbmciLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJqb2luIiwiX3gzIiwiX3NuaWZmQ3N2U2NoZW1hIiwiX2NhbGxlZTMiLCJoZWFkZXJSb3ciLCJjc3ZDb250ZW50IiwiZGIiLCJjIiwiZmlsZU5hbWUiLCJyZXN1bHQiLCJzY2hlbWFSZXN1bHQiLCJjb2x1bW5zIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQ0IiwiYWNjdSIsInZhbHVlcyIsImdldER1Y2tEQiIsImNvbm5lY3QiLCJnZW5lcmF0ZUhhc2hJZCIsInJlZ2lzdGVyRmlsZVRleHQiLCJxdWVyeSIsInRvQXJyYXkiLCJ0b0pTT04iLCJDb2x1bW5zIiwiZ2V0IiwicHJvY2Vzc0dlb2pzb24iLCJub3JtYWxpemVkR2VvanNvbiIsIm5vcm1hbGl6ZSIsImZlYXR1cmVzIiwiZXJyb3IiLCJFcnJvciIsIkdVSURFU19GSUxFX0ZPUk1BVF9ET0MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvY2Vzc29ycy9kYXRhLXByb2Nlc3Nvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IG5vcm1hbGl6ZSBmcm9tICdAbWFwYm94L2dlb2pzb24tbm9ybWFsaXplJztcblxuaW1wb3J0IHtcbiAgZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUsXG4gIGdldEZpZWxkc0Zyb21EYXRhLFxuICBnZW5lcmF0ZUhhc2hJZCxcbiAgbm90TnVsbG9yVW5kZWZpbmVkXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVMsIEdVSURFU19GSUxFX0ZPUk1BVF9ET0N9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7cHJvY2Vzc0tlcGxlcmdsSlNPTn0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcblxuaW1wb3J0IHtnZXREdWNrREJ9IGZyb20gJy4uL2luaXQnO1xuXG5leHBvcnQgY29uc3QgQ1NWX05VTExTID0gL14obnVsbHxOVUxMfE51bGx8TmFOfFxcL058fCkkLztcblxudHlwZSBSb3dzQXNBcnJheSA9IGFueVtdW107XG50eXBlIFJvd3NBc09iamVjdCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG50eXBlIFJvd0RhdGEgPSBSb3dzQXNBcnJheSB8IFJvd3NBc09iamVjdDtcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc29yUmVzdWx0ID0ge1xuICBjb2xzPzogYXJyb3cuVmVjdG9yW107XG4gIHJvd3M6IFJvd0RhdGE7XG4gIGZpZWxkczogUHJvdG9EYXRhc2V0RmllbGRbXTtcbn07XG5cbmVudW0gQ09MVU1OX1RZUEVTIHtcbiAgR0VPTUVUUlkgPSAnR0VPTUVUUlknLFxuICBCT09MRUFOID0gJ0JPT0xFQU4nLFxuICBJTlRFR0VSID0gJ0lOVEVHRVInLFxuICBGTE9BVCA9ICdGTE9BVCcsXG4gIFRJTUUgPSAnVElNRScsXG4gIERBVEUgPSAnREFURScsXG4gIFRJTUVTVEFNUCA9ICdUSU1FU1RBTVAnLFxuICBWQVJDSEFSID0gJ1ZBUkNIQVInXG59XG4vLyBAdHMtZXhwZWN0LWVycm9yIGh0dHBzOi8vZHVja2RiLm9yZy9kb2NzL2RhdGEvY3N2L2F1dG9fZGV0ZWN0aW9uLmh0bWwjdHlwZS1kZXRlY3Rpb25cbmNvbnN0IENPTFVNTl9UWVBFU19QUklPUklUSUVTID0gW1xuICAnR0VPTUVUUlknLFxuICAnQk9PTEVBTicsXG4gICdJTlRFR0VSJyxcbiAgJ0ZMT0FUJyxcbiAgJ1RJTUUnLFxuICAnREFURScsXG4gICdUSU1FU1RBTVAnLFxuICAnVkFSQ0hBUidcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2x1bW5UeXBlVG9GaWVsZFR5cGUoY29sdW1uVHlwZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIHN3aXRjaCAoY29sdW1uVHlwZSkge1xuICAgIGNhc2UgQ09MVU1OX1RZUEVTLkJPT0xFQU46XG4gICAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW47XG4gICAgY2FzZSBDT0xVTU5fVFlQRVMuREFURTpcbiAgICAgIHJldHVybiBBTExfRklFTERfVFlQRVMuZGF0ZTtcbiAgICBjYXNlIENPTFVNTl9UWVBFUy5JTlRFR0VSOlxuICAgICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyO1xuICAgIGNhc2UgQ09MVU1OX1RZUEVTLkZMT0FUOlxuICAgICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5yZWFsO1xuICAgIGNhc2UgQ09MVU1OX1RZUEVTLlZBUkNIQVI6XG4gICAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZztcbiAgICBjYXNlIENPTFVNTl9UWVBFUy5USU1FU1RBTVA6XG4gICAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDtcbiAgICBjYXNlIENPTFVNTl9UWVBFUy5HRU9NRVRSWTpcbiAgICAgIHJldHVybiBBTExfRklFTERfVFlQRVMuZ2VvanNvbjtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gaXMgdGhlcmUgYW55IG90aGVyIHR5cGUgd2UgZGlkbid0IGNvdmVyP1xuICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCBEdWNrREIgQ29sdW1uIHR5cGU6ICR7Y29sdW1uVHlwZX1gKTtcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZFR5cGVUb0NvbHVtblR5cGUoZmllbGRUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgc3dpdGNoIChmaWVsZFR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5ib29sZWFuOlxuICAgICAgcmV0dXJuIENPTFVNTl9UWVBFUy5CT09MRUFOO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgICByZXR1cm4gQ09MVU1OX1RZUEVTLkRBVEU7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiBDT0xVTU5fVFlQRVMuSU5URUdFUjtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgICAgcmV0dXJuIENPTFVNTl9UWVBFUy5GTE9BVDtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc6XG4gICAgICByZXR1cm4gQ09MVU1OX1RZUEVTLlZBUkNIQVI7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIENPTFVNTl9UWVBFUy5USU1FU1RBTVA7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuZ2VvanNvbjpcbiAgICAgIHJldHVybiBDT0xVTU5fVFlQRVMuR0VPTUVUUlk7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIGlzIHRoZXJlIGFueSBvdGhlciB0eXBlIHdlIGRpZG4ndCBjb3Zlcj9cbiAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgRmllbGQgdHlwZSBmb3IgRHVja0RiOiAke2ZpZWxkVHlwZX1gKTtcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qXG4gKiBQcm9jZXNzIHVwbG9hZGVkIGV4cG9ydGVkIEtlcGxlcmdsIGpzb24gbWFwLlxuICogV2UgbmVlZCB0byBwb3B1bGF0ZSBmaWVsZCB3aXRoIHByb3BlciBEdWNrRGIgY29tcGF0aWJsZSB0eXBlLlxuICovXG4vLyBUT0RPOiBtZXJnZSB3aXRoIGxvZ2ljIGZyb20gcHJvY2Vzc0NzdlJvd09iamVjdC4gRGlmZmVyZW50IGZvcm1hdHM6IFtbXV0gdnMgW3t9XVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NLZXBsZXJnbEpTT05mb3JEdWNrRGIoXG4gIGtlcGxlckpzb25cbik6IFByb21pc2U8UmV0dXJuVHlwZTx0eXBlb2YgcHJvY2Vzc0tlcGxlcmdsSlNPTj4+IHtcbiAgY29uc3QgcmVzID0gcHJvY2Vzc0tlcGxlcmdsSlNPTihrZXBsZXJKc29uKTtcblxuICBjb25zdCBkYXRhc2V0cyA9IHJlcz8uZGF0YXNldHMgfHwgW107XG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cykge1xuICAgIGNvbnN0IHJvd3NBbGwgPSBkYXRhc2V0LmRhdGEucm93cztcbiAgICBjb25zdCBmaWVsZHNBbGwgPSBkYXRhc2V0LmRhdGEuZmllbGRzO1xuXG4gICAgY29uc3QgaGVhZGVyID0gZmllbGRzQWxsLm1hcChmID0+IGYubmFtZSk7XG4gICAgY29uc3Qgc2FtcGxlID0gZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUoe2ZpZWxkczogaGVhZGVyLCByb3dzOiByb3dzQWxsfSk7XG5cbiAgICBjb25zdCBzY2hlbWEgPVxuICAgICAgc2FtcGxlLmxlbmd0aCA+IDBcbiAgICAgICAgPyBhd2FpdCBzbmlmZkNzdlNjaGVtYShzYW1wbGUpXG4gICAgICAgIDogZmllbGRzQWxsLnJlZHVjZSgoYWNjLCBmaWVsZCkgPT4ge1xuICAgICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGRUeXBlVG9Db2x1bW5UeXBlKGZpZWxkLnR5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSk7XG4gICAgY29uc3QgZmllbGRzVXBkID0gY29uc29saWRhdGVGaWVsZFR5cGVzKGRhdGFzZXQuZGF0YS5maWVsZHMsIHNjaGVtYSk7XG5cbiAgICBkYXRhc2V0LmRhdGEuZmllbGRzID0gZmllbGRzQWxsLm1hcCgoZiwgaSkgPT4ge1xuICAgICAgcmV0dXJuIHsuLi5maWVsZHNVcGRbaV0sIC4uLmZ9O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn1cblxuLypcbiAqIFByb2Nlc3MgdXBsb2FkZWQgY3N2IHJldHVybmVkIGJ5IGxvYWRlcnMuZ2wgYXMgcm93IG9iamVjdCBhbmQgc3RyaW5nIHZhbHVlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzQ3N2Um93T2JqZWN0KFxuICByYXdEYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudWxsPltdXG4pOiBQcm9taXNlPFByb2Nlc3NvclJlc3VsdD4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3RGF0YSkgfHwgIXJhd0RhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkczogW10sXG4gICAgICByb3dzOiBbXVxuICAgIH07XG4gIH1cblxuICBjb25zdCBoZWFkZXIgPSBPYmplY3Qua2V5cyhyYXdEYXRhWzBdKTsgLy8gW2xhdCwgbG5nLCB2YWx1ZV1cblxuICAvLyByb3cgb2JqZWN0IGNhbiBzdGlsbCBjb250YWluIHZhbHVlcyBsaWtlIGBOdWxsYCBvciBgTi9BYFxuICBjbGVhblVwRmFsc3lDc3ZWYWx1ZShyYXdEYXRhKTtcbiAgY29uc3Qgc2FtcGxlID0gZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUoe2ZpZWxkczogaGVhZGVyLCByb3dzOiByYXdEYXRhfSk7XG4gIC8vIGFkZCBzYW1wbGUgZGF0YSB0byBkdWNrZGIgYW5kIGdldCBzY2hlbWFcbiAgY29uc3Qgc2NoZW1hID0gYXdhaXQgc25pZmZDc3ZTY2hlbWEoc2FtcGxlKTtcblxuICBjb25zdCBmaWVsZHNXQW5hbHl6ZXJUeXBlID0gZ2V0RmllbGRzRnJvbURhdGEoc2FtcGxlLCBoZWFkZXIpO1xuXG4gIGNvbnN0IGZpZWxkcyA9IGNvbnNvbGlkYXRlRmllbGRUeXBlcyhmaWVsZHNXQW5hbHl6ZXJUeXBlLCBzY2hlbWEpO1xuXG4gIHJldHVybiB7cm93czogcmF3RGF0YSwgZmllbGRzfTtcbn1cblxuZnVuY3Rpb24gY2xlYW5VcEZhbHN5Q3N2VmFsdWUocm93czogUm93RGF0YSk6IHZvaWQge1xuICBjb25zdCByZSA9IG5ldyBSZWdFeHAoQ1NWX05VTExTLCAnZycpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICBPYmplY3Qua2V5cyhyb3dzW2ldKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAvLyBoZXJlIHdlIHBhcnNlIGVtcHR5IGRhdGEgYXMgbnVsbFxuICAgICAgaWYgKHR5cGVvZiByb3dzW2ldW2tleV0gPT09ICdzdHJpbmcnICYmIChyb3dzW2ldW2tleV0gYXMgc3RyaW5nKS5tYXRjaChyZSkpIHtcbiAgICAgICAgcm93c1tpXVtrZXldID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vLyBhbGlnbiB0eXBlIGFuYWx5emVyIHR5cGVzIHdpdGggRHVja0RCIGNzdiBhdXRvIGRldGVjdGVkIGNvbHVtbiB0eXBlc1xuZnVuY3Rpb24gY29uc29saWRhdGVGaWVsZFR5cGVzKGZpZWxkcywgc2NoZW1hKSB7XG4gIHJldHVybiBmaWVsZHMubWFwKGZpZWxkID0+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lID0gZmllbGQubmFtZTtcblxuICAgIGNvbnN0IGRldGVjdGVkQ29sdW1uVHlwZSA9IHNjaGVtYVtjb2x1bW5OYW1lXTtcblxuICAgIC8vIFRPRE8gY29sdW1uVHlwZVRvRmllbGRUeXBlIHRyYW5mb3JtcyBkZXRlY3RlZCB0aW1lc3RhbXBzIHRvIHN0cmluZyxcbiAgICAvLyBjb21wbGV0ZWx5IGJyZWFraW5nIHRpbWUgZmlsdGVyIGxvZ2ljLlxuICAgIC8vIGNvbnN0IGZpZWxkVHlwZSA9IGNvbHVtblR5cGVUb0ZpZWxkVHlwZShkZXRlY3RlZENvbHVtblR5cGUpIHx8IGZpZWxkLnR5cGU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZmllbGQsXG4gICAgICAvLyB0eXBlOiBmaWVsZFR5cGUsXG4gICAgICBkdWNrREJDb2x1bW5UeXBlOiBkZXRlY3RlZENvbHVtblR5cGVcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdG9DU1ZSb3cocm93OiB1bmtub3duW10pOiBzdHJpbmcge1xuICByZXR1cm4gYCR7cm93XG4gICAgLm1hcChyID0+IHtcbiAgICAgIGNvbnN0IHJUb1N0ciA9IG5vdE51bGxvclVuZGVmaW5lZChyKSA/IFN0cmluZyhyKS5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykgOiAnJztcbiAgICAgIHJldHVybiByVG9TdHIuaW5jbHVkZXMoJywnKSA/IGBcIiR7clRvU3RyfVwiYCA6IHJUb1N0cjtcbiAgICB9KVxuICAgIC5qb2luKCcsJyl9XFxuYDtcbn1cblxuLy8gVXNlIER1Y2NrREIgdG8gZGV0ZWN0IGNzdiBjb2x1bW4gc2NoZW1hXG5hc3luYyBmdW5jdGlvbiBzbmlmZkNzdlNjaGVtYShzYW1wbGU6IFJvd0RhdGEpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHNhbXBsZSkgfHwgc2FtcGxlLmxlbmd0aCA8IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgaGVhZGVyUm93ID0gdG9DU1ZSb3coT2JqZWN0LmtleXMoc2FtcGxlWzBdKSk7XG5cbiAgY29uc3QgY3N2Q29udGVudCA9IChzYW1wbGUgYXMgKGFueVtdIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW10pLnJlZHVjZShcbiAgICAoYWNjdTogc3RyaW5nLCByb3cpID0+IGAke2FjY3V9JHt0b0NTVlJvdyhPYmplY3QudmFsdWVzKHJvdykpfWAsXG4gICAgaGVhZGVyUm93XG4gICk7XG5cbiAgY29uc3QgZGIgPSBhd2FpdCBnZXREdWNrREIoKTtcbiAgY29uc3QgYyA9IGF3YWl0IGRiLmNvbm5lY3QoKTtcblxuICBjb25zdCBmaWxlTmFtZSA9IGdlbmVyYXRlSGFzaElkKCk7XG4gIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZVRleHQoYCR7ZmlsZU5hbWV9LSR7Z2VuZXJhdGVIYXNoSWR9LmNzdmAsIGNzdkNvbnRlbnQpO1xuXG4gIC8vIGh0dHBzOi8vZHVja2RiLm9yZy9kb2NzL2RhdGEvY3N2L2F1dG9fZGV0ZWN0aW9uLmh0bWxcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYy5xdWVyeShgXG4gICAgICAgIEZST00gc25pZmZfY3N2KCcke2ZpbGVOYW1lfS0ke2dlbmVyYXRlSGFzaElkfS5jc3YnLCBcbiAgICAgICAgc2FtcGxlX3NpemUgPSA1MDAsXG4gICAgICAgIGF1dG9fdHlwZV9jYW5kaWRhdGVzID0gWydGTE9BVCcsICdJTlRFR0VSJywgJ1RJTUVTVEFNUCcsICdEQVRFJywgJ1RJTUUnLCAnVkFSQ0hBUicsICdCT09MRUFOJ10pO1xuICAgIGApO1xuXG4gIGNvbnN0IHNjaGVtYVJlc3VsdCA9IHJlc3VsdC50b0FycmF5KCkubWFwKHJvdyA9PiByb3cudG9KU09OKCkpO1xuXG4gIGNvbnN0IGNvbHVtbnMgPSBzY2hlbWFSZXN1bHRbMF0uQ29sdW1ucztcbiAgY29uc3Qgc2NoZW1hID0ge307XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgIHNjaGVtYVtjb2x1bW5zLmdldChpKS5uYW1lXSA9IGNvbHVtbnMuZ2V0KGkpLnR5cGU7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0dlb2pzb24ocmF3RGF0YTogdW5rbm93bik6IFByb2Nlc3NvclJlc3VsdCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRHZW9qc29uID0gbm9ybWFsaXplKHJhd0RhdGEpO1xuXG4gIGlmICghbm9ybWFsaXplZEdlb2pzb24gfHwgIUFycmF5LmlzQXJyYXkobm9ybWFsaXplZEdlb2pzb24uZmVhdHVyZXMpKSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICBgUmVhZCBGaWxlIEZhaWxlZDogRmlsZSBpcyBub3QgYSB2YWxpZCBHZW9KU09OLiBSZWFkIG1vcmUgYWJvdXQgW3N1cHBvcnRlZCBmaWxlIGZvcm1hdF0oJHtHVUlERVNfRklMRV9GT1JNQVRfRE9DfSlgXG4gICAgKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgICAvLyBmYWlsIHRvIG5vcm1hbGl6ZSBnZW9qc29uXG4gIH1cbiAgLy8gY29uc29sZS5sb2cobm9ybWFsaXplZEdlb2pzb24pO1xuXG4gIHJldHVybiB7XG4gICAgcm93czogbm9ybWFsaXplZEdlb2pzb24sXG4gICAgLy8gVE9ETyBnZXQgZmllbGRzIHRvIHByZXNlcnZlIGZpZWxkIG5hbWVzP1xuICAgIGZpZWxkczogW11cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFlBQUEsR0FBQUQsT0FBQTtBQU9BLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUFrQyxTQUFBSywyQkFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEseUJBQUFDLE1BQUEsSUFBQUgsQ0FBQSxDQUFBRyxNQUFBLENBQUFDLFFBQUEsS0FBQUosQ0FBQSxxQkFBQUUsQ0FBQSxRQUFBRyxLQUFBLENBQUFDLE9BQUEsQ0FBQU4sQ0FBQSxNQUFBRSxDQUFBLEdBQUFLLDJCQUFBLENBQUFQLENBQUEsTUFBQUMsQ0FBQSxJQUFBRCxDQUFBLHVCQUFBQSxDQUFBLENBQUFRLE1BQUEsSUFBQU4sQ0FBQSxLQUFBRixDQUFBLEdBQUFFLENBQUEsT0FBQU8sRUFBQSxNQUFBQyxDQUFBLFlBQUFBLEVBQUEsZUFBQUMsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUEsRUFBQSxXQUFBSCxFQUFBLElBQUFULENBQUEsQ0FBQVEsTUFBQSxLQUFBSyxJQUFBLFdBQUFBLElBQUEsTUFBQUMsS0FBQSxFQUFBZCxDQUFBLENBQUFTLEVBQUEsVUFBQVIsQ0FBQSxXQUFBQSxFQUFBRCxDQUFBLFVBQUFBLENBQUEsS0FBQWUsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTSxTQUFBLGlKQUFBQyxDQUFBLEVBQUFDLENBQUEsT0FBQUMsQ0FBQSxnQkFBQVIsQ0FBQSxXQUFBQSxFQUFBLElBQUFULENBQUEsR0FBQUEsQ0FBQSxDQUFBa0IsSUFBQSxDQUFBcEIsQ0FBQSxNQUFBWSxDQUFBLFdBQUFBLEVBQUEsUUFBQVosQ0FBQSxHQUFBRSxDQUFBLENBQUFtQixJQUFBLFdBQUFILENBQUEsR0FBQWxCLENBQUEsQ0FBQWEsSUFBQSxFQUFBYixDQUFBLEtBQUFDLENBQUEsV0FBQUEsRUFBQUQsQ0FBQSxJQUFBbUIsQ0FBQSxPQUFBRixDQUFBLEdBQUFqQixDQUFBLEtBQUFlLENBQUEsV0FBQUEsRUFBQSxVQUFBRyxDQUFBLFlBQUFoQixDQUFBLGNBQUFBLENBQUEsOEJBQUFpQixDQUFBLFFBQUFGLENBQUE7QUFBQSxTQUFBViw0QkFBQVAsQ0FBQSxFQUFBa0IsQ0FBQSxRQUFBbEIsQ0FBQSwyQkFBQUEsQ0FBQSxTQUFBc0IsaUJBQUEsQ0FBQXRCLENBQUEsRUFBQWtCLENBQUEsT0FBQWhCLENBQUEsTUFBQXFCLFFBQUEsQ0FBQUgsSUFBQSxDQUFBcEIsQ0FBQSxFQUFBd0IsS0FBQSw2QkFBQXRCLENBQUEsSUFBQUYsQ0FBQSxDQUFBeUIsV0FBQSxLQUFBdkIsQ0FBQSxHQUFBRixDQUFBLENBQUF5QixXQUFBLENBQUFDLElBQUEsYUFBQXhCLENBQUEsY0FBQUEsQ0FBQSxHQUFBRyxLQUFBLENBQUFzQixJQUFBLENBQUEzQixDQUFBLG9CQUFBRSxDQUFBLCtDQUFBMEIsSUFBQSxDQUFBMUIsQ0FBQSxJQUFBb0IsaUJBQUEsQ0FBQXRCLENBQUEsRUFBQWtCLENBQUE7QUFBQSxTQUFBSSxrQkFBQXRCLENBQUEsRUFBQWtCLENBQUEsYUFBQUEsQ0FBQSxJQUFBQSxDQUFBLEdBQUFsQixDQUFBLENBQUFRLE1BQUEsTUFBQVUsQ0FBQSxHQUFBbEIsQ0FBQSxDQUFBUSxNQUFBLFlBQUFQLENBQUEsTUFBQVcsQ0FBQSxHQUFBUCxLQUFBLENBQUFhLENBQUEsR0FBQWpCLENBQUEsR0FBQWlCLENBQUEsRUFBQWpCLENBQUEsSUFBQVcsQ0FBQSxDQUFBWCxDQUFBLElBQUFELENBQUEsQ0FBQUMsQ0FBQSxVQUFBVyxDQUFBO0FBQUEsU0FBQWlCLFFBQUE1QixDQUFBLEVBQUFELENBQUEsUUFBQUUsQ0FBQSxHQUFBNEIsTUFBQSxDQUFBQyxJQUFBLENBQUE5QixDQUFBLE9BQUE2QixNQUFBLENBQUFFLHFCQUFBLFFBQUFmLENBQUEsR0FBQWEsTUFBQSxDQUFBRSxxQkFBQSxDQUFBL0IsQ0FBQSxHQUFBRCxDQUFBLEtBQUFpQixDQUFBLEdBQUFBLENBQUEsQ0FBQWdCLE1BQUEsV0FBQWpDLENBQUEsV0FBQThCLE1BQUEsQ0FBQUksd0JBQUEsQ0FBQWpDLENBQUEsRUFBQUQsQ0FBQSxFQUFBbUMsVUFBQSxPQUFBakMsQ0FBQSxDQUFBa0MsSUFBQSxDQUFBQyxLQUFBLENBQUFuQyxDQUFBLEVBQUFlLENBQUEsWUFBQWYsQ0FBQTtBQUFBLFNBQUFvQyxjQUFBckMsQ0FBQSxhQUFBRCxDQUFBLE1BQUFBLENBQUEsR0FBQXVDLFNBQUEsQ0FBQS9CLE1BQUEsRUFBQVIsQ0FBQSxVQUFBRSxDQUFBLFdBQUFxQyxTQUFBLENBQUF2QyxDQUFBLElBQUF1QyxTQUFBLENBQUF2QyxDQUFBLFFBQUFBLENBQUEsT0FBQTZCLE9BQUEsQ0FBQUMsTUFBQSxDQUFBNUIsQ0FBQSxPQUFBc0MsT0FBQSxXQUFBeEMsQ0FBQSxRQUFBeUMsZ0JBQUEsYUFBQXhDLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLENBQUFGLENBQUEsU0FBQThCLE1BQUEsQ0FBQVkseUJBQUEsR0FBQVosTUFBQSxDQUFBYSxnQkFBQSxDQUFBMUMsQ0FBQSxFQUFBNkIsTUFBQSxDQUFBWSx5QkFBQSxDQUFBeEMsQ0FBQSxLQUFBMkIsT0FBQSxDQUFBQyxNQUFBLENBQUE1QixDQUFBLEdBQUFzQyxPQUFBLFdBQUF4QyxDQUFBLElBQUE4QixNQUFBLENBQUFjLGNBQUEsQ0FBQTNDLENBQUEsRUFBQUQsQ0FBQSxFQUFBOEIsTUFBQSxDQUFBSSx3QkFBQSxDQUFBaEMsQ0FBQSxFQUFBRixDQUFBLGlCQUFBQyxDQUFBLElBaEJsQztBQUNBO0FBaUJPLElBQU00QyxTQUFTLEdBQUFDLE9BQUEsQ0FBQUQsU0FBQSxHQUFHLDhCQUE4QjtBQUFDLElBWW5ERSxZQUFZLDBCQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFBLE9BQVpBLFlBQVk7QUFBQSxFQUFaQSxZQUFZLFNBVWpCO0FBQ0EsSUFBTUMsdUJBQXVCLEdBQUcsQ0FDOUIsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxFQUNQLE1BQU0sRUFDTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsQ0FDVjtBQUVNLFNBQVNDLHFCQUFxQkEsQ0FBQ0MsVUFBa0IsRUFBaUI7RUFDdkUsUUFBUUEsVUFBVTtJQUNoQixLQUFLSCxZQUFZLENBQUNJLE9BQU87TUFDdkIsT0FBT0MsMEJBQWUsV0FBUTtJQUNoQyxLQUFLTCxZQUFZLENBQUNNLElBQUk7TUFDcEIsT0FBT0QsMEJBQWUsQ0FBQ0UsSUFBSTtJQUM3QixLQUFLUCxZQUFZLENBQUNRLE9BQU87TUFDdkIsT0FBT0gsMEJBQWUsQ0FBQ0ksT0FBTztJQUNoQyxLQUFLVCxZQUFZLENBQUNVLEtBQUs7TUFDckIsT0FBT0wsMEJBQWUsQ0FBQ00sSUFBSTtJQUM3QixLQUFLWCxZQUFZLENBQUNZLE9BQU87TUFDdkIsT0FBT1AsMEJBQWUsQ0FBQ1EsTUFBTTtJQUMvQixLQUFLYixZQUFZLENBQUNjLFNBQVM7TUFDekIsT0FBT1QsMEJBQWUsQ0FBQ1UsU0FBUztJQUNsQyxLQUFLZixZQUFZLENBQUNnQixRQUFRO01BQ3hCLE9BQU9YLDBCQUFlLENBQUNZLE9BQU87SUFDaEM7TUFDRTtNQUNBQyxPQUFPLENBQUNDLElBQUksb0NBQUFDLE1BQUEsQ0FBb0NqQixVQUFVLENBQUUsQ0FBQztNQUM3RCxPQUFPLElBQUk7RUFDZjtBQUNGO0FBRU8sU0FBU2tCLHFCQUFxQkEsQ0FBQ0MsU0FBaUIsRUFBaUI7RUFDdEUsUUFBUUEsU0FBUztJQUNmLEtBQUtqQiwwQkFBZSxXQUFRO01BQzFCLE9BQU9MLFlBQVksQ0FBQ0ksT0FBTztJQUM3QixLQUFLQywwQkFBZSxDQUFDRSxJQUFJO01BQ3ZCLE9BQU9QLFlBQVksQ0FBQ00sSUFBSTtJQUMxQixLQUFLRCwwQkFBZSxDQUFDSSxPQUFPO01BQzFCLE9BQU9ULFlBQVksQ0FBQ1EsT0FBTztJQUM3QixLQUFLSCwwQkFBZSxDQUFDTSxJQUFJO01BQ3ZCLE9BQU9YLFlBQVksQ0FBQ1UsS0FBSztJQUMzQixLQUFLTCwwQkFBZSxDQUFDUSxNQUFNO01BQ3pCLE9BQU9iLFlBQVksQ0FBQ1ksT0FBTztJQUM3QixLQUFLUCwwQkFBZSxDQUFDVSxTQUFTO01BQzVCLE9BQU9mLFlBQVksQ0FBQ2MsU0FBUztJQUMvQixLQUFLVCwwQkFBZSxDQUFDWSxPQUFPO01BQzFCLE9BQU9qQixZQUFZLENBQUNnQixRQUFRO0lBQzlCO01BQ0U7TUFDQUUsT0FBTyxDQUFDQyxJQUFJLHVDQUFBQyxNQUFBLENBQXVDRSxTQUFTLENBQUUsQ0FBQztNQUMvRCxPQUFPLElBQUk7RUFDZjtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSxTQUNzQkMsNEJBQTRCQSxDQUFBQyxFQUFBO0VBQUEsT0FBQUMsNkJBQUEsQ0FBQW5DLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBOEJsRDtBQUNBO0FBQ0E7QUFGQSxTQUFBaUMsOEJBQUE7RUFBQUEsNkJBQUEsT0FBQUMsa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQTlCTyxTQUFBQyxRQUNMQyxVQUFVO0lBQUEsSUFBQUMsR0FBQSxFQUFBQyxRQUFBLEVBQUFDLFNBQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBO0lBQUEsT0FBQVIsWUFBQSxZQUFBUyxJQUFBLFVBQUFDLFNBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBQyxJQUFBLEdBQUFELFNBQUEsQ0FBQWhFLElBQUE7UUFBQTtVQUVKeUQsR0FBRyxHQUFHLElBQUFTLCtCQUFtQixFQUFDVixVQUFVLENBQUM7VUFFckNFLFFBQVEsR0FBRyxDQUFBRCxHQUFHLGFBQUhBLEdBQUcsdUJBQUhBLEdBQUcsQ0FBRUMsUUFBUSxLQUFJLEVBQUU7VUFBQUMsU0FBQSxHQUFBakYsMEJBQUEsQ0FDZGdGLFFBQVE7VUFBQU0sU0FBQSxDQUFBQyxJQUFBO1VBQUFKLE1BQUEsZ0JBQUFSLFlBQUEsWUFBQUMsSUFBQSxVQUFBTyxPQUFBO1lBQUEsSUFBQU0sT0FBQSxFQUFBQyxPQUFBLEVBQUFDLFNBQUEsRUFBQUMsTUFBQSxFQUFBQyxNQUFBLEVBQUFDLE1BQUEsRUFBQUMsU0FBQTtZQUFBLE9BQUFwQixZQUFBLFlBQUFTLElBQUEsVUFBQVksUUFBQUMsUUFBQTtjQUFBLGtCQUFBQSxRQUFBLENBQUFWLElBQUEsR0FBQVUsUUFBQSxDQUFBM0UsSUFBQTtnQkFBQTtrQkFBbkJtRSxPQUFPLEdBQUFQLEtBQUEsQ0FBQW5FLEtBQUE7a0JBQ1YyRSxPQUFPLEdBQUdELE9BQU8sQ0FBQ1MsSUFBSSxDQUFDQyxJQUFJO2tCQUMzQlIsU0FBUyxHQUFHRixPQUFPLENBQUNTLElBQUksQ0FBQ0UsTUFBTTtrQkFFL0JSLE1BQU0sR0FBR0QsU0FBUyxDQUFDVSxHQUFHLENBQUMsVUFBQXJGLENBQUM7b0JBQUEsT0FBSUEsQ0FBQyxDQUFDVyxJQUFJO2tCQUFBLEVBQUM7a0JBQ25Da0UsTUFBTSxHQUFHLElBQUFTLG9DQUF1QixFQUFDO29CQUFDRixNQUFNLEVBQUVSLE1BQU07b0JBQUVPLElBQUksRUFBRVQ7a0JBQU8sQ0FBQyxDQUFDO2tCQUFBLE1BR3JFRyxNQUFNLENBQUNwRixNQUFNLEdBQUcsQ0FBQztvQkFBQXdGLFFBQUEsQ0FBQTNFLElBQUE7b0JBQUE7a0JBQUE7a0JBQUEyRSxRQUFBLENBQUEzRSxJQUFBO2tCQUFBLE9BQ1BpRixjQUFjLENBQUNWLE1BQU0sQ0FBQztnQkFBQTtrQkFBQUksUUFBQSxDQUFBTyxFQUFBLEdBQUFQLFFBQUEsQ0FBQVEsSUFBQTtrQkFBQVIsUUFBQSxDQUFBM0UsSUFBQTtrQkFBQTtnQkFBQTtrQkFBQTJFLFFBQUEsQ0FBQU8sRUFBQSxHQUM1QmIsU0FBUyxDQUFDZSxNQUFNLENBQUMsVUFBQ0MsR0FBRyxFQUFFQyxLQUFLLEVBQUs7b0JBQy9CRCxHQUFHLENBQUNDLEtBQUssQ0FBQ2pGLElBQUksQ0FBQyxHQUFHMEMscUJBQXFCLENBQUN1QyxLQUFLLENBQUNDLElBQUksQ0FBQztvQkFDbkQsT0FBT0YsR0FBRztrQkFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQUE7a0JBTk5iLE1BQU0sR0FBQUcsUUFBQSxDQUFBTyxFQUFBO2tCQU9OVCxTQUFTLEdBQUdlLHFCQUFxQixDQUFDckIsT0FBTyxDQUFDUyxJQUFJLENBQUNFLE1BQU0sRUFBRU4sTUFBTSxDQUFDO2tCQUVwRUwsT0FBTyxDQUFDUyxJQUFJLENBQUNFLE1BQU0sR0FBR1QsU0FBUyxDQUFDVSxHQUFHLENBQUMsVUFBQ3JGLENBQUMsRUFBRStGLENBQUMsRUFBSztvQkFDNUMsT0FBQXhFLGFBQUEsQ0FBQUEsYUFBQSxLQUFXd0QsU0FBUyxDQUFDZ0IsQ0FBQyxDQUFDLEdBQUsvRixDQUFDO2tCQUMvQixDQUFDLENBQUM7Z0JBQUM7Z0JBQUE7a0JBQUEsT0FBQWlGLFFBQUEsQ0FBQWUsSUFBQTtjQUFBO1lBQUEsR0FBQTdCLE1BQUE7VUFBQTtVQUFBRixTQUFBLENBQUFyRSxDQUFBO1FBQUE7VUFBQSxLQUFBc0UsS0FBQSxHQUFBRCxTQUFBLENBQUFwRSxDQUFBLElBQUFDLElBQUE7WUFBQXdFLFNBQUEsQ0FBQWhFLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQWdFLFNBQUEsQ0FBQTJCLGFBQUEsQ0FBQTlCLE1BQUE7UUFBQTtVQUFBRyxTQUFBLENBQUFoRSxJQUFBO1VBQUE7UUFBQTtVQUFBZ0UsU0FBQSxDQUFBaEUsSUFBQTtVQUFBO1FBQUE7VUFBQWdFLFNBQUEsQ0FBQUMsSUFBQTtVQUFBRCxTQUFBLENBQUE0QixFQUFBLEdBQUE1QixTQUFBO1VBQUFMLFNBQUEsQ0FBQS9FLENBQUEsQ0FBQW9GLFNBQUEsQ0FBQTRCLEVBQUE7UUFBQTtVQUFBNUIsU0FBQSxDQUFBQyxJQUFBO1VBQUFOLFNBQUEsQ0FBQWpFLENBQUE7VUFBQSxPQUFBc0UsU0FBQSxDQUFBNkIsTUFBQTtRQUFBO1VBQUEsT0FBQTdCLFNBQUEsQ0FBQThCLE1BQUEsV0FHRXJDLEdBQUc7UUFBQTtRQUFBO1VBQUEsT0FBQU8sU0FBQSxDQUFBMEIsSUFBQTtNQUFBO0lBQUEsR0FBQW5DLE9BQUE7RUFBQSxDQUNYO0VBQUEsT0FBQUosNkJBQUEsQ0FBQW5DLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBQUEsU0FLcUI2RSxtQkFBbUJBLENBQUFDLEdBQUE7RUFBQSxPQUFBQyxvQkFBQSxDQUFBakYsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFBQSxTQUFBK0UscUJBQUE7RUFBQUEsb0JBQUEsT0FBQTdDLGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FBbEMsU0FBQTRDLFNBQ0xDLE9BQXdDO0lBQUEsSUFBQTdCLE1BQUEsRUFBQUMsTUFBQSxFQUFBQyxNQUFBLEVBQUE0QixtQkFBQSxFQUFBdEIsTUFBQTtJQUFBLE9BQUF6QixZQUFBLFlBQUFTLElBQUEsVUFBQXVDLFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBckMsSUFBQSxHQUFBcUMsU0FBQSxDQUFBdEcsSUFBQTtRQUFBO1VBQUEsTUFFcEMsQ0FBQ2hCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDa0gsT0FBTyxDQUFDLElBQUksQ0FBQ0EsT0FBTyxDQUFDaEgsTUFBTTtZQUFBbUgsU0FBQSxDQUFBdEcsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBc0csU0FBQSxDQUFBUixNQUFBLFdBQ3JDO1lBQ0xoQixNQUFNLEVBQUUsRUFBRTtZQUNWRCxJQUFJLEVBQUU7VUFDUixDQUFDO1FBQUE7VUFHR1AsTUFBTSxHQUFHN0QsTUFBTSxDQUFDQyxJQUFJLENBQUN5RixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtVQUV4QztVQUNBSSxvQkFBb0IsQ0FBQ0osT0FBTyxDQUFDO1VBQ3ZCNUIsTUFBTSxHQUFHLElBQUFTLG9DQUF1QixFQUFDO1lBQUNGLE1BQU0sRUFBRVIsTUFBTTtZQUFFTyxJQUFJLEVBQUVzQjtVQUFPLENBQUMsQ0FBQyxFQUN2RTtVQUFBRyxTQUFBLENBQUF0RyxJQUFBO1VBQUEsT0FDcUJpRixjQUFjLENBQUNWLE1BQU0sQ0FBQztRQUFBO1VBQXJDQyxNQUFNLEdBQUE4QixTQUFBLENBQUFuQixJQUFBO1VBRU5pQixtQkFBbUIsR0FBRyxJQUFBSSw4QkFBaUIsRUFBQ2pDLE1BQU0sRUFBRUQsTUFBTSxDQUFDO1VBRXZEUSxNQUFNLEdBQUdVLHFCQUFxQixDQUFDWSxtQkFBbUIsRUFBRTVCLE1BQU0sQ0FBQztVQUFBLE9BQUE4QixTQUFBLENBQUFSLE1BQUEsV0FFMUQ7WUFBQ2pCLElBQUksRUFBRXNCLE9BQU87WUFBRXJCLE1BQU0sRUFBTkE7VUFBTSxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUF3QixTQUFBLENBQUFaLElBQUE7TUFBQTtJQUFBLEdBQUFRLFFBQUE7RUFBQSxDQUMvQjtFQUFBLE9BQUFELG9CQUFBLENBQUFqRixLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUVELFNBQVNxRixvQkFBb0JBLENBQUMxQixJQUFhLEVBQVE7RUFDakQsSUFBTTRCLEVBQUUsR0FBRyxJQUFJQyxNQUFNLENBQUNsRixTQUFTLEVBQUUsR0FBRyxDQUFDO0VBQUMsSUFBQW1GLEtBQUEsWUFBQUEsTUFBQWxCLENBQUEsRUFDQTtJQUNwQ2hGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDbUUsSUFBSSxDQUFDWSxDQUFDLENBQUMsQ0FBQyxDQUFDdEUsT0FBTyxDQUFDLFVBQUF5RixHQUFHLEVBQUk7TUFDbEM7TUFDQSxJQUFJLE9BQU8vQixJQUFJLENBQUNZLENBQUMsQ0FBQyxDQUFDbUIsR0FBRyxDQUFDLEtBQUssUUFBUSxJQUFLL0IsSUFBSSxDQUFDWSxDQUFDLENBQUMsQ0FBQ21CLEdBQUcsQ0FBQyxDQUFZQyxLQUFLLENBQUNKLEVBQUUsQ0FBQyxFQUFFO1FBQzFFNUIsSUFBSSxDQUFDWSxDQUFDLENBQUMsQ0FBQ21CLEdBQUcsQ0FBQyxHQUFHLElBQUk7TUFDckI7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDO0VBUEQsS0FBSyxJQUFJbkIsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHWixJQUFJLENBQUMxRixNQUFNLEVBQUVzRyxDQUFDLEVBQUU7SUFBQWtCLEtBQUEsQ0FBQWxCLENBQUE7RUFBQTtBQVF0Qzs7QUFFQTtBQUNBLFNBQVNELHFCQUFxQkEsQ0FBQ1YsTUFBTSxFQUFFTixNQUFNLEVBQUU7RUFDN0MsT0FBT00sTUFBTSxDQUFDQyxHQUFHLENBQUMsVUFBQU8sS0FBSyxFQUFJO0lBQ3pCLElBQU13QixVQUFVLEdBQUd4QixLQUFLLENBQUNqRixJQUFJO0lBRTdCLElBQU0wRyxrQkFBa0IsR0FBR3ZDLE1BQU0sQ0FBQ3NDLFVBQVUsQ0FBQzs7SUFFN0M7SUFDQTtJQUNBOztJQUVBLE9BQUE3RixhQUFBLENBQUFBLGFBQUEsS0FDS3FFLEtBQUs7TUFDUjtNQUNBMEIsZ0JBQWdCLEVBQUVEO0lBQWtCO0VBRXhDLENBQUMsQ0FBQztBQUNKO0FBRUEsU0FBU0UsUUFBUUEsQ0FBQ0MsR0FBYyxFQUFVO0VBQ3hDLFVBQUFwRSxNQUFBLENBQVVvRSxHQUFHLENBQ1ZuQyxHQUFHLENBQUMsVUFBQXBHLENBQUMsRUFBSTtJQUNSLElBQU13SSxNQUFNLEdBQUcsSUFBQUMsK0JBQWtCLEVBQUN6SSxDQUFDLENBQUMsR0FBRzBJLE1BQU0sQ0FBQzFJLENBQUMsQ0FBQyxDQUFDMkksT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFO0lBQzFFLE9BQU9ILE1BQU0sQ0FBQ0ksUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFBekUsTUFBQSxDQUFPcUUsTUFBTSxVQUFNQSxNQUFNO0VBQ3RELENBQUMsQ0FBQyxDQUNESyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ2Q7O0FBRUE7QUFBQSxTQUNldkMsY0FBY0EsQ0FBQXdDLEdBQUE7RUFBQSxPQUFBQyxlQUFBLENBQUExRyxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUFBLFNBQUF3RyxnQkFBQTtFQUFBQSxlQUFBLE9BQUF0RSxrQkFBQSwyQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQTdCLFNBQUFxRSxTQUE4QnBELE1BQWU7SUFBQSxJQUFBcUQsU0FBQSxFQUFBQyxVQUFBLEVBQUFDLEVBQUEsRUFBQUMsQ0FBQSxFQUFBQyxRQUFBLEVBQUFDLE1BQUEsRUFBQUMsWUFBQSxFQUFBQyxPQUFBLEVBQUEzRCxNQUFBLEVBQUFpQixDQUFBO0lBQUEsT0FBQXBDLFlBQUEsWUFBQVMsSUFBQSxVQUFBc0UsVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFwRSxJQUFBLEdBQUFvRSxTQUFBLENBQUFySSxJQUFBO1FBQUE7VUFBQSxNQUN2QyxDQUFDaEIsS0FBSyxDQUFDQyxPQUFPLENBQUNzRixNQUFNLENBQUMsSUFBSUEsTUFBTSxDQUFDcEYsTUFBTSxHQUFHLENBQUM7WUFBQWtKLFNBQUEsQ0FBQXJJLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQXFJLFNBQUEsQ0FBQXZDLE1BQUE7UUFBQTtVQUd6QzhCLFNBQVMsR0FBR1gsUUFBUSxDQUFDeEcsTUFBTSxDQUFDQyxJQUFJLENBQUM2RCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUU1Q3NELFVBQVUsR0FBSXRELE1BQU0sQ0FBeUNhLE1BQU0sQ0FDdkUsVUFBQ2tELElBQVksRUFBRXBCLEdBQUc7WUFBQSxVQUFBcEUsTUFBQSxDQUFRd0YsSUFBSSxFQUFBeEYsTUFBQSxDQUFHbUUsUUFBUSxDQUFDeEcsTUFBTSxDQUFDOEgsTUFBTSxDQUFDckIsR0FBRyxDQUFDLENBQUM7VUFBQSxDQUFFLEVBQy9EVSxTQUNGLENBQUM7VUFBQVMsU0FBQSxDQUFBckksSUFBQTtVQUFBLE9BRWdCLElBQUF3SSxlQUFTLEVBQUMsQ0FBQztRQUFBO1VBQXRCVixFQUFFLEdBQUFPLFNBQUEsQ0FBQWxELElBQUE7VUFBQWtELFNBQUEsQ0FBQXJJLElBQUE7VUFBQSxPQUNROEgsRUFBRSxDQUFDVyxPQUFPLENBQUMsQ0FBQztRQUFBO1VBQXRCVixDQUFDLEdBQUFNLFNBQUEsQ0FBQWxELElBQUE7VUFFRDZDLFFBQVEsR0FBRyxJQUFBVSwyQkFBYyxFQUFDLENBQUM7VUFBQUwsU0FBQSxDQUFBckksSUFBQTtVQUFBLE9BQzNCOEgsRUFBRSxDQUFDYSxnQkFBZ0IsSUFBQTdGLE1BQUEsQ0FBSWtGLFFBQVEsT0FBQWxGLE1BQUEsQ0FBSTRGLDJCQUFjLFdBQVFiLFVBQVUsQ0FBQztRQUFBO1VBQUFRLFNBQUEsQ0FBQXJJLElBQUE7VUFBQSxPQUdyRCtILENBQUMsQ0FBQ2EsS0FBSyw4QkFBQTlGLE1BQUEsQ0FDSmtGLFFBQVEsT0FBQWxGLE1BQUEsQ0FBSTRGLDJCQUFjLHdKQUcvQyxDQUFDO1FBQUE7VUFKRVQsTUFBTSxHQUFBSSxTQUFBLENBQUFsRCxJQUFBO1VBTU4rQyxZQUFZLEdBQUdELE1BQU0sQ0FBQ1ksT0FBTyxDQUFDLENBQUMsQ0FBQzlELEdBQUcsQ0FBQyxVQUFBbUMsR0FBRztZQUFBLE9BQUlBLEdBQUcsQ0FBQzRCLE1BQU0sQ0FBQyxDQUFDO1VBQUEsRUFBQztVQUV4RFgsT0FBTyxHQUFHRCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUNhLE9BQU87VUFDakN2RSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1VBQ2pCLEtBQVNpQixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcwQyxPQUFPLENBQUNoSixNQUFNLEVBQUVzRyxDQUFDLEVBQUUsRUFBRTtZQUN2Q2pCLE1BQU0sQ0FBQzJELE9BQU8sQ0FBQ2EsR0FBRyxDQUFDdkQsQ0FBQyxDQUFDLENBQUNwRixJQUFJLENBQUMsR0FBRzhILE9BQU8sQ0FBQ2EsR0FBRyxDQUFDdkQsQ0FBQyxDQUFDLENBQUNGLElBQUk7VUFDbkQ7VUFBQyxPQUFBOEMsU0FBQSxDQUFBdkMsTUFBQSxXQUVNdEIsTUFBTTtRQUFBO1FBQUE7VUFBQSxPQUFBNkQsU0FBQSxDQUFBM0MsSUFBQTtNQUFBO0lBQUEsR0FBQWlDLFFBQUE7RUFBQSxDQUNkO0VBQUEsT0FBQUQsZUFBQSxDQUFBMUcsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFFTSxTQUFTK0gsY0FBY0EsQ0FBQzlDLE9BQWdCLEVBQW1CO0VBQ2hFLElBQU0rQyxpQkFBaUIsR0FBRyxJQUFBQyw0QkFBUyxFQUFDaEQsT0FBTyxDQUFDO0VBRTVDLElBQUksQ0FBQytDLGlCQUFpQixJQUFJLENBQUNsSyxLQUFLLENBQUNDLE9BQU8sQ0FBQ2lLLGlCQUFpQixDQUFDRSxRQUFRLENBQUMsRUFBRTtJQUNwRSxJQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSywyRkFBQXhHLE1BQUEsQ0FDcUV5RyxpQ0FBc0IsTUFDbEgsQ0FBQztJQUNELE1BQU1GLEtBQUs7SUFDWDtFQUNGO0VBQ0E7O0VBRUEsT0FBTztJQUNMeEUsSUFBSSxFQUFFcUUsaUJBQWlCO0lBQ3ZCO0lBQ0FwRSxNQUFNLEVBQUU7RUFDVixDQUFDO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as arrow from 'apache-arrow';
|
|
2
|
+
import { AsyncDuckDB, AsyncDuckDBConnection } from '@duckdb/duckdb-wasm';
|
|
3
|
+
import { KeplerTable } from '@kepler.gl/table';
|
|
4
|
+
import { ProcessorResult } from '../processors/data-processor';
|
|
5
|
+
declare type ImportDataToDuckProps = {
|
|
6
|
+
data: ProcessorResult;
|
|
7
|
+
db: AsyncDuckDB;
|
|
8
|
+
c: AsyncDuckDBConnection;
|
|
9
|
+
};
|
|
10
|
+
export declare class KeplerGlDuckDbTable extends KeplerTable {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
label: string;
|
|
13
|
+
type: string;
|
|
14
|
+
metadata: Record<string, any>;
|
|
15
|
+
constructor(props: any);
|
|
16
|
+
importRowData({ data, db, c }: ImportDataToDuckProps): Promise<void>;
|
|
17
|
+
importGeoJsonData({ data, db, c }: ImportDataToDuckProps): Promise<void>;
|
|
18
|
+
importArrowData({ data, db, c }: ImportDataToDuckProps): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a table from data, returns an arrow table with the data
|
|
21
|
+
* @param data
|
|
22
|
+
* @returns {Promise<{fields: Field[], cols: any[]}>}
|
|
23
|
+
*/
|
|
24
|
+
protected createTableAndGetArrow(data: any): Promise<{
|
|
25
|
+
fields: any[];
|
|
26
|
+
cols: arrow.Vector[];
|
|
27
|
+
}>;
|
|
28
|
+
importData({ data }: {
|
|
29
|
+
data: ProcessorResult;
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
update(data: any): Promise<any>;
|
|
32
|
+
static getFileProcessor: (data: any, inputFormat?: string) => {
|
|
33
|
+
processor: any;
|
|
34
|
+
format: any;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export {};
|