@uwdata/mosaic-core 0.6.1 → 0.7.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/LICENSE CHANGED
@@ -26,3 +26,22 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
26
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
27
  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
28
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+
30
+ ---
31
+
32
+ Portions of this software are derived from Observable Plot, which is released
33
+ under the ISC license.
34
+
35
+ Copyright 2020-2023 Observable, Inc.
36
+
37
+ Permission to use, copy, modify, and/or distribute this software for any purpose
38
+ with or without fee is hereby granted, provided that the above copyright notice
39
+ and this permission notice appear in all copies.
40
+
41
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
42
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
43
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
44
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
45
+ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
46
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
47
+ THIS SOFTWARE.
@@ -12353,6 +12353,15 @@ var Query = class _Query {
12353
12353
  static except(...queries) {
12354
12354
  return new SetOperation("EXCEPT", queries.flat());
12355
12355
  }
12356
+ static describe(query) {
12357
+ const q2 = query.clone();
12358
+ const { clone, toString } = q2;
12359
+ return Object.assign(q2, {
12360
+ describe: true,
12361
+ clone: () => _Query.describe(clone.call(q2)),
12362
+ toString: () => `DESCRIBE ${toString.call(q2)}`
12363
+ });
12364
+ }
12356
12365
  constructor() {
12357
12366
  this.query = {
12358
12367
  with: [],
@@ -12587,6 +12596,7 @@ var Query = class _Query {
12587
12596
  }
12588
12597
  toString() {
12589
12598
  const {
12599
+ with: cte,
12590
12600
  select,
12591
12601
  distinct: distinct2,
12592
12602
  from,
@@ -12598,8 +12608,7 @@ var Query = class _Query {
12598
12608
  qualify,
12599
12609
  orderby,
12600
12610
  limit,
12601
- offset,
12602
- with: cte
12611
+ offset
12603
12612
  } = this.query;
12604
12613
  const sql2 = [];
12605
12614
  if (cte.length) {
@@ -12721,6 +12730,9 @@ var SetOperation = class _SetOperation {
12721
12730
  function isQuery(value) {
12722
12731
  return value instanceof Query || value instanceof SetOperation;
12723
12732
  }
12733
+ function isDescribeQuery(value) {
12734
+ return isQuery(value) && value.describe;
12735
+ }
12724
12736
  function unquote(s) {
12725
12737
  return isDoubleQuoted(s) ? s.slice(1, -1) : s;
12726
12738
  }
@@ -12820,131 +12832,6 @@ function create(name, query, {
12820
12832
  return "CREATE" + (replace ? " OR REPLACE " : " ") + (temp ? "TEMP " : "") + (view ? "VIEW" : "TABLE") + (replace ? " " : " IF NOT EXISTS ") + name + " AS " + query;
12821
12833
  }
12822
12834
 
12823
- // src/util/js-type.js
12824
- function jsType(type) {
12825
- switch (type) {
12826
- case "BIGINT":
12827
- case "HUGEINT":
12828
- case "INTEGER":
12829
- case "SMALLINT":
12830
- case "TINYINT":
12831
- case "UBIGINT":
12832
- case "UINTEGER":
12833
- case "USMALLINT":
12834
- case "UTINYINT":
12835
- case "DOUBLE":
12836
- case "FLOAT":
12837
- case "REAL":
12838
- case "DECIMAL":
12839
- return "number";
12840
- case "DATE":
12841
- case "TIMESTAMP":
12842
- case "TIMESTAMPTZ":
12843
- case "TIMESTAMP WITH TIME ZONE":
12844
- case "TIME":
12845
- case "TIMESTAMP_NS":
12846
- return "date";
12847
- case "BOOLEAN":
12848
- return "boolean";
12849
- case "VARCHAR":
12850
- case "UUID":
12851
- return "string";
12852
- case "LIST":
12853
- return "array";
12854
- case "BLOB":
12855
- case "STRUCT":
12856
- case "MAP":
12857
- return "object";
12858
- default:
12859
- throw new Error(`Unsupported type: ${type}`);
12860
- }
12861
- }
12862
-
12863
- // src/util/summarize.js
12864
- var Count = "count";
12865
- var Nulls = "nulls";
12866
- var Max = "max";
12867
- var Min = "min";
12868
- var Distinct = "distinct";
12869
- var statMap = {
12870
- [Count]: count,
12871
- [Distinct]: (column2) => count(column2).distinct(),
12872
- [Max]: max,
12873
- [Min]: min,
12874
- [Nulls]: (column2) => count().where(isNull(column2))
12875
- };
12876
- function summarize({ table, column: column2 }, stats) {
12877
- return Query.from(table).select(stats.map((s) => [s, statMap[s](column2)]));
12878
- }
12879
-
12880
- // src/Catalog.js
12881
- var object = () => /* @__PURE__ */ Object.create(null);
12882
- var Catalog = class {
12883
- constructor(coordinator2) {
12884
- this.mc = coordinator2;
12885
- this.clear();
12886
- }
12887
- clear() {
12888
- this.tables = object();
12889
- }
12890
- tableInfo(table) {
12891
- const cache = this.tables;
12892
- if (cache[table]) {
12893
- return cache[table];
12894
- }
12895
- const infoPromise = getTableInfo(this.mc, table).catch((err) => {
12896
- cache[table] = null;
12897
- throw err;
12898
- });
12899
- return cache[table] = infoPromise;
12900
- }
12901
- async fieldInfo({ table, column: column2, stats }) {
12902
- const tableInfo = await this.tableInfo(table);
12903
- const colInfo = tableInfo[column2];
12904
- if (colInfo == null)
12905
- return;
12906
- if (!stats?.length)
12907
- return colInfo;
12908
- const result = await this.mc.query(
12909
- summarize(colInfo, stats),
12910
- { persist: true }
12911
- );
12912
- const info = { ...colInfo, ...Array.from(result)[0] };
12913
- for (const key in info) {
12914
- const value = info[key];
12915
- if (typeof value === "bigint") {
12916
- info[key] = Number(value);
12917
- }
12918
- }
12919
- return info;
12920
- }
12921
- async queryFields(fields) {
12922
- const list = await resolveFields(this, fields);
12923
- const data = await Promise.all(list.map((f2) => this.fieldInfo(f2)));
12924
- return data.filter((x3) => x3);
12925
- }
12926
- };
12927
- async function getTableInfo(mc, table) {
12928
- const result = await mc.query(
12929
- `DESCRIBE ${asRelation(table)}`,
12930
- { type: "json", cache: false }
12931
- );
12932
- const columns = object();
12933
- for (const entry of result) {
12934
- columns[entry.column_name] = {
12935
- table,
12936
- column: entry.column_name,
12937
- sqlType: entry.column_type,
12938
- type: jsType(entry.column_type),
12939
- nullable: entry.null === "YES"
12940
- };
12941
- }
12942
- return columns;
12943
- }
12944
- async function resolveFields(catalog, list) {
12945
- return list.length === 1 && list[0].column === "*" ? Object.values(await catalog.tableInfo(list[0].table)) : list;
12946
- }
12947
-
12948
12835
  // src/util/hash.js
12949
12836
  function fnv_hash(v2) {
12950
12837
  let a2 = 2166136261;
@@ -13304,7 +13191,7 @@ function consolidate(group, enqueue, record) {
13304
13191
  type: "arrow",
13305
13192
  cache: false,
13306
13193
  record: false,
13307
- query: consolidatedQuery(group, record)
13194
+ query: group.query = consolidatedQuery(group, record)
13308
13195
  },
13309
13196
  result: group.result = queryResult()
13310
13197
  });
@@ -13352,7 +13239,7 @@ function consolidatedQuery(group, record) {
13352
13239
  return query.$select(Array.from(fields.values()));
13353
13240
  }
13354
13241
  async function processResults(group, cache) {
13355
- const { maps, result } = group;
13242
+ const { maps, query, result } = group;
13356
13243
  if (!maps)
13357
13244
  return;
13358
13245
  let data;
@@ -13364,25 +13251,33 @@ async function processResults(group, cache) {
13364
13251
  }
13365
13252
  return;
13366
13253
  }
13254
+ const describe = isDescribeQuery(query);
13367
13255
  group.forEach(({ entry }, index) => {
13368
13256
  const { request, result: result2 } = entry;
13369
- const projected = projectResult(data, maps[index]);
13257
+ const map = maps[index];
13258
+ const extract = describe && map ? filterResult(data, map) : map ? projectResult(data, map) : data;
13370
13259
  if (request.cache) {
13371
- cache.set(String(request.query), projected);
13260
+ cache.set(String(request.query), extract);
13372
13261
  }
13373
- result2.fulfill(projected);
13262
+ result2.fulfill(extract);
13374
13263
  });
13375
13264
  }
13376
13265
  function projectResult(data, map) {
13377
- if (map) {
13378
- const cols = {};
13379
- for (const [name, as] of map) {
13380
- cols[as] = data.getChild(name);
13266
+ const cols = {};
13267
+ for (const [name, as] of map) {
13268
+ cols[as] = data.getChild(name);
13269
+ }
13270
+ return new data.constructor(cols);
13271
+ }
13272
+ function filterResult(data, map) {
13273
+ const lookup = new Map(map);
13274
+ const result = [];
13275
+ for (const d of data) {
13276
+ if (lookup.has(d.column_name)) {
13277
+ result.push({ ...d, column_name: lookup.get(d.column_name) });
13381
13278
  }
13382
- return new data.constructor(cols);
13383
- } else {
13384
- return data;
13385
13279
  }
13280
+ return result;
13386
13281
  }
13387
13282
 
13388
13283
  // src/util/cache.js
@@ -13629,6 +13524,197 @@ function QueryManager() {
13629
13524
  };
13630
13525
  }
13631
13526
 
13527
+ // src/util/js-type.js
13528
+ function jsType(type) {
13529
+ switch (type) {
13530
+ case "BIGINT":
13531
+ case "HUGEINT":
13532
+ case "INTEGER":
13533
+ case "SMALLINT":
13534
+ case "TINYINT":
13535
+ case "UBIGINT":
13536
+ case "UINTEGER":
13537
+ case "USMALLINT":
13538
+ case "UTINYINT":
13539
+ case "DOUBLE":
13540
+ case "FLOAT":
13541
+ case "REAL":
13542
+ return "number";
13543
+ case "DATE":
13544
+ case "TIMESTAMP":
13545
+ case "TIMESTAMPTZ":
13546
+ case "TIMESTAMP WITH TIME ZONE":
13547
+ case "TIME":
13548
+ case "TIMESTAMP_NS":
13549
+ return "date";
13550
+ case "BOOLEAN":
13551
+ return "boolean";
13552
+ case "VARCHAR":
13553
+ case "UUID":
13554
+ return "string";
13555
+ case "ARRAY":
13556
+ case "LIST":
13557
+ return "array";
13558
+ case "BLOB":
13559
+ case "STRUCT":
13560
+ case "MAP":
13561
+ case "GEOMETRY":
13562
+ return "object";
13563
+ default:
13564
+ if (type.startsWith("DECIMAL")) {
13565
+ return "number";
13566
+ } else if (type.startsWith("STRUCT") || type.startsWith("MAP")) {
13567
+ return "object";
13568
+ } else if (type.endsWith("]")) {
13569
+ return "array";
13570
+ }
13571
+ throw new Error(`Unsupported type: ${type}`);
13572
+ }
13573
+ }
13574
+
13575
+ // src/util/convert-arrow.js
13576
+ var INTEGER = 2;
13577
+ var FLOAT = 3;
13578
+ var DECIMAL = 7;
13579
+ var TIMESTAMP = 10;
13580
+ function isArrowTable(values) {
13581
+ return typeof values?.getChild === "function";
13582
+ }
13583
+ function convertArrowArrayType(type) {
13584
+ switch (type.typeId) {
13585
+ case INTEGER:
13586
+ case FLOAT:
13587
+ case DECIMAL:
13588
+ return Float64Array;
13589
+ default:
13590
+ return Array;
13591
+ }
13592
+ }
13593
+ function convertArrowValue(type) {
13594
+ const { typeId } = type;
13595
+ if (typeId === TIMESTAMP) {
13596
+ return (v2) => v2 == null ? v2 : new Date(v2);
13597
+ }
13598
+ if (typeId === INTEGER && type.bitWidth >= 64) {
13599
+ return (v2) => v2 == null ? v2 : Number(v2);
13600
+ }
13601
+ if (typeId === DECIMAL) {
13602
+ const scale = 1 / Math.pow(10, type.scale);
13603
+ return (v2) => v2 == null ? v2 : decimalToNumber(v2, scale);
13604
+ }
13605
+ return (v2) => v2;
13606
+ }
13607
+ function convertArrowColumn(column2) {
13608
+ const { type } = column2;
13609
+ const { typeId } = type;
13610
+ if (typeId === TIMESTAMP) {
13611
+ const size = column2.length;
13612
+ const array = new Array(size);
13613
+ for (let row = 0; row < size; ++row) {
13614
+ const v2 = column2.get(row);
13615
+ array[row] = v2 == null ? null : new Date(v2);
13616
+ }
13617
+ return array;
13618
+ }
13619
+ if (typeId === INTEGER && type.bitWidth >= 64) {
13620
+ const size = column2.length;
13621
+ const array = new Float64Array(size);
13622
+ for (let row = 0; row < size; ++row) {
13623
+ const v2 = column2.get(row);
13624
+ array[row] = v2 == null ? NaN : Number(v2);
13625
+ }
13626
+ return array;
13627
+ }
13628
+ if (typeId === DECIMAL) {
13629
+ const scale = 1 / Math.pow(10, type.scale);
13630
+ const size = column2.length;
13631
+ const array = new Float64Array(size);
13632
+ for (let row = 0; row < size; ++row) {
13633
+ const v2 = column2.get(row);
13634
+ array[row] = v2 == null ? NaN : decimalToNumber(v2, scale);
13635
+ }
13636
+ return array;
13637
+ }
13638
+ return column2.toArray();
13639
+ }
13640
+ var BASE32 = Array.from(
13641
+ { length: 8 },
13642
+ (_2, i) => Math.pow(2, i * 32)
13643
+ );
13644
+ function decimalToNumber(v2, scale) {
13645
+ const n = v2.length;
13646
+ let x3 = 0;
13647
+ if (v2.signed && (v2[n - 1] | 0) < 0) {
13648
+ for (let i = 0; i < n; ++i) {
13649
+ x3 += ~v2[i] * BASE32[i];
13650
+ }
13651
+ x3 = -(x3 + 1);
13652
+ } else {
13653
+ for (let i = 0; i < n; ++i) {
13654
+ x3 += v2[i] * BASE32[i];
13655
+ }
13656
+ }
13657
+ return x3 * scale;
13658
+ }
13659
+
13660
+ // src/util/field-info.js
13661
+ var Count = "count";
13662
+ var Nulls = "nulls";
13663
+ var Max = "max";
13664
+ var Min = "min";
13665
+ var Distinct = "distinct";
13666
+ var statMap = {
13667
+ [Count]: count,
13668
+ [Distinct]: (column2) => count(column2).distinct(),
13669
+ [Max]: max,
13670
+ [Min]: min,
13671
+ [Nulls]: (column2) => count().where(isNull(column2))
13672
+ };
13673
+ function summarize(table, column2, stats) {
13674
+ return Query.from(table).select(Array.from(stats, (s) => [s, statMap[s](column2)]));
13675
+ }
13676
+ async function queryFieldInfo(mc, fields) {
13677
+ if (fields.length === 1 && `${fields[0].column}` === "*") {
13678
+ return getTableInfo(mc, fields[0].table);
13679
+ } else {
13680
+ return (await Promise.all(fields.map((f2) => getFieldInfo(mc, f2)))).filter((x3) => x3);
13681
+ }
13682
+ }
13683
+ async function getFieldInfo(mc, { table, column: column2, stats }) {
13684
+ const q2 = Query.from({ source: table }).select({ column: column2 }).groupby(column2.aggregate ? sql`ALL` : []);
13685
+ const [desc2] = Array.from(await mc.query(Query.describe(q2)));
13686
+ const info = {
13687
+ table,
13688
+ column: `${column2}`,
13689
+ sqlType: desc2.column_type,
13690
+ type: jsType(desc2.column_type),
13691
+ nullable: desc2.null === "YES"
13692
+ };
13693
+ if (!(stats?.length || stats?.size))
13694
+ return info;
13695
+ const result = await mc.query(
13696
+ summarize(table, column2, stats),
13697
+ { persist: true }
13698
+ );
13699
+ for (let i = 0; i < result.numCols; ++i) {
13700
+ const { name } = result.schema.fields[i];
13701
+ const child = result.getChildAt(i);
13702
+ const convert = convertArrowValue(child.type);
13703
+ info[name] = convert(child.get(0));
13704
+ }
13705
+ return info;
13706
+ }
13707
+ async function getTableInfo(mc, table) {
13708
+ const result = await mc.query(`DESCRIBE ${asRelation(table)}`);
13709
+ return Array.from(result).map((desc2) => ({
13710
+ table,
13711
+ column: desc2.column_name,
13712
+ sqlType: desc2.column_type,
13713
+ type: jsType(desc2.column_type),
13714
+ nullable: desc2.null === "YES"
13715
+ }));
13716
+ }
13717
+
13632
13718
  // src/util/void-logger.js
13633
13719
  function voidLogger() {
13634
13720
  return {
@@ -13661,7 +13747,6 @@ var Coordinator = class {
13661
13747
  logger = console,
13662
13748
  manager = QueryManager()
13663
13749
  } = options;
13664
- this.catalog = new Catalog(this);
13665
13750
  this.manager = manager;
13666
13751
  this.logger(logger);
13667
13752
  this.configure(options);
@@ -13680,7 +13765,7 @@ var Coordinator = class {
13680
13765
  this.manager.consolidate(consolidate2);
13681
13766
  this.indexes = indexes;
13682
13767
  }
13683
- clear({ clients = true, cache = true, catalog = false } = {}) {
13768
+ clear({ clients = true, cache = true } = {}) {
13684
13769
  this.manager.clear();
13685
13770
  if (clients) {
13686
13771
  this.clients?.forEach((client) => this.disconnect(client));
@@ -13690,8 +13775,6 @@ var Coordinator = class {
13690
13775
  }
13691
13776
  if (cache)
13692
13777
  this.manager.cache().clear();
13693
- if (catalog)
13694
- this.catalog.clear();
13695
13778
  }
13696
13779
  databaseConnector(db) {
13697
13780
  return this.manager.connector(db);
@@ -13744,7 +13827,7 @@ var Coordinator = class {
13744
13827
  * @param {import('./MosaicClient.js').MosaicClient} client the client to disconnect
13745
13828
  */
13746
13829
  async connect(client) {
13747
- const { catalog, clients, filterGroups, indexes } = this;
13830
+ const { clients, filterGroups, indexes } = this;
13748
13831
  if (clients.has(client)) {
13749
13832
  throw new Error("Client already connected.");
13750
13833
  }
@@ -13752,7 +13835,7 @@ var Coordinator = class {
13752
13835
  client.coordinator = this;
13753
13836
  const fields = client.fields();
13754
13837
  if (fields?.length) {
13755
- client.fieldInfo(await catalog.queryFields(fields));
13838
+ client.fieldInfo(await queryFieldInfo(this, fields));
13756
13839
  }
13757
13840
  const filter = client.filterBy;
13758
13841
  if (filter) {
@@ -25598,7 +25681,7 @@ var C = () => (async (s) => {
25598
25681
  return false;
25599
25682
  }
25600
25683
  })(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 5, 4, 1, 3, 1, 1, 10, 11, 1, 9, 0, 65, 0, 254, 16, 2, 0, 26, 11]));
25601
- var _ = { name: "@duckdb/duckdb-wasm", version: "1.28.1-dev106.0", description: "DuckDB powered by WebAssembly", license: "MIT", repository: { type: "git", url: "https://github.com/duckdb/duckdb-wasm.git" }, keywords: ["sql", "duckdb", "relational", "database", "data", "query", "wasm", "analytics", "olap", "arrow", "parquet", "json", "csv"], dependencies: { "apache-arrow": "^14.0.1" }, devDependencies: { "@types/emscripten": "^1.39.10", "@types/jasmine": "^5.1.4", "@typescript-eslint/eslint-plugin": "^6.18.0", "@typescript-eslint/parser": "^6.18.0", esbuild: "^0.20.0", eslint: "^8.56.0", "eslint-plugin-jasmine": "^4.1.3", "eslint-plugin-react": "^7.33.2", "fast-glob": "^3.3.2", jasmine: "^5.1.0", "jasmine-core": "^5.1.1", "jasmine-spec-reporter": "^7.0.0", "js-sha256": "^0.11.0", karma: "^6.4.2", "karma-chrome-launcher": "^3.2.0", "karma-coverage": "^2.2.1", "karma-firefox-launcher": "^2.1.2", "karma-jasmine": "^5.1.0", "karma-jasmine-html-reporter": "^2.1.0", "karma-sourcemap-loader": "^0.4.0", "karma-spec-reporter": "^0.0.36", "make-dir": "^4.0.0", nyc: "^15.1.0", prettier: "^3.2.4", puppeteer: "^21.7.0", rimraf: "^5.0.5", s3rver: "^3.7.1", typedoc: "^0.25.7", typescript: "^5.3.3", "wasm-feature-detect": "^1.6.1", "web-worker": "^1.2.0" }, scripts: { "build:debug": "node bundle.mjs debug && tsc --emitDeclarationOnly", "build:release": "node bundle.mjs release && tsc --emitDeclarationOnly", docs: "typedoc", report: "node ./coverage.mjs", "test:node": "node --enable-source-maps ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs", "test:node:debug": "node --inspect-brk --enable-source-maps ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs", "test:node:coverage": "nyc -r json --report-dir ./coverage/node node ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs", "test:firefox": "karma start ./karma/tests-firefox.cjs", "test:chrome": "karma start ./karma/tests-chrome.cjs", "test:chrome:eh": "karma start ./karma/tests-chrome-eh.cjs", "test:chrome:coverage": "karma start ./karma/tests-chrome-coverage.cjs", "test:browser": "karma start ./karma/tests-all.cjs", "test:browser:debug": "karma start ./karma/tests-debug.cjs", test: "npm run test:chrome && npm run test:node", "test:coverage": "npm run test:chrome:coverage && npm run test:node:coverage && npm run report", lint: "eslint src test" }, files: ["dist", "!dist/types/test"], main: "dist/duckdb-browser.cjs", module: "dist/duckdb-browser.mjs", types: "dist/duckdb-browser.d.ts", jsdelivr: "dist/duckdb-browser.cjs", unpkg: "dist/duckdb-browser.mjs", sideEffects: false, browser: { fs: false, path: false, perf_hooks: false, os: false, worker_threads: false }, exports: { "./dist/duckdb-mvp.wasm": "./dist/duckdb-mvp.wasm", "./dist/duckdb-eh.wasm": "./dist/duckdb-eh.wasm", "./dist/duckdb-coi.wasm": "./dist/duckdb-coi.wasm", "./dist/duckdb-browser": "./dist/duckdb-browser.mjs", "./dist/duckdb-browser.cjs": "./dist/duckdb-browser.cjs", "./dist/duckdb-browser.mjs": "./dist/duckdb-browser.mjs", "./dist/duckdb-browser-blocking": "./dist/duckdb-browser-blocking.mjs", "./dist/duckdb-browser-blocking.mjs": "./dist/duckdb-browser-blocking.mjs", "./dist/duckdb-browser-blocking.cjs": "./dist/duckdb-browser-blocking.cjs", "./dist/duckdb-browser-coi.pthread.worker.js": "./dist/duckdb-browser-coi.pthread.worker.js", "./dist/duckdb-browser-coi.worker.js": "./dist/duckdb-browser-coi.worker.js", "./dist/duckdb-browser-eh.worker.js": "./dist/duckdb-browser-eh.worker.js", "./dist/duckdb-browser-mvp.worker.js": "./dist/duckdb-browser-mvp.worker.js", "./dist/duckdb-node": "./dist/duckdb-node.cjs", "./dist/duckdb-node.cjs": "./dist/duckdb-node.cjs", "./dist/duckdb-node-blocking": "./dist/duckdb-node-blocking.cjs", "./dist/duckdb-node-blocking.cjs": "./dist/duckdb-node-blocking.cjs", "./dist/duckdb-node-eh.worker.cjs": "./dist/duckdb-node-eh.worker.cjs", "./dist/duckdb-node-mvp.worker.cjs": "./dist/duckdb-node-mvp.worker.cjs", "./blocking": { browser: { types: "./dist/duckdb-browser-blocking.d.ts", import: "./dist/duckdb-browser-blocking.mjs", require: "./dist/duckdb-browser-blocking.cjs" }, node: { types: "./dist/duckdb-node-blocking.d.ts", require: "./dist/duckdb-node-blocking.cjs", import: "./dist/duckdb-node-blocking.cjs" }, types: "./dist/duckdb-browser-blocking.d.ts", import: "./dist/duckdb-browser-blocking.mjs", require: "./dist/duckdb-browser-blocking.cjs" }, ".": { browser: { types: "./dist/duckdb-browser.d.ts", import: "./dist/duckdb-browser.mjs", require: "./dist/duckdb-browser.cjs" }, node: { types: "./dist/duckdb-node.d.ts", import: "./dist/duckdb-node.cjs", require: "./dist/duckdb-node.cjs" }, types: "./dist/duckdb-browser.d.ts", import: "./dist/duckdb-browser.mjs", require: "./dist/duckdb-browser.cjs" } } };
25684
+ var _ = { name: "@duckdb/duckdb-wasm", version: "1.28.1-dev99.0", description: "DuckDB powered by WebAssembly", license: "MIT", repository: { type: "git", url: "https://github.com/duckdb/duckdb-wasm.git" }, keywords: ["sql", "duckdb", "relational", "database", "data", "query", "wasm", "analytics", "olap", "arrow", "parquet", "json", "csv"], dependencies: { "apache-arrow": "^14.0.1" }, devDependencies: { "@types/emscripten": "^1.39.10", "@types/jasmine": "^5.1.4", "@typescript-eslint/eslint-plugin": "^6.18.0", "@typescript-eslint/parser": "^6.18.0", esbuild: "^0.19.10", eslint: "^8.56.0", "eslint-plugin-jasmine": "^4.1.3", "eslint-plugin-react": "^7.33.2", "fast-glob": "^3.3.2", jasmine: "^5.1.0", "jasmine-core": "^5.1.1", "jasmine-spec-reporter": "^7.0.0", "js-sha256": "^0.10.1", karma: "^6.4.2", "karma-chrome-launcher": "^3.2.0", "karma-coverage": "^2.2.1", "karma-firefox-launcher": "^2.1.2", "karma-jasmine": "^5.1.0", "karma-jasmine-html-reporter": "^2.1.0", "karma-sourcemap-loader": "^0.4.0", "karma-spec-reporter": "^0.0.36", "make-dir": "^4.0.0", nyc: "^15.1.0", prettier: "^3.2.2", puppeteer: "^21.7.0", rimraf: "^5.0.5", s3rver: "^3.7.1", typedoc: "^0.25.7", typescript: "^5.3.3", "wasm-feature-detect": "^1.6.1", "web-worker": "^1.2.0" }, scripts: { "build:debug": "node bundle.mjs debug && tsc --emitDeclarationOnly", "build:release": "node bundle.mjs release && tsc --emitDeclarationOnly", docs: "typedoc", report: "node ./coverage.mjs", "test:node": "node --enable-source-maps ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs", "test:node:debug": "node --inspect-brk --enable-source-maps ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs", "test:node:coverage": "nyc -r json --report-dir ./coverage/node node ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs", "test:firefox": "karma start ./karma/tests-firefox.cjs", "test:chrome": "karma start ./karma/tests-chrome.cjs", "test:chrome:eh": "karma start ./karma/tests-chrome-eh.cjs", "test:chrome:coverage": "karma start ./karma/tests-chrome-coverage.cjs", "test:browser": "karma start ./karma/tests-all.cjs", "test:browser:debug": "karma start ./karma/tests-debug.cjs", test: "npm run test:chrome && npm run test:node", "test:coverage": "npm run test:chrome:coverage && npm run test:node:coverage && npm run report", lint: "eslint src test" }, files: ["dist", "!dist/types/test"], main: "dist/duckdb-browser.cjs", module: "dist/duckdb-browser.mjs", types: "dist/duckdb-browser.d.ts", jsdelivr: "dist/duckdb-browser.cjs", unpkg: "dist/duckdb-browser.mjs", sideEffects: false, browser: { fs: false, path: false, perf_hooks: false, os: false, worker_threads: false }, exports: { "./dist/duckdb-mvp.wasm": "./dist/duckdb-mvp.wasm", "./dist/duckdb-eh.wasm": "./dist/duckdb-eh.wasm", "./dist/duckdb-coi.wasm": "./dist/duckdb-coi.wasm", "./dist/duckdb-browser": "./dist/duckdb-browser.mjs", "./dist/duckdb-browser.cjs": "./dist/duckdb-browser.cjs", "./dist/duckdb-browser.mjs": "./dist/duckdb-browser.mjs", "./dist/duckdb-browser-blocking": "./dist/duckdb-browser-blocking.mjs", "./dist/duckdb-browser-blocking.mjs": "./dist/duckdb-browser-blocking.mjs", "./dist/duckdb-browser-blocking.cjs": "./dist/duckdb-browser-blocking.cjs", "./dist/duckdb-browser-coi.pthread.worker.js": "./dist/duckdb-browser-coi.pthread.worker.js", "./dist/duckdb-browser-coi.worker.js": "./dist/duckdb-browser-coi.worker.js", "./dist/duckdb-browser-eh.worker.js": "./dist/duckdb-browser-eh.worker.js", "./dist/duckdb-browser-mvp.worker.js": "./dist/duckdb-browser-mvp.worker.js", "./dist/duckdb-node": "./dist/duckdb-node.cjs", "./dist/duckdb-node.cjs": "./dist/duckdb-node.cjs", "./dist/duckdb-node-blocking": "./dist/duckdb-node-blocking.cjs", "./dist/duckdb-node-blocking.cjs": "./dist/duckdb-node-blocking.cjs", "./dist/duckdb-node-eh.worker.cjs": "./dist/duckdb-node-eh.worker.cjs", "./dist/duckdb-node-mvp.worker.cjs": "./dist/duckdb-node-mvp.worker.cjs", "./blocking": { browser: { types: "./dist/duckdb-browser-blocking.d.ts", import: "./dist/duckdb-browser-blocking.mjs", require: "./dist/duckdb-browser-blocking.cjs" }, node: { types: "./dist/duckdb-node-blocking.d.ts", require: "./dist/duckdb-node-blocking.cjs", import: "./dist/duckdb-node-blocking.cjs" }, types: "./dist/duckdb-browser-blocking.d.ts", import: "./dist/duckdb-browser-blocking.mjs", require: "./dist/duckdb-browser-blocking.cjs" }, ".": { browser: { types: "./dist/duckdb-browser.d.ts", import: "./dist/duckdb-browser.mjs", require: "./dist/duckdb-browser.cjs" }, node: { types: "./dist/duckdb-node.d.ts", import: "./dist/duckdb-node.cjs", require: "./dist/duckdb-node.cjs" }, types: "./dist/duckdb-browser.d.ts", import: "./dist/duckdb-browser.mjs", require: "./dist/duckdb-browser.cjs" } } };
25602
25685
  var W = _.name;
25603
25686
  var v = _.version;
25604
25687
  var I = _.version.split(".");
@@ -25741,8 +25824,12 @@ export {
25741
25824
  Param,
25742
25825
  Priority,
25743
25826
  Selection,
25827
+ convertArrowArrayType,
25828
+ convertArrowColumn,
25829
+ convertArrowValue,
25744
25830
  coordinator,
25745
25831
  distinct,
25832
+ isArrowTable,
25746
25833
  isParam,
25747
25834
  isSelection,
25748
25835
  restConnector,