@loaders.gl/schema 4.2.0-alpha.4 → 4.2.0-alpha.5

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 (134) hide show
  1. package/dist/dist.dev.js +190 -161
  2. package/dist/dist.min.js +9 -0
  3. package/dist/index.cjs +64 -73
  4. package/dist/index.cjs.map +7 -0
  5. package/dist/index.d.ts +30 -30
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +9 -1
  8. package/dist/lib/mesh/convert-mesh.d.ts +2 -2
  9. package/dist/lib/mesh/convert-mesh.d.ts.map +1 -1
  10. package/dist/lib/mesh/convert-mesh.js +33 -18
  11. package/dist/lib/mesh/deduce-mesh-schema.d.ts +2 -2
  12. package/dist/lib/mesh/deduce-mesh-schema.d.ts.map +1 -1
  13. package/dist/lib/mesh/deduce-mesh-schema.js +54 -40
  14. package/dist/lib/mesh/mesh-to-arrow-table.js +46 -1
  15. package/dist/lib/mesh/mesh-utils.d.ts +2 -2
  16. package/dist/lib/mesh/mesh-utils.d.ts.map +1 -1
  17. package/dist/lib/mesh/mesh-utils.js +41 -28
  18. package/dist/lib/table/arrow-api/arrow-like-field.d.ts +1 -1
  19. package/dist/lib/table/arrow-api/arrow-like-field.d.ts.map +1 -1
  20. package/dist/lib/table/arrow-api/arrow-like-field.js +30 -25
  21. package/dist/lib/table/arrow-api/arrow-like-schema.d.ts +2 -2
  22. package/dist/lib/table/arrow-api/arrow-like-schema.d.ts.map +1 -1
  23. package/dist/lib/table/arrow-api/arrow-like-schema.js +69 -56
  24. package/dist/lib/table/arrow-api/arrow-like-table.d.ts +2 -2
  25. package/dist/lib/table/arrow-api/arrow-like-table.d.ts.map +1 -1
  26. package/dist/lib/table/arrow-api/arrow-like-table.js +53 -45
  27. package/dist/lib/table/arrow-api/arrow-like-type.d.ts +3 -3
  28. package/dist/lib/table/arrow-api/arrow-like-type.d.ts.map +1 -1
  29. package/dist/lib/table/arrow-api/arrow-like-type.js +357 -321
  30. package/dist/lib/table/arrow-api/enum.js +97 -48
  31. package/dist/lib/table/arrow-api/get-type-info.d.ts +1 -1
  32. package/dist/lib/table/arrow-api/get-type-info.d.ts.map +1 -1
  33. package/dist/lib/table/arrow-api/get-type-info.js +20 -14
  34. package/dist/lib/table/arrow-api/index.d.ts +4 -4
  35. package/dist/lib/table/arrow-api/index.d.ts.map +1 -1
  36. package/dist/lib/table/arrow-api/index.js +3 -1
  37. package/dist/lib/table/batches/base-table-batch-aggregator.d.ts +3 -3
  38. package/dist/lib/table/batches/base-table-batch-aggregator.d.ts.map +1 -1
  39. package/dist/lib/table/batches/base-table-batch-aggregator.js +53 -52
  40. package/dist/lib/table/batches/columnar-table-batch-aggregator.d.ts +3 -3
  41. package/dist/lib/table/batches/columnar-table-batch-aggregator.d.ts.map +1 -1
  42. package/dist/lib/table/batches/columnar-table-batch-aggregator.js +81 -67
  43. package/dist/lib/table/batches/row-table-batch-aggregator.d.ts +3 -3
  44. package/dist/lib/table/batches/row-table-batch-aggregator.d.ts.map +1 -1
  45. package/dist/lib/table/batches/row-table-batch-aggregator.js +74 -67
  46. package/dist/lib/table/batches/table-batch-aggregator.d.ts +2 -2
  47. package/dist/lib/table/batches/table-batch-aggregator.d.ts.map +1 -1
  48. package/dist/lib/table/batches/table-batch-aggregator.js +3 -1
  49. package/dist/lib/table/batches/table-batch-builder.d.ts +3 -3
  50. package/dist/lib/table/batches/table-batch-builder.d.ts.map +1 -1
  51. package/dist/lib/table/batches/table-batch-builder.js +128 -116
  52. package/dist/lib/table/simple-table/convert-table.d.ts +1 -1
  53. package/dist/lib/table/simple-table/convert-table.d.ts.map +1 -1
  54. package/dist/lib/table/simple-table/convert-table.js +97 -62
  55. package/dist/lib/table/simple-table/data-type.d.ts +2 -2
  56. package/dist/lib/table/simple-table/data-type.d.ts.map +1 -1
  57. package/dist/lib/table/simple-table/data-type.js +79 -76
  58. package/dist/lib/table/simple-table/make-table-from-batches.js +70 -67
  59. package/dist/lib/table/simple-table/make-table.d.ts +1 -1
  60. package/dist/lib/table/simple-table/make-table.d.ts.map +1 -1
  61. package/dist/lib/table/simple-table/make-table.js +85 -41
  62. package/dist/lib/table/simple-table/row-utils.js +38 -31
  63. package/dist/lib/table/simple-table/table-accessors.d.ts +1 -1
  64. package/dist/lib/table/simple-table/table-accessors.d.ts.map +1 -1
  65. package/dist/lib/table/simple-table/table-accessors.js +314 -270
  66. package/dist/lib/table/simple-table/table-column.d.ts +1 -1
  67. package/dist/lib/table/simple-table/table-column.d.ts.map +1 -1
  68. package/dist/lib/table/simple-table/table-column.js +36 -3
  69. package/dist/lib/table/simple-table/table-schema.d.ts +2 -2
  70. package/dist/lib/table/simple-table/table-schema.d.ts.map +1 -1
  71. package/dist/lib/table/simple-table/table-schema.js +69 -56
  72. package/dist/lib/utils/assert.js +6 -4
  73. package/dist/lib/utils/async-queue.js +76 -82
  74. package/dist/types/batch.d.ts +1 -1
  75. package/dist/types/batch.d.ts.map +1 -1
  76. package/dist/types/batch.js +3 -1
  77. package/dist/types/binary-geometries.d.ts +1 -1
  78. package/dist/types/binary-geometries.d.ts.map +1 -1
  79. package/dist/types/binary-geometries.js +3 -1
  80. package/dist/types/category-gis.d.ts +2 -2
  81. package/dist/types/category-gis.d.ts.map +1 -1
  82. package/dist/types/category-gis.js +3 -1
  83. package/dist/types/category-image.js +3 -1
  84. package/dist/types/category-mesh.d.ts +3 -3
  85. package/dist/types/category-mesh.d.ts.map +1 -1
  86. package/dist/types/category-mesh.js +3 -1
  87. package/dist/types/category-table.d.ts +3 -3
  88. package/dist/types/category-table.d.ts.map +1 -1
  89. package/dist/types/category-table.js +3 -1
  90. package/dist/types/category-texture.d.ts +1 -1
  91. package/dist/types/category-texture.d.ts.map +1 -1
  92. package/dist/types/category-texture.js +3 -1
  93. package/dist/types/flat-geometries.js +3 -1
  94. package/dist/types/schema.js +3 -1
  95. package/dist/types/types.js +3 -1
  96. package/package.json +8 -4
  97. package/src/index.ts +1 -1
  98. package/dist/index.js.map +0 -1
  99. package/dist/lib/mesh/convert-mesh.js.map +0 -1
  100. package/dist/lib/mesh/deduce-mesh-schema.js.map +0 -1
  101. package/dist/lib/mesh/mesh-to-arrow-table.js.map +0 -1
  102. package/dist/lib/mesh/mesh-utils.js.map +0 -1
  103. package/dist/lib/table/arrow-api/arrow-like-field.js.map +0 -1
  104. package/dist/lib/table/arrow-api/arrow-like-schema.js.map +0 -1
  105. package/dist/lib/table/arrow-api/arrow-like-table.js.map +0 -1
  106. package/dist/lib/table/arrow-api/arrow-like-type.js.map +0 -1
  107. package/dist/lib/table/arrow-api/enum.js.map +0 -1
  108. package/dist/lib/table/arrow-api/get-type-info.js.map +0 -1
  109. package/dist/lib/table/arrow-api/index.js.map +0 -1
  110. package/dist/lib/table/batches/base-table-batch-aggregator.js.map +0 -1
  111. package/dist/lib/table/batches/columnar-table-batch-aggregator.js.map +0 -1
  112. package/dist/lib/table/batches/row-table-batch-aggregator.js.map +0 -1
  113. package/dist/lib/table/batches/table-batch-aggregator.js.map +0 -1
  114. package/dist/lib/table/batches/table-batch-builder.js.map +0 -1
  115. package/dist/lib/table/simple-table/convert-table.js.map +0 -1
  116. package/dist/lib/table/simple-table/data-type.js.map +0 -1
  117. package/dist/lib/table/simple-table/make-table-from-batches.js.map +0 -1
  118. package/dist/lib/table/simple-table/make-table.js.map +0 -1
  119. package/dist/lib/table/simple-table/row-utils.js.map +0 -1
  120. package/dist/lib/table/simple-table/table-accessors.js.map +0 -1
  121. package/dist/lib/table/simple-table/table-column.js.map +0 -1
  122. package/dist/lib/table/simple-table/table-schema.js.map +0 -1
  123. package/dist/lib/utils/assert.js.map +0 -1
  124. package/dist/lib/utils/async-queue.js.map +0 -1
  125. package/dist/types/batch.js.map +0 -1
  126. package/dist/types/binary-geometries.js.map +0 -1
  127. package/dist/types/category-gis.js.map +0 -1
  128. package/dist/types/category-image.js.map +0 -1
  129. package/dist/types/category-mesh.js.map +0 -1
  130. package/dist/types/category-table.js.map +0 -1
  131. package/dist/types/category-texture.js.map +0 -1
  132. package/dist/types/flat-geometries.js.map +0 -1
  133. package/dist/types/schema.js.map +0 -1
  134. package/dist/types/types.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { DataType } from '../../../types/schema';
