@loaders.gl/parquet 4.0.4 → 4.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/index.cjs +138 -66
  2. package/dist/index.d.ts +1 -8
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -21
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/parsers/get-parquet-schema.d.ts.map +1 -1
  7. package/dist/lib/parsers/get-parquet-schema.js.map +1 -1
  8. package/dist/lib/parsers/parse-geoparquet.d.ts +6 -0
  9. package/dist/lib/parsers/parse-geoparquet.d.ts.map +1 -0
  10. package/dist/lib/parsers/parse-geoparquet.js +56 -0
  11. package/dist/lib/parsers/parse-geoparquet.js.map +1 -0
  12. package/dist/lib/parsers/parse-parquet-to-columns.d.ts +6 -0
  13. package/dist/lib/parsers/parse-parquet-to-columns.d.ts.map +1 -1
  14. package/dist/lib/parsers/parse-parquet-to-columns.js.map +1 -1
  15. package/dist/lib/parsers/parse-parquet.d.ts +17 -0
  16. package/dist/lib/parsers/parse-parquet.d.ts.map +1 -0
  17. package/dist/lib/parsers/{parse-parquet-to-rows.js → parse-parquet.js} +2 -8
  18. package/dist/lib/parsers/parse-parquet.js.map +1 -0
  19. package/dist/lib/wasm/encode-parquet-wasm.d.ts.map +1 -1
  20. package/dist/lib/wasm/encode-parquet-wasm.js.map +1 -1
  21. package/dist/lib/wasm/load-wasm-browser.d.ts.map +1 -1
  22. package/dist/lib/wasm/load-wasm-browser.js.map +1 -1
  23. package/dist/lib/wasm/load-wasm-node.d.ts.map +1 -1
  24. package/dist/lib/wasm/load-wasm-node.js.map +1 -1
  25. package/dist/lib/wasm/load-wasm.d.ts.map +1 -1
  26. package/dist/lib/wasm/load-wasm.js.map +1 -1
  27. package/dist/lib/wasm/parse-parquet-wasm.d.ts.map +1 -1
  28. package/dist/lib/wasm/parse-parquet-wasm.js.map +1 -1
  29. package/dist/parquet-loader.d.ts +14 -4
  30. package/dist/parquet-loader.d.ts.map +1 -1
  31. package/dist/parquet-loader.js +50 -4
  32. package/dist/parquet-loader.js.map +1 -1
  33. package/dist/parquet-wasm-loader.d.ts +4 -2
  34. package/dist/parquet-wasm-loader.d.ts.map +1 -1
  35. package/dist/parquet-wasm-loader.js +6 -1
  36. package/dist/parquet-wasm-loader.js.map +1 -1
  37. package/dist/workers/parquet-worker.js +1 -1
  38. package/dist/workers/parquet-worker.js.map +1 -1
  39. package/package.json +15 -12
  40. package/src/index.ts +7 -60
  41. package/src/lib/parsers/get-parquet-schema.ts +3 -0
  42. package/src/lib/parsers/parse-geoparquet.ts +87 -0
  43. package/src/lib/parsers/parse-parquet-to-columns.ts +6 -0
  44. package/src/lib/parsers/{parse-parquet-to-rows.ts → parse-parquet.ts} +20 -21
  45. package/src/lib/wasm/encode-parquet-wasm.ts +3 -0
  46. package/src/lib/wasm/load-wasm-browser.ts +3 -0
  47. package/src/lib/wasm/load-wasm-node.ts +3 -0
  48. package/src/lib/wasm/load-wasm.ts +3 -0
  49. package/src/lib/wasm/parse-parquet-wasm.ts +3 -0
  50. package/src/parquet-loader.ts +89 -9
  51. package/src/parquet-wasm-loader.ts +10 -2
  52. package/src/workers/parquet-worker.ts +1 -1
  53. package/dist/lib/parsers/parse-parquet-to-rows.d.ts +0 -6
  54. package/dist/lib/parsers/parse-parquet-to-rows.d.ts.map +0 -1
  55. package/dist/lib/parsers/parse-parquet-to-rows.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import type { Loader, LoaderOptions } from '@loaders.gl/loader-utils';
2
- import type { ObjectRowTable, ObjectRowTableBatch, ColumnarTable, ColumnarTableBatch } from '@loaders.gl/schema';
1
+ import type { Loader, LoaderWithParser, LoaderOptions } from '@loaders.gl/loader-utils';
2
+ import type { ObjectRowTable, ObjectRowTableBatch, GeoJSONTable, GeoJSONTableBatch, ColumnarTable, ColumnarTableBatch } from '@loaders.gl/schema';
3
3
  export { Buffer } from './polyfills/buffer/install-buffer-polyfill';
4
4
  /** Options for the parquet loader */
5
5
  export type ParquetLoaderOptions = LoaderOptions & {
@@ -17,7 +17,17 @@ export type ParquetLoaderOptions = LoaderOptions & {
17
17
  url?: string;
18
18
  };
19
19
  };
20
+ /**
21
+ * ParquetJS table loader
22
+ */
23
+ export declare const ParquetWorkerLoader: Loader<ObjectRowTable, ObjectRowTableBatch, ParquetLoaderOptions>;
20
24
  /** ParquetJS table loader */
