@kepler.gl/duckdb 3.3.0-alpha.0 → 3.3.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/cjs/adapters/duckdb-wasm-adapter.js +258 -0
  2. package/dist/{components → cjs/components}/index.js +1 -1
  3. package/dist/cjs/components/monaco-editor.js +174 -0
  4. package/dist/cjs/components/preview-data-panel.js +127 -0
  5. package/dist/cjs/components/schema-panel.js +170 -0
  6. package/dist/cjs/components/sql-panel.js +395 -0
  7. package/dist/cjs/components/tree.js +90 -0
  8. package/dist/{index.js → cjs/index.js} +1 -1
  9. package/dist/{plugin.js → cjs/plugin.js} +2 -2
  10. package/dist/cjs/processors/data-processor.js +353 -0
  11. package/dist/cjs/table/duckdb-table-utils.js +670 -0
  12. package/dist/cjs/table/duckdb-table.js +482 -0
  13. package/dist/{table → cjs/table}/index.js +1 -1
  14. package/dist/cjs/utils/perf.js +46 -0
  15. package/dist/esm/adapters/duckdb-wasm-adapter.js +251 -0
  16. package/dist/esm/components/index.js +9 -0
  17. package/dist/esm/components/monaco-editor.js +167 -0
  18. package/dist/esm/components/preview-data-panel.js +120 -0
  19. package/dist/esm/components/schema-panel.js +164 -0
  20. package/dist/esm/components/sql-panel.js +388 -0
  21. package/dist/esm/components/tree.js +82 -0
  22. package/dist/esm/index.js +9 -0
  23. package/dist/esm/plugin.js +22 -0
  24. package/dist/esm/processors/data-processor.js +342 -0
  25. package/dist/esm/table/duckdb-table-utils.js +645 -0
  26. package/dist/esm/table/duckdb-table.js +477 -0
  27. package/dist/esm/table/index.js +5 -0
  28. package/dist/esm/utils/perf.js +40 -0
  29. package/dist/table/duckdb-table-utils.d.ts +7 -0
  30. package/package.json +28 -24
  31. package/dist/adapters/duckdb-wasm-adapter.js +0 -259
  32. package/dist/components/monaco-editor.js +0 -175
  33. package/dist/components/preview-data-panel.js +0 -128
  34. package/dist/components/schema-panel.js +0 -171
  35. package/dist/components/sql-panel.js +0 -396
  36. package/dist/components/tree.js +0 -91
  37. package/dist/processors/data-processor.js +0 -353
  38. package/dist/table/duckdb-table-utils.js +0 -669
  39. package/dist/table/duckdb-table.js +0 -480
  40. package/dist/utils/perf.js +0 -46
