@maplibre/mlt 1.1.0 → 1.1.2

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 (136) hide show
  1. package/LICENSE.txt +231 -0
  2. package/dist/decoding/decodingUtils.js +2 -2
  3. package/dist/decoding/decodingUtils.js.map +1 -1
  4. package/dist/decoding/decodingUtils.spec.js +2 -2
  5. package/dist/decoding/decodingUtils.spec.js.map +1 -1
  6. package/dist/decoding/fsstDecoder.js.map +1 -1
  7. package/dist/decoding/fsstDecoder.spec.js +14 -10
  8. package/dist/decoding/fsstDecoder.spec.js.map +1 -1
  9. package/dist/decoding/geometryDecoder.js +40 -200
  10. package/dist/decoding/geometryDecoder.js.map +1 -1
  11. package/dist/decoding/geometryDecoder.spec.js.map +1 -1
  12. package/dist/decoding/geometryScaling.js.map +1 -1
  13. package/dist/decoding/intWrapper.js.map +1 -1
  14. package/dist/decoding/integerDecodingUtils.d.ts +1 -1
  15. package/dist/decoding/integerDecodingUtils.js.map +1 -1
  16. package/dist/decoding/integerDecodingUtils.spec.js.map +1 -1
  17. package/dist/decoding/integerStreamDecoder.d.ts +13 -22
  18. package/dist/decoding/integerStreamDecoder.js +234 -237
  19. package/dist/decoding/integerStreamDecoder.js.map +1 -1
  20. package/dist/decoding/integerStreamDecoder.spec.js +77 -39
  21. package/dist/decoding/integerStreamDecoder.spec.js.map +1 -1
  22. package/dist/decoding/propertyDecoder.js +21 -21
  23. package/dist/decoding/propertyDecoder.js.map +1 -1
  24. package/dist/decoding/propertyDecoder.spec.js +162 -199
  25. package/dist/decoding/propertyDecoder.spec.js.map +1 -1
  26. package/dist/decoding/stringDecoder.d.ts +2 -10
  27. package/dist/decoding/stringDecoder.js +150 -157
  28. package/dist/decoding/stringDecoder.js.map +1 -1
  29. package/dist/decoding/stringDecoder.spec.js +59 -60
  30. package/dist/decoding/stringDecoder.spec.js.map +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/metadata/tile/dictionaryType.js.map +1 -1
  33. package/dist/metadata/tile/lengthType.js.map +1 -1
  34. package/dist/metadata/tile/logicalLevelTechnique.js.map +1 -1
  35. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  36. package/dist/metadata/tile/offsetType.js.map +1 -1
  37. package/dist/metadata/tile/physicalLevelTechnique.js.map +1 -1
  38. package/dist/metadata/tile/physicalStreamType.js.map +1 -1
  39. package/dist/metadata/tile/scalarType.js.map +1 -1
  40. package/dist/metadata/tile/streamMetadataDecoder.d.ts +28 -4
  41. package/dist/metadata/tile/streamMetadataDecoder.js +81 -15
  42. package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
  43. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js +4 -4
  44. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
  45. package/dist/metadata/tileset/tilesetMetadata.js.map +1 -1
  46. package/dist/metadata/tileset/typeMap.d.ts +21 -29
  47. package/dist/metadata/tileset/typeMap.js +167 -169
  48. package/dist/metadata/tileset/typeMap.js.map +1 -1
  49. package/dist/mltDecoder.js +20 -18
  50. package/dist/mltDecoder.js.map +1 -1
  51. package/dist/mltDecoder.spec.js.map +1 -1
  52. package/dist/mltMetadata.js.map +1 -1
  53. package/dist/vector/constant/intConstVector.js.map +1 -1
  54. package/dist/vector/constant/longConstVector.js.map +1 -1
  55. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  56. package/dist/vector/featureTable.js.map +1 -1
  57. package/dist/vector/filter/flatSelectionVector.d.ts +27 -0
  58. package/dist/vector/filter/flatSelectionVector.js +54 -0
  59. package/dist/vector/filter/flatSelectionVector.js.map +1 -0
  60. package/dist/vector/filter/flatSelectionVector.spec.d.ts +1 -0
  61. package/dist/vector/filter/flatSelectionVector.spec.js +51 -0
  62. package/dist/vector/filter/flatSelectionVector.spec.js.map +1 -0
  63. package/dist/vector/filter/selectionVector.d.ts +8 -0
  64. package/dist/vector/filter/selectionVector.js +2 -0
  65. package/dist/vector/filter/selectionVector.js.map +1 -0
  66. package/dist/vector/filter/selectionVectorUtil.spec.d.ts +1 -0
  67. package/dist/vector/filter/selectionVectorUtil.spec.js +154 -0
  68. package/dist/vector/filter/selectionVectorUtil.spec.js.map +1 -0
  69. package/dist/vector/filter/selectionVectorUtils.d.ts +16 -0
  70. package/dist/vector/filter/selectionVectorUtils.js +37 -0
  71. package/dist/vector/filter/selectionVectorUtils.js.map +1 -0
  72. package/dist/vector/filter/sequenceSelectionVector.d.ts +26 -0
  73. package/dist/vector/filter/sequenceSelectionVector.js +67 -0
  74. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -0
  75. package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +1 -0
  76. package/dist/vector/filter/sequenceSelectionVector.spec.js +115 -0
  77. package/dist/vector/filter/sequenceSelectionVector.spec.js.map +1 -0
  78. package/dist/vector/fixedSizeVector.js.map +1 -1
  79. package/dist/vector/flat/bitVector.js.map +1 -1
  80. package/dist/vector/flat/booleanFlatVector.js.map +1 -1
  81. package/dist/vector/flat/doubleFlatVector.js.map +1 -1
  82. package/dist/vector/flat/floatFlatVector.js.map +1 -1
  83. package/dist/vector/flat/floatFlatVector.spec.js.map +1 -1
  84. package/dist/vector/flat/intFlatVector.js.map +1 -1
  85. package/dist/vector/flat/intFlatVector.spec.js.map +1 -1
  86. package/dist/vector/flat/longFlatVector.js.map +1 -1
  87. package/dist/vector/flat/longFlatVector.spec.js.map +1 -1
  88. package/dist/vector/flat/stringFlatVector.js.map +1 -1
  89. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  90. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +1 -1
  91. package/dist/vector/geometry/constGeometryVector.d.ts +2 -2
  92. package/dist/vector/geometry/constGeometryVector.js +6 -6
  93. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  94. package/dist/vector/geometry/constGpuVector.d.ts +1 -1
  95. package/dist/vector/geometry/constGpuVector.js +3 -24
  96. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  97. package/dist/vector/geometry/flatGeometryVector.d.ts +2 -2
  98. package/dist/vector/geometry/flatGeometryVector.js +7 -7
  99. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  100. package/dist/vector/geometry/flatGpuVector.d.ts +1 -1
  101. package/dist/vector/geometry/flatGpuVector.js +3 -22
  102. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  103. package/dist/vector/geometry/geometryType.js.map +1 -1
  104. package/dist/vector/geometry/geometryVector.js +2 -2
  105. package/dist/vector/geometry/geometryVector.js.map +1 -1
  106. package/dist/vector/geometry/geometryVectorConverter.js +4 -4
  107. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  108. package/dist/vector/geometry/gpuVector.js.map +1 -1
  109. package/dist/vector/geometry/topologyVector.js.map +1 -1
  110. package/dist/vector/geometry/vertexBufferType.js.map +1 -1
  111. package/dist/vector/geometry/zOrderCurve.d.ts +4 -17
  112. package/dist/vector/geometry/zOrderCurve.js +10 -35
  113. package/dist/vector/geometry/zOrderCurve.js.map +1 -1
  114. package/dist/vector/geometry/zOrderCurve.spec.js +15 -10
  115. package/dist/vector/geometry/zOrderCurve.spec.js.map +1 -1
  116. package/dist/vector/intVector.js.map +1 -1
  117. package/dist/vector/sequence/intSequenceVector.js.map +1 -1
  118. package/dist/vector/sequence/longSequenceVector.js.map +1 -1
  119. package/dist/vector/sequence/longSequenceVektor.spec.js.map +1 -1
  120. package/dist/vector/sequence/sequenceVector.js.map +1 -1
  121. package/dist/vector/variableSizeVector.js.map +1 -1
  122. package/dist/vector/vector.js.map +1 -1
  123. package/dist/vector/vectorType.js.map +1 -1
  124. package/package.json +5 -5
  125. package/dist/metadata/tile/mortonEncodedStreamMetadata.d.ts +0 -15
  126. package/dist/metadata/tile/mortonEncodedStreamMetadata.js +0 -27
  127. package/dist/metadata/tile/mortonEncodedStreamMetadata.js.map +0 -1
  128. package/dist/metadata/tile/rleEncodedStreamMetadata.d.ts +0 -24
  129. package/dist/metadata/tile/rleEncodedStreamMetadata.js +0 -38
  130. package/dist/metadata/tile/rleEncodedStreamMetadata.js.map +0 -1
  131. package/dist/metadata/tile/streamMetadata.d.ts +0 -29
  132. package/dist/metadata/tile/streamMetadata.js +0 -82
  133. package/dist/metadata/tile/streamMetadata.js.map +0 -1
  134. package/dist/vector/geometry/spaceFillingCurve.d.ts +0 -22
  135. package/dist/vector/geometry/spaceFillingCurve.js +0 -31
  136. package/dist/vector/geometry/spaceFillingCurve.js.map +0 -1