21
- export declare const ParquetLoader: Loader<ObjectRowTable, ObjectRowTableBatch, ParquetLoaderOptions>;
22
- export declare const ParquetColumnarLoader: Loader<ColumnarTable, ColumnarTableBatch, ParquetLoaderOptions>;
25
+ export declare const ParquetLoader: LoaderWithParser<ObjectRowTable | GeoJSONTable, ObjectRowTableBatch | GeoJSONTableBatch, ParquetLoaderOptions>;
26
+ export declare const GeoParquetWorkerLoader: Loader<GeoJSONTable, GeoJSONTableBatch, ParquetLoaderOptions>;
27
+ /** ParquetJS table loader */
28
+ export declare const GeoParquetLoader: LoaderWithParser<ObjectRowTable | GeoJSONTable, ObjectRowTableBatch | GeoJSONTableBatch, ParquetLoaderOptions>;
29
+ /** @deprecated Test to see if we can improve perf of parquetjs loader */
30
+ export declare const ParquetColumnarWorkerLoader: Loader<ColumnarTable, ColumnarTableBatch, ParquetLoaderOptions>;
31
+ /** @deprecated Test to see if we can improve perf of parquetjs loader */
32
+ export declare const ParquetColumnarLoader: LoaderWithParser<ColumnarTable, ColumnarTableBatch, ParquetLoaderOptions>;
23
33
  //# sourceMappingURL=parquet-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parquet-loader.d.ts","sourceRoot":"","sources":["../src/parquet-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,MAAM,EAAC,MAAM,4CAA4C,CAAC;AAMlE,qCAAqC;AACrC,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,qCAAqC;IACrC,OAAO,CAAC,EAAE;QACR,qCAAqC;QACrC,KAAK,CAAC,EAAE,kBAAkB,GAAG,eAAe,CAAC;QAC7C,0FAA0F;QAC1F,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;QACnC,0DAA0D;QAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,qFAAqF;QACrF,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,gEAAgE;QAChE,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAEF,6BAA6B;AAC7B,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,CAoB3F,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,aAAa,EACb,kBAAkB,EAClB,oBAAoB,CAarB,CAAC"}
