@loaders.gl/schema 3.1.0-alpha.1 → 3.1.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 (176) hide show
  1. package/dist/bundle.d.ts +1 -0
  2. package/dist/category/common.d.ts +18 -0
  3. package/dist/category/gis.d.ts +50 -0
  4. package/dist/category/mesh/convert-mesh.d.ts +14 -0
  5. package/dist/category/mesh/deduce-mesh-schema.d.ts +23 -0
  6. package/dist/category/mesh/mesh-to-arrow-table.d.ts +10 -0
  7. package/dist/category/mesh/mesh-types.d.ts +49 -0
  8. package/dist/category/mesh/mesh-utils.d.ts +22 -0
  9. package/dist/category/table/deduce-table-schema.d.ts +8 -0
  10. package/dist/category/table/table-types.d.ts +75 -0
  11. package/dist/dist.min.js +1 -1
  12. package/dist/dist.min.js.map +1 -1
  13. package/dist/es5/bundle.js +7 -0
  14. package/dist/es5/bundle.js.map +1 -0
  15. package/dist/es5/category/common.js +2 -0
  16. package/dist/{category → es5/category}/common.js.map +0 -0
  17. package/dist/es5/category/gis.js +2 -0
  18. package/dist/{category → es5/category}/gis.js.map +0 -0
  19. package/dist/es5/category/mesh/convert-mesh.js +43 -0
  20. package/dist/{category → es5/category}/mesh/convert-mesh.js.map +1 -1
  21. package/dist/es5/category/mesh/deduce-mesh-schema.js +54 -0
  22. package/dist/es5/category/mesh/deduce-mesh-schema.js.map +1 -0
  23. package/dist/es5/category/mesh/mesh-to-arrow-table.js +41 -0
  24. package/dist/es5/category/mesh/mesh-to-arrow-table.js.map +1 -0
  25. package/dist/es5/category/mesh/mesh-types.js +2 -0
  26. package/dist/{category → es5/category}/mesh/mesh-types.js.map +0 -0
  27. package/dist/es5/category/mesh/mesh-utils.js +47 -0
  28. package/dist/es5/category/mesh/mesh-utils.js.map +1 -0
  29. package/dist/es5/category/table/deduce-table-schema.js +58 -0
  30. package/dist/es5/category/table/deduce-table-schema.js.map +1 -0
  31. package/dist/es5/category/table/table-types.js +2 -0
  32. package/dist/{category → es5/category}/table/table-types.js.map +0 -0
  33. package/dist/es5/index.js +344 -0
  34. package/dist/es5/index.js.map +1 -0
  35. package/dist/es5/lib/arrow/arrow-like-type-utils.js +40 -0
  36. package/dist/es5/lib/arrow/arrow-like-type-utils.js.map +1 -0
  37. package/dist/es5/lib/arrow/arrow-type-utils.js +72 -0
  38. package/dist/es5/lib/arrow/arrow-type-utils.js.map +1 -0
  39. package/dist/es5/lib/arrow/get-type-info.js +33 -0
  40. package/dist/es5/lib/arrow/get-type-info.js.map +1 -0
  41. package/dist/es5/lib/batches/base-table-batch-aggregator.js +81 -0
  42. package/dist/es5/lib/batches/base-table-batch-aggregator.js.map +1 -0
  43. package/dist/es5/lib/batches/columnar-table-batch-aggregator.js +109 -0
  44. package/dist/es5/lib/batches/columnar-table-batch-aggregator.js.map +1 -0
  45. package/dist/es5/lib/batches/row-table-batch-aggregator.js +102 -0
  46. package/dist/es5/lib/batches/row-table-batch-aggregator.js.map +1 -0
  47. package/dist/es5/lib/batches/table-batch-aggregator.js +2 -0
  48. package/dist/{lib → es5/lib}/batches/table-batch-aggregator.js.map +0 -0
  49. package/dist/es5/lib/batches/table-batch-builder.js +187 -0
  50. package/dist/es5/lib/batches/table-batch-builder.js.map +1 -0
  51. package/dist/es5/lib/schema/impl/enum.js +56 -0
  52. package/dist/es5/lib/schema/impl/enum.js.map +1 -0
  53. package/dist/es5/lib/schema/impl/field.js +43 -0
  54. package/dist/es5/lib/schema/impl/field.js.map +1 -0
  55. package/dist/es5/lib/schema/impl/schema.js +103 -0
  56. package/dist/es5/lib/schema/impl/schema.js.map +1 -0
  57. package/dist/es5/lib/schema/impl/type.js +594 -0
  58. package/dist/es5/lib/schema/impl/type.js.map +1 -0
  59. package/dist/es5/lib/schema/index.js +236 -0
  60. package/dist/es5/lib/schema/index.js.map +1 -0
  61. package/dist/es5/lib/schema-utils/deduce-column-type.js +32 -0
  62. package/dist/es5/lib/schema-utils/deduce-column-type.js.map +1 -0
  63. package/dist/es5/lib/utils/assert.js +13 -0
  64. package/dist/es5/lib/utils/assert.js.map +1 -0
  65. package/dist/es5/lib/utils/async-queue.js +130 -0
  66. package/dist/es5/lib/utils/async-queue.js.map +1 -0
  67. package/dist/es5/lib/utils/row-utils.js +44 -0
  68. package/dist/es5/lib/utils/row-utils.js.map +1 -0
  69. package/dist/es5/types.js +2 -0
  70. package/dist/{types.js.map → es5/types.js.map} +0 -0
  71. package/dist/esm/bundle.js +5 -0
  72. package/dist/esm/bundle.js.map +1 -0
  73. package/dist/{category → esm/category}/common.js +0 -0
  74. package/dist/esm/category/common.js.map +1 -0
  75. package/dist/{category → esm/category}/gis.js +0 -0
  76. package/dist/esm/category/gis.js.map +1 -0
  77. package/dist/{category → esm/category}/mesh/convert-mesh.js +1 -1
  78. package/dist/esm/category/mesh/convert-mesh.js.map +1 -0
  79. package/dist/{category → esm/category}/mesh/deduce-mesh-schema.js +0 -0
  80. package/dist/esm/category/mesh/deduce-mesh-schema.js.map +1 -0
  81. package/dist/{category → esm/category}/mesh/mesh-to-arrow-table.js +1 -1
  82. package/dist/esm/category/mesh/mesh-to-arrow-table.js.map +1 -0
  83. package/dist/{category → esm/category}/mesh/mesh-types.js +0 -0
  84. package/dist/esm/category/mesh/mesh-types.js.map +1 -0
  85. package/dist/{category → esm/category}/mesh/mesh-utils.js +0 -0
  86. package/dist/esm/category/mesh/mesh-utils.js.map +1 -0
  87. package/dist/{category → esm/category}/table/deduce-table-schema.js +0 -0
  88. package/dist/esm/category/table/deduce-table-schema.js.map +1 -0
  89. package/dist/{category → esm/category}/table/table-types.js +0 -0
  90. package/dist/esm/category/table/table-types.js.map +1 -0
  91. package/dist/{index.js → esm/index.js} +0 -0
  92. package/dist/esm/index.js.map +1 -0
  93. package/dist/{lib → esm/lib}/arrow/arrow-like-type-utils.js +0 -0
  94. package/dist/esm/lib/arrow/arrow-like-type-utils.js.map +1 -0
  95. package/dist/{lib → esm/lib}/arrow/arrow-type-utils.js +1 -1
  96. package/dist/esm/lib/arrow/arrow-type-utils.js.map +1 -0
  97. package/dist/{lib → esm/lib}/arrow/get-type-info.js +0 -0
  98. package/dist/esm/lib/arrow/get-type-info.js.map +1 -0
  99. package/dist/{lib → esm/lib}/batches/base-table-batch-aggregator.js +0 -0
  100. package/dist/esm/lib/batches/base-table-batch-aggregator.js.map +1 -0
  101. package/dist/{lib → esm/lib}/batches/columnar-table-batch-aggregator.js +0 -0
  102. package/dist/esm/lib/batches/columnar-table-batch-aggregator.js.map +1 -0
  103. package/dist/{lib → esm/lib}/batches/row-table-batch-aggregator.js +0 -0
  104. package/dist/esm/lib/batches/row-table-batch-aggregator.js.map +1 -0
  105. package/dist/{lib → esm/lib}/batches/table-batch-aggregator.js +0 -0
  106. package/dist/esm/lib/batches/table-batch-aggregator.js.map +1 -0
  107. package/dist/{lib → esm/lib}/batches/table-batch-builder.js +0 -0
  108. package/dist/esm/lib/batches/table-batch-builder.js.map +1 -0
  109. package/dist/{lib → esm/lib}/schema/impl/enum.js +0 -0
  110. package/dist/esm/lib/schema/impl/enum.js.map +1 -0
  111. package/dist/{lib → esm/lib}/schema/impl/field.js +1 -1
  112. package/dist/esm/lib/schema/impl/field.js.map +1 -0
  113. package/dist/{lib → esm/lib}/schema/impl/schema.js +0 -0
  114. package/dist/esm/lib/schema/impl/schema.js.map +1 -0
  115. package/dist/{lib → esm/lib}/schema/impl/type.js +8 -8
  116. package/dist/esm/lib/schema/impl/type.js.map +1 -0
  117. package/dist/{lib → esm/lib}/schema/index.js +0 -0
  118. package/dist/esm/lib/schema/index.js.map +1 -0
  119. package/dist/{lib → esm/lib}/schema-utils/deduce-column-type.js +0 -0
  120. package/dist/esm/lib/schema-utils/deduce-column-type.js.map +1 -0
  121. package/dist/{lib → esm/lib}/utils/assert.js +0 -0
  122. package/dist/esm/lib/utils/assert.js.map +1 -0
  123. package/dist/{lib → esm/lib}/utils/async-queue.js +0 -0
  124. package/dist/esm/lib/utils/async-queue.js.map +1 -0
  125. package/dist/{lib → esm/lib}/utils/row-utils.js +0 -0
  126. package/dist/esm/lib/utils/row-utils.js.map +1 -0
  127. package/dist/{types.js → esm/types.js} +0 -0
  128. package/dist/esm/types.js.map +1 -0
  129. package/dist/index.d.ts +22 -0
  130. package/dist/lib/arrow/arrow-like-type-utils.d.ts +3 -0
  131. package/dist/lib/arrow/arrow-type-utils.d.ts +5 -0
  132. package/dist/lib/arrow/get-type-info.d.ts +13 -0
  133. package/dist/lib/batches/base-table-batch-aggregator.d.ts +18 -0
  134. package/dist/lib/batches/columnar-table-batch-aggregator.d.ts +22 -0
  135. package/dist/lib/batches/row-table-batch-aggregator.d.ts +21 -0
  136. package/dist/lib/batches/table-batch-aggregator.d.ts +24 -0
  137. package/dist/lib/batches/table-batch-builder.d.ts +52 -0
  138. package/dist/lib/schema/impl/enum.d.ts +91 -0
  139. package/dist/lib/schema/impl/field.d.ts +18 -0
  140. package/dist/lib/schema/impl/schema.d.ts +15 -0
  141. package/dist/lib/schema/impl/type.d.ts +175 -0
  142. package/dist/lib/schema/index.d.ts +4 -0
  143. package/dist/lib/schema-utils/deduce-column-type.d.ts +2 -0
  144. package/dist/lib/utils/assert.d.ts +1 -0
  145. package/dist/lib/utils/async-queue.d.ts +17 -0
  146. package/dist/lib/utils/row-utils.d.ts +8 -0
  147. package/dist/types.d.ts +7 -0
  148. package/package.json +7 -7
  149. package/src/bundle.ts +2 -3
  150. package/src/category/gis.ts +1 -0
  151. package/src/category/mesh/mesh-to-arrow-table.ts +1 -1
  152. package/src/category/table/table-types.ts +1 -1
  153. package/src/lib/arrow/arrow-type-utils.ts +1 -1
  154. package/dist/bundle.js +0 -7
  155. package/dist/bundle.js.map +0 -1
  156. package/dist/category/mesh/deduce-mesh-schema.js.map +0 -1
  157. package/dist/category/mesh/mesh-to-arrow-table.js.map +0 -1
  158. package/dist/category/mesh/mesh-utils.js.map +0 -1
  159. package/dist/category/table/deduce-table-schema.js.map +0 -1
  160. package/dist/index.js.map +0 -1
  161. package/dist/lib/arrow/arrow-like-type-utils.js.map +0 -1
  162. package/dist/lib/arrow/arrow-type-utils.js.map +0 -1
  163. package/dist/lib/arrow/get-type-info.js.map +0 -1
  164. package/dist/lib/batches/base-table-batch-aggregator.js.map +0 -1
  165. package/dist/lib/batches/columnar-table-batch-aggregator.js.map +0 -1
  166. package/dist/lib/batches/row-table-batch-aggregator.js.map +0 -1
  167. package/dist/lib/batches/table-batch-builder.js.map +0 -1
  168. package/dist/lib/schema/impl/enum.js.map +0 -1
  169. package/dist/lib/schema/impl/field.js.map +0 -1
  170. package/dist/lib/schema/impl/schema.js.map +0 -1
  171. package/dist/lib/schema/impl/type.js.map +0 -1
  172. package/dist/lib/schema/index.js.map +0 -1
  173. package/dist/lib/schema-utils/deduce-column-type.js.map +0 -1
  174. package/dist/lib/utils/assert.js.map +0 -1
  175. package/dist/lib/utils/async-queue.js.map +0 -1
  176. package/dist/lib/utils/row-utils.js.map +0 -1
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _assert = require("../../utils/assert");
13
+
14
+ class Schema {
15
+ constructor(fields, metadata) {
16
+ (0, _defineProperty2.default)(this, "fields", void 0);
17
+ (0, _defineProperty2.default)(this, "metadata", void 0);
18
+ (0, _assert.assert)(Array.isArray(fields));
19
+ checkNames(fields);
20
+ this.fields = fields;
21
+ this.metadata = metadata || new Map();
22
+ }
23
+
24
+ compareTo(other) {
25
+ if (this.metadata !== other.metadata) {
26
+ return false;
27
+ }
28
+
29
+ if (this.fields.length !== other.fields.length) {
30
+ return false;
31
+ }
32
+
33
+ for (let i = 0; i < this.fields.length; ++i) {
34
+ if (!this.fields[i].compareTo(other.fields[i])) {
35
+ return false;
36
+ }
37
+ }
38
+
39
+ return true;
40
+ }
41
+
42
+ select(...columnNames) {
43
+ const nameMap = Object.create(null);
44
+
45
+ for (const name of columnNames) {
46
+ nameMap[name] = true;
47
+ }
48
+
49
+ const selectedFields = this.fields.filter(field => nameMap[field.name]);
50
+ return new Schema(selectedFields, this.metadata);
51
+ }
52
+
53
+ selectAt(...columnIndices) {
54
+ const selectedFields = columnIndices.map(index => this.fields[index]).filter(Boolean);
55
+ return new Schema(selectedFields, this.metadata);
56
+ }
57
+
58
+ assign(schemaOrFields) {
59
+ let fields;
60
+ let metadata = this.metadata;
61
+
62
+ if (schemaOrFields instanceof Schema) {
63
+ const otherSchema = schemaOrFields;
64
+ fields = otherSchema.fields;
65
+ metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherSchema.metadata);
66
+ } else {
67
+ fields = schemaOrFields;
68
+ }
69
+
70
+ const fieldMap = Object.create(null);
71
+
72
+ for (const field of this.fields) {
73
+ fieldMap[field.name] = field;
74
+ }
75
+
76
+ for (const field of fields) {
77
+ fieldMap[field.name] = field;
78
+ }
79
+
80
+ const mergedFields = Object.values(fieldMap);
81
+ return new Schema(mergedFields, metadata);
82
+ }
83
+
84
+ }
85
+
86
+ exports.default = Schema;
87
+
88
+ function checkNames(fields) {
89
+ const usedNames = {};
90
+
91
+ for (const field of fields) {
92
+ if (usedNames[field.name]) {
93
+ console.warn('Schema: duplicated field name', field.name, field);
94
+ }
95
+
96
+ usedNames[field.name] = true;
97
+ }
98
+ }
99
+
100
+ function mergeMaps(m1, m2) {
101
+ return new Map([...(m1 || new Map()), ...(m2 || new Map())]);
102
+ }
103
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/schema/impl/schema.ts"],"names":["Schema","constructor","fields","metadata","Array","isArray","checkNames","Map","compareTo","other","length","i","select","columnNames","nameMap","Object","create","name","selectedFields","filter","field","selectAt","columnIndices","map","index","Boolean","assign","schemaOrFields","otherSchema","mergeMaps","fieldMap","mergedFields","values","usedNames","console","warn","m1","m2"],"mappings":"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","sourcesContent":["import {assert} from '../../utils/assert';\nimport Field from './field';\n\nexport type SchemaMetadata = Map<string, any>;\n\n/**\n * ArrowJS `Schema` API-compatible class for row-based tables (returned from `DataTable`)\n * https://loaders.gl/arrowjs/docs/api-reference/schema\n */\nexport default class Schema {\n fields: Field[];\n // TODO - Arrow just allows Map<string, string>\n metadata: SchemaMetadata;\n\n constructor(fields: Field[], metadata?: SchemaMetadata) {\n assert(Array.isArray(fields));\n checkNames(fields);\n // For kepler fields, create arrow compatible `Fields` that have kepler fields as `metadata`\n this.fields = fields;\n this.metadata = metadata || new Map();\n }\n\n // TODO - arrow only seems to compare fields, not metadata\n compareTo(other: Schema): boolean {\n if (this.metadata !== other.metadata) {\n return false;\n }\n if (this.fields.length !== other.fields.length) {\n return false;\n }\n for (let i = 0; i < this.fields.length; ++i) {\n if (!this.fields[i].compareTo(other.fields[i])) {\n return false;\n }\n }\n return true;\n }\n\n select(...columnNames: string[]): Schema {\n // Ensure column names reference valid fields\n const nameMap = Object.create(null);\n for (const name of columnNames) {\n nameMap[name] = true;\n }\n const selectedFields = this.fields.filter((field) => nameMap[field.name]);\n return new Schema(selectedFields, this.metadata);\n }\n\n selectAt(...columnIndices: number[]): Schema {\n // Ensure column indices reference valid fields\n const selectedFields = columnIndices.map((index) => this.fields[index]).filter(Boolean);\n return new Schema(selectedFields, this.metadata);\n }\n\n assign(schemaOrFields: Schema | Field[]): Schema {\n let fields: Field[];\n let metadata: SchemaMetadata = this.metadata;\n\n if (schemaOrFields instanceof Schema) {\n const otherSchema = schemaOrFields;\n fields = otherSchema.fields;\n metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherSchema.metadata);\n } else {\n fields = schemaOrFields;\n }\n\n // Create a merged list of fields, overwrite fields in place, new fields at end\n const fieldMap: {[key: string]: Field} = Object.create(null);\n\n for (const field of this.fields) {\n fieldMap[field.name] = field;\n }\n\n for (const field of fields) {\n fieldMap[field.name] = field;\n }\n\n const mergedFields = Object.values(fieldMap);\n\n return new Schema(mergedFields, metadata);\n }\n}\n\n// Warn if any duplicated field names\nfunction checkNames(fields) {\n const usedNames = {};\n for (const field of fields) {\n if (usedNames[field.name]) {\n // eslint-disable-next-line\n console.warn('Schema: duplicated field name', field.name, field);\n }\n usedNames[field.name] = true;\n }\n}\n\nfunction mergeMaps<T>(m1: T, m2: T): T {\n // @ts-ignore\n return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n"],"file":"schema.js"}
@@ -0,0 +1,594 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "Type", {
9
+ enumerable: true,
10
+ get: function () {
11
+ return _enum.Type;
12
+ }
13
+ });
14
+ exports.Struct = exports.FixedSizeList = exports.IntervalYearMonth = exports.IntervalDayTime = exports.Interval = exports.TimestampNanosecond = exports.TimestampMicrosecond = exports.TimestampMillisecond = exports.TimestampSecond = exports.Timestamp = exports.TimeMillisecond = exports.TimeSecond = exports.Time = exports.DateMillisecond = exports.DateDay = exports.Date = exports.Utf8 = exports.Binary = exports.Float64 = exports.Float32 = exports.Float16 = exports.Float = exports.Uint64 = exports.Uint32 = exports.Uint16 = exports.Uint8 = exports.Int64 = exports.Int32 = exports.Int16 = exports.Int8 = exports.Int = exports.Bool = exports.Null = exports.DataType = void 0;
15
+
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+
18
+ var _enum = require("./enum");
19
+
20
+ let _Symbol$toStringTag, _Symbol$toStringTag2, _Symbol$toStringTag3, _Symbol$toStringTag4, _Symbol$toStringTag5, _Symbol$toStringTag6, _Symbol$toStringTag7, _Symbol$toStringTag8;
21
+
22
+ class DataType {
23
+ static isNull(x) {
24
+ return x && x.typeId === _enum.Type.Null;
25
+ }
26
+
27
+ static isInt(x) {
28
+ return x && x.typeId === _enum.Type.Int;
29
+ }
30
+
31
+ static isFloat(x) {
32
+ return x && x.typeId === _enum.Type.Float;
33
+ }
34
+
35
+ static isBinary(x) {
36
+ return x && x.typeId === _enum.Type.Binary;
37
+ }
38
+
39
+ static isUtf8(x) {
40
+ return x && x.typeId === _enum.Type.Utf8;
41
+ }
42
+
43
+ static isBool(x) {
44
+ return x && x.typeId === _enum.Type.Bool;
45
+ }
46
+
47
+ static isDecimal(x) {
48
+ return x && x.typeId === _enum.Type.Decimal;
49
+ }
50
+
51
+ static isDate(x) {
52
+ return x && x.typeId === _enum.Type.Date;
53
+ }
54
+
55
+ static isTime(x) {
56
+ return x && x.typeId === _enum.Type.Time;
57
+ }
58
+
59
+ static isTimestamp(x) {
60
+ return x && x.typeId === _enum.Type.Timestamp;
61
+ }
62
+
63
+ static isInterval(x) {
64
+ return x && x.typeId === _enum.Type.Interval;
65
+ }
66
+
67
+ static isList(x) {
68
+ return x && x.typeId === _enum.Type.List;
69
+ }
70
+
71
+ static isStruct(x) {
72
+ return x && x.typeId === _enum.Type.Struct;
73
+ }
74
+
75
+ static isUnion(x) {
76
+ return x && x.typeId === _enum.Type.Union;
77
+ }
78
+
79
+ static isFixedSizeBinary(x) {
80
+ return x && x.typeId === _enum.Type.FixedSizeBinary;
81
+ }
82
+
83
+ static isFixedSizeList(x) {
84
+ return x && x.typeId === _enum.Type.FixedSizeList;
85
+ }
86
+
87
+ static isMap(x) {
88
+ return x && x.typeId === _enum.Type.Map;
89
+ }
90
+
91
+ static isDictionary(x) {
92
+ return x && x.typeId === _enum.Type.Dictionary;
93
+ }
94
+
95
+ get typeId() {
96
+ return _enum.Type.NONE;
97
+ }
98
+
99
+ compareTo(other) {
100
+ return this === other;
101
+ }
102
+
103
+ }
104
+
105
+ exports.DataType = DataType;
106
+
107
+ class Null extends DataType {
108
+ get typeId() {
109
+ return _enum.Type.Null;
110
+ }
111
+
112
+ get [Symbol.toStringTag]() {
113
+ return 'Null';
114
+ }
115
+
116
+ toString() {
117
+ return 'Null';
118
+ }
119
+
120
+ }
121
+
122
+ exports.Null = Null;
123
+
124
+ class Bool extends DataType {
125
+ get typeId() {
126
+ return _enum.Type.Bool;
127
+ }
128
+
129
+ get [Symbol.toStringTag]() {
130
+ return 'Bool';
131
+ }
132
+
133
+ toString() {
134
+ return 'Bool';
135
+ }
136
+
137
+ }
138
+
139
+ exports.Bool = Bool;
140
+ _Symbol$toStringTag = Symbol.toStringTag;
141
+
142
+ class Int extends DataType {
143
+ constructor(isSigned, bitWidth) {
144
+ super();
145
+ (0, _defineProperty2.default)(this, "isSigned", void 0);
146
+ (0, _defineProperty2.default)(this, "bitWidth", void 0);
147
+ this.isSigned = isSigned;
148
+ this.bitWidth = bitWidth;
149
+ }
150
+
151
+ get typeId() {
152
+ return _enum.Type.Int;
153
+ }
154
+
155
+ get [_Symbol$toStringTag]() {
156
+ return 'Int';
157
+ }
158
+
159
+ toString() {
160
+ return "".concat(this.isSigned ? 'I' : 'Ui', "nt").concat(this.bitWidth);
161
+ }
162
+
163
+ }
164
+
165
+ exports.Int = Int;
166
+
167
+ class Int8 extends Int {
168
+ constructor() {
169
+ super(true, 8);
170
+ }
171
+
172
+ }
173
+
174
+ exports.Int8 = Int8;
175
+
176
+ class Int16 extends Int {
177
+ constructor() {
178
+ super(true, 16);
179
+ }
180
+
181
+ }
182
+
183
+ exports.Int16 = Int16;
184
+
185
+ class Int32 extends Int {
186
+ constructor() {
187
+ super(true, 32);
188
+ }
189
+
190
+ }
191
+
192
+ exports.Int32 = Int32;
193
+
194
+ class Int64 extends Int {
195
+ constructor() {
196
+ super(true, 64);
197
+ }
198
+
199
+ }
200
+
201
+ exports.Int64 = Int64;
202
+
203
+ class Uint8 extends Int {
204
+ constructor() {
205
+ super(false, 8);
206
+ }
207
+
208
+ }
209
+
210
+ exports.Uint8 = Uint8;
211
+
212
+ class Uint16 extends Int {
213
+ constructor() {
214
+ super(false, 16);
215
+ }
216
+
217
+ }
218
+
219
+ exports.Uint16 = Uint16;
220
+
221
+ class Uint32 extends Int {
222
+ constructor() {
223
+ super(false, 32);
224
+ }
225
+
226
+ }
227
+
228
+ exports.Uint32 = Uint32;
229
+
230
+ class Uint64 extends Int {
231
+ constructor() {
232
+ super(false, 64);
233
+ }
234
+
235
+ }
236
+
237
+ exports.Uint64 = Uint64;
238
+ const Precision = {
239
+ HALF: 16,
240
+ SINGLE: 32,
241
+ DOUBLE: 64
242
+ };
243
+ _Symbol$toStringTag2 = Symbol.toStringTag;
244
+
245
+ class Float extends DataType {
246
+ constructor(precision) {
247
+ super();
248
+ (0, _defineProperty2.default)(this, "precision", void 0);
249
+ this.precision = precision;
250
+ }
251
+
252
+ get typeId() {
253
+ return _enum.Type.Float;
254
+ }
255
+
256
+ get [_Symbol$toStringTag2]() {
257
+ return 'Float';
258
+ }
259
+
260
+ toString() {
261
+ return "Float".concat(this.precision);
262
+ }
263
+
264
+ }
265
+
266
+ exports.Float = Float;
267
+
268
+ class Float16 extends Float {
269
+ constructor() {
270
+ super(Precision.HALF);
271
+ }
272
+
273
+ }
274
+
275
+ exports.Float16 = Float16;
276
+
277
+ class Float32 extends Float {
278
+ constructor() {
279
+ super(Precision.SINGLE);
280
+ }
281
+
282
+ }
283
+
284
+ exports.Float32 = Float32;
285
+
286
+ class Float64 extends Float {
287
+ constructor() {
288
+ super(Precision.DOUBLE);
289
+ }
290
+
291
+ }
292
+
293
+ exports.Float64 = Float64;
294
+
295
+ class Binary extends DataType {
296
+ constructor() {
297
+ super();
298
+ }
299
+
300
+ get typeId() {
301
+ return _enum.Type.Binary;
302
+ }
303
+
304
+ toString() {
305
+ return 'Binary';
306
+ }
307
+
308
+ get [Symbol.toStringTag]() {
309
+ return 'Binary';
310
+ }
311
+
312
+ }
313
+
314
+ exports.Binary = Binary;
315
+
316
+ class Utf8 extends DataType {
317
+ get typeId() {
318
+ return _enum.Type.Utf8;
319
+ }
320
+
321
+ get [Symbol.toStringTag]() {
322
+ return 'Utf8';
323
+ }
324
+
325
+ toString() {
326
+ return 'Utf8';
327
+ }
328
+
329
+ }
330
+
331
+ exports.Utf8 = Utf8;
332
+ const DateUnit = {
333
+ DAY: 0,
334
+ MILLISECOND: 1
335
+ };
336
+ _Symbol$toStringTag3 = Symbol.toStringTag;
337
+
338
+ class Date extends DataType {
339
+ constructor(unit) {
340
+ super();
341
+ (0, _defineProperty2.default)(this, "unit", void 0);
342
+ this.unit = unit;
343
+ }
344
+
345
+ get typeId() {
346
+ return _enum.Type.Date;
347
+ }
348
+
349
+ get [_Symbol$toStringTag3]() {
350
+ return 'Date';
351
+ }
352
+
353
+ toString() {
354
+ return "Date".concat((this.unit + 1) * 32, "<").concat(DateUnit[this.unit], ">");
355
+ }
356
+
357
+ }
358
+
359
+ exports.Date = Date;
360
+
361
+ class DateDay extends Date {
362
+ constructor() {
363
+ super(DateUnit.DAY);
364
+ }
365
+
366
+ }
367
+
368
+ exports.DateDay = DateDay;
369
+
370
+ class DateMillisecond extends Date {
371
+ constructor() {
372
+ super(DateUnit.MILLISECOND);
373
+ }
374
+
375
+ }
376
+
377
+ exports.DateMillisecond = DateMillisecond;
378
+ const TimeUnit = {
379
+ SECOND: 1,
380
+ MILLISECOND: 1e3,
381
+ MICROSECOND: 1e6,
382
+ NANOSECOND: 1e9
383
+ };
384
+ _Symbol$toStringTag4 = Symbol.toStringTag;
385
+
386
+ class Time extends DataType {
387
+ constructor(unit, bitWidth) {
388
+ super();
389
+ (0, _defineProperty2.default)(this, "unit", void 0);
390
+ (0, _defineProperty2.default)(this, "bitWidth", void 0);
391
+ this.unit = unit;
392
+ this.bitWidth = bitWidth;
393
+ }
394
+
395
+ get typeId() {
396
+ return _enum.Type.Time;
397
+ }
398
+
399
+ toString() {
400
+ return "Time".concat(this.bitWidth, "<").concat(TimeUnit[this.unit], ">");
401
+ }
402
+
403
+ get [_Symbol$toStringTag4]() {
404
+ return 'Time';
405
+ }
406
+
407
+ }
408
+
409
+ exports.Time = Time;
410
+
411
+ class TimeSecond extends Time {
412
+ constructor() {
413
+ super(TimeUnit.SECOND, 32);
414
+ }
415
+
416
+ }
417
+
418
+ exports.TimeSecond = TimeSecond;
419
+
420
+ class TimeMillisecond extends Time {
421
+ constructor() {
422
+ super(TimeUnit.MILLISECOND, 32);
423
+ }
424
+
425
+ }
426
+
427
+ exports.TimeMillisecond = TimeMillisecond;
428
+ _Symbol$toStringTag5 = Symbol.toStringTag;
429
+
430
+ class Timestamp extends DataType {
431
+ constructor(unit, timezone = null) {
432
+ super();
433
+ (0, _defineProperty2.default)(this, "unit", void 0);
434
+ (0, _defineProperty2.default)(this, "timezone", void 0);
435
+ this.unit = unit;
436
+ this.timezone = timezone;
437
+ }
438
+
439
+ get typeId() {
440
+ return _enum.Type.Timestamp;
441
+ }
442
+
443
+ get [_Symbol$toStringTag5]() {
444
+ return 'Timestamp';
445
+ }
446
+
447
+ toString() {
448
+ return "Timestamp<".concat(TimeUnit[this.unit]).concat(this.timezone ? ", ".concat(this.timezone) : '', ">");
449
+ }
450
+
451
+ }
452
+
453
+ exports.Timestamp = Timestamp;
454
+
455
+ class TimestampSecond extends Timestamp {
456
+ constructor(timezone = null) {
457
+ super(TimeUnit.SECOND, timezone);
458
+ }
459
+
460
+ }
461
+
462
+ exports.TimestampSecond = TimestampSecond;
463
+
464
+ class TimestampMillisecond extends Timestamp {
465
+ constructor(timezone = null) {
466
+ super(TimeUnit.MILLISECOND, timezone);
467
+ }
468
+
469
+ }
470
+
471
+ exports.TimestampMillisecond = TimestampMillisecond;
472
+
473
+ class TimestampMicrosecond extends Timestamp {
474
+ constructor(timezone = null) {
475
+ super(TimeUnit.MICROSECOND, timezone);
476
+ }
477
+
478
+ }
479
+
480
+ exports.TimestampMicrosecond = TimestampMicrosecond;
481
+
482
+ class TimestampNanosecond extends Timestamp {
483
+ constructor(timezone = null) {
484
+ super(TimeUnit.NANOSECOND, timezone);
485
+ }
486
+
487
+ }
488
+
489
+ exports.TimestampNanosecond = TimestampNanosecond;
490
+ const IntervalUnit = {
491
+ DAY_TIME: 0,
492
+ YEAR_MONTH: 1
493
+ };
494
+ _Symbol$toStringTag6 = Symbol.toStringTag;
495
+
496
+ class Interval extends DataType {
497
+ constructor(unit) {
498
+ super();
499
+ (0, _defineProperty2.default)(this, "unit", void 0);
500
+ this.unit = unit;
501
+ }
502
+
503
+ get typeId() {
504
+ return _enum.Type.Interval;
505
+ }
506
+
507
+ get [_Symbol$toStringTag6]() {
508
+ return 'Interval';
509
+ }
510
+
511
+ toString() {
512
+ return "Interval<".concat(IntervalUnit[this.unit], ">");
513
+ }
514
+
515
+ }
516
+
517
+ exports.Interval = Interval;
518
+
519
+ class IntervalDayTime extends Interval {
520
+ constructor() {
521
+ super(IntervalUnit.DAY_TIME);
522
+ }
523
+
524
+ }
525
+
526
+ exports.IntervalDayTime = IntervalDayTime;
527
+
528
+ class IntervalYearMonth extends Interval {
529
+ constructor() {
530
+ super(IntervalUnit.YEAR_MONTH);
531
+ }
532
+
533
+ }
534
+
535
+ exports.IntervalYearMonth = IntervalYearMonth;
536
+ _Symbol$toStringTag7 = Symbol.toStringTag;
537
+
538
+ class FixedSizeList extends DataType {
539
+ constructor(listSize, child) {
540
+ super();
541
+ (0, _defineProperty2.default)(this, "listSize", void 0);
542
+ (0, _defineProperty2.default)(this, "children", void 0);
543
+ this.listSize = listSize;
544
+ this.children = [child];
545
+ }
546
+
547
+ get typeId() {
548
+ return _enum.Type.FixedSizeList;
549
+ }
550
+
551
+ get valueType() {
552
+ return this.children[0].type;
553
+ }
554
+
555
+ get valueField() {
556
+ return this.children[0];
557
+ }
558
+
559
+ get [_Symbol$toStringTag7]() {
560
+ return 'FixedSizeList';
561
+ }
562
+
563
+ toString() {
564
+ return "FixedSizeList[".concat(this.listSize, "]<").concat(this.valueType, ">");
565
+ }
566
+
567
+ }
568
+
569
+ exports.FixedSizeList = FixedSizeList;
570
+ _Symbol$toStringTag8 = Symbol.toStringTag;
571
+
572
+ class Struct extends DataType {
573
+ constructor(children) {
574
+ super();
575
+ (0, _defineProperty2.default)(this, "children", void 0);
576
+ this.children = children;
577
+ }
578
+
579
+ get typeId() {
580
+ return _enum.Type.Struct;
581
+ }
582
+
583
+ toString() {
584
+ return "Struct<{".concat(this.children.map(f => "".concat(f.name, ":").concat(f.type)).join(', '), "}>");
585
+ }
586
+
587
+ get [_Symbol$toStringTag8]() {
588
+ return 'Struct';
589
+ }
590
+
591
+ }
592
+
593
+ exports.Struct = Struct;
594
+ //# sourceMappingURL=type.js.map