@loaders.gl/schema 3.1.0-beta.7 → 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.
Files changed (34) 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 +10 -2
  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-utils.js +16 -16
  8. package/dist/es5/category/mesh/mesh-utils.js.map +1 -1
  9. package/dist/es5/category/table/deduce-table-schema.js +9 -9
  10. package/dist/es5/category/table/deduce-table-schema.js.map +1 -1
  11. package/dist/es5/index.js +52 -52
  12. package/dist/es5/lib/arrow/get-type-info.js +3 -3
  13. package/dist/es5/lib/arrow/get-type-info.js.map +1 -1
  14. package/dist/es5/lib/batches/base-table-batch-aggregator.js +53 -42
  15. package/dist/es5/lib/batches/base-table-batch-aggregator.js.map +1 -1
  16. package/dist/es5/lib/batches/columnar-table-batch-aggregator.js +90 -71
  17. package/dist/es5/lib/batches/columnar-table-batch-aggregator.js.map +1 -1
  18. package/dist/es5/lib/batches/row-table-batch-aggregator.js +70 -59
  19. package/dist/es5/lib/batches/row-table-batch-aggregator.js.map +1 -1
  20. package/dist/es5/lib/batches/table-batch-builder.js +133 -113
  21. package/dist/es5/lib/batches/table-batch-builder.js.map +1 -1
  22. package/dist/es5/lib/schema/impl/enum.js +1 -1
  23. package/dist/es5/lib/schema/impl/field.js +32 -19
  24. package/dist/es5/lib/schema/impl/field.js.map +1 -1
  25. package/dist/es5/lib/schema/impl/schema.js +119 -54
  26. package/dist/es5/lib/schema/impl/schema.js.map +1 -1
  27. package/dist/es5/lib/schema/impl/type.js +728 -395
  28. package/dist/es5/lib/schema/impl/type.js.map +1 -1
  29. package/dist/es5/lib/schema/schema.js +37 -37
  30. package/dist/es5/lib/utils/async-queue.js +164 -81
  31. package/dist/es5/lib/utils/async-queue.js.map +1 -1
  32. package/dist/es5/lib/utils/row-utils.js +4 -4
  33. package/dist/es5/lib/utils/row-utils.js.map +1 -1
  34. package/package.json +2 -2
@@ -7,6 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
10
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
15
 
12
16
  var _baseTableBatchAggregator = _interopRequireDefault(require("./base-table-batch-aggregator"));