1
+ {"version":3,"file":"parquet-loader.d.ts","sourceRoot":"","sources":["../src/parquet-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EAAC,MAAM,EAAC,MAAM,4CAA4C,CAAC;AAMlE,qCAAqC;AACrC,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,qCAAqC;IACrC,OAAO,CAAC,EAAE;QACR,qCAAqC;QACrC,KAAK,CAAC,EAAE,kBAAkB,GAAG,eAAe,CAAC;QAC7C,0FAA0F;QAC1F,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;QACnC,0DAA0D;QAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,qFAAqF;QACrF,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,gEAAgE;QAChE,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,cAAc,EACd,mBAAmB,EACnB,oBAAoB,CAqBrB,CAAC;AAEF,6BAA6B;AAC7B,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAC1C,cAAc,GAAG,YAAY,EAC7B,mBAAmB,GAAG,iBAAiB,EACvC,oBAAoB,CAQrB,CAAC;AAMF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,CAqB9F,CAAC;AAEJ,6BAA6B;AAC7B,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,CAC7C,cAAc,GAAG,YAAY,EAC7B,mBAAmB,GAAG,iBAAiB,EACvC,oBAAoB,CAQrB,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,aAAa,EACb,kBAAkB,EAClB,oBAAoB,CAarB,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,CAClD,aAAa,EACb,kBAAkB,EAClB,oBAAoB,CAQrB,CAAC"}
@@ -1,6 +1,10 @@
1
+ import { BlobFile } from '@loaders.gl/loader-utils';
2
+ import { parseParquetFile, parseParquetFileInBatches } from "./lib/parsers/parse-parquet.js";
3
+ import { parseGeoParquetFile, parseGeoParquetFileInBatches } from "./lib/parsers/parse-geoparquet.js";
4
+ import { parseParquetFileInColumns, parseParquetFileInColumnarBatches } from "./lib/parsers/parse-parquet-to-columns.js";
1
5
  export { Buffer } from "./polyfills/buffer/install-buffer-polyfill.js";
2
6
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
3
- export const ParquetLoader = {
7
+ export const ParquetWorkerLoader = {
4
8
  name: 'Apache Parquet',
5
9
  id: 'parquet',
6
10
  module: 'parquet',
@@ -21,7 +25,43 @@ export const ParquetLoader = {
21
25
  }
22
26
  }
23
27
  };
24
- export const ParquetColumnarLoader = {
28
+ export const ParquetLoader = {
29
+ ...ParquetWorkerLoader,
30
+ parse: (arrayBuffer, options) => parseParquetFile(new BlobFile(arrayBuffer), options),
31
+ parseFile: parseParquetFile,
32
+ parseFileInBatches: parseParquetFileInBatches
33
+ };
34
+ ParquetLoader.Buffer = Buffer;
35
+ export const GeoParquetWorkerLoader = {
36
+ name: 'Apache Parquet',
37
+ id: 'parquet',
38
+ module: 'parquet',
39
+ version: VERSION,
40
+ worker: true,
41
+ category: 'table',
42
+ extensions: ['parquet'],
43
+ mimeTypes: ['application/octet-stream'],
44
+ binary: true,
45
+ tests: ['PAR1', 'PARE'],
46
+ options: {
47
+ parquet: {
48
+ shape: 'geojson-table',
49
+ columnList: [],
50
+ geoparquet: true,
51
+ url: undefined,
52
+ preserveBinary: false
53
+ }
54
+ }
55
+ };
56
+ export const GeoParquetLoader = {
57
+ ...GeoParquetWorkerLoader,
58
+ parse(arrayBuffer, options) {
59
+ return parseGeoParquetFile(new BlobFile(arrayBuffer), options);
60
+ },
61
+ parseFile: parseGeoParquetFile,
62
+ parseFileInBatches: parseGeoParquetFileInBatches
63
+ };
64
+ export const ParquetColumnarWorkerLoader = {
25
65
  name: 'Apache Parquet',
26
66
  id: 'parquet',
27
67
  module: 'parquet',
@@ -34,6 +74,12 @@ export const ParquetColumnarLoader = {
34
74
  tests: ['PAR1', 'PARE'],
35
75
  options: ParquetLoader.options
36
76
  };
37
- ParquetLoader.Buffer = Buffer;
38
- ParquetColumnarLoader.Buffer = Buffer;
77
+ export const ParquetColumnarLoader = {
78
+ ...ParquetColumnarWorkerLoader,
79
+ parse(arrayBuffer, options) {
80
+ return parseParquetFileInColumns(new BlobFile(arrayBuffer), options);
81
+ },
82
+ parseFile: parseParquetFileInColumns,
83
+ parseFileInBatches: parseParquetFileInColumnarBatches
84
+ };
39
85
  //# sourceMappingURL=parquet-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parquet-loader.js","names":["Buffer","VERSION","__VERSION__","ParquetLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","parquet","shape","columnList","geoparquet","url","undefined","preserveBinary","ParquetColumnarLoader"],"sources":["../src/parquet-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {\n ObjectRowTable,\n ObjectRowTableBatch,\n ColumnarTable,\n ColumnarTableBatch\n} from '@loaders.gl/schema';\n\nexport {Buffer} from './polyfills/buffer/install-buffer-polyfill';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for the parquet loader */\nexport type ParquetLoaderOptions = LoaderOptions & {\n /** Options for the parquet loader */\n parquet?: {\n /** Format of returned parsed data */\n shape?: 'object-row-table' | 'geojson-table';\n /** Restrict which columns that are parsed from the table. Can save significant memory. */\n columnList?: string[] | string[][];\n /** If true, binary values are not converted to strings */\n preserveBinary?: boolean;\n /** @deprecated not used? Set to true to indicate that this is a geoparquet file. */\n geoparquet?: boolean;\n /** @deprecated URL to override loaders.gl/core parser system */\n url?: string;\n };\n};\n\n/** ParquetJS table loader */\nexport const ParquetLoader: Loader<ObjectRowTable, ObjectRowTableBatch, ParquetLoaderOptions> = {\n name: 'Apache Parquet',\n id: 'parquet',\n module: 'parquet',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: {\n parquet: {\n shape: 'object-row-table',\n columnList: [],\n geoparquet: true,\n url: undefined,\n preserveBinary: false\n }\n }\n};\n\nexport const ParquetColumnarLoader: Loader<\n ColumnarTable,\n ColumnarTableBatch,\n ParquetLoaderOptions\n> = {\n name: 'Apache Parquet',\n id: 'parquet',\n module: 'parquet',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: ParquetLoader.options\n};\n\n// Defeat tree shaking\n// @ts-ignore\nParquetLoader.Buffer = Buffer;\n// @ts-ignore\nParquetColumnarLoader.Buffer = Buffer;\n"],"mappings":"SAWQA,MAAM;AAId,MAAMC,OAAO,GAAG,OAAOC,WAAW,KAAK,WAAW,GAAGA,WAAW,GAAG,QAAQ;AAoB3E,OAAO,MAAMC,aAAgF,GAAG;EAC9FC,IAAI,EAAE,gBAAgB;EACtBC,EAAE,EAAE,SAAS;EACbC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEN,OAAO;EAChBO,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,OAAO;EACjBC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;EACvBC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,KAAK,EAAE,kBAAkB;MACzBC,UAAU,EAAE,EAAE;MACdC,UAAU,EAAE,IAAI;MAChBC,GAAG,EAAEC,SAAS;MACdC,cAAc,EAAE;IAClB;EACF;AACF,CAAC;AAED,OAAO,MAAMC,qBAIZ,GAAG;EACFlB,IAAI,EAAE,gBAAgB;EACtBC,EAAE,EAAE,SAAS;EACbC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEN,OAAO;EAChBO,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,OAAO;EACjBC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;EACvBC,OAAO,EAAEX,aAAa,CAACW;AACzB,CAAC;AAIDX,aAAa,CAACH,MAAM,GAAGA,MAAM;AAE7BsB,qBAAqB,CAACtB,MAAM,GAAGA,MAAM"}
1
+ {"version":3,"file":"parquet-loader.js","names":["BlobFile","parseParquetFile","parseParquetFileInBatches","parseGeoParquetFile","parseGeoParquetFileInBatches","parseParquetFileInColumns","parseParquetFileInColumnarBatches","Buffer","VERSION","__VERSION__","ParquetWorkerLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","parquet","shape","columnList","geoparquet","url","undefined","preserveBinary","ParquetLoader","parse","arrayBuffer","parseFile","parseFileInBatches","GeoParquetWorkerLoader","GeoParquetLoader","ParquetColumnarWorkerLoader","ParquetColumnarLoader"],"sources":["../src/parquet-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {\n ObjectRowTable,\n ObjectRowTableBatch,\n GeoJSONTable,\n GeoJSONTableBatch,\n ColumnarTable,\n ColumnarTableBatch\n} from '@loaders.gl/schema';\nimport {BlobFile} from '@loaders.gl/loader-utils';\n\nimport {parseParquetFile, parseParquetFileInBatches} from './lib/parsers/parse-parquet';\nimport {parseGeoParquetFile, parseGeoParquetFileInBatches} from './lib/parsers/parse-geoparquet';\nimport {\n parseParquetFileInColumns,\n parseParquetFileInColumnarBatches\n} from './lib/parsers/parse-parquet-to-columns';\n\nexport {Buffer} from './polyfills/buffer/install-buffer-polyfill';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for the parquet loader */\nexport type ParquetLoaderOptions = LoaderOptions & {\n /** Options for the parquet loader */\n parquet?: {\n /** Format of returned parsed data */\n shape?: 'object-row-table' | 'geojson-table';\n /** Restrict which columns that are parsed from the table. Can save significant memory. */\n columnList?: string[] | string[][];\n /** If true, binary values are not converted to strings */\n preserveBinary?: boolean;\n /** @deprecated not used? Set to true to indicate that this is a geoparquet file. */\n geoparquet?: boolean;\n /** @deprecated URL to override loaders.gl/core parser system */\n url?: string;\n };\n};\n\n/**\n * ParquetJS table loader\n */\nexport const ParquetWorkerLoader: Loader<\n ObjectRowTable,\n ObjectRowTableBatch,\n ParquetLoaderOptions\n> = {\n name: 'Apache Parquet',\n id: 'parquet',\n module: 'parquet',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: {\n parquet: {\n shape: 'object-row-table',\n columnList: [],\n geoparquet: true,\n url: undefined,\n preserveBinary: false\n }\n }\n};\n\n/** ParquetJS table loader */\nexport const ParquetLoader: LoaderWithParser<\n ObjectRowTable | GeoJSONTable,\n ObjectRowTableBatch | GeoJSONTableBatch,\n ParquetLoaderOptions\n> = {\n ...ParquetWorkerLoader,\n parse: (arrayBuffer: ArrayBuffer, options?: ParquetLoaderOptions) =>\n parseParquetFile(new BlobFile(arrayBuffer), options),\n\n parseFile: parseParquetFile,\n parseFileInBatches: parseParquetFileInBatches\n};\n\n// Defeat tree shaking\n// @ts-ignore\nParquetLoader.Buffer = Buffer;\n\nexport const GeoParquetWorkerLoader: Loader<GeoJSONTable, GeoJSONTableBatch, ParquetLoaderOptions> =\n {\n name: 'Apache Parquet',\n id: 'parquet',\n module: 'parquet',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: {\n parquet: {\n shape: 'geojson-table',\n columnList: [],\n geoparquet: true,\n url: undefined,\n preserveBinary: false\n }\n }\n };\n\n/** ParquetJS table loader */\nexport const GeoParquetLoader: LoaderWithParser<\n ObjectRowTable | GeoJSONTable,\n ObjectRowTableBatch | GeoJSONTableBatch,\n ParquetLoaderOptions\n> = {\n ...GeoParquetWorkerLoader,\n parse(arrayBuffer: ArrayBuffer, options?: ParquetLoaderOptions) {\n return parseGeoParquetFile(new BlobFile(arrayBuffer), options);\n },\n parseFile: parseGeoParquetFile,\n parseFileInBatches: parseGeoParquetFileInBatches\n};\n\n/** @deprecated Test to see if we can improve perf of parquetjs loader */\nexport const ParquetColumnarWorkerLoader: Loader<\n ColumnarTable,\n ColumnarTableBatch,\n ParquetLoaderOptions\n> = {\n name: 'Apache Parquet',\n id: 'parquet',\n module: 'parquet',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: ParquetLoader.options\n};\n\n/** @deprecated Test to see if we can improve perf of parquetjs loader */\nexport const ParquetColumnarLoader: LoaderWithParser<\n ColumnarTable,\n ColumnarTableBatch,\n ParquetLoaderOptions\n> = {\n ...ParquetColumnarWorkerLoader,\n parse(arrayBuffer: ArrayBuffer, options?: ParquetLoaderOptions) {\n return parseParquetFileInColumns(new BlobFile(arrayBuffer), options);\n },\n parseFile: parseParquetFileInColumns,\n parseFileInBatches: parseParquetFileInColumnarBatches\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Loader, LoaderOptions } from '@loaders.gl/loader-utils';
1
+ import type { Loader, LoaderWithParser, LoaderOptions } from '@loaders.gl/loader-utils';
2
2
  import type { ArrowTable } from '@loaders.gl/arrow';
3
3
  /** Parquet WASM loader options */
4
4
  export type ParquetWasmLoaderOptions = LoaderOptions & {
@@ -8,5 +8,7 @@ export type ParquetWasmLoaderOptions = LoaderOptions & {
8
8
  };
9
9
  };
10
10
  /** Parquet WASM table loader */
11
- export declare const ParquetWasmLoader: Loader<ArrowTable, never, ParquetWasmLoaderOptions>;
11
+ export declare const ParquetWasmWorkerLoader: Loader<ArrowTable, never, ParquetWasmLoaderOptions>;
12
+ /** Parquet WASM table loader */
13
+ export declare const ParquetWasmLoader: LoaderWithParser<ArrowTable, never, ParquetWasmLoaderOptions>;
12
14
  //# sourceMappingURL=parquet-wasm-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parquet-wasm-loader.d.ts","sourceRoot":"","sources":["../src/parquet-wasm-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAMlD,kCAAkC;AAClC,MAAM,MAAM,wBAAwB,GAAG,aAAa,GAAG;IACrD,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,aAAa,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,wBAAwB,CAiBjF,CAAC"}
1
+ {"version":3,"file":"parquet-wasm-loader.d.ts","sourceRoot":"","sources":["../src/parquet-wasm-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAQlD,kCAAkC;AAClC,MAAM,MAAM,wBAAwB,GAAG,aAAa,GAAG;IACrD,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,aAAa,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,wBAAwB,CAiBvF,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,wBAAwB,CAG3F,CAAC"}
@@ -1,5 +1,6 @@
1
+ import { parseParquetWasm } from "./lib/wasm/parse-parquet-wasm.js";
1
2
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
2
- export const ParquetWasmLoader = {
3
+ export const ParquetWasmWorkerLoader = {
3
4
  name: 'Apache Parquet',
4
5
  id: 'parquet-wasm',
5
6
  module: 'parquet',
@@ -17,4 +18,8 @@ export const ParquetWasmLoader = {
17
18
  }
18
19
  }
19
20
  };
21
+ export const ParquetWasmLoader = {
22
+ ...ParquetWasmWorkerLoader,
23
+ parse: parseParquetWasm
24
+ };
20
25
  //# sourceMappingURL=parquet-wasm-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parquet-wasm-loader.js","names":["VERSION","__VERSION__","ParquetWasmLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","parquet","type","wasmUrl"],"sources":["../src/parquet-wasm-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {ArrowTable} from '@loaders.gl/arrow';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Parquet WASM loader options */\nexport type ParquetWasmLoaderOptions = LoaderOptions & {\n parquet?: {\n type?: 'arrow-table';\n wasmUrl?: string;\n };\n};\n\n/** Parquet WASM table loader */\nexport const ParquetWasmLoader: Loader<ArrowTable, never, ParquetWasmLoaderOptions> = {\n name: 'Apache Parquet',\n id: 'parquet-wasm',\n module: 'parquet',\n version: VERSION,\n worker: false,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: {\n parquet: {\n type: 'arrow-table',\n wasmUrl: 'https://unpkg.com/parquet-wasm@0.3.1/esm2/arrow1_bg.wasm'\n }\n }\n};\n"],"mappings":"AAQA,MAAMA,OAAO,GAAG,OAAOC,WAAW,KAAK,WAAW,GAAGA,WAAW,GAAG,QAAQ;AAW3E,OAAO,MAAMC,iBAAsE,GAAG;EACpFC,IAAI,EAAE,gBAAgB;EACtBC,EAAE,EAAE,cAAc;EAClBC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEN,OAAO;EAChBO,MAAM,EAAE,KAAK;EACbC,QAAQ,EAAE,OAAO;EACjBC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;EACvBC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,IAAI,EAAE,aAAa;MACnBC,OAAO,EAAE;IACX;EACF;AACF,CAAC"}
1
+ {"version":3,"file":"parquet-wasm-loader.js","names":["parseParquetWasm","VERSION","__VERSION__","ParquetWasmWorkerLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","parquet","type","wasmUrl","ParquetWasmLoader","parse"],"sources":["../src/parquet-wasm-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {ArrowTable} from '@loaders.gl/arrow';\n\nimport {parseParquetWasm} from './lib/wasm/parse-parquet-wasm';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Parquet WASM loader options */\nexport type ParquetWasmLoaderOptions = LoaderOptions & {\n parquet?: {\n type?: 'arrow-table';\n wasmUrl?: string;\n };\n};\n\n/** Parquet WASM table loader */\nexport const ParquetWasmWorkerLoader: Loader<ArrowTable, never, ParquetWasmLoaderOptions> = {\n name: 'Apache Parquet',\n id: 'parquet-wasm',\n module: 'parquet',\n version: VERSION,\n worker: false,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: {\n parquet: {\n type: 'arrow-table',\n wasmUrl: 'https://unpkg.com/parquet-wasm@0.3.1/esm2/arrow1_bg.wasm'\n }\n }\n};\n\n/** Parquet WASM table loader */\nexport const ParquetWasmLoader: LoaderWithParser<ArrowTable, never, ParquetWasmLoaderOptions> = {\n ...ParquetWasmWorkerLoader,\n parse: parseParquetWasm\n};\n"],"mappings":"SAMQA,gBAAgB;AAIxB,MAAMC,OAAO,GAAG,OAAOC,WAAW,KAAK,WAAW,GAAGA,WAAW,GAAG,QAAQ;AAW3E,OAAO,MAAMC,uBAA4E,GAAG;EAC1FC,IAAI,EAAE,gBAAgB;EACtBC,EAAE,EAAE,cAAc;EAClBC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEN,OAAO;EAChBO,MAAM,EAAE,KAAK;EACbC,QAAQ,EAAE,OAAO;EACjBC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;EACvBC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,IAAI,EAAE,aAAa;MACnBC,OAAO,EAAE;IACX;EACF;AACF,CAAC;AAGD,OAAO,MAAMC,iBAAgF,GAAG;EAC9F,GAAGf,uBAAuB;EAC1BgB,KAAK,EAAEnB;AACT,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
- import { ParquetLoader } from "../index.js";
2
+ import { ParquetLoader } from "../parquet-loader.js";
3
3
  createLoaderWorker(ParquetLoader);
4
4
  //# sourceMappingURL=parquet-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parquet-worker.js","names":["createLoaderWorker","ParquetLoader"],"sources":["../../src/workers/parquet-worker.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {ParquetLoader} from '../index';\n\ncreateLoaderWorker(ParquetLoader);\n"],"mappings":"AAGA,SAAQA,kBAAkB,QAAO,0BAA0B;AAAC,SACpDC,aAAa;AAErBD,kBAAkB,CAACC,aAAa,CAAC"}
1
+ {"version":3,"file":"parquet-worker.js","names":["createLoaderWorker","ParquetLoader"],"sources":["../../src/workers/parquet-worker.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {ParquetLoader} from '../parquet-loader';\n\ncreateLoaderWorker(ParquetLoader);\n"],"mappings":"AAGA,SAAQA,kBAAkB,QAAO,0BAA0B;AAAC,SACpDC,aAAa;AAErBD,kBAAkB,CAACC,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/parquet",
3
- "version": "4.0.4",
3
+ "version": "4.1.0-alpha.2",
4
4
  "description": "Framework-independent loader for Apache Parquet files",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -12,12 +12,15 @@
12
12
  "url": "https://github.com/visgl/loaders.gl"
13
13
  },
14
14
  "keywords": [
15
- "webgl",
16
15
  "loader",
17
16
  "parser",
18
17
  "table",
19
- "Parquet",
20
- "Apache Parquet"
18
+ "parquet",
19
+ "streaming",
20
+ "cloud native",
21
+ "geoparquet",
22
+ "Apache Parquet",
23
+ "apache-parquet"
21
24
  ],
22
25
  "types": "dist/index.d.ts",
23
26
  "main": "dist/index.cjs",
@@ -58,13 +61,13 @@
58
61
  "base64-js and ieee754 are used by buffer polyfill"
59
62
  ],
60
63
  "dependencies": {
61
- "@loaders.gl/arrow": "4.0.4",
62
- "@loaders.gl/bson": "4.0.4",
63
- "@loaders.gl/compression": "4.0.4",
64
- "@loaders.gl/gis": "4.0.4",
65
- "@loaders.gl/loader-utils": "4.0.4",
66
- "@loaders.gl/schema": "4.0.4",
67
- "@loaders.gl/wkt": "4.0.4",
64
+ "@loaders.gl/arrow": "4.1.0-alpha.2",
65
+ "@loaders.gl/bson": "4.1.0-alpha.2",
66
+ "@loaders.gl/compression": "4.1.0-alpha.2",
67
+ "@loaders.gl/gis": "4.1.0-alpha.2",
68
+ "@loaders.gl/loader-utils": "4.1.0-alpha.2",
69
+ "@loaders.gl/schema": "4.1.0-alpha.2",
70
+ "@loaders.gl/wkt": "4.1.0-alpha.2",
68
71
  "async-mutex": "^0.2.2",
69
72
  "base64-js": "^1.3.1",
70
73
  "brotli": "^1.3.2",
@@ -90,5 +93,5 @@
90
93
  "@types/varint": "^5.0.0",
91
94
  "apache-arrow": "^13.0.0"
92
95
  },
93
- "gitHead": "4dc810fa04bb400f4aedfef98a83c7ef882ed3d7"
96
+ "gitHead": "a248382edd20e846c1ccb23c15d089fb9b368dbc"
94
97
  }
package/src/index.ts CHANGED
@@ -3,74 +3,21 @@
3
3
 
4
4
  export {Buffer} from './polyfills/buffer/install-buffer-polyfill';
5
5
 
6
- import type {LoaderWithParser} from '@loaders.gl/loader-utils';
7
- import type {
8
- ObjectRowTable,
9
- ObjectRowTableBatch,
10
- ColumnarTable,
11
- ColumnarTableBatch,
12
- GeoJSONTable,
13
- GeoJSONTableBatch
14
- } from '@loaders.gl/schema';
15
-
16
6
  // import {ArrowTable, ArrowTableBatch} from '@loaders.gl/arrow';
17
7
 
18
- // ParquetLoader
19
-
20
- import {BlobFile} from '@loaders.gl/loader-utils';
21
- import {
22
- ParquetLoader as ParquetWorkerLoader,
23
- ParquetColumnarLoader as ParquetColumnarWorkerLoader,
24
- ParquetLoaderOptions
8
+ export {
9
+ ParquetWorkerLoader,
10
+ ParquetLoader,
11
+ GeoParquetWorkerLoader,
12
+ GeoParquetLoader,
13
+ ParquetColumnarWorkerLoader,
14
+ ParquetColumnarLoader
25
15
  } from './parquet-loader';
26
- import {parseParquetFile, parseParquetFileInBatches} from './lib/parsers/parse-parquet-to-rows';
27
- import {
28
- parseParquetFileInColumns,
29
- parseParquetFileInColumnarBatches
30
- } from './lib/parsers/parse-parquet-to-columns';
31
16
 
32
17
  // import type {ParquetWasmLoaderOptions} from './lib/wasm/parse-parquet-wasm';
33
18
  // import {parseParquetWasm} from './lib/wasm/parse-parquet-wasm';
34
19
  // import {ParquetWasmLoader as ParquetWasmWorkerLoader} from './parquet-wasm-loader';
35
20
 
36
- export {ParquetWorkerLoader};
37
- // export {ParquetWasmWorkerLoader};
38
-
39
- /** ParquetJS table loader */
40
- export const ParquetLoader: LoaderWithParser<
41
- ObjectRowTable | GeoJSONTable,
42
- ObjectRowTableBatch | GeoJSONTableBatch,
43
- ParquetLoaderOptions
44
- > = {
45
- ...ParquetWorkerLoader,
46
- parse(arrayBuffer: ArrayBuffer, options?: ParquetLoaderOptions) {
47
- return parseParquetFile(new BlobFile(arrayBuffer), options);
48
- },
49
- parseFile: parseParquetFile,
50
- parseFileInBatches: parseParquetFileInBatches
51
- };
52
-
53
- /** ParquetJS table loader */
54
- export const ParquetColumnarLoader: LoaderWithParser<
55
- ColumnarTable,
56
- ColumnarTableBatch,
57
- ParquetLoaderOptions
58
- > = {
59
- ...ParquetColumnarWorkerLoader,
60
- parse(arrayBuffer: ArrayBuffer, options?: ParquetLoaderOptions) {
61
- return parseParquetFileInColumns(new BlobFile(arrayBuffer), options);
62
- },
63
- parseFile: parseParquetFileInColumns,
64
- parseFileInBatches: parseParquetFileInColumnarBatches
65
- };
66
-
67
- // export const ParquetWasmLoader: LoaderWithParser<ArrowTable, never, ParquetWasmLoaderOptions> = {
68
- // ...ParquetWasmWorkerLoader,
69
- // parse: parseParquetWasm
70
- // };
71
-
72
- // ParquetWriter
73
-
74
21
  export {ParquetWriter as _ParquetWriter} from './parquet-writer';
75
22
  // export {ParquetWasmWriter} from './parquet-wasm-writer';
76
23
 
@@ -1,3 +1,6 @@
1
+ // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  // loaders.gl
2
5
  import {Schema} from '@loaders.gl/schema';
3
6
  import {ParquetReader} from '../../parquetjs/parser/parquet-reader';
@@ -0,0 +1,87 @@
1
+ // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import type {ReadableFile} from '@loaders.gl/loader-utils';
5
+ import type {
6
+ GeoJSONTable,
7
+ GeoJSONTableBatch,
8
+ ObjectRowTable,
9
+ ObjectRowTableBatch
10
+ } from '@loaders.gl/schema';
11
+ import {convertWKBTableToGeoJSON} from '@loaders.gl/gis';
12
+ import {WKTLoader, WKBLoader} from '@loaders.gl/wkt';
13
+
14
+ import type {ParquetLoaderOptions} from '../../parquet-loader';
15
+
16
+ import {parseParquetFile, parseParquetFileInBatches} from './parse-parquet';
17
+
18
+ export async function parseGeoParquetFile(
19
+ file: ReadableFile,
20
+ options?: ParquetLoaderOptions
21
+ ): Promise<ObjectRowTable | GeoJSONTable> {
22
+ const table = await parseParquetFile(file, {...options, shape: 'object-row-table'});
23
+ const shape = options?.parquet?.shape;
24
+ return convertTable(table, shape);
25
+ }
26
+
27
+ export async function* parseGeoParquetFileInBatches(
28
+ file: ReadableFile,
29
+ options?: ParquetLoaderOptions
30
+ ): AsyncIterable<ObjectRowTableBatch | GeoJSONTableBatch> {
31
+ const tableBatches = parseParquetFileInBatches(file, {...options, shape: 'object-row-table'});
32
+
33
+ for await (const batch of tableBatches) {
34
+ const shape = options?.parquet?.shape;
35
+ yield convertBatch(batch, shape);
36
+ }
37
+ }
38
+
39
+ function convertTable(
40
+ objectRowTable: ObjectRowTable,
41
+ shape?: 'object-row-table' | 'geojson-table'
42
+ ): ObjectRowTable | GeoJSONTable {
43
+ switch (shape) {
44
+ case 'object-row-table':
45
+ return objectRowTable;
46
+
47
+ case 'geojson-table':
48
+ try {
49
+ return convertWKBTableToGeoJSON(objectRowTable, objectRowTable.schema!, [
50
+ WKTLoader,
51
+ WKBLoader
52
+ ]);
53
+ } catch (error) {
54
+ return objectRowTable;
55
+ }
56
+
57
+ default:
58
+ throw new Error(shape);
59
+ }
60
+ }
61
+
62
+ function convertBatch(
63
+ objectRowBatch: ObjectRowTableBatch,
64
+ shape?: 'object-row-table' | 'geojson-table'
65
+ ): ObjectRowTableBatch | GeoJSONTableBatch {
66
+ switch (shape) {
67
+ case 'object-row-table':
68
+ return objectRowBatch;
69
+
70
+ case 'geojson-table':
71
+ try {
72
+ const geojsonTable = convertWKBTableToGeoJSON(objectRowBatch, objectRowBatch.schema!, [
73
+ WKTLoader,
74
+ WKBLoader
75
+ ]);
76
+ return {
77
+ ...objectRowBatch,
78
+ ...geojsonTable
79
+ };
80
+ } catch (error) {
81
+ return objectRowBatch;
82
+ }
83
+
84
+ default:
85
+ throw new Error(shape);
86
+ }
87
+ }
@@ -11,6 +11,9 @@ import {materializeColumns} from '../../parquetjs/schema/shred';
11
11
  import {getSchemaFromParquetReader} from './get-parquet-schema';
12
12
  import {installBufferPolyfill} from '../../polyfills/buffer';
13
13
 
14
+ /**
15
+ * @deprecated
16
+ */
14
17
  export async function parseParquetFileInColumns(
15
18
  file: ReadableFile,
16
19
  options?: ParquetLoaderOptions
@@ -26,6 +29,9 @@ export async function parseParquetFileInColumns(
26
29
  throw new Error('empty table');
27
30
  }
28
31
 
32
+ /**
33
+ * @deprecated
34
+ */
29
35
  export async function* parseParquetFileInColumnarBatches(
30
36
  file: ReadableFile,
31
37
  options?: ParquetLoaderOptions
@@ -1,14 +1,8 @@
1
- // import type {LoaderWithParser, Loader, LoaderOptions} from '@loaders.gl/loader-utils';
2
- // import {ColumnarTableBatch} from '@loaders.gl/schema';
1
+ // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
3
4
  import type {ReadableFile} from '@loaders.gl/loader-utils';
4
- import type {
5
- GeoJSONTable,
6
- GeoJSONTableBatch,
7
- ObjectRowTable,
8
- ObjectRowTableBatch
9
- } from '@loaders.gl/schema';
10
- import {convertWKBTableToGeoJSON} from '@loaders.gl/gis';
11
- import {WKTLoader, WKBLoader} from '@loaders.gl/wkt';
5
+ import type {ObjectRowTable, ObjectRowTableBatch} from '@loaders.gl/schema';
12
6
 
13
7
  import type {ParquetLoaderOptions} from '../../parquet-loader';
14
8
  import type {ParquetRow} from '../../parquetjs/schema/declare';
@@ -16,10 +10,16 @@ import {ParquetReader} from '../../parquetjs/parser/parquet-reader';
16
10
  import {getSchemaFromParquetReader} from './get-parquet-schema';
17
11
  import {installBufferPolyfill} from '../../polyfills/buffer';
18
12
 
13
+ /**
14
+ * * Parse a parquet file using parquetjs
15
+ * @param file
16
+ * @param options
17
+ * @returns
18
+ */
19
19
  export async function parseParquetFile(
20
20
  file: ReadableFile,
21
21
  options?: ParquetLoaderOptions
22
- ): Promise<ObjectRowTable | GeoJSONTable> {
22
+ ): Promise<ObjectRowTable> {
23
23
  installBufferPolyfill();
24
24
 
25
25
  const reader = new ParquetReader(file, {
@@ -47,10 +47,15 @@ export async function parseParquetFile(
47
47
  return convertTable(objectRowTable, shape);
48
48
  }
49
49
 
50
+ /**
51
+ * Parse a parquet file in batches using parquetjs
52
+ * @param file
53
+ * @param options
54
+ */
50
55
  export async function* parseParquetFileInBatches(
51
56
  file: ReadableFile,
52
57
  options?: ParquetLoaderOptions
53
- ): AsyncIterable<ObjectRowTableBatch | GeoJSONTableBatch> {
58
+ ): AsyncIterable<ObjectRowTableBatch> {
54
59
  const reader = new ParquetReader(file, {
55
60
  preserveBinary: options?.parquet?.preserveBinary
56
61
  });
@@ -78,20 +83,14 @@ export async function* parseParquetFileInBatches(
78
83
  function convertTable(
79
84
  objectRowTable: ObjectRowTable,
80
85
  shape?: 'object-row-table' | 'geojson-table'
81
- ): ObjectRowTable | GeoJSONTable {
86
+ ): ObjectRowTable {
82
87
  switch (shape) {
83
88
  case 'object-row-table':
84
89
  return objectRowTable;
85
90
 
91
+ // Hack until geoparquet fixes up forwarded shape
86
92
  case 'geojson-table':
87
- try {
88
- return convertWKBTableToGeoJSON(objectRowTable, objectRowTable.schema!, [
89
- WKTLoader,
90
- WKBLoader
91
- ]);
92
- } catch (error) {
93
- return objectRowTable;
94
- }
93
+ return objectRowTable;
95
94
 
96
95
  default:
97
96
  throw new Error(shape);
@@ -1,3 +1,6 @@
1
+ // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  import type {WriterOptions} from '@loaders.gl/loader-utils';
2
5
  import type {ArrowTable} from '@loaders.gl/arrow';
3
6
 
@@ -1,3 +1,6 @@
1
+ // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  import * as wasmEsm from 'parquet-wasm/esm2/arrow1';
2
5
 
3
6
  let cached: typeof wasmEsm | null = null;
@@ -1,3 +1,6 @@
1
+ // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  import * as wasmNode from 'parquet-wasm/node/arrow1';
2
5
 
3
6
  export async function loadWasm(wasmUrl?: string) {
@@ -1 +1,4 @@
1
+ // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  export {loadWasm} from './load-wasm-node';
@@ -1,3 +1,6 @@
1
+ // loaders.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  // eslint-disable
2
5
  import type {LoaderOptions} from '@loaders.gl/loader-utils';
3
6
  import type {ArrowTable} from '@loaders.gl/arrow';