@loaders.gl/schema 3.0.12 → 3.0.13

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 +2 -2
  2. package/dist/es5/bundle.js.map +1 -1
  3. package/dist/es5/category/mesh/mesh-utils.js +16 -16
  4. package/dist/es5/category/mesh/mesh-utils.js.map +1 -1
  5. package/dist/es5/index.js +46 -46
  6. package/dist/es5/lib/schema/impl/enum.js +1 -1
  7. package/dist/es5/lib/schema/impl/field.js +19 -32
  8. package/dist/es5/lib/schema/impl/field.js.map +1 -1
  9. package/dist/es5/lib/schema/impl/schema.js +54 -119
  10. package/dist/es5/lib/schema/impl/schema.js.map +1 -1
  11. package/dist/es5/lib/schema/impl/type.js +375 -693
  12. package/dist/es5/lib/schema/impl/type.js.map +1 -1
  13. package/dist/es5/lib/schema/index.js +36 -36
  14. package/dist/es5/lib/schema-utils/deduce-table-schema.js +9 -9
  15. package/dist/es5/lib/schema-utils/deduce-table-schema.js.map +1 -1
  16. package/dist/es5/lib/schema-utils/get-type-info.js +3 -3
  17. package/dist/es5/lib/schema-utils/get-type-info.js.map +1 -1
  18. package/dist/es5/lib/table/base-table-batch-aggregator.js +42 -53
  19. package/dist/es5/lib/table/base-table-batch-aggregator.js.map +1 -1
  20. package/dist/es5/lib/table/columnar-table-batch-aggregator.js +71 -90
  21. package/dist/es5/lib/table/columnar-table-batch-aggregator.js.map +1 -1
  22. package/dist/es5/lib/table/row-table-batch-aggregator.js +59 -70
  23. package/dist/es5/lib/table/row-table-batch-aggregator.js.map +1 -1
  24. package/dist/es5/lib/table/table-batch-builder.js +113 -133
  25. package/dist/es5/lib/table/table-batch-builder.js.map +1 -1
  26. package/dist/es5/lib/utils/async-queue.js +81 -164
  27. package/dist/es5/lib/utils/async-queue.js.map +1 -1
  28. package/dist/es5/lib/utils/row-utils.js +4 -4
  29. package/dist/es5/lib/utils/row-utils.js.map +1 -1
  30. package/dist/esm/lib/schema/impl/field.js +1 -1
  31. package/dist/esm/lib/schema/impl/field.js.map +1 -1
  32. package/dist/esm/lib/schema/impl/type.js +7 -7
  33. package/dist/esm/lib/schema/impl/type.js.map +1 -1
  34. package/package.json +2 -2
@@ -7,19 +7,12 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
11
 
18
- var DEFAULT_ROW_COUNT = 100;
12
+ const DEFAULT_ROW_COUNT = 100;
19
13
 