@@ -1,128 +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.PreviewDataPanel = void 0;
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
- var _react = _interopRequireWildcard(require("react"));
13
- var _styledComponents = require("styled-components");
14
- var _components = require("@kepler.gl/components");
15
- var _processors = require("@kepler.gl/processors");
16
- var _utils = require("@kepler.gl/utils");
17
- 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); }
18
- 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; }
19
- 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; }
20
- 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
21
- // Copyright contributors to the kepler.gl project
22
- var DEFAULT_ROWS_TO_CALCULATE_PREVIEW = 100;
23
- // min Cellsize should take into account option button and field token
24
- var minCellSize = 80;
25
- // option buttons and field token
26
- var optionButtonWidth = 20;
27
- var pinButton = 20;
28
- var cellPadding = 20;
29
- var PreviewDataPanelWOTheme = function PreviewDataPanelWOTheme(_ref) {
30
- var result = _ref.result,
31
- _ref$rowsToCalculateP = _ref.rowsToCalculatePreview,
32
- rowsToCalculatePreview = _ref$rowsToCalculateP === void 0 ? DEFAULT_ROWS_TO_CALCULATE_PREVIEW : _ref$rowsToCalculateP,
33
- _ref$defaultPinnedCol = _ref.defaultPinnedColumns,
34
- defaultPinnedColumns = _ref$defaultPinnedCol === void 0 ? [] : _ref$defaultPinnedCol,
35
- theme = _ref.theme;
36
- var _useState = (0, _react.useState)(defaultPinnedColumns),
37
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
38
- pinnedColumns = _useState2[0],
39
- setPinnedColumns = _useState2[1];
40
- var fields = (0, _react.useMemo)(function () {
41
- return (0, _processors.arrowSchemaToFields)(result.table, result.tableDuckDBTypes);
42
- }, [result]);
43
- var dataContainer = (0, _react.useMemo)(function () {
44
- var cols = (0, _toConsumableArray2["default"])(Array(result.table.numCols).keys()).map(function (i) {
45
- return result.table.getChildAt(i);
46
- });
47
- var dataContainer = (0, _utils.createDataContainer)(cols, {
48
- fields: fields,
49
- inputDataFormat: _utils.DataForm.COLS_ARRAY
50
- });
51
- return dataContainer;
52
- }, [result, fields]);
53
- var columns = (0, _react.useMemo)(function () {
54
- return fields.map(function (f) {
55
- return f.name;
56
- });
57
- }, [fields]);
58
- var colMeta = (0, _react.useMemo)(function () {
59
- return fields.reduce(function (acc, _ref2, colIdx) {
60
- var name = _ref2.name,
61
- displayName = _ref2.displayName,
62
- type = _ref2.type,
63
- displayFormat = _ref2.displayFormat;
64
- return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, name, {
65
- // because '' || 'aaa' = 'aaa'
66
- name: displayName !== undefined ? displayName : name,
67
- displayName: displayName,
68
- displayFormat: displayFormat,
69
- type: type,
70
- colIdx: colIdx
71
- }));
72
- }, {});
73
- }, [fields]);
74
- var copyTableColumn = (0, _react.useCallback)(function (column) {
75
- var _navigator;
76
- var _colMeta$column = colMeta[column],
77
- colIdx = _colMeta$column.colIdx,
78
- type = _colMeta$column.type;
79
- var text = dataContainer.mapIndex(function (row) {
80
- return (0, _utils.parseFieldValue)(dataContainer.valueAt(row.index, colIdx), type);
81
- }).join('\n');
82
- (_navigator = navigator) === null || _navigator === void 0 || _navigator.clipboard.writeText(text);
83
- }, [colMeta, dataContainer]);
84
- var pinTableColumn = (0, _react.useCallback)(function (column) {
85
- return pinnedColumns.includes(column) ? setPinnedColumns(pinnedColumns.filter(function (c) {
86
- return c !== column;
87
- })) : setPinnedColumns([].concat((0, _toConsumableArray2["default"])(pinnedColumns), [column]));
88
- }, [pinnedColumns]);
89
-
90
- // TODO Potentially costly operation for non row based data containers. Revisit sorting below.
91
- var dataTableStyle = (0, _react.useMemo)(function () {
92
- return {
93
- minCellSize: minCellSize,
94
- cellPadding: cellPadding,
95
- optionsButton: theme.fieldTokenWidth + theme.fieldTokenRightMargin + optionButtonWidth + pinButton,
96
- fontSize: theme.cellFontSize,
97
- font: theme.fontFamily
98
- };
99
- }, [theme]);
100
- var cellSizeCache = (0, _react.useMemo)(function () {
101
- return columns.reduce(function (acc, column) {
102
- var _colMeta$column2 = colMeta[column],
103
- colIdx = _colMeta$column2.colIdx,
104
- displayName = _colMeta$column2.displayName,
105
- type = _colMeta$column2.type;
106
- return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, column, (0, _components.renderedSize)(_objectSpread({
107
- text: {
108
- dataContainer: dataContainer,
109
- column: displayName
110
- },
111
- colIdx: colIdx,
112
- type: type,
113
- numRowsToCalculate: rowsToCalculatePreview
114
- }, dataTableStyle))));
115
- }, {});
116
- }, [columns, colMeta, dataContainer, rowsToCalculatePreview, dataTableStyle]);
117
- return /*#__PURE__*/_react["default"].createElement(_components.DataTable, {
118
- colMeta: colMeta,
119
- columns: columns,
120
- cellSizeCache: cellSizeCache,
121
- dataContainer: dataContainer,
122
- pinnedColumns: pinnedColumns,
123
- copyTableColumn: copyTableColumn,
124
- pinTableColumn: pinTableColumn
125
- });
126
- };
127
- var PreviewDataPanel = exports.PreviewDataPanel = (0, _styledComponents.withTheme)(PreviewDataPanelWOTheme);
128
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb21wb25lbnRzIiwiX3Byb2Nlc3NvcnMiLCJfdXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJERUZBVUxUX1JPV1NfVE9fQ0FMQ1VMQVRFX1BSRVZJRVciLCJtaW5DZWxsU2l6ZSIsIm9wdGlvbkJ1dHRvbldpZHRoIiwicGluQnV0dG9uIiwiY2VsbFBhZGRpbmciLCJQcmV2aWV3RGF0YVBhbmVsV09UaGVtZSIsIl9yZWYiLCJyZXN1bHQiLCJfcmVmJHJvd3NUb0NhbGN1bGF0ZVAiLCJyb3dzVG9DYWxjdWxhdGVQcmV2aWV3IiwiX3JlZiRkZWZhdWx0UGlubmVkQ29sIiwiZGVmYXVsdFBpbm5lZENvbHVtbnMiLCJ0aGVtZSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInBpbm5lZENvbHVtbnMiLCJzZXRQaW5uZWRDb2x1bW5zIiwiZmllbGRzIiwidXNlTWVtbyIsImFycm93U2NoZW1hVG9GaWVsZHMiLCJ0YWJsZSIsInRhYmxlRHVja0RCVHlwZXMiLCJkYXRhQ29udGFpbmVyIiwiY29scyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJBcnJheSIsIm51bUNvbHMiLCJtYXAiLCJnZXRDaGlsZEF0IiwiY3JlYXRlRGF0YUNvbnRhaW5lciIsImlucHV0RGF0YUZvcm1hdCIsIkRhdGFGb3JtIiwiQ09MU19BUlJBWSIsImNvbHVtbnMiLCJmIiwibmFtZSIsImNvbE1ldGEiLCJyZWR1Y2UiLCJhY2MiLCJfcmVmMiIsImNvbElkeCIsImRpc3BsYXlOYW1lIiwidHlwZSIsImRpc3BsYXlGb3JtYXQiLCJ1bmRlZmluZWQiLCJjb3B5VGFibGVDb2x1bW4iLCJ1c2VDYWxsYmFjayIsImNvbHVtbiIsIl9uYXZpZ2F0b3IiLCJfY29sTWV0YSRjb2x1bW4iLCJ0ZXh0IiwibWFwSW5kZXgiLCJyb3ciLCJwYXJzZUZpZWxkVmFsdWUiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJqb2luIiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwicGluVGFibGVDb2x1bW4iLCJpbmNsdWRlcyIsImMiLCJjb25jYXQiLCJkYXRhVGFibGVTdHlsZSIsIm9wdGlvbnNCdXR0b24iLCJmaWVsZFRva2VuV2lkdGgiLCJmaWVsZFRva2VuUmlnaHRNYXJnaW4iLCJmb250U2l6ZSIsImNlbGxGb250U2l6ZSIsImZvbnQiLCJmb250RmFtaWx5IiwiY2VsbFNpemVDYWNoZSIsIl9jb2xNZXRhJGNvbHVtbjIiLCJyZW5kZXJlZFNpemUiLCJudW1Sb3dzVG9DYWxjdWxhdGUiLCJjcmVhdGVFbGVtZW50IiwiRGF0YVRhYmxlIiwiUHJldmlld0RhdGFQYW5lbCIsImV4cG9ydHMiLCJ3aXRoVGhlbWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9wcmV2aWV3LWRhdGEtcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGUsIENTU1Byb3BlcnRpZXN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7d2l0aFRoZW1lfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7RGF0YVRhYmxlLCByZW5kZXJlZFNpemV9IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge2Fycm93U2NoZW1hVG9GaWVsZHN9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge3BhcnNlRmllbGRWYWx1ZSwgY3JlYXRlRGF0YUNvbnRhaW5lciwgRGF0YUZvcm19IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG50eXBlIEJhc2VDb21wb25lbnRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG59O1xuXG5jb25zdCBERUZBVUxUX1JPV1NfVE9fQ0FMQ1VMQVRFX1BSRVZJRVcgPSAxMDA7XG4vLyBtaW4gQ2VsbHNpemUgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IG9wdGlvbiBidXR0b24gYW5kIGZpZWxkIHRva2VuXG5jb25zdCBtaW5DZWxsU2l6ZSA9IDgwO1xuLy8gb3B0aW9uIGJ1dHRvbnMgYW5kIGZpZWxkIHRva2VuXG5jb25zdCBvcHRpb25CdXR0b25XaWR0aCA9IDIwO1xuY29uc3QgcGluQnV0dG9uID0gMjA7XG5jb25zdCBjZWxsUGFkZGluZyA9IDIwO1xuXG5leHBvcnQgdHlwZSBDb2xNZXRhID0ge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgY29sSWR4OiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVRhYmxlU3R5bGUgPSB7XG4gIG1pbkNlbGxTaXplPzogbnVtYmVyO1xuICBjZWxsUGFkZGluZz86IG51bWJlcjtcbiAgZm9udFNpemU/OiBudW1iZXI7XG4gIGZvbnQ/OiBzdHJpbmc7XG4gIG9wdGlvbnNCdXR0b24/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeVJlc3VsdCA9IHtcbiAgdGFibGU6IGFycm93LlRhYmxlO1xuICB0YWJsZUR1Y2tEQlR5cGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufTtcblxuZXhwb3J0IHR5cGUgUHJldmlld0RhdGFQYW5lbFByb3BzID0gQmFzZUNvbXBvbmVudFByb3BzICYge1xuICByZXN1bHQ6IFF1ZXJ5UmVzdWx0O1xuICByb3dzVG9DYWxjdWxhdGVQcmV2aWV3PzogbnVtYmVyO1xuICB0aGVtZT86IGFueTtcbiAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdD86IChmb3JtYXRzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSkgPT4gdm9pZDtcbiAgZGVmYXVsdFBpbm5lZENvbHVtbnM/OiBzdHJpbmdbXTtcbiAgZGF0YVRhYmxlU3R5bGU6IERhdGFUYWJsZVN0eWxlO1xuICBvbkFkZFJlc3VsdFRvTWFwOiAocmVzdWx0OiBRdWVyeVJlc3VsdCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IFByZXZpZXdEYXRhUGFuZWxXT1RoZW1lOiBSZWFjdC5GQzxQcmV2aWV3RGF0YVBhbmVsUHJvcHM+ID0gKHtcbiAgcmVzdWx0LFxuICByb3dzVG9DYWxjdWxhdGVQcmV2aWV3ID0gREVGQVVMVF9ST1dTX1RPX0NBTENVTEFURV9QUkVWSUVXLFxuICBkZWZhdWx0UGlubmVkQ29sdW1ucyA9IFtdLFxuICB0aGVtZVxufSkgPT4ge1xuICBjb25zdCBbcGlubmVkQ29sdW1ucywgc2V0UGlubmVkQ29sdW1uc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oZGVmYXVsdFBpbm5lZENvbHVtbnMpO1xuICBjb25zdCBmaWVsZHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGFycm93U2NoZW1hVG9GaWVsZHMocmVzdWx0LnRhYmxlLCByZXN1bHQudGFibGVEdWNrREJUeXBlcyksXG4gICAgW3Jlc3VsdF1cbiAgKTtcbiAgY29uc3QgZGF0YUNvbnRhaW5lciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGNvbHMgPSBbLi4uQXJyYXkocmVzdWx0LnRhYmxlLm51bUNvbHMpLmtleXMoKV0ubWFwKGkgPT4gcmVzdWx0LnRhYmxlLmdldENoaWxkQXQoaSkpO1xuXG4gICAgY29uc3QgZGF0YUNvbnRhaW5lciA9IGNyZWF0ZURhdGFDb250YWluZXIoY29scywge1xuICAgICAgZmllbGRzLFxuICAgICAgaW5wdXREYXRhRm9ybWF0OiBEYXRhRm9ybS5DT0xTX0FSUkFZXG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGFDb250YWluZXI7XG4gIH0sIFtyZXN1bHQsIGZpZWxkc10pO1xuXG4gIGNvbnN0IGNvbHVtbnMgPSB1c2VNZW1vKCgpID0+IGZpZWxkcy5tYXAoZiA9PiBmLm5hbWUpLCBbZmllbGRzXSk7XG4gIGNvbnN0IGNvbE1ldGEgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBmaWVsZHMucmVkdWNlKFxuICAgICAgICAoYWNjLCB7bmFtZSwgZGlzcGxheU5hbWUsIHR5cGUsIGRpc3BsYXlGb3JtYXR9LCBjb2xJZHgpID0+ICh7XG4gICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgIFtuYW1lXToge1xuICAgICAgICAgICAgLy8gYmVjYXVzZSAnJyB8fCAnYWFhJyA9ICdhYWEnXG4gICAgICAgICAgICBuYW1lOiBkaXNwbGF5TmFtZSAhPT0gdW5kZWZpbmVkID8gZGlzcGxheU5hbWUgOiBuYW1lLFxuICAgICAgICAgICAgZGlzcGxheU5hbWUsXG4gICAgICAgICAgICBkaXNwbGF5Rm9ybWF0LFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGNvbElkeFxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgICApLFxuICAgIFtmaWVsZHNdXG4gICk7XG4gIGNvbnN0IGNvcHlUYWJsZUNvbHVtbiA9IHVzZUNhbGxiYWNrKFxuICAgIGNvbHVtbiA9PiB7XG4gICAgICBjb25zdCB7Y29sSWR4LCB0eXBlfSA9IGNvbE1ldGFbY29sdW1uXTtcbiAgICAgIGNvbnN0IHRleHQgPSBkYXRhQ29udGFpbmVyXG4gICAgICAgIC5tYXBJbmRleChyb3cgPT4gcGFyc2VGaWVsZFZhbHVlKGRhdGFDb250YWluZXIudmFsdWVBdChyb3cuaW5kZXgsIGNvbElkeCksIHR5cGUpKVxuICAgICAgICAuam9pbignXFxuJyk7XG4gICAgICBuYXZpZ2F0b3I/LmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgfSxcbiAgICBbY29sTWV0YSwgZGF0YUNvbnRhaW5lcl1cbiAgKTtcbiAgY29uc3QgcGluVGFibGVDb2x1bW4gPSB1c2VDYWxsYmFjayhcbiAgICBjb2x1bW4gPT5cbiAgICAgIHBpbm5lZENvbHVtbnMuaW5jbHVkZXMoY29sdW1uKVxuICAgICAgICA/IHNldFBpbm5lZENvbHVtbnMocGlubmVkQ29sdW1ucy5maWx0ZXIoYyA9PiBjICE9PSBjb2x1bW4pKVxuICAgICAgICA6IHNldFBpbm5lZENvbHVtbnMoWy4uLnBpbm5lZENvbHVtbnMsIGNvbHVtbl0pLFxuICAgIFtwaW5uZWRDb2x1bW5zXVxuICApO1xuXG4gIC8vIFRPRE8gUG90ZW50aWFsbHkgY29zdGx5IG9wZXJhdGlvbiBmb3Igbm9uIHJvdyBiYXNlZCBkYXRhIGNvbnRhaW5lcnMuIFJldmlzaXQgc29ydGluZyBiZWxvdy5cbiAgY29uc3QgZGF0YVRhYmxlU3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBtaW5DZWxsU2l6ZSxcbiAgICAgIGNlbGxQYWRkaW5nLFxuICAgICAgb3B0aW9uc0J1dHRvbjpcbiAgICAgICAgdGhlbWUuZmllbGRUb2tlbldpZHRoICsgdGhlbWUuZmllbGRUb2tlblJpZ2h0TWFyZ2luICsgb3B0aW9uQnV0dG9uV2lkdGggKyBwaW5CdXR0b24sXG4gICAgICBmb250U2l6ZTogdGhlbWUuY2VsbEZvbnRTaXplLFxuICAgICAgZm9udDogdGhlbWUuZm9udEZhbWlseVxuICAgIH0pLFxuICAgIFt0aGVtZV1cbiAgKTtcbiAgY29uc3QgY2VsbFNpemVDYWNoZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBjb2x1bW5zLnJlZHVjZSgoYWNjLCBjb2x1bW4pID0+IHtcbiAgICAgIGNvbnN0IHtjb2xJZHgsIGRpc3BsYXlOYW1lLCB0eXBlfSA9IGNvbE1ldGFbY29sdW1uXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgW2NvbHVtbl06IHJlbmRlcmVkU2l6ZSh7XG4gICAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgZGF0YUNvbnRhaW5lcixcbiAgICAgICAgICAgIGNvbHVtbjogZGlzcGxheU5hbWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbElkeCxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIG51bVJvd3NUb0NhbGN1bGF0ZTogcm93c1RvQ2FsY3VsYXRlUHJldmlldyxcbiAgICAgICAgICAuLi5kYXRhVGFibGVTdHlsZVxuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9LCB7fSk7XG4gIH0sIFtjb2x1bW5zLCBjb2xNZXRhLCBkYXRhQ29udGFpbmVyLCByb3dzVG9DYWxjdWxhdGVQcmV2aWV3LCBkYXRhVGFibGVTdHlsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPERhdGFUYWJsZVxuICAgICAgY29sTWV0YT17Y29sTWV0YX1cbiAgICAgIGNvbHVtbnM9e2NvbHVtbnN9XG4gICAgICBjZWxsU2l6ZUNhY2hlPXtjZWxsU2l6ZUNhY2hlfVxuICAgICAgZGF0YUNvbnRhaW5lcj17ZGF0YUNvbnRhaW5lcn1cbiAgICAgIHBpbm5lZENvbHVtbnM9e3Bpbm5lZENvbHVtbnN9XG4gICAgICBjb3B5VGFibGVDb2x1bW49e2NvcHlUYWJsZUNvbHVtbn1cbiAgICAgIHBpblRhYmxlQ29sdW1uPXtwaW5UYWJsZUNvbHVtbn1cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IFByZXZpZXdEYXRhUGFuZWwgPSB3aXRoVGhlbWUoXG4gIFByZXZpZXdEYXRhUGFuZWxXT1RoZW1lXG4pIGFzIFJlYWN0LkZDPFByZXZpZXdEYXRhUGFuZWxQcm9wcz47XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUFnRixTQUFBSyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVAsd0JBQUFPLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFB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
@@ -1,171 +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.SchemaPanelDropMessage = exports.SchemaPanel = void 0;
9
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
- var _react = _interopRequireWildcard(require("react"));
14
- var _reactRedux = require("react-redux");
15
- var _styledComponents = _interopRequireDefault(require("styled-components"));
16
- var _components = require("@kepler.gl/components");
17
- var _processors = require("@kepler.gl/processors");
18
- var _utils = require("@kepler.gl/utils");
19
- var _tree = require("./tree");
20
- var _duckdbTableUtils = require("../table/duckdb-table-utils");
21
- var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT
22
- // Copyright contributors to the kepler.gl project
23
- 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); }
24
- 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; }
25
- // TODO note that demo state is available in demo-app, but not when add modules to dependencies in a custom map
26
-
27
- var StyledSchemaPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-size: 12px;\n padding: 12px;\n font-family: ", ";\n height: 100%;\n"])), function (props) {
28
- return props.theme.textColor;
29
- }, function (props) {
30
- return props.theme.fontFamily;
31
- });
32
- var StyledLoadingSpinnerWrapper = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n"])));
33
- function getColumnSchema(_x, _x2) {
34
- return _getColumnSchema.apply(this, arguments);
35
- }
36
- function _getColumnSchema() {
37
- _getColumnSchema = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(connection, tableName) {
38
- var columnResult, columnDescribe, keplerFields;
39
- return _regenerator["default"].wrap(function _callee2$(_context2) {
40
- while (1) switch (_context2.prev = _context2.next) {
41
- case 0:
42
- _context2.next = 2;
43
- return connection.query("Select * from '".concat(tableName, "' LIMIT 1;"));
44
- case 2:
45
- columnResult = _context2.sent;
46
- _context2.next = 5;
47
- return (0, _duckdbTableUtils.getDuckDBColumnTypes)(connection, tableName);
48
- case 5:
49
- columnDescribe = _context2.sent;
50
- keplerFields = (0, _processors.arrowSchemaToFields)(columnResult, (0, _duckdbTableUtils.getDuckDBColumnTypesMap)(columnDescribe));
51
- return _context2.abrupt("return", {
52
- key: tableName,
53
- object: {
54
- type: 'dataset',
55
- tableName: tableName
56
- },
57
- children: columnResult.schema.fields.map(function (field, fieldIndex) {
58
- return {
59
- key: field.name,
60
- object: {
61
- type: 'column',
62
- name: field.name,
63
- arrowType: field.type,
64
- fieldType: keplerFields[fieldIndex].type
65
- }
66
- };
67
- })
68
- });
69
- case 8:
70
- case "end":
71
- return _context2.stop();
72
- }
73
- }, _callee2);
74
- }));
75
- return _getColumnSchema.apply(this, arguments);
76
- }
77
- function getSchemaSuggestion(result) {
78
- return result.reduce(function (accu, data) {
79
- var columns = data.children.map(function (child) {
80
- return {
81
- column_name: child.key,
82
- table_name: data.key
83
- };
84
- });
85
- return accu.concat(columns);
86
- }, []);
87
- }
88
- var StyledSchemaPanelDropMessage = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n flex-direction: column;\n text-align: center;\n\n div {\n margin: 5px;\n }\n .header {\n font-size: 15px;\n }\n .bold {\n font-weight: 700;\n }\n"])));
89
- var StyledAddIcon = (0, _styledComponents["default"])(_components.Icons.Add)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline;\n margin-top: -3px;\n"])));
90
- var SchemaPanelDropMessage = exports.SchemaPanelDropMessage = function SchemaPanelDropMessage() {
91
- return /*#__PURE__*/_react["default"].createElement(StyledSchemaPanelDropMessage, null, /*#__PURE__*/_react["default"].createElement("div", {
92
- className: "header"
93
- }, /*#__PURE__*/_react["default"].createElement(StyledAddIcon, null), " Add files to DuckDB"), /*#__PURE__*/_react["default"].createElement("div", {
94
- className: "bold"
95
- }, "Supported formats: "), /*#__PURE__*/_react["default"].createElement("div", null, ".csv, .json, .geojson, .parquet, .arrow"), /*#__PURE__*/_react["default"].createElement("div", null, "Files you add will stay local to your browser."));
96
- };
97
- var SchemaPanel = exports.SchemaPanel = function SchemaPanel(_ref) {
98
- var setTableSchema = _ref.setTableSchema,
99
- droppedFile = _ref.droppedFile,
100
- schemaUpdateTrigger = _ref.schemaUpdateTrigger;
101
- var _useState = (0, _react.useState)([]),
102
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
103
- columnSchemas = _useState2[0],
104
- setColumnSchemas = _useState2[1];
105
- var datasets = (0, _reactRedux.useSelector)(function (state) {
106
- var _state$demo;
107
- return state === null || state === void 0 || (_state$demo = state.demo) === null || _state$demo === void 0 || (_state$demo = _state$demo.keplerGl) === null || _state$demo === void 0 || (_state$demo = _state$demo.map) === null || _state$demo === void 0 ? void 0 : _state$demo.visState.datasets;
108
- });
109
- var getTableSchema = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
110
- var _tableResult$getChild, _ref3;
111
- var db, c, tableResult, tableNames, result, tableSchema;
112
- return _regenerator["default"].wrap(function _callee$(_context) {
113
- while (1) switch (_context.prev = _context.next) {
114
- case 0:
115
- db = (0, _utils.getApplicationConfig)().database;
116
- if (db) {
117
- _context.next = 4;
118
- break;
119
- }
120
- console.error('The database is not configured properly.');
121
- return _context.abrupt("return");
122
- case 4:
123
- _context.next = 6;
124
- return db.connect();
125
- case 6:
126
- c = _context.sent;
127
- _context.next = 9;
128
- return c.query('SHOW TABLES;');
129
- case 9:
130
- tableResult = _context.sent;
131
- tableNames = (_tableResult$getChild = tableResult.getChildAt(0)) === null || _tableResult$getChild === void 0 ? void 0 : _tableResult$getChild.toJSON();
132
- _context.next = 13;
133
- return Promise.all((_ref3 = tableNames || []) === null || _ref3 === void 0 ? void 0 : _ref3.map(function (name) {
134
- return getColumnSchema(c, name);
135
- }));
136
- case 13:
137
- result = _context.sent;
138
- tableSchema = getSchemaSuggestion(result);
139
- setColumnSchemas(result);
140
- setTableSchema(tableSchema);
141
- _context.next = 19;
142
- return c.close();
143
- case 19:
144
- case "end":
145
- return _context.stop();
146
- }
147
- }, _callee);
148
- })), [setColumnSchemas, setTableSchema, schemaUpdateTrigger]);
149
- (0, _react.useEffect)(function () {
150
- getTableSchema();
151
- }, [datasets, droppedFile, getTableSchema]);
152
- return /*#__PURE__*/_react["default"].createElement(StyledSchemaPanel, null, columnSchemas !== null && columnSchemas !== void 0 && columnSchemas.length ? columnSchemas.map(function (data) {
153
- return /*#__PURE__*/_react["default"].createElement(_tree.Tree, {
154
- key: data.key,
155
- treeData: data,
156
- renderNode: function renderNode(node) {
157
- if (node.object.type === 'dataset') {
158
- return /*#__PURE__*/_react["default"].createElement(_tree.DatasetNode, {
159
- node: node
160
- });
161
- } else if (node.object.type === 'column') {
162
- return /*#__PURE__*/_react["default"].createElement(_tree.ColumnNode, {
163
- node: node
164
- });
165
- }
166
- return null;
167
- }
168
- });
169
- }) : droppedFile ? /*#__PURE__*/_react["default"].createElement(StyledLoadingSpinnerWrapper, null, /*#__PURE__*/_react["default"].createElement(_components.LoadingSpinner, null)) : /*#__PURE__*/_react["default"].createElement(SchemaPanelDropMessage, null));
170
- };
171
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb21wb25lbnRzIiwiX3Byb2Nlc3NvcnMiLCJfdXRpbHMiLCJfdHJlZSIsIl9kdWNrZGJUYWJsZVV0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU3R5bGVkU2NoZW1hUGFuZWwiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3IiLCJmb250RmFtaWx5IiwiU3R5bGVkTG9hZGluZ1NwaW5uZXJXcmFwcGVyIiwiZ2V0Q29sdW1uU2NoZW1hIiwiX3giLCJfeDIiLCJfZ2V0Q29sdW1uU2NoZW1hIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZTIiLCJjb25uZWN0aW9uIiwidGFibGVOYW1lIiwiY29sdW1uUmVzdWx0IiwiY29sdW1uRGVzY3JpYmUiLCJrZXBsZXJGaWVsZHMiLCJ3cmFwIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwicHJldiIsIm5leHQiLCJxdWVyeSIsImNvbmNhdCIsInNlbnQiLCJnZXREdWNrREJDb2x1bW5UeXBlcyIsImFycm93U2NoZW1hVG9GaWVsZHMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImFicnVwdCIsImtleSIsIm9iamVjdCIsInR5cGUiLCJjaGlsZHJlbiIsInNjaGVtYSIsImZpZWxkcyIsIm1hcCIsImZpZWxkIiwiZmllbGRJbmRleCIsIm5hbWUiLCJhcnJvd1R5cGUiLCJmaWVsZFR5cGUiLCJzdG9wIiwiZ2V0U2NoZW1hU3VnZ2VzdGlvbiIsInJlc3VsdCIsInJlZHVjZSIsImFjY3UiLCJkYXRhIiwiY29sdW1ucyIsImNoaWxkIiwiY29sdW1uX25hbWUiLCJ0YWJsZV9uYW1lIiwiU3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSIsIlN0eWxlZEFkZEljb24iLCJJY29ucyIsIkFkZCIsIlNjaGVtYVBhbmVsRHJvcE1lc3NhZ2UiLCJleHBvcnRzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIlNjaGVtYVBhbmVsIiwiX3JlZiIsInNldFRhYmxlU2NoZW1hIiwiZHJvcHBlZEZpbGUiLCJzY2hlbWFVcGRhdGVUcmlnZ2VyIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29sdW1uU2NoZW1hcyIsInNldENvbHVtblNjaGVtYXMiLCJkYXRhc2V0cyIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJfc3RhdGUkZGVtbyIsImRlbW8iLCJrZXBsZXJHbCIsInZpc1N0YXRlIiwiZ2V0VGFibGVTY2hlbWEiLCJ1c2VDYWxsYmFjayIsIl9jYWxsZWUiLCJfdGFibGVSZXN1bHQkZ2V0Q2hpbGQiLCJfcmVmMyIsImRiIiwiYyIsInRhYmxlUmVzdWx0IiwidGFibGVOYW1lcyIsInRhYmxlU2NoZW1hIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZGF0YWJhc2UiLCJjb25zb2xlIiwiZXJyb3IiLCJjb25uZWN0IiwiZ2V0Q2hpbGRBdCIsInRvSlNPTiIsIlByb21pc2UiLCJhbGwiLCJjbG9zZSIsInVzZUVmZmVjdCIsImxlbmd0aCIsIlRyZWUiLCJ0cmVlRGF0YSIsInJlbmRlck5vZGUiLCJub2RlIiwiRGF0YXNldE5vZGUiLCJDb2x1bW5Ob2RlIiwiTG9hZGluZ1NwaW5uZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9zY2hlbWEtcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZVNlbGVjdG9yfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtMb2FkaW5nU3Bpbm5lciwgSWNvbnN9IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge2Fycm93U2NoZW1hVG9GaWVsZHN9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZywgRGF0YWJhc2VDb25uZWN0aW9ufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHtUcmVlLCBEYXRhc2V0Tm9kZSwgQ29sdW1uTm9kZSwgVHJlZU5vZGVEYXRhfSBmcm9tICcuL3RyZWUnO1xuaW1wb3J0IHtnZXREdWNrREJDb2x1bW5UeXBlcywgZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXB9IGZyb20gJy4uL3RhYmxlL2R1Y2tkYi10YWJsZS11dGlscyc7XG5cbi8vIFRPRE8gbm90ZSB0aGF0IGRlbW8gc3RhdGUgaXMgYXZhaWxhYmxlIGluIGRlbW8tYXBwLCBidXQgbm90IHdoZW4gYWRkIG1vZHVsZXMgdG8gZGVwZW5kZW5jaWVzIGluIGEgY3VzdG9tIG1hcFxudHlwZSBTdGF0ZSA9IHtcbiAgZGVtbz86IHtcbiAgICBrZXBsZXJHbDoge1xuICAgICAgbWFwOiB7XG4gICAgICAgIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn07XG5cbmNvbnN0IFN0eWxlZFNjaGVtYVBhbmVsID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBwYWRkaW5nOiAxMnB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbiAgaGVpZ2h0OiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkTG9hZGluZ1NwaW5uZXJXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbmA7XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbHVtblNjaGVtYShjb25uZWN0aW9uOiBEYXRhYmFzZUNvbm5lY3Rpb24sIHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbHVtblJlc3VsdCA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYFNlbGVjdCAqIGZyb20gJyR7dGFibGVOYW1lfScgTElNSVQgMTtgKTtcblxuICBjb25zdCBjb2x1bW5EZXNjcmliZSA9IGF3YWl0IGdldER1Y2tEQkNvbHVtblR5cGVzKGNvbm5lY3Rpb24sIHRhYmxlTmFtZSk7XG4gIGNvbnN0IGtlcGxlckZpZWxkcyA9IGFycm93U2NoZW1hVG9GaWVsZHMoY29sdW1uUmVzdWx0LCBnZXREdWNrREJDb2x1bW5UeXBlc01hcChjb2x1bW5EZXNjcmliZSkpO1xuXG4gIHJldHVybiB7XG4gICAga2V5OiB0YWJsZU5hbWUsXG4gICAgb2JqZWN0OiB7XG4gICAgICB0eXBlOiAnZGF0YXNldCcsXG4gICAgICB0YWJsZU5hbWU6IHRhYmxlTmFtZVxuICAgIH0sXG4gICAgY2hpbGRyZW46IGNvbHVtblJlc3VsdC5zY2hlbWEuZmllbGRzLm1hcCgoZmllbGQsIGZpZWxkSW5kZXgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogZmllbGQubmFtZSxcbiAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgdHlwZTogJ2NvbHVtbicsXG4gICAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgICBhcnJvd1R5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgZmllbGRUeXBlOiBrZXBsZXJGaWVsZHNbZmllbGRJbmRleF0udHlwZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNjaGVtYVN1Z2dlc3Rpb24gPSB7Y29sdW1uX25hbWU6IHN0cmluZzsgdGFibGVfbmFtZTogc3RyaW5nfTtcblxuZnVuY3Rpb24gZ2V0U2NoZW1hU3VnZ2VzdGlvbihyZXN1bHQ6IHtrZXk6IHN0cmluZzsgY2hpbGRyZW46IHtrZXk6IHN0cmluZ31bXX1bXSkge1xuICByZXR1cm4gcmVzdWx0LnJlZHVjZSgoYWNjdSwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSBkYXRhLmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoe1xuICAgICAgY29sdW1uX25hbWU6IGNoaWxkLmtleSxcbiAgICAgIHRhYmxlX25hbWU6IGRhdGEua2V5XG4gICAgfSkpO1xuICAgIHJldHVybiBhY2N1LmNvbmNhdChjb2x1bW5zKTtcbiAgfSwgW10gYXMgU2NoZW1hU3VnZ2VzdGlvbltdKTtcbn1cblxudHlwZSBTY2hlbWFQYW5lbFByb3BzID0ge1xuICBzZXRUYWJsZVNjaGVtYTogKHRhYmxlU2NoZW1hOiBTY2hlbWFTdWdnZXN0aW9uW10pID0+IHZvaWQ7XG4gIGRyb3BwZWRGaWxlOiBGaWxlIHwgbnVsbDtcbiAgc2NoZW1hVXBkYXRlVHJpZ2dlcjogbnVtYmVyO1xufTtcblxuY29uc3QgU3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBkaXYge1xuICAgIG1hcmdpbjogNXB4O1xuICB9XG4gIC5oZWFkZXIge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgfVxuICAuYm9sZCB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkQWRkSWNvbiA9IHN0eWxlZChJY29ucy5BZGQpYFxuICBkaXNwbGF5OiBpbmxpbmU7XG4gIG1hcmdpbi10b3A6IC0zcHg7XG5gO1xuXG5leHBvcnQgY29uc3QgU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyXCI+XG4gICAgICAgIDxTdHlsZWRBZGRJY29uIC8+IEFkZCBmaWxlcyB0byBEdWNrREJcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJib2xkXCI+U3VwcG9ydGVkIGZvcm1hdHM6IDwvZGl2PlxuICAgICAgPGRpdj4uY3N2LCAuanNvbiwgLmdlb2pzb24sIC5wYXJxdWV0LCAuYXJyb3c8L2Rpdj5cbiAgICAgIDxkaXY+RmlsZXMgeW91IGFkZCB3aWxsIHN0YXkgbG9jYWwgdG8geW91ciBicm93c2VyLjwvZGl2PlxuICAgIDwvU3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZT5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBTY2hlbWFQYW5lbCA9ICh7XG4gIHNldFRhYmxlU2NoZW1hLFxuICBkcm9wcGVkRmlsZSxcbiAgc2NoZW1hVXBkYXRlVHJpZ2dlclxufTogU2NoZW1hUGFuZWxQcm9wcykgPT4ge1xuICBjb25zdCBbY29sdW1uU2NoZW1hcywgc2V0Q29sdW1uU2NoZW1hc10gPSB1c2VTdGF0ZTxUcmVlTm9kZURhdGE8e3R5cGU6IHN0cmluZ30+W10+KFtdKTtcbiAgY29uc3QgZGF0YXNldHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IFN0YXRlKSA9PiBzdGF0ZT8uZGVtbz8ua2VwbGVyR2w/Lm1hcD8udmlzU3RhdGUuZGF0YXNldHMpO1xuXG4gIGNvbnN0IGdldFRhYmxlU2NoZW1hID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRiID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5kYXRhYmFzZTtcbiAgICBpZiAoIWRiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdUaGUgZGF0YWJhc2UgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGMgPSBhd2FpdCBkYi5jb25uZWN0KCk7XG5cbiAgICBjb25zdCB0YWJsZVJlc3VsdCA9IGF3YWl0IGMucXVlcnkoJ1NIT1cgVEFCTEVTOycpO1xuXG4gICAgY29uc3QgdGFibGVOYW1lczogc3RyaW5nW10gfCB1bmRlZmluZWQgPSB0YWJsZVJlc3VsdC5nZXRDaGlsZEF0KDApPy50b0pTT04oKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKCh0YWJsZU5hbWVzIHx8IFtdKT8ubWFwKG5hbWUgPT4gZ2V0Q29sdW1uU2NoZW1hKGMsIG5hbWUpKSk7XG4gICAgY29uc3QgdGFibGVTY2hlbWEgPSBnZXRTY2hlbWFTdWdnZXN0aW9uKHJlc3VsdCk7XG5cbiAgICBzZXRDb2x1bW5TY2hlbWFzKHJlc3VsdCk7XG4gICAgc2V0VGFibGVTY2hlbWEodGFibGVTY2hlbWEpO1xuICAgIGF3YWl0IGMuY2xvc2UoKTtcblxuICAgIC8vIHNjaGVtYVVwZGF0ZVRyaWdnZXIgaW5kaWNhdGVzIHBvc3NpYmxlIGNoYW5nZSBpbiBEdWNrREJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtzZXRDb2x1bW5TY2hlbWFzLCBzZXRUYWJsZVNjaGVtYSwgc2NoZW1hVXBkYXRlVHJpZ2dlcl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZ2V0VGFibGVTY2hlbWEoKTtcbiAgfSwgW2RhdGFzZXRzLCBkcm9wcGVkRmlsZSwgZ2V0VGFibGVTY2hlbWFdKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRTY2hlbWFQYW5lbD5cbiAgICAgIHtjb2x1bW5TY2hlbWFzPy5sZW5ndGggPyAoXG4gICAgICAgIGNvbHVtblNjaGVtYXMubWFwKGRhdGEgPT4gKFxuICAgICAgICAgIDxUcmVlXG4gICAgICAgICAgICBrZXk9e2RhdGEua2V5fVxuICAgICAgICAgICAgdHJlZURhdGE9e2RhdGF9XG4gICAgICAgICAgICByZW5kZXJOb2RlPXtub2RlID0+IHtcbiAgICAgICAgICAgICAgaWYgKG5vZGUub2JqZWN0LnR5cGUgPT09ICdkYXRhc2V0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiA8RGF0YXNldE5vZGUgbm9kZT17bm9kZX0gLz47XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5vYmplY3QudHlwZSA9PT0gJ2NvbHVtbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPENvbHVtbk5vZGUgbm9kZT17bm9kZX0gLz47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpXG4gICAgICApIDogZHJvcHBlZEZpbGUgPyAoXG4gICAgICAgIDxTdHlsZWRMb2FkaW5nU3Bpbm5lcldyYXBwZXI+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvU3R5bGVkTG9hZGluZ1NwaW5uZXJXcmFwcGVyPlxuICAgICAgKSA6IChcbiAgICAgICAgPFNjaGVtYVBhbmVsRHJvcE1lc3NhZ2UgLz5cbiAgICAgICl9XG4gICAgPC9TdHlsZWRTY2hlbWFQYW5lbD5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFFQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFFQSxJQUFBTyxLQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxpQkFBQSxHQUFBUixPQUFBO0FBQTBGLElBQUFTLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFiMUY7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBZix3QkFBQWUsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMs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