@loaders.gl/schema 3.4.13 → 3.4.15

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 (36) hide show
  1. package/dist/es5/bundle.js +1 -1
  2. package/dist/es5/bundle.js.map +1 -1
  3. package/dist/es5/category/mesh/convert-mesh.js +2 -7
  4. package/dist/es5/category/mesh/convert-mesh.js.map +1 -1
  5. package/dist/es5/category/mesh/deduce-mesh-schema.js +8 -8
  6. package/dist/es5/category/mesh/deduce-mesh-schema.js.map +1 -1
  7. package/dist/es5/category/mesh/mesh-to-arrow-table.js +17 -16
  8. package/dist/es5/category/mesh/mesh-to-arrow-table.js.map +1 -1
  9. package/dist/es5/category/mesh/mesh-utils.js +15 -15
  10. package/dist/es5/category/mesh/mesh-utils.js.map +1 -1
  11. package/dist/es5/category/table/deduce-table-schema.js +9 -9
  12. package/dist/es5/category/table/deduce-table-schema.js.map +1 -1
  13. package/dist/es5/index.js +51 -51
  14. package/dist/es5/lib/arrow/get-type-info.js +3 -3
  15. package/dist/es5/lib/arrow/get-type-info.js.map +1 -1
  16. package/dist/es5/lib/batches/base-table-batch-aggregator.js +38 -51
  17. package/dist/es5/lib/batches/base-table-batch-aggregator.js.map +1 -1
  18. package/dist/es5/lib/batches/columnar-table-batch-aggregator.js +60 -81
  19. package/dist/es5/lib/batches/columnar-table-batch-aggregator.js.map +1 -1
  20. package/dist/es5/lib/batches/row-table-batch-aggregator.js +53 -66
  21. package/dist/es5/lib/batches/row-table-batch-aggregator.js.map +1 -1
  22. package/dist/es5/lib/batches/table-batch-builder.js +101 -127
  23. package/dist/es5/lib/batches/table-batch-builder.js.map +1 -1
  24. package/dist/es5/lib/schema/impl/enum.js +1 -1
  25. package/dist/es5/lib/schema/impl/field.js +17 -30
  26. package/dist/es5/lib/schema/impl/field.js.map +1 -1
  27. package/dist/es5/lib/schema/impl/schema.js +55 -105
  28. package/dist/es5/lib/schema/impl/schema.js.map +1 -1
  29. package/dist/es5/lib/schema/impl/type.js +375 -675
  30. package/dist/es5/lib/schema/impl/type.js.map +1 -1
  31. package/dist/es5/lib/schema/schema.js +37 -37
  32. package/dist/es5/lib/utils/async-queue.js +72 -138
  33. package/dist/es5/lib/utils/async-queue.js.map +1 -1
  34. package/dist/es5/lib/utils/row-utils.js +4 -4
  35. package/dist/es5/lib/utils/row-utils.js.map +1 -1
  36. package/package.json +2 -2
@@ -5,25 +5,20 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
9
  var _baseTableBatchAggregator = _interopRequireDefault(require("./base-table-batch-aggregator"));
12
10
  var _rowTableBatchAggregator = _interopRequireDefault(require("./row-table-batch-aggregator"));