2
- import { TypedArray, TypedArrayConstructor, ArrayType } from '../../../types/types';
1
+ import { DataType } from "../../../types/schema.js";
2
+ import { TypedArray, TypedArrayConstructor, ArrayType } from "../../../types/types.js";
3
3
  /** Deduce column types from values */
4
4
  export declare function getDataTypeFromValue(value: unknown, defaultNumberType?: 'float32'): DataType;
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"data-type.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/simple-table/data-type.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAC,UAAU,EAAE,qBAAqB,EAAE,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAElF,sCAAsC;AACtC,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,iBAAiB,GAAE,SAAqB,GACvC,QAAQ,CAcV;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAC,CAW1F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAsBrE;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,OAAO,GAAG,SAAS,GAC5B,qBAAqB,GAAG,gBAAgB,CA8B1C"}
1
+ {"version":3,"file":"data-type.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/simple-table/data-type.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAC,iCAA8B;AAC/C,OAAO,EAAC,UAAU,EAAE,qBAAqB,EAAE,SAAS,EAAC,gCAA6B;AAElF,sCAAsC;AACtC,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,iBAAiB,GAAE,SAAqB,GACvC,QAAQ,CAcV;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAC,CAW1F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAsBrE;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,OAAO,GAAG,SAAS,GAC5B,qBAAqB,GAAG,gBAAgB,CA8B1C"}
@@ -1,85 +1,88 @@
1
- export function getDataTypeFromValue(value) {
2
- let defaultNumberType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'float32';
3
- if (value instanceof Date) {
4
- return 'date-millisecond';
5
- }
6
- if (value instanceof Number) {
7
- return defaultNumberType;
8
- }
9
- if (typeof value === 'string') {
10
- return 'utf8';
11
- }
12
- if (value === null || value === 'undefined') {
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /** Deduce column types from values */
5
+ export function getDataTypeFromValue(value, defaultNumberType = 'float32') {
6
+ if (value instanceof Date) {
7
+ return 'date-millisecond';
8
+ }
9
+ if (value instanceof Number) {
10
+ return defaultNumberType;
11
+ }
12
+ if (typeof value === 'string') {
13
+ return 'utf8';
14
+ }
15
+ if (value === null || value === 'undefined') {
16
+ return 'null';
17
+ }
13
18
  return 'null';
14
- }
15
- return 'null';
16
19
  }
20
+ /**
21
+ * Deduces a simple data type "descriptor from a typed array instance
22
+ */
17
23
  export function getDataTypeFromArray(array) {
18
- let type = getDataTypeFromTypedArray(array);
19
- if (type !== 'null') {
20
- return {
21
- type,
22
- nullable: false
23
- };
24
- }
25
- if (array.length > 0) {
26
- type = getDataTypeFromValue(array[0]);
27
- return {
28
- type,
29
- nullable: true
30
- };
31
- }
32
- return {
33
- type: 'null',
34
- nullable: true
35
- };
24
+ let type = getDataTypeFromTypedArray(array);
25
+ if (type !== 'null') {
26
+ return { type, nullable: false };
27
+ }
28
+ if (array.length > 0) {
29
+ type = getDataTypeFromValue(array[0]);
30
+ return { type, nullable: true };
31
+ }
32
+ return { type: 'null', nullable: true };
36
33
  }
34
+ /**
35
+ * Deduces a simple data type "descriptor from a typed array instance
36
+ */
37
37
  export function getDataTypeFromTypedArray(array) {
38
- switch (array.constructor) {
39
- case Int8Array:
40
- return 'int8';
41
- case Uint8Array:
42
- case Uint8ClampedArray:
43
- return 'uint8';
44
- case Int16Array:
45
- return 'int16';
46
- case Uint16Array:
47
- return 'uint16';
48
- case Int32Array:
49
- return 'int32';
50
- case Uint32Array:
51
- return 'uint32';
52
- case Float32Array:
53
- return 'float32';
54
- case Float64Array:
55
- return 'float64';
56
- default:
57
- return 'null';
58
- }
38
+ switch (array.constructor) {
39
+ case Int8Array:
40
+ return 'int8';
41
+ case Uint8Array:
42
+ case Uint8ClampedArray:
43
+ return 'uint8';
44
+ case Int16Array:
45
+ return 'int16';
46
+ case Uint16Array:
47
+ return 'uint16';
48
+ case Int32Array:
49
+ return 'int32';
50
+ case Uint32Array:
51
+ return 'uint32';
52
+ case Float32Array:
53
+ return 'float32';
54
+ case Float64Array:
55
+ return 'float64';
56
+ default:
57
+ return 'null';
58
+ }
59
59
  }
60
60
  export function getArrayTypeFromDataType(type, nullable) {
61
- if (!nullable) {
62
- switch (type) {
63
- case 'int8':
64
- return Int8Array;
65
- case 'uint8':
66
- return Uint8Array;
67
- case 'int16':
68
- return Int16Array;
69
- case 'uint16':
70
- return Uint16Array;
71
- case 'int32':
72
- return Int32Array;
73
- case 'uint32':
74
- return Uint32Array;
75
- case 'float32':
76
- return Float32Array;
77
- case 'float64':
78
- return Float64Array;
79
- default:
80
- break;
61
+ if (!nullable) {
62
+ switch (type) {
63
+ case 'int8':
64
+ return Int8Array;
65
+ case 'uint8':
66
+ return Uint8Array;
67
+ case 'int16':
68
+ return Int16Array;
69
+ case 'uint16':
70
+ return Uint16Array;
71
+ case 'int32':
72
+ return Int32Array;
73
+ case 'uint32':
74
+ return Uint32Array;
75
+ case 'float32':
76
+ return Float32Array;
77
+ case 'float64':
78
+ return Float64Array;
79
+ default:
80
+ break;
81
+ }
81
82
  }
82
- }
83
- return Array;
83
+ // if (typeof BigInt64Array !== 'undefined') {
84
+ // TYPED_ARRAY_TO_TYPE.BigInt64Array = new Int64();
85
+ // TYPED_ARRAY_TO_TYPE.BigUint64Array = new Uint64();
86
+ // }
87
+ return Array;
84
88
  }
85
- //# sourceMappingURL=data-type.js.map
@@ -1,76 +1,79 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { getTableLength } from '@loaders.gl/schema';
5
+ /**
6
+ * Returns an iterator that yields a single table as a sequence of batches.
7
+ * @note Currently only a single batch is yielded.
8
+ * @note All batches will have the same shape and schema as the original table.
9
+ * @returns
10
+ */
2
11
  export function* makeBatchesFromTable(table) {
3
- yield makeBatchFromTable(table);
12
+ yield makeBatchFromTable(table);
4
13
  }
14
+ /**
15
+ * Returns a table packaged as a single table batch
16
+ * @note The batch will have the same shape and schema as the original table.
17
+ * @returns `null` if no batches are yielded by the async iterator
18
+ */
5
19
  export function makeBatchFromTable(table) {
6
- return {
7
- ...table,
8
- length: getTableLength(table),
9
- batchType: 'data'
10
- };
20
+ return { ...table, length: getTableLength(table), batchType: 'data' };
11
21
  }
22
+ /**
23
+ * Assembles all batches from an async iterator into a single table.
24
+ * @note All batches must have the same shape and schema
25
+ * @param batchIterator
26
+ * @returns `null` if no batches are yielded by the async iterator
27
+ */
28
+ // eslint-disable-next-line complexity
12
29
  export async function makeTableFromBatches(batchIterator) {
13
- let arrayRows;
14
- let objectRows;
15
- let features;
16
- let shape = null;
17
- let schema;
18
- for await (const batch of batchIterator) {
19
- shape = shape || batch.shape;
20
- schema = schema || batch.schema;
21
- switch (batch.shape) {
22
- case 'array-row-table':
23
- arrayRows = arrayRows || [];
24
- for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {
25
- const row = batch.data[rowIndex];
26
- arrayRows.push(row);
30
+ let arrayRows;
31
+ let objectRows;
32
+ let features;
33
+ let shape = null;
34
+ let schema;
35
+ for await (const batch of batchIterator) {
36
+ shape = shape || batch.shape;
37
+ schema = schema || batch.schema;
38
+ switch (batch.shape) {
39
+ case 'array-row-table':
40
+ arrayRows = arrayRows || [];
41
+ for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {
42
+ const row = batch.data[rowIndex];
43
+ arrayRows.push(row);
44
+ }
45
+ break;
46
+ case 'object-row-table':
47
+ objectRows = objectRows || [];
48
+ for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {
49
+ const row = batch.data[rowIndex];
50
+ objectRows.push(row);
51
+ }
52
+ break;
53
+ case 'geojson-table':
54
+ features = features || [];
55
+ for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {
56
+ const row = batch.features[rowIndex];
57
+ features.push(row);
58
+ }
59
+ break;
60
+ case 'columnar-table':
61
+ case 'arrow-table':
62
+ default:
63
+ throw new Error('shape');
27
64
  }
28
- break;
29
- case 'object-row-table':
30
- objectRows = objectRows || [];
31
- for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {
32
- const row = batch.data[rowIndex];
33
- objectRows.push(row);
34
- }
35
- break;
36
- case 'geojson-table':
37
- features = features || [];
38
- for (let rowIndex = 0; rowIndex < getTableLength(batch); rowIndex++) {
39
- const row = batch.features[rowIndex];
40
- features.push(row);
41
- }
42
- break;
43
- case 'columnar-table':
44
- case 'arrow-table':
45
- default:
46
- throw new Error('shape');
47
65
  }
48
- }
49
- if (!shape) {
50
- return null;
51
- }
52
- switch (shape) {
53
- case 'array-row-table':
54
- return {
55
- shape: 'array-row-table',
56
- data: arrayRows,
57
- schema
58
- };
59
- case 'object-row-table':
60
- return {
61
- shape: 'object-row-table',
62
- data: objectRows,
63
- schema
64
- };
65
- case 'geojson-table':
66
- return {
67
- shape: 'geojson-table',
68
- type: 'FeatureCollection',
69
- features: features,
70
- schema
71
- };
72
- default:
73
- return null;
74
- }
66
+ if (!shape) {
67
+ return null;
68
+ }
69
+ switch (shape) {
70
+ case 'array-row-table':
71
+ return { shape: 'array-row-table', data: arrayRows, schema };
72
+ case 'object-row-table':
73
+ return { shape: 'object-row-table', data: objectRows, schema };
74
+ case 'geojson-table':
75
+ return { shape: 'geojson-table', type: 'FeatureCollection', features: features, schema };
76
+ default:
77
+ return null;
78
+ }
75
79
  }
76
- //# sourceMappingURL=make-table-from-batches.js.map
@@ -1,4 +1,4 @@
1
- import { ArrayRowTable, ObjectRowTable, ColumnarTable } from '../../../types/category-table';
1
+ import { ArrayRowTable, ObjectRowTable, ColumnarTable } from "../../../types/category-table.js";
2
2
  /**
3
3
  * Makes a typed table from data.
4
4
  * @throws Row tables must contain at least one row. Columnar tables must contain empty arrays
@@ -1 +1 @@
1
- {"version":3,"file":"make-table.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/simple-table/make-table.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,aAAa,EAAE,cAAc,EAAE,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAGlG;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,aAAa,CAAC;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,EAAE,GAAG,cAAc,CAAC;AACvF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAC,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;CAAC,GAAG,aAAa,CAAC;AA8C/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDE"}
1
+ {"version":3,"file":"make-table.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/simple-table/make-table.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,aAAa,EAAE,cAAc,EAAE,aAAa,EAAC,yCAAsC;AAGlG;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,aAAa,CAAC;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,EAAE,GAAG,cAAc,CAAC;AACvF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAC,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;CAAC,GAAG,aAAa,CAAC;AA8C/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDE"}
@@ -1,50 +1,94 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { deduceTableSchema } from "./table-schema.js";
2
5
  export function makeTableFromData(data) {
3
- let table;
4
- switch (getTableShapeFromData(data)) {
5
- case 'array-row-table':
6
- table = {
7
- shape: 'array-row-table',
8
- data: data
9
- };
10
- break;
11
- case 'object-row-table':
12
- table = {
13
- shape: 'object-row-table',
14
- data: data
15
- };
16
- break;
17
- case 'columnar-table':
18
- table = {
19
- shape: 'columnar-table',
20
- data: data
21
- };
22
- break;
23
- default:
24
- throw new Error('table');
25
- }
26
- const schema = deduceTableSchema(table);
27
- return {
28
- ...table,
29
- schema
30
- };
6
+ let table;
7
+ switch (getTableShapeFromData(data)) {
8
+ case 'array-row-table':
9
+ table = { shape: 'array-row-table', data: data };
10
+ break;
11
+ case 'object-row-table':
12
+ table = { shape: 'object-row-table', data: data };
13
+ break;
14
+ case 'columnar-table':
15
+ table = { shape: 'columnar-table', data: data };
16
+ break;
17
+ default:
18
+ throw new Error('table');
19
+ }
20
+ const schema = deduceTableSchema(table);
21
+ return { ...table, schema };
31
22
  }
23
+ /** Helper function to get shape of data */
32
24
  function getTableShapeFromData(data) {
33
- if (Array.isArray(data)) {
34
- if (data.length === 0) {
35
- throw new Error('cannot deduce type of empty table');
36
- }
37
- const firstRow = data[0];
38
- if (Array.isArray(firstRow)) {
39
- return 'array-row-table';
25
+ if (Array.isArray(data)) {
26
+ if (data.length === 0) {
27
+ throw new Error('cannot deduce type of empty table');
28
+ }
29
+ // Deduce the table shape from the first row
30
+ const firstRow = data[0];
31
+ if (Array.isArray(firstRow)) {
32
+ return 'array-row-table';
33
+ }
34
+ if (firstRow && typeof firstRow === 'object') {
35
+ return 'object-row-table';
36
+ }
40
37
  }
41
- if (firstRow && typeof firstRow === 'object') {
42
- return 'object-row-table';
38
+ if (data && typeof data === 'object') {
39
+ return 'columnar-table';
43
40
  }
41
+ throw new Error('invalid table');
42
+ }
43
+ /** Convert any table into object row format *
44
+ export function makeColumnarTable(table: Table): ColumnarTable {
45
+ if (table.shape === 'columnar-table') {
46
+ return table;
47
+ }
48
+ const length = getTableLength(table);
49
+ const data = new Array<{[key: string]: unknown}>(length);
50
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
51
+ data[rowIndex] = getTableRowAsObject(table, rowIndex);
52
+ }
53
+ return {
54
+ shape: 'columnar-table',
55
+ schema: table.schema,
56
+ data
57
+ };
58
+ }
59
+
60
+
61
+ /** Convert any table into array row format *
62
+ export function makeArrayRowTable(table: TableLike): ArrayRowTable {
63
+ if (table.shape === 'array-row-table') {
64
+ return table;
44
65
  }
45
- if (data && typeof data === 'object') {
46
- return 'columnar-table';
66
+ const length = getTableLength(table);
67
+ const data = new Array<unknown[]>(length);
68
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
69
+ data[rowIndex] = getTableRowAsArray(table, rowIndex);
47
70
  }
48
- throw new Error('invalid table');
71
+ return {
72
+ shape: 'array-row-table',
73
+ schema: table.schema,
74
+ data
75
+ };
76
+ }
77
+
78
+ /** Convert any table into object row format *
79
+ export function makeObjectRowTable(table: Table): ObjectRowTable {
80
+ if (table.shape === 'object-row-table') {
81
+ return table;
82
+ }
83
+ const length = getTableLength(table);
84
+ const data = new Array<{[key: string]: unknown}>(length);
85
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
86
+ data[rowIndex] = getTableRowAsObject(table, rowIndex);
87
+ }
88
+ return {
89
+ shape: 'object-row-table',
90
+ schema: table.schema,
91
+ data
92
+ };
49
93
  }
50
- //# sourceMappingURL=make-table.js.map
94
+ */
@@ -1,42 +1,49 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /** Convert an object row to an array row */
1
5
  export function convertToObjectRow(arrayRow, headers) {
2
- if (!arrayRow) {
3
- throw new Error('null row');
4
- }
5
- const objectRow = {};
6
- if (headers) {
7
- for (let i = 0; i < headers.length; i++) {
8
- objectRow[headers[i]] = arrayRow[i];
6
+ if (!arrayRow) {
7
+ throw new Error('null row');
9
8
  }
10
- } else {
11
- for (let i = 0; i < arrayRow.length; i++) {
12
- const columnName = `column-${i}`;
13
- objectRow[columnName] = arrayRow[i];
9
+ const objectRow = {};
10
+ if (headers) {
11
+ for (let i = 0; i < headers.length; i++) {
12
+ objectRow[headers[i]] = arrayRow[i];
13
+ }
14
+ }
15
+ else {
16
+ for (let i = 0; i < arrayRow.length; i++) {
17
+ const columnName = `column-${i}`;
18
+ objectRow[columnName] = arrayRow[i];
19
+ }
14
20
  }
15
- }
16
- return objectRow;
21
+ return objectRow;
17
22
  }
23
+ /** Convert an object row to an array row */
18
24
  export function convertToArrayRow(objectRow, headers) {
19
- if (!objectRow) {
20
- throw new Error('null row');
21
- }
22
- if (headers) {
23
- const arrayRow = new Array(headers.length);
24
- for (let i = 0; i < headers.length; i++) {
25
- arrayRow[i] = objectRow[headers[i]];
25
+ if (!objectRow) {
26
+ throw new Error('null row');
27
+ }
28
+ if (headers) {
29
+ const arrayRow = new Array(headers.length);
30
+ for (let i = 0; i < headers.length; i++) {
31
+ arrayRow[i] = objectRow[headers[i]];
32
+ }
33
+ return arrayRow;
26
34
  }
27
- return arrayRow;
28
- }
29
- return Object.values(objectRow);
35
+ return Object.values(objectRow);
30
36
  }
37
+ /** Get headers from a sample array row */
31
38
  export function inferHeadersFromArrayRow(arrayRow) {
32
- const headers = [];
33
- for (let i = 0; i < arrayRow.length; i++) {
34
- const columnName = `column-${i}`;
35
- headers.push(columnName);
36
- }
37
- return headers;
39
+ const headers = [];
40
+ for (let i = 0; i < arrayRow.length; i++) {
41
+ const columnName = `column-${i}`;
42
+ headers.push(columnName);
43
+ }
44
+ return headers;
38
45
  }
46
+ /** Get headers from a smaple object row */
39
47
  export function inferHeadersFromObjectRow(row) {
40
- return Object.keys(row);
48
+ return Object.keys(row);
41
49
  }
42
- //# sourceMappingURL=row-utils.js.map
@@ -1,4 +1,4 @@
1
- import { Table, ArrayRowTable, ObjectRowTable } from '../../../types/category-table';
1
+ import { Table, ArrayRowTable, ObjectRowTable } from "../../../types/category-table.js";
2
2
  export declare function isTable(table: any): table is Table;
3
3
  /**
4
4
  * Returns the length of the table (i.e. the number of rows)
@@ -1 +1 @@
1
- {"version":3,"file":"table-accessors.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/simple-table/table-accessors.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,KAAK,EAAE,aAAa,EAAE,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAEnF,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,KAAK,CAmBlD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAqBnD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAsBpD;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CA0BxF;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAyB3F;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,iBAAiB,GAAG,kBAAkB,CAcrF;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED;;;;GAIG;AAEH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE;IAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,GACZ;IAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,CAwDjC;AAED;;;;GAIG;AAEH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,OAAO,EAAE,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,EAAE,CA2DX;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAc7D;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAc/D;AAED,+CAA+C;AAC/C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAc9D;AAID;;;;GAIG;AACH,wBAAiB,eAAe,CAC9B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,GAC5C,QAAQ,CAAC,OAAO,EAAE,GAAG;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,CAAC,CAYhD;AAED;;;;GAIG;AACH,wBAAiB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAK/F;AAED;;;;GAIG;AACH,wBAAiB,qBAAqB,CACpC,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAM,GACpC,QAAQ,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,CAAC,CAKpC"}
1
+ {"version":3,"file":"table-accessors.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/simple-table/table-accessors.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,KAAK,EAAE,aAAa,EAAE,cAAc,EAAC,yCAAsC;AAEnF,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,KAAK,CAmBlD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAqBnD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAsBpD;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CA0BxF;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAyB3F;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,iBAAiB,GAAG,kBAAkB,CAcrF;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED;;;;GAIG;AAEH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE;IAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,GACZ;IAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,CAwDjC;AAED;;;;GAIG;AAEH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,OAAO,EAAE,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,EAAE,CA2DX;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAc7D;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAc/D;AAED,+CAA+C;AAC/C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAc9D;AAID;;;;GAIG;AACH,wBAAiB,eAAe,CAC9B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,GAC5C,QAAQ,CAAC,OAAO,EAAE,GAAG;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,CAAC,CAYhD;AAED;;;;GAIG;AACH,wBAAiB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAK/F;AAED;;;;GAIG;AACH,wBAAiB,qBAAqB,CACpC,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAM,GACpC,QAAQ,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,CAAC,CAKpC"}