@@ -1,5 +1,29 @@
1
- import { StreamMetadata } from "./streamMetadata";
1
+ import { LogicalLevelTechnique } from "./logicalLevelTechnique";
2
+ import { PhysicalLevelTechnique } from "./physicalLevelTechnique";
3
+ import { PhysicalStreamType } from "./physicalStreamType";
4
+ import { LogicalStreamType } from "./logicalStreamType";
2
5
  import type IntWrapper from "../../decoding/intWrapper";
3
- export declare class StreamMetadataDecoder {
4
- static decode(tile: Uint8Array, offset: IntWrapper): StreamMetadata;
5
- }
6
+ export type StreamMetadata = {
7
+ readonly physicalStreamType: PhysicalStreamType;
8
+ readonly logicalStreamType: LogicalStreamType;
9
+ readonly logicalLevelTechnique1: LogicalLevelTechnique;
10
+ readonly logicalLevelTechnique2: LogicalLevelTechnique;
11
+ readonly physicalLevelTechnique: PhysicalLevelTechnique;
12
+ readonly numValues: number;
13
+ readonly byteLength: number;
14
+ /**
15
+ * Returns the number of decompressed values.
16
+ * For non-RLE streams, this is the same as numValues.
17
+ * For RLE streams, this is overridden to return numRleValues.
18
+ */
19
+ readonly decompressedCount: number;
20
+ };
21
+ export type MortonEncodedStreamMetadata = StreamMetadata & {
22
+ readonly numBits: number;
23
+ readonly coordinateShift: number;
24
+ };
25
+ export type RleEncodedStreamMetadata = StreamMetadata & {
26
+ readonly runs: number;
27
+ readonly numRleValues: number;
28
+ };
29
+ export declare function decodeStreamMetadata(tile: Uint8Array, offset: IntWrapper): StreamMetadata;
@@ -1,20 +1,86 @@
1
- import { StreamMetadata } from "./streamMetadata";
2
1
  import { LogicalLevelTechnique } from "./logicalLevelTechnique";
3
2
  import { PhysicalLevelTechnique } from "./physicalLevelTechnique";