@@ -15,17 +19,22 @@ var _rowTableBatchAggregator = _interopRequireDefault(require("./row-table-batch
15
19
 
16
20
  var _columnarTableBatchAggregator = _interopRequireDefault(require("./columnar-table-batch-aggregator"));
17
21
 
18
- const DEFAULT_OPTIONS = {
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
23
+
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
25
+
26
+ var DEFAULT_OPTIONS = {
19
27
  shape: 'array-row-table',
20
28
  batchSize: 'auto',
21
29
  batchDebounceMs: 0,
22
30
  limit: 0,
23
31
  _limitMB: 0
24
32
  };
25
- const ERR_MESSAGE = 'TableBatchBuilder';
33
+ var ERR_MESSAGE = 'TableBatchBuilder';
26
34
 
27
- class TableBatchBuilder {
28
- constructor(schema, options) {
35
+ var TableBatchBuilder = function () {
36
+ function TableBatchBuilder(schema, options) {
37
+ (0, _classCallCheck2.default)(this, TableBatchBuilder);
29
38
  (0, _defineProperty2.default)(this, "schema", void 0);
30
39
  (0, _defineProperty2.default)(this, "options", void 0);
31
40
  (0, _defineProperty2.default)(this, "aggregator", null);
@@ -37,150 +46,161 @@ class TableBatchBuilder {
37
46
  (0, _defineProperty2.default)(this, "totalBytes", 0);
38
47
  (0, _defineProperty2.default)(this, "rowBytes", 0);
39
48
  this.schema = schema;
40
- this.options = { ...DEFAULT_OPTIONS,
41
- ...options
42
- };
49
+ this.options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
43
50
  }
44
51
 
45
- limitReached() {
46
- var _this$options, _this$options2;
52
+ (0, _createClass2.default)(TableBatchBuilder, [{
53
+ key: "limitReached",
54
+ value: function limitReached() {
55
+ var _this$options, _this$options2;
47
56
 
48
- if (Boolean((_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.limit) && this.totalLength >= this.options.limit) {
49
- return true;
50
- }
51
-
52
- if (Boolean((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2._limitMB) && this.totalBytes / 1e6 >= this.options._limitMB) {
53
- return true;
54
- }
57
+ if (Boolean((_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.limit) && this.totalLength >= this.options.limit) {
58
+ return true;
59
+ }
55
60
 
56
- return false;
57
- }
61
+ if (Boolean((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2._limitMB) && this.totalBytes / 1e6 >= this.options._limitMB) {
62
+ return true;
63
+ }
58
64
 
59
- addRow(row) {
60
- if (this.limitReached()) {
61
- return;
65
+ return false;
62
66
  }
67
+ }, {
68
+ key: "addRow",
69
+ value: function addRow(row) {
70
+ if (this.limitReached()) {
71
+ return;
72
+ }
63
73
 
64
- this.totalLength++;
65
- this.rowBytes = this.rowBytes || this._estimateRowMB(row);
66
- this.totalBytes += this.rowBytes;
74
+ this.totalLength++;
75
+ this.rowBytes = this.rowBytes || this._estimateRowMB(row);
76
+ this.totalBytes += this.rowBytes;
67
77
 
68
- if (Array.isArray(row)) {
69
- this.addArrayRow(row);
70
- } else {
71
- this.addObjectRow(row);
78
+ if (Array.isArray(row)) {
79
+ this.addArrayRow(row);
80
+ } else {
81
+ this.addObjectRow(row);
82
+ }
72
83
  }
73
- }
84
+ }, {
85
+ key: "addArrayRow",
86
+ value: function addArrayRow(row) {
87
+ if (!this.aggregator) {
88
+ var TableBatchType = this._getTableBatchType();
74
89
 
75
- addArrayRow(row) {
76
- if (!this.aggregator) {
77
- const TableBatchType = this._getTableBatchType();
90
+ this.aggregator = new TableBatchType(this.schema, this.options);
91
+ }
78
92
 
79
- this.aggregator = new TableBatchType(this.schema, this.options);
93
+ this.aggregator.addArrayRow(row);
80
94
  }
95
+ }, {
96
+ key: "addObjectRow",
97
+ value: function addObjectRow(row) {
98
+ if (!this.aggregator) {
99
+ var TableBatchType = this._getTableBatchType();
81
100
 
82
- this.aggregator.addArrayRow(row);
83
- }
84
-
85
- addObjectRow(row) {
86
- if (!this.aggregator) {
87
- const TableBatchType = this._getTableBatchType();
101
+ this.aggregator = new TableBatchType(this.schema, this.options);
102
+ }
88
103
 
89
- this.aggregator = new TableBatchType(this.schema, this.options);
104
+ this.aggregator.addObjectRow(row);
90
105
  }
106
+ }, {
107
+ key: "chunkComplete",
108
+ value: function chunkComplete(chunk) {
109
+ if (chunk instanceof ArrayBuffer) {
110
+ this.bytesUsed += chunk.byteLength;
111
+ }
91
112
 
92
- this.aggregator.addObjectRow(row);
93
- }
113
+ if (typeof chunk === 'string') {
114
+ this.bytesUsed += chunk.length;
115
+ }
94
116
 
95
- chunkComplete(chunk) {
96
- if (chunk instanceof ArrayBuffer) {
97
- this.bytesUsed += chunk.byteLength;
117
+ this.isChunkComplete = true;
98
118
  }
99
-
100
- if (typeof chunk === 'string') {
101
- this.bytesUsed += chunk.length;
119
+ }, {
120
+ key: "getFullBatch",
121
+ value: function getFullBatch(options) {
122
+ return this._isFull() ? this._getBatch(options) : null;
102
123
  }
103
-
104
- this.isChunkComplete = true;
105
- }
106
-
107
- getFullBatch(options) {
108
- return this._isFull() ? this._getBatch(options) : null;
109
- }
110
-
111
- getFinalBatch(options) {
112
- return this._getBatch(options);
113
- }
114
-
115
- _estimateRowMB(row) {
116
- return Array.isArray(row) ? row.length * 8 : Object.keys(row).length * 8;
117
- }
118
-
119
- _isFull() {
120
- if (!this.aggregator || this.aggregator.rowCount() === 0) {
121
- return false;
124
+ }, {
125
+ key: "getFinalBatch",
126
+ value: function getFinalBatch(options) {
127
+ return this._getBatch(options);
122
128
  }
123
-
124
- if (this.options.batchSize === 'auto') {
125
- if (!this.isChunkComplete) {
129
+ }, {
130
+ key: "_estimateRowMB",
131
+ value: function _estimateRowMB(row) {
132
+ return Array.isArray(row) ? row.length * 8 : Object.keys(row).length * 8;
133
+ }
134
+ }, {
135
+ key: "_isFull",
136
+ value: function _isFull() {
137
+ if (!this.aggregator || this.aggregator.rowCount() === 0) {
126
138
  return false;
127
139
  }
128
- } else if (this.options.batchSize > this.aggregator.rowCount()) {
129
- return false;
130
- }
131
140
 
132
- if (this.options.batchDebounceMs > Date.now() - this.lastBatchEmittedMs) {
133
- return false;
134
- }
141
+ if (this.options.batchSize === 'auto') {
142
+ if (!this.isChunkComplete) {
143
+ return false;
144
+ }
145
+ } else if (this.options.batchSize > this.aggregator.rowCount()) {
146
+ return false;
147
+ }
135
148
 
136
- this.isChunkComplete = false;
137
- this.lastBatchEmittedMs = Date.now();
138
- return true;
139
- }
149
+ if (this.options.batchDebounceMs > Date.now() - this.lastBatchEmittedMs) {
150
+ return false;
151
+ }
140
152
 
141
- _getBatch(options) {
142
- if (!this.aggregator) {
143
- return null;
153
+ this.isChunkComplete = false;
154
+ this.lastBatchEmittedMs = Date.now();
155
+ return true;
144
156
  }
157
+ }, {
158
+ key: "_getBatch",
159
+ value: function _getBatch(options) {
160
+ if (!this.aggregator) {
161
+ return null;
162
+ }
163
+
164
+ if (options !== null && options !== void 0 && options.bytesUsed) {
165
+ this.bytesUsed = options.bytesUsed;
166
+ }
145
167
 
146
- if (options !== null && options !== void 0 && options.bytesUsed) {
147
- this.bytesUsed = options.bytesUsed;
168
+ var normalizedBatch = this.aggregator.getBatch();
169
+ normalizedBatch.count = this.batchCount;
170
+ normalizedBatch.bytesUsed = this.bytesUsed;
171
+ Object.assign(normalizedBatch, options);
172
+ this.batchCount++;
173
+ this.aggregator = null;
174
+ return normalizedBatch;
148
175
  }
176
+ }, {
177
+ key: "_getTableBatchType",
178
+ value: function _getTableBatchType() {
179
+ switch (this.options.shape) {
180
+ case 'row-table':
181
+ return _baseTableBatchAggregator.default;
149
182
 
150
- const normalizedBatch = this.aggregator.getBatch();
151
- normalizedBatch.count = this.batchCount;
152
- normalizedBatch.bytesUsed = this.bytesUsed;
153
- Object.assign(normalizedBatch, options);
154
- this.batchCount++;
155
- this.aggregator = null;
156
- return normalizedBatch;
157
- }
183
+ case 'array-row-table':
184
+ case 'object-row-table':
185
+ return _rowTableBatchAggregator.default;
158
186
 
159
- _getTableBatchType() {
160
- switch (this.options.shape) {
161
- case 'row-table':
162
- return _baseTableBatchAggregator.default;
187
+ case 'columnar-table':
188
+ return _columnarTableBatchAggregator.default;
163
189
 
164
- case 'array-row-table':
165
- case 'object-row-table':
166
- return _rowTableBatchAggregator.default;
190
+ case 'arrow-table':
191
+ if (!TableBatchBuilder.ArrowBatch) {
192
+ throw new Error(ERR_MESSAGE);
193
+ }
167
194
 
168
- case 'columnar-table':
169
- return _columnarTableBatchAggregator.default;
195
+ return TableBatchBuilder.ArrowBatch;
170
196
 
171
- case 'arrow-table':
172
- if (!TableBatchBuilder.ArrowBatch) {
197
+ default:
173
198
  throw new Error(ERR_MESSAGE);
174
- }
175
-
176
- return TableBatchBuilder.ArrowBatch;
177
-
178
- default:
179
- throw new Error(ERR_MESSAGE);
199
+ }
180
200
  }
181
- }
182
-
183
- }
201
+ }]);
202
+ return TableBatchBuilder;
203
+ }();
184
204
 
185
205
  exports.default = TableBatchBuilder;
186
206
  (0, _defineProperty2.default)(TableBatchBuilder, "ArrowBatch", void 0);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/batches/table-batch-builder.ts"],"names":["DEFAULT_OPTIONS","shape","batchSize","batchDebounceMs","limit","_limitMB","ERR_MESSAGE","TableBatchBuilder","constructor","schema","options","Date","now","limitReached","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"],"mappings":"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","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"],"file":"table-batch-builder.js"}
1
+ {"version":3,"sources":["../../../../src/lib/batches/table-batch-builder.ts"],"names":["DEFAULT_OPTIONS","shape","batchSize","batchDebounceMs","limit","_limitMB","ERR_MESSAGE","TableBatchBuilder","schema","options","Date","now","Boolean","totalLength","totalBytes","row","limitReached","rowBytes","_estimateRowMB","Array","isArray","addArrayRow","addObjectRow","aggregator","TableBatchType","_getTableBatchType","chunk","ArrayBuffer","bytesUsed","byteLength","length","isChunkComplete","_isFull","_getBatch","Object","keys","rowCount","lastBatchEmittedMs","normalizedBatch","getBatch","count","batchCount","assign","BaseTableBatchAggregator","RowTableBatchAggregator","ColumnarTableBatchAggregator","ArrowBatch","Error"],"mappings":";;;;;;;;;;;;;;;AAGA;;AACA;;AACA;;;;;;AAgBA,IAAMA,eAAmD,GAAG;AAC1DC,EAAAA,KAAK,EAAE,iBADmD;AAE1DC,EAAAA,SAAS,EAAE,MAF+C;AAG1DC,EAAAA,eAAe,EAAE,CAHyC;AAI1DC,EAAAA,KAAK,EAAE,CAJmD;AAK1DC,EAAAA,QAAQ,EAAE;AALgD,CAA5D;AAQA,IAAMC,WAAW,GAAG,mBAApB;;IAGqBC,iB;AAenB,6BAAYC,MAAZ,EAA4BC,OAA5B,EAAgE;AAAA;AAAA;AAAA;AAAA,sDAXd,IAWc;AAAA,sDAVnC,CAUmC;AAAA,qDATpC,CASoC;AAAA,2DAR7B,KAQ6B;AAAA,8DAP3BC,IAAI,CAACC,GAAL,EAO2B;AAAA,uDANlC,CAMkC;AAAA,sDALnC,CAKmC;AAAA,oDAJrC,CAIqC;AAC9D,SAAKH,MAAL,GAAcA,MAAd;AACA,SAAKC,OAAL,mCAAmBT,eAAnB,GAAuCS,OAAvC;AACD;;;;WAED,wBAAwB;AAAA;;AACtB,UAAIG,OAAO,kBAAC,KAAKH,OAAN,kDAAC,cAAcL,KAAf,CAAP,IAAgC,KAAKS,WAAL,IAAoB,KAAKJ,OAAL,CAAaL,KAArE,EAA4E;AAC1E,eAAO,IAAP;AACD;;AACD,UAAIQ,OAAO,mBAAC,KAAKH,OAAN,mDAAC,eAAcJ,QAAf,CAAP,IAAmC,KAAKS,UAAL,GAAkB,GAAlB,IAAyB,KAAKL,OAAL,CAAaJ,QAA7E,EAAuF;AACrF,eAAO,IAAP;AACD;;AACD,aAAO,KAAP;AACD;;;WAGD,gBAAOU,GAAP,EAAuD;AACrD,UAAI,KAAKC,YAAL,EAAJ,EAAyB;AACvB;AACD;;AACD,WAAKH,WAAL;AACA,WAAKI,QAAL,GAAgB,KAAKA,QAAL,IAAiB,KAAKC,cAAL,CAAoBH,GAApB,CAAjC;AACA,WAAKD,UAAL,IAAmB,KAAKG,QAAxB;;AACA,UAAIE,KAAK,CAACC,OAAN,CAAcL,GAAd,CAAJ,EAAwB;AACtB,aAAKM,WAAL,CAAiBN,GAAjB;AACD,OAFD,MAEO;AACL,aAAKO,YAAL,CAAkBP,GAAlB;AACD;AACF;;;WAGD,qBAAsBA,GAAtB,EAAkC;AAChC,UAAI,CAAC,KAAKQ,UAAV,EAAsB;AACpB,YAAMC,cAAc,GAAG,KAAKC,kBAAL,EAAvB;;AACA,aAAKF,UAAL,GAAkB,IAAIC,cAAJ,CAAmB,KAAKhB,MAAxB,EAAgC,KAAKC,OAArC,CAAlB;AACD;;AACD,WAAKc,UAAL,CAAgBF,WAAhB,CAA4BN,GAA5B;AACD;;;WAGD,sBAAuBA,GAAvB,EAA+D;AAC7D,UAAI,CAAC,KAAKQ,UAAV,EAAsB;AACpB,YAAMC,cAAc,GAAG,KAAKC,kBAAL,EAAvB;;AACA,aAAKF,UAAL,GAAkB,IAAIC,cAAJ,CAAmB,KAAKhB,MAAxB,EAAgC,KAAKC,OAArC,CAAlB;AACD;;AACD,WAAKc,UAAL,CAAgBD,YAAhB,CAA6BP,GAA7B;AACD;;;WAGD,uBAAcW,KAAd,EAAiD;AAC/C,UAAIA,KAAK,YAAYC,WAArB,EAAkC;AAChC,aAAKC,SAAL,IAAkBF,KAAK,CAACG,UAAxB;AACD;;AACD,UAAI,OAAOH,KAAP,KAAiB,QAArB,EAA+B;AAC7B,aAAKE,SAAL,IAAkBF,KAAK,CAACI,MAAxB;AACD;;AACD,WAAKC,eAAL,GAAuB,IAAvB;AACD;;;WAED,sBAAatB,OAAb,EAA2D;AACzD,aAAO,KAAKuB,OAAL,KAAiB,KAAKC,SAAL,CAAexB,OAAf,CAAjB,GAA2C,IAAlD;AACD;;;WAED,uBAAcA,OAAd,EAA4D;AAC1D,aAAO,KAAKwB,SAAL,CAAexB,OAAf,CAAP;AACD;;;WAID,wBAAeM,GAAf,EAA4C;AAC1C,aAAOI,KAAK,CAACC,OAAN,CAAcL,GAAd,IAAqBA,GAAG,CAACe,MAAJ,GAAa,CAAlC,GAAsCI,MAAM,CAACC,IAAP,CAAYpB,GAAZ,EAAiBe,MAAjB,GAA0B,CAAvE;AACD;;;WAED,mBAA2B;AAEzB,UAAI,CAAC,KAAKP,UAAN,IAAoB,KAAKA,UAAL,CAAgBa,QAAhB,OAA+B,CAAvD,EAA0D;AACxD,eAAO,KAAP;AACD;;AAID,UAAI,KAAK3B,OAAL,CAAaP,SAAb,KAA2B,MAA/B,EAAuC;AACrC,YAAI,CAAC,KAAK6B,eAAV,EAA2B;AACzB,iBAAO,KAAP;AACD;AACF,OAJD,MAIO,IAAI,KAAKtB,OAAL,CAAaP,SAAb,GAAyB,KAAKqB,UAAL,CAAgBa,QAAhB,EAA7B,EAAyD;AAC9D,eAAO,KAAP;AACD;;AAGD,UAAI,KAAK3B,OAAL,CAAaN,eAAb,GAA+BO,IAAI,CAACC,GAAL,KAAa,KAAK0B,kBAArD,EAAyE;AACvE,eAAO,KAAP;AACD;;AAGD,WAAKN,eAAL,GAAuB,KAAvB;AACA,WAAKM,kBAAL,GAA0B3B,IAAI,CAACC,GAAL,EAA1B;AACA,aAAO,IAAP;AACD;;;WAKD,mBAAkBF,OAAlB,EAAgE;AAC9D,UAAI,CAAC,KAAKc,UAAV,EAAsB;AACpB,eAAO,IAAP;AACD;;AAGD,UAAId,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAEmB,SAAb,EAAwB;AACtB,aAAKA,SAAL,GAAiBnB,OAAO,CAACmB,SAAzB;AACD;;AACD,UAAMU,eAAe,GAAG,KAAKf,UAAL,CAAgBgB,QAAhB,EAAxB;AACAD,MAAAA,eAAe,CAACE,KAAhB,GAAwB,KAAKC,UAA7B;AACAH,MAAAA,eAAe,CAACV,SAAhB,GAA4B,KAAKA,SAAjC;AACAM,MAAAA,MAAM,CAACQ,MAAP,CAAcJ,eAAd,EAA+B7B,OAA/B;AAEA,WAAKgC,UAAL;AACA,WAAKlB,UAAL,GAAkB,IAAlB;AACA,aAAOe,eAAP;AACD;;;WAED,8BAAoD;AAClD,cAAQ,KAAK7B,OAAL,CAAaR,KAArB;AACE,aAAK,WAAL;AACE,iBAAO0C,iCAAP;;AACF,aAAK,iBAAL;AACA,aAAK,kBAAL;AACE,iBAAOC,gCAAP;;AACF,aAAK,gBAAL;AACE,iBAAOC,qCAAP;;AACF,aAAK,aAAL;AACE,cAAI,CAACtC,iBAAiB,CAACuC,UAAvB,EAAmC;AACjC,kBAAM,IAAIC,KAAJ,CAAUzC,WAAV,CAAN;AACD;;AACD,iBAAOC,iBAAiB,CAACuC,UAAzB;;AACF;AACE,gBAAM,IAAIC,KAAJ,CAAUzC,WAAV,CAAN;AAdJ;AAgBD;;;;;;8BA1JkBC,iB","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"],"file":"table-batch-builder.js"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Type = void 0;
7
- let Type;
7
+ var Type;
8
8
  exports.Type = Type;
9
9
 
10
10
  (function (Type) {
@@ -7,10 +7,17 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
10
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
15
 
12
- class Field {
13
- constructor(name, type, nullable = false, metadata = new Map()) {
16
+ var Field = function () {
17
+ function Field(name, type) {
18
+ var nullable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
19
+ var metadata = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Map();
20
+ (0, _classCallCheck2.default)(this, Field);
14
21
  (0, _defineProperty2.default)(this, "name", void 0);
15
22
  (0, _defineProperty2.default)(this, "type", void 0);
16
23
  (0, _defineProperty2.default)(this, "nullable", void 0);
@@ -21,23 +28,29 @@ class Field {
21
28
  this.metadata = metadata;
22
29
  }
23
30
 
24
- get typeId() {
25
- return this.type && this.type.typeId;
26
- }
27
-
28
- clone() {
29
- return new Field(this.name, this.type, this.nullable, this.metadata);
30
- }
31
-
32
- compareTo(other) {
33
- return this.name === other.name && this.type === other.type && this.nullable === other.nullable && this.metadata === other.metadata;
34
- }
35
-
36
- toString() {
37
- return "".concat(this.type).concat(this.nullable ? ', nullable' : '').concat(this.metadata ? ", metadata: ".concat(this.metadata) : '');
38
- }
39
-
40
- }
31
+ (0, _createClass2.default)(Field, [{
32
+ key: "typeId",
33
+ get: function get() {
34
+ return this.type && this.type.typeId;
35
+ }
36
+ }, {
37
+ key: "clone",
38
+ value: function clone() {
39
+ return new Field(this.name, this.type, this.nullable, this.metadata);
40
+ }
41
+ }, {
42
+ key: "compareTo",
43
+ value: function compareTo(other) {
44
+ return this.name === other.name && this.type === other.type && this.nullable === other.nullable && this.metadata === other.metadata;
45
+ }
46
+ }, {
47
+ key: "toString",
48
+ value: function toString() {
49
+ return "".concat(this.type).concat(this.nullable ? ', nullable' : '').concat(this.metadata ? ", metadata: ".concat(this.metadata) : '');
50
+ }
51
+ }]);
52
+ return Field;
53
+ }();
41
54
 
42
55
  exports.default = Field;
43
56
  //# sourceMappingURL=field.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/schema/impl/field.ts"],"names":["Field","constructor","name","type","nullable","metadata","Map","typeId","clone","compareTo","other","toString"],"mappings":";;;;;;;;;;;AAQe,MAAMA,KAAN,CAAY;AAMzBC,EAAAA,WAAW,CACTC,IADS,EAETC,IAFS,EAGTC,QAAQ,GAAG,KAHF,EAITC,QAA6B,GAAG,IAAIC,GAAJ,EAJvB,EAKT;AAAA;AAAA;AAAA;AAAA;AACA,SAAKJ,IAAL,GAAYA,IAAZ;AACA,SAAKC,IAAL,GAAYA,IAAZ;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACD;;AAES,MAANE,MAAM,GAAW;AACnB,WAAO,KAAKJ,IAAL,IAAa,KAAKA,IAAL,CAAUI,MAA9B;AACD;;AAEDC,EAAAA,KAAK,GAAU;AACb,WAAO,IAAIR,KAAJ,CAAU,KAAKE,IAAf,EAAqB,KAAKC,IAA1B,EAAgC,KAAKC,QAArC,EAA+C,KAAKC,QAApD,CAAP;AACD;;AAEDI,EAAAA,SAAS,CAACC,KAAD,EAAuB;AAC9B,WACE,KAAKR,IAAL,KAAcQ,KAAK,CAACR,IAApB,IACA,KAAKC,IAAL,KAAcO,KAAK,CAACP,IADpB,IAEA,KAAKC,QAAL,KAAkBM,KAAK,CAACN,QAFxB,IAGA,KAAKC,QAAL,KAAkBK,KAAK,CAACL,QAJ1B;AAMD;;AAEDM,EAAAA,QAAQ,GAAW;AACjB,qBAAU,KAAKR,IAAf,SAAsB,KAAKC,QAAL,GAAgB,YAAhB,GAA+B,EAArD,SACE,KAAKC,QAAL,yBAA+B,KAAKA,QAApC,IAAiD,EADnD;AAGD;;AAvCwB","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"],"file":"field.js"}
1
+ {"version":3,"sources":["../../../../../src/lib/schema/impl/field.ts"],"names":["Field","name","type","nullable","metadata","Map","typeId","other"],"mappings":";;;;;;;;;;;;;;;IAQqBA,K;AAMnB,iBACEC,IADF,EAEEC,IAFF,EAKE;AAAA,QAFAC,QAEA,uEAFW,KAEX;AAAA,QADAC,QACA,uEADgC,IAAIC,GAAJ,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,SAAKJ,IAAL,GAAYA,IAAZ;AACA,SAAKC,IAAL,GAAYA,IAAZ;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACD;;;;SAED,eAAqB;AACnB,aAAO,KAAKF,IAAL,IAAa,KAAKA,IAAL,CAAUI,MAA9B;AACD;;;WAED,iBAAe;AACb,aAAO,IAAIN,KAAJ,CAAU,KAAKC,IAAf,EAAqB,KAAKC,IAA1B,EAAgC,KAAKC,QAArC,EAA+C,KAAKC,QAApD,CAAP;AACD;;;WAED,mBAAUG,KAAV,EAAgC;AAC9B,aACE,KAAKN,IAAL,KAAcM,KAAK,CAACN,IAApB,IACA,KAAKC,IAAL,KAAcK,KAAK,CAACL,IADpB,IAEA,KAAKC,QAAL,KAAkBI,KAAK,CAACJ,QAFxB,IAGA,KAAKC,QAAL,KAAkBG,KAAK,CAACH,QAJ1B;AAMD;;;WAED,oBAAmB;AACjB,uBAAU,KAAKF,IAAf,SAAsB,KAAKC,QAAL,GAAgB,YAAhB,GAA+B,EAArD,SACE,KAAKC,QAAL,yBAA+B,KAAKA,QAApC,IAAiD,EADnD;AAGD","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"],"file":"field.js"}