@loaders.gl/arrow 4.0.0-beta.1 → 4.0.0-beta.3
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/{esm/arrow-loader.js → arrow-loader.js} +1 -1
- package/dist/arrow-loader.js.map +1 -0
- package/dist/arrow-worker.js +896 -82
- package/dist/{esm/arrow-writer.js → arrow-writer.js} +2 -2
- package/dist/arrow-writer.js.map +1 -0
- package/dist/dist.dev.js +12484 -0
- package/dist/index.cjs +262 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/{esm/lib → lib}/arrow-table-batch.js +1 -2
- package/dist/lib/arrow-table-batch.js.map +1 -0
- package/dist/lib/arrow-table.js.map +1 -0
- package/dist/lib/convert-table.js.map +1 -0
- package/dist/{esm/lib → lib}/encode-arrow.js +1 -1
- package/dist/lib/encode-arrow.js.map +1 -0
- package/dist/lib/parse-arrow-in-batches.js.map +1 -0
- package/dist/{esm/lib → lib}/parse-arrow-sync.js +1 -1
- package/dist/lib/parse-arrow-sync.js.map +1 -0
- package/dist/schema/arrow-type-utils.d.ts +4 -0
- package/dist/schema/arrow-type-utils.d.ts.map +1 -0
- package/dist/schema/arrow-type-utils.js +24 -0
- package/dist/schema/arrow-type-utils.js.map +1 -0
- package/dist/schema/convert-schema-arrow.d.ts +13 -0
- package/dist/schema/convert-schema-arrow.d.ts.map +1 -0
- package/dist/schema/convert-schema-arrow.js +158 -0
- package/dist/schema/convert-schema-arrow.js.map +1 -0
- package/dist/schema/convert-table-to-arrow.d.ts +42 -0
- package/dist/schema/convert-table-to-arrow.d.ts.map +1 -0
- package/dist/schema/convert-table-to-arrow.js +2 -0
- package/dist/schema/convert-table-to-arrow.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -0
- package/dist/{esm/workers → workers}/arrow-worker.js +1 -1
- package/dist/workers/arrow-worker.js.map +1 -0
- package/package.json +16 -9
- package/src/index.ts +4 -0
- package/src/schema/arrow-type-utils.ts +71 -0
- package/src/schema/convert-schema-arrow.ts +232 -0
- package/src/schema/convert-table-to-arrow.ts +59 -0
- package/src/types.ts +1 -9
- package/dist/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/dist.min.js +0 -12691
- package/dist/es5/arrow-loader.js +0 -25
- package/dist/es5/arrow-loader.js.map +0 -1
- package/dist/es5/arrow-writer.js +0 -23
- package/dist/es5/arrow-writer.js.map +0 -1
- package/dist/es5/bundle.js +0 -6
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/index.js +0 -61
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/lib/arrow-table-batch.js +0 -99
- package/dist/es5/lib/arrow-table-batch.js.map +0 -1
- package/dist/es5/lib/arrow-table.js +0 -2
- package/dist/es5/lib/arrow-table.js.map +0 -1
- package/dist/es5/lib/convert-table.js +0 -57
- package/dist/es5/lib/convert-table.js.map +0 -1
- package/dist/es5/lib/encode-arrow.js +0 -40
- package/dist/es5/lib/encode-arrow.js.map +0 -1
- package/dist/es5/lib/parse-arrow-in-batches.js +0 -135
- package/dist/es5/lib/parse-arrow-in-batches.js.map +0 -1
- package/dist/es5/lib/parse-arrow-sync.js +0 -27
- package/dist/es5/lib/parse-arrow-sync.js.map +0 -1
- package/dist/es5/types.js +0 -13
- package/dist/es5/types.js.map +0 -1
- package/dist/es5/workers/arrow-worker.js +0 -6
- package/dist/es5/workers/arrow-worker.js.map +0 -1
- package/dist/esm/arrow-loader.js.map +0 -1
- package/dist/esm/arrow-writer.js.map +0 -1
- package/dist/esm/bundle.js +0 -4
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/index.js +0 -16
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/lib/arrow-table-batch.js.map +0 -1
- package/dist/esm/lib/arrow-table.js.map +0 -1
- package/dist/esm/lib/convert-table.js.map +0 -1
- package/dist/esm/lib/encode-arrow.js.map +0 -1
- package/dist/esm/lib/parse-arrow-in-batches.js.map +0 -1
- package/dist/esm/lib/parse-arrow-sync.js.map +0 -1
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/workers/arrow-worker.js.map +0 -1
- package/src/bundle.ts +0 -4
- /package/dist/{esm/lib → lib}/arrow-table.js +0 -0
- /package/dist/{esm/lib → lib}/convert-table.js +0 -0
- /package/dist/{esm/lib → lib}/parse-arrow-in-batches.js +0 -0
- /package/dist/{esm/types.js → types.js} +0 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var src_exports = {};
|
|
22
|
+
__export(src_exports, {
|
|
23
|
+
ArrowLoader: () => ArrowLoader2,
|
|
24
|
+
ArrowWorkerLoader: () => ArrowLoader,
|
|
25
|
+
ArrowWriter: () => ArrowWriter,
|
|
26
|
+
VECTOR_TYPES: () => VECTOR_TYPES,
|
|
27
|
+
getArrowType: () => getArrowType
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(src_exports);
|
|
30
|
+
var import_schema3 = require("@loaders.gl/schema");
|
|
31
|
+
|
|
32
|
+
// src/arrow-loader.ts
|
|
33
|
+
var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
34
|
+
var ArrowLoader = {
|
|
35
|
+
name: "Apache Arrow",
|
|
36
|
+
id: "arrow",
|
|
37
|
+
module: "arrow",
|
|
38
|
+
version: VERSION,
|
|
39
|
+
// worker: true,
|
|
40
|
+
category: "table",
|
|
41
|
+
extensions: ["arrow", "feather"],
|
|
42
|
+
mimeTypes: [
|
|
43
|
+
"application/vnd.apache.arrow.file",
|
|
44
|
+
"application/vnd.apache.arrow.stream",
|
|
45
|
+
"application/octet-stream"
|
|
46
|
+
],
|
|
47
|
+
binary: true,
|
|
48
|
+
tests: ["ARROW"],
|
|
49
|
+
options: {
|
|
50
|
+
arrow: {
|
|
51
|
+
shape: "columnar-table"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// src/lib/parse-arrow-sync.ts
|
|
57
|
+
var import_schema = require("@loaders.gl/schema");
|
|
58
|
+
var import_apache_arrow = require("apache-arrow");
|
|
59
|
+
|
|
60
|
+
// src/lib/convert-table.ts
|
|
61
|
+
function convertApacheArrowToArrowTable(arrowTable) {
|
|
62
|
+
return {
|
|
63
|
+
shape: "arrow-table",
|
|
64
|
+
data: arrowTable
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function convertArrowToColumnarTable(table) {
|
|
68
|
+
const arrowTable = table.data;
|
|
69
|
+
const columnarTable = {};
|
|
70
|
+
for (const field of arrowTable.schema.fields) {
|
|
71
|
+
const arrowColumn = arrowTable.getChild(field.name);
|
|
72
|
+
const values = arrowColumn == null ? void 0 : arrowColumn.toArray();
|
|
73
|
+
columnarTable[field.name] = values;
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
shape: "columnar-table",
|
|
77
|
+
data: columnarTable
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// src/lib/parse-arrow-sync.ts
|
|
82
|
+
function parseArrowSync(arrayBuffer, options) {
|
|
83
|
+
var _a;
|
|
84
|
+
const apacheArrowTable = (0, import_apache_arrow.tableFromIPC)([new Uint8Array(arrayBuffer)]);
|
|
85
|
+
const arrowTable = convertApacheArrowToArrowTable(apacheArrowTable);
|
|
86
|
+
const shape = ((_a = options == null ? void 0 : options.arrow) == null ? void 0 : _a.shape) || "arrow-table";
|
|
87
|
+
switch (shape) {
|
|
88
|
+
case "arrow-table":
|
|
89
|
+
return arrowTable;
|
|
90
|
+
case "columnar-table":
|
|
91
|
+
return convertArrowToColumnarTable(arrowTable);
|
|
92
|
+
case "object-row-table":
|
|
93
|
+
const columnarTable = convertArrowToColumnarTable(arrowTable);
|
|
94
|
+
return (0, import_schema.convertTable)(columnarTable, "object-row-table");
|
|
95
|
+
default:
|
|
96
|
+
throw new Error(shape);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// src/lib/parse-arrow-in-batches.ts
|
|
101
|
+
var import_apache_arrow2 = require("apache-arrow");
|
|
102
|
+
function parseArrowInBatches(asyncIterator) {
|
|
103
|
+
async function* makeArrowAsyncIterator() {
|
|
104
|
+
const readers = import_apache_arrow2.RecordBatchReader.readAll(asyncIterator);
|
|
105
|
+
for await (const reader of readers) {
|
|
106
|
+
for await (const recordBatch of reader) {
|
|
107
|
+
const arrowTabledBatch = {
|
|
108
|
+
shape: "arrow-table",
|
|
109
|
+
batchType: "data",
|
|
110
|
+
data: new import_apache_arrow2.Table([recordBatch]),
|
|
111
|
+
length: recordBatch.data.length
|
|
112
|
+
};
|
|
113
|
+
yield arrowTabledBatch;
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return makeArrowAsyncIterator();
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// src/lib/arrow-table-batch.ts
|
|
122
|
+
var import_schema2 = require("@loaders.gl/schema");
|
|
123
|
+
var import_apache_arrow3 = require("apache-arrow");
|
|
124
|
+
var ArrowTableBatchAggregator = class extends import_schema2.ColumnarTableBatchAggregator {
|
|
125
|
+
constructor(schema, options) {
|
|
126
|
+
super(schema, options);
|
|
127
|
+
this.arrowSchema = null;
|
|
128
|
+
}
|
|
129
|
+
getBatch() {
|
|
130
|
+
const batch = super.getBatch();
|
|
131
|
+
if (batch) {
|
|
132
|
+
this.arrowSchema = this.arrowSchema || getArrowSchema(batch.schema);
|
|
133
|
+
const arrowVectors = getArrowVectors(this.arrowSchema, batch.data);
|
|
134
|
+
const recordBatch = new import_apache_arrow3.RecordBatch(
|
|
135
|
+
this.arrowSchema,
|
|
136
|
+
(0, import_apache_arrow3.makeData)({
|
|
137
|
+
type: new import_apache_arrow3.Struct(this.arrowSchema.fields),
|
|
138
|
+
children: arrowVectors.map(({ data }) => data[0])
|
|
139
|
+
})
|
|
140
|
+
);
|
|
141
|
+
return {
|
|
142
|
+
shape: "arrow-table",
|
|
143
|
+
batchType: "data",
|
|
144
|
+
data: new import_apache_arrow3.Table([recordBatch]),
|
|
145
|
+
length: batch.length
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
function getArrowSchema(schema) {
|
|
152
|
+
const arrowFields = [];
|
|
153
|
+
for (const key in schema) {
|
|
154
|
+
const field = schema[key];
|
|
155
|
+
if (field.type === Float32Array) {
|
|
156
|
+
const metadata = /* @__PURE__ */ new Map();
|
|
157
|
+
const arrowField = new import_apache_arrow3.Field(field.name, new import_apache_arrow3.Float32(), field.nullable, metadata);
|
|
158
|
+
arrowFields.push(arrowField);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (arrowFields.length === 0) {
|
|
162
|
+
throw new Error("No arrow convertible fields");
|
|
163
|
+
}
|
|
164
|
+
return new import_apache_arrow3.Schema(arrowFields);
|
|
165
|
+
}
|
|
166
|
+
function getArrowVectors(arrowSchema, data) {
|
|
167
|
+
const arrowVectors = [];
|
|
168
|
+
for (const field of arrowSchema.fields) {
|
|
169
|
+
const vector = data[field.name];
|
|
170
|
+
if (vector instanceof Float32Array) {
|
|
171
|
+
const arrowVector = (0, import_apache_arrow3.makeVector)(vector);
|
|
172
|
+
arrowVectors.push(arrowVector);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (arrowSchema.fields.length !== arrowVectors.length) {
|
|
176
|
+
throw new Error("Some columns not arrow convertible");
|
|
177
|
+
}
|
|
178
|
+
return arrowVectors;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// src/schema/arrow-type-utils.ts
|
|
182
|
+
var import_apache_arrow4 = require("apache-arrow");
|
|
183
|
+
function getArrowType(array) {
|
|
184
|
+
switch (array.constructor) {
|
|
185
|
+
case Int8Array:
|
|
186
|
+
return new import_apache_arrow4.Int8();
|
|
187
|
+
case Uint8Array:
|
|
188
|
+
return new import_apache_arrow4.Uint8();
|
|
189
|
+
case Int16Array:
|
|
190
|
+
return new import_apache_arrow4.Int16();
|
|
191
|
+
case Uint16Array:
|
|
192
|
+
return new import_apache_arrow4.Uint16();
|
|
193
|
+
case Int32Array:
|
|
194
|
+
return new import_apache_arrow4.Int32();
|
|
195
|
+
case Uint32Array:
|
|
196
|
+
return new import_apache_arrow4.Uint32();
|
|
197
|
+
case Float32Array:
|
|
198
|
+
return new import_apache_arrow4.Float32();
|
|
199
|
+
case Float64Array:
|
|
200
|
+
return new import_apache_arrow4.Float64();
|
|
201
|
+
default:
|
|
202
|
+
throw new Error("array type not supported");
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// src/types.ts
|
|
207
|
+
var VECTOR_TYPES = /* @__PURE__ */ ((VECTOR_TYPES2) => {
|
|
208
|
+
VECTOR_TYPES2[VECTOR_TYPES2["FLOAT"] = 0] = "FLOAT";
|
|
209
|
+
VECTOR_TYPES2[VECTOR_TYPES2["DATE"] = 1] = "DATE";
|
|
210
|
+
return VECTOR_TYPES2;
|
|
211
|
+
})(VECTOR_TYPES || {});
|
|
212
|
+
|
|
213
|
+
// src/lib/encode-arrow.ts
|
|
214
|
+
var import_apache_arrow5 = require("apache-arrow");
|
|
215
|
+
function encodeArrowSync(data) {
|
|
216
|
+
const vectors = {};
|
|
217
|
+
for (const arrayData of data) {
|
|
218
|
+
const arrayVector = createVector(arrayData.array, arrayData.type);
|
|
219
|
+
vectors[arrayData.name] = arrayVector;
|
|
220
|
+
}
|
|
221
|
+
const table = new import_apache_arrow5.Table(vectors);
|
|
222
|
+
const arrowBuffer = (0, import_apache_arrow5.tableToIPC)(table);
|
|
223
|
+
return arrowBuffer;
|
|
224
|
+
}
|
|
225
|
+
function createVector(array, type) {
|
|
226
|
+
switch (type) {
|
|
227
|
+
case 1 /* DATE */:
|
|
228
|
+
return (0, import_apache_arrow5.vectorFromArray)(array);
|
|
229
|
+
case 0 /* FLOAT */:
|
|
230
|
+
default:
|
|
231
|
+
return (0, import_apache_arrow5.vectorFromArray)(array);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// src/arrow-writer.ts
|
|
236
|
+
var VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
237
|
+
var ArrowWriter = {
|
|
238
|
+
name: "Apache Arrow",
|
|
239
|
+
id: "arrow",
|
|
240
|
+
module: "arrow",
|
|
241
|
+
version: VERSION2,
|
|
242
|
+
extensions: ["arrow", "feather"],
|
|
243
|
+
mimeTypes: [
|
|
244
|
+
"application/vnd.apache.arrow.file",
|
|
245
|
+
"application/vnd.apache.arrow.stream",
|
|
246
|
+
"application/octet-stream"
|
|
247
|
+
],
|
|
248
|
+
encodeSync(data, options) {
|
|
249
|
+
return encodeArrowSync(data);
|
|
250
|
+
},
|
|
251
|
+
binary: true,
|
|
252
|
+
options: {}
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
// src/index.ts
|
|
256
|
+
import_schema3.TableBatchBuilder.ArrowBatch = ArrowTableBatchAggregator;
|
|
257
|
+
var ArrowLoader2 = {
|
|
258
|
+
...ArrowLoader,
|
|
259
|
+
parse: async (arraybuffer, options) => parseArrowSync(arraybuffer, options),
|
|
260
|
+
parseSync: parseArrowSync,
|
|
261
|
+
parseInBatches: parseArrowInBatches
|
|
262
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { ArrowLoaderOptions } from './arrow-loader';
|
|
|
3
3
|
import type { ArrowTableBatch, ColumnarTable, ObjectRowTable } from '@loaders.gl/schema';
|
|
4
4
|
import type { ArrowTable } from './lib/arrow-table';
|
|
5
5
|
import { ArrowLoader as ArrowWorkerLoader } from './arrow-loader';
|
|
6
|
+
export { getArrowType } from './schema/arrow-type-utils';
|
|
6
7
|
export type { ArrowTable, ArrowTableBatch } from './lib/arrow-table';
|
|
7
8
|
export { VECTOR_TYPES } from './types';
|
|
8
9
|
export { ArrowWriter } from './arrow-writer';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAC,eAAe,EAAE,aAAa,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAC,WAAW,IAAI,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAC,eAAe,EAAE,aAAa,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAC,WAAW,IAAI,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAQhE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAMvD,YAAY,EAAC,UAAU,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACnE,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,gBAAgB,CACxC,UAAU,GAAG,aAAa,GAAG,cAAc,EAC3C,eAAe,EACf,kBAAkB,CAOnB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TableBatchBuilder } from '@loaders.gl/schema';
|
|
2
|
+
import { ArrowLoader as ArrowWorkerLoader } from "./arrow-loader.js";
|
|
3
|
+
import parseSync from "./lib/parse-arrow-sync.js";
|
|
4
|
+
import { parseArrowInBatches } from "./lib/parse-arrow-in-batches.js";
|
|
5
|
+
import { ArrowTableBatchAggregator } from "./lib/arrow-table-batch.js";
|
|
6
|
+
export { getArrowType } from "./schema/arrow-type-utils.js";
|
|
7
|
+
TableBatchBuilder.ArrowBatch = ArrowTableBatchAggregator;
|
|
8
|
+
export { VECTOR_TYPES } from "./types.js";
|
|
9
|
+
export { ArrowWriter } from "./arrow-writer.js";
|
|
10
|
+
export { ArrowWorkerLoader };
|
|
11
|
+
export const ArrowLoader = {
|
|
12
|
+
...ArrowWorkerLoader,
|
|
13
|
+
parse: async (arraybuffer, options) => parseSync(arraybuffer, options),
|
|
14
|
+
parseSync,
|
|
15
|
+
parseInBatches: parseArrowInBatches
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["TableBatchBuilder","ArrowLoader","ArrowWorkerLoader","parseSync","parseArrowInBatches","ArrowTableBatchAggregator","getArrowType","ArrowBatch","VECTOR_TYPES","ArrowWriter","parse","arraybuffer","options","parseInBatches"],"sources":["../src/index.ts"],"sourcesContent":["// loaders.gl, MIT\n\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {ArrowLoaderOptions} from './arrow-loader';\nimport type {ArrowTableBatch, ColumnarTable, ObjectRowTable} from '@loaders.gl/schema';\nimport type {ArrowTable} from './lib/arrow-table';\n\nimport {TableBatchBuilder} from '@loaders.gl/schema';\nimport {ArrowLoader as ArrowWorkerLoader} from './arrow-loader';\nimport parseSync from './lib/parse-arrow-sync';\nimport {parseArrowInBatches} from './lib/parse-arrow-in-batches';\n\nimport {ArrowTableBatchAggregator} from './lib/arrow-table-batch';\n\n// SCHEMA\n\nexport {getArrowType} from './schema/arrow-type-utils';\n\n// Make the ArrowBatch type available\nTableBatchBuilder.ArrowBatch = ArrowTableBatchAggregator;\n\n// Types\nexport type {ArrowTable, ArrowTableBatch} from './lib/arrow-table';\nexport {VECTOR_TYPES} from './types';\n\n// Arrow writer\n\nexport {ArrowWriter} from './arrow-writer';\n\n// Arrow loader\n\nexport type {ArrowLoaderOptions};\nexport {ArrowWorkerLoader};\n\n/** ArrowJS table loader */\nexport const ArrowLoader: LoaderWithParser<\n ArrowTable | ColumnarTable | ObjectRowTable,\n ArrowTableBatch,\n ArrowLoaderOptions\n> = {\n ...ArrowWorkerLoader,\n parse: async (arraybuffer: ArrayBuffer, options?: ArrowLoaderOptions) =>\n parseSync(arraybuffer, options),\n parseSync,\n parseInBatches: parseArrowInBatches\n};\n"],"mappings":"AAOA,SAAQA,iBAAiB,QAAO,oBAAoB;AAAC,SAC7CC,WAAW,IAAIC,iBAAiB;AAAA,OACjCC,SAAS;AAAA,SACRC,mBAAmB;AAAA,SAEnBC,yBAAyB;AAAA,SAIzBC,YAAY;AAGpBN,iBAAiB,CAACO,UAAU,GAAGF,yBAAyB;AAAC,SAIjDG,YAAY;AAAA,SAIZC,WAAW;AAKnB,SAAQP,iBAAiB;AAGzB,OAAO,MAAMD,WAIZ,GAAG;EACF,GAAGC,iBAAiB;EACpBQ,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEC,OAA4B,KAClET,SAAS,CAACQ,WAAW,EAAEC,OAAO,CAAC;EACjCT,SAAS;EACTU,cAAc,EAAET;AAClB,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
1
|
import { ColumnarTableBatchAggregator } from '@loaders.gl/schema';
|
|
3
2
|
import { Table as ApacheArrowTable, Schema, Field, RecordBatch, Struct, makeVector, makeData, Float32 } from 'apache-arrow';
|
|
4
3
|
export class ArrowTableBatchAggregator extends ColumnarTableBatchAggregator {
|
|
5
4
|
constructor(schema, options) {
|
|
6
5
|
super(schema, options);
|
|
7
|
-
|
|
6
|
+
this.arrowSchema = void 0;
|
|
8
7
|
this.arrowSchema = null;
|
|
9
8
|
}
|
|
10
9
|
getBatch() {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow-table-batch.js","names":["ColumnarTableBatchAggregator","Table","ApacheArrowTable","Schema","Field","RecordBatch","Struct","makeVector","makeData","Float32","ArrowTableBatchAggregator","constructor","schema","options","arrowSchema","getBatch","batch","getArrowSchema","arrowVectors","getArrowVectors","data","recordBatch","type","fields","children","map","_ref","shape","batchType","length","arrowFields","key","field","Float32Array","metadata","Map","arrowField","name","nullable","push","Error","vector","arrowVector"],"sources":["../../src/lib/arrow-table-batch.ts"],"sourcesContent":["import {ColumnarTableBatchAggregator} from '@loaders.gl/schema';\nimport type {ArrowTableBatch} from './arrow-table';\nimport {\n Table as ApacheArrowTable,\n Schema,\n Field,\n RecordBatch,\n Struct,\n makeVector,\n makeData,\n Vector,\n Float32\n} from 'apache-arrow';\n\nexport class ArrowTableBatchAggregator extends ColumnarTableBatchAggregator {\n arrowSchema: Schema | null;\n\n constructor(schema, options) {\n super(schema, options);\n this.arrowSchema = null;\n }\n\n getBatch(): ArrowTableBatch | null {\n const batch = super.getBatch();\n if (batch) {\n // Get the arrow schema\n this.arrowSchema = this.arrowSchema || getArrowSchema(batch.schema);\n\n // Get arrow format vectors\n const arrowVectors = getArrowVectors(this.arrowSchema, batch.data);\n\n // Create the record batch\n const recordBatch = new RecordBatch(\n this.arrowSchema,\n makeData({\n type: new Struct(this.arrowSchema.fields),\n children: arrowVectors.map(({data}) => data[0])\n })\n );\n\n return {\n shape: 'arrow-table',\n batchType: 'data',\n data: new ApacheArrowTable([recordBatch]),\n length: batch.length\n };\n }\n\n return null;\n }\n}\n\n// Convert from a simple loaders.gl schema to an Arrow schema\nfunction getArrowSchema(schema): Schema {\n const arrowFields: Field[] = [];\n for (const key in schema) {\n const field = schema[key];\n if (field.type === Float32Array) {\n // TODO - just store the original field as metadata?\n const metadata = new Map(); // field;\n // arrow: new Field(name, nullable, metadata)\n const arrowField = new Field(field.name, new Float32(), field.nullable, metadata);\n arrowFields.push(arrowField);\n }\n }\n if (arrowFields.length === 0) {\n throw new Error('No arrow convertible fields');\n }\n\n return new Schema(arrowFields);\n}\n\n// Convert from simple loaders.gl arrays to arrow vectors\nfunction getArrowVectors(arrowSchema, data): Vector[] {\n const arrowVectors: any[] = [];\n for (const field of arrowSchema.fields) {\n const vector = data[field.name];\n if (vector instanceof Float32Array) {\n const arrowVector = makeVector(vector);\n arrowVectors.push(arrowVector);\n }\n }\n if (arrowSchema.fields.length !== arrowVectors.length) {\n throw new Error('Some columns not arrow convertible');\n }\n return arrowVectors;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow-table.js","names":[],"sources":["../../src/lib/arrow-table.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Batch, Schema} from '@loaders.gl/schema';\nimport type {Table as ApacheArrowTable} from 'apache-arrow';\n\n/**\n * A table organized as an Apache Arrow table\n * @note This is a variant of the type from loaders.gl/schema\n */\nexport type ArrowTable = {\n shape: 'arrow-table';\n schema?: Schema;\n data: ApacheArrowTable;\n};\n\n/**\n * Batch for a table organized as an Apache Arrow table\n * @note This is a variant of the type from loaders.gl/schema\n */\nexport type ArrowTableBatch = Batch & {\n shape: 'arrow-table';\n schemaType?: 'explicit' | 'deduced';\n schema?: Schema;\n data: ApacheArrowTable; // ApacheRecordBatch;\n length: number;\n};\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-table.js","names":["convertApacheArrowToArrowTable","arrowTable","shape","data","convertArrowToColumnarTable","table","columnarTable","field","schema","fields","arrowColumn","getChild","name","values","toArray","convertColumnarToRowFormatTable","tableKeys","Object","keys","tableRowsCount","length","rowFormatTable","index","tableItem","keyIndex","fieldName","push"],"sources":["../../src/lib/convert-table.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport type {ColumnarTable, ObjectRowTable} from '@loaders.gl/schema';\nimport type {Table as ApacheArrowTable} from 'apache-arrow';\nimport type {ArrowTable} from './arrow-table';\n\n/**\n * Wrap an apache arrow table in a loaders.gl table wrapper.\n * From this additional conversions are available.\n * @param arrowTable\n * @returns\n */\nexport function convertApacheArrowToArrowTable(arrowTable: ApacheArrowTable): ArrowTable {\n return {\n shape: 'arrow-table',\n data: arrowTable\n };\n}\n\n/**\n * Convert an Apache Arrow table to a ColumnarTable\n * @note Currently does not convert schema\n */\nexport function convertArrowToColumnarTable(table: ArrowTable): ColumnarTable {\n // TODO - avoid calling `getColumn` on columns we are not interested in?\n // Add options object?\n\n const arrowTable = table.data;\n const columnarTable = {};\n\n for (const field of arrowTable.schema.fields) {\n // This (is intended to) coalesce all record batches into a single typed array\n const arrowColumn = arrowTable.getChild(field.name);\n const values = arrowColumn?.toArray();\n columnarTable[field.name] = values;\n }\n\n return {\n shape: 'columnar-table',\n data: columnarTable\n };\n}\n\n/**\n *\n * @note - should be part of schema module\n */\nexport function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable {\n const tableKeys = Object.keys(columnarTable);\n const tableRowsCount = columnarTable[tableKeys[0]].length;\n\n const rowFormatTable: {}[] = [];\n\n for (let index = 0; index < tableRowsCount; index++) {\n const tableItem = {};\n for (let keyIndex = 0; keyIndex < tableKeys.length; keyIndex++) {\n const fieldName = tableKeys[keyIndex];\n tableItem[fieldName] = columnarTable[fieldName][index];\n }\n rowFormatTable.push(tableItem);\n }\n\n return {\n shape: 'object-row-table',\n data: rowFormatTable\n };\n}\n"],"mappings":"AAWA,OAAO,SAASA,8BAA8BA,CAACC,UAA4B,EAAc;EACvF,OAAO;IACLC,KAAK,EAAE,aAAa;IACpBC,IAAI,EAAEF;EACR,CAAC;AACH;AAMA,OAAO,SAASG,2BAA2BA,CAACC,KAAiB,EAAiB;EAI5E,MAAMJ,UAAU,GAAGI,KAAK,CAACF,IAAI;EAC7B,MAAMG,aAAa,GAAG,CAAC,CAAC;EAExB,KAAK,MAAMC,KAAK,IAAIN,UAAU,CAACO,MAAM,CAACC,MAAM,EAAE;IAE5C,MAAMC,WAAW,GAAGT,UAAU,CAACU,QAAQ,CAACJ,KAAK,CAACK,IAAI,CAAC;IACnD,MAAMC,MAAM,GAAGH,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,OAAO,CAAC,CAAC;IACrCR,aAAa,CAACC,KAAK,CAACK,IAAI,CAAC,GAAGC,MAAM;EACpC;EAEA,OAAO;IACLX,KAAK,EAAE,gBAAgB;IACvBC,IAAI,EAAEG;EACR,CAAC;AACH;AAMA,OAAO,SAASS,+BAA+BA,CAACT,aAA4B,EAAkB;EAC5F,MAAMU,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACZ,aAAa,CAAC;EAC5C,MAAMa,cAAc,GAAGb,aAAa,CAACU,SAAS,CAAC,CAAC,CAAC,CAAC,CAACI,MAAM;EAEzD,MAAMC,cAAoB,GAAG,EAAE;EAE/B,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGH,cAAc,EAAEG,KAAK,EAAE,EAAE;IACnD,MAAMC,SAAS,GAAG,CAAC,CAAC;IACpB,KAAK,IAAIC,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAGR,SAAS,CAACI,MAAM,EAAEI,QAAQ,EAAE,EAAE;MAC9D,MAAMC,SAAS,GAAGT,SAAS,CAACQ,QAAQ,CAAC;MACrCD,SAAS,CAACE,SAAS,CAAC,GAAGnB,aAAa,CAACmB,SAAS,CAAC,CAACH,KAAK,CAAC;IACxD;IACAD,cAAc,CAACK,IAAI,CAACH,SAAS,CAAC;EAChC;EAEA,OAAO;IACLrB,KAAK,EAAE,kBAAkB;IACzBC,IAAI,EAAEkB;EACR,CAAC;AACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode-arrow.js","names":["Table","tableToIPC","vectorFromArray","VECTOR_TYPES","encodeArrowSync","data","vectors","arrayData","arrayVector","createVector","array","type","name","table","arrowBuffer","DATE","FLOAT"],"sources":["../../src/lib/encode-arrow.ts"],"sourcesContent":["import {Table, Vector, tableToIPC, vectorFromArray} from 'apache-arrow';\nimport {AnyArrayType, VECTOR_TYPES} from '../types';\n\nexport type ColumnarTable = {\n name: string;\n array: AnyArrayType;\n type: number;\n}[];\n\n/**\n * Encodes set of arrays into the Apache Arrow columnar format\n * https://arrow.apache.org/docs/format/Columnar.html#ipc-file-format\n * @param data - columns data\n * @param options - the writer options\n * @returns - encoded ArrayBuffer\n */\nexport function encodeArrowSync(data: ColumnarTable): ArrayBuffer {\n const vectors: Record<string, Vector> = {};\n for (const arrayData of data) {\n const arrayVector = createVector(arrayData.array, arrayData.type);\n vectors[arrayData.name] = arrayVector;\n }\n const table = new Table(vectors);\n const arrowBuffer = tableToIPC(table);\n return arrowBuffer;\n}\n\n/**\n * Create Arrow Vector from given data and vector type\n * @param array {import('../types').AnyArrayType} - columns data\n * @param type {number} - the writer options\n * @return a vector of one of vector's types defined in the Apache Arrow library\n */\nfunction createVector(array, type): Vector {\n switch (type) {\n case VECTOR_TYPES.DATE:\n return vectorFromArray(array);\n case VECTOR_TYPES.FLOAT:\n default:\n return vectorFromArray(array);\n }\n}\n"],"mappings":"AAAA,SAAQA,KAAK,EAAUC,UAAU,EAAEC,eAAe,QAAO,cAAc;AAAC,SAClDC,YAAY;AAelC,OAAO,SAASC,eAAeA,CAACC,IAAmB,EAAe;EAChE,MAAMC,OAA+B,GAAG,CAAC,CAAC;EAC1C,KAAK,MAAMC,SAAS,IAAIF,IAAI,EAAE;IAC5B,MAAMG,WAAW,GAAGC,YAAY,CAACF,SAAS,CAACG,KAAK,EAAEH,SAAS,CAACI,IAAI,CAAC;IACjEL,OAAO,CAACC,SAAS,CAACK,IAAI,CAAC,GAAGJ,WAAW;EACvC;EACA,MAAMK,KAAK,GAAG,IAAIb,KAAK,CAACM,OAAO,CAAC;EAChC,MAAMQ,WAAW,GAAGb,UAAU,CAACY,KAAK,CAAC;EACrC,OAAOC,WAAW;AACpB;AAQA,SAASL,YAAYA,CAACC,KAAK,EAAEC,IAAI,EAAU;EACzC,QAAQA,IAAI;IACV,KAAKR,YAAY,CAACY,IAAI;MACpB,OAAOb,eAAe,CAACQ,KAAK,CAAC;IAC/B,KAAKP,YAAY,CAACa,KAAK;IACvB;MACE,OAAOd,eAAe,CAACQ,KAAK,CAAC;EACjC;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-arrow-in-batches.js","names":["RecordBatchReader","Table","ApacheArrowTable","parseArrowInBatches","asyncIterator","makeArrowAsyncIterator","readers","readAll","reader","recordBatch","arrowTabledBatch","shape","batchType","data","length"],"sources":["../../src/lib/parse-arrow-in-batches.ts"],"sourcesContent":["// TODO - this import defeats the sophisticated typescript checking in ArrowJS\nimport type {ArrowTableBatch} from './arrow-table';\nimport {RecordBatchReader, Table as ApacheArrowTable} from 'apache-arrow';\n// import {isIterable} from '@loaders.gl/core';\n\n/**\n */\nexport function parseArrowInBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n): AsyncIterable<ArrowTableBatch> {\n // Creates the appropriate RecordBatchReader subclasses from the input\n // This will also close the underlying source in case of early termination or errors\n\n // As an optimization, return a non-async iterator\n /*\n if (isIterable(readers)) {\n function* makeArrowIterator() {\n for (const reader of readers) {\n for (const batch of reader) {\n yield processBatch(batch, reader);\n }\n break; // only processing one stream of batches\n }\n }\n const arrowIterator = makeArrowIterator();\n }\n */\n\n async function* makeArrowAsyncIterator(): AsyncIterator<ArrowTableBatch> {\n // @ts-ignore\n const readers = RecordBatchReader.readAll(asyncIterator);\n for await (const reader of readers) {\n for await (const recordBatch of reader) {\n const arrowTabledBatch: ArrowTableBatch = {\n shape: 'arrow-table',\n batchType: 'data',\n data: new ApacheArrowTable([recordBatch]),\n length: recordBatch.data.length\n };\n // processBatch(recordBatch);\n yield arrowTabledBatch;\n }\n break; // only processing one stream of batches\n }\n }\n\n return makeArrowAsyncIterator() as any; // as AsyncIterator<ArrowTableBatch>;\n}\n\n// function processBatch(batch: RecordBatch): ArrowTableBatch {\n// const values = {};\n// batch.schema.fields.forEach(({name}, index) => {\n// values[name] = batch.getChildAt(index)?.toArray();\n// });\n// return {\n// };\n// }\n"],"mappings":"AAEA,SAAQA,iBAAiB,EAAEC,KAAK,IAAIC,gBAAgB,QAAO,cAAc;AAKzE,OAAO,SAASC,mBAAmBA,CACjCC,aAAiE,EACjC;EAmBhC,gBAAgBC,sBAAsBA,CAAA,EAAmC;IAEvE,MAAMC,OAAO,GAAGN,iBAAiB,CAACO,OAAO,CAACH,aAAa,CAAC;IACxD,WAAW,MAAMI,MAAM,IAAIF,OAAO,EAAE;MAClC,WAAW,MAAMG,WAAW,IAAID,MAAM,EAAE;QACtC,MAAME,gBAAiC,GAAG;UACxCC,KAAK,EAAE,aAAa;UACpBC,SAAS,EAAE,MAAM;UACjBC,IAAI,EAAE,IAAIX,gBAAgB,CAAC,CAACO,WAAW,CAAC,CAAC;UACzCK,MAAM,EAAEL,WAAW,CAACI,IAAI,CAACC;QAC3B,CAAC;QAED,MAAMJ,gBAAgB;MACxB;MACA;IACF;EACF;EAEA,OAAOL,sBAAsB,CAAC,CAAC;AACjC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { convertTable } from '@loaders.gl/schema';
|
|
2
2
|
import { tableFromIPC } from 'apache-arrow';
|
|
3
|
-
import { convertApacheArrowToArrowTable, convertArrowToColumnarTable } from
|
|
3
|
+
import { convertApacheArrowToArrowTable, convertArrowToColumnarTable } from "./convert-table.js";
|
|
4
4
|
export default function parseArrowSync(arrayBuffer, options) {
|
|
5
5
|
var _options$arrow;
|
|
6
6
|
const apacheArrowTable = tableFromIPC([new Uint8Array(arrayBuffer)]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-arrow-sync.js","names":["convertTable","tableFromIPC","convertApacheArrowToArrowTable","convertArrowToColumnarTable","parseArrowSync","arrayBuffer","options","_options$arrow","apacheArrowTable","Uint8Array","arrowTable","shape","arrow","columnarTable","Error"],"sources":["../../src/lib/parse-arrow-sync.ts"],"sourcesContent":["import type {ColumnarTable, ObjectRowTable} from '@loaders.gl/schema';\nimport type {ArrowTable} from './arrow-table';\nimport {convertTable} from '@loaders.gl/schema';\nimport {tableFromIPC} from 'apache-arrow';\nimport type {ArrowLoaderOptions} from '../arrow-loader';\nimport {convertApacheArrowToArrowTable, convertArrowToColumnarTable} from './convert-table';\n\n// Parses arrow to a columnar table\nexport default function parseArrowSync(\n arrayBuffer,\n options?: ArrowLoaderOptions\n): ArrowTable | ColumnarTable | ObjectRowTable {\n const apacheArrowTable = tableFromIPC([new Uint8Array(arrayBuffer)]);\n const arrowTable = convertApacheArrowToArrowTable(apacheArrowTable);\n\n const shape = options?.arrow?.shape || 'arrow-table';\n switch (shape) {\n case 'arrow-table':\n return arrowTable;\n\n case 'columnar-table':\n return convertArrowToColumnarTable(arrowTable);\n\n case 'object-row-table':\n const columnarTable = convertArrowToColumnarTable(arrowTable);\n return convertTable(columnarTable, 'object-row-table');\n\n default:\n // TODO\n throw new Error(shape);\n }\n}\n"],"mappings":"AAEA,SAAQA,YAAY,QAAO,oBAAoB;AAC/C,SAAQC,YAAY,QAAO,cAAc;AAAC,SAElCC,8BAA8B,EAAEC,2BAA2B;AAGnE,eAAe,SAASC,cAAcA,CACpCC,WAAW,EACXC,OAA4B,EACiB;EAAA,IAAAC,cAAA;EAC7C,MAAMC,gBAAgB,GAAGP,YAAY,CAAC,CAAC,IAAIQ,UAAU,CAACJ,WAAW,CAAC,CAAC,CAAC;EACpE,MAAMK,UAAU,GAAGR,8BAA8B,CAACM,gBAAgB,CAAC;EAEnE,MAAMG,KAAK,GAAG,CAAAL,OAAO,aAAPA,OAAO,wBAAAC,cAAA,GAAPD,OAAO,CAAEM,KAAK,cAAAL,cAAA,uBAAdA,cAAA,CAAgBI,KAAK,KAAI,aAAa;EACpD,QAAQA,KAAK;IACX,KAAK,aAAa;MAChB,OAAOD,UAAU;IAEnB,KAAK,gBAAgB;MACnB,OAAOP,2BAA2B,CAACO,UAAU,CAAC;IAEhD,KAAK,kBAAkB;MACrB,MAAMG,aAAa,GAAGV,2BAA2B,CAACO,UAAU,CAAC;MAC7D,OAAOV,YAAY,CAACa,aAAa,EAAE,kBAAkB,CAAC;IAExD;MAEE,MAAM,IAAIC,KAAK,CAACH,KAAK,CAAC;EAC1B;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow-type-utils.d.ts","sourceRoot":"","sources":["../../src/schema/arrow-type-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,QAAQ,EAiBT,MAAM,cAAc,CAAC;AAGtB,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAqBxD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Float32, Float64, Int16, Int32, Int8, Uint16, Uint32, Uint8 } from 'apache-arrow';
|
|
2
|
+
export function getArrowType(array) {
|
|
3
|
+
switch (array.constructor) {
|
|
4
|
+
case Int8Array:
|
|
5
|
+
return new Int8();
|
|
6
|
+
case Uint8Array:
|
|
7
|
+
return new Uint8();
|
|
8
|
+
case Int16Array:
|
|
9
|
+
return new Int16();
|
|
10
|
+
case Uint16Array:
|
|
11
|
+
return new Uint16();
|
|
12
|
+
case Int32Array:
|
|
13
|
+
return new Int32();
|
|
14
|
+
case Uint32Array:
|
|
15
|
+
return new Uint32();
|
|
16
|
+
case Float32Array:
|
|
17
|
+
return new Float32();
|
|
18
|
+
case Float64Array:
|
|
19
|
+
return new Float64();
|
|
20
|
+
default:
|
|
21
|
+
throw new Error('array type not supported');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=arrow-type-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow-type-utils.js","names":["Float32","Float64","Int16","Int32","Int8","Uint16","Uint32","Uint8","getArrowType","array","constructor","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","Error"],"sources":["../../src/schema/arrow-type-utils.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {TypedArray} from '@loaders.gl/schema';\nimport {\n DataType,\n Float32,\n Float64,\n Int16,\n Int32,\n Int8,\n Uint16,\n Uint32,\n Uint8\n // Int8Vector,\n // Uint8Vector,\n // Int16Vector,\n // Uint16Vector,\n // Int32Vector,\n // Uint32Vector,\n // Float32Vector,\n // Float64Vector\n} from 'apache-arrow';\n// import {AbstractVector} from 'apache-arrow/vector';\n\nexport function getArrowType(array: TypedArray): DataType {\n switch (array.constructor) {\n case Int8Array:\n return new Int8();\n case Uint8Array:\n return new Uint8();\n case Int16Array:\n return new Int16();\n case Uint16Array:\n return new Uint16();\n case Int32Array:\n return new Int32();\n case Uint32Array:\n return new Uint32();\n case Float32Array:\n return new Float32();\n case Float64Array:\n return new Float64();\n default:\n throw new Error('array type not supported');\n }\n}\n\n/*\nexport function getArrowVector(array: TypedArray): AbstractVector {\n switch (array.constructor) {\n case Int8Array:\n return Int8Vector.from(array);\n case Uint8Array:\n return Uint8Vector.from(array);\n case Int16Array:\n return Int16Vector.from(array);\n case Uint16Array:\n return Uint16Vector.from(array);\n case Int32Array:\n return Int32Vector.from(array);\n case Uint32Array:\n return Uint32Vector.from(array);\n case Float32Array:\n return Float32Vector.from(array);\n case Float64Array:\n return Float64Vector.from(array);\n default:\n throw new Error('array type not supported');\n }\n}\n*/\n"],"mappings":"AAGA,SAEEA,OAAO,EACPC,OAAO,EACPC,KAAK,EACLC,KAAK,EACLC,IAAI,EACJC,MAAM,EACNC,MAAM,EACNC,KAAK,QASA,cAAc;AAGrB,OAAO,SAASC,YAAYA,CAACC,KAAiB,EAAY;EACxD,QAAQA,KAAK,CAACC,WAAW;IACvB,KAAKC,SAAS;MACZ,OAAO,IAAIP,IAAI,CAAC,CAAC;IACnB,KAAKQ,UAAU;MACb,OAAO,IAAIL,KAAK,CAAC,CAAC;IACpB,KAAKM,UAAU;MACb,OAAO,IAAIX,KAAK,CAAC,CAAC;IACpB,KAAKY,WAAW;MACd,OAAO,IAAIT,MAAM,CAAC,CAAC;IACrB,KAAKU,UAAU;MACb,OAAO,IAAIZ,KAAK,CAAC,CAAC;IACpB,KAAKa,WAAW;MACd,OAAO,IAAIV,MAAM,CAAC,CAAC;IACrB,KAAKW,YAAY;MACf,OAAO,IAAIjB,OAAO,CAAC,CAAC;IACtB,KAAKkB,YAAY;MACf,OAAO,IAAIjB,OAAO,CAAC,CAAC;IACtB;MACE,MAAM,IAAIkB,KAAK,CAAC,0BAA0B,CAAC;EAC/C;AACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DataType, Field, Schema, SchemaMetadata } from '@loaders.gl/schema';
|
|
2
|
+
import { Field as ArrowField, Schema as ArrowSchema, DataType as ArrowDataType } from 'apache-arrow';
|
|
3
|
+
export declare function serializeArrowSchema(arrowSchema: ArrowSchema): Schema;
|
|
4
|
+
export declare function deserializeArrowSchema(schema: Schema): ArrowSchema;
|
|
5
|
+
export declare function serializeArrowMetadata(arrowMetadata: Map<string, string>): SchemaMetadata;
|
|
6
|
+
export declare function deserializeArrowMetadata(metadata?: SchemaMetadata): Map<string, string>;
|
|
7
|
+
export declare function serializeArrowField(field: ArrowField): Field;
|
|
8
|
+
export declare function deserializeArrowField(field: Field): ArrowField;
|
|
9
|
+
/** Converts a serializable loaders.gl data type to hydrated arrow data type */
|
|
10
|
+
export declare function serializeArrowType(arrowType: ArrowDataType): DataType;
|
|
11
|
+
/** Converts a serializable loaders.gl data type to hydrated arrow data type */
|
|
12
|
+
export declare function deserializeArrowType(dataType: DataType): ArrowDataType;
|
|
13
|
+
//# sourceMappingURL=convert-schema-arrow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-schema-arrow.d.ts","sourceRoot":"","sources":["../../src/schema/convert-schema-arrow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EACL,KAAK,IAAI,UAAU,EACnB,MAAM,IAAI,WAAW,EACrB,QAAQ,IAAI,aAAa,EAkC1B,MAAM,cAAc,CAAC;AAEtB,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAKrE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAKlE;AAED,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CAEzF;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAEvF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,CAO5D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAO9D;AAED,+EAA+E;AAE/E,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,aAAa,GAAG,QAAQ,CAqErE;AAED,+EAA+E;AAE/E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CA0EtE"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { Field as ArrowField, Schema as ArrowSchema, Null, Binary, Bool, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64, Float16, Float32, Float64, Utf8, DateDay, DateMillisecond, TimeMillisecond, TimeSecond, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond, IntervalDayTime, IntervalYearMonth, FixedSizeList, Struct } from 'apache-arrow';
|
|
2
|
+
export function serializeArrowSchema(arrowSchema) {
|
|
3
|
+
return {
|
|
4
|
+
fields: arrowSchema.fields.map(arrowField => serializeArrowField(arrowField)),
|
|
5
|
+
metadata: serializeArrowMetadata(arrowSchema.metadata)
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export function deserializeArrowSchema(schema) {
|
|
9
|
+
return new ArrowSchema(schema.fields.map(field => deserializeArrowField(field)), deserializeArrowMetadata(schema.metadata));
|
|
10
|
+
}
|
|
11
|
+
export function serializeArrowMetadata(arrowMetadata) {
|
|
12
|
+
return Object.fromEntries(arrowMetadata);
|
|
13
|
+
}
|
|
14
|
+
export function deserializeArrowMetadata(metadata) {
|
|
15
|
+
return metadata ? new Map(Object.entries(metadata)) : new Map();
|
|
16
|
+
}
|
|
17
|
+
export function serializeArrowField(field) {
|
|
18
|
+
return {
|
|
19
|
+
name: field.name,
|
|
20
|
+
type: serializeArrowType(field.type),
|
|
21
|
+
nullable: field.nullable,
|
|
22
|
+
metadata: serializeArrowMetadata(field.metadata)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function deserializeArrowField(field) {
|
|
26
|
+
return new ArrowField(field.name, deserializeArrowType(field.type), field.nullable, deserializeArrowMetadata(field.metadata));
|
|
27
|
+
}
|
|
28
|
+
export function serializeArrowType(arrowType) {
|
|
29
|
+
switch (arrowType.constructor) {
|
|
30
|
+
case Null:
|
|
31
|
+
return 'null';
|
|
32
|
+
case Binary:
|
|
33
|
+
return 'binary';
|
|
34
|
+
case Bool:
|
|
35
|
+
return 'bool';
|
|
36
|
+
case Int8:
|
|
37
|
+
return 'int8';
|
|
38
|
+
case Int16:
|
|
39
|
+
return 'int16';
|
|
40
|
+
case Int32:
|
|
41
|
+
return 'int32';
|
|
42
|
+
case Int64:
|
|
43
|
+
return 'int64';
|
|
44
|
+
case Uint8:
|
|
45
|
+
return 'uint8';
|
|
46
|
+
case Uint16:
|
|
47
|
+
return 'uint16';
|
|
48
|
+
case Uint32:
|
|
49
|
+
return 'uint32';
|
|
50
|
+
case Uint64:
|
|
51
|
+
return 'uint64';
|
|
52
|
+
case Float16:
|
|
53
|
+
return 'float16';
|
|
54
|
+
case Float32:
|
|
55
|
+
return 'float32';
|
|
56
|
+
case Float64:
|
|
57
|
+
return 'float64';
|
|
58
|
+
case Utf8:
|
|
59
|
+
return 'utf8';
|
|
60
|
+
case DateDay:
|
|
61
|
+
return 'date-day';
|
|
62
|
+
case DateMillisecond:
|
|
63
|
+
return 'date-millisecond';
|
|
64
|
+
case TimeMillisecond:
|
|
65
|
+
return 'time-millisecond';
|
|
66
|
+
case TimeSecond:
|
|
67
|
+
return 'time-second';
|
|
68
|
+
case TimestampSecond:
|
|
69
|
+
return 'timestamp-second';
|
|
70
|
+
case TimestampMillisecond:
|
|
71
|
+
return 'timestamp-millisecond';
|
|
72
|
+
case TimestampMicrosecond:
|
|
73
|
+
return 'timestamp-microsecond';
|
|
74
|
+
case TimestampNanosecond:
|
|
75
|
+
return 'timestamp-nanosecond';
|
|
76
|
+
case IntervalDayTime:
|
|
77
|
+
return 'interval-daytime';
|
|
78
|
+
case IntervalYearMonth:
|
|
79
|
+
return 'interval-yearmonth';
|
|
80
|
+
case FixedSizeList:
|
|
81
|
+
return {
|
|
82
|
+
type: 'fixed-size-list',
|
|
83
|
+
listSize: arrowType.listSize,
|
|
84
|
+
children: [serializeArrowField(arrowType.children[0])]
|
|
85
|
+
};
|
|
86
|
+
default:
|
|
87
|
+
throw new Error('array type not supported');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export function deserializeArrowType(dataType) {
|
|
91
|
+
if (typeof dataType === 'object') {
|
|
92
|
+
switch (dataType.type) {
|
|
93
|
+
case 'fixed-size-list':
|
|
94
|
+
const child = deserializeArrowField(dataType.children[0]);
|
|
95
|
+
return new FixedSizeList(dataType.listSize, child);
|
|
96
|
+
case 'struct':
|
|
97
|
+
const children = dataType.children.map(arrowField => deserializeArrowField(arrowField));
|
|
98
|
+
return new Struct(children);
|
|
99
|
+
default:
|
|
100
|
+
throw new Error('array type not supported');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
switch (dataType) {
|
|
104
|
+
case 'null':
|
|
105
|
+
return new Null();
|
|
106
|
+
case 'binary':
|
|
107
|
+
return new Binary();
|
|
108
|
+
case 'bool':
|
|
109
|
+
return new Bool();
|
|
110
|
+
case 'int8':
|
|
111
|
+
return new Int8();
|
|
112
|
+
case 'int16':
|
|
113
|
+
return new Int16();
|
|
114
|
+
case 'int32':
|
|
115
|
+
return new Int32();
|
|
116
|
+
case 'int64':
|
|
117
|
+
return new Int64();
|
|
118
|
+
case 'uint8':
|
|
119
|
+
return new Uint8();
|
|
120
|
+
case 'uint16':
|
|
121
|
+
return new Uint16();
|
|
122
|
+
case 'uint32':
|
|
123
|
+
return new Uint32();
|
|
124
|
+
case 'uint64':
|
|
125
|
+
return new Uint64();
|
|
126
|
+
case 'float16':
|
|
127
|
+
return new Float16();
|
|
128
|
+
case 'float32':
|
|
129
|
+
return new Float32();
|
|
130
|
+
case 'float64':
|
|
131
|
+
return new Float64();
|
|
132
|
+
case 'utf8':
|
|
133
|
+
return new Utf8();
|
|
134
|
+
case 'date-day':
|
|
135
|
+
return new DateDay();
|
|
136
|
+
case 'date-millisecond':
|
|
137
|
+
return new DateMillisecond();
|
|
138
|
+
case 'time-millisecond':
|
|
139
|
+
return new TimeMillisecond();
|
|
140
|
+
case 'time-second':
|
|
141
|
+
return new TimeSecond();
|
|
142
|
+
case 'timestamp-second':
|
|
143
|
+
return new TimestampSecond();
|
|
144
|
+
case 'timestamp-millisecond':
|
|
145
|
+
return new TimestampMillisecond();
|
|
146
|
+
case 'timestamp-microsecond':
|
|
147
|
+
return new TimestampMicrosecond();
|
|
148
|
+
case 'timestamp-nanosecond':
|
|
149
|
+
return new TimestampNanosecond();
|
|
150
|
+
case 'interval-daytime':
|
|
151
|
+
return new IntervalDayTime();
|
|
152
|
+
case 'interval-yearmonth':
|
|
153
|
+
return new IntervalYearMonth();
|
|
154
|
+
default:
|
|
155
|
+
throw new Error('array type not supported');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=convert-schema-arrow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-schema-arrow.js","names":["Field","ArrowField","Schema","ArrowSchema","Null","Binary","Bool","Int8","Int16","Int32","Int64","Uint8","Uint16","Uint32","Uint64","Float16","Float32","Float64","Utf8","DateDay","DateMillisecond","TimeMillisecond","TimeSecond","TimestampSecond","TimestampMillisecond","TimestampMicrosecond","TimestampNanosecond","IntervalDayTime","IntervalYearMonth","FixedSizeList","Struct","serializeArrowSchema","arrowSchema","fields","map","arrowField","serializeArrowField","metadata","serializeArrowMetadata","deserializeArrowSchema","schema","field","deserializeArrowField","deserializeArrowMetadata","arrowMetadata","Object","fromEntries","Map","entries","name","type","serializeArrowType","nullable","deserializeArrowType","arrowType","constructor","listSize","children","Error","dataType","child"],"sources":["../../src/schema/convert-schema-arrow.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {DataType, Field, Schema, SchemaMetadata} from '@loaders.gl/schema';\nimport {\n Field as ArrowField,\n Schema as ArrowSchema,\n DataType as ArrowDataType,\n Null,\n Binary,\n Bool,\n // Int,\n Int8,\n Int16,\n Int32,\n Int64,\n Uint8,\n Uint16,\n Uint32,\n Uint64,\n // Float,\n Float16,\n Float32,\n Float64,\n Utf8,\n // Date,\n DateDay,\n DateMillisecond,\n // Time,\n TimeMillisecond,\n TimeSecond,\n // Timestamp,\n TimestampSecond,\n TimestampMillisecond,\n TimestampMicrosecond,\n TimestampNanosecond,\n // Interval,\n IntervalDayTime,\n IntervalYearMonth,\n FixedSizeList,\n Struct\n} from 'apache-arrow';\n\nexport function serializeArrowSchema(arrowSchema: ArrowSchema): Schema {\n return {\n fields: arrowSchema.fields.map((arrowField) => serializeArrowField(arrowField)),\n metadata: serializeArrowMetadata(arrowSchema.metadata)\n };\n}\n\nexport function deserializeArrowSchema(schema: Schema): ArrowSchema {\n return new ArrowSchema(\n schema.fields.map((field) => deserializeArrowField(field)),\n deserializeArrowMetadata(schema.metadata)\n );\n}\n\nexport function serializeArrowMetadata(arrowMetadata: Map<string, string>): SchemaMetadata {\n return Object.fromEntries(arrowMetadata);\n}\n\nexport function deserializeArrowMetadata(metadata?: SchemaMetadata): Map<string, string> {\n return metadata ? new Map(Object.entries(metadata)) : new Map<string, string>();\n}\n\nexport function serializeArrowField(field: ArrowField): Field {\n return {\n name: field.name,\n type: serializeArrowType(field.type),\n nullable: field.nullable,\n metadata: serializeArrowMetadata(field.metadata)\n };\n}\n\nexport function deserializeArrowField(field: Field): ArrowField {\n return new ArrowField(\n field.name,\n deserializeArrowType(field.type),\n field.nullable,\n deserializeArrowMetadata(field.metadata)\n );\n}\n\n/** Converts a serializable loaders.gl data type to hydrated arrow data type */\n// eslint-disable-next-line complexity\nexport function serializeArrowType(arrowType: ArrowDataType): DataType {\n switch (arrowType.constructor) {\n case Null:\n return 'null';\n case Binary:\n return 'binary';\n case Bool:\n return 'bool';\n // case Int: return 'int';\n case Int8:\n return 'int8';\n case Int16:\n return 'int16';\n case Int32:\n return 'int32';\n case Int64:\n return 'int64';\n case Uint8:\n return 'uint8';\n case Uint16:\n return 'uint16';\n case Uint32:\n return 'uint32';\n case Uint64:\n return 'uint64';\n // case Float: return 'float';\n case Float16:\n return 'float16';\n case Float32:\n return 'float32';\n case Float64:\n return 'float64';\n case Utf8:\n return 'utf8';\n // case Date: return 'date';\n case DateDay:\n return 'date-day';\n case DateMillisecond:\n return 'date-millisecond';\n // case Time: return 'time';\n case TimeMillisecond:\n return 'time-millisecond';\n case TimeSecond:\n return 'time-second';\n // case Timestamp: return 'timestamp';\n case TimestampSecond:\n return 'timestamp-second';\n case TimestampMillisecond:\n return 'timestamp-millisecond';\n case TimestampMicrosecond:\n return 'timestamp-microsecond';\n case TimestampNanosecond:\n return 'timestamp-nanosecond';\n // case Interval: return 'interval';\n case IntervalDayTime:\n return 'interval-daytime';\n case IntervalYearMonth:\n return 'interval-yearmonth';\n case FixedSizeList:\n return {\n type: 'fixed-size-list',\n listSize: (arrowType as FixedSizeList).listSize,\n children: [serializeArrowField((arrowType as FixedSizeList).children[0])]\n };\n // case Struct:\n // return {type: 'struct', children: (arrowType as Struct).children};\n default:\n throw new Error('array type not supported');\n }\n}\n\n/** Converts a serializable loaders.gl data type to hydrated arrow data type */\n// eslint-disable-next-line complexity\nexport function deserializeArrowType(dataType: DataType): ArrowDataType {\n if (typeof dataType === 'object') {\n switch (dataType.type) {\n case 'fixed-size-list':\n const child = deserializeArrowField(dataType.children[0]);\n return new FixedSizeList(dataType.listSize, child);\n case 'struct':\n const children = dataType.children.map((arrowField) => deserializeArrowField(arrowField));\n return new Struct(children);\n default:\n throw new Error('array type not supported');\n }\n }\n\n switch (dataType) {\n case 'null':\n return new Null();\n case 'binary':\n return new Binary();\n case 'bool':\n return new Bool();\n // case 'int': return new Int();\n case 'int8':\n return new Int8();\n case 'int16':\n return new Int16();\n case 'int32':\n return new Int32();\n case 'int64':\n return new Int64();\n case 'uint8':\n return new Uint8();\n case 'uint16':\n return new Uint16();\n case 'uint32':\n return new Uint32();\n case 'uint64':\n return new Uint64();\n // case 'float': return new Float();\n case 'float16':\n return new Float16();\n case 'float32':\n return new Float32();\n case 'float64':\n return new Float64();\n case 'utf8':\n return new Utf8();\n // case 'date': return new Date();\n case 'date-day':\n return new DateDay();\n case 'date-millisecond':\n return new DateMillisecond();\n // case 'time': return new Time();\n case 'time-millisecond':\n return new TimeMillisecond();\n case 'time-second':\n return new TimeSecond();\n // case 'timestamp': return new Timestamp();\n case 'timestamp-second':\n return new TimestampSecond();\n case 'timestamp-millisecond':\n return new TimestampMillisecond();\n case 'timestamp-microsecond':\n return new TimestampMicrosecond();\n case 'timestamp-nanosecond':\n return new TimestampNanosecond();\n // case 'interval': return new Interval();\n case 'interval-daytime':\n return new IntervalDayTime();\n case 'interval-yearmonth':\n return new IntervalYearMonth();\n default:\n throw new Error('array type not supported');\n }\n}\n"],"mappings":"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"}
|