kepler.gl 3.1.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -132
- package/dist/src/common-utils/src/data-type.d.ts +9 -1
- package/dist/src/components/src/common/data-table/header-cell.d.ts +1 -0
- package/dist/src/components/src/common/data-table/index.d.ts +1 -0
- package/dist/src/components/src/common/file-uploader/file-drop.d.ts +1 -32
- package/dist/src/components/src/common/item-selector/dropdown-list.d.ts +2 -2
- package/dist/src/components/src/common/item-selector/item-selector.d.ts +1 -1
- package/dist/src/components/src/common/item-selector/typeahead.d.ts +1 -1
- package/dist/src/components/src/geocoder/geocoder.d.ts +7 -0
- package/dist/src/components/src/geocoder-panel.d.ts +2 -2
- package/dist/src/components/src/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
- package/dist/src/constants/src/default-settings.d.ts +14 -1
- package/dist/src/deckgl-arrow-layers/src/constants.d.ts +0 -12
- package/dist/src/deckgl-arrow-layers/src/index.d.ts +0 -1
- package/dist/src/deckgl-arrow-layers/src/utils/utils.d.ts +12 -1
- package/dist/src/duckdb/src/components/preview-data-panel.d.ts +7 -2
- package/dist/src/duckdb/src/components/schema-panel.d.ts +12 -3
- package/dist/src/duckdb/src/processors/data-processor.d.ts +1 -0
- package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +106 -0
- package/dist/src/duckdb/src/table/duckdb-table.d.ts +5 -3
- package/dist/src/processors/src/data-processor.d.ts +15 -1
- package/dist/src/reducers/src/provider-state-updaters.d.ts +1 -0
- package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -1
- package/dist/src/table/src/dataset-utils.d.ts +1 -1
- package/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
- package/dist/src/utils/src/application-config.d.ts +4 -3
- package/dist/src/utils/src/data-utils.d.ts +9 -3
- package/dist/src/utils/src/indexed-data-container.d.ts +2 -2
- package/dist/src/utils/src/map-style-utils/mapbox-utils.d.ts +1 -1
- package/dist/src/utils/src/map-utils.d.ts +1 -1
- package/dist/src/utils/src/plot.d.ts +2 -2
- package/package.json +5 -5
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/dist/components/ai-assistant-component.js +2 -1
- package/src/ai-assistant/package.json +7 -7
- package/src/ai-assistant/src/components/ai-assistant-component.tsx +1 -0
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/dist/data-type.d.ts +9 -1
- package/src/common-utils/dist/data-type.js +50 -1
- package/src/common-utils/package.json +3 -3
- package/src/common-utils/src/data-type.ts +49 -1
- package/src/components/dist/common/data-table/header-cell.d.ts +1 -0
- package/src/components/dist/common/data-table/header-cell.js +2 -2
- package/src/components/dist/common/data-table/index.d.ts +1 -0
- package/src/components/dist/common/data-table/index.js +5 -1
- package/src/components/dist/common/file-uploader/file-drop.d.ts +1 -32
- package/src/components/dist/common/file-uploader/file-drop.js +152 -167
- package/src/components/dist/common/item-selector/dropdown-list.d.ts +2 -2
- package/src/components/dist/common/item-selector/dropdown-list.js +2 -3
- package/src/components/dist/common/item-selector/item-selector.d.ts +1 -1
- package/src/components/dist/common/item-selector/typeahead.d.ts +1 -1
- package/src/components/dist/common/range-brush.js +3 -3
- package/src/components/dist/geocoder/geocoder.d.ts +7 -0
- package/src/components/dist/geocoder/geocoder.js +19 -11
- package/src/components/dist/geocoder-panel.d.ts +2 -2
- package/src/components/dist/geocoder-panel.js +64 -91
- package/src/components/dist/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
- package/src/components/dist/hooks/use-fetch-vector-tile-metadata.js +35 -26
- package/src/components/dist/hooks/use-legend-position.js +8 -4
- package/src/components/dist/map/map-legend-panel.js +2 -3
- package/src/components/dist/modal-container.js +8 -8
- package/src/components/dist/modals/tilesets-modals/tileset-vector-form.js +31 -12
- package/src/components/dist/side-panel/layer-panel/color-palette-preset.js +2 -2
- package/src/components/dist/side-panel/layer-panel/color-range-selector.js +10 -11
- package/src/components/dist/side-panel/layer-panel/color-selector.js +3 -3
- package/src/components/dist/side-panel/layer-panel/custom-palette.js +1 -2
- package/src/components/dist/side-panel/layer-panel/layer-configurator.js +6 -8
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +1 -2
- package/src/components/package.json +16 -16
- package/src/components/src/common/data-table/header-cell.tsx +2 -1
- package/src/components/src/common/data-table/index.tsx +4 -0
- package/src/components/src/common/file-uploader/file-drop.tsx +186 -161
- package/src/components/src/common/item-selector/dropdown-list.tsx +1 -6
- package/src/components/src/common/range-brush.tsx +2 -2
- package/src/components/src/geocoder/geocoder.tsx +16 -8
- package/src/components/src/geocoder-panel.tsx +95 -85
- package/src/components/src/hooks/use-fetch-vector-tile-metadata.ts +27 -25
- package/src/components/src/hooks/use-legend-position.ts +5 -2
- package/src/components/src/map/map-legend-panel.tsx +1 -2
- package/src/components/src/modal-container.tsx +7 -7
- package/src/components/src/modals/tilesets-modals/tileset-vector-form.tsx +12 -3
- package/src/components/src/side-panel/layer-panel/color-palette-preset.tsx +1 -1
- package/src/components/src/side-panel/layer-panel/color-range-selector.tsx +6 -11
- package/src/components/src/side-panel/layer-panel/color-selector.tsx +2 -2
- package/src/components/src/side-panel/layer-panel/custom-palette.tsx +0 -1
- package/src/components/src/side-panel/layer-panel/layer-configurator.tsx +23 -33
- package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +0 -1
- package/src/constants/dist/default-settings.d.ts +14 -1
- package/src/constants/dist/default-settings.js +20 -5
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/91/4f/6c65f3a1eba584ffd2d892cabc25ab5804d4a9ef53694c98707372a83e56343a274bec04f15927a6fe7602615f0f23f73ccf599f524ef97ad6c77c8832ea +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/a6/b2/5424aa4477192fb44cc90fd80892efdc96731f2ff0f48e8f28abf64243cc +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/src/default-settings.ts +16 -1
- package/src/constants/umd/keplergl.min.js +2 -2
- package/src/deckgl-arrow-layers/dist/constants.d.ts +0 -12
- package/src/deckgl-arrow-layers/dist/constants.js +4 -15
- package/src/deckgl-arrow-layers/dist/index.d.ts +0 -1
- package/src/deckgl-arrow-layers/dist/index.js +1 -8
- package/src/deckgl-arrow-layers/dist/layers/geo-arrow-scatterplot-layer.js +4 -4
- package/src/deckgl-arrow-layers/dist/layers/geo-arrow-text-layer.js +5 -5
- package/src/deckgl-arrow-layers/dist/utils/utils.d.ts +12 -1
- package/src/deckgl-arrow-layers/dist/utils/utils.js +7 -5
- package/src/deckgl-arrow-layers/package.json +2 -1
- package/src/deckgl-arrow-layers/src/constants.ts +0 -13
- package/src/deckgl-arrow-layers/src/index.ts +0 -2
- package/src/deckgl-arrow-layers/src/layers/geo-arrow-scatterplot-layer.ts +5 -3
- package/src/deckgl-arrow-layers/src/layers/geo-arrow-text-layer.ts +8 -4
- package/src/deckgl-arrow-layers/src/utils/utils.ts +7 -5
- package/src/deckgl-layers/dist/deckgl-extensions/filter-arrow-layer.d.ts +1 -1
- package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.d.ts +1 -1
- package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.js +3 -3
- package/src/deckgl-layers/package.json +5 -5
- package/src/deckgl-layers/src/deckgl-extensions/filter-shader-module.ts +4 -3
- package/src/duckdb/dist/components/monaco-editor.js +4 -5
- package/src/duckdb/dist/components/preview-data-panel.d.ts +7 -2
- package/src/duckdb/dist/components/preview-data-panel.js +7 -8
- package/src/duckdb/dist/components/schema-panel.d.ts +12 -3
- package/src/duckdb/dist/components/schema-panel.js +41 -24
- package/src/duckdb/dist/components/sql-panel.js +245 -56
- package/src/duckdb/dist/init.js +20 -14
- package/src/duckdb/dist/processors/data-processor.d.ts +1 -0
- package/src/duckdb/dist/processors/data-processor.js +4 -4
- package/src/duckdb/dist/table/duckdb-table-utils.d.ts +106 -0
- package/src/duckdb/dist/table/duckdb-table-utils.js +493 -2
- package/src/duckdb/dist/table/duckdb-table.d.ts +5 -3
- package/src/duckdb/dist/table/duckdb-table.js +153 -261
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/components/monaco-editor.tsx +3 -3
- package/src/duckdb/src/components/preview-data-panel.tsx +15 -8
- package/src/duckdb/src/components/schema-panel.tsx +92 -21
- package/src/duckdb/src/components/sql-panel.tsx +160 -22
- package/src/duckdb/src/init.ts +4 -1
- package/src/duckdb/src/processors/data-processor.ts +2 -2
- package/src/duckdb/src/table/duckdb-table-utils.ts +407 -1
- package/src/duckdb/src/table/duckdb-table.ts +61 -92
- package/src/effects/package.json +5 -5
- package/src/layers/dist/arc-layer/arc-layer.d.ts +1 -1
- package/src/layers/dist/arc-layer/arc-layer.js +2 -3
- package/src/layers/dist/base-layer.d.ts +7 -6
- package/src/layers/dist/base-layer.js +36 -19
- package/src/layers/dist/geojson-layer/geojson-layer.js +4 -2
- package/src/layers/dist/geojson-layer/geojson-utils.js +10 -3
- package/src/layers/dist/heatmap-layer/heatmap-layer.d.ts +2 -0
- package/src/layers/dist/heatmap-layer/heatmap-layer.js +16 -9
- package/src/layers/dist/icon-layer/icon-layer.d.ts +6 -3
- package/src/layers/dist/icon-layer/icon-layer.js +19 -11
- package/src/layers/dist/index.d.ts +1 -1
- package/src/layers/dist/index.js +1 -1
- package/src/layers/dist/layer-text-label.d.ts +9 -0
- package/src/layers/dist/layer-text-label.js +51 -6
- package/src/layers/dist/layer-utils.d.ts +39 -30
- package/src/layers/dist/layer-utils.js +69 -9
- package/src/layers/dist/line-layer/line-layer.d.ts +1 -1
- package/src/layers/dist/line-layer/line-layer.js +2 -3
- package/src/layers/dist/point-layer/point-layer.d.ts +10 -7
- package/src/layers/dist/point-layer/point-layer.js +16 -8
- package/src/layers/dist/trip-layer/trip-layer.d.ts +2 -2
- package/src/layers/dist/trip-layer/trip-layer.js +4 -2
- package/src/layers/dist/vector-tile/abstract-tile-layer.d.ts +3 -7
- package/src/layers/dist/vector-tile/abstract-tile-layer.js +7 -6
- package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +5 -7
- package/src/layers/dist/vector-tile/vector-tile-layer.js +23 -2
- package/src/layers/package.json +11 -10
- package/src/layers/src/arc-layer/arc-layer.ts +1 -1
- package/src/layers/src/base-layer.ts +50 -9
- package/src/layers/src/geojson-layer/geojson-layer.ts +3 -1
- package/src/layers/src/geojson-layer/geojson-utils.ts +4 -1
- package/src/layers/src/heatmap-layer/heatmap-layer.ts +17 -12
- package/src/layers/src/icon-layer/icon-layer.ts +7 -3
- package/src/layers/src/index.ts +1 -2
- package/src/layers/src/layer-text-label.ts +53 -4
- package/src/layers/src/layer-utils.ts +88 -9
- package/src/layers/src/line-layer/line-layer.ts +1 -1
- package/src/layers/src/point-layer/point-layer.ts +15 -11
- package/src/layers/src/trip-layer/trip-layer.ts +4 -2
- package/src/layers/src/vector-tile/abstract-tile-layer.ts +11 -5
- package/src/layers/src/vector-tile/vector-tile-layer.ts +33 -4
- package/src/localization/package.json +1 -1
- package/src/processors/dist/data-processor.d.ts +15 -1
- package/src/processors/dist/data-processor.js +104 -11
- package/src/processors/package.json +8 -7
- package/src/processors/src/data-processor.ts +116 -13
- package/src/reducers/dist/export-utils.js +2 -2
- package/src/reducers/dist/layer-utils.js +1 -1
- package/src/reducers/dist/provider-state-updaters.d.ts +1 -0
- package/src/reducers/dist/provider-state-updaters.js +5 -2
- package/src/reducers/dist/vis-state-updaters.d.ts +1 -1
- package/src/reducers/dist/vis-state-updaters.js +23 -12
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/export-utils.ts +1 -1
- package/src/reducers/src/layer-utils.ts +2 -1
- package/src/reducers/src/provider-state-updaters.ts +4 -1
- package/src/reducers/src/vis-state-updaters.ts +45 -10
- package/src/schemas/dist/dataset-schema.js +35 -6
- package/src/schemas/package.json +7 -7
- package/src/schemas/src/dataset-schema.ts +36 -8
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a3/a9/7f26bbc52905b0e21e9366a30ef0ba98f4ccf9aa8dd8326d90ba90191ba2e305323f505bf134c825356156c793bf9386ed2cef2aeb48eb327c26d106f69a +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/7e/51/b8756555a0e2e696d944445ac23f7febf769006013fbc8419f39a701649d +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +2 -2
- package/src/table/dist/dataset-utils.js +23 -14
- package/src/table/dist/src/table/src/dataset-utils.d.ts +1 -1
- package/src/table/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
- package/src/table/dist/tileset/vector-tile-utils.js +122 -2
- package/src/table/package.json +5 -5
- package/src/table/src/dataset-utils.ts +16 -6
- package/src/table/src/tileset/vector-tile-utils.ts +131 -8
- package/src/tasks/package.json +2 -2
- package/src/types/actions.d.ts +1 -0
- package/src/types/layers.d.ts +1 -0
- package/src/types/package.json +1 -1
- package/src/types/types.d.ts +17 -0
- package/src/utils/dist/application-config.d.ts +4 -3
- package/src/utils/dist/application-config.js +3 -2
- package/src/utils/dist/data-scale-utils.js +4 -4
- package/src/utils/dist/data-utils.d.ts +9 -3
- package/src/utils/dist/data-utils.js +40 -7
- package/src/utils/dist/dataset-utils.js +23 -8
- package/src/utils/dist/indexed-data-container.d.ts +2 -2
- package/src/utils/dist/indexed-data-container.js +1 -1
- package/src/utils/dist/map-style-utils/mapbox-utils.d.ts +1 -1
- package/src/utils/dist/map-style-utils/mapbox-utils.js +3 -3
- package/src/utils/dist/plot.d.ts +2 -2
- package/src/utils/dist/plot.js +6 -6
- package/src/utils/map-utils.spec.js +1 -2
- package/src/utils/package.json +5 -4
- package/src/utils/src/application-config.ts +11 -8
- package/src/utils/src/data-scale-utils.ts +3 -3
- package/src/utils/src/data-utils.ts +36 -7
- package/src/utils/src/dataset-utils.ts +41 -9
- package/src/utils/src/indexed-data-container.ts +1 -1
- package/src/utils/src/map-style-utils/mapbox-utils.ts +2 -2
- package/src/utils/src/plot.ts +5 -5
- package/umd/keplergl.min.js +1279 -1295
package/src/duckdb/dist/init.js
CHANGED
|
@@ -66,42 +66,48 @@ var _initializeDuckDb = /*#__PURE__*/function () {
|
|
|
66
66
|
return duckdb.selectBundle(JSDELIVR_BUNDLES);
|
|
67
67
|
case 4:
|
|
68
68
|
bundle = _context.sent;
|
|
69
|
+
if (bundle.mainWorker) {
|
|
70
|
+
_context.next = 7;
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
throw new Error('Failed to initialize DuckDB');
|
|
74
|
+
case 7:
|
|
69
75
|
worker_url = URL.createObjectURL(new Blob(["importScripts(\"".concat(bundle.mainWorker, "\");")], {
|
|
70
76
|
type: 'text/javascript'
|
|
71
77
|
})); // Instantiate the async version of DuckDB-wasm
|
|
72
78
|
worker = new Worker(worker_url);
|
|
73
79
|
logger = DEBUG ? new duckdb.ConsoleLogger() : new duckdb.VoidLogger();
|
|
74
80
|
db = new _duckdbWasm.AsyncDuckDB(logger, worker);
|
|
75
|
-
_context.next =
|
|
81
|
+
_context.next = 13;
|
|
76
82
|
return db.instantiate(bundle.mainModule, bundle.pthreadWorker);
|
|
77
|
-
case
|
|
83
|
+
case 13:
|
|
78
84
|
URL.revokeObjectURL(worker_url);
|
|
79
85
|
if (!config) {
|
|
80
|
-
_context.next =
|
|
86
|
+
_context.next = 28;
|
|
81
87
|
break;
|
|
82
88
|
}
|
|
83
89
|
if (!config.path) {
|
|
84
|
-
_context.next =
|
|
90
|
+
_context.next = 26;
|
|
85
91
|
break;
|
|
86
92
|
}
|
|
87
|
-
_context.next =
|
|
93
|
+
_context.next = 18;
|
|
88
94
|
return fetch(config.path);
|
|
89
|
-
case
|
|
95
|
+
case 18:
|
|
90
96
|
res = _context.sent;
|
|
91
|
-
_context.next =
|
|
97
|
+
_context.next = 21;
|
|
92
98
|
return res.arrayBuffer();
|
|
93
|
-
case
|
|
99
|
+
case 21:
|
|
94
100
|
buffer = _context.sent;
|
|
95
101
|
fileNameMatch = config.path.match(/[^/]*$/);
|
|
96
102
|
if (fileNameMatch) {
|
|
97
103
|
config.path = fileNameMatch[0];
|
|
98
104
|
}
|
|
99
|
-
_context.next = 24;
|
|
100
|
-
return db.registerFileBuffer(config.path, new Uint8Array(buffer));
|
|
101
|
-
case 24:
|
|
102
105
|
_context.next = 26;
|
|
103
|
-
return db.
|
|
106
|
+
return db.registerFileBuffer(config.path, new Uint8Array(buffer));
|
|
104
107
|
case 26:
|
|
108
|
+
_context.next = 28;
|
|
109
|
+
return db.open(config);
|
|
110
|
+
case 28:
|
|
105
111
|
if (DEBUG) {
|
|
106
112
|
(0, _perf.logElapsedTime)('DuckDB initialized', start);
|
|
107
113
|
if (config) {
|
|
@@ -109,7 +115,7 @@ var _initializeDuckDb = /*#__PURE__*/function () {
|
|
|
109
115
|
}
|
|
110
116
|
}
|
|
111
117
|
return _context.abrupt("return", db);
|
|
112
|
-
case
|
|
118
|
+
case 30:
|
|
113
119
|
case "end":
|
|
114
120
|
return _context.stop();
|
|
115
121
|
}
|
|
@@ -151,4 +157,4 @@ var getDuckDB = exports.getDuckDB = /*#__PURE__*/function () {
|
|
|
151
157
|
return _ref2.apply(this, arguments);
|
|
152
158
|
};
|
|
153
159
|
}();
|
|
154
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHVja2RiV2FzbSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsImR1Y2tkYiIsIl9wZXJmIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiREVCVUciLCJEdWNrREIiLCJpbml0aWFsaXplRHVja0RiIiwiX3giLCJfaW5pdGlhbGl6ZUR1Y2tEYjIiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlMyIsIm9wdGlvbnMiLCJfcmVmMyIsIl9yZWYzJGRlYnVnIiwiZGVidWciLCJjb25maWciLCJ3cmFwIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwicHJldiIsIm5leHQiLCJleHBvcnRzIiwidW5kZWZpbmVkIiwiX2luaXRpYWxpemVEdWNrRGIiLCJhYnJ1cHQiLCJzdG9wIiwiX3JlZiIsIl9jYWxsZWUiLCJzdGFydCIsIkpTREVMSVZSX0JVTkRMRVMiLCJidW5kbGUiLCJ3b3JrZXJfdXJsIiwid29ya2VyIiwibG9nZ2VyIiwiZGIiLCJyZXMiLCJidWZmZXIiLCJmaWxlTmFtZU1hdGNoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInBlcmZvcm1hbmNlIiwibm93IiwiZ2V0SnNEZWxpdnJCdW5kbGVzIiwic2VsZWN0QnVuZGxlIiwic2VudCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIkJsb2IiLCJjb25jYXQiLCJtYWluV29ya2VyIiwidHlwZSIsIldvcmtlciIsIkNvbnNvbGVMb2dnZXIiLCJWb2lkTG9nZ2VyIiwiQXN5bmNEdWNrREIiLCJpbnN0YW50aWF0ZSIsIm1haW5Nb2R1bGUiLCJwdGhyZWFkV29ya2VyIiwicmV2b2tlT2JqZWN0VVJMIiwicGF0aCIsImZldGNoIiwiYXJyYXlCdWZmZXIiLCJtYXRjaCIsInJlZ2lzdGVyRmlsZUJ1ZmZlciIsIlVpbnQ4QXJyYXkiLCJvcGVuIiwibG9nRWxhcHNlZFRpbWUiLCJjb25zb2xlIiwiSlNPTiIsInN0cmluZ2lmeSIsIl94MiIsImdldER1Y2tEQiIsIl9yZWYyIiwiX2NhbGxlZTIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiXSwic291cmNlcyI6WyIuLi9zcmMvaW5pdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBnaXRAZ2l0aHViLmNvbTpob2xkZW5tYXR0L2R1Y2tkYi13YXNtLWtpdC5naXRcbmltcG9ydCAqIGFzIGR1Y2tkYiBmcm9tICdAZHVja2RiL2R1Y2tkYi13YXNtJztcbmltcG9ydCB7QXN5bmNEdWNrREIsIER1Y2tEQkNvbmZpZ30gZnJvbSAnQGR1Y2tkYi9kdWNrZGItd2FzbSc7XG5pbXBvcnQge2xvZ0VsYXBzZWRUaW1lfSBmcm9tICcuL3V0aWxzL3BlcmYnO1xuXG5leHBvcnQgbGV0IERFQlVHOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5sZXQgRHVja0RCOiBQcm9taXNlPEFzeW5jRHVja0RCPiB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBJbml0aWFsaXplIER1Y2tEQiwgZW5zdXJpbmcgd2Ugb25seSBpbml0aWFsaXplIGl0IG9uY2UuXG4gKlxuICogQHBhcmFtIGRlYnVnIElmIHRydWUsIGxvZyBEdWNrREIgbG9ncyBhbmQgZWxhcHNlZCB0aW1lcyB0byB0aGUgY29uc29sZS5cbiAqIEBwYXJhbSBjb25maWcgQW4gb3B0aW9uYWwgRHVja0RCQ29uZmlnIG9iamVjdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemVEdWNrRGIob3B0aW9ucz86IHtcbiAgZGVidWc/OiBib29sZWFuO1xuICBjb25maWc/OiBEdWNrREJDb25maWc7XG59KTogUHJvbWlzZTxBc3luY0R1Y2tEQj4ge1xuICBjb25zdCB7ZGVidWcgPSBmYWxzZSwgY29uZmlnfSA9IG9wdGlvbnMgfHwge307XG4gIERFQlVHID0gZGVidWc7XG5cbiAgaWYgKER1Y2tEQiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgRHVja0RCID0gX2luaXRpYWxpemVEdWNrRGIoY29uZmlnKTtcbiAgfVxuICByZXR1cm4gRHVja0RCO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgRHVja0RCIHdpdGggYSBicm93c2VyLXNwZWNpZmljIFdhc20gYnVuZGxlLlxuICovXG5jb25zdCBfaW5pdGlhbGl6ZUR1Y2tEYiA9IGFzeW5jIChjb25maWc/OiBEdWNrREJDb25maWcpOiBQcm9taXNlPEFzeW5jRHVja0RCPiA9PiB7XG4gIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgLy8gU2VsZWN0IGEgYnVuZGxlIGJhc2VkIG9uIGJyb3dzZXIgY2hlY2tzXG4gIGNvbnN0IEpTREVMSVZSX0JVTkRMRVMgPSBkdWNrZGIuZ2V0SnNEZWxpdnJCdW5kbGVzKCk7XG4gIGNvbnN0IGJ1bmRsZSA9IGF3YWl0IGR1Y2tkYi5zZWxlY3RCdW5kbGUoSlNERUxJVlJfQlVORExFUyk7XG5cbiAgY29uc3Qgd29ya2VyX3VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoXG4gICAgbmV3IEJsb2IoW2BpbXBvcnRTY3JpcHRzKFwiJHtidW5kbGUubWFpbldvcmtlciF9XCIpO2BdLCB7XG4gICAgICB0eXBlOiAndGV4dC9qYXZhc2NyaXB0J1xuICAgIH0pXG4gICk7XG5cbiAgLy8gSW5zdGFudGlhdGUgdGhlIGFzeW5jIHZlcnNpb24gb2YgRHVja0RCLXdhc21cbiAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJfdXJsKTtcbiAgY29uc3QgbG9nZ2VyID0gREVCVUcgPyBuZXcgZHVja2RiLkNvbnNvbGVMb2dnZXIoKSA6IG5ldyBkdWNrZGIuVm9pZExvZ2dlcigpO1xuICBjb25zdCBkYiA9IG5ldyBBc3luY0R1Y2tEQihsb2dnZXIsIHdvcmtlcik7XG4gIGF3YWl0IGRiLmluc3RhbnRpYXRlKGJ1bmRsZS5tYWluTW9kdWxlLCBidW5kbGUucHRocmVhZFdvcmtlcik7XG4gIFVSTC5yZXZva2VPYmplY3RVUkwod29ya2VyX3VybCk7XG5cbiAgaWYgKGNvbmZpZykge1xuICAgIGlmIChjb25maWcucGF0aCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goY29uZmlnLnBhdGgpO1xuICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgcmVzLmFycmF5QnVmZmVyKCk7XG4gICAgICBjb25zdCBmaWxlTmFtZU1hdGNoID0gY29uZmlnLnBhdGgubWF0Y2goL1teL10qJC8pO1xuICAgICAgaWYgKGZpbGVOYW1lTWF0Y2gpIHtcbiAgICAgICAgY29uZmlnLnBhdGggPSBmaWxlTmFtZU1hdGNoWzBdO1xuICAgICAgfVxuICAgICAgYXdhaXQgZGIucmVnaXN0ZXJGaWxlQnVmZmVyKGNvbmZpZy5wYXRoLCBuZXcgVWludDhBcnJheShidWZmZXIpKTtcbiAgICB9XG4gICAgYXdhaXQgZGIub3Blbihjb25maWcpO1xuICB9XG5cbiAgaWYgKERFQlVHKSB7XG4gICAgbG9nRWxhcHNlZFRpbWUoJ0R1Y2tEQiBpbml0aWFsaXplZCcsIHN0YXJ0KTtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBEdWNrRGJDb25maWc6ICR7SlNPTi5zdHJpbmdpZnkoY29uZmlnLCBudWxsLCAyKX1gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRiO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGluc3RhbmNlIG9mIER1Y2tEQiwgaW5pdGlhbGl6aW5nIGl0IGlmIG5lZWRlZC5cbiAqXG4gKiBUeXBpY2FsbHkgYHVzZUR1Y2tEQmAgaXMgdXNlZCBpbiBSZWFjdCBjb21wb25lbnRzIGluc3RlYWQsIGJ1dCB0aGlzXG4gKiBtZXRob2QgcHJvdmlkZXMgYWNjZXNzIG91dHNpZGUgb2YgUmVhY3QgY29udGV4dHMuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREdWNrREIgPSBhc3luYyAoKTogUHJvbWlzZTxBc3luY0R1Y2tEQj4gPT4ge1xuICBpZiAoRHVja0RCKSB7XG4gICAgcmV0dXJuIER1Y2tEQjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXdhaXQgaW5pdGlhbGl6ZUR1Y2tEYigpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUlBLElBQUFBLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUE4QyxJQUFBQyxNQUFBLEdBQUFILFdBQUE7QUFFOUMsSUFBQUksS0FBQSxHQUFBRixPQUFBO0FBQTRDLFNBQUFHLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBTCx3QkFBQUssQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMs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
|
|
160
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHVja2RiV2FzbSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsImR1Y2tkYiIsIl9wZXJmIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiREVCVUciLCJEdWNrREIiLCJpbml0aWFsaXplRHVja0RiIiwiX3giLCJfaW5pdGlhbGl6ZUR1Y2tEYjIiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlMyIsIm9wdGlvbnMiLCJfcmVmMyIsIl9yZWYzJGRlYnVnIiwiZGVidWciLCJjb25maWciLCJ3cmFwIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwicHJldiIsIm5leHQiLCJleHBvcnRzIiwidW5kZWZpbmVkIiwiX2luaXRpYWxpemVEdWNrRGIiLCJhYnJ1cHQiLCJzdG9wIiwiX3JlZiIsIl9jYWxsZWUiLCJzdGFydCIsIkpTREVMSVZSX0JVTkRMRVMiLCJidW5kbGUiLCJ3b3JrZXJfdXJsIiwid29ya2VyIiwibG9nZ2VyIiwiZGIiLCJyZXMiLCJidWZmZXIiLCJmaWxlTmFtZU1hdGNoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInBlcmZvcm1hbmNlIiwibm93IiwiZ2V0SnNEZWxpdnJCdW5kbGVzIiwic2VsZWN0QnVuZGxlIiwic2VudCIsIm1haW5Xb3JrZXIiLCJFcnJvciIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIkJsb2IiLCJjb25jYXQiLCJ0eXBlIiwiV29ya2VyIiwiQ29uc29sZUxvZ2dlciIsIlZvaWRMb2dnZXIiLCJBc3luY0R1Y2tEQiIsImluc3RhbnRpYXRlIiwibWFpbk1vZHVsZSIsInB0aHJlYWRXb3JrZXIiLCJyZXZva2VPYmplY3RVUkwiLCJwYXRoIiwiZmV0Y2giLCJhcnJheUJ1ZmZlciIsIm1hdGNoIiwicmVnaXN0ZXJGaWxlQnVmZmVyIiwiVWludDhBcnJheSIsIm9wZW4iLCJsb2dFbGFwc2VkVGltZSIsImNvbnNvbGUiLCJKU09OIiwic3RyaW5naWZ5IiwiX3gyIiwiZ2V0RHVja0RCIiwiX3JlZjIiLCJfY2FsbGVlMiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbml0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGdpdEBnaXRodWIuY29tOmhvbGRlbm1hdHQvZHVja2RiLXdhc20ta2l0LmdpdFxuaW1wb3J0ICogYXMgZHVja2RiIGZyb20gJ0BkdWNrZGIvZHVja2RiLXdhc20nO1xuaW1wb3J0IHtBc3luY0R1Y2tEQiwgRHVja0RCQ29uZmlnfSBmcm9tICdAZHVja2RiL2R1Y2tkYi13YXNtJztcbmltcG9ydCB7bG9nRWxhcHNlZFRpbWV9IGZyb20gJy4vdXRpbHMvcGVyZic7XG5cbmV4cG9ydCBsZXQgREVCVUc6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbmxldCBEdWNrREI6IFByb21pc2U8QXN5bmNEdWNrREI+IHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIEluaXRpYWxpemUgRHVja0RCLCBlbnN1cmluZyB3ZSBvbmx5IGluaXRpYWxpemUgaXQgb25jZS5cbiAqXG4gKiBAcGFyYW0gZGVidWcgSWYgdHJ1ZSwgbG9nIER1Y2tEQiBsb2dzIGFuZCBlbGFwc2VkIHRpbWVzIHRvIHRoZSBjb25zb2xlLlxuICogQHBhcmFtIGNvbmZpZyBBbiBvcHRpb25hbCBEdWNrREJDb25maWcgb2JqZWN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdGlhbGl6ZUR1Y2tEYihvcHRpb25zPzoge1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIGNvbmZpZz86IER1Y2tEQkNvbmZpZztcbn0pOiBQcm9taXNlPEFzeW5jRHVja0RCPiB7XG4gIGNvbnN0IHtkZWJ1ZyA9IGZhbHNlLCBjb25maWd9ID0gb3B0aW9ucyB8fCB7fTtcbiAgREVCVUcgPSBkZWJ1ZztcblxuICBpZiAoRHVja0RCID09PSB1bmRlZmluZWQpIHtcbiAgICBEdWNrREIgPSBfaW5pdGlhbGl6ZUR1Y2tEYihjb25maWcpO1xuICB9XG4gIHJldHVybiBEdWNrREI7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBEdWNrREIgd2l0aCBhIGJyb3dzZXItc3BlY2lmaWMgV2FzbSBidW5kbGUuXG4gKi9cbmNvbnN0IF9pbml0aWFsaXplRHVja0RiID0gYXN5bmMgKGNvbmZpZz86IER1Y2tEQkNvbmZpZyk6IFByb21pc2U8QXN5bmNEdWNrREI+ID0+IHtcbiAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICAvLyBTZWxlY3QgYSBidW5kbGUgYmFzZWQgb24gYnJvd3NlciBjaGVja3NcbiAgY29uc3QgSlNERUxJVlJfQlVORExFUyA9IGR1Y2tkYi5nZXRKc0RlbGl2ckJ1bmRsZXMoKTtcbiAgY29uc3QgYnVuZGxlID0gYXdhaXQgZHVja2RiLnNlbGVjdEJ1bmRsZShKU0RFTElWUl9CVU5ETEVTKTtcbiAgaWYgKCFidW5kbGUubWFpbldvcmtlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGluaXRpYWxpemUgRHVja0RCJyk7XG4gIH1cblxuICBjb25zdCB3b3JrZXJfdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChcbiAgICBuZXcgQmxvYihbYGltcG9ydFNjcmlwdHMoXCIke2J1bmRsZS5tYWluV29ya2VyfVwiKTtgXSwge1xuICAgICAgdHlwZTogJ3RleHQvamF2YXNjcmlwdCdcbiAgICB9KVxuICApO1xuXG4gIC8vIEluc3RhbnRpYXRlIHRoZSBhc3luYyB2ZXJzaW9uIG9mIER1Y2tEQi13YXNtXG4gIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIod29ya2VyX3VybCk7XG4gIGNvbnN0IGxvZ2dlciA9IERFQlVHID8gbmV3IGR1Y2tkYi5Db25zb2xlTG9nZ2VyKCkgOiBuZXcgZHVja2RiLlZvaWRMb2dnZXIoKTtcbiAgY29uc3QgZGIgPSBuZXcgQXN5bmNEdWNrREIobG9nZ2VyLCB3b3JrZXIpO1xuICBhd2FpdCBkYi5pbnN0YW50aWF0ZShidW5kbGUubWFpbk1vZHVsZSwgYnVuZGxlLnB0aHJlYWRXb3JrZXIpO1xuICBVUkwucmV2b2tlT2JqZWN0VVJMKHdvcmtlcl91cmwpO1xuXG4gIGlmIChjb25maWcpIHtcbiAgICBpZiAoY29uZmlnLnBhdGgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGNvbmZpZy5wYXRoKTtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpO1xuICAgICAgY29uc3QgZmlsZU5hbWVNYXRjaCA9IGNvbmZpZy5wYXRoLm1hdGNoKC9bXi9dKiQvKTtcbiAgICAgIGlmIChmaWxlTmFtZU1hdGNoKSB7XG4gICAgICAgIGNvbmZpZy5wYXRoID0gZmlsZU5hbWVNYXRjaFswXTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZUJ1ZmZlcihjb25maWcucGF0aCwgbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSk7XG4gICAgfVxuICAgIGF3YWl0IGRiLm9wZW4oY29uZmlnKTtcbiAgfVxuXG4gIGlmIChERUJVRykge1xuICAgIGxvZ0VsYXBzZWRUaW1lKCdEdWNrREIgaW5pdGlhbGl6ZWQnLCBzdGFydCk7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgRHVja0RiQ29uZmlnOiAke0pTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMil9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkYjtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBpbnN0YW5jZSBvZiBEdWNrREIsIGluaXRpYWxpemluZyBpdCBpZiBuZWVkZWQuXG4gKlxuICogVHlwaWNhbGx5IGB1c2VEdWNrREJgIGlzIHVzZWQgaW4gUmVhY3QgY29tcG9uZW50cyBpbnN0ZWFkLCBidXQgdGhpc1xuICogbWV0aG9kIHByb3ZpZGVzIGFjY2VzcyBvdXRzaWRlIG9mIFJlYWN0IGNvbnRleHRzLlxuICovXG5leHBvcnQgY29uc3QgZ2V0RHVja0RCID0gYXN5bmMgKCk6IFByb21pc2U8QXN5bmNEdWNrREI+ID0+IHtcbiAgaWYgKER1Y2tEQikge1xuICAgIHJldHVybiBEdWNrREI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGF3YWl0IGluaXRpYWxpemVEdWNrRGIoKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxXQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFBOEMsSUFBQUMsTUFBQSxHQUFBSCxXQUFBO0FBRTlDLElBQUFJLEtBQUEsR0FBQUYsT0FBQTtBQUE0QyxTQUFBRyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUwsd0JBQUFLLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdB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
|
|
@@ -10,6 +10,7 @@ export declare type ProcessorResult = {
|
|
|
10
10
|
rows: RowData;
|
|
11
11
|
fields: ProtoDatasetField[];
|
|
12
12
|
};
|
|
13
|
+
export declare const COLUMN_TYPES_PRIORITIES: string[];
|
|
13
14
|
export declare function columnTypeToFieldType(columnType: string): string | null;
|
|
14
15
|
export declare function fieldTypeToColumnType(fieldType: string): string | null;
|
|
15
16
|
export declare function processKeplerglJSONforDuckDb(keplerJson: any): Promise<ReturnType<typeof processKeplerglJSON>>;
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.CSV_NULLS = void 0;
|
|
7
|
+
exports.CSV_NULLS = exports.COLUMN_TYPES_PRIORITIES = void 0;
|
|
8
8
|
exports.columnTypeToFieldType = columnTypeToFieldType;
|
|
9
9
|
exports.fieldTypeToColumnType = fieldTypeToColumnType;
|
|
10
10
|
exports.processCsvRowObject = processCsvRowObject;
|
|
@@ -35,8 +35,8 @@ var COLUMN_TYPES = /*#__PURE__*/function (COLUMN_TYPES) {
|
|
|
35
35
|
COLUMN_TYPES["TIMESTAMP"] = "TIMESTAMP";
|
|
36
36
|
COLUMN_TYPES["VARCHAR"] = "VARCHAR";
|
|
37
37
|
return COLUMN_TYPES;
|
|
38
|
-
}(COLUMN_TYPES || {}); //
|
|
39
|
-
var COLUMN_TYPES_PRIORITIES = ['GEOMETRY', 'BOOLEAN', 'INTEGER', 'FLOAT', 'TIME', 'DATE', 'TIMESTAMP', 'VARCHAR'];
|
|
38
|
+
}(COLUMN_TYPES || {}); // https://duckdb.org/docs/data/csv/auto_detection.html#type-detection
|
|
39
|
+
var COLUMN_TYPES_PRIORITIES = exports.COLUMN_TYPES_PRIORITIES = ['GEOMETRY', 'BOOLEAN', 'INTEGER', 'FLOAT', 'TIME', 'DATE', 'TIMESTAMP', 'VARCHAR'];
|
|
40
40
|
function columnTypeToFieldType(columnType) {
|
|
41
41
|
switch (columnType) {
|
|
42
42
|
case COLUMN_TYPES.BOOLEAN:
|
|
@@ -324,4 +324,4 @@ function processGeojson(rawData) {
|
|
|
324
324
|
// fields: []
|
|
325
325
|
};
|
|
326
326
|
}
|
|
327
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvanNvbk5vcm1hbGl6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl9wcm9jZXNzb3JzIiwiX2luaXQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJDU1ZfTlVMTFMiLCJleHBvcnRzIiwiQ09MVU1OX1RZUEVTIiwiQ09MVU1OX1RZUEVTX1BSSU9SSVRJRVMiLCJjb2x1bW5UeXBlVG9GaWVsZFR5cGUiLCJjb2x1bW5UeXBlIiwiQk9PTEVBTiIsIkFMTF9GSUVMRF9UWVBFUyIsIkRBVEUiLCJkYXRlIiwiSU5URUdFUiIsImludGVnZXIiLCJGTE9BVCIsInJlYWwiLCJWQVJDSEFSIiwic3RyaW5nIiwiVElNRVNUQU1QIiwidGltZXN0YW1wIiwiR0VPTUVUUlkiLCJnZW9qc29uIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJmaWVsZFR5cGVUb0NvbHVtblR5cGUiLCJmaWVsZFR5cGUiLCJwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiIiwiX3giLCJfcHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYiIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwia2VwbGVySnNvbiIsInJlcyIsImRhdGFzZXRzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfbG9vcDIiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dDIiLCJwcmV2IiwicHJvY2Vzc0tlcGxlcmdsSlNPTiIsImRhdGFzZXQiLCJyb3dzQWxsIiwiZmllbGRzQWxsIiwiaGVhZGVyIiwic2FtcGxlIiwic2NoZW1hIiwiZmllbGRzVXBkIiwiX2xvb3AyJCIsIl9jb250ZXh0IiwiZGF0YSIsInJvd3MiLCJmaWVsZHMiLCJtYXAiLCJnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZSIsInNuaWZmQ3N2U2NoZW1hIiwidDAiLCJzZW50IiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJ0eXBlIiwiY29uc29saWRhdGVGaWVsZFR5cGVzIiwiaSIsInN0b3AiLCJkZWxlZ2F0ZVlpZWxkIiwidDEiLCJmaW5pc2giLCJhYnJ1cHQiLCJwcm9jZXNzQ3N2Um93T2JqZWN0IiwiX3gyIiwiX3Byb2Nlc3NDc3ZSb3dPYmplY3QiLCJfY2FsbGVlMiIsInJhd0RhdGEiLCJmaWVsZHNXQW5hbHl6ZXJUeXBlIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQzIiwiY2xlYW5VcEZhbHN5Q3N2VmFsdWUiLCJnZXRGaWVsZHNGcm9tRGF0YSIsInJlIiwiUmVnRXhwIiwiX2xvb3AiLCJrZXkiLCJtYXRjaCIsImNvbHVtbk5hbWUiLCJkZXRlY3RlZENvbHVtblR5cGUiLCJkdWNrREJDb2x1bW5UeXBlIiwidG9DU1ZSb3ciLCJyb3ciLCJyVG9TdHIiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJTdHJpbmciLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJqb2luIiwiX3gzIiwiX3NuaWZmQ3N2U2NoZW1hIiwiX2NhbGxlZTMiLCJoZWFkZXJSb3ciLCJjc3ZDb250ZW50IiwiZGIiLCJjIiwiZmlsZU5hbWUiLCJyZXN1bHQiLCJzY2hlbWFSZXN1bHQiLCJjb2x1bW5zIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQ0IiwiYWNjdSIsInZhbHVlcyIsImdldER1Y2tEQiIsImNvbm5lY3QiLCJnZW5lcmF0ZUhhc2hJZCIsInJlZ2lzdGVyRmlsZVRleHQiLCJxdWVyeSIsInRvQXJyYXkiLCJ0b0pTT04iLCJDb2x1bW5zIiwiZ2V0IiwicHJvY2Vzc0dlb2pzb24iLCJub3JtYWxpemVkR2VvanNvbiIsIm5vcm1hbGl6ZSIsImZlYXR1cmVzIiwiZXJyb3IiLCJFcnJvciIsIkdVSURFU19GSUxFX0ZPUk1BVF9ET0MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvY2Vzc29ycy9kYXRhLXByb2Nlc3Nvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IG5vcm1hbGl6ZSBmcm9tICdAbWFwYm94L2dlb2pzb24tbm9ybWFsaXplJztcblxuaW1wb3J0IHtcbiAgZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUsXG4gIGdldEZpZWxkc0Zyb21EYXRhLFxuICBnZW5lcmF0ZUhhc2hJZCxcbiAgbm90TnVsbG9yVW5kZWZpbmVkXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVMsIEdVSURFU19GSUxFX0ZPUk1BVF9ET0N9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7cHJvY2Vzc0tlcGxlcmdsSlNPTn0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcblxuaW1wb3J0IHtnZXREdWNrREJ9IGZyb20gJy4uL2luaXQnO1xuXG5leHBvcnQgY29uc3QgQ1NWX05VTExTID0gL14obnVsbHxOVUxMfE51bGx8TmFOfFxcL058fCkkLztcblxudHlwZSBSb3dzQXNBcnJheSA9IGFueVtdW107XG50eXBlIFJvd3NBc09iamVjdCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG50eXBlIFJvd0RhdGEgPSBSb3dzQXNBcnJheSB8IFJvd3NBc09iamVjdDtcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc29yUmVzdWx0ID0ge1xuICBjb2xzPzogYXJyb3cuVmVjdG9yW107XG4gIHJvd3M6IFJvd0RhdGE7XG4gIGZpZWxkczogUHJvdG9EYXRhc2V0RmllbGRbXTtcbn07XG5cbmVudW0gQ09MVU1OX1RZUEVTIHtcbiAgR0VPTUVUUlkgPSAnR0VPTUVUUlknLFxuICBCT09MRUFOID0gJ0JPT0xFQU4nLFxuICBJTlRFR0VSID0gJ0lOVEVHRVInLFxuICBGTE9BVCA9ICdGTE9BVCcsXG4gIFRJTUUgPSAnVElNRScsXG4gIERBVEUgPSAnREFURScsXG4gIFRJTUVTVEFNUCA9ICdUSU1FU1RBTVAnLFxuICBWQVJDSEFSID0gJ1ZBUkNIQVInXG59XG4vLyBAdHMtZXhwZWN0LWVycm9yIGh0dHBzOi8vZHVja2RiLm9yZy9kb2NzL2RhdGEvY3N2L2F1dG9fZGV0ZWN0aW9uLmh0bWwjdHlwZS1kZXRlY3Rpb25cbmNvbnN0IENPTFVNTl9UWVBFU19QUklPUklUSUVTID0gW1xuICAnR0VPTUVUUlknLFxuICAnQk9PTEVBTicsXG4gICdJTlRFR0VSJyxcbiAgJ0ZMT0FUJyxcbiAgJ1RJTUUnLFxuICAnREFURScsXG4gICdUSU1FU1RBTVAnLFxuICAnVkFSQ0hBUidcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2x1bW5UeXBlVG9GaWVsZFR5cGUoY29sdW1uVHlwZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIHN3aXRjaCAoY29sdW1uVHlwZSkge1xuICAgIGNhc2UgQ09MVU1OX1RZUEVTLkJPT0xFQU46XG4gICAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW47XG4gICAgY2FzZSBDT0xVTU5fVFlQRVMuREFURTpcbiAgICAgIHJldHVybiBBTExfRklFTERfVFlQRVMuZGF0ZTtcbiAgICBjYXNlIENPTFVNTl9UWVBFUy5JTlRFR0VSOlxuICAgICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyO1xuICAgIGNhc2UgQ09MVU1OX1RZUEVTLkZMT0FUOlxuICAgICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5yZWFsO1xuICAgIGNhc2UgQ09MVU1OX1RZUEVTLlZBUkNIQVI6XG4gICAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZztcbiAgICBjYXNlIENPTFVNTl9UWVBFUy5USU1FU1RBTVA6XG4gICAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDtcbiAgICBjYXNlIENPTFVNTl9UWVBFUy5HRU9NRVRSWTpcbiAgICAgIHJldHVybiBBTExfRklFTERfVFlQRVMuZ2VvanNvbjtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gaXMgdGhlcmUgYW55IG90aGVyIHR5cGUgd2UgZGlkbid0IGNvdmVyP1xuICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCBEdWNrREIgQ29sdW1uIHR5cGU6ICR7Y29sdW1uVHlwZX1gKTtcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZFR5cGVUb0NvbHVtblR5cGUoZmllbGRUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgc3dpdGNoIChmaWVsZFR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5ib29sZWFuOlxuICAgICAgcmV0dXJuIENPTFVNTl9UWVBFUy5CT09MRUFOO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgICByZXR1cm4gQ09MVU1OX1RZUEVTLkRBVEU7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiBDT0xVTU5fVFlQRVMuSU5URUdFUjtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgICAgcmV0dXJuIENPTFVNTl9UWVBFUy5GTE9BVDtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc6XG4gICAgICByZXR1cm4gQ09MVU1OX1RZUEVTLlZBUkNIQVI7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIENPTFVNTl9UWVBFUy5USU1FU1RBTVA7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuZ2VvanNvbjpcbiAgICAgIHJldHVybiBDT0xVTU5fVFlQRVMuR0VPTUVUUlk7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIGlzIHRoZXJlIGFueSBvdGhlciB0eXBlIHdlIGRpZG4ndCBjb3Zlcj9cbiAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgRmllbGQgdHlwZSBmb3IgRHVja0RiOiAke2ZpZWxkVHlwZX1gKTtcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qXG4gKiBQcm9jZXNzIHVwbG9hZGVkIGV4cG9ydGVkIEtlcGxlcmdsIGpzb24gbWFwLlxuICogV2UgbmVlZCB0byBwb3B1bGF0ZSBmaWVsZCB3aXRoIHByb3BlciBEdWNrRGIgY29tcGF0aWJsZSB0eXBlLlxuICovXG4vLyBUT0RPOiBtZXJnZSB3aXRoIGxvZ2ljIGZyb20gcHJvY2Vzc0NzdlJvd09iamVjdC4gRGlmZmVyZW50IGZvcm1hdHM6IFtbXV0gdnMgW3t9XVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NLZXBsZXJnbEpTT05mb3JEdWNrRGIoXG4gIGtlcGxlckpzb25cbik6IFByb21pc2U8UmV0dXJuVHlwZTx0eXBlb2YgcHJvY2Vzc0tlcGxlcmdsSlNPTj4+IHtcbiAgY29uc3QgcmVzID0gcHJvY2Vzc0tlcGxlcmdsSlNPTihrZXBsZXJKc29uKTtcblxuICBjb25zdCBkYXRhc2V0cyA9IHJlcz8uZGF0YXNldHMgfHwgW107XG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cykge1xuICAgIGNvbnN0IHJvd3NBbGwgPSBkYXRhc2V0LmRhdGEucm93cztcbiAgICBjb25zdCBmaWVsZHNBbGwgPSBkYXRhc2V0LmRhdGEuZmllbGRzO1xuXG4gICAgY29uc3QgaGVhZGVyID0gZmllbGRzQWxsLm1hcChmID0+IGYubmFtZSk7XG4gICAgY29uc3Qgc2FtcGxlID0gZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUoe2ZpZWxkczogaGVhZGVyLCByb3dzOiByb3dzQWxsfSk7XG5cbiAgICBjb25zdCBzY2hlbWEgPVxuICAgICAgc2FtcGxlLmxlbmd0aCA+IDBcbiAgICAgICAgPyBhd2FpdCBzbmlmZkNzdlNjaGVtYShzYW1wbGUpXG4gICAgICAgIDogZmllbGRzQWxsLnJlZHVjZSgoYWNjLCBmaWVsZCkgPT4ge1xuICAgICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGRUeXBlVG9Db2x1bW5UeXBlKGZpZWxkLnR5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSk7XG4gICAgY29uc3QgZmllbGRzVXBkID0gY29uc29saWRhdGVGaWVsZFR5cGVzKGRhdGFzZXQuZGF0YS5maWVsZHMsIHNjaGVtYSk7XG5cbiAgICBkYXRhc2V0LmRhdGEuZmllbGRzID0gZmllbGRzQWxsLm1hcCgoZiwgaSkgPT4ge1xuICAgICAgcmV0dXJuIHsuLi5maWVsZHNVcGRbaV0sIC4uLmZ9O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn1cblxuLypcbiAqIFByb2Nlc3MgdXBsb2FkZWQgY3N2IHJldHVybmVkIGJ5IGxvYWRlcnMuZ2wgYXMgcm93IG9iamVjdCBhbmQgc3RyaW5nIHZhbHVlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzQ3N2Um93T2JqZWN0KFxuICByYXdEYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudWxsPltdXG4pOiBQcm9taXNlPFByb2Nlc3NvclJlc3VsdD4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3RGF0YSkgfHwgIXJhd0RhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkczogW10sXG4gICAgICByb3dzOiBbXVxuICAgIH07XG4gIH1cblxuICBjb25zdCBoZWFkZXIgPSBPYmplY3Qua2V5cyhyYXdEYXRhWzBdKTsgLy8gW2xhdCwgbG5nLCB2YWx1ZV1cblxuICAvLyByb3cgb2JqZWN0IGNhbiBzdGlsbCBjb250YWluIHZhbHVlcyBsaWtlIGBOdWxsYCBvciBgTi9BYFxuICBjbGVhblVwRmFsc3lDc3ZWYWx1ZShyYXdEYXRhKTtcbiAgY29uc3Qgc2FtcGxlID0gZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUoe2ZpZWxkczogaGVhZGVyLCByb3dzOiByYXdEYXRhfSk7XG4gIC8vIGFkZCBzYW1wbGUgZGF0YSB0byBkdWNrZGIgYW5kIGdldCBzY2hlbWFcbiAgY29uc3Qgc2NoZW1hID0gYXdhaXQgc25pZmZDc3ZTY2hlbWEoc2FtcGxlKTtcblxuICBjb25zdCBmaWVsZHNXQW5hbHl6ZXJUeXBlID0gZ2V0RmllbGRzRnJvbURhdGEoc2FtcGxlLCBoZWFkZXIpO1xuXG4gIGNvbnN0IGZpZWxkcyA9IGNvbnNvbGlkYXRlRmllbGRUeXBlcyhmaWVsZHNXQW5hbHl6ZXJUeXBlLCBzY2hlbWEpO1xuXG4gIHJldHVybiB7cm93czogcmF3RGF0YSwgZmllbGRzfTtcbn1cblxuZnVuY3Rpb24gY2xlYW5VcEZhbHN5Q3N2VmFsdWUocm93czogUm93RGF0YSk6IHZvaWQge1xuICBjb25zdCByZSA9IG5ldyBSZWdFeHAoQ1NWX05VTExTLCAnZycpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICBPYmplY3Qua2V5cyhyb3dzW2ldKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAvLyBoZXJlIHdlIHBhcnNlIGVtcHR5IGRhdGEgYXMgbnVsbFxuICAgICAgaWYgKHR5cGVvZiByb3dzW2ldW2tleV0gPT09ICdzdHJpbmcnICYmIChyb3dzW2ldW2tleV0gYXMgc3RyaW5nKS5tYXRjaChyZSkpIHtcbiAgICAgICAgcm93c1tpXVtrZXldID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vLyBhbGlnbiB0eXBlIGFuYWx5emVyIHR5cGVzIHdpdGggRHVja0RCIGNzdiBhdXRvIGRldGVjdGVkIGNvbHVtbiB0eXBlc1xuZnVuY3Rpb24gY29uc29saWRhdGVGaWVsZFR5cGVzKGZpZWxkcywgc2NoZW1hKSB7XG4gIHJldHVybiBmaWVsZHMubWFwKGZpZWxkID0+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lID0gZmllbGQubmFtZTtcblxuICAgIGNvbnN0IGRldGVjdGVkQ29sdW1uVHlwZSA9IHNjaGVtYVtjb2x1bW5OYW1lXTtcblxuICAgIC8vIFRPRE8gY29sdW1uVHlwZVRvRmllbGRUeXBlIHRyYW5mb3JtcyBkZXRlY3RlZCB0aW1lc3RhbXBzIHRvIHN0cmluZyxcbiAgICAvLyBjb21wbGV0ZWx5IGJyZWFraW5nIHRpbWUgZmlsdGVyIGxvZ2ljLlxuICAgIC8vIGNvbnN0IGZpZWxkVHlwZSA9IGNvbHVtblR5cGVUb0ZpZWxkVHlwZShkZXRlY3RlZENvbHVtblR5cGUpIHx8IGZpZWxkLnR5cGU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZmllbGQsXG4gICAgICAvLyB0eXBlOiBmaWVsZFR5cGUsXG4gICAgICBkdWNrREJDb2x1bW5UeXBlOiBkZXRlY3RlZENvbHVtblR5cGVcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdG9DU1ZSb3cocm93OiB1bmtub3duW10pOiBzdHJpbmcge1xuICByZXR1cm4gYCR7cm93XG4gICAgLm1hcChyID0+IHtcbiAgICAgIGNvbnN0IHJUb1N0ciA9IG5vdE51bGxvclVuZGVmaW5lZChyKSA/IFN0cmluZyhyKS5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykgOiAnJztcbiAgICAgIHJldHVybiByVG9TdHIuaW5jbHVkZXMoJywnKSA/IGBcIiR7clRvU3RyfVwiYCA6IHJUb1N0cjtcbiAgICB9KVxuICAgIC5qb2luKCcsJyl9XFxuYDtcbn1cblxuLy8gVXNlIER1Y2NrREIgdG8gZGV0ZWN0IGNzdiBjb2x1bW4gc2NoZW1hXG5hc3luYyBmdW5jdGlvbiBzbmlmZkNzdlNjaGVtYShzYW1wbGU6IFJvd0RhdGEpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHNhbXBsZSkgfHwgc2FtcGxlLmxlbmd0aCA8IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgaGVhZGVyUm93ID0gdG9DU1ZSb3coT2JqZWN0LmtleXMoc2FtcGxlWzBdKSk7XG5cbiAgY29uc3QgY3N2Q29udGVudCA9IChzYW1wbGUgYXMgKGFueVtdIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW10pLnJlZHVjZShcbiAgICAoYWNjdTogc3RyaW5nLCByb3cpID0+IGAke2FjY3V9JHt0b0NTVlJvdyhPYmplY3QudmFsdWVzKHJvdykpfWAsXG4gICAgaGVhZGVyUm93XG4gICk7XG5cbiAgY29uc3QgZGIgPSBhd2FpdCBnZXREdWNrREIoKTtcbiAgY29uc3QgYyA9IGF3YWl0IGRiLmNvbm5lY3QoKTtcblxuICBjb25zdCBmaWxlTmFtZSA9IGdlbmVyYXRlSGFzaElkKCk7XG4gIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZVRleHQoYCR7ZmlsZU5hbWV9LSR7Z2VuZXJhdGVIYXNoSWR9LmNzdmAsIGNzdkNvbnRlbnQpO1xuXG4gIC8vIGh0dHBzOi8vZHVja2RiLm9yZy9kb2NzL2RhdGEvY3N2L2F1dG9fZGV0ZWN0aW9uLmh0bWxcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYy5xdWVyeShgXG4gICAgICAgIEZST00gc25pZmZfY3N2KCcke2ZpbGVOYW1lfS0ke2dlbmVyYXRlSGFzaElkfS5jc3YnLCBcbiAgICAgICAgc2FtcGxlX3NpemUgPSA1MDAsXG4gICAgICAgIGF1dG9fdHlwZV9jYW5kaWRhdGVzID0gWydGTE9BVCcsICdJTlRFR0VSJywgJ1RJTUVTVEFNUCcsICdEQVRFJywgJ1RJTUUnLCAnVkFSQ0hBUicsICdCT09MRUFOJ10pO1xuICAgIGApO1xuXG4gIGNvbnN0IHNjaGVtYVJlc3VsdCA9IHJlc3VsdC50b0FycmF5KCkubWFwKHJvdyA9PiByb3cudG9KU09OKCkpO1xuXG4gIGNvbnN0IGNvbHVtbnMgPSBzY2hlbWFSZXN1bHRbMF0uQ29sdW1ucztcbiAgY29uc3Qgc2NoZW1hID0ge307XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgIHNjaGVtYVtjb2x1bW5zLmdldChpKS5uYW1lXSA9IGNvbHVtbnMuZ2V0KGkpLnR5cGU7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0dlb2pzb24ocmF3RGF0YTogdW5rbm93bik6IFByb2Nlc3NvclJlc3VsdCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRHZW9qc29uID0gbm9ybWFsaXplKHJhd0RhdGEpO1xuXG4gIGlmICghbm9ybWFsaXplZEdlb2pzb24gfHwgIUFycmF5LmlzQXJyYXkobm9ybWFsaXplZEdlb2pzb24uZmVhdHVyZXMpKSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICBgUmVhZCBGaWxlIEZhaWxlZDogRmlsZSBpcyBub3QgYSB2YWxpZCBHZW9KU09OLiBSZWFkIG1vcmUgYWJvdXQgW3N1cHBvcnRlZCBmaWxlIGZvcm1hdF0oJHtHVUlERVNfRklMRV9GT1JNQVRfRE9DfSlgXG4gICAgKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgRG9uJ3QgcGFzcyBlbXB0eSBmaWVsZHMsIGFzIGR1Y2sgZGIgb3V0cHV0cyBhbiBlbXB0eSBkYXRhc2V0XG4gIHJldHVybiB7XG4gICAgcm93czogbm9ybWFsaXplZEdlb2pzb25cbiAgICAvLyBUT0RPIGdldCBmaWVsZHMgdG8gcHJlc2VydmUgZmllbGQgbmFtZXM/XG4gICAgLy8gZmllbGRzOiBb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a0YsUUFBUSxPQUFBbEYsTUFBQSxDQUFJNEYsMkJBQWMsV0FBUWIsVUFBVSxDQUFDO1FBQUE7VUFBQVEsU0FBQSxDQUFBckksSUFBQTtVQUFBLE9BR3JEK0gsQ0FBQyxDQUFDYSxLQUFLLDhCQUFBOUYsTUFBQSxDQUNKa0YsUUFBUSxPQUFBbEYsTUFBQSxDQUFJNEYsMkJBQWMsd0pBRy9DLENBQUM7UUFBQTtVQUpFVCxNQUFNLEdBQUFJLFNBQUEsQ0FBQWxELElBQUE7VUFNTitDLFlBQVksR0FBR0QsTUFBTSxDQUFDWSxPQUFPLENBQUMsQ0FBQyxDQUFDOUQsR0FBRyxDQUFDLFVBQUFtQyxHQUFHO1lBQUEsT0FBSUEsR0FBRyxDQUFDNEIsTUFBTSxDQUFDLENBQUM7VUFBQSxFQUFDO1VBRXhEWCxPQUFPLEdBQUdELFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQ2EsT0FBTztVQUNqQ3ZFLE1BQU0sR0FBRyxDQUFDLENBQUM7VUFDakIsS0FBU2lCLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBRzBDLE9BQU8sQ0FBQ2hKLE1BQU0sRUFBRXNHLENBQUMsRUFBRSxFQUFFO1lBQ3ZDakIsTUFBTSxDQUFDMkQsT0FBTyxDQUFDYSxHQUFHLENBQUN2RCxDQUFDLENBQUMsQ0FBQ3BGLElBQUksQ0FBQyxHQUFHOEgsT0FBTyxDQUFDYSxHQUFHLENBQUN2RCxDQUFDLENBQUMsQ0FBQ0YsSUFBSTtVQUNuRDtVQUFDLE9BQUE4QyxTQUFBLENBQUF2QyxNQUFBLFdBRU10QixNQUFNO1FBQUE7UUFBQTtVQUFBLE9BQUE2RCxTQUFBLENBQUEzQyxJQUFBO01BQUE7SUFBQSxHQUFBaUMsUUFBQTtFQUFBLENBQ2Q7RUFBQSxPQUFBRCxlQUFBLENBQUExRyxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUVNLFNBQVMrSCxjQUFjQSxDQUFDOUMsT0FBZ0IsRUFBbUI7RUFDaEUsSUFBTStDLGlCQUFpQixHQUFHLElBQUFDLDRCQUFTLEVBQUNoRCxPQUFPLENBQUM7RUFFNUMsSUFBSSxDQUFDK0MsaUJBQWlCLElBQUksQ0FBQ2xLLEtBQUssQ0FBQ0MsT0FBTyxDQUFDaUssaUJBQWlCLENBQUNFLFFBQVEsQ0FBQyxFQUFFO0lBQ3BFLElBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFLLDJGQUFBeEcsTUFBQSxDQUNxRXlHLGlDQUFzQixNQUNsSCxDQUFDO0lBQ0QsTUFBTUYsS0FBSztFQUNiOztFQUVBO0VBQ0EsT0FBTztJQUNMeEUsSUFBSSxFQUFFcUU7SUFDTjtJQUNBO0VBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
|
|
327
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvanNvbk5vcm1hbGl6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl9wcm9jZXNzb3JzIiwiX2luaXQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJDU1ZfTlVMTFMiLCJleHBvcnRzIiwiQ09MVU1OX1RZUEVTIiwiQ09MVU1OX1RZUEVTX1BSSU9SSVRJRVMiLCJjb2x1bW5UeXBlVG9GaWVsZFR5cGUiLCJjb2x1bW5UeXBlIiwiQk9PTEVBTiIsIkFMTF9GSUVMRF9UWVBFUyIsIkRBVEUiLCJkYXRlIiwiSU5URUdFUiIsImludGVnZXIiLCJGTE9BVCIsInJlYWwiLCJWQVJDSEFSIiwic3RyaW5nIiwiVElNRVNUQU1QIiwidGltZXN0YW1wIiwiR0VPTUVUUlkiLCJnZW9qc29uIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJmaWVsZFR5cGVUb0NvbHVtblR5cGUiLCJmaWVsZFR5cGUiLCJwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiIiwiX3giLCJfcHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYiIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwia2VwbGVySnNvbiIsInJlcyIsImRhdGFzZXRzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfbG9vcDIiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dDIiLCJwcmV2IiwicHJvY2Vzc0tlcGxlcmdsSlNPTiIsImRhdGFzZXQiLCJyb3dzQWxsIiwiZmllbGRzQWxsIiwiaGVhZGVyIiwic2FtcGxlIiwic2NoZW1hIiwiZmllbGRzVXBkIiwiX2xvb3AyJCIsIl9jb250ZXh0IiwiZGF0YSIsInJvd3MiLCJmaWVsZHMiLCJtYXAiLCJnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZSIsInNuaWZmQ3N2U2NoZW1hIiwidDAiLCJzZW50IiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJ0eXBlIiwiY29uc29saWRhdGVGaWVsZFR5cGVzIiwiaSIsInN0b3AiLCJkZWxlZ2F0ZVlpZWxkIiwidDEiLCJmaW5pc2giLCJhYnJ1cHQiLCJwcm9jZXNzQ3N2Um93T2JqZWN0IiwiX3gyIiwiX3Byb2Nlc3NDc3ZSb3dPYmplY3QiLCJfY2FsbGVlMiIsInJhd0RhdGEiLCJmaWVsZHNXQW5hbHl6ZXJUeXBlIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQzIiwiY2xlYW5VcEZhbHN5Q3N2VmFsdWUiLCJnZXRGaWVsZHNGcm9tRGF0YSIsInJlIiwiUmVnRXhwIiwiX2xvb3AiLCJrZXkiLCJtYXRjaCIsImNvbHVtbk5hbWUiLCJkZXRlY3RlZENvbHVtblR5cGUiLCJkdWNrREJDb2x1bW5UeXBlIiwidG9DU1ZSb3ciLCJyb3ciLCJyVG9TdHIiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJTdHJpbmciLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJqb2luIiwiX3gzIiwiX3NuaWZmQ3N2U2NoZW1hIiwiX2NhbGxlZTMiLCJoZWFkZXJSb3ciLCJjc3ZDb250ZW50IiwiZGIiLCJjIiwiZmlsZU5hbWUiLCJyZXN1bHQiLCJzY2hlbWFSZXN1bHQiLCJjb2x1bW5zIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQ0IiwiYWNjdSIsInZhbHVlcyIsImdldER1Y2tEQiIsImNvbm5lY3QiLCJnZW5lcmF0ZUhhc2hJZCIsInJlZ2lzdGVyRmlsZVRleHQiLCJxdWVyeSIsInRvQXJyYXkiLCJ0b0pTT04iLCJDb2x1bW5zIiwiZ2V0IiwicHJvY2Vzc0dlb2pzb24iLCJub3JtYWxpemVkR2VvanNvbiIsIm5vcm1hbGl6ZSIsImZlYXR1cmVzIiwiZXJyb3IiLCJFcnJvciIsIkdVSURFU19GSUxFX0ZPUk1BVF9ET0MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvY2Vzc29ycy9kYXRhLXByb2Nlc3Nvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IG5vcm1hbGl6ZSBmcm9tICdAbWFwYm94L2dlb2pzb24tbm9ybWFsaXplJztcblxuaW1wb3J0IHtcbiAgZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUsXG4gIGdldEZpZWxkc0Zyb21EYXRhLFxuICBnZW5lcmF0ZUhhc2hJZCxcbiAgbm90TnVsbG9yVW5kZWZpbmVkXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVMsIEdVSURFU19GSUxFX0ZPUk1BVF9ET0N9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7cHJvY2Vzc0tlcGxlcmdsSlNPTn0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcblxuaW1wb3J0IHtnZXREdWNrREJ9IGZyb20gJy4uL2luaXQnO1xuXG5leHBvcnQgY29uc3QgQ1NWX05VTExTID0gL14obnVsbHxOVUxMfE51bGx8TmFOfFxcL058fCkkLztcblxudHlwZSBSb3dzQXNBcnJheSA9IGFueVtdW107XG50eXBlIFJvd3NBc09iamVjdCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG50eXBlIFJvd0RhdGEgPSBSb3dzQXNBcnJheSB8IFJvd3NBc09iamVjdDtcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc29yUmVzdWx0ID0ge1xuICBjb2xzPzogYXJyb3cuVmVjdG9yW107XG4gIHJvd3M6IFJvd0RhdGE7XG4gIGZpZWxkczogUHJvdG9EYXRhc2V0RmllbGRbXTtcbn07XG5cbmVudW0gQ09MVU1OX1RZUEVTIHtcbiAgR0VPTUVUUlkgPSAnR0VPTUVUUlknLFxuICBCT09MRUFOID0gJ0JPT0xFQU4nLFxuICBJTlRFR0VSID0gJ0lOVEVHRVInLFxuICBGTE9BVCA9ICdGTE9BVCcsXG4gIFRJTUUgPSAnVElNRScsXG4gIERBVEUgPSAnREFURScsXG4gIFRJTUVTVEFNUCA9ICdUSU1FU1RBTVAnLFxuICBWQVJDSEFSID0gJ1ZBUkNIQVInXG59XG4vLyBodHRwczovL2R1Y2tkYi5vcmcvZG9jcy9kYXRhL2Nzdi9hdXRvX2RldGVjdGlvbi5odG1sI3R5cGUtZGV0ZWN0aW9uXG5leHBvcnQgY29uc3QgQ09MVU1OX1RZUEVTX1BSSU9SSVRJRVMgPSBbXG4gICdHRU9NRVRSWScsXG4gICdCT09MRUFOJyxcbiAgJ0lOVEVHRVInLFxuICAnRkxPQVQnLFxuICAnVElNRScsXG4gICdEQVRFJyxcbiAgJ1RJTUVTVEFNUCcsXG4gICdWQVJDSEFSJ1xuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbHVtblR5cGVUb0ZpZWxkVHlwZShjb2x1bW5UeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgc3dpdGNoIChjb2x1bW5UeXBlKSB7XG4gICAgY2FzZSBDT0xVTU5fVFlQRVMuQk9PTEVBTjpcbiAgICAgIHJldHVybiBBTExfRklFTERfVFlQRVMuYm9vbGVhbjtcbiAgICBjYXNlIENPTFVNTl9UWVBFUy5EQVRFOlxuICAgICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5kYXRlO1xuICAgIGNhc2UgQ09MVU1OX1RZUEVTLklOVEVHRVI6XG4gICAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI7XG4gICAgY2FzZSBDT0xVTU5fVFlQRVMuRkxPQVQ6XG4gICAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLnJlYWw7XG4gICAgY2FzZSBDT0xVTU5fVFlQRVMuVkFSQ0hBUjpcbiAgICAgIHJldHVybiBBTExfRklFTERfVFlQRVMuc3RyaW5nO1xuICAgIGNhc2UgQ09MVU1OX1RZUEVTLlRJTUVTVEFNUDpcbiAgICAgIHJldHVybiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wO1xuICAgIGNhc2UgQ09MVU1OX1RZUEVTLkdFT01FVFJZOlxuICAgICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5nZW9qc29uO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBpcyB0aGVyZSBhbnkgb3RoZXIgdHlwZSB3ZSBkaWRuJ3QgY292ZXI/XG4gICAgICBjb25zb2xlLndhcm4oYFVuc3VwcG9ydGVkIER1Y2tEQiBDb2x1bW4gdHlwZTogJHtjb2x1bW5UeXBlfWApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkVHlwZVRvQ29sdW1uVHlwZShmaWVsZFR5cGU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW46XG4gICAgICByZXR1cm4gQ09MVU1OX1RZUEVTLkJPT0xFQU47XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuZGF0ZTpcbiAgICAgIHJldHVybiBDT0xVTU5fVFlQRVMuREFURTtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgcmV0dXJuIENPTFVNTl9UWVBFUy5JTlRFR0VSO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgICByZXR1cm4gQ09MVU1OX1RZUEVTLkZMT0FUO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZzpcbiAgICAgIHJldHVybiBDT0xVTU5fVFlQRVMuVkFSQ0hBUjtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA6XG4gICAgICByZXR1cm4gQ09MVU1OX1RZUEVTLlRJTUVTVEFNUDtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5nZW9qc29uOlxuICAgICAgcmV0dXJuIENPTFVNTl9UWVBFUy5HRU9NRVRSWTtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gaXMgdGhlcmUgYW55IG90aGVyIHR5cGUgd2UgZGlkbid0IGNvdmVyP1xuICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCBGaWVsZCB0eXBlIGZvciBEdWNrRGI6ICR7ZmllbGRUeXBlfWApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLypcbiAqIFByb2Nlc3MgdXBsb2FkZWQgZXhwb3J0ZWQgS2VwbGVyZ2wganNvbiBtYXAuXG4gKiBXZSBuZWVkIHRvIHBvcHVsYXRlIGZpZWxkIHdpdGggcHJvcGVyIER1Y2tEYiBjb21wYXRpYmxlIHR5cGUuXG4gKi9cbi8vIFRPRE86IG1lcmdlIHdpdGggbG9naWMgZnJvbSBwcm9jZXNzQ3N2Um93T2JqZWN0LiBEaWZmZXJlbnQgZm9ybWF0czogW1tdXSB2cyBbe31dXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYihcbiAga2VwbGVySnNvblxuKTogUHJvbWlzZTxSZXR1cm5UeXBlPHR5cGVvZiBwcm9jZXNzS2VwbGVyZ2xKU09OPj4ge1xuICBjb25zdCByZXMgPSBwcm9jZXNzS2VwbGVyZ2xKU09OKGtlcGxlckpzb24pO1xuXG4gIGNvbnN0IGRhdGFzZXRzID0gcmVzPy5kYXRhc2V0cyB8fCBbXTtcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzKSB7XG4gICAgY29uc3Qgcm93c0FsbCA9IGRhdGFzZXQuZGF0YS5yb3dzO1xuICAgIGNvbnN0IGZpZWxkc0FsbCA9IGRhdGFzZXQuZGF0YS5maWVsZHM7XG5cbiAgICBjb25zdCBoZWFkZXIgPSBmaWVsZHNBbGwubWFwKGYgPT4gZi5uYW1lKTtcbiAgICBjb25zdCBzYW1wbGUgPSBnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZSh7ZmllbGRzOiBoZWFkZXIsIHJvd3M6IHJvd3NBbGx9KTtcblxuICAgIGNvbnN0IHNjaGVtYSA9XG4gICAgICBzYW1wbGUubGVuZ3RoID4gMFxuICAgICAgICA/IGF3YWl0IHNuaWZmQ3N2U2NoZW1hKHNhbXBsZSlcbiAgICAgICAgOiBmaWVsZHNBbGwucmVkdWNlKChhY2MsIGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBhY2NbZmllbGQubmFtZV0gPSBmaWVsZFR5cGVUb0NvbHVtblR5cGUoZmllbGQudHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9KTtcbiAgICBjb25zdCBmaWVsZHNVcGQgPSBjb25zb2xpZGF0ZUZpZWxkVHlwZXMoZGF0YXNldC5kYXRhLmZpZWxkcywgc2NoZW1hKTtcblxuICAgIGRhdGFzZXQuZGF0YS5maWVsZHMgPSBmaWVsZHNBbGwubWFwKChmLCBpKSA9PiB7XG4gICAgICByZXR1cm4gey4uLmZpZWxkc1VwZFtpXSwgLi4uZn07XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufVxuXG4vKlxuICogUHJvY2VzcyB1cGxvYWRlZCBjc3YgcmV0dXJuZWQgYnkgbG9hZGVycy5nbCBhcyByb3cgb2JqZWN0IGFuZCBzdHJpbmcgdmFsdWVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NDc3ZSb3dPYmplY3QoXG4gIHJhd0RhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGw+W11cbik6IFByb21pc2U8UHJvY2Vzc29yUmVzdWx0PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXdEYXRhKSB8fCAhcmF3RGF0YS5sZW5ndGgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzOiBbXSxcbiAgICAgIHJvd3M6IFtdXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGhlYWRlciA9IE9iamVjdC5rZXlzKHJhd0RhdGFbMF0pOyAvLyBbbGF0LCBsbmcsIHZhbHVlXVxuXG4gIC8vIHJvdyBvYmplY3QgY2FuIHN0aWxsIGNvbnRhaW4gdmFsdWVzIGxpa2UgYE51bGxgIG9yIGBOL0FgXG4gIGNsZWFuVXBGYWxzeUNzdlZhbHVlKHJhd0RhdGEpO1xuICBjb25zdCBzYW1wbGUgPSBnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZSh7ZmllbGRzOiBoZWFkZXIsIHJvd3M6IHJhd0RhdGF9KTtcbiAgLy8gYWRkIHNhbXBsZSBkYXRhIHRvIGR1Y2tkYiBhbmQgZ2V0IHNjaGVtYVxuICBjb25zdCBzY2hlbWEgPSBhd2FpdCBzbmlmZkNzdlNjaGVtYShzYW1wbGUpO1xuXG4gIGNvbnN0IGZpZWxkc1dBbmFseXplclR5cGUgPSBnZXRGaWVsZHNGcm9tRGF0YShzYW1wbGUsIGhlYWRlcik7XG5cbiAgY29uc3QgZmllbGRzID0gY29uc29saWRhdGVGaWVsZFR5cGVzKGZpZWxkc1dBbmFseXplclR5cGUsIHNjaGVtYSk7XG5cbiAgcmV0dXJuIHtyb3dzOiByYXdEYXRhLCBmaWVsZHN9O1xufVxuXG5mdW5jdGlvbiBjbGVhblVwRmFsc3lDc3ZWYWx1ZShyb3dzOiBSb3dEYXRhKTogdm9pZCB7XG4gIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChDU1ZfTlVMTFMsICdnJyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgIE9iamVjdC5rZXlzKHJvd3NbaV0pLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIC8vIGhlcmUgd2UgcGFyc2UgZW1wdHkgZGF0YSBhcyBudWxsXG4gICAgICBpZiAodHlwZW9mIHJvd3NbaV1ba2V5XSA9PT0gJ3N0cmluZycgJiYgKHJvd3NbaV1ba2V5XSBhcyBzdHJpbmcpLm1hdGNoKHJlKSkge1xuICAgICAgICByb3dzW2ldW2tleV0gPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbi8vIGFsaWduIHR5cGUgYW5hbHl6ZXIgdHlwZXMgd2l0aCBEdWNrREIgY3N2IGF1dG8gZGV0ZWN0ZWQgY29sdW1uIHR5cGVzXG5mdW5jdGlvbiBjb25zb2xpZGF0ZUZpZWxkVHlwZXMoZmllbGRzLCBzY2hlbWEpIHtcbiAgcmV0dXJuIGZpZWxkcy5tYXAoZmllbGQgPT4ge1xuICAgIGNvbnN0IGNvbHVtbk5hbWUgPSBmaWVsZC5uYW1lO1xuXG4gICAgY29uc3QgZGV0ZWN0ZWRDb2x1bW5UeXBlID0gc2NoZW1hW2NvbHVtbk5hbWVdO1xuXG4gICAgLy8gVE9ETyBjb2x1bW5UeXBlVG9GaWVsZFR5cGUgdHJhbmZvcm1zIGRldGVjdGVkIHRpbWVzdGFtcHMgdG8gc3RyaW5nLFxuICAgIC8vIGNvbXBsZXRlbHkgYnJlYWtpbmcgdGltZSBmaWx0ZXIgbG9naWMuXG4gICAgLy8gY29uc3QgZmllbGRUeXBlID0gY29sdW1uVHlwZVRvRmllbGRUeXBlKGRldGVjdGVkQ29sdW1uVHlwZSkgfHwgZmllbGQudHlwZTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5maWVsZCxcbiAgICAgIC8vIHR5cGU6IGZpZWxkVHlwZSxcbiAgICAgIGR1Y2tEQkNvbHVtblR5cGU6IGRldGVjdGVkQ29sdW1uVHlwZVxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0b0NTVlJvdyhyb3c6IHVua25vd25bXSk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtyb3dcbiAgICAubWFwKHIgPT4ge1xuICAgICAgY29uc3QgclRvU3RyID0gbm90TnVsbG9yVW5kZWZpbmVkKHIpID8gU3RyaW5nKHIpLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKSA6ICcnO1xuICAgICAgcmV0dXJuIHJUb1N0ci5pbmNsdWRlcygnLCcpID8gYFwiJHtyVG9TdHJ9XCJgIDogclRvU3RyO1xuICAgIH0pXG4gICAgLmpvaW4oJywnKX1cXG5gO1xufVxuXG4vLyBVc2UgRHVjY2tEQiB0byBkZXRlY3QgY3N2IGNvbHVtbiBzY2hlbWFcbmFzeW5jIGZ1bmN0aW9uIHNuaWZmQ3N2U2NoZW1hKHNhbXBsZTogUm93RGF0YSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoc2FtcGxlKSB8fCBzYW1wbGUubGVuZ3RoIDwgMCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBoZWFkZXJSb3cgPSB0b0NTVlJvdyhPYmplY3Qua2V5cyhzYW1wbGVbMF0pKTtcblxuICBjb25zdCBjc3ZDb250ZW50ID0gKHNhbXBsZSBhcyAoYW55W10gfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbXSkucmVkdWNlKFxuICAgIChhY2N1OiBzdHJpbmcsIHJvdykgPT4gYCR7YWNjdX0ke3RvQ1NWUm93KE9iamVjdC52YWx1ZXMocm93KSl9YCxcbiAgICBoZWFkZXJSb3dcbiAgKTtcblxuICBjb25zdCBkYiA9IGF3YWl0IGdldER1Y2tEQigpO1xuICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gIGNvbnN0IGZpbGVOYW1lID0gZ2VuZXJhdGVIYXNoSWQoKTtcbiAgYXdhaXQgZGIucmVnaXN0ZXJGaWxlVGV4dChgJHtmaWxlTmFtZX0tJHtnZW5lcmF0ZUhhc2hJZH0uY3N2YCwgY3N2Q29udGVudCk7XG5cbiAgLy8gaHR0cHM6Ly9kdWNrZGIub3JnL2RvY3MvZGF0YS9jc3YvYXV0b19kZXRlY3Rpb24uaHRtbFxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgRlJPTSBzbmlmZl9jc3YoJyR7ZmlsZU5hbWV9LSR7Z2VuZXJhdGVIYXNoSWR9LmNzdicsIFxuICAgICAgICBzYW1wbGVfc2l6ZSA9IDUwMCxcbiAgICAgICAgYXV0b190eXBlX2NhbmRpZGF0ZXMgPSBbJ0ZMT0FUJywgJ0lOVEVHRVInLCAnVElNRVNUQU1QJywgJ0RBVEUnLCAnVElNRScsICdWQVJDSEFSJywgJ0JPT0xFQU4nXSk7XG4gICAgYCk7XG5cbiAgY29uc3Qgc2NoZW1hUmVzdWx0ID0gcmVzdWx0LnRvQXJyYXkoKS5tYXAocm93ID0+IHJvdy50b0pTT04oKSk7XG5cbiAgY29uc3QgY29sdW1ucyA9IHNjaGVtYVJlc3VsdFswXS5Db2x1bW5zO1xuICBjb25zdCBzY2hlbWEgPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgc2NoZW1hW2NvbHVtbnMuZ2V0KGkpLm5hbWVdID0gY29sdW1ucy5nZXQoaSkudHlwZTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzR2VvanNvbihyYXdEYXRhOiB1bmtub3duKTogUHJvY2Vzc29yUmVzdWx0IHtcbiAgY29uc3Qgbm9ybWFsaXplZEdlb2pzb24gPSBub3JtYWxpemUocmF3RGF0YSk7XG5cbiAgaWYgKCFub3JtYWxpemVkR2VvanNvbiB8fCAhQXJyYXkuaXNBcnJheShub3JtYWxpemVkR2VvanNvbi5mZWF0dXJlcykpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgIGBSZWFkIEZpbGUgRmFpbGVkOiBGaWxlIGlzIG5vdCBhIHZhbGlkIEdlb0pTT04uIFJlYWQgbW9yZSBhYm91dCBbc3VwcG9ydGVkIGZpbGUgZm9ybWF0XSgke0dVSURFU19GSUxFX0ZPUk1BVF9ET0N9KWBcbiAgICApO1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBEb24ndCBwYXNzIGVtcHR5IGZpZWxkcywgYXMgZHVjayBkYiBvdXRwdXRzIGFuIGVtcHR5IGRhdGFzZXRcbiAgcmV0dXJuIHtcbiAgICByb3dzOiBub3JtYWxpemVkR2VvanNvblxuICAgIC8vIFRPRE8gZ2V0IGZpZWxkcyB0byBwcmVzZXJ2ZSBmaWVsZCBuYW1lcz9cbiAgICAvLyBmaWVsZHM6IFtdXG4gIH07XG59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QTdGLE1BQUEsQ0FBSWtGLFFBQVEsT0FBQWxGLE1BQUEsQ0FBSTRGLDJCQUFjLFdBQVFiLFVBQVUsQ0FBQztRQUFBO1VBQUFRLFNBQUEsQ0FBQXJJLElBQUE7VUFBQSxPQUdyRCtILENBQUMsQ0FBQ2EsS0FBSyw4QkFBQTlGLE1BQUEsQ0FDSmtGLFFBQVEsT0FBQWxGLE1BQUEsQ0FBSTRGLDJCQUFjLHdKQUcvQyxDQUFDO1FBQUE7VUFKRVQsTUFBTSxHQUFBSSxTQUFBLENBQUFsRCxJQUFBO1VBTU4rQyxZQUFZLEdBQUdELE1BQU0sQ0FBQ1ksT0FBTyxDQUFDLENBQUMsQ0FBQzlELEdBQUcsQ0FBQyxVQUFBbUMsR0FBRztZQUFBLE9BQUlBLEdBQUcsQ0FBQzRCLE1BQU0sQ0FBQyxDQUFDO1VBQUEsRUFBQztVQUV4RFgsT0FBTyxHQUFHRCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUNhLE9BQU87VUFDakN2RSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1VBQ2pCLEtBQVNpQixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcwQyxPQUFPLENBQUNoSixNQUFNLEVBQUVzRyxDQUFDLEVBQUUsRUFBRTtZQUN2Q2pCLE1BQU0sQ0FBQzJELE9BQU8sQ0FBQ2EsR0FBRyxDQUFDdkQsQ0FBQyxDQUFDLENBQUNwRixJQUFJLENBQUMsR0FBRzhILE9BQU8sQ0FBQ2EsR0FBRyxDQUFDdkQsQ0FBQyxDQUFDLENBQUNGLElBQUk7VUFDbkQ7VUFBQyxPQUFBOEMsU0FBQSxDQUFBdkMsTUFBQSxXQUVNdEIsTUFBTTtRQUFBO1FBQUE7VUFBQSxPQUFBNkQsU0FBQSxDQUFBM0MsSUFBQTtNQUFBO0lBQUEsR0FBQWlDLFFBQUE7RUFBQSxDQUNkO0VBQUEsT0FBQUQsZUFBQSxDQUFBMUcsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFFTSxTQUFTK0gsY0FBY0EsQ0FBQzlDLE9BQWdCLEVBQW1CO0VBQ2hFLElBQU0rQyxpQkFBaUIsR0FBRyxJQUFBQyw0QkFBUyxFQUFDaEQsT0FBTyxDQUFDO0VBRTVDLElBQUksQ0FBQytDLGlCQUFpQixJQUFJLENBQUNsSyxLQUFLLENBQUNDLE9BQU8sQ0FBQ2lLLGlCQUFpQixDQUFDRSxRQUFRLENBQUMsRUFBRTtJQUNwRSxJQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSywyRkFBQXhHLE1BQUEsQ0FDcUV5RyxpQ0FBc0IsTUFDbEgsQ0FBQztJQUNELE1BQU1GLEtBQUs7RUFDYjs7RUFFQTtFQUNBLE9BQU87SUFDTHhFLElBQUksRUFBRXFFO0lBQ047SUFDQTtFQUNGLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1,4 +1,65 @@
|
|
|
1
|
+
import * as arrow from 'apache-arrow';
|
|
1
2
|
import { DataType } from 'apache-arrow/type';
|
|
3
|
+
import { AsyncDuckDBConnection } from '@duckdb/duckdb-wasm';
|
|
4
|
+
import { ProtoDatasetField } from '@kepler.gl/types';
|
|
5
|
+
export declare const SUPPORTED_DUCKDB_DROP_EXTENSIONS: string[];
|
|
6
|
+
export declare type DuckDBColumnDesc = {
|
|
7
|
+
name: string;
|
|
8
|
+
type: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Queries a DuckDB table for the schema description.
|
|
12
|
+
* @param connection An active DuckDB connection.
|
|
13
|
+
* @param tableName A name of DuckDB table to query.
|
|
14
|
+
* @returns An array of column names and DuckDB types.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getDuckDBColumnTypes(connection: AsyncDuckDBConnection, tableName: string): Promise<DuckDBColumnDesc[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Generates a mapping of column names to their corresponding DuckDB data types.
|
|
19
|
+
* @param columns An array of column descriptions from DuckDB. Check getDuckDBColumnTypes.
|
|
20
|
+
* @returns A record where keys are column names and values are their data types.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getDuckDBColumnTypesMap(columns: DuckDBColumnDesc[]): Record<string, string>;
|
|
23
|
+
/**
|
|
24
|
+
* Constructs an SQL query to select all columns from a given table,
|
|
25
|
+
* converting specified columns to Well-Known Binary (WKB) format using ST_AsWKB.
|
|
26
|
+
* @param tableName The name of the table from which to select data.
|
|
27
|
+
* @param columnsToConvertToWKB An array of column names that should be converted to WKB format.
|
|
28
|
+
* @returns The constructed SQL query.
|
|
29
|
+
*/
|
|
30
|
+
export declare function constructST_asWKBQuery(tableName: string, columnsToConvertToWKB: string[]): string;
|
|
31
|
+
/**
|
|
32
|
+
* Finds the names of columns that have a GEOMETRY type.
|
|
33
|
+
* @param columns An array of column descriptors from a DuckDB table.
|
|
34
|
+
* @returns An array of column names that are of type GEOMETRY.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getGeometryColumns(columns: DuckDBColumnDesc[]): string[];
|
|
37
|
+
/**
|
|
38
|
+
* Sets the GeoArrow WKB extension metadata for columns of type GEOMETRY in an Arrow table.
|
|
39
|
+
* @param table The Apache Arrow table whose schema fields will be modified.
|
|
40
|
+
* @param columns An array of column descriptors from a DuckDB table.
|
|
41
|
+
*/
|
|
42
|
+
export declare function setGeoArrowWKBExtension(table: arrow.Table, columns: DuckDBColumnDesc[]): void;
|
|
43
|
+
/**
|
|
44
|
+
* Creates an arrow table from an array of arrow vectors and fields.
|
|
45
|
+
* @param columns An array of arrow vectors.
|
|
46
|
+
* @param fields An array of fields per arrow vector.
|
|
47
|
+
* @param arrowSchema Optional arrow table schema when available.
|
|
48
|
+
* @returns An arrow table.
|
|
49
|
+
*/
|
|
50
|
+
export declare const restoreArrowTable: (columns: arrow.Vector[], fields: ProtoDatasetField[], arrowSchema?: arrow.Schema) => arrow.Table<any>;
|
|
51
|
+
/**
|
|
52
|
+
* DuckDb throws when geoarrow extensions are present in metadata.
|
|
53
|
+
* @param table An arrow table to clear from extensions.
|
|
54
|
+
* @returns A map of removed per field geoarrow extensions.
|
|
55
|
+
*/
|
|
56
|
+
export declare const removeUnsupportedExtensions: (table: arrow.Table) => Record<string, string>;
|
|
57
|
+
/**
|
|
58
|
+
* Restore removed metadata extensions after a call to removeUnsupportedExtensions.
|
|
59
|
+
* @param table An arrow table to restore geoarrow extensions.
|
|
60
|
+
* @param removedExtensions A map of per field geoarrow extensions to restore.
|
|
61
|
+
*/
|
|
62
|
+
export declare const restoreUnsupportedExtensions: (table: arrow.Table, removedExtensions: Record<string, string>) => void;
|
|
2
63
|
/** Checks whether the given Apache Arrow JS type is a Point data type */
|
|
3
64
|
export declare function isGeoArrowPoint(type: DataType): boolean;
|
|
4
65
|
/** Checks whether the given Apache Arrow JS type is a Point data type */
|
|
@@ -11,3 +72,48 @@ export declare function isGeoArrowMultiPoint(type: DataType): boolean;
|
|
|
11
72
|
export declare function isGeoArrowMultiLineString(type: DataType): boolean;
|
|
12
73
|
/** Checks whether the given Apache Arrow JS type is a Polygon data type */
|
|
13
74
|
export declare function isGeoArrowMultiPolygon(type: DataType): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Checks if the given SQL query is a SELECT query by using the EXPLAIN command.
|
|
77
|
+
* @param connection The DuckDB connection instance.
|
|
78
|
+
* @param query The SQL query to check.
|
|
79
|
+
* @returns Resolves to `true` if the query is a SELECT statement, otherwise `false`.
|
|
80
|
+
*/
|
|
81
|
+
export declare function checkIsSelectQuery(connection: AsyncDuckDBConnection, query: string): Promise<boolean>;
|
|
82
|
+
/**
|
|
83
|
+
* Split a string with potentially multiple SQL queries (separated as usual by ';') into an array of queries.
|
|
84
|
+
* This implementation:
|
|
85
|
+
* - Handles single and double quoted strings with proper escaping
|
|
86
|
+
* - Ignores semicolons in line comments (--) and block comments (slash asterisk)
|
|
87
|
+
* - Trims whitespace from queries
|
|
88
|
+
* - Handles SQL-style escaped quotes ('' inside strings)
|
|
89
|
+
* - Returns only non-empty queries
|
|
90
|
+
* @param input A string with potentially multiple SQL queries.
|
|
91
|
+
* @returns An array of queries.
|
|
92
|
+
*/
|
|
93
|
+
export declare function splitSqlStatements(input: string): string[];
|
|
94
|
+
/**
|
|
95
|
+
* Removes SQL comments from a given SQL string.
|
|
96
|
+
* @param sql The SQL query string from which comments should be removed.
|
|
97
|
+
* @returns The cleaned SQL string without comments.
|
|
98
|
+
*/
|
|
99
|
+
export declare function removeSQLComments(sql: string): string;
|
|
100
|
+
/**
|
|
101
|
+
* Drops a table if it exists in the DuckDB database.
|
|
102
|
+
* @param connection The DuckDB connection instance.
|
|
103
|
+
* @param tableName The name of the table to drop.
|
|
104
|
+
* @returns A promise that resolves when the operation is complete.
|
|
105
|
+
* @throws Logs an error if the table drop operation fails.
|
|
106
|
+
*/
|
|
107
|
+
export declare const dropTableIfExists: (connection: AsyncDuckDBConnection, tableName: string) => Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Imports a file into DuckDB as a table, supporting multiple formats from SUPPORTED_DUCKDB_DROP_EXTENSIONS.
|
|
110
|
+
* @param file The file to be imported.
|
|
111
|
+
* @returns A promise that resolves when the file has been processed into a DuckDB table.
|
|
112
|
+
*/
|
|
113
|
+
export declare function tableFromFile(file: File | null): Promise<null | Error>;
|
|
114
|
+
/**
|
|
115
|
+
* Sanitizes a file name to be a valid DuckDB table name.
|
|
116
|
+
* @param fileName The input file name to be sanitized.
|
|
117
|
+
* @returns A valid DuckDB table name.
|
|
118
|
+
*/
|
|
119
|
+
export declare function sanitizeDuckDBTableName(fileName: string): string;
|