@loaders.gl/arrow 4.0.0 → 4.0.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.
- package/dist/arrow-loader.d.ts.map +1 -1
- package/dist/arrow-loader.js.map +1 -1
- package/dist/arrow-worker.js +34 -26
- package/dist/arrow-writer.d.ts.map +1 -1
- package/dist/arrow-writer.js +6 -3
- package/dist/arrow-writer.js.map +1 -1
- package/dist/dist.dev.js +658 -6
- package/dist/geoarrow/convert-geoarrow-to-binary-geometry.d.ts +40 -0
- package/dist/geoarrow/convert-geoarrow-to-binary-geometry.d.ts.map +1 -0
- package/dist/geoarrow/convert-geoarrow-to-binary-geometry.js +189 -0
- package/dist/geoarrow/convert-geoarrow-to-binary-geometry.js.map +1 -0
- package/dist/geoarrow/convert-geoarrow-to-geojson.d.ts +19 -0
- package/dist/geoarrow/convert-geoarrow-to-geojson.d.ts.map +1 -0
- package/dist/geoarrow/convert-geoarrow-to-geojson.js +138 -0
- package/dist/geoarrow/convert-geoarrow-to-geojson.js.map +1 -0
- package/dist/geoarrow/get-arrow-bounds.d.ts +11 -0
- package/dist/geoarrow/get-arrow-bounds.d.ts.map +1 -0
- package/dist/geoarrow/get-arrow-bounds.js +24 -0
- package/dist/geoarrow/get-arrow-bounds.js.map +1 -0
- package/dist/index.cjs +627 -32
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/arrow-table-batch.d.ts +2 -2
- package/dist/lib/arrow-table-batch.d.ts.map +1 -1
- package/dist/lib/arrow-table-batch.js +7 -7
- package/dist/lib/arrow-table-batch.js.map +1 -1
- package/dist/lib/arrow-table.d.ts +3 -3
- package/dist/lib/arrow-table.d.ts.map +1 -1
- package/dist/lib/arrow-table.js.map +1 -1
- package/dist/lib/encode-arrow.js +5 -5
- package/dist/lib/encode-arrow.js.map +1 -1
- package/dist/lib/parse-arrow-in-batches.js +3 -3
- package/dist/lib/parse-arrow-in-batches.js.map +1 -1
- package/dist/lib/parse-arrow-sync.d.ts.map +1 -1
- package/dist/lib/parse-arrow-sync.js +3 -3
- package/dist/lib/parse-arrow-sync.js.map +1 -1
- package/dist/schema/arrow-type-utils.d.ts +3 -2
- package/dist/schema/arrow-type-utils.d.ts.map +1 -1
- package/dist/schema/arrow-type-utils.js +9 -9
- package/dist/schema/arrow-type-utils.js.map +1 -1
- package/dist/schema/convert-arrow-schema.d.ts +19 -0
- package/dist/schema/convert-arrow-schema.d.ts.map +1 -0
- package/dist/schema/convert-arrow-schema.js +232 -0
- package/dist/schema/convert-arrow-schema.js.map +1 -0
- package/dist/{lib/convert-table.d.ts → tables/convert-arrow-to-table.d.ts} +4 -4
- package/dist/tables/convert-arrow-to-table.d.ts.map +1 -0
- package/dist/{lib/convert-table.js → tables/convert-arrow-to-table.js} +1 -1
- package/dist/tables/convert-arrow-to-table.js.map +1 -0
- package/dist/{schema → tables}/convert-table-to-arrow.d.ts.map +1 -1
- package/dist/{schema → tables}/convert-table-to-arrow.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/workers/arrow-worker.js.map +1 -1
- package/package.json +5 -4
- package/src/arrow-loader.ts +1 -0
- package/src/arrow-writer.ts +7 -3
- package/src/geoarrow/convert-geoarrow-to-binary-geometry.ts +260 -0
- package/src/geoarrow/convert-geoarrow-to-geojson.ts +192 -0
- package/src/geoarrow/get-arrow-bounds.ts +40 -0
- package/src/index.ts +33 -4
- package/src/lib/arrow-table-batch.ts +13 -23
- package/src/lib/arrow-table.ts +3 -3
- package/src/lib/encode-arrow.ts +8 -8
- package/src/lib/parse-arrow-in-batches.ts +4 -4
- package/src/lib/parse-arrow-sync.ts +6 -3
- package/src/schema/arrow-type-utils.ts +11 -29
- package/src/schema/convert-arrow-schema.ts +265 -0
- package/src/{lib/convert-table.ts → tables/convert-arrow-to-table.ts} +4 -3
- package/src/types.ts +3 -0
- package/src/workers/arrow-worker.ts +3 -0
- package/dist/lib/convert-table.d.ts.map +0 -1
- package/dist/lib/convert-table.js.map +0 -1
- package/dist/schema/convert-schema-arrow.d.ts +0 -13
- package/dist/schema/convert-schema-arrow.d.ts.map +0 -1
- package/dist/schema/convert-schema-arrow.js +0 -158
- package/dist/schema/convert-schema-arrow.js.map +0 -1
- package/src/schema/convert-schema-arrow.ts +0 -233
- /package/dist/{schema → tables}/convert-table-to-arrow.d.ts +0 -0
- /package/dist/{schema → tables}/convert-table-to-arrow.js +0 -0
- /package/src/{schema → tables}/convert-table-to-arrow.ts +0 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import * as arrow 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 arrow.Schema(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 arrow.Field(field.name, deserializeArrowType(field.type), field.nullable, deserializeArrowMetadata(field.metadata));
|
|
27
|
+
}
|
|
28
|
+
export function serializeArrowType(arrowType) {
|
|
29
|
+
switch (arrowType.constructor) {
|
|
30
|
+
case arrow.Null:
|
|
31
|
+
return 'null';
|
|
32
|
+
case arrow.Binary:
|
|
33
|
+
return 'binary';
|
|
34
|
+
case arrow.Bool:
|
|
35
|
+
return 'bool';
|
|
36
|
+
case arrow.Int:
|
|
37
|
+
const intType = arrowType;
|
|
38
|
+
return `${intType.isSigned ? 'u' : ''}int${intType.bitWidth}`;
|
|
39
|
+
case arrow.Int8:
|
|
40
|
+
return 'int8';
|
|
41
|
+
case arrow.Int16:
|
|
42
|
+
return 'int16';
|
|
43
|
+
case arrow.Int32:
|
|
44
|
+
return 'int32';
|
|
45
|
+
case arrow.Int64:
|
|
46
|
+
return 'int64';
|
|
47
|
+
case arrow.Uint8:
|
|
48
|
+
return 'uint8';
|
|
49
|
+
case arrow.Uint16:
|
|
50
|
+
return 'uint16';
|
|
51
|
+
case arrow.Uint32:
|
|
52
|
+
return 'uint32';
|
|
53
|
+
case arrow.Uint64:
|
|
54
|
+
return 'uint64';
|
|
55
|
+
case arrow.Float:
|
|
56
|
+
const precision = arrowType.precision;
|
|
57
|
+
switch (precision) {
|
|
58
|
+
case arrow.Precision.HALF:
|
|
59
|
+
return 'float16';
|
|
60
|
+
case arrow.Precision.SINGLE:
|
|
61
|
+
return 'float32';
|
|
62
|
+
case arrow.Precision.DOUBLE:
|
|
63
|
+
return 'float64';
|
|
64
|
+
default:
|
|
65
|
+
return 'float16';
|
|
66
|
+
}
|
|
67
|
+
case arrow.Float16:
|
|
68
|
+
return 'float16';
|
|
69
|
+
case arrow.Float32:
|
|
70
|
+
return 'float32';
|
|
71
|
+
case arrow.Float64:
|
|
72
|
+
return 'float64';
|
|
73
|
+
case arrow.Utf8:
|
|
74
|
+
return 'utf8';
|
|
75
|
+
case Date:
|
|
76
|
+
const dateUnit = arrowType.unit;
|
|
77
|
+
return dateUnit === arrow.DateUnit.DAY ? 'date-day' : 'date-millisecond';
|
|
78
|
+
case arrow.DateDay:
|
|
79
|
+
return 'date-day';
|
|
80
|
+
case arrow.DateMillisecond:
|
|
81
|
+
return 'date-millisecond';
|
|
82
|
+
case arrow.Time:
|
|
83
|
+
const timeUnit = arrowType.unit;
|
|
84
|
+
switch (timeUnit) {
|
|
85
|
+
case arrow.TimeUnit.SECOND:
|
|
86
|
+
return 'time-second';
|
|
87
|
+
case arrow.TimeUnit.MILLISECOND:
|
|
88
|
+
return 'time-millisecond';
|
|
89
|
+
case arrow.TimeUnit.MICROSECOND:
|
|
90
|
+
return 'time-microsecond';
|
|
91
|
+
case arrow.TimeUnit.NANOSECOND:
|
|
92
|
+
return 'time-nanosecond';
|
|
93
|
+
default:
|
|
94
|
+
return 'time-second';
|
|
95
|
+
}
|
|
96
|
+
case arrow.TimeMillisecond:
|
|
97
|
+
return 'time-millisecond';
|
|
98
|
+
case arrow.TimeSecond:
|
|
99
|
+
return 'time-second';
|
|
100
|
+
case arrow.TimeMicrosecond:
|
|
101
|
+
return 'time-microsecond';
|
|
102
|
+
case arrow.TimeNanosecond:
|
|
103
|
+
return 'time-nanosecond';
|
|
104
|
+
case arrow.Timestamp:
|
|
105
|
+
const timeStampUnit = arrowType.unit;
|
|
106
|
+
switch (timeStampUnit) {
|
|
107
|
+
case arrow.TimeUnit.SECOND:
|
|
108
|
+
return 'timestamp-second';
|
|
109
|
+
case arrow.TimeUnit.MILLISECOND:
|
|
110
|
+
return 'timestamp-millisecond';
|
|
111
|
+
case arrow.TimeUnit.MICROSECOND:
|
|
112
|
+
return 'timestamp-microsecond';
|
|
113
|
+
case arrow.TimeUnit.NANOSECOND:
|
|
114
|
+
return 'timestamp-nanosecond';
|
|
115
|
+
default:
|
|
116
|
+
return 'timestamp-second';
|
|
117
|
+
}
|
|
118
|
+
case arrow.TimestampSecond:
|
|
119
|
+
return 'timestamp-second';
|
|
120
|
+
case arrow.TimestampMillisecond:
|
|
121
|
+
return 'timestamp-millisecond';
|
|
122
|
+
case arrow.TimestampMicrosecond:
|
|
123
|
+
return 'timestamp-microsecond';
|
|
124
|
+
case arrow.TimestampNanosecond:
|
|
125
|
+
return 'timestamp-nanosecond';
|
|
126
|
+
case arrow.Interval:
|
|
127
|
+
const intervalUnit = arrowType.unit;
|
|
128
|
+
switch (intervalUnit) {
|
|
129
|
+
case arrow.IntervalUnit.DAY_TIME:
|
|
130
|
+
return 'interval-daytime';
|
|
131
|
+
case arrow.IntervalUnit.YEAR_MONTH:
|
|
132
|
+
return 'interval-yearmonth';
|
|
133
|
+
default:
|
|
134
|
+
return 'interval-daytime';
|
|
135
|
+
}
|
|
136
|
+
case arrow.IntervalDayTime:
|
|
137
|
+
return 'interval-daytime';
|
|
138
|
+
case arrow.IntervalYearMonth:
|
|
139
|
+
return 'interval-yearmonth';
|
|
140
|
+
case arrow.List:
|
|
141
|
+
const listType = arrowType;
|
|
142
|
+
const listField = listType.valueField;
|
|
143
|
+
return {
|
|
144
|
+
type: 'list',
|
|
145
|
+
children: [serializeArrowField(listField)]
|
|
146
|
+
};
|
|
147
|
+
case arrow.FixedSizeList:
|
|
148
|
+
return {
|
|
149
|
+
type: 'fixed-size-list',
|
|
150
|
+
listSize: arrowType.listSize,
|
|
151
|
+
children: [serializeArrowField(arrowType.children[0])]
|
|
152
|
+
};
|
|
153
|
+
default:
|
|
154
|
+
throw new Error('array type not supported');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export function deserializeArrowType(dataType) {
|
|
158
|
+
if (typeof dataType === 'object') {
|
|
159
|
+
switch (dataType.type) {
|
|
160
|
+
case 'list':
|
|
161
|
+
const field = deserializeArrowField(dataType.children[0]);
|
|
162
|
+
return new arrow.List(field);
|
|
163
|
+
case 'fixed-size-list':
|
|
164
|
+
const child = deserializeArrowField(dataType.children[0]);
|
|
165
|
+
return new arrow.FixedSizeList(dataType.listSize, child);
|
|
166
|
+
case 'struct':
|
|
167
|
+
const children = dataType.children.map(arrowField => deserializeArrowField(arrowField));
|
|
168
|
+
return new arrow.Struct(children);
|
|
169
|
+
default:
|
|
170
|
+
throw new Error('array type not supported');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
switch (dataType) {
|
|
174
|
+
case 'null':
|
|
175
|
+
return new arrow.Null();
|
|
176
|
+
case 'binary':
|
|
177
|
+
return new arrow.Binary();
|
|
178
|
+
case 'bool':
|
|
179
|
+
return new arrow.Bool();
|
|
180
|
+
case 'int8':
|
|
181
|
+
return new arrow.Int8();
|
|
182
|
+
case 'int16':
|
|
183
|
+
return new arrow.Int16();
|
|
184
|
+
case 'int32':
|
|
185
|
+
return new arrow.Int32();
|
|
186
|
+
case 'int64':
|
|
187
|
+
return new arrow.Int64();
|
|
188
|
+
case 'uint8':
|
|
189
|
+
return new arrow.Uint8();
|
|
190
|
+
case 'uint16':
|
|
191
|
+
return new arrow.Uint16();
|
|
192
|
+
case 'uint32':
|
|
193
|
+
return new arrow.Uint32();
|
|
194
|
+
case 'uint64':
|
|
195
|
+
return new arrow.Uint64();
|
|
196
|
+
case 'float16':
|
|
197
|
+
return new arrow.Float16();
|
|
198
|
+
case 'float32':
|
|
199
|
+
return new arrow.Float32();
|
|
200
|
+
case 'float64':
|
|
201
|
+
return new arrow.Float64();
|
|
202
|
+
case 'utf8':
|
|
203
|
+
return new arrow.Utf8();
|
|
204
|
+
case 'date-day':
|
|
205
|
+
return new arrow.DateDay();
|
|
206
|
+
case 'date-millisecond':
|
|
207
|
+
return new arrow.DateMillisecond();
|
|
208
|
+
case 'time-second':
|
|
209
|
+
return new arrow.TimeSecond();
|
|
210
|
+
case 'time-millisecond':
|
|
211
|
+
return new arrow.TimeMillisecond();
|
|
212
|
+
case 'time-microsecond':
|
|
213
|
+
return new arrow.TimeMicrosecond();
|
|
214
|
+
case 'time-nanosecond':
|
|
215
|
+
return new arrow.TimeNanosecond();
|
|
216
|
+
case 'timestamp-second':
|
|
217
|
+
return new arrow.TimestampSecond();
|
|
218
|
+
case 'timestamp-millisecond':
|
|
219
|
+
return new arrow.TimestampMillisecond();
|
|
220
|
+
case 'timestamp-microsecond':
|
|
221
|
+
return new arrow.TimestampMicrosecond();
|
|
222
|
+
case 'timestamp-nanosecond':
|
|
223
|
+
return new arrow.TimestampNanosecond();
|
|
224
|
+
case 'interval-daytime':
|
|
225
|
+
return new arrow.IntervalDayTime();
|
|
226
|
+
case 'interval-yearmonth':
|
|
227
|
+
return new arrow.IntervalYearMonth();
|
|
228
|
+
default:
|
|
229
|
+
throw new Error('array type not supported');
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=convert-arrow-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-arrow-schema.js","names":["arrow","serializeArrowSchema","arrowSchema","fields","map","arrowField","serializeArrowField","metadata","serializeArrowMetadata","deserializeArrowSchema","schema","Schema","field","deserializeArrowField","deserializeArrowMetadata","arrowMetadata","Object","fromEntries","Map","entries","name","type","serializeArrowType","nullable","Field","deserializeArrowType","arrowType","constructor","Null","Binary","Bool","Int","intType","isSigned","bitWidth","Int8","Int16","Int32","Int64","Uint8","Uint16","Uint32","Uint64","Float","precision","Precision","HALF","SINGLE","DOUBLE","Float16","Float32","Float64","Utf8","Date","dateUnit","unit","DateUnit","DAY","DateDay","DateMillisecond","Time","timeUnit","TimeUnit","SECOND","MILLISECOND","MICROSECOND","NANOSECOND","TimeMillisecond","TimeSecond","TimeMicrosecond","TimeNanosecond","Timestamp","timeStampUnit","TimestampSecond","TimestampMillisecond","TimestampMicrosecond","TimestampNanosecond","Interval","intervalUnit","IntervalUnit","DAY_TIME","YEAR_MONTH","IntervalDayTime","IntervalYearMonth","List","listType","listField","valueField","children","FixedSizeList","listSize","Error","dataType","child","Struct"],"sources":["../../src/schema/convert-arrow-schema.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {DataType, Field, Schema, SchemaMetadata} from '@loaders.gl/schema';\nimport * as arrow from 'apache-arrow';\n\n/** Convert Apache Arrow Schema (class instance) to a serialized Schema (plain data) */\nexport function serializeArrowSchema(arrowSchema: arrow.Schema): Schema {\n return {\n fields: arrowSchema.fields.map((arrowField) => serializeArrowField(arrowField)),\n metadata: serializeArrowMetadata(arrowSchema.metadata)\n };\n}\n\n/** Convert a serialized Schema (plain data) to an Apache Arrow Schema (class instance) */\nexport function deserializeArrowSchema(schema: Schema): arrow.Schema {\n return new arrow.Schema(\n schema.fields.map((field) => deserializeArrowField(field)),\n deserializeArrowMetadata(schema.metadata)\n );\n}\n\n/** Convert Apache Arrow Schema metadata (Map<string, string>) to serialized metadata (Record<string, string> */\nexport function serializeArrowMetadata(arrowMetadata: Map<string, string>): SchemaMetadata {\n return Object.fromEntries(arrowMetadata);\n}\n\n/** Convert serialized metadata (Record<string, string> to Apache Arrow Schema metadata (Map<string, string>) to */\nexport function deserializeArrowMetadata(metadata?: SchemaMetadata): Map<string, string> {\n return metadata ? new Map(Object.entries(metadata)) : new Map<string, string>();\n}\n\n/** Convert Apache Arrow Field (class instance) to serialized Field (plain data) */\nexport function serializeArrowField(field: arrow.Field): Field {\n return {\n name: field.name,\n type: serializeArrowType(field.type),\n nullable: field.nullable,\n metadata: serializeArrowMetadata(field.metadata)\n };\n}\n\n/** Convert a serialized Field (plain data) to an Apache Arrow Field (class instance)*/\nexport function deserializeArrowField(field: Field): arrow.Field {\n return new arrow.Field(\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: arrow.DataType): DataType {\n switch (arrowType.constructor) {\n case arrow.Null:\n return 'null';\n case arrow.Binary:\n return 'binary';\n case arrow.Bool:\n return 'bool';\n case arrow.Int:\n const intType = arrowType as arrow.Int;\n return `${intType.isSigned ? 'u' : ''}int${intType.bitWidth}`;\n case arrow.Int8:\n return 'int8';\n case arrow.Int16:\n return 'int16';\n case arrow.Int32:\n return 'int32';\n case arrow.Int64:\n return 'int64';\n case arrow.Uint8:\n return 'uint8';\n case arrow.Uint16:\n return 'uint16';\n case arrow.Uint32:\n return 'uint32';\n case arrow.Uint64:\n return 'uint64';\n case arrow.Float:\n const precision = (arrowType as arrow.Float).precision;\n // return `float(precision + 1) * 16`;\n switch (precision) {\n case arrow.Precision.HALF:\n return 'float16';\n case arrow.Precision.SINGLE:\n return 'float32';\n case arrow.Precision.DOUBLE:\n return 'float64';\n default:\n return 'float16';\n }\n case arrow.Float16:\n return 'float16';\n case arrow.Float32:\n return 'float32';\n case arrow.Float64:\n return 'float64';\n case arrow.Utf8:\n return 'utf8';\n case Date:\n const dateUnit = (arrowType as arrow.Date_).unit;\n return dateUnit === arrow.DateUnit.DAY ? 'date-day' : 'date-millisecond';\n case arrow.DateDay:\n return 'date-day';\n case arrow.DateMillisecond:\n return 'date-millisecond';\n case arrow.Time:\n const timeUnit = (arrowType as arrow.Time).unit;\n switch (timeUnit) {\n case arrow.TimeUnit.SECOND:\n return 'time-second';\n case arrow.TimeUnit.MILLISECOND:\n return 'time-millisecond';\n case arrow.TimeUnit.MICROSECOND:\n return 'time-microsecond';\n case arrow.TimeUnit.NANOSECOND:\n return 'time-nanosecond';\n default:\n return 'time-second';\n }\n case arrow.TimeMillisecond:\n return 'time-millisecond';\n case arrow.TimeSecond:\n return 'time-second';\n case arrow.TimeMicrosecond:\n return 'time-microsecond';\n case arrow.TimeNanosecond:\n return 'time-nanosecond';\n case arrow.Timestamp:\n const timeStampUnit = (arrowType as arrow.Timestamp).unit;\n switch (timeStampUnit) {\n case arrow.TimeUnit.SECOND:\n return 'timestamp-second';\n case arrow.TimeUnit.MILLISECOND:\n return 'timestamp-millisecond';\n case arrow.TimeUnit.MICROSECOND:\n return 'timestamp-microsecond';\n case arrow.TimeUnit.NANOSECOND:\n return 'timestamp-nanosecond';\n default:\n return 'timestamp-second';\n }\n case arrow.TimestampSecond:\n return 'timestamp-second';\n case arrow.TimestampMillisecond:\n return 'timestamp-millisecond';\n case arrow.TimestampMicrosecond:\n return 'timestamp-microsecond';\n case arrow.TimestampNanosecond:\n return 'timestamp-nanosecond';\n case arrow.Interval:\n const intervalUnit = (arrowType as arrow.Interval).unit;\n switch (intervalUnit) {\n case arrow.IntervalUnit.DAY_TIME:\n return 'interval-daytime';\n case arrow.IntervalUnit.YEAR_MONTH:\n return 'interval-yearmonth';\n default:\n return 'interval-daytime';\n }\n case arrow.IntervalDayTime:\n return 'interval-daytime';\n case arrow.IntervalYearMonth:\n return 'interval-yearmonth';\n case arrow.List:\n const listType = arrowType as arrow.List;\n const listField = listType.valueField;\n return {\n type: 'list',\n children: [serializeArrowField(listField)]\n };\n case arrow.FixedSizeList:\n return {\n type: 'fixed-size-list',\n listSize: (arrowType as arrow.FixedSizeList).listSize,\n children: [serializeArrowField((arrowType as arrow.FixedSizeList).children[0])]\n };\n // case arrow.Struct:\n // return {type: 'struct', children: (arrowType as arrow.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): arrow.DataType {\n if (typeof dataType === 'object') {\n switch (dataType.type) {\n case 'list':\n const field = deserializeArrowField(dataType.children[0]);\n return new arrow.List(field);\n case 'fixed-size-list':\n const child = deserializeArrowField(dataType.children[0]);\n return new arrow.FixedSizeList(dataType.listSize, child);\n case 'struct':\n const children = dataType.children.map((arrowField) => deserializeArrowField(arrowField));\n return new arrow.Struct(children);\n default:\n throw new Error('array type not supported');\n }\n }\n\n switch (dataType) {\n case 'null':\n return new arrow.Null();\n case 'binary':\n return new arrow.Binary();\n case 'bool':\n return new arrow.Bool();\n case 'int8':\n return new arrow.Int8();\n case 'int16':\n return new arrow.Int16();\n case 'int32':\n return new arrow.Int32();\n case 'int64':\n return new arrow.Int64();\n case 'uint8':\n return new arrow.Uint8();\n case 'uint16':\n return new arrow.Uint16();\n case 'uint32':\n return new arrow.Uint32();\n case 'uint64':\n return new arrow.Uint64();\n case 'float16':\n return new arrow.Float16();\n case 'float32':\n return new arrow.Float32();\n case 'float64':\n return new arrow.Float64();\n case 'utf8':\n return new arrow.Utf8();\n case 'date-day':\n return new arrow.DateDay();\n case 'date-millisecond':\n return new arrow.DateMillisecond();\n case 'time-second':\n return new arrow.TimeSecond();\n case 'time-millisecond':\n return new arrow.TimeMillisecond();\n case 'time-microsecond':\n return new arrow.TimeMicrosecond();\n case 'time-nanosecond':\n return new arrow.TimeNanosecond();\n case 'timestamp-second':\n return new arrow.TimestampSecond();\n case 'timestamp-millisecond':\n return new arrow.TimestampMillisecond();\n case 'timestamp-microsecond':\n return new arrow.TimestampMicrosecond();\n case 'timestamp-nanosecond':\n return new arrow.TimestampNanosecond();\n case 'interval-daytime':\n return new arrow.IntervalDayTime();\n case 'interval-yearmonth':\n return new arrow.IntervalYearMonth();\n default:\n throw new Error('array type not supported');\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ColumnarTable, ObjectRowTable } from '@loaders.gl/schema';
|
|
2
|
-
import type
|
|
3
|
-
import type { ArrowTable } from '
|
|
2
|
+
import type * as arrow from 'apache-arrow';
|
|
3
|
+
import type { ArrowTable } from '../lib/arrow-table';
|
|
4
4
|
/**
|
|
5
5
|
* Wrap an apache arrow table in a loaders.gl table wrapper.
|
|
6
6
|
* From this additional conversions are available.
|
|
7
7
|
* @param arrowTable
|
|
8
8
|
* @returns
|
|
9
9
|
*/
|
|
10
|
-
export declare function convertApacheArrowToArrowTable(arrowTable:
|
|
10
|
+
export declare function convertApacheArrowToArrowTable(arrowTable: arrow.Table): ArrowTable;
|
|
11
11
|
/**
|
|
12
12
|
* Convert an Apache Arrow table to a ColumnarTable
|
|
13
13
|
* @note Currently does not convert schema
|
|
@@ -18,4 +18,4 @@ export declare function convertArrowToColumnarTable(table: ArrowTable): Columnar
|
|
|
18
18
|
* @note - should be part of schema module
|
|
19
19
|
*/
|
|
20
20
|
export declare function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable;
|
|
21
|
-
//# sourceMappingURL=convert-table.d.ts.map
|
|
21
|
+
//# sourceMappingURL=convert-arrow-to-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-arrow-to-table.d.ts","sourceRoot":"","sources":["../../src/tables/convert-arrow-to-table.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAKlF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAkB5E;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,aAAa,GAAG,cAAc,CAmB5F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-arrow-to-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/tables/convert-arrow-to-table.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {ColumnarTable, ObjectRowTable} from '@loaders.gl/schema';\nimport type * as arrow from 'apache-arrow';\nimport type {ArrowTable} from '../lib/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: arrow.Table): 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":"AAaA,OAAO,SAASA,8BAA8BA,CAACC,UAAuB,EAAc;EAClF,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-table-to-arrow.d.ts","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"convert-table-to-arrow.d.ts","sourceRoot":"","sources":["../../src/tables/convert-table-to-arrow.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-table-to-arrow.js","names":[],"sources":["../../src/
|
|
1
|
+
{"version":3,"file":"convert-table-to-arrow.js","names":[],"sources":["../../src/tables/convert-table-to-arrow.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n// import {\n// Table as ApacheArrowTable,\n// Schema as ApacheArrowSchema,\n// RecordBatch,\n// FixedSizeList,\n// Field,\n// Data,\n// FixedSizeListVector\n// } from 'apache-arrow/Arrow.dom';\n// import {AbstractVector} from 'apache-arrow/vector';\n\n// import {Table} from '../../types/category-table';\n// import {getArrowType, getArrowVector} from './arrow-type-utils';\n// import {makeMeshAttributeMetadata} from './deduce-mesh-schema';\n// import {getTableLength, getTableNumCols} from './table-accessors';\n\n/**\n * * Convert a loaders.gl Mesh to an Apache Arrow Table\n * @param mesh\n * @param metadata\n * @param batchSize\n * @returns\n *\nexport function convertTableToArrow(table: Table, options?: {batchSize?: number}): ArrowTable {\n const vectors: AbstractVector[] = [];\n const fields: Field[] = [];\n\n const length = getTableLength(table);\n const batchSize = options?.batchSize || length;\n\n const recordBatches: RecordBatch[] = [];\n for (let i = 0; i < length; i += batchSize) {\n for (let columnIndex = 0; columnIndex < getTableNumCols(table); ++columnIndex) {\n const field_ = table.schema.fields[columnIndex];\n const column = getTableColumnAt(table, columnIndex, i, batchSize);\n const type = getArrowType(column);\n const vector = getArrowVector(column);\n const listType = new FixedSizeList(size, new Field('value', type));\n const field = new Field(field_.name, listType, false, makeMeshAttributeMetadata(attribute));\n const data = new Data(listType, 0, value.length / size, 0, undefined, [vector]);\n const listVector = new FixedSizeListVector(data);\n vectors.push(listVector);\n fields.push(field);\n }\n\n for (const attributeKey in table.columns) {\n const attribute = mesh.attributes[attributeKey];\n const {value, size = 1} = attribute;\n }\n\n const schema = new ApacheArrowSchema(fields, table?.schema?.metadata || new Map<string, string>());\n const recordBatch = new RecordBatch(schema, vectors[0].length, vectors);\n const apacheArrowTable = new ApacheArrowTable(schema, recordBatch);\n\n return apacheArrowTable;\n}\n*/\n"],"mappings":""}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,KAAK,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;AAElG,KAAK,eAAe,GAAG,YAAY,GAAG,YAAY,CAAC;AAEnD,KAAK,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAEnD,oBAAY,YAAY;IACtB,KAAK,IAAA;IACL,IAAI,IAAA;CACL"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["VECTOR_TYPES"],"sources":["../src/types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"types.js","names":["VECTOR_TYPES"],"sources":["../src/types.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\ntype TypedIntArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array;\n\ntype TypedFloatArray = Float32Array | Float64Array;\n\ntype TypedArray = TypedIntArray | TypedFloatArray;\n\nexport type AnyArrayType = Array<any> | TypedArray;\n\nexport enum VECTOR_TYPES {\n FLOAT,\n DATE\n}\n"],"mappings":"AAWA,WAAYA,YAAY,aAAZA,YAAY;EAAZA,YAAY,CAAZA,YAAY;EAAZA,YAAY,CAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrow-worker.js","names":["createLoaderWorker","ArrowLoader"],"sources":["../../src/workers/arrow-worker.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"arrow-worker.js","names":["createLoaderWorker","ArrowLoader"],"sources":["../../src/workers/arrow-worker.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {ArrowLoader} from '../index';\n\ncreateLoaderWorker(ArrowLoader);\n"],"mappings":"AAGA,SAAQA,kBAAkB,QAAO,0BAA0B;AAAC,SACpDC,WAAW;AAEnBD,kBAAkB,CAACC,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/arrow",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "Simple columnar table loader for the Apache Arrow format",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -46,9 +46,10 @@
|
|
|
46
46
|
"build-worker2": "esbuild src/workers/arrow-worker.ts --bundle --outfile=dist/arrow-worker.js --platform=browser --external:{stream}"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@loaders.gl/
|
|
50
|
-
"@loaders.gl/
|
|
49
|
+
"@loaders.gl/gis": "4.0.2",
|
|
50
|
+
"@loaders.gl/loader-utils": "4.0.2",
|
|
51
|
+
"@loaders.gl/schema": "4.0.2",
|
|
51
52
|
"apache-arrow": "^13.0.0"
|
|
52
53
|
},
|
|
53
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "471058d109d5652f28c32c1f296fd632f9a5c806"
|
|
54
55
|
}
|
package/src/arrow-loader.ts
CHANGED
package/src/arrow-writer.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// import type {} from '@loaders.gl/loader-utils';
|
|
2
|
+
|
|
2
3
|
import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';
|
|
3
4
|
import {ColumnarTable} from './lib/encode-arrow';
|
|
4
5
|
import {encodeArrowSync} from './lib/encode-arrow';
|
|
@@ -23,9 +24,12 @@ export const ArrowWriter: Writer<ColumnarTable, never, ArrowWriterOptions> = {
|
|
|
23
24
|
'application/vnd.apache.arrow.stream',
|
|
24
25
|
'application/octet-stream'
|
|
25
26
|
],
|
|
26
|
-
|
|
27
|
+
binary: true,
|
|
28
|
+
options: {},
|
|
29
|
+
encode: async function encodeArrow(data, options?): Promise<ArrayBuffer> {
|
|
27
30
|
return encodeArrowSync(data);
|
|
28
31
|
},
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
encodeSync(data, options?) {
|
|
33
|
+
return encodeArrowSync(data);
|
|
34
|
+
}
|
|
31
35
|
};
|