@loaders.gl/schema 3.1.0-beta.4 → 3.1.0
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/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/category/mesh/convert-mesh.js +10 -2
- package/dist/es5/category/mesh/convert-mesh.js.map +1 -1
- package/dist/es5/category/mesh/deduce-mesh-schema.js +8 -8
- package/dist/es5/category/mesh/deduce-mesh-schema.js.map +1 -1
- package/dist/es5/category/mesh/mesh-utils.js +16 -16
- package/dist/es5/category/mesh/mesh-utils.js.map +1 -1
- package/dist/es5/category/table/deduce-table-schema.js +9 -9
- package/dist/es5/category/table/deduce-table-schema.js.map +1 -1
- package/dist/es5/index.js +52 -52
- package/dist/es5/lib/arrow/get-type-info.js +3 -3
- package/dist/es5/lib/arrow/get-type-info.js.map +1 -1
- package/dist/es5/lib/batches/base-table-batch-aggregator.js +53 -42
- package/dist/es5/lib/batches/base-table-batch-aggregator.js.map +1 -1
- package/dist/es5/lib/batches/columnar-table-batch-aggregator.js +90 -71
- package/dist/es5/lib/batches/columnar-table-batch-aggregator.js.map +1 -1
- package/dist/es5/lib/batches/row-table-batch-aggregator.js +70 -59
- package/dist/es5/lib/batches/row-table-batch-aggregator.js.map +1 -1
- package/dist/es5/lib/batches/table-batch-builder.js +133 -113
- package/dist/es5/lib/batches/table-batch-builder.js.map +1 -1
- package/dist/es5/lib/schema/impl/enum.js +1 -1
- package/dist/es5/lib/schema/impl/field.js +32 -19
- package/dist/es5/lib/schema/impl/field.js.map +1 -1
- package/dist/es5/lib/schema/impl/schema.js +119 -54
- package/dist/es5/lib/schema/impl/schema.js.map +1 -1
- package/dist/es5/lib/schema/impl/type.js +728 -395
- package/dist/es5/lib/schema/impl/type.js.map +1 -1
- package/dist/es5/lib/schema/schema.js +37 -37
- package/dist/es5/lib/utils/async-queue.js +164 -81
- package/dist/es5/lib/utils/async-queue.js.map +1 -1
- package/dist/es5/lib/utils/row-utils.js +4 -4
- package/dist/es5/lib/utils/row-utils.js.map +1 -1
- package/package.json +2 -2
|
@@ -7,12 +7,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
|
|
14
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
+
|
|
10
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
17
|
|
|
12
18
|
var _assert = require("../../utils/assert");
|
|
13
19
|
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
21
|
+
|
|
22
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
23
|
+
|
|
24
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
|
+
|
|
26
|
+
var Schema = function () {
|
|
27
|
+
function Schema(fields, metadata) {
|
|
28
|
+
(0, _classCallCheck2.default)(this, Schema);
|
|
16
29
|
(0, _defineProperty2.default)(this, "fields", void 0);
|
|
17
30
|
(0, _defineProperty2.default)(this, "metadata", void 0);
|
|
18
31
|
(0, _assert.assert)(Array.isArray(fields));
|
|
@@ -21,83 +34,135 @@ class Schema {
|
|
|
21
34
|
this.metadata = metadata || new Map();
|
|
22
35
|
}
|
|
23
36
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (this.fields.length !== other.fields.length) {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
for (let i = 0; i < this.fields.length; ++i) {
|
|
34
|
-
if (!this.fields[i].compareTo(other.fields[i])) {
|
|
37
|
+
(0, _createClass2.default)(Schema, [{
|
|
38
|
+
key: "compareTo",
|
|
39
|
+
value: function compareTo(other) {
|
|
40
|
+
if (this.metadata !== other.metadata) {
|
|
35
41
|
return false;
|
|
36
42
|
}
|
|
37
|
-
}
|
|
38
43
|
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
if (this.fields.length !== other.fields.length) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
41
47
|
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
for (var i = 0; i < this.fields.length; ++i) {
|
|
49
|
+
if (!this.fields[i].compareTo(other.fields[i])) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
44
53
|
|
|
45
|
-
|
|
46
|
-
nameMap[name] = true;
|
|
54
|
+
return true;
|
|
47
55
|
}
|
|
56
|
+
}, {
|
|
57
|
+
key: "select",
|
|
58
|
+
value: function select() {
|
|
59
|
+
var nameMap = Object.create(null);
|
|
48
60
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
selectAt(...columnIndices) {
|
|
54
|
-
const selectedFields = columnIndices.map(index => this.fields[index]).filter(Boolean);
|
|
55
|
-
return new Schema(selectedFields, this.metadata);
|
|
56
|
-
}
|
|
61
|
+
for (var _len = arguments.length, columnNames = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
62
|
+
columnNames[_key] = arguments[_key];
|
|
63
|
+
}
|
|
57
64
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
for (var _i = 0, _columnNames = columnNames; _i < _columnNames.length; _i++) {
|
|
66
|
+
var name = _columnNames[_i];
|
|
67
|
+
nameMap[name] = true;
|
|
68
|
+
}
|
|
61
69
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
} else {
|
|
67
|
-
fields = schemaOrFields;
|
|
70
|
+
var selectedFields = this.fields.filter(function (field) {
|
|
71
|
+
return nameMap[field.name];
|
|
72
|
+
});
|
|
73
|
+
return new Schema(selectedFields, this.metadata);
|
|
68
74
|
}
|
|
75
|
+
}, {
|
|
76
|
+
key: "selectAt",
|
|
77
|
+
value: function selectAt() {
|
|
78
|
+
var _this = this;
|
|
69
79
|
|
|
70
|
-
|
|
80
|
+
for (var _len2 = arguments.length, columnIndices = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
81
|
+
columnIndices[_key2] = arguments[_key2];
|
|
82
|
+
}
|
|
71
83
|
|
|
72
|
-
|
|
73
|
-
|
|
84
|
+
var selectedFields = columnIndices.map(function (index) {
|
|
85
|
+
return _this.fields[index];
|
|
86
|
+
}).filter(Boolean);
|
|
87
|
+
return new Schema(selectedFields, this.metadata);
|
|
74
88
|
}
|
|
89
|
+
}, {
|
|
90
|
+
key: "assign",
|
|
91
|
+
value: function assign(schemaOrFields) {
|
|
92
|
+
var fields;
|
|
93
|
+
var metadata = this.metadata;
|
|
94
|
+
|
|
95
|
+
if (schemaOrFields instanceof Schema) {
|
|
96
|
+
var otherSchema = schemaOrFields;
|
|
97
|
+
fields = otherSchema.fields;
|
|
98
|
+
metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherSchema.metadata);
|
|
99
|
+
} else {
|
|
100
|
+
fields = schemaOrFields;
|
|
101
|
+
}
|
|
75
102
|
|
|
76
|
-
|
|
77
|
-
fieldMap[field.name] = field;
|
|
78
|
-
}
|
|
103
|
+
var fieldMap = Object.create(null);
|
|
79
104
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
105
|
+
var _iterator = _createForOfIteratorHelper(this.fields),
|
|
106
|
+
_step;
|
|
83
107
|
|
|
84
|
-
|
|
108
|
+
try {
|
|
109
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
110
|
+
var field = _step.value;
|
|
111
|
+
fieldMap[field.name] = field;
|
|
112
|
+
}
|
|
113
|
+
} catch (err) {
|
|
114
|
+
_iterator.e(err);
|
|
115
|
+
} finally {
|
|
116
|
+
_iterator.f();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
var _iterator2 = _createForOfIteratorHelper(fields),
|
|
120
|
+
_step2;
|
|
121
|
+
|
|
122
|
+
try {
|
|
123
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
124
|
+
var _field = _step2.value;
|
|
125
|
+
fieldMap[_field.name] = _field;
|
|
126
|
+
}
|
|
127
|
+
} catch (err) {
|
|
128
|
+
_iterator2.e(err);
|
|
129
|
+
} finally {
|
|
130
|
+
_iterator2.f();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
var mergedFields = Object.values(fieldMap);
|
|
134
|
+
return new Schema(mergedFields, metadata);
|
|
135
|
+
}
|
|
136
|
+
}]);
|
|
137
|
+
return Schema;
|
|
138
|
+
}();
|
|
85
139
|
|
|
86
140
|
exports.default = Schema;
|
|
87
141
|
|
|
88
142
|
function checkNames(fields) {
|
|
89
|
-
|
|
143
|
+
var usedNames = {};
|
|
90
144
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
console.warn('Schema: duplicated field name', field.name, field);
|
|
94
|
-
}
|
|
145
|
+
var _iterator3 = _createForOfIteratorHelper(fields),
|
|
146
|
+
_step3;
|
|
95
147
|
|
|
96
|
-
|
|
148
|
+
try {
|
|
149
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
150
|
+
var field = _step3.value;
|
|
151
|
+
|
|
152
|
+
if (usedNames[field.name]) {
|
|
153
|
+
console.warn('Schema: duplicated field name', field.name, field);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
usedNames[field.name] = true;
|
|
157
|
+
}
|
|
158
|
+
} catch (err) {
|
|
159
|
+
_iterator3.e(err);
|
|
160
|
+
} finally {
|
|
161
|
+
_iterator3.f();
|
|
97
162
|
}
|
|
98
163
|
}
|
|
99
164
|
|
|
100
165
|
function mergeMaps(m1, m2) {
|
|
101
|
-
return new Map([
|
|
166
|
+
return new Map([].concat((0, _toConsumableArray2.default)(m1 || new Map()), (0, _toConsumableArray2.default)(m2 || new Map())));
|
|
102
167
|
}
|
|
103
168
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/lib/schema/impl/schema.ts"],"names":["Schema","
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/schema/impl/schema.ts"],"names":["Schema","fields","metadata","Array","isArray","checkNames","Map","other","length","i","compareTo","nameMap","Object","create","columnNames","name","selectedFields","filter","field","columnIndices","map","index","Boolean","schemaOrFields","otherSchema","mergeMaps","fieldMap","mergedFields","values","usedNames","console","warn","m1","m2"],"mappings":"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","sourcesContent":["import {assert} from '../../utils/assert';\nimport Field from './field';\n\nexport type SchemaMetadata = Map<string, any>;\n\n/**\n * ArrowJS `Schema` API-compatible class for row-based tables (returned from `DataTable`)\n * https://loaders.gl/arrowjs/docs/api-reference/schema\n */\nexport default class Schema {\n fields: Field[];\n // TODO - Arrow just allows Map<string, string>\n metadata: SchemaMetadata;\n\n constructor(fields: Field[], metadata?: SchemaMetadata) {\n assert(Array.isArray(fields));\n checkNames(fields);\n // For kepler fields, create arrow compatible `Fields` that have kepler fields as `metadata`\n this.fields = fields;\n this.metadata = metadata || new Map();\n }\n\n // TODO - arrow only seems to compare fields, not metadata\n compareTo(other: Schema): boolean {\n if (this.metadata !== other.metadata) {\n return false;\n }\n if (this.fields.length !== other.fields.length) {\n return false;\n }\n for (let i = 0; i < this.fields.length; ++i) {\n if (!this.fields[i].compareTo(other.fields[i])) {\n return false;\n }\n }\n return true;\n }\n\n select(...columnNames: string[]): Schema {\n // Ensure column names reference valid fields\n const nameMap = Object.create(null);\n for (const name of columnNames) {\n nameMap[name] = true;\n }\n const selectedFields = this.fields.filter((field) => nameMap[field.name]);\n return new Schema(selectedFields, this.metadata);\n }\n\n selectAt(...columnIndices: number[]): Schema {\n // Ensure column indices reference valid fields\n const selectedFields = columnIndices.map((index) => this.fields[index]).filter(Boolean);\n return new Schema(selectedFields, this.metadata);\n }\n\n assign(schemaOrFields: Schema | Field[]): Schema {\n let fields: Field[];\n let metadata: SchemaMetadata = this.metadata;\n\n if (schemaOrFields instanceof Schema) {\n const otherSchema = schemaOrFields;\n fields = otherSchema.fields;\n metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherSchema.metadata);\n } else {\n fields = schemaOrFields;\n }\n\n // Create a merged list of fields, overwrite fields in place, new fields at end\n const fieldMap: {[key: string]: Field} = Object.create(null);\n\n for (const field of this.fields) {\n fieldMap[field.name] = field;\n }\n\n for (const field of fields) {\n fieldMap[field.name] = field;\n }\n\n const mergedFields = Object.values(fieldMap);\n\n return new Schema(mergedFields, metadata);\n }\n}\n\n// Warn if any duplicated field names\nfunction checkNames(fields: Field[]): void {\n const usedNames: Record<string, boolean> = {};\n for (const field of fields) {\n if (usedNames[field.name]) {\n // eslint-disable-next-line\n console.warn('Schema: duplicated field name', field.name, field);\n }\n usedNames[field.name] = true;\n }\n}\n\nfunction mergeMaps<T>(m1: T, m2: T): T {\n // @ts-ignore\n return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n"],"file":"schema.js"}
|