4
- import { MortonEncodedStreamMetadata } from "./mortonEncodedStreamMetadata";
5
- import { RleEncodedStreamMetadata } from "./rleEncodedStreamMetadata";
6
- export class StreamMetadataDecoder {
7
- static decode(tile, offset) {
8
- const streamMetadata = StreamMetadata.decode(tile, offset);
9
- if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.MORTON) {
10
- return MortonEncodedStreamMetadata.decodePartial(streamMetadata, tile, offset);
11
- }
12
- if ((LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique1 ||
13
- LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique2) &&
14
- PhysicalLevelTechnique.NONE !== streamMetadata.physicalLevelTechnique) {
15
- return RleEncodedStreamMetadata.decodePartial(streamMetadata, tile, offset);
16
- }
17
- return streamMetadata;
3
+ import { decodeVarintInt32 } from "../../decoding/integerDecodingUtils";
4
+ import { PhysicalStreamType } from "./physicalStreamType";
5
+ import { LogicalStreamType } from "./logicalStreamType";
6
+ import { DictionaryType } from "./dictionaryType";
7
+ import { OffsetType } from "./offsetType";
8
+ import { LengthType } from "./lengthType";
9
+ export function decodeStreamMetadata(tile, offset) {
10
+ const streamMetadata = decodeStreamMetadataInternal(tile, offset);
11
+ if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.MORTON) {
12
+ return decodePartialMortonEncodedStreamMetadata(streamMetadata, tile, offset);
18
13
  }
14
+ if ((LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique1 ||
15
+ LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique2) &&
16
+ PhysicalLevelTechnique.NONE !== streamMetadata.physicalLevelTechnique) {
17
+ return decodePartialRleEncodedStreamMetadata(streamMetadata, tile, offset);
18
+ }
19
+ return streamMetadata;
20
+ }
21
+ function decodePartialMortonEncodedStreamMetadata(streamMetadata, tile, offset) {
22
+ const mortonInfo = decodeVarintInt32(tile, offset, 2);
23
+ return {
24
+ physicalStreamType: streamMetadata.physicalStreamType,
25
+ logicalStreamType: streamMetadata.logicalStreamType,
26
+ logicalLevelTechnique1: streamMetadata.logicalLevelTechnique1,
27
+ logicalLevelTechnique2: streamMetadata.logicalLevelTechnique2,
28
+ physicalLevelTechnique: streamMetadata.physicalLevelTechnique,
29
+ numValues: streamMetadata.numValues,
30
+ byteLength: streamMetadata.byteLength,
31
+ decompressedCount: streamMetadata.decompressedCount,
32
+ numBits: mortonInfo[0],
33
+ coordinateShift: mortonInfo[1],
34
+ };
35
+ }
36
+ function decodePartialRleEncodedStreamMetadata(streamMetadata, tile, offset) {
37
+ const rleInfo = decodeVarintInt32(tile, offset, 2);
38
+ return {
39
+ physicalStreamType: streamMetadata.physicalStreamType,
40
+ logicalStreamType: streamMetadata.logicalStreamType,
41
+ logicalLevelTechnique1: streamMetadata.logicalLevelTechnique1,
42
+ logicalLevelTechnique2: streamMetadata.logicalLevelTechnique2,
43
+ physicalLevelTechnique: streamMetadata.physicalLevelTechnique,
44
+ numValues: streamMetadata.numValues,
45
+ byteLength: streamMetadata.byteLength,
46
+ decompressedCount: rleInfo[1],
47
+ runs: rleInfo[0],
48
+ numRleValues: rleInfo[1],
49
+ };
50
+ }
51
+ function decodeStreamMetadataInternal(tile, offset) {
52
+ const stream_type = tile[offset.get()];
53
+ const physicalStreamType = Object.values(PhysicalStreamType)[stream_type >> 4];
54
+ let logicalStreamType = null;
55
+ switch (physicalStreamType) {
56
+ case PhysicalStreamType.DATA:
57
+ logicalStreamType = new LogicalStreamType(Object.values(DictionaryType)[stream_type & 0xf]);
58
+ break;
59
+ case PhysicalStreamType.OFFSET:
60
+ logicalStreamType = new LogicalStreamType(null, Object.values(OffsetType)[stream_type & 0xf]);
61
+ break;
62
+ case PhysicalStreamType.LENGTH:
63
+ logicalStreamType = new LogicalStreamType(null, null, Object.values(LengthType)[stream_type & 0xf]);
64
+ break;
65
+ }
66
+ offset.increment();
67
+ const encodings_header = tile[offset.get()];
68
+ const llt1 = Object.values(LogicalLevelTechnique)[encodings_header >> 5];
69
+ const llt2 = Object.values(LogicalLevelTechnique)[(encodings_header >> 2) & 0x7];
70
+ const plt = Object.values(PhysicalLevelTechnique)[encodings_header & 0x3];
71
+ offset.increment();
72
+ const sizeInfo = decodeVarintInt32(tile, offset, 2);
73
+ const numValues = sizeInfo[0];
74
+ const byteLength = sizeInfo[1];
75
+ return {
76
+ physicalStreamType,
77
+ logicalStreamType,
78
+ logicalLevelTechnique1: llt1,
79
+ logicalLevelTechnique2: llt2,
80
+ physicalLevelTechnique: plt,
81
+ numValues,
82
+ byteLength,
83
+ decompressedCount: numValues,
84
+ };
19
85
  }
20
86
  //# sourceMappingURL=streamMetadataDecoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"streamMetadataDecoder.js","sourceRoot":"","sources":["../../../src/metadata/tile/streamMetadataDecoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,MAAM,OAAO,qBAAqB;IACvB,MAAM,CAAC,MAAM,CAAC,IAAgB,EAAE,MAAkB;QACrD,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,MAAM,EAAE,CAAC;YACzE,OAAO,2BAA2B,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACnF,CAAC;QAED,IACI,CAAC,qBAAqB,CAAC,GAAG,KAAK,cAAc,CAAC,sBAAsB;YAChE,qBAAqB,CAAC,GAAG,KAAK,cAAc,CAAC,sBAAsB,CAAC;YACxE,sBAAsB,CAAC,IAAI,KAAK,cAAc,CAAC,sBAAsB,EACvE,CAAC;YACC,OAAO,wBAAwB,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;CACJ"}