13
11
  var _columnarTableBatchAggregator = _interopRequireDefault(require("./columnar-table-batch-aggregator"));
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
- var DEFAULT_OPTIONS = {
12
+ const DEFAULT_OPTIONS = {
17
13
  shape: 'array-row-table',
18
14
  batchSize: 'auto',
19
15
  batchDebounceMs: 0,
20
16
  limit: 0,
21
17
  _limitMB: 0
22
18
  };
23
- var ERR_MESSAGE = 'TableBatchBuilder';
24
- var TableBatchBuilder = function () {
25
- function TableBatchBuilder(schema, options) {
26
- (0, _classCallCheck2.default)(this, TableBatchBuilder);
19
+ const ERR_MESSAGE = 'TableBatchBuilder';
20
+ class TableBatchBuilder {
21
+ constructor(schema, options) {
27
22
  (0, _defineProperty2.default)(this, "schema", void 0);
28
23
  (0, _defineProperty2.default)(this, "options", void 0);
29
24
  (0, _defineProperty2.default)(this, "aggregator", null);
@@ -35,139 +30,118 @@ var TableBatchBuilder = function () {
35
30
  (0, _defineProperty2.default)(this, "totalBytes", 0);
36
31
  (0, _defineProperty2.default)(this, "rowBytes", 0);
37
32
  this.schema = schema;
38
- this.options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
33
+ this.options = {
34
+ ...DEFAULT_OPTIONS,
35
+ ...options
36
+ };
39
37
  }
40
- (0, _createClass2.default)(TableBatchBuilder, [{
41
- key: "limitReached",
42
- value: function limitReached() {
43
- var _this$options, _this$options2;
44
- if (Boolean((_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.limit) && this.totalLength >= this.options.limit) {
45
- return true;
46
- }
47
- if (Boolean((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2._limitMB) && this.totalBytes / 1e6 >= this.options._limitMB) {
48
- return true;
49
- }
50
- return false;
38
+ limitReached() {
39
+ var _this$options, _this$options2;
40
+ if (Boolean((_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.limit) && this.totalLength >= this.options.limit) {
41
+ return true;
51
42
  }
52
- }, {
53
- key: "addRow",
54
- value: function addRow(row) {
55
- if (this.limitReached()) {
56
- return;
57
- }
58
- this.totalLength++;
59
- this.rowBytes = this.rowBytes || this._estimateRowMB(row);
60
- this.totalBytes += this.rowBytes;
61
- if (Array.isArray(row)) {
62
- this.addArrayRow(row);
63
- } else {
64
- this.addObjectRow(row);
65
- }
43
+ if (Boolean((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2._limitMB) && this.totalBytes / 1e6 >= this.options._limitMB) {
44
+ return true;
66
45
  }
67
- }, {
68
- key: "addArrayRow",
69
- value: function addArrayRow(row) {
70
- if (!this.aggregator) {
71
- var TableBatchType = this._getTableBatchType();
72
- this.aggregator = new TableBatchType(this.schema, this.options);
73
- }
74
- this.aggregator.addArrayRow(row);
46
+ return false;
47
+ }
48
+ addRow(row) {
49
+ if (this.limitReached()) {
50
+ return;
75
51
  }
76
- }, {
77
- key: "addObjectRow",
78
- value: function addObjectRow(row) {
79
- if (!this.aggregator) {
80
- var TableBatchType = this._getTableBatchType();
81
- this.aggregator = new TableBatchType(this.schema, this.options);
82
- }
83
- this.aggregator.addObjectRow(row);
52
+ this.totalLength++;
53
+ this.rowBytes = this.rowBytes || this._estimateRowMB(row);
54
+ this.totalBytes += this.rowBytes;
55
+ if (Array.isArray(row)) {
56
+ this.addArrayRow(row);
57
+ } else {
58
+ this.addObjectRow(row);
84
59
  }
85
- }, {
86
- key: "chunkComplete",
87
- value: function chunkComplete(chunk) {
88
- if (chunk instanceof ArrayBuffer) {
89
- this.bytesUsed += chunk.byteLength;
90
- }
91
- if (typeof chunk === 'string') {
92
- this.bytesUsed += chunk.length;
93
- }
94
- this.isChunkComplete = true;
60
+ }
61
+ addArrayRow(row) {
62
+ if (!this.aggregator) {
63
+ const TableBatchType = this._getTableBatchType();
64
+ this.aggregator = new TableBatchType(this.schema, this.options);
95
65
  }
96
- }, {
97
- key: "getFullBatch",
98
- value: function getFullBatch(options) {
99
- return this._isFull() ? this._getBatch(options) : null;
66
+ this.aggregator.addArrayRow(row);
67
+ }
68
+ addObjectRow(row) {
69
+ if (!this.aggregator) {
70
+ const TableBatchType = this._getTableBatchType();
71
+ this.aggregator = new TableBatchType(this.schema, this.options);
100
72
  }
101
- }, {
102
- key: "getFinalBatch",
103
- value: function getFinalBatch(options) {
104
- return this._getBatch(options);
73
+ this.aggregator.addObjectRow(row);
74
+ }
75
+ chunkComplete(chunk) {
76
+ if (chunk instanceof ArrayBuffer) {
77
+ this.bytesUsed += chunk.byteLength;
105
78
  }
106
- }, {
107
- key: "_estimateRowMB",
108
- value: function _estimateRowMB(row) {
109
- return Array.isArray(row) ? row.length * 8 : Object.keys(row).length * 8;
79
+ if (typeof chunk === 'string') {
80
+ this.bytesUsed += chunk.length;
110
81
  }
111
- }, {
112
- key: "_isFull",
113
- value: function _isFull() {
114
- if (!this.aggregator || this.aggregator.rowCount() === 0) {
115
- return false;
116
- }
117
- if (this.options.batchSize === 'auto') {
118
- if (!this.isChunkComplete) {
119
- return false;
120
- }
121
- } else if (this.options.batchSize > this.aggregator.rowCount()) {
122
- return false;
123
- }
124
- if (this.options.batchDebounceMs > Date.now() - this.lastBatchEmittedMs) {
82
+ this.isChunkComplete = true;
83
+ }
84
+ getFullBatch(options) {
85
+ return this._isFull() ? this._getBatch(options) : null;
86
+ }
87
+ getFinalBatch(options) {
88
+ return this._getBatch(options);
89
+ }
90
+ _estimateRowMB(row) {
91
+ return Array.isArray(row) ? row.length * 8 : Object.keys(row).length * 8;
92
+ }
93
+ _isFull() {
94
+ if (!this.aggregator || this.aggregator.rowCount() === 0) {
95
+ return false;
96
+ }
97
+ if (this.options.batchSize === 'auto') {
98
+ if (!this.isChunkComplete) {
125
99
  return false;
126
100
  }
127
- this.isChunkComplete = false;
128
- this.lastBatchEmittedMs = Date.now();
129
- return true;
101
+ } else if (this.options.batchSize > this.aggregator.rowCount()) {
102
+ return false;
130
103
  }
131
- }, {
132
- key: "_getBatch",
133
- value: function _getBatch(options) {
134
- if (!this.aggregator) {
135
- return null;
136
- }
137
- if (options !== null && options !== void 0 && options.bytesUsed) {
138
- this.bytesUsed = options.bytesUsed;
139
- }
140
- var normalizedBatch = this.aggregator.getBatch();
141
- normalizedBatch.count = this.batchCount;
142
- normalizedBatch.bytesUsed = this.bytesUsed;
143
- Object.assign(normalizedBatch, options);
144
- this.batchCount++;
145
- this.aggregator = null;
146
- return normalizedBatch;
104
+ if (this.options.batchDebounceMs > Date.now() - this.lastBatchEmittedMs) {
105
+ return false;
106
+ }
107
+ this.isChunkComplete = false;
108
+ this.lastBatchEmittedMs = Date.now();
109
+ return true;
110
+ }
111
+ _getBatch(options) {
112
+ if (!this.aggregator) {
113
+ return null;
114
+ }
115
+ if (options !== null && options !== void 0 && options.bytesUsed) {
116
+ this.bytesUsed = options.bytesUsed;
147
117
  }
148
- }, {
149
- key: "_getTableBatchType",
150
- value: function _getTableBatchType() {
151
- switch (this.options.shape) {
152
- case 'row-table':
153
- return _baseTableBatchAggregator.default;
154
- case 'array-row-table':
155
- case 'object-row-table':
156
- return _rowTableBatchAggregator.default;
157
- case 'columnar-table':
158
- return _columnarTableBatchAggregator.default;
159
- case 'arrow-table':
160
- if (!TableBatchBuilder.ArrowBatch) {
161
- throw new Error(ERR_MESSAGE);
162
- }
163
- return TableBatchBuilder.ArrowBatch;
164
- default:
118
+ const normalizedBatch = this.aggregator.getBatch();
119
+ normalizedBatch.count = this.batchCount;
120
+ normalizedBatch.bytesUsed = this.bytesUsed;
121
+ Object.assign(normalizedBatch, options);
122
+ this.batchCount++;
123
+ this.aggregator = null;
124
+ return normalizedBatch;
125
+ }
126
+ _getTableBatchType() {
127
+ switch (this.options.shape) {
128
+ case 'row-table':
129
+ return _baseTableBatchAggregator.default;
130
+ case 'array-row-table':
131
+ case 'object-row-table':
132
+ return _rowTableBatchAggregator.default;
133
+ case 'columnar-table':
134
+ return _columnarTableBatchAggregator.default;
135
+ case 'arrow-table':
136
+ if (!TableBatchBuilder.ArrowBatch) {
165
137
  throw new Error(ERR_MESSAGE);
166
- }
138
+ }
139
+ return TableBatchBuilder.ArrowBatch;
140
+ default:
141
+ throw new Error(ERR_MESSAGE);
167
142
  }
168
- }]);
169
- return TableBatchBuilder;
170
- }();
143
+ }
144
+ }
171
145
  exports.default = TableBatchBuilder;
172
146
  (0, _defineProperty2.default)(TableBatchBuilder, "ArrowBatch", void 0);
173
147
  //# sourceMappingURL=table-batch-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-batch-builder.js","names":["_baseTableBatchAggregator","_interopRequireDefault","require","_rowTableBatchAggregator","_columnarTableBatchAggregator","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","DEFAULT_OPTIONS","shape","batchSize","batchDebounceMs","limit","_limitMB","ERR_MESSAGE","TableBatchBuilder","schema","options","_classCallCheck2","Date","now","_createClass2","value","limitReached","_this$options","_this$options2","Boolean","totalLength","totalBytes","addRow","row","rowBytes","_estimateRowMB","Array","isArray","addArrayRow","addObjectRow","aggregator","TableBatchType","_getTableBatchType","chunkComplete","chunk","ArrayBuffer","bytesUsed","byteLength","isChunkComplete","getFullBatch","_isFull","_getBatch","getFinalBatch","rowCount","lastBatchEmittedMs","normalizedBatch","getBatch","count","batchCount","assign","BaseTableBatchAggregator","RowTableBatchAggregator","ColumnarTableBatchAggregator","ArrowBatch","Error","exports"],"sources":["../../../../src/lib/batches/table-batch-builder.ts"],"sourcesContent":["import type {Schema} from '../schema/schema';\nimport type {TableBatch} from '../../category/table/table-types';\nimport type {TableBatchAggregator, TableBatchConstructor} from './table-batch-aggregator';\nimport BaseTableBatchAggregator from './base-table-batch-aggregator';\nimport RowTableBatchAggregator from './row-table-batch-aggregator';\nimport ColumnarTableBatchAggregator from './columnar-table-batch-aggregator';\n\n// TODO define interface instead\ntype TableBatchBuilderOptions = {\n shape: 'row-table' | 'array-row-table' | 'object-row-table' | 'columnar-table' | 'arrow-table';\n batchSize?: number | 'auto';\n batchDebounceMs?: number;\n limit: number;\n _limitMB: number;\n};\n\ntype GetBatchOptions = {\n bytesUsed?: number;\n [key: string]: any;\n};\n\nconst DEFAULT_OPTIONS: Required<TableBatchBuilderOptions> = {\n shape: 'array-row-table',\n batchSize: 'auto',\n batchDebounceMs: 0,\n limit: 0,\n _limitMB: 0\n};\n\nconst ERR_MESSAGE = 'TableBatchBuilder';\n\n/** Incrementally builds batches from a stream of rows */\nexport default class TableBatchBuilder {\n schema: Schema;\n options: Required<TableBatchBuilderOptions>;\n\n private aggregator: TableBatchAggregator | null = null;\n private batchCount: number = 0;\n private bytesUsed: number = 0;\n private isChunkComplete: boolean = false;\n private lastBatchEmittedMs: number = Date.now();\n private totalLength: number = 0;\n private totalBytes: number = 0;\n private rowBytes: number = 0;\n\n static ArrowBatch?: TableBatchConstructor;\n\n constructor(schema: Schema, options?: TableBatchBuilderOptions) {\n this.schema = schema;\n this.options = {...DEFAULT_OPTIONS, ...options};\n }\n\n limitReached(): boolean {\n if (Boolean(this.options?.limit) && this.totalLength >= this.options.limit) {\n return true;\n }\n if (Boolean(this.options?._limitMB) && this.totalBytes / 1e6 >= this.options._limitMB) {\n return true;\n }\n return false;\n }\n\n /** @deprecated Use addArrayRow or addObjectRow */\n addRow(row: any[] | {[columnName: string]: any}): void {\n if (this.limitReached()) {\n return;\n }\n this.totalLength++;\n this.rowBytes = this.rowBytes || this._estimateRowMB(row);\n this.totalBytes += this.rowBytes;\n if (Array.isArray(row)) {\n this.addArrayRow(row);\n } else {\n this.addObjectRow(row);\n }\n }\n\n /** Add one row to the batch */\n protected addArrayRow(row: any[]) {\n if (!this.aggregator) {\n const TableBatchType = this._getTableBatchType();\n this.aggregator = new TableBatchType(this.schema, this.options);\n }\n this.aggregator.addArrayRow(row);\n }\n\n /** Add one row to the batch */\n protected addObjectRow(row: {[columnName: string]: any}): void {\n if (!this.aggregator) {\n const TableBatchType = this._getTableBatchType();\n this.aggregator = new TableBatchType(this.schema, this.options);\n }\n this.aggregator.addObjectRow(row);\n }\n\n /** Mark an incoming raw memory chunk has completed */\n chunkComplete(chunk: ArrayBuffer | string): void {\n if (chunk instanceof ArrayBuffer) {\n this.bytesUsed += chunk.byteLength;\n }\n if (typeof chunk === 'string') {\n this.bytesUsed += chunk.length;\n }\n this.isChunkComplete = true;\n }\n\n getFullBatch(options?: GetBatchOptions): TableBatch | null {\n return this._isFull() ? this._getBatch(options) : null;\n }\n\n getFinalBatch(options?: GetBatchOptions): TableBatch | null {\n return this._getBatch(options);\n }\n\n // INTERNAL\n\n _estimateRowMB(row: any[] | object): number {\n return Array.isArray(row) ? row.length * 8 : Object.keys(row).length * 8;\n }\n\n private _isFull(): boolean {\n // No batch, not ready\n if (!this.aggregator || this.aggregator.rowCount() === 0) {\n return false;\n }\n\n // if batchSize === 'auto' we wait for chunk to complete\n // if batchSize === number, ensure we have enough rows\n if (this.options.batchSize === 'auto') {\n if (!this.isChunkComplete) {\n return false;\n }\n } else if (this.options.batchSize > this.aggregator.rowCount()) {\n return false;\n }\n\n // Debounce batches\n if (this.options.batchDebounceMs > Date.now() - this.lastBatchEmittedMs) {\n return false;\n }\n\n // Emit batch\n this.isChunkComplete = false;\n this.lastBatchEmittedMs = Date.now();\n return true;\n }\n\n /**\n * bytesUsed can be set via chunkComplete or via getBatch*\n */\n private _getBatch(options?: GetBatchOptions): TableBatch | null {\n if (!this.aggregator) {\n return null;\n }\n\n // TODO - this can overly increment bytes used?\n if (options?.bytesUsed) {\n this.bytesUsed = options.bytesUsed;\n }\n const normalizedBatch = this.aggregator.getBatch() as TableBatch;\n normalizedBatch.count = this.batchCount;\n normalizedBatch.bytesUsed = this.bytesUsed;\n Object.assign(normalizedBatch, options);\n\n this.batchCount++;\n this.aggregator = null;\n return normalizedBatch;\n }\n\n private _getTableBatchType(): TableBatchConstructor {\n switch (this.options.shape) {\n case 'row-table':\n return BaseTableBatchAggregator;\n case 'array-row-table':\n case 'object-row-table':\n return RowTableBatchAggregator;\n case 'columnar-table':\n return ColumnarTableBatchAggregator;\n case 'arrow-table':\n if (!TableBatchBuilder.ArrowBatch) {\n throw new Error(ERR_MESSAGE);\n }\n return TableBatchBuilder.ArrowBatch;\n default:\n throw new Error(ERR_MESSAGE);\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"table-batch-builder.js","names":["_baseTableBatchAggregator","_interopRequireDefault","require","_rowTableBatchAggregator","_columnarTableBatchAggregator","DEFAULT_OPTIONS","shape","batchSize","batchDebounceMs","limit","_limitMB","ERR_MESSAGE","TableBatchBuilder","constructor","schema","options","_defineProperty2","default","Date","now","limitReached","_this$options","_this$options2","Boolean","totalLength","totalBytes","addRow","row","rowBytes","_estimateRowMB","Array","isArray","addArrayRow","addObjectRow","aggregator","TableBatchType","_getTableBatchType","chunkComplete","chunk","ArrayBuffer","bytesUsed","byteLength","length","isChunkComplete","getFullBatch","_isFull","_getBatch","getFinalBatch","Object","keys","rowCount","lastBatchEmittedMs","normalizedBatch","getBatch","count","batchCount","assign","BaseTableBatchAggregator","RowTableBatchAggregator","ColumnarTableBatchAggregator","ArrowBatch","Error","exports"],"sources":["../../../../src/lib/batches/table-batch-builder.ts"],"sourcesContent":["import type {Schema} from '../schema/schema';\nimport type {TableBatch} from '../../category/table/table-types';\nimport type {TableBatchAggregator, TableBatchConstructor} from './table-batch-aggregator';\nimport BaseTableBatchAggregator from './base-table-batch-aggregator';\nimport RowTableBatchAggregator from './row-table-batch-aggregator';\nimport ColumnarTableBatchAggregator from './columnar-table-batch-aggregator';\n\n// TODO define interface instead\ntype TableBatchBuilderOptions = {\n shape: 'row-table' | 'array-row-table' | 'object-row-table' | 'columnar-table' | 'arrow-table';\n batchSize?: number | 'auto';\n batchDebounceMs?: number;\n limit: number;\n _limitMB: number;\n};\n\ntype GetBatchOptions = {\n bytesUsed?: number;\n [key: string]: any;\n};\n\nconst DEFAULT_OPTIONS: Required<TableBatchBuilderOptions> = {\n shape: 'array-row-table',\n batchSize: 'auto',\n batchDebounceMs: 0,\n limit: 0,\n _limitMB: 0\n};\n\nconst ERR_MESSAGE = 'TableBatchBuilder';\n\n/** Incrementally builds batches from a stream of rows */\nexport default class TableBatchBuilder {\n schema: Schema;\n options: Required<TableBatchBuilderOptions>;\n\n private aggregator: TableBatchAggregator | null = null;\n private batchCount: number = 0;\n private bytesUsed: number = 0;\n private isChunkComplete: boolean = false;\n private lastBatchEmittedMs: number = Date.now();\n private totalLength: number = 0;\n private totalBytes: number = 0;\n private rowBytes: number = 0;\n\n static ArrowBatch?: TableBatchConstructor;\n\n constructor(schema: Schema, options?: TableBatchBuilderOptions) {\n this.schema = schema;\n this.options = {...DEFAULT_OPTIONS, ...options};\n }\n\n limitReached(): boolean {\n if (Boolean(this.options?.limit) && this.totalLength >= this.options.limit) {\n return true;\n }\n if (Boolean(this.options?._limitMB) && this.totalBytes / 1e6 >= this.options._limitMB) {\n return true;\n }\n return false;\n }\n\n /** @deprecated Use addArrayRow or addObjectRow */\n addRow(row: any[] | {[columnName: string]: any}): void {\n if (this.limitReached()) {\n return;\n }\n this.totalLength++;\n this.rowBytes = this.rowBytes || this._estimateRowMB(row);\n this.totalBytes += this.rowBytes;\n if (Array.isArray(row)) {\n this.addArrayRow(row);\n } else {\n this.addObjectRow(row);\n }\n }\n\n /** Add one row to the batch */\n protected addArrayRow(row: any[]) {\n if (!this.aggregator) {\n const TableBatchType = this._getTableBatchType();\n this.aggregator = new TableBatchType(this.schema, this.options);\n }\n this.aggregator.addArrayRow(row);\n }\n\n /** Add one row to the batch */\n protected addObjectRow(row: {[columnName: string]: any}): void {\n if (!this.aggregator) {\n const TableBatchType = this._getTableBatchType();\n this.aggregator = new TableBatchType(this.schema, this.options);\n }\n this.aggregator.addObjectRow(row);\n }\n\n /** Mark an incoming raw memory chunk has completed */\n chunkComplete(chunk: ArrayBuffer | string): void {\n if (chunk instanceof ArrayBuffer) {\n this.bytesUsed += chunk.byteLength;\n }\n if (typeof chunk === 'string') {\n this.bytesUsed += chunk.length;\n }\n this.isChunkComplete = true;\n }\n\n getFullBatch(options?: GetBatchOptions): TableBatch | null {\n return this._isFull() ? this._getBatch(options) : null;\n }\n\n getFinalBatch(options?: GetBatchOptions): TableBatch | null {\n return this._getBatch(options);\n }\n\n // INTERNAL\n\n _estimateRowMB(row: any[] | object): number {\n return Array.isArray(row) ? row.length * 8 : Object.keys(row).length * 8;\n }\n\n private _isFull(): boolean {\n // No batch, not ready\n if (!this.aggregator || this.aggregator.rowCount() === 0) {\n return false;\n }\n\n // if batchSize === 'auto' we wait for chunk to complete\n // if batchSize === number, ensure we have enough rows\n if (this.options.batchSize === 'auto') {\n if (!this.isChunkComplete) {\n return false;\n }\n } else if (this.options.batchSize > this.aggregator.rowCount()) {\n return false;\n }\n\n // Debounce batches\n if (this.options.batchDebounceMs > Date.now() - this.lastBatchEmittedMs) {\n return false;\n }\n\n // Emit batch\n this.isChunkComplete = false;\n this.lastBatchEmittedMs = Date.now();\n return true;\n }\n\n /**\n * bytesUsed can be set via chunkComplete or via getBatch*\n */\n private _getBatch(options?: GetBatchOptions): TableBatch | null {\n if (!this.aggregator) {\n return null;\n }\n\n // TODO - this can overly increment bytes used?\n if (options?.bytesUsed) {\n this.bytesUsed = options.bytesUsed;\n }\n const normalizedBatch = this.aggregator.getBatch() as TableBatch;\n normalizedBatch.count = this.batchCount;\n normalizedBatch.bytesUsed = this.bytesUsed;\n Object.assign(normalizedBatch, options);\n\n this.batchCount++;\n this.aggregator = null;\n return normalizedBatch;\n }\n\n private _getTableBatchType(): TableBatchConstructor {\n switch (this.options.shape) {\n case 'row-table':\n return BaseTableBatchAggregator;\n case 'array-row-table':\n case 'object-row-table':\n return RowTableBatchAggregator;\n case 'columnar-table':\n return ColumnarTableBatchAggregator;\n case 'arrow-table':\n if (!TableBatchBuilder.ArrowBatch) {\n throw new Error(ERR_MESSAGE);\n }\n return TableBatchBuilder.ArrowBatch;\n default:\n throw new Error(ERR_MESSAGE);\n }\n }\n}\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Type = void 0;
7
- var Type = function (Type) {
7
+ let Type = function (Type) {
8
8
  Type[Type["NONE"] = 0] = "NONE";
9
9
  Type[Type["Null"] = 1] = "Null";
10
10
  Type[Type["Int"] = 2] = "Int";
@@ -5,14 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var Field = function () {
12
- function Field(name, type) {
13
- var nullable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
14
- var metadata = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Map();
15
- (0, _classCallCheck2.default)(this, Field);
9
+ class Field {
10
+ constructor(name, type) {
11
+ let nullable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
12
+ let metadata = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Map();
16
13
  (0, _defineProperty2.default)(this, "name", void 0);
17
14
  (0, _defineProperty2.default)(this, "type", void 0);
18
15
  (0, _defineProperty2.default)(this, "nullable", void 0);
@@ -22,28 +19,18 @@ var Field = function () {
22
19
  this.nullable = nullable;
23
20
  this.metadata = metadata;
24
21
  }
25
- (0, _createClass2.default)(Field, [{
26
- key: "typeId",
27
- get: function get() {
28
- return this.type && this.type.typeId;
29
- }
30
- }, {
31
- key: "clone",
32
- value: function clone() {
33
- return new Field(this.name, this.type, this.nullable, this.metadata);
34
- }
35
- }, {
36
- key: "compareTo",
37
- value: function compareTo(other) {
38
- return this.name === other.name && this.type === other.type && this.nullable === other.nullable && this.metadata === other.metadata;
39
- }
40
- }, {
41
- key: "toString",
42
- value: function toString() {
43
- return "".concat(this.type).concat(this.nullable ? ', nullable' : '').concat(this.metadata ? ", metadata: ".concat(this.metadata) : '');
44
- }
45
- }]);
46
- return Field;
47
- }();
22
+ get typeId() {
23
+ return this.type && this.type.typeId;
24
+ }
25
+ clone() {
26
+ return new Field(this.name, this.type, this.nullable, this.metadata);
27
+ }
28
+ compareTo(other) {
29
+ return this.name === other.name && this.type === other.type && this.nullable === other.nullable && this.metadata === other.metadata;
30
+ }
31
+ toString() {
32
+ return "".concat(this.type).concat(this.nullable ? ', nullable' : '').concat(this.metadata ? ", metadata: ".concat(this.metadata) : '');
33
+ }
34
+ }
48
35
  exports.default = Field;
49
36
  //# sourceMappingURL=field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","names":["Field","name","type","nullable","arguments","length","undefined","metadata","Map","_classCallCheck2","default","_defineProperty2","_createClass2","key","get","typeId","value","clone","compareTo","other","toString","concat","exports"],"sources":["../../../../../src/lib/schema/impl/field.ts"],"sourcesContent":["import {DataType} from './type';\n\n/**\n * ArrowJS `Field` API-compatible class for row-based tables\n * https://loaders.gl/arrowjs/docs/api-reference/field\n * A field holds name, nullable, and metadata information about a table \"column\"\n * A Schema is essentially a list of fields\n */\nexport default class Field {\n name: string;\n type: DataType;\n nullable: boolean;\n metadata: Map<string, string>;\n\n constructor(\n name: string,\n type: DataType,\n nullable = false,\n metadata: Map<string, string> = new Map()\n ) {\n this.name = name;\n this.type = type;\n this.nullable = nullable;\n this.metadata = metadata;\n }\n\n get typeId(): number {\n return this.type && this.type.typeId;\n }\n\n clone(): Field {\n return new Field(this.name, this.type, this.nullable, this.metadata);\n }\n\n compareTo(other: this): boolean {\n return (\n this.name === other.name &&\n this.type === other.type &&\n this.nullable === other.nullable &&\n this.metadata === other.metadata\n );\n }\n\n toString(): string {\n return `${this.type}${this.nullable ? ', nullable' : ''}${\n this.metadata ? `, metadata: ${this.metadata}` : ''\n }`;\n }\n}\n"],"mappings":";;;;;;;;;;IAQqBA,KAAK;EAMxB,SAAAA,MACEC,IAAY,EACZC,IAAc,EAGd;IAAA,IAFAC,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IAAA,IAChBG,QAA6B,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAII,GAAG,CAAC,CAAC;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAV,KAAA;IAAA,IAAAW,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAEzC,IAAI,CAACT,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACI,QAAQ,GAAGA,QAAQ;EAC1B;EAAC,IAAAK,aAAA,CAAAF,OAAA,EAAAV,KAAA;IAAAa,GAAA;IAAAC,GAAA,EAED,SAAAA,IAAA,EAAqB;MACnB,OAAO,IAAI,CAACZ,IAAI,IAAI,IAAI,CAACA,IAAI,CAACa,MAAM;IACtC;EAAC;IAAAF,GAAA;IAAAG,KAAA,EAED,SAAAC,MAAA,EAAe;MACb,OAAO,IAAIjB,KAAK,CAAC,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,QAAQ,EAAE,IAAI,CAACI,QAAQ,CAAC;IACtE;EAAC;IAAAM,GAAA;IAAAG,KAAA,EAED,SAAAE,UAAUC,KAAW,EAAW;MAC9B,OACE,IAAI,CAAClB,IAAI,KAAKkB,KAAK,CAAClB,IAAI,IACxB,IAAI,CAACC,IAAI,KAAKiB,KAAK,CAACjB,IAAI,IACxB,IAAI,CAACC,QAAQ,KAAKgB,KAAK,CAAChB,QAAQ,IAChC,IAAI,CAACI,QAAQ,KAAKY,KAAK,CAACZ,QAAQ;IAEpC;EAAC;IAAAM,GAAA;IAAAG,KAAA,EAED,SAAAI,SAAA,EAAmB;MACjB,UAAAC,MAAA,CAAU,IAAI,CAACnB,IAAI,EAAAmB,MAAA,CAAG,IAAI,CAAClB,QAAQ,GAAG,YAAY,GAAG,EAAE,EAAAkB,MAAA,CACrD,IAAI,CAACd,QAAQ,kBAAAc,MAAA,CAAkB,IAAI,CAACd,QAAQ,IAAK,EAAE;IAEvD;EAAC;EAAA,OAAAP,KAAA;AAAA;AAAAsB,OAAA,CAAAZ,OAAA,GAAAV,KAAA"}
1
+ {"version":3,"file":"field.js","names":["Field","constructor","name","type","nullable","arguments","length","undefined","metadata","Map","_defineProperty2","default","typeId","clone","compareTo","other","toString","concat","exports"],"sources":["../../../../../src/lib/schema/impl/field.ts"],"sourcesContent":["import {DataType} from './type';\n\n/**\n * ArrowJS `Field` API-compatible class for row-based tables\n * https://loaders.gl/arrowjs/docs/api-reference/field\n * A field holds name, nullable, and metadata information about a table \"column\"\n * A Schema is essentially a list of fields\n */\nexport default class Field {\n name: string;\n type: DataType;\n nullable: boolean;\n metadata: Map<string, string>;\n\n constructor(\n name: string,\n type: DataType,\n nullable = false,\n metadata: Map<string, string> = new Map()\n ) {\n this.name = name;\n this.type = type;\n this.nullable = nullable;\n this.metadata = metadata;\n }\n\n get typeId(): number {\n return this.type && this.type.typeId;\n }\n\n clone(): Field {\n return new Field(this.name, this.type, this.nullable, this.metadata);\n }\n\n compareTo(other: this): boolean {\n return (\n this.name === other.name &&\n this.type === other.type &&\n this.nullable === other.nullable &&\n this.metadata === other.metadata\n );\n }\n\n toString(): string {\n return `${this.type}${this.nullable ? ', nullable' : ''}${\n this.metadata ? `, metadata: ${this.metadata}` : ''\n }`;\n }\n}\n"],"mappings":";;;;;;;;AAQe,MAAMA,KAAK,CAAC;EAMzBC,WAAWA,CACTC,IAAY,EACZC,IAAc,EAGd;IAAA,IAFAC,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IAAA,IAChBG,QAA6B,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAII,GAAG,CAAC,CAAC;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAEzC,IAAI,CAACT,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACI,QAAQ,GAAGA,QAAQ;EAC1B;EAEA,IAAII,MAAMA,CAAA,EAAW;IACnB,OAAO,IAAI,CAACT,IAAI,IAAI,IAAI,CAACA,IAAI,CAACS,MAAM;EACtC;EAEAC,KAAKA,CAAA,EAAU;IACb,OAAO,IAAIb,KAAK,CAAC,IAAI,CAACE,IAAI,EAAE,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,QAAQ,EAAE,IAAI,CAACI,QAAQ,CAAC;EACtE;EAEAM,SAASA,CAACC,KAAW,EAAW;IAC9B,OACE,IAAI,CAACb,IAAI,KAAKa,KAAK,CAACb,IAAI,IACxB,IAAI,CAACC,IAAI,KAAKY,KAAK,CAACZ,IAAI,IACxB,IAAI,CAACC,QAAQ,KAAKW,KAAK,CAACX,QAAQ,IAChC,IAAI,CAACI,QAAQ,KAAKO,KAAK,CAACP,QAAQ;EAEpC;EAEAQ,QAAQA,CAAA,EAAW;IACjB,UAAAC,MAAA,CAAU,IAAI,CAACd,IAAI,EAAAc,MAAA,CAAG,IAAI,CAACb,QAAQ,GAAG,YAAY,GAAG,EAAE,EAAAa,MAAA,CACrD,IAAI,CAACT,QAAQ,kBAAAS,MAAA,CAAkB,IAAI,CAACT,QAAQ,IAAK,EAAE;EAEvD;AACF;AAACU,OAAA,CAAAP,OAAA,GAAAX,KAAA"}
@@ -5,17 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
9
  var _assert = require("../../utils/assert");
13
- 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; } } }; }
14
- 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); }
15
- 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; }
16
- var Schema = function () {
17
- function Schema(fields, metadata) {
18
- (0, _classCallCheck2.default)(this, Schema);
10
+ class Schema {
11
+ constructor(fields, metadata) {
19
12
  (0, _defineProperty2.default)(this, "fields", void 0);
20
13
  (0, _defineProperty2.default)(this, "metadata", void 0);
21
14
  (0, _assert.assert)(Array.isArray(fields));
@@ -23,113 +16,70 @@ var Schema = function () {
23
16
  this.fields = fields;
24
17
  this.metadata = metadata || new Map();
25
18
  }
26
- (0, _createClass2.default)(Schema, [{
27
- key: "compareTo",
28
- value: function compareTo(other) {
29
- if (this.metadata !== other.metadata) {
30
- return false;
31
- }
32
- if (this.fields.length !== other.fields.length) {
19
+ compareTo(other) {
20
+ if (this.metadata !== other.metadata) {
21
+ return false;
22
+ }
23
+ if (this.fields.length !== other.fields.length) {
24
+ return false;
25
+ }
26
+ for (let i = 0; i < this.fields.length; ++i) {
27
+ if (!this.fields[i].compareTo(other.fields[i])) {
33
28
  return false;
34
29
  }
35
- for (var i = 0; i < this.fields.length; ++i) {
36
- if (!this.fields[i].compareTo(other.fields[i])) {
37
- return false;
38
- }
39
- }
40
- return true;
41
30
  }
42
- }, {
43
- key: "select",
44
- value: function select() {
45
- var nameMap = Object.create(null);
46
- for (var _len = arguments.length, columnNames = new Array(_len), _key = 0; _key < _len; _key++) {
47
- columnNames[_key] = arguments[_key];
48
- }
49
- for (var _i = 0, _columnNames = columnNames; _i < _columnNames.length; _i++) {
50
- var name = _columnNames[_i];
51
- nameMap[name] = true;
52
- }
53
- var selectedFields = this.fields.filter(function (field) {
54
- return nameMap[field.name];
55
- });
56
- return new Schema(selectedFields, this.metadata);
31
+ return true;
32
+ }
33
+ select() {
34
+ const nameMap = Object.create(null);
35
+ for (var _len = arguments.length, columnNames = new Array(_len), _key = 0; _key < _len; _key++) {
36
+ columnNames[_key] = arguments[_key];
57
37
  }
58
- }, {
59
- key: "selectAt",
60
- value: function selectAt() {
61
- var _this = this;
62
- for (var _len2 = arguments.length, columnIndices = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
63
- columnIndices[_key2] = arguments[_key2];
64
- }
65
- var selectedFields = columnIndices.map(function (index) {
66
- return _this.fields[index];
67
- }).filter(Boolean);
68
- return new Schema(selectedFields, this.metadata);
38
+ for (const name of columnNames) {
39
+ nameMap[name] = true;
69
40
  }
70
- }, {
71
- key: "assign",
72
- value: function assign(schemaOrFields) {
73
- var fields;
74
- var metadata = this.metadata;
75
- if (schemaOrFields instanceof Schema) {
76
- var otherSchema = schemaOrFields;
77
- fields = otherSchema.fields;
78
- metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherSchema.metadata);
79
- } else {
80
- fields = schemaOrFields;
81
- }
82
- var fieldMap = Object.create(null);
83
- var _iterator = _createForOfIteratorHelper(this.fields),
84
- _step;
85
- try {
86
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
87
- var field = _step.value;
88
- fieldMap[field.name] = field;
89
- }
90
- } catch (err) {
91
- _iterator.e(err);
92
- } finally {
93
- _iterator.f();
94
- }
95
- var _iterator2 = _createForOfIteratorHelper(fields),
96
- _step2;
97
- try {
98
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
99
- var _field = _step2.value;
100
- fieldMap[_field.name] = _field;
101
- }
102
- } catch (err) {
103
- _iterator2.e(err);
104
- } finally {
105
- _iterator2.f();
106
- }
107
- var mergedFields = Object.values(fieldMap);
108
- return new Schema(mergedFields, metadata);
41
+ const selectedFields = this.fields.filter(field => nameMap[field.name]);
42
+ return new Schema(selectedFields, this.metadata);
43
+ }
44
+ selectAt() {
45
+ for (var _len2 = arguments.length, columnIndices = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
46
+ columnIndices[_key2] = arguments[_key2];
47
+ }
48
+ const selectedFields = columnIndices.map(index => this.fields[index]).filter(Boolean);
49
+ return new Schema(selectedFields, this.metadata);
50
+ }
51
+ assign(schemaOrFields) {
52
+ let fields;
53
+ let metadata = this.metadata;
54
+ if (schemaOrFields instanceof Schema) {
55
+ const otherSchema = schemaOrFields;
56
+ fields = otherSchema.fields;
57
+ metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherSchema.metadata);
58
+ } else {
59
+ fields = schemaOrFields;
109
60
  }
110
- }]);
111
- return Schema;
112
- }();
61
+ const fieldMap = Object.create(null);
62
+ for (const field of this.fields) {
63
+ fieldMap[field.name] = field;
64
+ }
65
+ for (const field of fields) {
66
+ fieldMap[field.name] = field;
67
+ }
68
+ const mergedFields = Object.values(fieldMap);
69
+ return new Schema(mergedFields, metadata);
70
+ }
71
+ }
113
72
  exports.default = Schema;
114
73
  function checkNames(fields) {
115
- var usedNames = {};
116
- var _iterator3 = _createForOfIteratorHelper(fields),
117
- _step3;
118
- try {
119
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
120
- var field = _step3.value;
121
- if (usedNames[field.name]) {
122
- console.warn('Schema: duplicated field name', field.name, field);
123
- }
124
- usedNames[field.name] = true;
74
+ const usedNames = {};
75
+ for (const field of fields) {
76
+ if (usedNames[field.name]) {
77
+ console.warn('Schema: duplicated field name', field.name, field);
125
78
  }
126
- } catch (err) {
127
- _iterator3.e(err);
128
- } finally {
129
- _iterator3.f();
79
+ usedNames[field.name] = true;
130
80
  }
131
81
  }
132
82
  function mergeMaps(m1, m2) {
133
- return new Map([].concat((0, _toConsumableArray2.default)(m1 || new Map()), (0, _toConsumableArray2.default)(m2 || new Map())));
83
+ return new Map([...(m1 || new Map()), ...(m2 || new Map())]);
134
84
  }
135
85
  //# sourceMappingURL=schema.js.map