@loaders.gl/schema 4.0.0-alpha.9 → 4.0.0-beta.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/dist.min.js +558 -943
- package/dist/es5/index.js +7 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/table/arrow-api/arrow-like-table.js +4 -3
- package/dist/es5/lib/table/arrow-api/arrow-like-table.js.map +1 -1
- package/dist/es5/lib/table/batches/row-table-batch-aggregator.js.map +1 -1
- package/dist/es5/lib/table/simple-table/convert-table.js +24 -0
- package/dist/es5/lib/table/simple-table/convert-table.js.map +1 -1
- package/dist/es5/lib/table/simple-table/table-accessors.js +69 -42
- package/dist/es5/lib/table/simple-table/table-accessors.js.map +1 -1
- package/dist/es5/types/batch.js +2 -0
- package/dist/es5/types/batch.js.map +1 -0
- package/dist/es5/types/binary-geometries.js +2 -0
- package/dist/es5/types/binary-geometries.js.map +1 -0
- package/dist/es5/types/category-gis.js.map +1 -1
- package/dist/es5/types/category-image.js.map +1 -1
- package/dist/es5/types/category-table.js.map +1 -1
- package/dist/es5/types/flat-geometries.js +2 -0
- package/dist/es5/types/flat-geometries.js.map +1 -0
- package/dist/es5/types/schema.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/table/arrow-api/arrow-like-table.js +4 -3
- package/dist/esm/lib/table/arrow-api/arrow-like-table.js.map +1 -1
- package/dist/esm/lib/table/batches/row-table-batch-aggregator.js.map +1 -1
- package/dist/esm/lib/table/simple-table/convert-table.js +22 -0
- package/dist/esm/lib/table/simple-table/convert-table.js.map +1 -1
- package/dist/esm/lib/table/simple-table/table-accessors.js +49 -22
- package/dist/esm/lib/table/simple-table/table-accessors.js.map +1 -1
- package/dist/esm/types/batch.js +2 -0
- package/dist/esm/types/batch.js.map +1 -0
- package/dist/esm/types/binary-geometries.js +2 -0
- package/dist/esm/types/binary-geometries.js.map +1 -0
- package/dist/esm/types/category-gis.js.map +1 -1
- package/dist/esm/types/category-image.js.map +1 -1
- package/dist/esm/types/category-table.js.map +1 -1
- package/dist/esm/types/flat-geometries.js +2 -0
- package/dist/esm/types/flat-geometries.js.map +1 -0
- package/dist/esm/types/schema.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/table/arrow-api/arrow-like-table.d.ts +1 -5
- package/dist/lib/table/arrow-api/arrow-like-table.d.ts.map +1 -1
- package/dist/lib/table/batches/row-table-batch-aggregator.d.ts +3 -3
- package/dist/lib/table/batches/row-table-batch-aggregator.d.ts.map +1 -1
- package/dist/lib/table/simple-table/convert-table.d.ts +34 -1
- package/dist/lib/table/simple-table/convert-table.d.ts.map +1 -1
- package/dist/lib/table/simple-table/table-accessors.d.ts.map +1 -1
- package/dist/types/batch.d.ts +34 -0
- package/dist/types/batch.d.ts.map +1 -0
- package/dist/types/binary-geometries.d.ts +56 -0
- package/dist/types/binary-geometries.d.ts.map +1 -0
- package/dist/types/category-gis.d.ts +3 -84
- package/dist/types/category-gis.d.ts.map +1 -1
- package/dist/types/category-image.d.ts +1 -1
- package/dist/types/category-image.d.ts.map +1 -1
- package/dist/types/category-table.d.ts +42 -22
- package/dist/types/category-table.d.ts.map +1 -1
- package/dist/types/flat-geometries.d.ts +30 -0
- package/dist/types/flat-geometries.d.ts.map +1 -0
- package/dist/types/schema.d.ts +0 -15
- package/dist/types/schema.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +13 -7
- package/src/lib/table/arrow-api/arrow-like-table.ts +3 -2
- package/src/lib/table/batches/row-table-batch-aggregator.ts +2 -2
- package/src/lib/table/simple-table/convert-table.ts +73 -1
- package/src/lib/table/simple-table/table-accessors.ts +56 -22
- package/src/types/batch.ts +41 -0
- package/src/types/binary-geometries.ts +62 -0
- package/src/types/category-gis.ts +30 -104
- package/src/types/category-image.ts +1 -1
- package/src/types/category-table.ts +49 -27
- package/src/types/flat-geometries.ts +40 -0
- package/src/types/schema.ts +0 -17
- package/dist/bundle.js +0 -5
- package/dist/index.js +0 -92
- package/dist/lib/mesh/convert-mesh.js +0 -40
- package/dist/lib/mesh/deduce-mesh-schema.js +0 -66
- package/dist/lib/mesh/mesh-to-arrow-table.js +0 -44
- package/dist/lib/mesh/mesh-utils.js +0 -51
- package/dist/lib/table/arrow/arrow-type-utils.js +0 -53
- package/dist/lib/table/arrow/convert-schema-arrow.js +0 -187
- package/dist/lib/table/arrow/convert-table-to-arrow.js +0 -57
- package/dist/lib/table/arrow-api/arrow-like-field.js +0 -34
- package/dist/lib/table/arrow-api/arrow-like-schema.js +0 -81
- package/dist/lib/table/arrow-api/arrow-like-table.js +0 -53
- package/dist/lib/table/arrow-api/arrow-like-type.js +0 -463
- package/dist/lib/table/arrow-api/enum.js +0 -97
- package/dist/lib/table/arrow-api/get-type-info.js +0 -29
- package/dist/lib/table/arrow-api/index.js +0 -25
- package/dist/lib/table/batches/base-table-batch-aggregator.js +0 -60
- package/dist/lib/table/batches/columnar-table-batch-aggregator.js +0 -92
- package/dist/lib/table/batches/row-table-batch-aggregator.js +0 -81
- package/dist/lib/table/batches/table-batch-aggregator.js +0 -3
- package/dist/lib/table/batches/table-batch-builder.js +0 -152
- package/dist/lib/table/simple-table/convert-table.js +0 -65
- package/dist/lib/table/simple-table/data-type.js +0 -93
- package/dist/lib/table/simple-table/make-table.js +0 -95
- package/dist/lib/table/simple-table/row-utils.js +0 -33
- package/dist/lib/table/simple-table/table-accessors.js +0 -319
- package/dist/lib/table/simple-table/table-column.js +0 -41
- package/dist/lib/table/simple-table/table-schema.js +0 -85
- package/dist/lib/utils/assert.js +0 -12
- package/dist/lib/utils/async-queue.js +0 -92
- package/dist/types/category-gis.js +0 -2
- package/dist/types/category-image.js +0 -2
- package/dist/types/category-mesh.js +0 -3
- package/dist/types/category-table.js +0 -3
- package/dist/types/category-texture.js +0 -3
- package/dist/types/schema.js +0 -3
- package/dist/types/types.js +0 -2
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// loaders.gl, MIT license
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.deserializeArrowType = exports.serializeArrowType = exports.deserializeArrowField = exports.serializeArrowField = exports.deserializeArrowMetadata = exports.serializeArrowMetadata = exports.deserializeArrowSchema = exports.serializeArrowSchema = void 0;
|
|
5
|
-
const Arrow_dom_1 = require("apache-arrow/Arrow.dom");
|
|
6
|
-
function serializeArrowSchema(arrowSchema) {
|
|
7
|
-
return {
|
|
8
|
-
fields: arrowSchema.fields.map((arrowField) => serializeArrowField(arrowField)),
|
|
9
|
-
metadata: serializeArrowMetadata(arrowSchema.metadata)
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
exports.serializeArrowSchema = serializeArrowSchema;
|
|
13
|
-
function deserializeArrowSchema(schema) {
|
|
14
|
-
return new Arrow_dom_1.Schema(schema.fields.map((field) => deserializeArrowField(field)), deserializeArrowMetadata(schema.metadata));
|
|
15
|
-
}
|
|
16
|
-
exports.deserializeArrowSchema = deserializeArrowSchema;
|
|
17
|
-
function serializeArrowMetadata(arrowMetadata) {
|
|
18
|
-
return Object.fromEntries(arrowMetadata);
|
|
19
|
-
}
|
|
20
|
-
exports.serializeArrowMetadata = serializeArrowMetadata;
|
|
21
|
-
function deserializeArrowMetadata(metadata) {
|
|
22
|
-
return metadata ? new Map(Object.entries(metadata)) : new Map();
|
|
23
|
-
}
|
|
24
|
-
exports.deserializeArrowMetadata = deserializeArrowMetadata;
|
|
25
|
-
function serializeArrowField(field) {
|
|
26
|
-
return {
|
|
27
|
-
name: field.name,
|
|
28
|
-
type: serializeArrowType(field.type),
|
|
29
|
-
nullable: field.nullable,
|
|
30
|
-
metadata: serializeArrowMetadata(field.metadata)
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
exports.serializeArrowField = serializeArrowField;
|
|
34
|
-
function deserializeArrowField(field) {
|
|
35
|
-
return new Arrow_dom_1.Field(field.name, deserializeArrowType(field.type), field.nullable, deserializeArrowMetadata(field.metadata));
|
|
36
|
-
}
|
|
37
|
-
exports.deserializeArrowField = deserializeArrowField;
|
|
38
|
-
/** Converts a serializable loaders.gl data type to hydrated arrow data type */
|
|
39
|
-
// eslint-disable-next-line complexity
|
|
40
|
-
function serializeArrowType(arrowType) {
|
|
41
|
-
switch (arrowType.constructor) {
|
|
42
|
-
case Arrow_dom_1.Null:
|
|
43
|
-
return 'null';
|
|
44
|
-
case Arrow_dom_1.Binary:
|
|
45
|
-
return 'binary';
|
|
46
|
-
case Arrow_dom_1.Bool:
|
|
47
|
-
return 'bool';
|
|
48
|
-
// case Int: return 'int';
|
|
49
|
-
case Arrow_dom_1.Int8:
|
|
50
|
-
return 'int8';
|
|
51
|
-
case Arrow_dom_1.Int16:
|
|
52
|
-
return 'int16';
|
|
53
|
-
case Arrow_dom_1.Int32:
|
|
54
|
-
return 'int32';
|
|
55
|
-
case Arrow_dom_1.Int64:
|
|
56
|
-
return 'int64';
|
|
57
|
-
case Arrow_dom_1.Uint8:
|
|
58
|
-
return 'uint8';
|
|
59
|
-
case Arrow_dom_1.Uint16:
|
|
60
|
-
return 'uint16';
|
|
61
|
-
case Arrow_dom_1.Uint32:
|
|
62
|
-
return 'uint32';
|
|
63
|
-
case Arrow_dom_1.Uint64:
|
|
64
|
-
return 'uint64';
|
|
65
|
-
// case Float: return 'float';
|
|
66
|
-
case Arrow_dom_1.Float16:
|
|
67
|
-
return 'float16';
|
|
68
|
-
case Arrow_dom_1.Float32:
|
|
69
|
-
return 'float32';
|
|
70
|
-
case Arrow_dom_1.Float64:
|
|
71
|
-
return 'float64';
|
|
72
|
-
case Arrow_dom_1.Utf8:
|
|
73
|
-
return 'utf8';
|
|
74
|
-
// case Date: return 'date';
|
|
75
|
-
case Arrow_dom_1.DateDay:
|
|
76
|
-
return 'date-day';
|
|
77
|
-
case Arrow_dom_1.DateMillisecond:
|
|
78
|
-
return 'date-millisecond';
|
|
79
|
-
// case Time: return 'time';
|
|
80
|
-
case Arrow_dom_1.TimeMillisecond:
|
|
81
|
-
return 'time-millisecond';
|
|
82
|
-
case Arrow_dom_1.TimeSecond:
|
|
83
|
-
return 'time-second';
|
|
84
|
-
// case Timestamp: return 'timestamp';
|
|
85
|
-
case Arrow_dom_1.TimestampSecond:
|
|
86
|
-
return 'timestamp-second';
|
|
87
|
-
case Arrow_dom_1.TimestampMillisecond:
|
|
88
|
-
return 'timestamp-millisecond';
|
|
89
|
-
case Arrow_dom_1.TimestampMicrosecond:
|
|
90
|
-
return 'timestamp-microsecond';
|
|
91
|
-
case Arrow_dom_1.TimestampNanosecond:
|
|
92
|
-
return 'timestamp-nanosecond';
|
|
93
|
-
// case Interval: return 'interval';
|
|
94
|
-
case Arrow_dom_1.IntervalDayTime:
|
|
95
|
-
return 'interval-daytime';
|
|
96
|
-
case Arrow_dom_1.IntervalYearMonth:
|
|
97
|
-
return 'interval-yearmonth';
|
|
98
|
-
case Arrow_dom_1.FixedSizeList:
|
|
99
|
-
return {
|
|
100
|
-
type: 'fixed-size-list',
|
|
101
|
-
listSize: arrowType.listSize,
|
|
102
|
-
children: [serializeArrowField(arrowType.children[0])]
|
|
103
|
-
};
|
|
104
|
-
// case Struct:
|
|
105
|
-
// return {type: 'struct', children: (arrowType as Struct).children};
|
|
106
|
-
default:
|
|
107
|
-
throw new Error('array type not supported');
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
exports.serializeArrowType = serializeArrowType;
|
|
111
|
-
/** Converts a serializable loaders.gl data type to hydrated arrow data type */
|
|
112
|
-
// eslint-disable-next-line complexity
|
|
113
|
-
function deserializeArrowType(dataType) {
|
|
114
|
-
if (typeof dataType === 'object') {
|
|
115
|
-
switch (dataType.type) {
|
|
116
|
-
case 'fixed-size-list':
|
|
117
|
-
const child = deserializeArrowField(dataType.children[0]);
|
|
118
|
-
return new Arrow_dom_1.FixedSizeList(dataType.listSize, child);
|
|
119
|
-
case 'struct':
|
|
120
|
-
const children = dataType.children.map((arrowField) => deserializeArrowField(arrowField));
|
|
121
|
-
return new Arrow_dom_1.Struct(children);
|
|
122
|
-
default:
|
|
123
|
-
throw new Error('array type not supported');
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
switch (dataType) {
|
|
127
|
-
case 'null':
|
|
128
|
-
return new Arrow_dom_1.Null();
|
|
129
|
-
case 'binary':
|
|
130
|
-
return new Arrow_dom_1.Binary();
|
|
131
|
-
case 'bool':
|
|
132
|
-
return new Arrow_dom_1.Bool();
|
|
133
|
-
// case 'int': return new Int();
|
|
134
|
-
case 'int8':
|
|
135
|
-
return new Arrow_dom_1.Int8();
|
|
136
|
-
case 'int16':
|
|
137
|
-
return new Arrow_dom_1.Int16();
|
|
138
|
-
case 'int32':
|
|
139
|
-
return new Arrow_dom_1.Int32();
|
|
140
|
-
case 'int64':
|
|
141
|
-
return new Arrow_dom_1.Int64();
|
|
142
|
-
case 'uint8':
|
|
143
|
-
return new Arrow_dom_1.Uint8();
|
|
144
|
-
case 'uint16':
|
|
145
|
-
return new Arrow_dom_1.Uint16();
|
|
146
|
-
case 'uint32':
|
|
147
|
-
return new Arrow_dom_1.Uint32();
|
|
148
|
-
case 'uint64':
|
|
149
|
-
return new Arrow_dom_1.Uint64();
|
|
150
|
-
// case 'float': return new Float();
|
|
151
|
-
case 'float16':
|
|
152
|
-
return new Arrow_dom_1.Float16();
|
|
153
|
-
case 'float32':
|
|
154
|
-
return new Arrow_dom_1.Float32();
|
|
155
|
-
case 'float64':
|
|
156
|
-
return new Arrow_dom_1.Float64();
|
|
157
|
-
case 'utf8':
|
|
158
|
-
return new Arrow_dom_1.Utf8();
|
|
159
|
-
// case 'date': return new Date();
|
|
160
|
-
case 'date-day':
|
|
161
|
-
return new Arrow_dom_1.DateDay();
|
|
162
|
-
case 'date-millisecond':
|
|
163
|
-
return new Arrow_dom_1.DateMillisecond();
|
|
164
|
-
// case 'time': return new Time();
|
|
165
|
-
case 'time-millisecond':
|
|
166
|
-
return new Arrow_dom_1.TimeMillisecond();
|
|
167
|
-
case 'time-second':
|
|
168
|
-
return new Arrow_dom_1.TimeSecond();
|
|
169
|
-
// case 'timestamp': return new Timestamp();
|
|
170
|
-
case 'timestamp-second':
|
|
171
|
-
return new Arrow_dom_1.TimestampSecond();
|
|
172
|
-
case 'timestamp-millisecond':
|
|
173
|
-
return new Arrow_dom_1.TimestampMillisecond();
|
|
174
|
-
case 'timestamp-microsecond':
|
|
175
|
-
return new Arrow_dom_1.TimestampMicrosecond();
|
|
176
|
-
case 'timestamp-nanosecond':
|
|
177
|
-
return new Arrow_dom_1.TimestampNanosecond();
|
|
178
|
-
// case 'interval': return new Interval();
|
|
179
|
-
case 'interval-daytime':
|
|
180
|
-
return new Arrow_dom_1.IntervalDayTime();
|
|
181
|
-
case 'interval-yearmonth':
|
|
182
|
-
return new Arrow_dom_1.IntervalYearMonth();
|
|
183
|
-
default:
|
|
184
|
-
throw new Error('array type not supported');
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
exports.deserializeArrowType = deserializeArrowType;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// loaders.gl, MIT license
|
|
3
|
-
// import {
|
|
4
|
-
// Table as ApacheArrowTable,
|
|
5
|
-
// Schema as ApacheArrowSchema,
|
|
6
|
-
// RecordBatch,
|
|
7
|
-
// FixedSizeList,
|
|
8
|
-
// Field,
|
|
9
|
-
// Data,
|
|
10
|
-
// FixedSizeListVector
|
|
11
|
-
// } from 'apache-arrow/Arrow.dom';
|
|
12
|
-
// import {AbstractVector} from 'apache-arrow/vector';
|
|
13
|
-
// import {Table} from '../../types/category-table';
|
|
14
|
-
// import {getArrowType, getArrowVector} from './arrow-type-utils';
|
|
15
|
-
// import {makeMeshAttributeMetadata} from './deduce-mesh-schema';
|
|
16
|
-
// import {getTableLength, getTableNumCols} from './table-accessors';
|
|
17
|
-
/**
|
|
18
|
-
* * Convert a loaders.gl Mesh to an Apache Arrow Table
|
|
19
|
-
* @param mesh
|
|
20
|
-
* @param metadata
|
|
21
|
-
* @param batchSize
|
|
22
|
-
* @returns
|
|
23
|
-
*
|
|
24
|
-
export function convertTableToArrow(table: Table, options?: {batchSize?: number}): ArrowTable {
|
|
25
|
-
const vectors: AbstractVector[] = [];
|
|
26
|
-
const fields: Field[] = [];
|
|
27
|
-
|
|
28
|
-
const length = getTableLength(table);
|
|
29
|
-
const batchSize = options?.batchSize || length;
|
|
30
|
-
|
|
31
|
-
const recordBatches: RecordBatch[] = [];
|
|
32
|
-
for (let i = 0; i < length; i += batchSize) {
|
|
33
|
-
for (let columnIndex = 0; columnIndex < getTableNumCols(table); ++columnIndex) {
|
|
34
|
-
const field_ = table.schema.fields[columnIndex];
|
|
35
|
-
const column = getTableColumnAt(table, columnIndex, i, batchSize);
|
|
36
|
-
const type = getArrowType(column);
|
|
37
|
-
const vector = getArrowVector(column);
|
|
38
|
-
const listType = new FixedSizeList(size, new Field('value', type));
|
|
39
|
-
const field = new Field(field_.name, listType, false, makeMeshAttributeMetadata(attribute));
|
|
40
|
-
const data = new Data(listType, 0, value.length / size, 0, undefined, [vector]);
|
|
41
|
-
const listVector = new FixedSizeListVector(data);
|
|
42
|
-
vectors.push(listVector);
|
|
43
|
-
fields.push(field);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
for (const attributeKey in table.columns) {
|
|
47
|
-
const attribute = mesh.attributes[attributeKey];
|
|
48
|
-
const {value, size = 1} = attribute;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const schema = new ApacheArrowSchema(fields, table?.schema?.metadata || new Map<string, string>());
|
|
52
|
-
const recordBatch = new RecordBatch(schema, vectors[0].length, vectors);
|
|
53
|
-
const apacheArrowTable = new ApacheArrowTable(schema, recordBatch);
|
|
54
|
-
|
|
55
|
-
return apacheArrowTable;
|
|
56
|
-
}
|
|
57
|
-
*/
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// loaders.gl, MIT license
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ArrowLikeField = void 0;
|
|
5
|
-
/**
|
|
6
|
-
* ArrowJS `Field` API-compatible class for row-based tables
|
|
7
|
-
* https://loaders.gl/arrowjs/docs/api-reference/field
|
|
8
|
-
* A field holds name, nullable, and metadata information about a table "column"
|
|
9
|
-
* A Schema is essentially a list of fields
|
|
10
|
-
*/
|
|
11
|
-
class ArrowLikeField {
|
|
12
|
-
constructor(name, type, nullable = false, metadata = new Map()) {
|
|
13
|
-
this.name = name;
|
|
14
|
-
this.type = type;
|
|
15
|
-
this.nullable = nullable;
|
|
16
|
-
this.metadata = metadata;
|
|
17
|
-
}
|
|
18
|
-
get typeId() {
|
|
19
|
-
return this.type && this.type.typeId;
|
|
20
|
-
}
|
|
21
|
-
clone() {
|
|
22
|
-
return new ArrowLikeField(this.name, this.type, this.nullable, this.metadata);
|
|
23
|
-
}
|
|
24
|
-
compareTo(other) {
|
|
25
|
-
return (this.name === other.name &&
|
|
26
|
-
this.type === other.type &&
|
|
27
|
-
this.nullable === other.nullable &&
|
|
28
|
-
this.metadata === other.metadata);
|
|
29
|
-
}
|
|
30
|
-
toString() {
|
|
31
|
-
return `${this.type}${this.nullable ? ', nullable' : ''}${this.metadata ? `, metadata: ${this.metadata}` : ''}`;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
exports.ArrowLikeField = ArrowLikeField;
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// loaders.gl, MIT license
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ArrowLikeSchema = void 0;
|
|
5
|
-
const arrow_like_field_1 = require("./arrow-like-field");
|
|
6
|
-
class ArrowLikeSchema {
|
|
7
|
-
constructor(fields, metadata = new Map()) {
|
|
8
|
-
// checkNames(fields);
|
|
9
|
-
// For kepler fields, create arrow compatible `Fields` that have kepler fields as `metadata`
|
|
10
|
-
this.fields = fields.map((field) => new arrow_like_field_1.ArrowLikeField(field.name, field.type, field.nullable, field.metadata));
|
|
11
|
-
this.metadata =
|
|
12
|
-
metadata instanceof Map ? metadata : new Map(Object.entries(metadata));
|
|
13
|
-
}
|
|
14
|
-
// TODO - arrow only seems to compare fields, not metadata
|
|
15
|
-
compareTo(other) {
|
|
16
|
-
if (this.metadata !== other.metadata) {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
if (this.fields.length !== other.fields.length) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
for (let i = 0; i < this.fields.length; ++i) {
|
|
23
|
-
if (!this.fields[i].compareTo(other.fields[i])) {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
select(...columnNames) {
|
|
30
|
-
// Ensure column names reference valid fields
|
|
31
|
-
const nameMap = Object.create(null);
|
|
32
|
-
for (const name of columnNames) {
|
|
33
|
-
nameMap[name] = true;
|
|
34
|
-
}
|
|
35
|
-
const selectedFields = this.fields.filter((field) => nameMap[field.name]);
|
|
36
|
-
return new ArrowLikeSchema(selectedFields, this.metadata);
|
|
37
|
-
}
|
|
38
|
-
selectAt(...columnIndices) {
|
|
39
|
-
// Ensure column indices reference valid fields
|
|
40
|
-
const selectedFields = columnIndices.map((index) => this.fields[index]).filter(Boolean);
|
|
41
|
-
return new ArrowLikeSchema(selectedFields, this.metadata);
|
|
42
|
-
}
|
|
43
|
-
assign(schemaOrFields) {
|
|
44
|
-
let fields;
|
|
45
|
-
let metadata = this.metadata;
|
|
46
|
-
if (schemaOrFields instanceof ArrowLikeSchema) {
|
|
47
|
-
const otherArrowLikeSchema = schemaOrFields;
|
|
48
|
-
fields = otherArrowLikeSchema.fields;
|
|
49
|
-
metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherArrowLikeSchema.metadata);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
fields = schemaOrFields;
|
|
53
|
-
}
|
|
54
|
-
// Create a merged list of fields, overwrite fields in place, new fields at end
|
|
55
|
-
const fieldMap = Object.create(null);
|
|
56
|
-
for (const field of this.fields) {
|
|
57
|
-
fieldMap[field.name] = field;
|
|
58
|
-
}
|
|
59
|
-
for (const field of fields) {
|
|
60
|
-
fieldMap[field.name] = field;
|
|
61
|
-
}
|
|
62
|
-
const mergedFields = Object.values(fieldMap);
|
|
63
|
-
return new ArrowLikeSchema(mergedFields, metadata);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
exports.ArrowLikeSchema = ArrowLikeSchema;
|
|
67
|
-
// Warn if any duplicated field names
|
|
68
|
-
// function checkNames(fields: Field[]): void {
|
|
69
|
-
// const usedNames: Record<string, boolean> = {};
|
|
70
|
-
// for (const field of fields) {
|
|
71
|
-
// if (usedNames[field.name]) {
|
|
72
|
-
// // eslint-disable-next-line
|
|
73
|
-
// console.warn('ArrowLikeSchema: duplicated field name', field.name, field);
|
|
74
|
-
// }
|
|
75
|
-
// usedNames[field.name] = true;
|
|
76
|
-
// }
|
|
77
|
-
// }
|
|
78
|
-
function mergeMaps(m1, m2) {
|
|
79
|
-
// @ts-ignore
|
|
80
|
-
return new Map([...(m1 || new Map()), ...(m2 || new Map())]);
|
|
81
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// loaders.gl, MIT license
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ArrowLikeTable = void 0;
|
|
5
|
-
const arrow_like_schema_1 = require("./arrow-like-schema");
|
|
6
|
-
const table_schema_1 = require("../simple-table/table-schema");
|
|
7
|
-
const table_accessors_1 = require("../simple-table/table-accessors");
|
|
8
|
-
class ArrowLikeVector {
|
|
9
|
-
constructor(table, columnName) {
|
|
10
|
-
this.table = table;
|
|
11
|
-
this.columnName = columnName;
|
|
12
|
-
}
|
|
13
|
-
get(rowIndex) {
|
|
14
|
-
return (0, table_accessors_1.getTableCell)(this.table, rowIndex, this.columnName);
|
|
15
|
-
}
|
|
16
|
-
toArray() {
|
|
17
|
-
switch (this.table.shape) {
|
|
18
|
-
case 'arrow-table':
|
|
19
|
-
return this.table.data.getChild(this.columnName)?.toArray();
|
|
20
|
-
case 'columnar-table':
|
|
21
|
-
return this.table.data[this.columnName];
|
|
22
|
-
default:
|
|
23
|
-
throw new Error(this.table.shape);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Class that provides an API similar to Apache Arrow Table class
|
|
29
|
-
* Forwards methods directly if the underlying table is Arrow, otherwise calls accessor functions
|
|
30
|
-
*/
|
|
31
|
-
class ArrowLikeTable {
|
|
32
|
-
constructor(table) {
|
|
33
|
-
const schema = table.schema || (0, table_schema_1.deduceTableSchema)(table);
|
|
34
|
-
this.schema = new arrow_like_schema_1.ArrowLikeSchema(schema.fields, schema.metadata);
|
|
35
|
-
this.table = { ...table, schema };
|
|
36
|
-
}
|
|
37
|
-
// get schema() {
|
|
38
|
-
// return this.table.schema;
|
|
39
|
-
// }
|
|
40
|
-
get data() {
|
|
41
|
-
return this.table.data;
|
|
42
|
-
}
|
|
43
|
-
get numCols() {
|
|
44
|
-
return (0, table_accessors_1.getTableNumCols)(this.table);
|
|
45
|
-
}
|
|
46
|
-
get length() {
|
|
47
|
-
return (0, table_accessors_1.getTableLength)(this.table);
|
|
48
|
-
}
|
|
49
|
-
getChild(columnName) {
|
|
50
|
-
return new ArrowLikeVector(this.table, columnName);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
exports.ArrowLikeTable = ArrowLikeTable;
|