1
+ {"version":3,"file":"streamMetadataDecoder.js","sourceRoot":"","sources":["../../../src/metadata/tile/streamMetadataDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { LogicalLevelTechnique } from \"./logicalLevelTechnique\";\nimport { PhysicalLevelTechnique } from \"./physicalLevelTechnique\";\nimport { decodeVarintInt32 } from \"../../decoding/integerDecodingUtils\";\nimport { PhysicalStreamType } from \"./physicalStreamType\";\nimport { LogicalStreamType } from \"./logicalStreamType\";\nimport { DictionaryType } from \"./dictionaryType\";\nimport { OffsetType } from \"./offsetType\";\nimport { LengthType } from \"./lengthType\";\nimport type IntWrapper from \"../../decoding/intWrapper\";\n\nexport type StreamMetadata = {\n readonly physicalStreamType: PhysicalStreamType;\n readonly logicalStreamType: LogicalStreamType;\n readonly logicalLevelTechnique1: LogicalLevelTechnique;\n readonly logicalLevelTechnique2: LogicalLevelTechnique;\n readonly physicalLevelTechnique: PhysicalLevelTechnique;\n readonly numValues: number;\n readonly byteLength: number;\n /**\n * Returns the number of decompressed values.\n * For non-RLE streams, this is the same as numValues.\n * For RLE streams, this is overridden to return numRleValues.\n */\n readonly decompressedCount: number;\n};\n\nexport type MortonEncodedStreamMetadata = StreamMetadata & {\n readonly numBits: number;\n readonly coordinateShift: number;\n};\n\nexport type RleEncodedStreamMetadata = StreamMetadata & {\n readonly runs: number;\n readonly numRleValues: number;\n};\n\nexport function decodeStreamMetadata(tile: Uint8Array, offset: IntWrapper): StreamMetadata {\n const streamMetadata = decodeStreamMetadataInternal(tile, offset);\n if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.MORTON) {\n return decodePartialMortonEncodedStreamMetadata(streamMetadata, tile, offset);\n }\n\n if (\n (LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique1 ||\n LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique2) &&\n PhysicalLevelTechnique.NONE !== streamMetadata.physicalLevelTechnique\n ) {\n return decodePartialRleEncodedStreamMetadata(streamMetadata, tile, offset);\n }\n\n return streamMetadata;\n}\n\nfunction decodePartialMortonEncodedStreamMetadata(\n streamMetadata: StreamMetadata,\n tile: Uint8Array,\n offset: IntWrapper,\n): MortonEncodedStreamMetadata {\n const mortonInfo = decodeVarintInt32(tile, offset, 2);\n return {\n physicalStreamType: streamMetadata.physicalStreamType,\n logicalStreamType: streamMetadata.logicalStreamType,\n logicalLevelTechnique1: streamMetadata.logicalLevelTechnique1,\n logicalLevelTechnique2: streamMetadata.logicalLevelTechnique2,\n physicalLevelTechnique: streamMetadata.physicalLevelTechnique,\n numValues: streamMetadata.numValues,\n byteLength: streamMetadata.byteLength,\n decompressedCount: streamMetadata.decompressedCount,\n numBits: mortonInfo[0],\n coordinateShift: mortonInfo[1],\n };\n}\n\nfunction decodePartialRleEncodedStreamMetadata(\n streamMetadata: StreamMetadata,\n tile: Uint8Array,\n offset: IntWrapper,\n): RleEncodedStreamMetadata {\n const rleInfo = decodeVarintInt32(tile, offset, 2);\n return {\n physicalStreamType: streamMetadata.physicalStreamType,\n logicalStreamType: streamMetadata.logicalStreamType,\n logicalLevelTechnique1: streamMetadata.logicalLevelTechnique1,\n logicalLevelTechnique2: streamMetadata.logicalLevelTechnique2,\n physicalLevelTechnique: streamMetadata.physicalLevelTechnique,\n numValues: streamMetadata.numValues,\n byteLength: streamMetadata.byteLength,\n decompressedCount: rleInfo[1],\n runs: rleInfo[0],\n numRleValues: rleInfo[1],\n };\n}\n\nfunction decodeStreamMetadataInternal(tile: Uint8Array, offset: IntWrapper): StreamMetadata {\n const stream_type = tile[offset.get()];\n const physicalStreamType = Object.values(PhysicalStreamType)[stream_type >> 4] as PhysicalStreamType;\n let logicalStreamType: LogicalStreamType | null = null;\n\n switch (physicalStreamType) {\n case PhysicalStreamType.DATA:\n logicalStreamType = new LogicalStreamType(\n Object.values(DictionaryType)[stream_type & 0xf] as DictionaryType,\n );\n break;\n case PhysicalStreamType.OFFSET:\n logicalStreamType = new LogicalStreamType(null, Object.values(OffsetType)[stream_type & 0xf] as OffsetType);\n break;\n case PhysicalStreamType.LENGTH:\n logicalStreamType = new LogicalStreamType(\n null,\n null,\n Object.values(LengthType)[stream_type & 0xf] as LengthType,\n );\n break;\n }\n offset.increment();\n\n const encodings_header = tile[offset.get()];\n const llt1 = Object.values(LogicalLevelTechnique)[encodings_header >> 5] as LogicalLevelTechnique;\n const llt2 = Object.values(LogicalLevelTechnique)[(encodings_header >> 2) & 0x7] as LogicalLevelTechnique;\n const plt = Object.values(PhysicalLevelTechnique)[encodings_header & 0x3] as PhysicalLevelTechnique;\n offset.increment();\n\n const sizeInfo = decodeVarintInt32(tile, offset, 2);\n const numValues = sizeInfo[0];\n const byteLength = sizeInfo[1];\n\n return {\n physicalStreamType,\n logicalStreamType,\n logicalLevelTechnique1: llt1,\n logicalLevelTechnique2: llt2,\n physicalLevelTechnique: plt,\n numValues,\n byteLength,\n decompressedCount: numValues,\n };\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { decodeVarintInt32 } from "../../decoding/integerDecodingUtils";
2
- import { TypeMap } from "./typeMap";
2
+ import { columnTypeHasChildren, columnTypeHasName, decodeColumnType } from "./typeMap";
3
3
  const textDecoder = new TextDecoder();
4
4
  /**
5
5
  * Decodes a length-prefixed UTF-8 string.
@@ -69,11 +69,11 @@ function decodeField(src, offset) {
69
69
  */
70
70
  function decodeColumn(src, offset) {
71
71
  const typeCode = decodeVarintInt32(src, offset, 1)[0] >>> 0;
72
- const column = TypeMap.decodeColumnType(typeCode);
72
+ const column = decodeColumnType(typeCode);
73
73
  if (!column) {
74
74
  throw new Error(`Unsupported column type code: ${typeCode}`);
75
75
  }
76
- if (TypeMap.columnTypeHasName(typeCode)) {
76
+ if (columnTypeHasName(typeCode)) {
77
77
  column.name = decodeString(src, offset);
78
78
  }
79
79
  else {
@@ -85,7 +85,7 @@ function decodeColumn(src, offset) {
85
85
  column.name = "geometry";
86
86
  }
87
87
  }
88
- if (TypeMap.columnTypeHasChildren(typeCode)) {
88
+ if (columnTypeHasChildren(typeCode)) {
89
89
  // Only STRUCT (typeCode 30) has children
90
90
  const childCount = decodeVarintInt32(src, offset, 1)[0] >>> 0;
91
91
  const complexCol = column.complexType;
@@ -1 +1 @@
1
- {"version":3,"file":"embeddedTilesetMetadataDecoder.js","sourceRoot":"","sources":["../../../src/metadata/tileset/embeddedTilesetMetadataDecoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embeddedTilesetMetadataDecoder.js","sourceRoot":"","sources":["../../../src/metadata/tileset/embeddedTilesetMetadataDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import type IntWrapper from \"../../decoding/intWrapper\";\nimport { decodeVarintInt32 } from \"../../decoding/integerDecodingUtils\";\nimport {\n type Column,\n type ComplexField,\n type FeatureTableSchema,\n type Field,\n type ScalarField,\n type TileSetMetadata,\n} from \"./tilesetMetadata\";\nimport { columnTypeHasChildren, columnTypeHasName, decodeColumnType } from \"./typeMap\";\n\nconst enum FieldOptions {\n nullable = 1 << 0,\n complexType = 1 << 1,\n logicalType = 1 << 2,\n hasChildren = 1 << 3,\n}\n\nconst textDecoder = new TextDecoder();\n\n/**\n * Decodes a length-prefixed UTF-8 string.\n * Layout: [len: varint32][bytes: len]\n */\nfunction decodeString(src: Uint8Array, offset: IntWrapper): string {\n const length = decodeVarintInt32(src, offset, 1)[0];\n if (length === 0) {\n return \"\";\n }\n const start = offset.get();\n const end = start + length;\n const view = src.subarray(start, end);\n offset.add(length);\n return textDecoder.decode(view);\n}\n\n/**\n * Decodes a Field used as part of complex types (STRUCT children).\n * Unlike Column, Field still uses the fieldOptions bitfield for flexibility.\n */\nfunction decodeField(src: Uint8Array, offset: IntWrapper): Field {\n const fieldOptions = decodeVarintInt32(src, offset, 1)[0] >>> 0;\n const isLogical = (fieldOptions & FieldOptions.logicalType) !== 0;\n const isComplex = (fieldOptions & FieldOptions.complexType) !== 0;\n\n const typeValue = decodeVarintInt32(src, offset, 1)[0] >>> 0;\n\n const field = {} as Field;\n if ((fieldOptions & FieldOptions.nullable) !== 0) {\n field.nullable = true;\n }\n\n if (isComplex) {\n const complex = {} as ComplexField;\n if (isLogical) {\n complex.type = \"logicalType\";\n complex.logicalType = typeValue;\n } else {\n complex.type = \"physicalType\";\n complex.physicalType = typeValue;\n }\n\n if ((fieldOptions & FieldOptions.hasChildren) !== 0) {\n const childCount = decodeVarintInt32(src, offset, 1)[0] >>> 0;\n complex.children = new Array(childCount);\n for (let i = 0; i < childCount; i++) {\n complex.children[i] = decodeField(src, offset);\n }\n }\n field.type = \"complexField\";\n field.complexField = complex;\n } else {\n const scalar = {} as ScalarField;\n if (isLogical) {\n scalar.type = \"logicalType\";\n scalar.logicalType = typeValue;\n } else {\n scalar.type = \"physicalType\";\n scalar.physicalType = typeValue;\n }\n field.type = \"scalarField\";\n field.scalarField = scalar;\n }\n\n return field;\n}\n\n/**\n * The typeCode encodes the column type, nullable flag, and whether it has name/children.\n */\nfunction decodeColumn(src: Uint8Array, offset: IntWrapper): Column {\n const typeCode = decodeVarintInt32(src, offset, 1)[0] >>> 0;\n const column = decodeColumnType(typeCode);\n\n if (!column) {\n throw new Error(`Unsupported column type code: ${typeCode}`);\n }\n\n if (columnTypeHasName(typeCode)) {\n column.name = decodeString(src, offset);\n } else {\n // ID and GEOMETRY columns have implicit names\n if (typeCode >= 0 && typeCode <= 3) {\n column.name = \"id\";\n } else if (typeCode === 4) {\n column.name = \"geometry\";\n }\n }\n\n if (columnTypeHasChildren(typeCode)) {\n // Only STRUCT (typeCode 30) has children\n const childCount = decodeVarintInt32(src, offset, 1)[0] >>> 0;\n const complexCol = column.complexType;\n complexCol.children = new Array(childCount);\n for (let i = 0; i < childCount; i++) {\n complexCol.children[i] = decodeField(src, offset);\n }\n }\n\n return column;\n}\n\n/**\n * Top-level decoder for embedded tileset metadata.\n * Reads exactly ONE FeatureTableSchema from the stream.\n *\n * @param bytes The byte array containing the metadata\n * @param offset The current offset in the byte array (will be advanced)\n */\nexport function decodeEmbeddedTileSetMetadata(bytes: Uint8Array, offset: IntWrapper): [TileSetMetadata, number] {\n const meta = {} as TileSetMetadata;\n meta.featureTables = [];\n\n const table = {} as FeatureTableSchema;\n table.name = decodeString(bytes, offset);\n const extent = decodeVarintInt32(bytes, offset, 1)[0] >>> 0;\n\n const columnCount = decodeVarintInt32(bytes, offset, 1)[0] >>> 0;\n table.columns = new Array(columnCount);\n for (let j = 0; j < columnCount; j++) {\n table.columns[j] = decodeColumn(bytes, offset);\n }\n\n meta.featureTables.push(table);\n\n return [meta, extent];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tilesetMetadata.js","sourceRoot":"","sources":["../../../src/metadata/tileset/tilesetMetadata.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,EAAE,EAAE,CAAC;CACC,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;CACN,CAAC"}
1
+ {"version":3,"file":"tilesetMetadata.js","sourceRoot":"","sources":["../../../src/metadata/tileset/tilesetMetadata.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,EAAE,EAAE,CAAC;CACC,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;CACN,CAAC","sourcesContent":["// based on ../spec/schema/mlt_tileset_metadata.proto\nexport const ColumnScope = {\n FEATURE: 0,\n VERTEX: 1,\n} as const;\n\nexport const ScalarType = {\n BOOLEAN: 0,\n INT_8: 1,\n UINT_8: 2,\n INT_32: 3,\n UINT_32: 4,\n INT_64: 5,\n UINT_64: 6,\n FLOAT: 7,\n DOUBLE: 8,\n STRING: 9,\n} as const;\n\nexport const ComplexType = {\n GEOMETRY: 0,\n STRUCT: 1,\n} as const;\n\nexport const LogicalScalarType = {\n ID: 0,\n} as const;\n\nexport const LogicalComplexType = {\n BINARY: 0,\n RANGE_MAP: 1,\n} as const;\n\nexport interface TileSetMetadata {\n version?: number | null;\n featureTables: FeatureTableSchema[];\n name?: string | null;\n description?: string | null;\n attribution?: string | null;\n minZoom?: number | null;\n maxZoom?: number | null;\n bounds: number[];\n center: number[];\n}\n\nexport interface FeatureTableSchema {\n name?: string | null;\n columns: Column[];\n}\n\nexport interface Column {\n name?: string | null;\n nullable?: boolean | null;\n columnScope?: number | null;\n scalarType?: ScalarColumn | null;\n complexType?: ComplexColumn | null;\n type?: \"scalarType\" | \"complexType\";\n}\n\nexport interface ScalarColumn {\n longID?: boolean | null;\n physicalType?: number | null;\n logicalType?: number | null;\n type?: \"physicalType\" | \"logicalType\";\n}\n\nexport interface ComplexColumn {\n physicalType?: number | null;\n logicalType?: number | null;\n children: Field[];\n type?: \"physicalType\" | \"logicalType\";\n}\n\nexport interface Field {\n name?: string | null;\n nullable?: boolean | null;\n scalarField?: ScalarField | null;\n complexField?: ComplexField | null;\n type?: \"scalarField\" | \"complexField\";\n}\n\nexport interface ScalarField {\n physicalType?: number | null;\n logicalType?: number | null;\n type?: \"physicalType\" | \"logicalType\";\n}\n\nexport interface ComplexField {\n physicalType?: number | null;\n logicalType?: number | null;\n children: Field[];\n type?: \"physicalType\" | \"logicalType\";\n}\n"]}
@@ -7,32 +7,24 @@ import { type Column } from "./tilesetMetadata";
7
7
  * - Whether the column has children (typeCode == 30 for STRUCT)
8
8
  * - For ID types: whether it uses long (64-bit) IDs
9
9
  */
10
- export declare class TypeMap {
11
- /**
12
- * Decodes a type code into a Column structure.
13
- * ID columns (0-3) are represented as physical UINT_32 or UINT_64 types in TypeScript
14
- */
15
- static decodeColumnType(typeCode: number): Column | null;
16
- /**
17
- * Returns true if this type code requires a name to be stored.
18
- * ID (0-3) and GEOMETRY (4) columns have implicit names.
19
- * All other types (>= 10) require explicit names.
20
- */
21
- static columnTypeHasName(typeCode: number): boolean;
22
- /**
23
- * Returns true if this type code has child fields.
24
- * Only STRUCT (typeCode 30) has children.
25
- */
26
- static columnTypeHasChildren(typeCode: number): boolean;
27
- /**
28
- * Determines if a stream count needs to be read for this column.
29
- * Mirrors the logic in cpp/include/mlt/metadata/type_map.hpp lines 81-118
30
- */
31
- static hasStreamCount(column: Column): boolean;
32
- /**
33
- * Maps a scalar type code to a Column with ScalarType.
34
- * Type codes 10-29 encode scalar types with nullable flag.
35
- * Even codes are non-nullable, odd codes are nullable.
36
- */
37
- private static mapScalarType;
38
- }
10
+ /**
11
+ * Decodes a type code into a Column structure.
12
+ * ID columns (0-3) are represented as physical UINT_32 or UINT_64 types in TypeScript
13
+ */
14
+ export declare function decodeColumnType(typeCode: number): Column | null;
15
+ /**
16
+ * Returns true if this type code requires a name to be stored.
17
+ * ID (0-3) and GEOMETRY (4) columns have implicit names.
18
+ * All other types (>= 10) require explicit names.
19
+ */
20
+ export declare function columnTypeHasName(typeCode: number): boolean;
21
+ /**
22
+ * Returns true if this type code has child fields.
23
+ * Only STRUCT (typeCode 30) has children.
24
+ */
25
+ export declare function columnTypeHasChildren(typeCode: number): boolean;
26
+ /**
27
+ * Determines if a stream count needs to be read for this column.
28
+ * Mirrors the logic in cpp/include/mlt/metadata/type_map.hpp lines 81-118
29
+ */
30
+ export declare function hasStreamCount(column: Column): boolean;
@@ -7,183 +7,181 @@ import { ColumnScope, ComplexType, ScalarType, } from "./tilesetMetadata";
7
7
  * - Whether the column has children (typeCode == 30 for STRUCT)
8
8
  * - For ID types: whether it uses long (64-bit) IDs
9
9
  */
10
- export class TypeMap {
11
- /**
12
- * Decodes a type code into a Column structure.
13
- * ID columns (0-3) are represented as physical UINT_32 or UINT_64 types in TypeScript
14
- */
15
- static decodeColumnType(typeCode) {
16
- switch (typeCode) {
17
- case 0:
18
- case 1:
19
- case 2:
20
- case 3: {
21
- // ID columns: 0=uint32, 1=uint64, 2=nullable uint32, 3=nullable uint64
22
- const column = {};
23
- column.nullable = (typeCode & 1) !== 0; // Bit 0 = nullable;
24
- column.columnScope = ColumnScope.FEATURE;
25
- const scalarCol = {};
26
- // Map to physical type since TS schema doesn't have LogicalScalarType.ID
27
- const physicalType = typeCode > 1 ? ScalarType.UINT_64 : ScalarType.UINT_32; // Bit 1 = longID
28
- scalarCol.physicalType = physicalType;
29
- scalarCol.type = "physicalType";
30
- column.scalarType = scalarCol;
31
- column.type = "scalarType";
32
- return column;
33
- }
34
- case 4: {
35
- // GEOMETRY (non-nullable, no children)
36
- const column = {};
37
- column.nullable = false;
38
- column.columnScope = ColumnScope.FEATURE;
39
- const complexCol = {};
40
- complexCol.type = "physicalType";
41
- complexCol.physicalType = ComplexType.GEOMETRY;
42
- column.type = "complexType";
43
- column.complexType = complexCol;
44
- return column;
45
- }
46
- case 30: {
47
- // STRUCT (non-nullable with children)
48
- const column = {};
49
- column.nullable = false;
50
- column.columnScope = ColumnScope.FEATURE;
51
- const complexCol = {};
52
- complexCol.type = "physicalType";
53
- complexCol.physicalType = ComplexType.STRUCT;
54
- column.type = "complexType";
55
- column.complexType = complexCol;
56
- return column;
57
- }
58
- default:
59
- return this.mapScalarType(typeCode);
10
+ /**
11
+ * Decodes a type code into a Column structure.
12
+ * ID columns (0-3) are represented as physical UINT_32 or UINT_64 types in TypeScript
13
+ */
14
+ export function decodeColumnType(typeCode) {
15
+ switch (typeCode) {
16
+ case 0:
17
+ case 1:
18
+ case 2:
19
+ case 3: {
20
+ // ID columns: 0=uint32, 1=uint64, 2=nullable uint32, 3=nullable uint64
21
+ const column = {};
22
+ column.nullable = (typeCode & 1) !== 0; // Bit 0 = nullable;
23
+ column.columnScope = ColumnScope.FEATURE;
24
+ const scalarCol = {};
25
+ // Map to physical type since TS schema doesn't have LogicalScalarType.ID
26
+ const physicalType = typeCode > 1 ? ScalarType.UINT_64 : ScalarType.UINT_32; // Bit 1 = longID
27
+ scalarCol.physicalType = physicalType;
28
+ scalarCol.type = "physicalType";
29
+ column.scalarType = scalarCol;
30
+ column.type = "scalarType";
31
+ return column;
60
32
  }
33
+ case 4: {
34
+ // GEOMETRY (non-nullable, no children)
35
+ const column = {};
36
+ column.nullable = false;
37
+ column.columnScope = ColumnScope.FEATURE;
38
+ const complexCol = {};
39
+ complexCol.type = "physicalType";
40
+ complexCol.physicalType = ComplexType.GEOMETRY;
41
+ column.type = "complexType";
42
+ column.complexType = complexCol;
43
+ return column;
44
+ }
45
+ case 30: {
46
+ // STRUCT (non-nullable with children)
47
+ const column = {};
48
+ column.nullable = false;
49
+ column.columnScope = ColumnScope.FEATURE;
50
+ const complexCol = {};
51
+ complexCol.type = "physicalType";
52
+ complexCol.physicalType = ComplexType.STRUCT;
53
+ column.type = "complexType";
54
+ column.complexType = complexCol;
55
+ return column;
56
+ }
57
+ default:
58
+ return mapScalarType(typeCode);
61
59
  }
62
- /**
63
- * Returns true if this type code requires a name to be stored.
64
- * ID (0-3) and GEOMETRY (4) columns have implicit names.
65
- * All other types (>= 10) require explicit names.
66
- */
67
- static columnTypeHasName(typeCode) {
68
- return typeCode >= 10;
69
- }
70
- /**
71
- * Returns true if this type code has child fields.
72
- * Only STRUCT (typeCode 30) has children.
73
- */
74
- static columnTypeHasChildren(typeCode) {
75
- return typeCode === 30;
60
+ }
61
+ /**
62
+ * Returns true if this type code requires a name to be stored.
63
+ * ID (0-3) and GEOMETRY (4) columns have implicit names.
64
+ * All other types (>= 10) require explicit names.
65
+ */
66
+ export function columnTypeHasName(typeCode) {
67
+ return typeCode >= 10;
68
+ }
69
+ /**
70
+ * Returns true if this type code has child fields.
71
+ * Only STRUCT (typeCode 30) has children.
72
+ */
73
+ export function columnTypeHasChildren(typeCode) {
74
+ return typeCode === 30;
75
+ }
76
+ /**
77
+ * Determines if a stream count needs to be read for this column.
78
+ * Mirrors the logic in cpp/include/mlt/metadata/type_map.hpp lines 81-118
79
+ */
80
+ export function hasStreamCount(column) {
81
+ // ID columns don't have stream count (identified by name)
82
+ if (column.name === "id") {
83
+ return false;
76
84
  }
77
- /**
78
- * Determines if a stream count needs to be read for this column.
79
- * Mirrors the logic in cpp/include/mlt/metadata/type_map.hpp lines 81-118
80
- */
81
- static hasStreamCount(column) {
82
- // ID columns don't have stream count (identified by name)
83
- if (column.name === "id") {
84
- return false;
85
- }
86
- if (column.type === "scalarType") {
87
- const scalarCol = column.scalarType;
88
- if (scalarCol.type === "physicalType") {
89
- const physicalType = scalarCol.physicalType;
90
- switch (physicalType) {
91
- case ScalarType.BOOLEAN:
92
- case ScalarType.INT_8:
93
- case ScalarType.UINT_8:
94
- case ScalarType.INT_32:
95
- case ScalarType.UINT_32:
96
- case ScalarType.INT_64:
97
- case ScalarType.UINT_64:
98
- case ScalarType.FLOAT:
99
- case ScalarType.DOUBLE:
100
- return false;
101
- case ScalarType.STRING:
102
- return true;
103
- default:
104
- return false;
105
- }
106
- }
107
- else if (scalarCol.type === "logicalType") {
108
- return false;
85
+ if (column.type === "scalarType") {
86
+ const scalarCol = column.scalarType;
87
+ if (scalarCol.type === "physicalType") {
88
+ const physicalType = scalarCol.physicalType;
89
+ switch (physicalType) {
90
+ case ScalarType.BOOLEAN:
91
+ case ScalarType.INT_8:
92
+ case ScalarType.UINT_8:
93
+ case ScalarType.INT_32:
94
+ case ScalarType.UINT_32:
95
+ case ScalarType.INT_64:
96
+ case ScalarType.UINT_64:
97
+ case ScalarType.FLOAT:
98
+ case ScalarType.DOUBLE:
99
+ return false;
100
+ case ScalarType.STRING:
101
+ return true;
102
+ default:
103
+ return false;
109
104
  }
110
105
  }
111
- else if (column.type === "complexType") {
112
- const complexCol = column.complexType;
113
- if (complexCol.type === "physicalType") {
114
- const physicalType = complexCol.physicalType;
115
- switch (physicalType) {
116
- case ComplexType.GEOMETRY:
117
- case ComplexType.STRUCT:
118
- return true;
119
- default:
120
- return false;
121
- }
122
- }
106
+ else if (scalarCol.type === "logicalType") {
107
+ return false;
123
108
  }
124
- console.warn("Unexpected column type in hasStreamCount", column);
125
- return false;
126
109
  }
127
- /**
128
- * Maps a scalar type code to a Column with ScalarType.
129
- * Type codes 10-29 encode scalar types with nullable flag.
130
- * Even codes are non-nullable, odd codes are nullable.
131
- */
132
- static mapScalarType(typeCode) {
133
- let scalarType = null;
134
- switch (typeCode) {
135
- case 10:
136
- case 11:
137
- scalarType = ScalarType.BOOLEAN;
138
- break;
139
- case 12:
140
- case 13:
141
- scalarType = ScalarType.INT_8;
142
- break;
143
- case 14:
144
- case 15:
145
- scalarType = ScalarType.UINT_8;
146
- break;
147
- case 16:
148
- case 17:
149
- scalarType = ScalarType.INT_32;
150
- break;
151
- case 18:
152
- case 19:
153
- scalarType = ScalarType.UINT_32;
154
- break;
155
- case 20:
156
- case 21:
157
- scalarType = ScalarType.INT_64;
158
- break;
159
- case 22:
160
- case 23:
161
- scalarType = ScalarType.UINT_64;
162
- break;
163
- case 24:
164
- case 25:
165
- scalarType = ScalarType.FLOAT;
166
- break;
167
- case 26:
168
- case 27:
169
- scalarType = ScalarType.DOUBLE;
170
- break;
171
- case 28:
172
- case 29:
173
- scalarType = ScalarType.STRING;
174
- break;
175
- default:
176
- return null;
110
+ else if (column.type === "complexType") {
111
+ const complexCol = column.complexType;
112
+ if (complexCol.type === "physicalType") {
113
+ const physicalType = complexCol.physicalType;
114
+ switch (physicalType) {
115
+ case ComplexType.GEOMETRY:
116
+ case ComplexType.STRUCT:
117
+ return true;
118
+ default:
119
+ return false;
120
+ }
177
121
  }
178
- const column = {};
179
- column.nullable = (typeCode & 1) !== 0;
180
- column.columnScope = ColumnScope.FEATURE;
181
- const scalarCol = {};
182
- scalarCol.type = "physicalType";
183
- scalarCol.physicalType = scalarType;
184
- column.type = "scalarType";
185
- column.scalarType = scalarCol;
186
- return column;
187
122
  }
123
+ console.warn("Unexpected column type in hasStreamCount", column);
124
+ return false;
125
+ }
126
+ /**
127
+ * Maps a scalar type code to a Column with ScalarType.
128
+ * Type codes 10-29 encode scalar types with nullable flag.
129
+ * Even codes are non-nullable, odd codes are nullable.
130
+ */
131
+ function mapScalarType(typeCode) {
132
+ let scalarType = null;
133
+ switch (typeCode) {
134
+ case 10:
135
+ case 11:
136
+ scalarType = ScalarType.BOOLEAN;
137
+ break;
138
+ case 12:
139
+ case 13:
140
+ scalarType = ScalarType.INT_8;
141
+ break;
142
+ case 14:
143
+ case 15:
144
+ scalarType = ScalarType.UINT_8;
145
+ break;
146
+ case 16:
147
+ case 17:
148
+ scalarType = ScalarType.INT_32;
149
+ break;
150
+ case 18:
151
+ case 19:
152
+ scalarType = ScalarType.UINT_32;
153
+ break;
154
+ case 20:
155
+ case 21:
156
+ scalarType = ScalarType.INT_64;
157
+ break;
158
+ case 22:
159
+ case 23:
160
+ scalarType = ScalarType.UINT_64;
161
+ break;
162
+ case 24:
163
+ case 25:
164
+ scalarType = ScalarType.FLOAT;
165
+ break;
166
+ case 26:
167
+ case 27:
168
+ scalarType = ScalarType.DOUBLE;
169
+ break;
170
+ case 28:
171
+ case 29:
172
+ scalarType = ScalarType.STRING;
173
+ break;
174
+ default:
175
+ return null;
176
+ }
177
+ const column = {};
178
+ column.nullable = (typeCode & 1) !== 0;
179
+ column.columnScope = ColumnScope.FEATURE;
180
+ const scalarCol = {};
181
+ scalarCol.type = "physicalType";
182
+ scalarCol.physicalType = scalarType;
183
+ column.type = "scalarType";
184
+ column.scalarType = scalarCol;
185
+ return column;
188
186
  }
189
187
  //# sourceMappingURL=typeMap.js.map