@loaders.gl/arrow 3.1.0-alpha.5 → 3.1.0-beta.4
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/dist/arrow-loader.d.ts +1 -0
- package/dist/arrow-loader.d.ts.map +1 -0
- package/dist/arrow-loader.js +26 -0
- package/dist/arrow-worker.js +15447 -2
- package/dist/arrow-writer.d.ts +1 -0
- package/dist/arrow-writer.d.ts.map +1 -0
- package/dist/arrow-writer.js +22 -0
- package/dist/bundle.d.ts +1 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +15452 -0
- package/dist/es5/arrow-loader.js +1 -1
- package/dist/es5/arrow-loader.js.map +1 -1
- package/dist/es5/arrow-writer.js +1 -1
- package/dist/es5/arrow-writer.js.map +1 -1
- package/dist/esm/arrow-loader.js +1 -1
- package/dist/esm/arrow-loader.js.map +1 -1
- package/dist/esm/arrow-writer.js +1 -1
- package/dist/esm/arrow-writer.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/lib/arrow-table-batch.d.ts +1 -0
- package/dist/lib/arrow-table-batch.d.ts.map +1 -0
- package/dist/lib/arrow-table-batch.js +62 -0
- package/dist/lib/encode-arrow.d.ts +1 -0
- package/dist/lib/encode-arrow.d.ts.map +1 -0
- package/dist/lib/encode-arrow.js +40 -0
- package/dist/lib/parse-arrow-in-batches.d.ts +1 -0
- package/dist/lib/parse-arrow-in-batches.d.ts.map +1 -0
- package/dist/lib/parse-arrow-in-batches.js +47 -0
- package/dist/lib/parse-arrow-sync.d.ts +1 -0
- package/dist/lib/parse-arrow-sync.d.ts.map +1 -0
- package/dist/lib/parse-arrow-sync.js +41 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/workers/arrow-worker.d.ts +1 -0
- package/dist/workers/arrow-worker.d.ts.map +1 -0
- package/dist/workers/arrow-worker.js +5 -0
- package/package.json +7 -8
- package/dist/arrow-worker.js.map +0 -1
- package/dist/dist.min.js +0 -2
- package/dist/dist.min.js.map +0 -1
package/dist/es5/arrow-loader.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports._typecheckArrowLoader = exports.ArrowLoader = void 0;
|
|
7
|
-
const VERSION = typeof "3.1.0-
|
|
7
|
+
const VERSION = typeof "3.1.0-beta.4" !== 'undefined' ? "3.1.0-beta.4" : 'latest';
|
|
8
8
|
const DEFAULT_ARROW_LOADER_OPTIONS = {
|
|
9
9
|
arrow: {
|
|
10
10
|
shape: 'columnar-table'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/arrow-loader.ts"],"names":["VERSION","DEFAULT_ARROW_LOADER_OPTIONS","arrow","shape","ArrowLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","_typecheckArrowLoader"],"mappings":";;;;;;AAIA,MAAMA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../src/arrow-loader.ts"],"names":["VERSION","DEFAULT_ARROW_LOADER_OPTIONS","arrow","shape","ArrowLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","_typecheckArrowLoader"],"mappings":";;;;;;AAIA,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;AAQA,MAAMC,4BAA4B,GAAG;AACnCC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAE;AADF;AAD4B,CAArC;AAOO,MAAMC,WAAW,GAAG;AACzBC,EAAAA,IAAI,EAAE,cADmB;AAEzBC,EAAAA,EAAE,EAAE,OAFqB;AAGzBC,EAAAA,MAAM,EAAE,OAHiB;AAIzBC,EAAAA,OAAO,EAAER,OAJgB;AAKzBS,EAAAA,MAAM,EAAE,IALiB;AAMzBC,EAAAA,QAAQ,EAAE,OANe;AAOzBC,EAAAA,UAAU,EAAE,CAAC,OAAD,EAAU,SAAV,CAPa;AAQzBC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CARc;AASzBC,EAAAA,MAAM,EAAE,IATiB;AAUzBC,EAAAA,KAAK,EAAE,CAAC,OAAD,CAVkB;AAWzBC,EAAAA,OAAO,EAAEd;AAXgB,CAApB;;AAcA,MAAMe,qBAA6B,GAAGZ,WAAtC","sourcesContent":["import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\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\nexport type ArrowLoaderOptions = LoaderOptions & {\n arrow?: {\n shape: 'arrow-table' | 'columnar-table' | 'row-table' | 'array-row-table' | 'object-row-table';\n };\n};\n\nconst DEFAULT_ARROW_LOADER_OPTIONS = {\n arrow: {\n shape: 'columnar-table'\n }\n};\n\n/** ArrowJS table loader */\nexport const ArrowLoader = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['arrow', 'feather'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['ARROW'],\n options: DEFAULT_ARROW_LOADER_OPTIONS\n};\n\nexport const _typecheckArrowLoader: Loader = ArrowLoader;\n"],"file":"arrow-loader.js"}
|
package/dist/es5/arrow-writer.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.ArrowWriter = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _encodeArrow = require("./lib/encode-arrow");
|
|
9
9
|
|
|
10
|
-
const VERSION = typeof "3.1.0-
|
|
10
|
+
const VERSION = typeof "3.1.0-beta.4" !== 'undefined' ? "3.1.0-beta.4" : 'latest';
|
|
11
11
|
const ArrowWriter = {
|
|
12
12
|
name: 'Apache Arrow',
|
|
13
13
|
id: 'arrow',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/arrow-writer.ts"],"names":["VERSION","ArrowWriter","name","id","module","version","extensions","mimeTypes","encodeSync","binary","options","data"],"mappings":";;;;;;;AAEA;;AAIA,MAAMA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../src/arrow-writer.ts"],"names":["VERSION","ArrowWriter","name","id","module","version","extensions","mimeTypes","encodeSync","binary","options","data"],"mappings":";;;;;;;AAEA;;AAIA,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;AAKO,MAAMC,WAAW,GAAG;AACzBC,EAAAA,IAAI,EAAE,cADmB;AAEzBC,EAAAA,EAAE,EAAE,OAFqB;AAGzBC,EAAAA,MAAM,EAAE,OAHiB;AAIzBC,EAAAA,OAAO,EAAEL,OAJgB;AAKzBM,EAAAA,UAAU,EAAE,CAAC,OAAD,EAAU,SAAV,CALa;AAMzBC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANc;AAOzBC,EAAAA,UAPyB;AAQzBC,EAAAA,MAAM,EAAE,IARiB;AASzBC,EAAAA,OAAO,EAAE;AATgB,CAApB;;;AAYP,SAASF,UAAT,CAAoBG,IAApB,EAA0BD,OAA1B,EAAwD;AACtD,SAAO,kCAAgBC,IAAhB,CAAP;AACD","sourcesContent":["// import type {Writer} from '@loaders.gl/loader-utils';\nimport type {WriterOptions} from '@loaders.gl/loader-utils';\nimport {encodeArrowSync} from './lib/encode-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\ntype ArrowWriterOptions = WriterOptions;\n\n/** Apache Arrow writer */\nexport const ArrowWriter = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n extensions: ['arrow', 'feather'],\n mimeTypes: ['application/octet-stream'],\n encodeSync,\n binary: true,\n options: {}\n};\n\nfunction encodeSync(data, options?: ArrowWriterOptions) {\n return encodeArrowSync(data);\n}\n"],"file":"arrow-writer.js"}
|
package/dist/esm/arrow-loader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/arrow-loader.ts"],"names":["VERSION","DEFAULT_ARROW_LOADER_OPTIONS","arrow","shape","ArrowLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","_typecheckArrowLoader"],"mappings":"AAIA,MAAMA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../src/arrow-loader.ts"],"names":["VERSION","DEFAULT_ARROW_LOADER_OPTIONS","arrow","shape","ArrowLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","_typecheckArrowLoader"],"mappings":"AAIA,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;AAQA,MAAMC,4BAA4B,GAAG;AACnCC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAE;AADF;AAD4B,CAArC;AAOA,OAAO,MAAMC,WAAW,GAAG;AACzBC,EAAAA,IAAI,EAAE,cADmB;AAEzBC,EAAAA,EAAE,EAAE,OAFqB;AAGzBC,EAAAA,MAAM,EAAE,OAHiB;AAIzBC,EAAAA,OAAO,EAAER,OAJgB;AAKzBS,EAAAA,MAAM,EAAE,IALiB;AAMzBC,EAAAA,QAAQ,EAAE,OANe;AAOzBC,EAAAA,UAAU,EAAE,CAAC,OAAD,EAAU,SAAV,CAPa;AAQzBC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CARc;AASzBC,EAAAA,MAAM,EAAE,IATiB;AAUzBC,EAAAA,KAAK,EAAE,CAAC,OAAD,CAVkB;AAWzBC,EAAAA,OAAO,EAAEd;AAXgB,CAApB;AAcP,OAAO,MAAMe,qBAA6B,GAAGZ,WAAtC","sourcesContent":["import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\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\nexport type ArrowLoaderOptions = LoaderOptions & {\n arrow?: {\n shape: 'arrow-table' | 'columnar-table' | 'row-table' | 'array-row-table' | 'object-row-table';\n };\n};\n\nconst DEFAULT_ARROW_LOADER_OPTIONS = {\n arrow: {\n shape: 'columnar-table'\n }\n};\n\n/** ArrowJS table loader */\nexport const ArrowLoader = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['arrow', 'feather'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['ARROW'],\n options: DEFAULT_ARROW_LOADER_OPTIONS\n};\n\nexport const _typecheckArrowLoader: Loader = ArrowLoader;\n"],"file":"arrow-loader.js"}
|
package/dist/esm/arrow-writer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { encodeArrowSync } from './lib/encode-arrow';
|
|
2
|
-
const VERSION = typeof "3.1.0-
|
|
2
|
+
const VERSION = typeof "3.1.0-beta.4" !== 'undefined' ? "3.1.0-beta.4" : 'latest';
|
|
3
3
|
export const ArrowWriter = {
|
|
4
4
|
name: 'Apache Arrow',
|
|
5
5
|
id: 'arrow',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/arrow-writer.ts"],"names":["encodeArrowSync","VERSION","ArrowWriter","name","id","module","version","extensions","mimeTypes","encodeSync","binary","options","data"],"mappings":"AAEA,SAAQA,eAAR,QAA8B,oBAA9B;AAIA,MAAMC,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../src/arrow-writer.ts"],"names":["encodeArrowSync","VERSION","ArrowWriter","name","id","module","version","extensions","mimeTypes","encodeSync","binary","options","data"],"mappings":"AAEA,SAAQA,eAAR,QAA8B,oBAA9B;AAIA,MAAMC,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;AAKA,OAAO,MAAMC,WAAW,GAAG;AACzBC,EAAAA,IAAI,EAAE,cADmB;AAEzBC,EAAAA,EAAE,EAAE,OAFqB;AAGzBC,EAAAA,MAAM,EAAE,OAHiB;AAIzBC,EAAAA,OAAO,EAAEL,OAJgB;AAKzBM,EAAAA,UAAU,EAAE,CAAC,OAAD,EAAU,SAAV,CALa;AAMzBC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANc;AAOzBC,EAAAA,UAPyB;AAQzBC,EAAAA,MAAM,EAAE,IARiB;AASzBC,EAAAA,OAAO,EAAE;AATgB,CAApB;;AAYP,SAASF,UAAT,CAAoBG,IAApB,EAA0BD,OAA1B,EAAwD;AACtD,SAAOX,eAAe,CAACY,IAAD,CAAtB;AACD","sourcesContent":["// import type {Writer} from '@loaders.gl/loader-utils';\nimport type {WriterOptions} from '@loaders.gl/loader-utils';\nimport {encodeArrowSync} from './lib/encode-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\ntype ArrowWriterOptions = WriterOptions;\n\n/** Apache Arrow writer */\nexport const ArrowWriter = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n extensions: ['arrow', 'feather'],\n mimeTypes: ['application/octet-stream'],\n encodeSync,\n binary: true,\n options: {}\n};\n\nfunction encodeSync(data, options?: ArrowWriterOptions) {\n return encodeArrowSync(data);\n}\n"],"file":"arrow-writer.js"}
|
package/dist/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAC,WAAW,IAAI,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAWhE,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AAIrC,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAI3C,YAAY,EAAC,kBAAkB,EAAC,CAAC;AACjC,OAAO,EAAC,iBAAiB,EAAC,CAAC;AAE3B,2BAA2B;AAC3B,eAAO,MAAM,WAAW,EAAE,gBAMzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAA8B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports._typecheckArrowLoader = exports.ArrowLoader = exports.ArrowWorkerLoader = exports.ArrowWriter = exports.VECTOR_TYPES = void 0;
|
|
7
|
+
const arrow_loader_1 = require("./arrow-loader");
|
|
8
|
+
Object.defineProperty(exports, "ArrowWorkerLoader", { enumerable: true, get: function () { return arrow_loader_1.ArrowLoader; } });
|
|
9
|
+
const parse_arrow_sync_1 = __importDefault(require("./lib/parse-arrow-sync"));
|
|
10
|
+
const parse_arrow_in_batches_1 = require("./lib/parse-arrow-in-batches");
|
|
11
|
+
const schema_1 = require("@loaders.gl/schema");
|
|
12
|
+
const arrow_table_batch_1 = __importDefault(require("./lib/arrow-table-batch"));
|
|
13
|
+
// Make the ArrowBatch type available
|
|
14
|
+
schema_1.TableBatchBuilder.ArrowBatch = arrow_table_batch_1.default;
|
|
15
|
+
// Types
|
|
16
|
+
var types_1 = require("./types");
|
|
17
|
+
Object.defineProperty(exports, "VECTOR_TYPES", { enumerable: true, get: function () { return types_1.VECTOR_TYPES; } });
|
|
18
|
+
// Arrow writer
|
|
19
|
+
var arrow_writer_1 = require("./arrow-writer");
|
|
20
|
+
Object.defineProperty(exports, "ArrowWriter", { enumerable: true, get: function () { return arrow_writer_1.ArrowWriter; } });
|
|
21
|
+
/** ArrowJS table loader */
|
|
22
|
+
exports.ArrowLoader = {
|
|
23
|
+
...arrow_loader_1.ArrowLoader,
|
|
24
|
+
parse: async (arraybuffer, options) => (0, parse_arrow_sync_1.default)(arraybuffer, options),
|
|
25
|
+
parseSync: parse_arrow_sync_1.default,
|
|
26
|
+
parseInBatches: parse_arrow_in_batches_1.parseArrowInBatches
|
|
27
|
+
};
|
|
28
|
+
exports._typecheckArrowLoader = exports.ArrowLoader;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow-table-batch.d.ts","sourceRoot":"","sources":["../../src/lib/arrow-table-batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAC,MAAM,EAA6C,MAAM,cAAc,CAAC;AAChF,OAAO,EAAC,4BAA4B,EAAC,MAAM,oBAAoB,CAAC;AAEhE,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,4BAA4B;IACjF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEf,MAAM,KAAA,EAAE,OAAO,KAAA;IAK3B,QAAQ,IAAI,eAAe,GAAG,IAAI;CAoBnC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const apache_arrow_1 = require("apache-arrow");
|
|
4
|
+
const schema_1 = require("@loaders.gl/schema");
|
|
5
|
+
class ArrowTableBatchAggregator extends schema_1.ColumnarTableBatchAggregator {
|
|
6
|
+
constructor(schema, options) {
|
|
7
|
+
super(schema, options);
|
|
8
|
+
this.arrowSchema = null;
|
|
9
|
+
}
|
|
10
|
+
getBatch() {
|
|
11
|
+
const batch = super.getBatch();
|
|
12
|
+
if (batch) {
|
|
13
|
+
// Get the arrow schema
|
|
14
|
+
this.arrowSchema = this.arrowSchema || getArrowSchema(batch.schema);
|
|
15
|
+
// Get arrow format vectors
|
|
16
|
+
const arrowVectors = getArrowVectors(this.arrowSchema, batch.data);
|
|
17
|
+
// Create the record batch
|
|
18
|
+
// new RecordBatch(schema, numRows, vectors, ...);
|
|
19
|
+
const recordBatch = new apache_arrow_1.RecordBatch(this.arrowSchema, batch.length, arrowVectors);
|
|
20
|
+
return {
|
|
21
|
+
shape: 'arrow-table',
|
|
22
|
+
batchType: 'data',
|
|
23
|
+
data: recordBatch,
|
|
24
|
+
length: batch.length
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.default = ArrowTableBatchAggregator;
|
|
31
|
+
// Convert from a simple loaders.gl schema to an Arrow schema
|
|
32
|
+
function getArrowSchema(schema) {
|
|
33
|
+
const arrowFields = [];
|
|
34
|
+
for (const key in schema) {
|
|
35
|
+
const field = schema[key];
|
|
36
|
+
if (field.type === Float32Array) {
|
|
37
|
+
const metadata = field; // just store the original field as metadata
|
|
38
|
+
// arrow: new Field(name, nullable, metadata)
|
|
39
|
+
const arrowField = new apache_arrow_1.Field(field.name, new apache_arrow_1.Float32(), field.nullable, metadata);
|
|
40
|
+
arrowFields.push(arrowField);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (arrowFields.length === 0) {
|
|
44
|
+
throw new Error('No arrow convertible fields');
|
|
45
|
+
}
|
|
46
|
+
return new apache_arrow_1.Schema(arrowFields);
|
|
47
|
+
}
|
|
48
|
+
// Convert from simple loaders.gl arrays to arrow vectors
|
|
49
|
+
function getArrowVectors(arrowSchema, data) {
|
|
50
|
+
const arrowVectors = [];
|
|
51
|
+
for (const field of arrowSchema.fields) {
|
|
52
|
+
const vector = data[field.name];
|
|
53
|
+
if (vector instanceof Float32Array) {
|
|
54
|
+
const arrowVector = apache_arrow_1.Float32Vector.from(vector);
|
|
55
|
+
arrowVectors.push(arrowVector);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (arrowSchema.fields.length !== arrowVectors.length) {
|
|
59
|
+
throw new Error('Some columns not arrow convertible');
|
|
60
|
+
}
|
|
61
|
+
return arrowVectors;
|
|
62
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode-arrow.d.ts","sourceRoot":"","sources":["../../src/lib/encode-arrow.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAe,MAAM,UAAU,CAAC;AAEpD,aAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,EAAE,CAAC;AAEJ;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,WAAW,CAWhE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.encodeArrowSync = void 0;
|
|
4
|
+
const apache_arrow_1 = require("apache-arrow");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
/**
|
|
7
|
+
* Encodes set of arrays into the Apache Arrow columnar format
|
|
8
|
+
* https://arrow.apache.org/docs/format/Columnar.html#ipc-file-format
|
|
9
|
+
* @param data - columns data
|
|
10
|
+
* @param options - the writer options
|
|
11
|
+
* @returns - encoded ArrayBuffer
|
|
12
|
+
*/
|
|
13
|
+
function encodeArrowSync(data) {
|
|
14
|
+
const vectors = [];
|
|
15
|
+
const arrayNames = [];
|
|
16
|
+
for (const arrayData of data) {
|
|
17
|
+
arrayNames.push(arrayData.name);
|
|
18
|
+
const arrayVector = createVector(arrayData.array, arrayData.type);
|
|
19
|
+
vectors.push(arrayVector);
|
|
20
|
+
}
|
|
21
|
+
const table = apache_arrow_1.Table.new(vectors, arrayNames);
|
|
22
|
+
const arrowBuffer = table.serialize();
|
|
23
|
+
return arrowBuffer;
|
|
24
|
+
}
|
|
25
|
+
exports.encodeArrowSync = encodeArrowSync;
|
|
26
|
+
/**
|
|
27
|
+
* Create Arrow Vector from given data and vector type
|
|
28
|
+
* @param array {import('../types').AnyArrayType} - columns data
|
|
29
|
+
* @param type {number} - the writer options
|
|
30
|
+
* @return a vector of one of vector's types defined in the Apache Arrow library
|
|
31
|
+
*/
|
|
32
|
+
function createVector(array, type) {
|
|
33
|
+
switch (type) {
|
|
34
|
+
case types_1.VECTOR_TYPES.DATE:
|
|
35
|
+
return apache_arrow_1.DateVector.from(array);
|
|
36
|
+
case types_1.VECTOR_TYPES.FLOAT:
|
|
37
|
+
default:
|
|
38
|
+
return apache_arrow_1.FloatVector.from(array);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-arrow-in-batches.d.ts","sourceRoot":"","sources":["../../src/lib/parse-arrow-in-batches.ts"],"names":[],"mappings":"AAIA;GACG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,GAAG,CAAC,CA6BpB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseArrowInBatches = void 0;
|
|
4
|
+
// TODO - this import defeats the sophisticated typescript checking in ArrowJS
|
|
5
|
+
const apache_arrow_1 = require("apache-arrow");
|
|
6
|
+
// import {isIterable} from '@loaders.gl/core';
|
|
7
|
+
/**
|
|
8
|
+
*/
|
|
9
|
+
function parseArrowInBatches(asyncIterator) {
|
|
10
|
+
// Creates the appropriate RecordBatchReader subclasses from the input
|
|
11
|
+
// This will also close the underlying source in case of early termination or errors
|
|
12
|
+
// As an optimization, return a non-async iterator
|
|
13
|
+
/*
|
|
14
|
+
if (isIterable(readers)) {
|
|
15
|
+
function* makeArrowIterator() {
|
|
16
|
+
for (const reader of readers) {
|
|
17
|
+
for (const batch of reader) {
|
|
18
|
+
yield processBatch(batch, reader);
|
|
19
|
+
}
|
|
20
|
+
break; // only processing one stream of batches
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const arrowIterator = makeArrowIterator();
|
|
24
|
+
}
|
|
25
|
+
*/
|
|
26
|
+
async function* makeArrowAsyncIterator() {
|
|
27
|
+
const readers = apache_arrow_1.RecordBatchReader.readAll(asyncIterator);
|
|
28
|
+
for await (const reader of readers) {
|
|
29
|
+
for await (const batch of reader) {
|
|
30
|
+
yield processBatch(batch);
|
|
31
|
+
}
|
|
32
|
+
break; // only processing one stream of batches
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return makeArrowAsyncIterator();
|
|
36
|
+
}
|
|
37
|
+
exports.parseArrowInBatches = parseArrowInBatches;
|
|
38
|
+
function processBatch(batch) {
|
|
39
|
+
const values = {
|
|
40
|
+
metadata: batch.schema.metadata,
|
|
41
|
+
length: batch.length
|
|
42
|
+
};
|
|
43
|
+
batch.schema.fields.forEach(({ name }, index) => {
|
|
44
|
+
values[name] = batch.getChildAt(index).toArray();
|
|
45
|
+
});
|
|
46
|
+
return values;
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-arrow-sync.d.ts","sourceRoot":"","sources":["../../src/lib/parse-arrow-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAIxD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,WAAW,KAAA,EAAE,OAAO,CAAC,EAAE,kBAAkB,MAyB/E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const apache_arrow_1 = require("apache-arrow");
|
|
4
|
+
// Parses arrow to a columnar table
|
|
5
|
+
function parseArrowSync(arrayBuffer, options) {
|
|
6
|
+
const arrowTable = apache_arrow_1.Table.from([new Uint8Array(arrayBuffer)]);
|
|
7
|
+
// Extract columns
|
|
8
|
+
// TODO - avoid calling `getColumn` on columns we are not interested in?
|
|
9
|
+
// Add options object?
|
|
10
|
+
const columnarTable = {};
|
|
11
|
+
arrowTable.schema.fields.forEach((field) => {
|
|
12
|
+
// This (is intended to) coalesce all record batches into a single typed array
|
|
13
|
+
const arrowColumn = arrowTable.getColumn(field.name);
|
|
14
|
+
const values = arrowColumn.toArray();
|
|
15
|
+
columnarTable[field.name] = values;
|
|
16
|
+
});
|
|
17
|
+
switch (options?.arrow?.shape) {
|
|
18
|
+
case 'arrow-table':
|
|
19
|
+
return arrowTable;
|
|
20
|
+
case 'object-row-table':
|
|
21
|
+
return convertColumnarToRowFormatTable(columnarTable);
|
|
22
|
+
case 'columnar-table':
|
|
23
|
+
default:
|
|
24
|
+
return columnarTable;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.default = parseArrowSync;
|
|
28
|
+
function convertColumnarToRowFormatTable(columnarTable) {
|
|
29
|
+
const tableKeys = Object.keys(columnarTable);
|
|
30
|
+
const tableRowsCount = columnarTable[tableKeys[0]].length;
|
|
31
|
+
const rowFormatTable = [];
|
|
32
|
+
for (let index = 0; index < tableRowsCount; index++) {
|
|
33
|
+
const tableItem = {};
|
|
34
|
+
for (let keyIndex = 0; keyIndex < tableKeys.length; keyIndex++) {
|
|
35
|
+
const fieldName = tableKeys[keyIndex];
|
|
36
|
+
tableItem[fieldName] = columnarTable[fieldName][index];
|
|
37
|
+
}
|
|
38
|
+
rowFormatTable.push(tableItem);
|
|
39
|
+
}
|
|
40
|
+
return rowFormatTable;
|
|
41
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,aAAK,aAAa,GACd,SAAS,GACT,UAAU,GACV,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,CAAC;AAEhB,aAAK,eAAe,GAAG,YAAY,GAAG,YAAY,CAAC;AAEnD,aAAK,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;AAElD,oBAAY,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAEnD,oBAAY,YAAY;IACtB,KAAK,IAAA;IACL,IAAI,IAAA;CACL"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VECTOR_TYPES = void 0;
|
|
4
|
+
var VECTOR_TYPES;
|
|
5
|
+
(function (VECTOR_TYPES) {
|
|
6
|
+
VECTOR_TYPES[VECTOR_TYPES["FLOAT"] = 0] = "FLOAT";
|
|
7
|
+
VECTOR_TYPES[VECTOR_TYPES["DATE"] = 1] = "DATE";
|
|
8
|
+
})(VECTOR_TYPES = exports.VECTOR_TYPES || (exports.VECTOR_TYPES = {}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow-worker.d.ts","sourceRoot":"","sources":["../../src/workers/arrow-worker.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/arrow",
|
|
3
|
-
"version": "3.1.0-
|
|
3
|
+
"version": "3.1.0-beta.4",
|
|
4
4
|
"description": "Simple columnar table loader for the Apache Arrow format",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -32,17 +32,16 @@
|
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"pre-build": "npm run build-worker && npm run build-bundle",
|
|
35
|
-
"
|
|
36
|
-
"build-
|
|
37
|
-
"build-worker": "webpack --entry ./src/workers/arrow-worker.ts --output ./dist/arrow-worker.js --config ../../scripts/webpack/worker.js"
|
|
35
|
+
"build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/bundle.js",
|
|
36
|
+
"build-worker": "esbuild src/workers/arrow-worker.ts --bundle --outfile=dist/arrow-worker.js"
|
|
38
37
|
},
|
|
39
38
|
"dependencies": {
|
|
40
|
-
"@loaders.gl/loader-utils": "3.1.0-
|
|
41
|
-
"@loaders.gl/schema": "3.1.0-
|
|
39
|
+
"@loaders.gl/loader-utils": "3.1.0-beta.4",
|
|
40
|
+
"@loaders.gl/schema": "3.1.0-beta.4",
|
|
42
41
|
"apache-arrow": "^4.0.0"
|
|
43
42
|
},
|
|
44
43
|
"peerDependencies": {
|
|
45
|
-
"@loaders.gl/core": "
|
|
44
|
+
"@loaders.gl/core": "3.1.0-beta.1"
|
|
46
45
|
},
|
|
47
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "5c7c74215416b30fcea98f5cecc820c8a21023b3"
|
|
48
47
|
}
|