@kepler.gl/duckdb 3.1.0 → 3.1.2

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/duckdb",
3
3
  "author": "Shan He <heshan0131@gmail.com>",
4
- "version": "3.1.0",
4
+ "version": "3.1.2",
5
5
  "description": "DuckDB plugin for Kepler.gl",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -26,11 +26,11 @@
26
26
  ],
27
27
  "dependencies": {
28
28
  "@duckdb/duckdb-wasm": "^1.28.0",
29
- "@kepler.gl/common-utils": "3.1.0",
30
- "@kepler.gl/constants": "3.1.0",
31
- "@kepler.gl/processors": "3.1.0",
32
- "@kepler.gl/table": "3.1.0",
33
- "@kepler.gl/types": "3.1.0",
29
+ "@kepler.gl/common-utils": "3.1.2",
30
+ "@kepler.gl/constants": "3.1.2",
31
+ "@kepler.gl/processors": "3.1.2",
32
+ "@kepler.gl/table": "3.1.2",
33
+ "@kepler.gl/types": "3.1.2",
34
34
  "@monaco-editor/react": "^4.6.0",
35
35
  "@radix-ui/react-collapsible": "^1.1.0",
36
36
  "apache-arrow": ">=15.0.0",
package/dist/init.d.ts DELETED
@@ -1,19 +0,0 @@
1
- import { AsyncDuckDB, DuckDBConfig } from '@duckdb/duckdb-wasm';
2
- export declare let DEBUG: boolean | undefined;
3
- /**
4
- * Initialize DuckDB, ensuring we only initialize it once.
5
- *
6
- * @param debug If true, log DuckDB logs and elapsed times to the console.
7
- * @param config An optional DuckDBConfig object.
8
- */
9
- export declare function initializeDuckDb(options?: {
10
- debug?: boolean;
11
- config?: DuckDBConfig;
12
- }): Promise<AsyncDuckDB>;
13
- /**
14
- * Get the instance of DuckDB, initializing it if needed.
15
- *
16
- * Typically `useDuckDB` is used in React components instead, but this
17
- * method provides access outside of React contexts.
18
- */
19
- export declare const getDuckDB: () => Promise<AsyncDuckDB>;
package/dist/init.js DELETED
@@ -1,154 +0,0 @@
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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