20
- var ColumnarTableBatchAggregator = function () {
21
- function ColumnarTableBatchAggregator(schema, options) {
22
- (0, _classCallCheck2.default)(this, ColumnarTableBatchAggregator);
14
+ class ColumnarTableBatchAggregator {
15
+ constructor(schema, options) {
23
16
  (0, _defineProperty2.default)(this, "schema", void 0);
24
17
  (0, _defineProperty2.default)(this, "length", 0);
25
18
  (0, _defineProperty2.default)(this, "allocated", 0);
@@ -29,100 +22,88 @@ var ColumnarTableBatchAggregator = function () {
29
22
  this._reallocateColumns();
30
23
  }
31
24
 
32
- (0, _createClass2.default)(ColumnarTableBatchAggregator, [{
33
- key: "rowCount",
34
- value: function rowCount() {
35
- return this.length;
36
- }
37
- }, {
38
- key: "addArrayRow",
39
- value: function addArrayRow(row) {
40
- this._reallocateColumns();
25
+ rowCount() {
26
+ return this.length;
27
+ }
41
28
 
42
- var i = 0;
29
+ addArrayRow(row) {
30
+ this._reallocateColumns();
43
31
 
44
- for (var fieldName in this.columns) {
45
- this.columns[fieldName][this.length] = row[i++];
46
- }
32
+ let i = 0;
47
33
 
48
- this.length++;
34
+ for (const fieldName in this.columns) {
35
+ this.columns[fieldName][this.length] = row[i++];
49
36
  }
50
- }, {
51
- key: "addObjectRow",
52
- value: function addObjectRow(row) {
53
- this._reallocateColumns();
54
37
 
55
- for (var fieldName in row) {
56
- this.columns[fieldName][this.length] = row[fieldName];
57
- }
38
+ this.length++;
39
+ }
40
+
41
+ addObjectRow(row) {
42
+ this._reallocateColumns();
58
43
 
59
- this.length++;
44
+ for (const fieldName in row) {
45
+ this.columns[fieldName][this.length] = row[fieldName];
60
46
  }
61
- }, {
62
- key: "getBatch",
63
- value: function getBatch() {
64
- this._pruneColumns();
65
-
66
- var columns = Array.isArray(this.schema) ? this.columns : {};
67
-
68
- if (!Array.isArray(this.schema)) {
69
- for (var fieldName in this.schema) {
70
- var field = this.schema[fieldName];
71
- columns[field.name] = this.columns[field.index];
72
- }
47
+
48
+ this.length++;
49
+ }
50
+
51
+ getBatch() {
52
+ this._pruneColumns();
53
+
54
+ const columns = Array.isArray(this.schema) ? this.columns : {};
55
+
56
+ if (!Array.isArray(this.schema)) {
57
+ for (const fieldName in this.schema) {
58
+ const field = this.schema[fieldName];
59
+ columns[field.name] = this.columns[field.index];
73
60
  }
61
+ }
62
+
63
+ this.columns = {};
64
+ const batch = {
65
+ shape: 'columnar-table',
66
+ batchType: 'data',
67
+ data: columns,
68
+ schema: this.schema,
69
+ length: this.length
70
+ };
71
+ return batch;
72
+ }
74
73
 
75
- this.columns = {};
76
- var batch = {
77
- shape: 'columnar-table',
78
- batchType: 'data',
79
- data: columns,
80
- schema: this.schema,
81
- length: this.length
82
- };
83
- return batch;
74
+ _reallocateColumns() {
75
+ if (this.length < this.allocated) {
76
+ return;
84
77
  }
85
- }, {
86
- key: "_reallocateColumns",
87
- value: function _reallocateColumns() {
88
- if (this.length < this.allocated) {
89
- return;
90
- }
91
78
 
92
- this.allocated = this.allocated > 0 ? this.allocated *= 2 : DEFAULT_ROW_COUNT;
93
- this.columns = {};
94
-
95
- for (var fieldName in this.schema) {
96
- var field = this.schema[fieldName];
97
- var ArrayType = field.type || Float32Array;
98
- var oldColumn = this.columns[field.index];
99
-
100
- if (oldColumn && ArrayBuffer.isView(oldColumn)) {
101
- var typedArray = new ArrayType(this.allocated);
102
- typedArray.set(oldColumn);
103
- this.columns[field.index] = typedArray;
104
- } else if (oldColumn) {
105
- oldColumn.length = this.allocated;
106
- this.columns[field.index] = oldColumn;
107
- } else {
108
- this.columns[field.index] = new ArrayType(this.allocated);
109
- }
79
+ this.allocated = this.allocated > 0 ? this.allocated *= 2 : DEFAULT_ROW_COUNT;
80
+ this.columns = {};
81
+
82
+ for (const fieldName in this.schema) {
83
+ const field = this.schema[fieldName];
84
+ const ArrayType = field.type || Float32Array;
85
+ const oldColumn = this.columns[field.index];
86
+
87
+ if (oldColumn && ArrayBuffer.isView(oldColumn)) {
88
+ const typedArray = new ArrayType(this.allocated);
89
+ typedArray.set(oldColumn);
90
+ this.columns[field.index] = typedArray;
91
+ } else if (oldColumn) {
92
+ oldColumn.length = this.allocated;
93
+ this.columns[field.index] = oldColumn;
94
+ } else {
95
+ this.columns[field.index] = new ArrayType(this.allocated);
110
96
  }
111
97
  }
112
- }, {
113
- key: "_pruneColumns",
114
- value: function _pruneColumns() {
115
- for (var _i = 0, _Object$entries = Object.entries(this.columns); _i < _Object$entries.length; _i++) {
116
- var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
117
- _columnName = _Object$entries$_i[0],
118
- column = _Object$entries$_i[1];
119
-
120
- this.columns[_columnName] = column.slice(0, this.length);
121
- }
98
+ }
99
+
100
+ _pruneColumns() {
101
+ for (const [columnName, column] of Object.entries(this.columns)) {
102
+ this.columns[columnName] = column.slice(0, this.length);
122
103
  }
123
- }]);
124
- return ColumnarTableBatchAggregator;
125
- }();
104
+ }
105
+
106
+ }
126
107
 
127
108
  exports.default = ColumnarTableBatchAggregator;
128
109
  //# sourceMappingURL=columnar-table-batch-aggregator.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/table/columnar-table-batch-aggregator.ts"],"names":["DEFAULT_ROW_COUNT","ColumnarTableBatchAggregator","schema","options","_reallocateColumns","length","row","i","fieldName","columns","_pruneColumns","Array","isArray","field","name","index","batch","shape","batchType","data","allocated","ArrayType","type","Float32Array","oldColumn","ArrayBuffer","isView","typedArray","set","Object","entries","columnName","column","slice"],"mappings":"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","sourcesContent":["import type {Schema} from '../schema';\nimport type {ColumnarTableBatch, ArrowTableBatch} from '../../category/table';\nimport {TableBatchAggregator} from './table-batch-aggregator';\n\ntype ColumnarTableBatchOptions = {};\n\nconst DEFAULT_ROW_COUNT = 100;\n\nexport default class ColumnarTableBatchAggregator implements TableBatchAggregator {\n schema: Schema;\n length: number = 0;\n allocated: number = 0;\n columns: {[columnName: string]: any[]} = {};\n\n constructor(schema: Schema, options: ColumnarTableBatchOptions) {\n this.schema = schema;\n this._reallocateColumns();\n }\n\n rowCount(): number {\n return this.length;\n }\n\n addArrayRow(row: any[]) {\n // If user keeps pushing rows beyond batch size, reallocate\n this._reallocateColumns();\n let i = 0;\n // TODO what if no csv header, columns not populated?\n for (const fieldName in this.columns) {\n this.columns[fieldName][this.length] = row[i++];\n }\n this.length++;\n }\n\n addObjectRow(row: {[columnName: string]: any}): void {\n // If user keeps pushing rows beyond batch size, reallocate\n this._reallocateColumns();\n for (const fieldName in row) {\n this.columns[fieldName][this.length] = row[fieldName];\n }\n this.length++;\n }\n\n getBatch(): ColumnarTableBatch | ArrowTableBatch | null {\n this._pruneColumns();\n const columns = Array.isArray(this.schema) ? this.columns : {};\n\n // schema is an array if there're no headers\n // object if there are headers\n // columns should match schema format\n if (!Array.isArray(this.schema)) {\n for (const fieldName in this.schema) {\n const field = this.schema[fieldName];\n columns[field.name] = this.columns[field.index];\n }\n }\n\n this.columns = {};\n\n const batch: ColumnarTableBatch = {\n shape: 'columnar-table',\n batchType: 'data',\n data: columns,\n schema: this.schema,\n length: this.length\n };\n\n return batch;\n }\n\n // HELPERS\n\n _reallocateColumns() {\n if (this.length < this.allocated) {\n return;\n }\n\n // @ts-ignore TODO\n this.allocated = this.allocated > 0 ? (this.allocated *= 2) : DEFAULT_ROW_COUNT;\n this.columns = {};\n\n for (const fieldName in this.schema) {\n const field = this.schema[fieldName];\n const ArrayType = field.type || Float32Array;\n const oldColumn = this.columns[field.index];\n\n if (oldColumn && ArrayBuffer.isView(oldColumn)) {\n // Copy the old data to the new array\n const typedArray = new ArrayType(this.allocated);\n typedArray.set(oldColumn);\n this.columns[field.index] = typedArray;\n } else if (oldColumn) {\n // Plain array\n oldColumn.length = this.allocated;\n this.columns[field.index] = oldColumn;\n } else {\n // Create new\n this.columns[field.index] = new ArrayType(this.allocated);\n }\n }\n }\n\n _pruneColumns() {\n for (const [columnName, column] of Object.entries(this.columns)) {\n this.columns[columnName] = column.slice(0, this.length);\n }\n }\n}\n"],"file":"columnar-table-batch-aggregator.js"}
1
+ {"version":3,"sources":["../../../../src/lib/table/columnar-table-batch-aggregator.ts"],"names":["DEFAULT_ROW_COUNT","ColumnarTableBatchAggregator","constructor","schema","options","_reallocateColumns","rowCount","length","addArrayRow","row","i","fieldName","columns","addObjectRow","getBatch","_pruneColumns","Array","isArray","field","name","index","batch","shape","batchType","data","allocated","ArrayType","type","Float32Array","oldColumn","ArrayBuffer","isView","typedArray","set","columnName","column","Object","entries","slice"],"mappings":"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","sourcesContent":["import type {Schema} from '../schema';\nimport type {ColumnarTableBatch, ArrowTableBatch} from '../../category/table';\nimport {TableBatchAggregator} from './table-batch-aggregator';\n\ntype ColumnarTableBatchOptions = {};\n\nconst DEFAULT_ROW_COUNT = 100;\n\nexport default class ColumnarTableBatchAggregator implements TableBatchAggregator {\n schema: Schema;\n length: number = 0;\n allocated: number = 0;\n columns: {[columnName: string]: any[]} = {};\n\n constructor(schema: Schema, options: ColumnarTableBatchOptions) {\n this.schema = schema;\n this._reallocateColumns();\n }\n\n rowCount(): number {\n return this.length;\n }\n\n addArrayRow(row: any[]) {\n // If user keeps pushing rows beyond batch size, reallocate\n this._reallocateColumns();\n let i = 0;\n // TODO what if no csv header, columns not populated?\n for (const fieldName in this.columns) {\n this.columns[fieldName][this.length] = row[i++];\n }\n this.length++;\n }\n\n addObjectRow(row: {[columnName: string]: any}): void {\n // If user keeps pushing rows beyond batch size, reallocate\n this._reallocateColumns();\n for (const fieldName in row) {\n this.columns[fieldName][this.length] = row[fieldName];\n }\n this.length++;\n }\n\n getBatch(): ColumnarTableBatch | ArrowTableBatch | null {\n this._pruneColumns();\n const columns = Array.isArray(this.schema) ? this.columns : {};\n\n // schema is an array if there're no headers\n // object if there are headers\n // columns should match schema format\n if (!Array.isArray(this.schema)) {\n for (const fieldName in this.schema) {\n const field = this.schema[fieldName];\n columns[field.name] = this.columns[field.index];\n }\n }\n\n this.columns = {};\n\n const batch: ColumnarTableBatch = {\n shape: 'columnar-table',\n batchType: 'data',\n data: columns,\n schema: this.schema,\n length: this.length\n };\n\n return batch;\n }\n\n // HELPERS\n\n _reallocateColumns() {\n if (this.length < this.allocated) {\n return;\n }\n\n // @ts-ignore TODO\n this.allocated = this.allocated > 0 ? (this.allocated *= 2) : DEFAULT_ROW_COUNT;\n this.columns = {};\n\n for (const fieldName in this.schema) {\n const field = this.schema[fieldName];\n const ArrayType = field.type || Float32Array;\n const oldColumn = this.columns[field.index];\n\n if (oldColumn && ArrayBuffer.isView(oldColumn)) {\n // Copy the old data to the new array\n const typedArray = new ArrayType(this.allocated);\n typedArray.set(oldColumn);\n this.columns[field.index] = typedArray;\n } else if (oldColumn) {\n // Plain array\n oldColumn.length = this.allocated;\n this.columns[field.index] = oldColumn;\n } else {\n // Create new\n this.columns[field.index] = new ArrayType(this.allocated);\n }\n }\n }\n\n _pruneColumns() {\n for (const [columnName, column] of Object.entries(this.columns)) {\n this.columns[columnName] = column.slice(0, this.length);\n }\n }\n}\n"],"file":"columnar-table-batch-aggregator.js"}
@@ -7,19 +7,14 @@ 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
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
11
 
16
12
  var _rowUtils = require("../utils/row-utils");
17
13
 
18
- var DEFAULT_ROW_COUNT = 100;
14
+ const DEFAULT_ROW_COUNT = 100;
19
15
 
20
- var RowTableBatchAggregator = function () {
21
- function RowTableBatchAggregator(schema, options) {
22
- (0, _classCallCheck2.default)(this, RowTableBatchAggregator);
16
+ class RowTableBatchAggregator {
17
+ constructor(schema, options) {
23
18
  (0, _defineProperty2.default)(this, "schema", void 0);
24
19
  (0, _defineProperty2.default)(this, "options", void 0);
25
20
  (0, _defineProperty2.default)(this, "length", 0);
@@ -33,81 +28,75 @@ var RowTableBatchAggregator = function () {
33
28
  if (!Array.isArray(schema)) {
34
29
  this._headers = [];
35
30
 
36
- for (var key in schema) {
31
+ for (const key in schema) {
37
32
  this._headers[schema[key].index] = schema[key].name;
38
33
  }
39
34
  }
40
35
  }
41
36
 
42
- (0, _createClass2.default)(RowTableBatchAggregator, [{
43
- key: "rowCount",
44
- value: function rowCount() {
45
- return this.length;
37
+ rowCount() {
38
+ return this.length;
39
+ }
40
+
41
+ addArrayRow(row, cursor) {
42
+ if (Number.isFinite(cursor)) {
43
+ this.cursor = cursor;
46
44
  }
47
- }, {
48
- key: "addArrayRow",
49
- value: function addArrayRow(row, cursor) {
50
- if (Number.isFinite(cursor)) {
51
- this.cursor = cursor;
52
- }
53
45
 
54
- switch (this.options.shape) {
55
- case 'object-row-table':
56
- var rowObject = (0, _rowUtils.convertToObjectRow)(row, this._headers);
57
- this.addObjectRow(rowObject, cursor);
58
- break;
59
-
60
- case 'array-row-table':
61
- this.arrayRows = this.arrayRows || new Array(DEFAULT_ROW_COUNT);
62
- this.arrayRows[this.length] = row;
63
- this.length++;
64
- break;
65
- }
46
+ switch (this.options.shape) {
47
+ case 'object-row-table':
48
+ const rowObject = (0, _rowUtils.convertToObjectRow)(row, this._headers);
49
+ this.addObjectRow(rowObject, cursor);
50
+ break;
51
+
52
+ case 'array-row-table':
53
+ this.arrayRows = this.arrayRows || new Array(DEFAULT_ROW_COUNT);
54
+ this.arrayRows[this.length] = row;
55
+ this.length++;
56
+ break;
66
57
  }
67
- }, {
68
- key: "addObjectRow",
69
- value: function addObjectRow(row, cursor) {
70
- if (Number.isFinite(cursor)) {
71
- this.cursor = cursor;
72
- }
58
+ }
73
59
 
74
- switch (this.options.shape) {
75
- case 'array-row-table':
76
- var rowArray = (0, _rowUtils.convertToArrayRow)(row, this._headers);
77
- this.addArrayRow(rowArray, cursor);
78
- break;
79
-
80
- case 'object-row-table':
81
- this.objectRows = this.objectRows || new Array(DEFAULT_ROW_COUNT);
82
- this.objectRows[this.length] = row;
83
- this.length++;
84
- break;
85
- }
60
+ addObjectRow(row, cursor) {
61
+ if (Number.isFinite(cursor)) {
62
+ this.cursor = cursor;
86
63
  }
87
- }, {
88
- key: "getBatch",
89
- value: function getBatch() {
90
- var rows = this.arrayRows || this.objectRows;
91
64
 
92
- if (!rows) {
93
- return null;
94
- }
65
+ switch (this.options.shape) {
66
+ case 'array-row-table':
67
+ const rowArray = (0, _rowUtils.convertToArrayRow)(row, this._headers);
68
+ this.addArrayRow(rowArray, cursor);
69
+ break;
70
+
71
+ case 'object-row-table':
72
+ this.objectRows = this.objectRows || new Array(DEFAULT_ROW_COUNT);
73
+ this.objectRows[this.length] = row;
74
+ this.length++;
75
+ break;
76
+ }
77
+ }
95
78
 
96
- rows = rows.slice(0, this.length);
97
- this.arrayRows = null;
98
- this.objectRows = null;
99
- return {
100
- shape: this.options.shape,
101
- batchType: 'data',
102
- data: rows,
103
- length: this.length,
104
- schema: this.schema,
105
- cursor: this.cursor
106
- };
79
+ getBatch() {
80
+ let rows = this.arrayRows || this.objectRows;
81
+
82
+ if (!rows) {
83
+ return null;
107
84
  }
108
- }]);
109
- return RowTableBatchAggregator;
110
- }();
85
+
86
+ rows = rows.slice(0, this.length);
87
+ this.arrayRows = null;
88
+ this.objectRows = null;
89
+ return {
90
+ shape: this.options.shape,
91
+ batchType: 'data',
92
+ data: rows,
93
+ length: this.length,
94
+ schema: this.schema,
95
+ cursor: this.cursor
96
+ };
97
+ }
98
+
99
+ }
111
100
 
112
101
  exports.default = RowTableBatchAggregator;
113
102
  //# sourceMappingURL=row-table-batch-aggregator.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/table/row-table-batch-aggregator.ts"],"names":["DEFAULT_ROW_COUNT","RowTableBatchAggregator","schema","options","Array","isArray","_headers","key","index","name","length","row","cursor","Number","isFinite","shape","rowObject","addObjectRow","arrayRows","rowArray","addArrayRow","objectRows","rows","slice","batchType","data"],"mappings":";;;;;;;;;;;;;;;AAGA;;AAGA,IAAMA,iBAAiB,GAAG,GAA1B;;IAEqBC,uB;AAUnB,mCAAYC,MAAZ,EAA4BC,OAA5B,EAAwD;AAAA;AAAA;AAAA;AAAA,kDANvC,CAMuC;AAAA,sDALP,IAKO;AAAA,qDAJ9B,IAI8B;AAAA,kDAHvC,CAGuC;AAAA,oDAF3B,EAE2B;AACtD,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAKD,MAAL,GAAcA,MAAd;;AAIA,QAAI,CAACE,KAAK,CAACC,OAAN,CAAcH,MAAd,CAAL,EAA4B;AAC1B,WAAKI,QAAL,GAAgB,EAAhB;;AACA,WAAK,IAAMC,GAAX,IAAkBL,MAAlB,EAA0B;AACxB,aAAKI,QAAL,CAAcJ,MAAM,CAACK,GAAD,CAAN,CAAYC,KAA1B,IAAmCN,MAAM,CAACK,GAAD,CAAN,CAAYE,IAA/C;AACD;AACF;AACF;;;;WAED,oBAAmB;AACjB,aAAO,KAAKC,MAAZ;AACD;;;WAED,qBAAYC,GAAZ,EAAwBC,MAAxB,EAA+C;AAC7C,UAAIC,MAAM,CAACC,QAAP,CAAgBF,MAAhB,CAAJ,EAA6B;AAC3B,aAAKA,MAAL,GAAcA,MAAd;AACD;;AAGD,cAAQ,KAAKT,OAAL,CAAaY,KAArB;AACE,aAAK,kBAAL;AACE,cAAMC,SAAS,GAAG,kCAAmBL,GAAnB,EAAwB,KAAKL,QAA7B,CAAlB;AACA,eAAKW,YAAL,CAAkBD,SAAlB,EAA6BJ,MAA7B;AACA;;AACF,aAAK,iBAAL;AACE,eAAKM,SAAL,GAAiB,KAAKA,SAAL,IAAkB,IAAId,KAAJ,CAAUJ,iBAAV,CAAnC;AACA,eAAKkB,SAAL,CAAe,KAAKR,MAApB,IAA8BC,GAA9B;AACA,eAAKD,MAAL;AACA;AATJ;AAWD;;;WAED,sBAAaC,GAAb,EAA+CC,MAA/C,EAAsE;AACpE,UAAIC,MAAM,CAACC,QAAP,CAAgBF,MAAhB,CAAJ,EAA6B;AAC3B,aAAKA,MAAL,GAAcA,MAAd;AACD;;AAGD,cAAQ,KAAKT,OAAL,CAAaY,KAArB;AACE,aAAK,iBAAL;AACE,cAAMI,QAAQ,GAAG,iCAAkBR,GAAlB,EAAuB,KAAKL,QAA5B,CAAjB;AACA,eAAKc,WAAL,CAAiBD,QAAjB,EAA2BP,MAA3B;AACA;;AACF,aAAK,kBAAL;AACE,eAAKS,UAAL,GAAkB,KAAKA,UAAL,IAAmB,IAAIjB,KAAJ,CAAUJ,iBAAV,CAArC;AACA,eAAKqB,UAAL,CAAgB,KAAKX,MAArB,IAA+BC,GAA/B;AACA,eAAKD,MAAL;AACA;AATJ;AAWD;;;WAED,oBAA8B;AAC5B,UAAIY,IAAI,GAAG,KAAKJ,SAAL,IAAkB,KAAKG,UAAlC;;AACA,UAAI,CAACC,IAAL,EAAW;AACT,eAAO,IAAP;AACD;;AAEDA,MAAAA,IAAI,GAAGA,IAAI,CAACC,KAAL,CAAW,CAAX,EAAc,KAAKb,MAAnB,CAAP;AACA,WAAKQ,SAAL,GAAiB,IAAjB;AACA,WAAKG,UAAL,GAAkB,IAAlB;AAEA,aAAO;AACLN,QAAAA,KAAK,EAAE,KAAKZ,OAAL,CAAaY,KADf;AAELS,QAAAA,SAAS,EAAE,MAFN;AAGLC,QAAAA,IAAI,EAAEH,IAHD;AAILZ,QAAAA,MAAM,EAAE,KAAKA,MAJR;AAKLR,QAAAA,MAAM,EAAE,KAAKA,MALR;AAMLU,QAAAA,MAAM,EAAE,KAAKA;AANR,OAAP;AAQD","sourcesContent":["import type {Schema} from '../schema';\nimport type {TableBatch} from '../../category/table';\n// import type {ArrayRowTableBatch, ObjectRowTableBatch} from '../../category/table';\nimport {convertToArrayRow, convertToObjectRow} from '../utils/row-utils';\nimport {TableBatchAggregator, TableBatchOptions} from './table-batch-aggregator';\n\nconst DEFAULT_ROW_COUNT = 100;\n\nexport default class RowTableBatchAggregator implements TableBatchAggregator {\n schema: Schema;\n options: TableBatchOptions;\n\n length: number = 0;\n objectRows: {[columnName: string]: any} | null = null;\n arrayRows: any[] | null = null;\n cursor: number = 0;\n private _headers: string[] = [];\n\n constructor(schema: Schema, options: TableBatchOptions) {\n this.options = options;\n this.schema = schema;\n\n // schema is an array if there're no headers\n // object if there are headers\n if (!Array.isArray(schema)) {\n this._headers = [];\n for (const key in schema) {\n this._headers[schema[key].index] = schema[key].name;\n }\n }\n }\n\n rowCount(): number {\n return this.length;\n }\n\n addArrayRow(row: any[], cursor?: number): void {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor as number;\n }\n\n // eslint-disable-next-line default-case\n switch (this.options.shape) {\n case 'object-row-table':\n const rowObject = convertToObjectRow(row, this._headers);\n this.addObjectRow(rowObject, cursor);\n break;\n case 'array-row-table':\n this.arrayRows = this.arrayRows || new Array(DEFAULT_ROW_COUNT);\n this.arrayRows[this.length] = row;\n this.length++;\n break;\n }\n }\n\n addObjectRow(row: {[columnName: string]: any}, cursor?: number): void {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor as number;\n }\n\n // eslint-disable-next-line default-case\n switch (this.options.shape) {\n case 'array-row-table':\n const rowArray = convertToArrayRow(row, this._headers);\n this.addArrayRow(rowArray, cursor);\n break;\n case 'object-row-table':\n this.objectRows = this.objectRows || new Array(DEFAULT_ROW_COUNT);\n this.objectRows[this.length] = row;\n this.length++;\n break;\n }\n }\n\n getBatch(): TableBatch | null {\n let rows = this.arrayRows || this.objectRows;\n if (!rows) {\n return null;\n }\n\n rows = rows.slice(0, this.length);\n this.arrayRows = null;\n this.objectRows = null;\n\n return {\n shape: this.options.shape,\n batchType: 'data',\n data: rows,\n length: this.length,\n schema: this.schema,\n cursor: this.cursor\n };\n }\n}\n"],"file":"row-table-batch-aggregator.js"}
1
+ {"version":3,"sources":["../../../../src/lib/table/row-table-batch-aggregator.ts"],"names":["DEFAULT_ROW_COUNT","RowTableBatchAggregator","constructor","schema","options","Array","isArray","_headers","key","index","name","rowCount","length","addArrayRow","row","cursor","Number","isFinite","shape","rowObject","addObjectRow","arrayRows","rowArray","objectRows","getBatch","rows","slice","batchType","data"],"mappings":";;;;;;;;;;;AAGA;;AAGA,MAAMA,iBAAiB,GAAG,GAA1B;;AAEe,MAAMC,uBAAN,CAA8D;AAU3EC,EAAAA,WAAW,CAACC,MAAD,EAAiBC,OAAjB,EAA6C;AAAA;AAAA;AAAA,kDANvC,CAMuC;AAAA,sDALP,IAKO;AAAA,qDAJ9B,IAI8B;AAAA,kDAHvC,CAGuC;AAAA,oDAF3B,EAE2B;AACtD,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAKD,MAAL,GAAcA,MAAd;;AAIA,QAAI,CAACE,KAAK,CAACC,OAAN,CAAcH,MAAd,CAAL,EAA4B;AAC1B,WAAKI,QAAL,GAAgB,EAAhB;;AACA,WAAK,MAAMC,GAAX,IAAkBL,MAAlB,EAA0B;AACxB,aAAKI,QAAL,CAAcJ,MAAM,CAACK,GAAD,CAAN,CAAYC,KAA1B,IAAmCN,MAAM,CAACK,GAAD,CAAN,CAAYE,IAA/C;AACD;AACF;AACF;;AAEDC,EAAAA,QAAQ,GAAW;AACjB,WAAO,KAAKC,MAAZ;AACD;;AAEDC,EAAAA,WAAW,CAACC,GAAD,EAAaC,MAAb,EAAoC;AAC7C,QAAIC,MAAM,CAACC,QAAP,CAAgBF,MAAhB,CAAJ,EAA6B;AAC3B,WAAKA,MAAL,GAAcA,MAAd;AACD;;AAGD,YAAQ,KAAKX,OAAL,CAAac,KAArB;AACE,WAAK,kBAAL;AACE,cAAMC,SAAS,GAAG,kCAAmBL,GAAnB,EAAwB,KAAKP,QAA7B,CAAlB;AACA,aAAKa,YAAL,CAAkBD,SAAlB,EAA6BJ,MAA7B;AACA;;AACF,WAAK,iBAAL;AACE,aAAKM,SAAL,GAAiB,KAAKA,SAAL,IAAkB,IAAIhB,KAAJ,CAAUL,iBAAV,CAAnC;AACA,aAAKqB,SAAL,CAAe,KAAKT,MAApB,IAA8BE,GAA9B;AACA,aAAKF,MAAL;AACA;AATJ;AAWD;;AAEDQ,EAAAA,YAAY,CAACN,GAAD,EAAmCC,MAAnC,EAA0D;AACpE,QAAIC,MAAM,CAACC,QAAP,CAAgBF,MAAhB,CAAJ,EAA6B;AAC3B,WAAKA,MAAL,GAAcA,MAAd;AACD;;AAGD,YAAQ,KAAKX,OAAL,CAAac,KAArB;AACE,WAAK,iBAAL;AACE,cAAMI,QAAQ,GAAG,iCAAkBR,GAAlB,EAAuB,KAAKP,QAA5B,CAAjB;AACA,aAAKM,WAAL,CAAiBS,QAAjB,EAA2BP,MAA3B;AACA;;AACF,WAAK,kBAAL;AACE,aAAKQ,UAAL,GAAkB,KAAKA,UAAL,IAAmB,IAAIlB,KAAJ,CAAUL,iBAAV,CAArC;AACA,aAAKuB,UAAL,CAAgB,KAAKX,MAArB,IAA+BE,GAA/B;AACA,aAAKF,MAAL;AACA;AATJ;AAWD;;AAEDY,EAAAA,QAAQ,GAAsB;AAC5B,QAAIC,IAAI,GAAG,KAAKJ,SAAL,IAAkB,KAAKE,UAAlC;;AACA,QAAI,CAACE,IAAL,EAAW;AACT,aAAO,IAAP;AACD;;AAEDA,IAAAA,IAAI,GAAGA,IAAI,CAACC,KAAL,CAAW,CAAX,EAAc,KAAKd,MAAnB,CAAP;AACA,SAAKS,SAAL,GAAiB,IAAjB;AACA,SAAKE,UAAL,GAAkB,IAAlB;AAEA,WAAO;AACLL,MAAAA,KAAK,EAAE,KAAKd,OAAL,CAAac,KADf;AAELS,MAAAA,SAAS,EAAE,MAFN;AAGLC,MAAAA,IAAI,EAAEH,IAHD;AAILb,MAAAA,MAAM,EAAE,KAAKA,MAJR;AAKLT,MAAAA,MAAM,EAAE,KAAKA,MALR;AAMLY,MAAAA,MAAM,EAAE,KAAKA;AANR,KAAP;AAQD;;AApF0E","sourcesContent":["import type {Schema} from '../schema';\nimport type {TableBatch} from '../../category/table';\n// import type {ArrayRowTableBatch, ObjectRowTableBatch} from '../../category/table';\nimport {convertToArrayRow, convertToObjectRow} from '../utils/row-utils';\nimport {TableBatchAggregator, TableBatchOptions} from './table-batch-aggregator';\n\nconst DEFAULT_ROW_COUNT = 100;\n\nexport default class RowTableBatchAggregator implements TableBatchAggregator {\n schema: Schema;\n options: TableBatchOptions;\n\n length: number = 0;\n objectRows: {[columnName: string]: any} | null = null;\n arrayRows: any[] | null = null;\n cursor: number = 0;\n private _headers: string[] = [];\n\n constructor(schema: Schema, options: TableBatchOptions) {\n this.options = options;\n this.schema = schema;\n\n // schema is an array if there're no headers\n // object if there are headers\n if (!Array.isArray(schema)) {\n this._headers = [];\n for (const key in schema) {\n this._headers[schema[key].index] = schema[key].name;\n }\n }\n }\n\n rowCount(): number {\n return this.length;\n }\n\n addArrayRow(row: any[], cursor?: number): void {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor as number;\n }\n\n // eslint-disable-next-line default-case\n switch (this.options.shape) {\n case 'object-row-table':\n const rowObject = convertToObjectRow(row, this._headers);\n this.addObjectRow(rowObject, cursor);\n break;\n case 'array-row-table':\n this.arrayRows = this.arrayRows || new Array(DEFAULT_ROW_COUNT);\n this.arrayRows[this.length] = row;\n this.length++;\n break;\n }\n }\n\n addObjectRow(row: {[columnName: string]: any}, cursor?: number): void {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor as number;\n }\n\n // eslint-disable-next-line default-case\n switch (this.options.shape) {\n case 'array-row-table':\n const rowArray = convertToArrayRow(row, this._headers);\n this.addArrayRow(rowArray, cursor);\n break;\n case 'object-row-table':\n this.objectRows = this.objectRows || new Array(DEFAULT_ROW_COUNT);\n this.objectRows[this.length] = row;\n this.length++;\n break;\n }\n }\n\n getBatch(): TableBatch | null {\n let rows = this.arrayRows || this.objectRows;\n if (!rows) {\n return null;\n }\n\n rows = rows.slice(0, this.length);\n this.arrayRows = null;\n this.objectRows = null;\n\n return {\n shape: this.options.shape,\n batchType: 'data',\n data: rows,\n length: this.length,\n schema: this.schema,\n cursor: this.cursor\n };\n }\n}\n"],"file":"row-table-batch-aggregator.js"}