@loaders.gl/schema 4.0.0-alpha.22 → 4.0.0-alpha.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/dist.min.js +517 -927
  2. package/dist/es5/index.js +7 -0
  3. package/dist/es5/index.js.map +1 -1
  4. package/dist/es5/lib/table/simple-table/convert-table.js +24 -0
  5. package/dist/es5/lib/table/simple-table/convert-table.js.map +1 -1
  6. package/dist/es5/types/binary-geometries.js.map +1 -1
  7. package/dist/es5/types/category-gis.js.map +1 -1
  8. package/dist/es5/types/category-table.js.map +1 -1
  9. package/dist/esm/index.js +1 -0
  10. package/dist/esm/index.js.map +1 -1
  11. package/dist/esm/lib/table/simple-table/convert-table.js +22 -0
  12. package/dist/esm/lib/table/simple-table/convert-table.js.map +1 -1
  13. package/dist/esm/types/binary-geometries.js.map +1 -1
  14. package/dist/esm/types/category-gis.js.map +1 -1
  15. package/dist/esm/types/category-table.js.map +1 -1
  16. package/dist/index.d.ts +3 -2
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/lib/table/simple-table/convert-table.d.ts +34 -1
  19. package/dist/lib/table/simple-table/convert-table.d.ts.map +1 -1
  20. package/dist/types/binary-geometries.d.ts +9 -7
  21. package/dist/types/binary-geometries.d.ts.map +1 -1
  22. package/dist/types/category-gis.d.ts +1 -1
  23. package/dist/types/category-gis.d.ts.map +1 -1
  24. package/dist/types/category-table.d.ts +21 -11
  25. package/dist/types/category-table.d.ts.map +1 -1
  26. package/package.json +2 -2
  27. package/src/index.ts +8 -4
  28. package/src/lib/table/simple-table/convert-table.ts +73 -1
  29. package/src/types/binary-geometries.ts +10 -7
  30. package/src/types/category-gis.ts +5 -4
  31. package/src/types/category-table.ts +26 -11
  32. package/dist/bundle.js +0 -5
  33. package/dist/index.js +0 -92
  34. package/dist/lib/mesh/convert-mesh.js +0 -40
  35. package/dist/lib/mesh/deduce-mesh-schema.js +0 -66
  36. package/dist/lib/mesh/mesh-to-arrow-table.js +0 -44
  37. package/dist/lib/mesh/mesh-utils.js +0 -51
  38. package/dist/lib/table/arrow/arrow-type-utils.js +0 -53
  39. package/dist/lib/table/arrow/convert-schema-arrow.js +0 -187
  40. package/dist/lib/table/arrow/convert-table-to-arrow.js +0 -57
  41. package/dist/lib/table/arrow-api/arrow-like-field.js +0 -34
  42. package/dist/lib/table/arrow-api/arrow-like-schema.js +0 -81
  43. package/dist/lib/table/arrow-api/arrow-like-table.js +0 -53
  44. package/dist/lib/table/arrow-api/arrow-like-type.js +0 -463
  45. package/dist/lib/table/arrow-api/enum.js +0 -97
  46. package/dist/lib/table/arrow-api/get-type-info.js +0 -29
  47. package/dist/lib/table/arrow-api/index.js +0 -25
  48. package/dist/lib/table/batches/base-table-batch-aggregator.js +0 -60
  49. package/dist/lib/table/batches/columnar-table-batch-aggregator.js +0 -92
  50. package/dist/lib/table/batches/row-table-batch-aggregator.js +0 -81
  51. package/dist/lib/table/batches/table-batch-aggregator.js +0 -3
  52. package/dist/lib/table/batches/table-batch-builder.js +0 -152
  53. package/dist/lib/table/simple-table/convert-table.js +0 -65
  54. package/dist/lib/table/simple-table/data-type.js +0 -93
  55. package/dist/lib/table/simple-table/make-table.js +0 -95
  56. package/dist/lib/table/simple-table/row-utils.js +0 -33
  57. package/dist/lib/table/simple-table/table-accessors.js +0 -319
  58. package/dist/lib/table/simple-table/table-column.js +0 -41
  59. package/dist/lib/table/simple-table/table-schema.js +0 -85
  60. package/dist/lib/utils/assert.js +0 -12
  61. package/dist/lib/utils/async-queue.js +0 -92
  62. package/dist/types/binary-geometries.js +0 -2
  63. package/dist/types/category-gis.js +0 -3
  64. package/dist/types/category-image.js +0 -2
  65. package/dist/types/category-mesh.js +0 -3
  66. package/dist/types/category-table.js +0 -3
  67. package/dist/types/category-texture.js +0 -3
  68. package/dist/types/flat-geometries.js +0 -3
  69. package/dist/types/schema.js +0 -3
  70. 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;