@kepler.gl/duckdb 3.3.0-alpha.5 → 3.3.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.
Files changed (39) 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} +1 -1
  10. package/dist/cjs/processors/data-processor.js +353 -0
  11. package/dist/cjs/table/duckdb-table-utils.js +668 -0
  12. package/dist/cjs/table/duckdb-table.js +479 -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 +644 -0
  26. package/dist/esm/table/duckdb-table.js +474 -0
  27. package/dist/esm/table/index.js +5 -0
  28. package/dist/esm/utils/perf.js +40 -0
  29. package/package.json +21 -17
  30. package/dist/adapters/duckdb-wasm-adapter.js +0 -258
  31. package/dist/components/monaco-editor.js +0 -174
  32. package/dist/components/preview-data-panel.js +0 -127
  33. package/dist/components/schema-panel.js +0 -170
  34. package/dist/components/sql-panel.js +0 -395
  35. package/dist/components/tree.js +0 -90
  36. package/dist/processors/data-processor.js +0 -353
  37. package/dist/table/duckdb-table-utils.js +0 -668
  38. package/dist/table/duckdb-table.js +0 -479
  39. package/dist/utils/perf.js +0 -46
@@ -0,0 +1,127 @@
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 _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
18
+ 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; }
19
+ 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
20
+ // Copyright contributors to the kepler.gl project
21
+ var DEFAULT_ROWS_TO_CALCULATE_PREVIEW = 100;
22
+ // min Cellsize should take into account option button and field token
23
+ var minCellSize = 80;
24
+ // option buttons and field token
25
+ var optionButtonWidth = 20;
26
+ var pinButton = 20;
27
+ var cellPadding = 20;
28
+ var PreviewDataPanelWOTheme = function PreviewDataPanelWOTheme(_ref) {
29
+ var result = _ref.result,
30
+ _ref$rowsToCalculateP = _ref.rowsToCalculatePreview,
31
+ rowsToCalculatePreview = _ref$rowsToCalculateP === void 0 ? DEFAULT_ROWS_TO_CALCULATE_PREVIEW : _ref$rowsToCalculateP,
32
+ _ref$defaultPinnedCol = _ref.defaultPinnedColumns,
33
+ defaultPinnedColumns = _ref$defaultPinnedCol === void 0 ? [] : _ref$defaultPinnedCol,
34
+ theme = _ref.theme;
35
+ var _useState = (0, _react.useState)(defaultPinnedColumns),
36
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
37
+ pinnedColumns = _useState2[0],
38
+ setPinnedColumns = _useState2[1];
39
+ var fields = (0, _react.useMemo)(function () {
40
+ return (0, _processors.arrowSchemaToFields)(result.table, result.tableDuckDBTypes);
41
+ }, [result]);
42
+ var dataContainer = (0, _react.useMemo)(function () {
43
+ var cols = (0, _toConsumableArray2["default"])(Array(result.table.numCols).keys()).map(function (i) {
44
+ return result.table.getChildAt(i);
45
+ });
46
+ var dataContainer = (0, _utils.createDataContainer)(cols, {
47
+ fields: fields,
48
+ inputDataFormat: _utils.DataForm.COLS_ARRAY
49
+ });
50
+ return dataContainer;
51
+ }, [result, fields]);
52
+ var columns = (0, _react.useMemo)(function () {
53
+ return fields.map(function (f) {
54
+ return f.name;
55
+ });
56
+ }, [fields]);
57
+ var colMeta = (0, _react.useMemo)(function () {
58
+ return fields.reduce(function (acc, _ref2, colIdx) {
59
+ var name = _ref2.name,
60
+ displayName = _ref2.displayName,
61
+ type = _ref2.type,
62
+ displayFormat = _ref2.displayFormat;
63
+ return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, name, {
64
+ // because '' || 'aaa' = 'aaa'
65
+ name: displayName !== undefined ? displayName : name,
66
+ displayName: displayName,
67
+ displayFormat: displayFormat,
68
+ type: type,
69
+ colIdx: colIdx
70
+ }));
71
+ }, {});
72
+ }, [fields]);
73
+ var copyTableColumn = (0, _react.useCallback)(function (column) {
74
+ var _navigator;
75
+ var _colMeta$column = colMeta[column],
76
+ colIdx = _colMeta$column.colIdx,
77
+ type = _colMeta$column.type;
78
+ var text = dataContainer.mapIndex(function (row) {
79
+ return (0, _utils.parseFieldValue)(dataContainer.valueAt(row.index, colIdx), type);
80
+ }).join('\n');
81
+ (_navigator = navigator) === null || _navigator === void 0 || _navigator.clipboard.writeText(text);
82
+ }, [colMeta, dataContainer]);
83
+ var pinTableColumn = (0, _react.useCallback)(function (column) {
84
+ return pinnedColumns.includes(column) ? setPinnedColumns(pinnedColumns.filter(function (c) {
85
+ return c !== column;
86
+ })) : setPinnedColumns([].concat((0, _toConsumableArray2["default"])(pinnedColumns), [column]));
87
+ }, [pinnedColumns]);
88
+
89
+ // TODO Potentially costly operation for non row based data containers. Revisit sorting below.
90
+ var dataTableStyle = (0, _react.useMemo)(function () {
91
+ return {
92
+ minCellSize: minCellSize,
93
+ cellPadding: cellPadding,
94
+ optionsButton: theme.fieldTokenWidth + theme.fieldTokenRightMargin + optionButtonWidth + pinButton,
95
+ fontSize: theme.cellFontSize,
96
+ font: theme.fontFamily
97
+ };
98
+ }, [theme]);
99
+ var cellSizeCache = (0, _react.useMemo)(function () {
100
+ return columns.reduce(function (acc, column) {
101
+ var _colMeta$column2 = colMeta[column],
102
+ colIdx = _colMeta$column2.colIdx,
103
+ displayName = _colMeta$column2.displayName,
104
+ type = _colMeta$column2.type;
105
+ return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, column, (0, _components.renderedSize)(_objectSpread({
106
+ text: {
107
+ dataContainer: dataContainer,
108
+ column: displayName
109
+ },
110
+ colIdx: colIdx,
111
+ type: type,
112
+ numRowsToCalculate: rowsToCalculatePreview
113
+ }, dataTableStyle))));
114
+ }, {});
115
+ }, [columns, colMeta, dataContainer, rowsToCalculatePreview, dataTableStyle]);
116
+ return /*#__PURE__*/_react["default"].createElement(_components.DataTable, {
117
+ colMeta: colMeta,
118
+ columns: columns,
119
+ cellSizeCache: cellSizeCache,
120
+ dataContainer: dataContainer,
121
+ pinnedColumns: pinnedColumns,
122
+ copyTableColumn: copyTableColumn,
123
+ pinTableColumn: pinTableColumn
124
+ });
125
+ };
126
+ var PreviewDataPanel = exports.PreviewDataPanel = (0, _styledComponents.withTheme)(PreviewDataPanelWOTheme);
127
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb21wb25lbnRzIiwiX3Byb2Nlc3NvcnMiLCJfdXRpbHMiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiREVGQVVMVF9ST1dTX1RPX0NBTENVTEFURV9QUkVWSUVXIiwibWluQ2VsbFNpemUiLCJvcHRpb25CdXR0b25XaWR0aCIsInBpbkJ1dHRvbiIsImNlbGxQYWRkaW5nIiwiUHJldmlld0RhdGFQYW5lbFdPVGhlbWUiLCJfcmVmIiwicmVzdWx0IiwiX3JlZiRyb3dzVG9DYWxjdWxhdGVQIiwicm93c1RvQ2FsY3VsYXRlUHJldmlldyIsIl9yZWYkZGVmYXVsdFBpbm5lZENvbCIsImRlZmF1bHRQaW5uZWRDb2x1bW5zIiwidGhlbWUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJwaW5uZWRDb2x1bW5zIiwic2V0UGlubmVkQ29sdW1ucyIsImZpZWxkcyIsInVzZU1lbW8iLCJhcnJvd1NjaGVtYVRvRmllbGRzIiwidGFibGUiLCJ0YWJsZUR1Y2tEQlR5cGVzIiwiZGF0YUNvbnRhaW5lciIsImNvbHMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiQXJyYXkiLCJudW1Db2xzIiwibWFwIiwiZ2V0Q2hpbGRBdCIsImNyZWF0ZURhdGFDb250YWluZXIiLCJpbnB1dERhdGFGb3JtYXQiLCJEYXRhRm9ybSIsIkNPTFNfQVJSQVkiLCJjb2x1bW5zIiwibmFtZSIsImNvbE1ldGEiLCJyZWR1Y2UiLCJhY2MiLCJfcmVmMiIsImNvbElkeCIsImRpc3BsYXlOYW1lIiwidHlwZSIsImRpc3BsYXlGb3JtYXQiLCJ1bmRlZmluZWQiLCJjb3B5VGFibGVDb2x1bW4iLCJ1c2VDYWxsYmFjayIsImNvbHVtbiIsIl9uYXZpZ2F0b3IiLCJfY29sTWV0YSRjb2x1bW4iLCJ0ZXh0IiwibWFwSW5kZXgiLCJyb3ciLCJwYXJzZUZpZWxkVmFsdWUiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJqb2luIiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwicGluVGFibGVDb2x1bW4iLCJpbmNsdWRlcyIsImMiLCJjb25jYXQiLCJkYXRhVGFibGVTdHlsZSIsIm9wdGlvbnNCdXR0b24iLCJmaWVsZFRva2VuV2lkdGgiLCJmaWVsZFRva2VuUmlnaHRNYXJnaW4iLCJmb250U2l6ZSIsImNlbGxGb250U2l6ZSIsImZvbnQiLCJmb250RmFtaWx5IiwiY2VsbFNpemVDYWNoZSIsIl9jb2xNZXRhJGNvbHVtbjIiLCJyZW5kZXJlZFNpemUiLCJudW1Sb3dzVG9DYWxjdWxhdGUiLCJjcmVhdGVFbGVtZW50IiwiRGF0YVRhYmxlIiwiUHJldmlld0RhdGFQYW5lbCIsImV4cG9ydHMiLCJ3aXRoVGhlbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wcmV2aWV3LWRhdGEtcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGUsIENTU1Byb3BlcnRpZXN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7d2l0aFRoZW1lfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7RGF0YVRhYmxlLCByZW5kZXJlZFNpemV9IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge2Fycm93U2NoZW1hVG9GaWVsZHN9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge3BhcnNlRmllbGRWYWx1ZSwgY3JlYXRlRGF0YUNvbnRhaW5lciwgRGF0YUZvcm19IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG50eXBlIEJhc2VDb21wb25lbnRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG59O1xuXG5jb25zdCBERUZBVUxUX1JPV1NfVE9fQ0FMQ1VMQVRFX1BSRVZJRVcgPSAxMDA7XG4vLyBtaW4gQ2VsbHNpemUgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IG9wdGlvbiBidXR0b24gYW5kIGZpZWxkIHRva2VuXG5jb25zdCBtaW5DZWxsU2l6ZSA9IDgwO1xuLy8gb3B0aW9uIGJ1dHRvbnMgYW5kIGZpZWxkIHRva2VuXG5jb25zdCBvcHRpb25CdXR0b25XaWR0aCA9IDIwO1xuY29uc3QgcGluQnV0dG9uID0gMjA7XG5jb25zdCBjZWxsUGFkZGluZyA9IDIwO1xuXG5leHBvcnQgdHlwZSBDb2xNZXRhID0ge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgY29sSWR4OiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVRhYmxlU3R5bGUgPSB7XG4gIG1pbkNlbGxTaXplPzogbnVtYmVyO1xuICBjZWxsUGFkZGluZz86IG51bWJlcjtcbiAgZm9udFNpemU/OiBudW1iZXI7XG4gIGZvbnQ/OiBzdHJpbmc7XG4gIG9wdGlvbnNCdXR0b24/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeVJlc3VsdCA9IHtcbiAgdGFibGU6IGFycm93LlRhYmxlO1xuICB0YWJsZUR1Y2tEQlR5cGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufTtcblxuZXhwb3J0IHR5cGUgUHJldmlld0RhdGFQYW5lbFByb3BzID0gQmFzZUNvbXBvbmVudFByb3BzICYge1xuICByZXN1bHQ6IFF1ZXJ5UmVzdWx0O1xuICByb3dzVG9DYWxjdWxhdGVQcmV2aWV3PzogbnVtYmVyO1xuICB0aGVtZT86IGFueTtcbiAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdD86IChmb3JtYXRzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSkgPT4gdm9pZDtcbiAgZGVmYXVsdFBpbm5lZENvbHVtbnM/OiBzdHJpbmdbXTtcbiAgZGF0YVRhYmxlU3R5bGU6IERhdGFUYWJsZVN0eWxlO1xuICBvbkFkZFJlc3VsdFRvTWFwOiAocmVzdWx0OiBRdWVyeVJlc3VsdCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IFByZXZpZXdEYXRhUGFuZWxXT1RoZW1lOiBSZWFjdC5GQzxQcmV2aWV3RGF0YVBhbmVsUHJvcHM+ID0gKHtcbiAgcmVzdWx0LFxuICByb3dzVG9DYWxjdWxhdGVQcmV2aWV3ID0gREVGQVVMVF9ST1dTX1RPX0NBTENVTEFURV9QUkVWSUVXLFxuICBkZWZhdWx0UGlubmVkQ29sdW1ucyA9IFtdLFxuICB0aGVtZVxufSkgPT4ge1xuICBjb25zdCBbcGlubmVkQ29sdW1ucywgc2V0UGlubmVkQ29sdW1uc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oZGVmYXVsdFBpbm5lZENvbHVtbnMpO1xuICBjb25zdCBmaWVsZHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGFycm93U2NoZW1hVG9GaWVsZHMocmVzdWx0LnRhYmxlLCByZXN1bHQudGFibGVEdWNrREJUeXBlcyksXG4gICAgW3Jlc3VsdF1cbiAgKTtcbiAgY29uc3QgZGF0YUNvbnRhaW5lciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGNvbHMgPSBbLi4uQXJyYXkocmVzdWx0LnRhYmxlLm51bUNvbHMpLmtleXMoKV0ubWFwKGkgPT4gcmVzdWx0LnRhYmxlLmdldENoaWxkQXQoaSkpO1xuXG4gICAgY29uc3QgZGF0YUNvbnRhaW5lciA9IGNyZWF0ZURhdGFDb250YWluZXIoY29scywge1xuICAgICAgZmllbGRzLFxuICAgICAgaW5wdXREYXRhRm9ybWF0OiBEYXRhRm9ybS5DT0xTX0FSUkFZXG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGFDb250YWluZXI7XG4gIH0sIFtyZXN1bHQsIGZpZWxkc10pO1xuXG4gIGNvbnN0IGNvbHVtbnMgPSB1c2VNZW1vKCgpID0+IGZpZWxkcy5tYXAoZiA9PiBmLm5hbWUpLCBbZmllbGRzXSk7XG4gIGNvbnN0IGNvbE1ldGEgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBmaWVsZHMucmVkdWNlKFxuICAgICAgICAoYWNjLCB7bmFtZSwgZGlzcGxheU5hbWUsIHR5cGUsIGRpc3BsYXlGb3JtYXR9LCBjb2xJZHgpID0+ICh7XG4gICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgIFtuYW1lXToge1xuICAgICAgICAgICAgLy8gYmVjYXVzZSAnJyB8fCAnYWFhJyA9ICdhYWEnXG4gICAgICAgICAgICBuYW1lOiBkaXNwbGF5TmFtZSAhPT0gdW5kZWZpbmVkID8gZGlzcGxheU5hbWUgOiBuYW1lLFxuICAgICAgICAgICAgZGlzcGxheU5hbWUsXG4gICAgICAgICAgICBkaXNwbGF5Rm9ybWF0LFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGNvbElkeFxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgICApLFxuICAgIFtmaWVsZHNdXG4gICk7XG4gIGNvbnN0IGNvcHlUYWJsZUNvbHVtbiA9IHVzZUNhbGxiYWNrKFxuICAgIGNvbHVtbiA9PiB7XG4gICAgICBjb25zdCB7Y29sSWR4LCB0eXBlfSA9IGNvbE1ldGFbY29sdW1uXTtcbiAgICAgIGNvbnN0IHRleHQgPSBkYXRhQ29udGFpbmVyXG4gICAgICAgIC5tYXBJbmRleChyb3cgPT4gcGFyc2VGaWVsZFZhbHVlKGRhdGFDb250YWluZXIudmFsdWVBdChyb3cuaW5kZXgsIGNvbElkeCksIHR5cGUpKVxuICAgICAgICAuam9pbignXFxuJyk7XG4gICAgICBuYXZpZ2F0b3I/LmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgfSxcbiAgICBbY29sTWV0YSwgZGF0YUNvbnRhaW5lcl1cbiAgKTtcbiAgY29uc3QgcGluVGFibGVDb2x1bW4gPSB1c2VDYWxsYmFjayhcbiAgICBjb2x1bW4gPT5cbiAgICAgIHBpbm5lZENvbHVtbnMuaW5jbHVkZXMoY29sdW1uKVxuICAgICAgICA/IHNldFBpbm5lZENvbHVtbnMocGlubmVkQ29sdW1ucy5maWx0ZXIoYyA9PiBjICE9PSBjb2x1bW4pKVxuICAgICAgICA6IHNldFBpbm5lZENvbHVtbnMoWy4uLnBpbm5lZENvbHVtbnMsIGNvbHVtbl0pLFxuICAgIFtwaW5uZWRDb2x1bW5zXVxuICApO1xuXG4gIC8vIFRPRE8gUG90ZW50aWFsbHkgY29zdGx5IG9wZXJhdGlvbiBmb3Igbm9uIHJvdyBiYXNlZCBkYXRhIGNvbnRhaW5lcnMuIFJldmlzaXQgc29ydGluZyBiZWxvdy5cbiAgY29uc3QgZGF0YVRhYmxlU3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBtaW5DZWxsU2l6ZSxcbiAgICAgIGNlbGxQYWRkaW5nLFxuICAgICAgb3B0aW9uc0J1dHRvbjpcbiAgICAgICAgdGhlbWUuZmllbGRUb2tlbldpZHRoICsgdGhlbWUuZmllbGRUb2tlblJpZ2h0TWFyZ2luICsgb3B0aW9uQnV0dG9uV2lkdGggKyBwaW5CdXR0b24sXG4gICAgICBmb250U2l6ZTogdGhlbWUuY2VsbEZvbnRTaXplLFxuICAgICAgZm9udDogdGhlbWUuZm9udEZhbWlseVxuICAgIH0pLFxuICAgIFt0aGVtZV1cbiAgKTtcbiAgY29uc3QgY2VsbFNpemVDYWNoZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBjb2x1bW5zLnJlZHVjZSgoYWNjLCBjb2x1bW4pID0+IHtcbiAgICAgIGNvbnN0IHtjb2xJZHgsIGRpc3BsYXlOYW1lLCB0eXBlfSA9IGNvbE1ldGFbY29sdW1uXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgW2NvbHVtbl06IHJlbmRlcmVkU2l6ZSh7XG4gICAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgZGF0YUNvbnRhaW5lcixcbiAgICAgICAgICAgIGNvbHVtbjogZGlzcGxheU5hbWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbElkeCxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIG51bVJvd3NUb0NhbGN1bGF0ZTogcm93c1RvQ2FsY3VsYXRlUHJldmlldyxcbiAgICAgICAgICAuLi5kYXRhVGFibGVTdHlsZVxuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9LCB7fSk7XG4gIH0sIFtjb2x1bW5zLCBjb2xNZXRhLCBkYXRhQ29udGFpbmVyLCByb3dzVG9DYWxjdWxhdGVQcmV2aWV3LCBkYXRhVGFibGVTdHlsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPERhdGFUYWJsZVxuICAgICAgY29sTWV0YT17Y29sTWV0YX1cbiAgICAgIGNvbHVtbnM9e2NvbHVtbnN9XG4gICAgICBjZWxsU2l6ZUNhY2hlPXtjZWxsU2l6ZUNhY2hlfVxuICAgICAgZGF0YUNvbnRhaW5lcj17ZGF0YUNvbnRhaW5lcn1cbiAgICAgIHBpbm5lZENvbHVtbnM9e3Bpbm5lZENvbHVtbnN9XG4gICAgICBjb3B5VGFibGVDb2x1bW49e2NvcHlUYWJsZUNvbHVtbn1cbiAgICAgIHBpblRhYmxlQ29sdW1uPXtwaW5UYWJsZUNvbHVtbn1cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IFByZXZpZXdEYXRhUGFuZWwgPSB3aXRoVGhlbWUoXG4gIFByZXZpZXdEYXRhUGFuZWxXT1RoZW1lXG4pIGFzIFJlYWN0LkZDPFByZXZpZXdEYXRhUGFuZWxQcm9wcz47XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUFnRixTQUFBRCx3QkFBQU0sQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQVIsdUJBQUEsWUFBQUEsd0JBQUFNLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxtQkFBQVQsQ0FBQSxpQkFBQUEsQ0FBQSxnQkFBQVUsT0FBQSxDQUFBVixDQUFBLDBCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGNBQUFNLEVBQUEsSUFBQWQsQ0FBQSxnQkFBQWMsRUFBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLElBQUFELENBQUEsR0FBQVcsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQWMsRUFBQSxPQUFB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
@@ -0,0 +1,170 @@
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 _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
24
+ // TODO note that demo state is available in demo-app, but not when add modules to dependencies in a custom map
25
+
26
+ 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) {
27
+ return props.theme.textColor;
28
+ }, function (props) {
29
+ return props.theme.fontFamily;
30
+ });
31
+ 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"])));
32
+ function getColumnSchema(_x, _x2) {
33
+ return _getColumnSchema.apply(this, arguments);
34
+ }
35
+ function _getColumnSchema() {
36
+ _getColumnSchema = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(connection, tableName) {
37
+ var columnResult, columnDescribe, keplerFields;
38
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
39
+ while (1) switch (_context2.prev = _context2.next) {
40
+ case 0:
41
+ _context2.next = 2;
42
+ return connection.query("Select * from '".concat(tableName, "' LIMIT 1;"));
43
+ case 2:
44
+ columnResult = _context2.sent;
45
+ _context2.next = 5;
46
+ return (0, _duckdbTableUtils.getDuckDBColumnTypes)(connection, tableName);
47
+ case 5:
48
+ columnDescribe = _context2.sent;
49
+ keplerFields = (0, _processors.arrowSchemaToFields)(columnResult, (0, _duckdbTableUtils.getDuckDBColumnTypesMap)(columnDescribe));
50
+ return _context2.abrupt("return", {
51
+ key: tableName,
52
+ object: {
53
+ type: 'dataset',
54
+ tableName: tableName
55
+ },
56
+ children: columnResult.schema.fields.map(function (field, fieldIndex) {
57
+ return {
58
+ key: field.name,
59
+ object: {
60
+ type: 'column',
61
+ name: field.name,
62
+ arrowType: field.type,
63
+ fieldType: keplerFields[fieldIndex].type
64
+ }
65
+ };
66
+ })
67
+ });
68
+ case 8:
69
+ case "end":
70
+ return _context2.stop();
71
+ }
72
+ }, _callee2);
73
+ }));
74
+ return _getColumnSchema.apply(this, arguments);
75
+ }
76
+ function getSchemaSuggestion(result) {
77
+ return result.reduce(function (accu, data) {
78
+ var columns = data.children.map(function (child) {
79
+ return {
80
+ column_name: child.key,
81
+ table_name: data.key
82
+ };
83
+ });
84
+ return accu.concat(columns);
85
+ }, []);
86
+ }
87
+ 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"])));
88
+ var StyledAddIcon = (0, _styledComponents["default"])(_components.Icons.Add)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline;\n margin-top: -3px;\n"])));
89
+ var SchemaPanelDropMessage = exports.SchemaPanelDropMessage = function SchemaPanelDropMessage() {
90
+ return /*#__PURE__*/_react["default"].createElement(StyledSchemaPanelDropMessage, null, /*#__PURE__*/_react["default"].createElement("div", {
91
+ className: "header"
92
+ }, /*#__PURE__*/_react["default"].createElement(StyledAddIcon, null), " Add files to DuckDB"), /*#__PURE__*/_react["default"].createElement("div", {
93
+ className: "bold"
94
+ }, "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."));
95
+ };
96
+ var SchemaPanel = exports.SchemaPanel = function SchemaPanel(_ref) {
97
+ var setTableSchema = _ref.setTableSchema,
98
+ droppedFile = _ref.droppedFile,
99
+ schemaUpdateTrigger = _ref.schemaUpdateTrigger;
100
+ var _useState = (0, _react.useState)([]),
101
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
102
+ columnSchemas = _useState2[0],
103
+ setColumnSchemas = _useState2[1];
104
+ var datasets = (0, _reactRedux.useSelector)(function (state) {
105
+ var _state$demo;
106
+ 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;
107
+ });
108
+ var getTableSchema = (0, _react.useCallback)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
109
+ var _tableResult$getChild, _ref3;
110
+ var db, c, tableResult, tableNames, result, tableSchema;
111
+ return _regenerator["default"].wrap(function _callee$(_context) {
112
+ while (1) switch (_context.prev = _context.next) {
113
+ case 0:
114
+ db = (0, _utils.getApplicationConfig)().database;
115
+ if (db) {
116
+ _context.next = 4;
117
+ break;
118
+ }
119
+ console.error('The database is not configured properly.');
120
+ return _context.abrupt("return");
121
+ case 4:
122
+ _context.next = 6;
123
+ return db.connect();
124
+ case 6:
125
+ c = _context.sent;
126
+ _context.next = 9;
127
+ return c.query('SHOW TABLES;');
128
+ case 9:
129
+ tableResult = _context.sent;
130
+ tableNames = (_tableResult$getChild = tableResult.getChildAt(0)) === null || _tableResult$getChild === void 0 ? void 0 : _tableResult$getChild.toJSON();
131
+ _context.next = 13;
132
+ return Promise.all((_ref3 = tableNames || []) === null || _ref3 === void 0 ? void 0 : _ref3.map(function (name) {
133
+ return getColumnSchema(c, name);
134
+ }));
135
+ case 13:
136
+ result = _context.sent;
137
+ tableSchema = getSchemaSuggestion(result);
138
+ setColumnSchemas(result);
139
+ setTableSchema(tableSchema);
140
+ _context.next = 19;
141
+ return c.close();
142
+ case 19:
143
+ case "end":
144
+ return _context.stop();
145
+ }
146
+ }, _callee);
147
+ })), [setColumnSchemas, setTableSchema, schemaUpdateTrigger]);
148
+ (0, _react.useEffect)(function () {
149
+ getTableSchema();
150
+ }, [datasets, droppedFile, getTableSchema]);
151
+ return /*#__PURE__*/_react["default"].createElement(StyledSchemaPanel, null, columnSchemas !== null && columnSchemas !== void 0 && columnSchemas.length ? columnSchemas.map(function (data) {
152
+ return /*#__PURE__*/_react["default"].createElement(_tree.Tree, {
153
+ key: data.key,
154
+ treeData: data,
155
+ renderNode: function renderNode(node) {
156
+ if (node.object.type === 'dataset') {
157
+ return /*#__PURE__*/_react["default"].createElement(_tree.DatasetNode, {
158
+ node: node
159
+ });
160
+ } else if (node.object.type === 'column') {
161
+ return /*#__PURE__*/_react["default"].createElement(_tree.ColumnNode, {
162
+ node: node
163
+ });
164
+ }
165
+ return null;
166
+ }
167
+ });
168
+ }) : droppedFile ? /*#__PURE__*/_react["default"].createElement(StyledLoadingSpinnerWrapper, null, /*#__PURE__*/_react["default"].createElement(_components.LoadingSpinner, null)) : /*#__PURE__*/_react["default"].createElement(SchemaPanelDropMessage, null));
169
+ };
170
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb21wb25lbnRzIiwiX3Byb2Nlc3NvcnMiLCJfdXRpbHMiLCJfdHJlZSIsIl9kdWNrZGJUYWJsZVV0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJTdHlsZWRTY2hlbWFQYW5lbCIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvciIsImZvbnRGYW1pbHkiLCJTdHlsZWRMb2FkaW5nU3Bpbm5lcldyYXBwZXIiLCJnZXRDb2x1bW5TY2hlbWEiLCJfeCIsIl94MiIsIl9nZXRDb2x1bW5TY2hlbWEiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlMiIsImNvbm5lY3Rpb24iLCJ0YWJsZU5hbWUiLCJjb2x1bW5SZXN1bHQiLCJjb2x1bW5EZXNjcmliZSIsImtlcGxlckZpZWxkcyIsIndyYXAiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwcmV2IiwibmV4dCIsInF1ZXJ5IiwiY29uY2F0Iiwic2VudCIsImdldER1Y2tEQkNvbHVtblR5cGVzIiwiYXJyb3dTY2hlbWFUb0ZpZWxkcyIsImdldER1Y2tEQkNvbHVtblR5cGVzTWFwIiwiYWJydXB0Iiwia2V5Iiwib2JqZWN0IiwidHlwZSIsImNoaWxkcmVuIiwic2NoZW1hIiwiZmllbGRzIiwibWFwIiwiZmllbGQiLCJmaWVsZEluZGV4IiwibmFtZSIsImFycm93VHlwZSIsImZpZWxkVHlwZSIsInN0b3AiLCJnZXRTY2hlbWFTdWdnZXN0aW9uIiwicmVzdWx0IiwicmVkdWNlIiwiYWNjdSIsImRhdGEiLCJjb2x1bW5zIiwiY2hpbGQiLCJjb2x1bW5fbmFtZSIsInRhYmxlX25hbWUiLCJTdHlsZWRTY2hlbWFQYW5lbERyb3BNZXNzYWdlIiwiU3R5bGVkQWRkSWNvbiIsIkljb25zIiwiQWRkIiwiU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSIsImV4cG9ydHMiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiU2NoZW1hUGFuZWwiLCJfcmVmIiwic2V0VGFibGVTY2hlbWEiLCJkcm9wcGVkRmlsZSIsInNjaGVtYVVwZGF0ZVRyaWdnZXIiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJjb2x1bW5TY2hlbWFzIiwic2V0Q29sdW1uU2NoZW1hcyIsImRhdGFzZXRzIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsIl9zdGF0ZSRkZW1vIiwiZGVtbyIsImtlcGxlckdsIiwidmlzU3RhdGUiLCJnZXRUYWJsZVNjaGVtYSIsInVzZUNhbGxiYWNrIiwiX2NhbGxlZSIsIl90YWJsZVJlc3VsdCRnZXRDaGlsZCIsIl9yZWYzIiwiZGIiLCJjIiwidGFibGVSZXN1bHQiLCJ0YWJsZU5hbWVzIiwidGFibGVTY2hlbWEiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJkYXRhYmFzZSIsImNvbnNvbGUiLCJlcnJvciIsImNvbm5lY3QiLCJnZXRDaGlsZEF0IiwidG9KU09OIiwiUHJvbWlzZSIsImFsbCIsImNsb3NlIiwidXNlRWZmZWN0IiwibGVuZ3RoIiwiVHJlZSIsInRyZWVEYXRhIiwicmVuZGVyTm9kZSIsIm5vZGUiLCJEYXRhc2V0Tm9kZSIsIkNvbHVtbk5vZGUiLCJMb2FkaW5nU3Bpbm5lciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NjaGVtYS1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlU2VsZWN0b3J9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0xvYWRpbmdTcGlubmVyLCBJY29uc30gZnJvbSAnQGtlcGxlci5nbC9jb21wb25lbnRzJztcbmltcG9ydCB7YXJyb3dTY2hlbWFUb0ZpZWxkc30gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnLCBEYXRhYmFzZUNvbm5lY3Rpb259IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge1RyZWUsIERhdGFzZXROb2RlLCBDb2x1bW5Ob2RlLCBUcmVlTm9kZURhdGF9IGZyb20gJy4vdHJlZSc7XG5pbXBvcnQge2dldER1Y2tEQkNvbHVtblR5cGVzLCBnZXREdWNrREJDb2x1bW5UeXBlc01hcH0gZnJvbSAnLi4vdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzJztcblxuLy8gVE9ETyBub3RlIHRoYXQgZGVtbyBzdGF0ZSBpcyBhdmFpbGFibGUgaW4gZGVtby1hcHAsIGJ1dCBub3Qgd2hlbiBhZGQgbW9kdWxlcyB0byBkZXBlbmRlbmNpZXMgaW4gYSBjdXN0b20gbWFwXG50eXBlIFN0YXRlID0ge1xuICBkZW1vPzoge1xuICAgIGtlcGxlckdsOiB7XG4gICAgICBtYXA6IHtcbiAgICAgICAgdmlzU3RhdGU6IFZpc1N0YXRlO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufTtcblxuY29uc3QgU3R5bGVkU2NoZW1hUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBmb250LXNpemU6IDEycHg7XG4gIHBhZGRpbmc6IDEycHg7XG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRGYW1pbHl9O1xuICBoZWlnaHQ6IDEwMCU7XG5gO1xuXG5jb25zdCBTdHlsZWRMb2FkaW5nU3Bpbm5lcldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgaGVpZ2h0OiAxMDAlO1xuYDtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q29sdW1uU2NoZW1hKGNvbm5lY3Rpb246IERhdGFiYXNlQ29ubmVjdGlvbiwgdGFibGVOYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgY29sdW1uUmVzdWx0ID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShgU2VsZWN0ICogZnJvbSAnJHt0YWJsZU5hbWV9JyBMSU1JVCAxO2ApO1xuXG4gIGNvbnN0IGNvbHVtbkRlc2NyaWJlID0gYXdhaXQgZ2V0RHVja0RCQ29sdW1uVHlwZXMoY29ubmVjdGlvbiwgdGFibGVOYW1lKTtcbiAgY29uc3Qga2VwbGVyRmllbGRzID0gYXJyb3dTY2hlbWFUb0ZpZWxkcyhjb2x1bW5SZXN1bHQsIGdldER1Y2tEQkNvbHVtblR5cGVzTWFwKGNvbHVtbkRlc2NyaWJlKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBrZXk6IHRhYmxlTmFtZSxcbiAgICBvYmplY3Q6IHtcbiAgICAgIHR5cGU6ICdkYXRhc2V0JyxcbiAgICAgIHRhYmxlTmFtZTogdGFibGVOYW1lXG4gICAgfSxcbiAgICBjaGlsZHJlbjogY29sdW1uUmVzdWx0LnNjaGVtYS5maWVsZHMubWFwKChmaWVsZCwgZmllbGRJbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBmaWVsZC5uYW1lLFxuICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICB0eXBlOiAnY29sdW1uJyxcbiAgICAgICAgICBuYW1lOiBmaWVsZC5uYW1lLFxuICAgICAgICAgIGFycm93VHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgICBmaWVsZFR5cGU6IGtlcGxlckZpZWxkc1tmaWVsZEluZGV4XS50eXBlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSlcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2NoZW1hU3VnZ2VzdGlvbiA9IHtjb2x1bW5fbmFtZTogc3RyaW5nOyB0YWJsZV9uYW1lOiBzdHJpbmd9O1xuXG5mdW5jdGlvbiBnZXRTY2hlbWFTdWdnZXN0aW9uKHJlc3VsdDoge2tleTogc3RyaW5nOyBjaGlsZHJlbjoge2tleTogc3RyaW5nfVtdfVtdKSB7XG4gIHJldHVybiByZXN1bHQucmVkdWNlKChhY2N1LCBkYXRhKSA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9IGRhdGEuY2hpbGRyZW4ubWFwKGNoaWxkID0+ICh7XG4gICAgICBjb2x1bW5fbmFtZTogY2hpbGQua2V5LFxuICAgICAgdGFibGVfbmFtZTogZGF0YS5rZXlcbiAgICB9KSk7XG4gICAgcmV0dXJuIGFjY3UuY29uY2F0KGNvbHVtbnMpO1xuICB9LCBbXSBhcyBTY2hlbWFTdWdnZXN0aW9uW10pO1xufVxuXG50eXBlIFNjaGVtYVBhbmVsUHJvcHMgPSB7XG4gIHNldFRhYmxlU2NoZW1hOiAodGFibGVTY2hlbWE6IFNjaGVtYVN1Z2dlc3Rpb25bXSkgPT4gdm9pZDtcbiAgZHJvcHBlZEZpbGU6IEZpbGUgfCBudWxsO1xuICBzY2hlbWFVcGRhdGVUcmlnZ2VyOiBudW1iZXI7XG59O1xuXG5jb25zdCBTdHlsZWRTY2hlbWFQYW5lbERyb3BNZXNzYWdlID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIGRpdiB7XG4gICAgbWFyZ2luOiA1cHg7XG4gIH1cbiAgLmhlYWRlciB7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuICB9XG4gIC5ib2xkIHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRBZGRJY29uID0gc3R5bGVkKEljb25zLkFkZClgXG4gIGRpc3BsYXk6IGlubGluZTtcbiAgbWFyZ2luLXRvcDogLTNweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBTY2hlbWFQYW5lbERyb3BNZXNzYWdlID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRTY2hlbWFQYW5lbERyb3BNZXNzYWdlPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXJcIj5cbiAgICAgICAgPFN0eWxlZEFkZEljb24gLz4gQWRkIGZpbGVzIHRvIER1Y2tEQlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvbGRcIj5TdXBwb3J0ZWQgZm9ybWF0czogPC9kaXY+XG4gICAgICA8ZGl2Pi5jc3YsIC5qc29uLCAuZ2VvanNvbiwgLnBhcnF1ZXQsIC5hcnJvdzwvZGl2PlxuICAgICAgPGRpdj5GaWxlcyB5b3UgYWRkIHdpbGwgc3RheSBsb2NhbCB0byB5b3VyIGJyb3dzZXIuPC9kaXY+XG4gICAgPC9TdHlsZWRTY2hlbWFQYW5lbERyb3BNZXNzYWdlPlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IFNjaGVtYVBhbmVsID0gKHtcbiAgc2V0VGFibGVTY2hlbWEsXG4gIGRyb3BwZWRGaWxlLFxuICBzY2hlbWFVcGRhdGVUcmlnZ2VyXG59OiBTY2hlbWFQYW5lbFByb3BzKSA9PiB7XG4gIGNvbnN0IFtjb2x1bW5TY2hlbWFzLCBzZXRDb2x1bW5TY2hlbWFzXSA9IHVzZVN0YXRlPFRyZWVOb2RlRGF0YTx7dHlwZTogc3RyaW5nfT5bXT4oW10pO1xuICBjb25zdCBkYXRhc2V0cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogU3RhdGUpID0+IHN0YXRlPy5kZW1vPy5rZXBsZXJHbD8ubWFwPy52aXNTdGF0ZS5kYXRhc2V0cyk7XG5cbiAgY29uc3QgZ2V0VGFibGVTY2hlbWEgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGIgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRhdGFiYXNlO1xuICAgIGlmICghZGIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBkYXRhYmFzZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYyA9IGF3YWl0IGRiLmNvbm5lY3QoKTtcblxuICAgIGNvbnN0IHRhYmxlUmVzdWx0ID0gYXdhaXQgYy5xdWVyeSgnU0hPVyBUQUJMRVM7Jyk7XG5cbiAgICBjb25zdCB0YWJsZU5hbWVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9IHRhYmxlUmVzdWx0LmdldENoaWxkQXQoMCk/LnRvSlNPTigpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwoKHRhYmxlTmFtZXMgfHwgW10pPy5tYXAobmFtZSA9PiBnZXRDb2x1bW5TY2hlbWEoYywgbmFtZSkpKTtcbiAgICBjb25zdCB0YWJsZVNjaGVtYSA9IGdldFNjaGVtYVN1Z2dlc3Rpb24ocmVzdWx0KTtcblxuICAgIHNldENvbHVtblNjaGVtYXMocmVzdWx0KTtcbiAgICBzZXRUYWJsZVNjaGVtYSh0YWJsZVNjaGVtYSk7XG4gICAgYXdhaXQgYy5jbG9zZSgpO1xuXG4gICAgLy8gc2NoZW1hVXBkYXRlVHJpZ2dlciBpbmRpY2F0ZXMgcG9zc2libGUgY2hhbmdlIGluIER1Y2tEQlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW3NldENvbHVtblNjaGVtYXMsIHNldFRhYmxlU2NoZW1hLCBzY2hlbWFVcGRhdGVUcmlnZ2VyXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBnZXRUYWJsZVNjaGVtYSgpO1xuICB9LCBbZGF0YXNldHMsIGRyb3BwZWRGaWxlLCBnZXRUYWJsZVNjaGVtYV0pO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFNjaGVtYVBhbmVsPlxuICAgICAge2NvbHVtblNjaGVtYXM/Lmxlbmd0aCA/IChcbiAgICAgICAgY29sdW1uU2NoZW1hcy5tYXAoZGF0YSA9PiAoXG4gICAgICAgICAgPFRyZWVcbiAgICAgICAgICAgIGtleT17ZGF0YS5rZXl9XG4gICAgICAgICAgICB0cmVlRGF0YT17ZGF0YX1cbiAgICAgICAgICAgIHJlbmRlck5vZGU9e25vZGUgPT4ge1xuICAgICAgICAgICAgICBpZiAobm9kZS5vYmplY3QudHlwZSA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxEYXRhc2V0Tm9kZSBub2RlPXtub2RlfSAvPjtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLm9iamVjdC50eXBlID09PSAnY29sdW1uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiA8Q29sdW1uTm9kZSBub2RlPXtub2RlfSAvPjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKSlcbiAgICAgICkgOiBkcm9wcGVkRmlsZSA/IChcbiAgICAgICAgPFN0eWxlZExvYWRpbmdTcGlubmVyV3JhcHBlcj5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9TdHlsZWRMb2FkaW5nU3Bpbm5lcldyYXBwZXI+XG4gICAgICApIDogKFxuICAgICAgICA8U2NoZW1hUGFuZWxEcm9wTWVzc2Fn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