@loaders.gl/mvt 3.1.0-alpha.3 → 3.1.0-beta.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 (129) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2276 -4
  4. package/dist/es5/bundle.js +7 -0
  5. package/dist/es5/bundle.js.map +1 -0
  6. package/dist/es5/helpers/binary-util-functions.js +95 -0
  7. package/dist/es5/helpers/binary-util-functions.js.map +1 -0
  8. package/dist/es5/helpers/mapbox-util-functions.js +62 -0
  9. package/dist/es5/helpers/mapbox-util-functions.js.map +1 -0
  10. package/dist/es5/index.js +20 -0
  11. package/dist/es5/index.js.map +1 -0
  12. package/dist/{lib → es5/lib}/binary-vector-tile/LICENSE.txt +0 -0
  13. package/dist/es5/lib/binary-vector-tile/features-to-binary.js +338 -0
  14. package/dist/es5/lib/binary-vector-tile/features-to-binary.js.map +1 -0
  15. package/dist/es5/lib/binary-vector-tile/vector-tile-feature.js +162 -0
  16. package/dist/es5/lib/binary-vector-tile/vector-tile-feature.js.map +1 -0
  17. package/dist/es5/lib/binary-vector-tile/vector-tile-layer.js +69 -0
  18. package/dist/es5/lib/binary-vector-tile/vector-tile-layer.js.map +1 -0
  19. package/dist/es5/lib/binary-vector-tile/vector-tile.js +35 -0
  20. package/dist/es5/lib/binary-vector-tile/vector-tile.js.map +1 -0
  21. package/dist/{lib → es5/lib}/mapbox-vector-tile/LICENSE.txt +0 -0
  22. package/dist/es5/lib/mapbox-vector-tile/vector-tile-feature.js +207 -0
  23. package/dist/es5/lib/mapbox-vector-tile/vector-tile-feature.js.map +1 -0
  24. package/dist/es5/lib/mapbox-vector-tile/vector-tile-layer.js +69 -0
  25. package/dist/es5/lib/mapbox-vector-tile/vector-tile-layer.js.map +1 -0
  26. package/dist/es5/lib/mapbox-vector-tile/vector-tile.js +35 -0
  27. package/dist/es5/lib/mapbox-vector-tile/vector-tile.js.map +1 -0
  28. package/dist/es5/lib/parse-mvt.js +129 -0
  29. package/dist/es5/lib/parse-mvt.js.map +1 -0
  30. package/dist/es5/lib/types.js +2 -0
  31. package/dist/{lib → es5/lib}/types.js.map +0 -0
  32. package/dist/es5/mvt-loader.js +38 -0
  33. package/dist/es5/mvt-loader.js.map +1 -0
  34. package/dist/es5/workers/mvt-worker.js +8 -0
  35. package/dist/es5/workers/mvt-worker.js.map +1 -0
  36. package/dist/esm/bundle.js +5 -0
  37. package/dist/esm/bundle.js.map +1 -0
  38. package/dist/esm/helpers/binary-util-functions.js +81 -0
  39. package/dist/esm/helpers/binary-util-functions.js.map +1 -0
  40. package/dist/esm/helpers/mapbox-util-functions.js +49 -0
  41. package/dist/esm/helpers/mapbox-util-functions.js.map +1 -0
  42. package/dist/esm/index.js +2 -0
  43. package/dist/esm/index.js.map +1 -0
  44. package/dist/esm/lib/binary-vector-tile/LICENSE.txt +31 -0
  45. package/dist/esm/lib/binary-vector-tile/features-to-binary.js +327 -0
  46. package/dist/esm/lib/binary-vector-tile/features-to-binary.js.map +1 -0
  47. package/dist/esm/lib/binary-vector-tile/vector-tile-feature.js +156 -0
  48. package/dist/esm/lib/binary-vector-tile/vector-tile-feature.js.map +1 -0
  49. package/dist/esm/lib/binary-vector-tile/vector-tile-layer.js +64 -0
  50. package/dist/esm/lib/binary-vector-tile/vector-tile-layer.js.map +1 -0
  51. package/dist/esm/lib/binary-vector-tile/vector-tile.js +23 -0
  52. package/dist/esm/lib/binary-vector-tile/vector-tile.js.map +1 -0
  53. package/dist/esm/lib/mapbox-vector-tile/LICENSE.txt +31 -0
  54. package/dist/esm/lib/mapbox-vector-tile/vector-tile-feature.js +202 -0
  55. package/dist/esm/lib/mapbox-vector-tile/vector-tile-feature.js.map +1 -0
  56. package/dist/esm/lib/mapbox-vector-tile/vector-tile-layer.js +64 -0
  57. package/dist/esm/lib/mapbox-vector-tile/vector-tile-layer.js.map +1 -0
  58. package/dist/esm/lib/mapbox-vector-tile/vector-tile.js +23 -0
  59. package/dist/esm/lib/mapbox-vector-tile/vector-tile.js.map +1 -0
  60. package/dist/esm/lib/parse-mvt.js +116 -0
  61. package/dist/esm/lib/parse-mvt.js.map +1 -0
  62. package/dist/esm/lib/types.js +2 -0
  63. package/dist/esm/lib/types.js.map +1 -0
  64. package/dist/esm/mvt-loader.js +26 -0
  65. package/dist/esm/mvt-loader.js.map +1 -0
  66. package/dist/esm/workers/mvt-worker.js +4 -0
  67. package/dist/esm/workers/mvt-worker.js.map +1 -0
  68. package/dist/helpers/binary-util-functions.d.ts +39 -0
  69. package/dist/helpers/binary-util-functions.d.ts.map +1 -0
  70. package/dist/helpers/binary-util-functions.js +109 -74
  71. package/dist/helpers/mapbox-util-functions.d.ts +29 -0
  72. package/dist/helpers/mapbox-util-functions.d.ts.map +1 -0
  73. package/dist/helpers/mapbox-util-functions.js +78 -45
  74. package/dist/index.d.ts +2 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +6 -2
  77. package/dist/lib/binary-vector-tile/features-to-binary.d.ts +185 -0
  78. package/dist/lib/binary-vector-tile/features-to-binary.d.ts.map +1 -0
  79. package/dist/lib/binary-vector-tile/features-to-binary.js +323 -297
  80. package/dist/lib/binary-vector-tile/vector-tile-feature.d.ts +36 -0
  81. package/dist/lib/binary-vector-tile/vector-tile-feature.d.ts.map +1 -0
  82. package/dist/lib/binary-vector-tile/vector-tile-feature.js +145 -142
  83. package/dist/lib/binary-vector-tile/vector-tile-layer.d.ts +23 -0
  84. package/dist/lib/binary-vector-tile/vector-tile-layer.d.ts.map +1 -0
  85. package/dist/lib/binary-vector-tile/vector-tile-layer.js +85 -58
  86. package/dist/lib/binary-vector-tile/vector-tile.d.ts +9 -0
  87. package/dist/lib/binary-vector-tile/vector-tile.d.ts.map +1 -0
  88. package/dist/lib/binary-vector-tile/vector-tile.js +25 -19
  89. package/dist/lib/mapbox-vector-tile/vector-tile-feature.d.ts +27 -0
  90. package/dist/lib/mapbox-vector-tile/vector-tile-feature.d.ts.map +1 -0
  91. package/dist/lib/mapbox-vector-tile/vector-tile-feature.js +161 -193
  92. package/dist/lib/mapbox-vector-tile/vector-tile-layer.d.ts +20 -0
  93. package/dist/lib/mapbox-vector-tile/vector-tile-layer.d.ts.map +1 -0
  94. package/dist/lib/mapbox-vector-tile/vector-tile-layer.js +83 -58
  95. package/dist/lib/mapbox-vector-tile/vector-tile.d.ts +9 -0
  96. package/dist/lib/mapbox-vector-tile/vector-tile.d.ts.map +1 -0
  97. package/dist/lib/mapbox-vector-tile/vector-tile.js +25 -19
  98. package/dist/lib/parse-mvt.d.ts +85 -0
  99. package/dist/lib/parse-mvt.d.ts.map +1 -0
  100. package/dist/lib/parse-mvt.js +126 -100
  101. package/dist/lib/types.d.ts +92 -0
  102. package/dist/lib/types.d.ts.map +1 -0
  103. package/dist/lib/types.js +2 -2
  104. package/dist/mvt-loader.d.ts +10 -0
  105. package/dist/mvt-loader.d.ts.map +1 -0
  106. package/dist/mvt-loader.js +42 -23
  107. package/dist/mvt-worker.js +2286 -3
  108. package/dist/workers/mvt-worker.d.ts +2 -0
  109. package/dist/workers/mvt-worker.d.ts.map +1 -0
  110. package/dist/workers/mvt-worker.js +5 -4
  111. package/package.json +9 -9
  112. package/src/lib/parse-mvt.ts +1 -1
  113. package/dist/bundle.js.map +0 -1
  114. package/dist/dist.min.js +0 -4
  115. package/dist/dist.min.js.map +0 -1
  116. package/dist/helpers/binary-util-functions.js.map +0 -1
  117. package/dist/helpers/mapbox-util-functions.js.map +0 -1
  118. package/dist/index.js.map +0 -1
  119. package/dist/lib/binary-vector-tile/features-to-binary.js.map +0 -1
  120. package/dist/lib/binary-vector-tile/vector-tile-feature.js.map +0 -1
  121. package/dist/lib/binary-vector-tile/vector-tile-layer.js.map +0 -1
  122. package/dist/lib/binary-vector-tile/vector-tile.js.map +0 -1
  123. package/dist/lib/mapbox-vector-tile/vector-tile-feature.js.map +0 -1
  124. package/dist/lib/mapbox-vector-tile/vector-tile-layer.js.map +0 -1
  125. package/dist/lib/mapbox-vector-tile/vector-tile.js.map +0 -1
  126. package/dist/lib/parse-mvt.js.map +0 -1
  127. package/dist/mvt-loader.js.map +0 -1
  128. package/dist/mvt-worker.js.map +0 -1
  129. package/dist/workers/mvt-worker.js.map +0 -1
@@ -0,0 +1,162 @@
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 = exports.TEST_EXPORTS = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _binaryUtilFunctions = require("../../helpers/binary-util-functions");
13
+
14
+ let endPos;
15
+ let cmd;
16
+ let cmdLen;
17
+ let length;
18
+ let x;
19
+ let y;
20
+ let i;
21
+ const TEST_EXPORTS = {
22
+ classifyRings: _binaryUtilFunctions.classifyRings
23
+ };
24
+ exports.TEST_EXPORTS = TEST_EXPORTS;
25
+
26
+ class VectorTileFeature {
27
+ static get types() {
28
+ return ['Unknown', 'Point', 'LineString', 'Polygon'];
29
+ }
30
+
31
+ constructor(pbf, end, extent, keys, values, firstPassData) {
32
+ (0, _defineProperty2.default)(this, "properties", void 0);
33
+ (0, _defineProperty2.default)(this, "extent", void 0);
34
+ (0, _defineProperty2.default)(this, "type", void 0);
35
+ (0, _defineProperty2.default)(this, "id", void 0);
36
+ (0, _defineProperty2.default)(this, "_pbf", void 0);
37
+ (0, _defineProperty2.default)(this, "_geometry", void 0);
38
+ (0, _defineProperty2.default)(this, "_keys", void 0);
39
+ (0, _defineProperty2.default)(this, "_values", void 0);
40
+ (0, _defineProperty2.default)(this, "_firstPassData", void 0);
41
+ this.properties = {};
42
+ this.extent = extent;
43
+ this.type = 0;
44
+ this.id = null;
45
+ this._pbf = pbf;
46
+ this._geometry = -1;
47
+ this._keys = keys;
48
+ this._values = values;
49
+ this._firstPassData = firstPassData;
50
+ pbf.readFields(_binaryUtilFunctions.readFeature, this, end);
51
+ }
52
+
53
+ loadGeometry() {
54
+ const pbf = this._pbf;
55
+ pbf.pos = this._geometry;
56
+ endPos = pbf.readVarint() + pbf.pos;
57
+ cmd = 1;
58
+ length = 0;
59
+ x = 0;
60
+ y = 0;
61
+ i = 0;
62
+ const lines = [];
63
+ const data = [];
64
+
65
+ while (pbf.pos < endPos) {
66
+ if (length <= 0) {
67
+ cmdLen = pbf.readVarint();
68
+ cmd = cmdLen & 0x7;
69
+ length = cmdLen >> 3;
70
+ }
71
+
72
+ length--;
73
+
74
+ if (cmd === 1 || cmd === 2) {
75
+ x += pbf.readSVarint();
76
+ y += pbf.readSVarint();
77
+
78
+ if (cmd === 1) {
79
+ lines.push(i);
80
+ }
81
+
82
+ data.push(x, y);
83
+ i += 2;
84
+ } else if (cmd === 7) {
85
+ if (i > 0) {
86
+ const start = lines[lines.length - 1];
87
+ data.push(data[start], data[start + 1]);
88
+ i += 2;
89
+ }
90
+ } else {
91
+ throw new Error("unknown command ".concat(cmd));
92
+ }
93
+ }
94
+
95
+ return {
96
+ data,
97
+ lines
98
+ };
99
+ }
100
+
101
+ _toBinaryCoordinates(transform) {
102
+ let geom = this.loadGeometry();
103
+ transform(geom.data, this);
104
+ const coordLength = 2;
105
+
106
+ switch (this.type) {
107
+ case 1:
108
+ this._firstPassData.pointFeaturesCount++;
109
+ this._firstPassData.pointPositionsCount += geom.lines.length;
110
+ break;
111
+
112
+ case 2:
113
+ this._firstPassData.lineFeaturesCount++;
114
+ this._firstPassData.linePathsCount += geom.lines.length;
115
+ this._firstPassData.linePositionsCount += geom.data.length / coordLength;
116
+ break;
117
+
118
+ case 3:
119
+ const classified = (0, _binaryUtilFunctions.classifyRings)(geom);
120
+ this._firstPassData.polygonFeaturesCount++;
121
+ this._firstPassData.polygonObjectsCount += classified.lines.length;
122
+
123
+ for (const lines of classified.lines) {
124
+ this._firstPassData.polygonRingsCount += lines.length;
125
+ }
126
+
127
+ this._firstPassData.polygonPositionsCount += classified.data.length / coordLength;
128
+ geom = classified;
129
+ break;
130
+ }
131
+
132
+ geom.type = VectorTileFeature.types[this.type];
133
+
134
+ if (geom.lines.length > 1) {
135
+ geom.type = "Multi".concat(geom.type);
136
+ }
137
+
138
+ const result = {
139
+ type: 'Feature',
140
+ geometry: geom,
141
+ properties: this.properties
142
+ };
143
+
144
+ if (this.id !== null) {
145
+ result.id = this.id;
146
+ }
147
+
148
+ return result;
149
+ }
150
+
151
+ toBinaryCoordinates(options) {
152
+ if (typeof options === 'function') {
153
+ return this._toBinaryCoordinates(options);
154
+ }
155
+
156
+ return this._toBinaryCoordinates(_binaryUtilFunctions.project);
157
+ }
158
+
159
+ }
160
+
161
+ exports.default = VectorTileFeature;
162
+ //# sourceMappingURL=vector-tile-feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/binary-vector-tile/vector-tile-feature.ts"],"names":["endPos","cmd","cmdLen","length","x","y","i","TEST_EXPORTS","classifyRings","VectorTileFeature","types","constructor","pbf","end","extent","keys","values","firstPassData","properties","type","id","_pbf","_geometry","_keys","_values","_firstPassData","readFields","readFeature","loadGeometry","pos","readVarint","lines","data","readSVarint","push","start","Error","_toBinaryCoordinates","transform","geom","coordLength","pointFeaturesCount","pointPositionsCount","lineFeaturesCount","linePathsCount","linePositionsCount","classified","polygonFeaturesCount","polygonObjectsCount","polygonRingsCount","polygonPositionsCount","result","geometry","toBinaryCoordinates","options","project"],"mappings":"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","sourcesContent":["// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport Protobuf from 'pbf';\nimport {MvtBinaryCoordinates, MvtBinaryGeometry, MvtFirstPassedData} from '../types';\nimport {classifyRings, project, readFeature} from '../../helpers/binary-util-functions';\n\n// Reduce GC by reusing variables\nlet endPos: number;\nlet cmd: number;\nlet cmdLen: number;\nlet length: number;\nlet x: number;\nlet y: number;\nlet i: number;\n\nexport const TEST_EXPORTS = {\n classifyRings\n};\n\nexport default class VectorTileFeature {\n properties: {[x: string]: string | number | boolean | null};\n extent: any;\n type: number;\n id: number | null;\n _pbf: Protobuf;\n _geometry: number;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n _firstPassData: MvtFirstPassedData;\n static get types() {\n return ['Unknown', 'Point', 'LineString', 'Polygon'];\n }\n\n // eslint-disable-next-line max-params\n constructor(\n pbf: Protobuf,\n end: number,\n extent: any,\n keys: string[],\n values: (string | number | boolean | null)[],\n firstPassData: MvtFirstPassedData\n ) {\n // Public\n this.properties = {};\n this.extent = extent;\n this.type = 0;\n this.id = null;\n\n // Private\n this._pbf = pbf;\n this._geometry = -1;\n this._keys = keys;\n this._values = values;\n this._firstPassData = firstPassData;\n\n pbf.readFields(readFeature, this, end);\n }\n\n // eslint-disable-next-line complexity, max-statements\n loadGeometry(): MvtBinaryGeometry {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n endPos = pbf.readVarint() + pbf.pos;\n cmd = 1;\n length = 0;\n x = 0;\n y = 0;\n i = 0;\n\n // Note: I attempted to replace the `data` array with a\n // Float32Array, but performance was worse, both using\n // `set()` and direct index access. Also, we cannot\n // know how large the buffer should be, so it would\n // increase memory usage\n const lines: number[] = []; // Indices where lines start\n const data: number[] = []; // Flat array of coordinate data\n\n while (pbf.pos < endPos) {\n if (length <= 0) {\n cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) {\n // New line\n lines.push(i);\n }\n data.push(x, y);\n i += 2;\n } else if (cmd === 7) {\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (i > 0) {\n const start = lines[lines.length - 1]; // start index of polygon\n data.push(data[start], data[start + 1]); // closePolygon\n i += 2;\n }\n } else {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n return {data, lines};\n }\n\n /**\n *\n * @param transform\n * @returns result\n */\n _toBinaryCoordinates(transform) {\n // Expands the protobuf data to an intermediate `lines`\n // data format, which maps closely to the binary data buffers.\n // It is similar to GeoJSON, but rather than storing the coordinates\n // in multidimensional arrays, we have a 1D `data` with all the\n // coordinates, and then index into this using the `lines`\n // parameter, e.g.\n //\n // geometry: {\n // type: 'Point', data: [1,2], lines: [0]\n // }\n // geometry: {\n // type: 'LineString', data: [1,2,3,4,...], lines: [0]\n // }\n // geometry: {\n // type: 'Polygon', data: [1,2,3,4,...], lines: [[0, 2]]\n // }\n // Thus the lines member lets us look up the relevant range\n // from the data array.\n // The Multi* versions of the above types share the same data\n // structure, just with multiple elements in the lines array\n let geom = this.loadGeometry();\n\n // Apply the supplied transformation to data\n transform(geom.data, this);\n\n const coordLength = 2;\n\n // eslint-disable-next-line default-case\n switch (this.type) {\n case 1: // Point\n this._firstPassData.pointFeaturesCount++;\n this._firstPassData.pointPositionsCount += geom.lines.length;\n break;\n\n case 2: // LineString\n this._firstPassData.lineFeaturesCount++;\n this._firstPassData.linePathsCount += geom.lines.length;\n this._firstPassData.linePositionsCount += geom.data.length / coordLength;\n break;\n\n case 3: // Polygon\n const classified = classifyRings(geom);\n\n // Unlike Point & LineString geom.lines is a 2D array, thanks\n // to the classifyRings method\n this._firstPassData.polygonFeaturesCount++;\n this._firstPassData.polygonObjectsCount += classified.lines.length;\n\n for (const lines of classified.lines) {\n this._firstPassData.polygonRingsCount += lines.length;\n }\n this._firstPassData.polygonPositionsCount += classified.data.length / coordLength;\n\n geom = classified;\n break;\n }\n\n geom.type = VectorTileFeature.types[this.type];\n if (geom.lines.length > 1) {\n geom.type = `Multi${geom.type}`;\n }\n\n const result: MvtBinaryCoordinates = {\n type: 'Feature',\n geometry: geom,\n properties: this.properties\n };\n\n if (this.id !== null) {\n result.id = this.id;\n }\n\n return result;\n }\n\n toBinaryCoordinates(\n options: {x: number; y: number; z: number} | ((data: number[], feature: {extent: any}) => void)\n ): MvtBinaryCoordinates {\n if (typeof options === 'function') {\n return this._toBinaryCoordinates(options);\n }\n return this._toBinaryCoordinates(project);\n }\n}\n"],"file":"vector-tile-feature.js"}
@@ -0,0 +1,69 @@
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 _vectorTileFeature = _interopRequireDefault(require("./vector-tile-feature"));
13
+
14
+ class VectorTileLayer {
15
+ constructor(pbf, end) {
16
+ (0, _defineProperty2.default)(this, "version", void 0);
17
+ (0, _defineProperty2.default)(this, "name", void 0);
18
+ (0, _defineProperty2.default)(this, "extent", void 0);
19
+ (0, _defineProperty2.default)(this, "length", void 0);
20
+ (0, _defineProperty2.default)(this, "_pbf", void 0);
21
+ (0, _defineProperty2.default)(this, "_keys", void 0);
22
+ (0, _defineProperty2.default)(this, "_values", void 0);
23
+ (0, _defineProperty2.default)(this, "_features", void 0);
24
+ this.version = 1;
25
+ this.name = '';
26
+ this.extent = 4096;
27
+ this.length = 0;
28
+ this._pbf = pbf;
29
+ this._keys = [];
30
+ this._values = [];
31
+ this._features = [];
32
+ pbf.readFields(readLayer, this, end);
33
+ this.length = this._features.length;
34
+ }
35
+
36
+ feature(i, firstPassData) {
37
+ if (i < 0 || i >= this._features.length) {
38
+ throw new Error('feature index out of bounds');
39
+ }
40
+
41
+ this._pbf.pos = this._features[i];
42
+
43
+ const end = this._pbf.readVarint() + this._pbf.pos;
44
+
45
+ return new _vectorTileFeature.default(this._pbf, end, this.extent, this._keys, this._values, firstPassData);
46
+ }
47
+
48
+ }
49
+
50
+ exports.default = VectorTileLayer;
51
+
52
+ function readLayer(tag, layer, pbf) {
53
+ if (layer && pbf) {
54
+ if (tag === 15) layer.version = pbf.readVarint();else if (tag === 1) layer.name = pbf.readString();else if (tag === 5) layer.extent = pbf.readVarint();else if (tag === 2) layer._features.push(pbf.pos);else if (tag === 3) layer._keys.push(pbf.readString());else if (tag === 4) layer._values.push(readValueMessage(pbf));
55
+ }
56
+ }
57
+
58
+ function readValueMessage(pbf) {
59
+ let value = null;
60
+ const end = pbf.readVarint() + pbf.pos;
61
+
62
+ while (pbf.pos < end) {
63
+ const tag = pbf.readVarint() >> 3;
64
+ value = tag === 1 ? pbf.readString() : tag === 2 ? pbf.readFloat() : tag === 3 ? pbf.readDouble() : tag === 4 ? pbf.readVarint64() : tag === 5 ? pbf.readVarint() : tag === 6 ? pbf.readSVarint() : tag === 7 ? pbf.readBoolean() : null;
65
+ }
66
+
67
+ return value;
68
+ }
69
+ //# sourceMappingURL=vector-tile-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/binary-vector-tile/vector-tile-layer.ts"],"names":["VectorTileLayer","constructor","pbf","end","version","name","extent","length","_pbf","_keys","_values","_features","readFields","readLayer","feature","i","firstPassData","Error","pos","readVarint","VectorTileFeature","tag","layer","readString","push","readValueMessage","value","readFloat","readDouble","readVarint64","readSVarint","readBoolean"],"mappings":"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","sourcesContent":["/* eslint-disable indent */\n// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport VectorTileFeature from './vector-tile-feature';\nimport Protobuf from 'pbf';\nimport {MvtFirstPassedData} from '../types';\n\nexport default class VectorTileLayer {\n version: number;\n name: string;\n extent: number;\n length: number;\n _pbf: Protobuf;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n _features: number[];\n constructor(pbf: Protobuf, end: number) {\n // Public\n this.version = 1;\n this.name = '';\n this.extent = 4096;\n this.length = 0;\n\n // Private\n this._pbf = pbf;\n this._keys = [];\n this._values = [];\n this._features = [];\n\n pbf.readFields(readLayer, this, end);\n\n this.length = this._features.length;\n }\n\n /**\n * return feature `i` from this layer as a `VectorTileFeature`\n *\n * @param index\n * @param firstPassData\n * @returns {VectorTileFeature}\n */\n feature(i: number, firstPassData: MvtFirstPassedData): VectorTileFeature {\n if (i < 0 || i >= this._features.length) {\n throw new Error('feature index out of bounds');\n }\n\n this._pbf.pos = this._features[i];\n\n const end = this._pbf.readVarint() + this._pbf.pos;\n return new VectorTileFeature(\n this._pbf,\n end,\n this.extent,\n this._keys,\n this._values,\n firstPassData\n );\n }\n}\n\n/**\n *\n * @param tag\n * @param layer\n * @param pbf\n */\nfunction readLayer(tag: number, layer?: VectorTileLayer, pbf?: Protobuf): void {\n if (layer && pbf) {\n if (tag === 15) layer.version = pbf.readVarint();\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 5) layer.extent = pbf.readVarint();\n else if (tag === 2) layer._features.push(pbf.pos);\n else if (tag === 3) layer._keys.push(pbf.readString());\n else if (tag === 4) layer._values.push(readValueMessage(pbf));\n }\n}\n\n/**\n *\n * @param pbf\n * @returns value\n */\nfunction readValueMessage(pbf: Protobuf) {\n let value: string | number | boolean | null = null;\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const tag = pbf.readVarint() >> 3;\n\n value =\n tag === 1\n ? pbf.readString()\n : tag === 2\n ? pbf.readFloat()\n : tag === 3\n ? pbf.readDouble()\n : tag === 4\n ? pbf.readVarint64()\n : tag === 5\n ? pbf.readVarint()\n : tag === 6\n ? pbf.readSVarint()\n : tag === 7\n ? pbf.readBoolean()\n : null;\n }\n\n return value;\n}\n"],"file":"vector-tile-layer.js"}
@@ -0,0 +1,35 @@
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 _vectorTileLayer = _interopRequireDefault(require("./vector-tile-layer"));
13
+
14
+ class VectorTile {
15
+ constructor(pbf, end) {
16
+ (0, _defineProperty2.default)(this, "layers", void 0);
17
+ this.layers = pbf.readFields(readTile, {}, end);
18
+ }
19
+
20
+ }
21
+
22
+ exports.default = VectorTile;
23
+
24
+ function readTile(tag, layers, pbf) {
25
+ if (tag === 3) {
26
+ if (pbf) {
27
+ const layer = new _vectorTileLayer.default(pbf, pbf.readVarint() + pbf.pos);
28
+
29
+ if (layer.length && layers) {
30
+ layers[layer.name] = layer;
31
+ }
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=vector-tile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/binary-vector-tile/vector-tile.ts"],"names":["VectorTile","constructor","pbf","end","layers","readFields","readTile","tag","layer","VectorTileLayer","readVarint","pos","length","name"],"mappings":";;;;;;;;;;;AAEA;;AAGe,MAAMA,UAAN,CAAiB;AAE9BC,EAAAA,WAAW,CAACC,GAAD,EAAgBC,GAAhB,EAA8B;AAAA;AACvC,SAAKC,MAAL,GAAcF,GAAG,CAACG,UAAJ,CAAeC,QAAf,EAAyB,EAAzB,EAA6BH,GAA7B,CAAd;AACD;;AAJ6B;;;;AAahC,SAASG,QAAT,CAAkBC,GAAlB,EAA+BH,MAA/B,EAAwEF,GAAxE,EAA8F;AAC5F,MAAIK,GAAG,KAAK,CAAZ,EAAe;AACb,QAAIL,GAAJ,EAAS;AACP,YAAMM,KAAK,GAAG,IAAIC,wBAAJ,CAAoBP,GAApB,EAAyBA,GAAG,CAACQ,UAAJ,KAAmBR,GAAG,CAACS,GAAhD,CAAd;;AACA,UAAIH,KAAK,CAACI,MAAN,IAAgBR,MAApB,EAA4B;AAC1BA,QAAAA,MAAM,CAACI,KAAK,CAACK,IAAP,CAAN,GAAqBL,KAArB;AACD;AACF;AACF;AACF","sourcesContent":["// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport VectorTileLayer from './vector-tile-layer';\nimport Protobuf from 'pbf';\n\nexport default class VectorTile {\n layers: {[x: string]: VectorTileLayer};\n constructor(pbf: Protobuf, end?: number) {\n this.layers = pbf.readFields(readTile, {}, end);\n }\n}\n\n/**\n *\n * @param tag\n * @param layers\n * @param pbf\n */\nfunction readTile(tag: number, layers?: {[x: string]: VectorTileLayer}, pbf?: Protobuf): void {\n if (tag === 3) {\n if (pbf) {\n const layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);\n if (layer.length && layers) {\n layers[layer.name] = layer;\n }\n }\n }\n}\n"],"file":"vector-tile.js"}
@@ -0,0 +1,207 @@
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 _mapboxUtilFunctions = require("../../helpers/mapbox-util-functions");
13
+
14
+ class VectorTileFeature {
15
+ static get types() {
16
+ return ['Unknown', 'Point', 'LineString', 'Polygon'];
17
+ }
18
+
19
+ constructor(pbf, end, extent, keys, values) {
20
+ (0, _defineProperty2.default)(this, "properties", void 0);
21
+ (0, _defineProperty2.default)(this, "extent", void 0);
22
+ (0, _defineProperty2.default)(this, "type", void 0);
23
+ (0, _defineProperty2.default)(this, "id", void 0);
24
+ (0, _defineProperty2.default)(this, "_pbf", void 0);
25
+ (0, _defineProperty2.default)(this, "_geometry", void 0);
26
+ (0, _defineProperty2.default)(this, "_keys", void 0);
27
+ (0, _defineProperty2.default)(this, "_values", void 0);
28
+ this.properties = {};
29
+ this.extent = extent;
30
+ this.type = 0;
31
+ this.id = null;
32
+ this._pbf = pbf;
33
+ this._geometry = -1;
34
+ this._keys = keys;
35
+ this._values = values;
36
+ pbf.readFields(_mapboxUtilFunctions.readFeature, this, end);
37
+ }
38
+
39
+ loadGeometry() {
40
+ const pbf = this._pbf;
41
+ pbf.pos = this._geometry;
42
+ const end = pbf.readVarint() + pbf.pos;
43
+ let cmd = 1;
44
+ let length = 0;
45
+ let x = 0;
46
+ let y = 0;
47
+ const lines = [];
48
+ let line;
49
+
50
+ while (pbf.pos < end) {
51
+ if (length <= 0) {
52
+ const cmdLen = pbf.readVarint();
53
+ cmd = cmdLen & 0x7;
54
+ length = cmdLen >> 3;
55
+ }
56
+
57
+ length--;
58
+
59
+ if (cmd === 1 || cmd === 2) {
60
+ x += pbf.readSVarint();
61
+ y += pbf.readSVarint();
62
+
63
+ if (cmd === 1) {
64
+ if (line) lines.push(line);
65
+ line = [];
66
+ }
67
+
68
+ if (line) line.push([x, y]);
69
+ } else if (cmd === 7) {
70
+ if (line) {
71
+ line.push(line[0].slice());
72
+ }
73
+ } else {
74
+ throw new Error("unknown command ".concat(cmd));
75
+ }
76
+ }
77
+
78
+ if (line) lines.push(line);
79
+ return lines;
80
+ }
81
+
82
+ bbox() {
83
+ const pbf = this._pbf;
84
+ pbf.pos = this._geometry;
85
+ const end = pbf.readVarint() + pbf.pos;
86
+ let cmd = 1;
87
+ let length = 0;
88
+ let x = 0;
89
+ let y = 0;
90
+ let x1 = Infinity;
91
+ let x2 = -Infinity;
92
+ let y1 = Infinity;
93
+ let y2 = -Infinity;
94
+
95
+ while (pbf.pos < end) {
96
+ if (length <= 0) {
97
+ const cmdLen = pbf.readVarint();
98
+ cmd = cmdLen & 0x7;
99
+ length = cmdLen >> 3;
100
+ }
101
+
102
+ length--;
103
+
104
+ if (cmd === 1 || cmd === 2) {
105
+ x += pbf.readSVarint();
106
+ y += pbf.readSVarint();
107
+ if (x < x1) x1 = x;
108
+ if (x > x2) x2 = x;
109
+ if (y < y1) y1 = y;
110
+ if (y > y2) y2 = y;
111
+ } else if (cmd !== 7) {
112
+ throw new Error("unknown command ".concat(cmd));
113
+ }
114
+ }
115
+
116
+ return [x1, y1, x2, y2];
117
+ }
118
+
119
+ _toGeoJSON(transform) {
120
+ let coords = this.loadGeometry();
121
+ let type = VectorTileFeature.types[this.type];
122
+ let i;
123
+ let j;
124
+
125
+ switch (this.type) {
126
+ case 1:
127
+ const points = [];
128
+
129
+ for (i = 0; i < coords.length; i++) {
130
+ points[i] = coords[i][0];
131
+ }
132
+
133
+ coords = points;
134
+ transform(coords, this);
135
+ break;
136
+
137
+ case 2:
138
+ for (i = 0; i < coords.length; i++) {
139
+ transform(coords[i], this);
140
+ }
141
+
142
+ break;
143
+
144
+ case 3:
145
+ coords = (0, _mapboxUtilFunctions.classifyRings)(coords);
146
+
147
+ for (i = 0; i < coords.length; i++) {
148
+ for (j = 0; j < coords[i].length; j++) {
149
+ transform(coords[i][j], this);
150
+ }
151
+ }
152
+
153
+ break;
154
+ }
155
+
156
+ if (coords.length === 1) {
157
+ coords = coords[0];
158
+ } else {
159
+ type = "Multi".concat(type);
160
+ }
161
+
162
+ const result = {
163
+ type: 'Feature',
164
+ geometry: {
165
+ type,
166
+ coordinates: coords
167
+ },
168
+ properties: this.properties
169
+ };
170
+
171
+ if (this.id !== null) {
172
+ result.id = this.id;
173
+ }
174
+
175
+ return result;
176
+ }
177
+
178
+ toGeoJSON(options) {
179
+ if (typeof options === 'function') {
180
+ return this._toGeoJSON(options);
181
+ }
182
+
183
+ const {
184
+ x,
185
+ y,
186
+ z
187
+ } = options;
188
+ const size = this.extent * Math.pow(2, z);
189
+ const x0 = this.extent * x;
190
+ const y0 = this.extent * y;
191
+
192
+ function project(line) {
193
+ for (let j = 0; j < line.length; j++) {
194
+ const p = line[j];
195
+ p[0] = (p[0] + x0) * 360 / size - 180;
196
+ const y2 = 180 - (p[1] + y0) * 360 / size;
197
+ p[1] = 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90;
198
+ }
199
+ }
200
+
201
+ return this._toGeoJSON(project);
202
+ }
203
+
204
+ }
205
+
206
+ exports.default = VectorTileFeature;
207
+ //# sourceMappingURL=vector-tile-feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/mapbox-vector-tile/vector-tile-feature.ts"],"names":["VectorTileFeature","types","constructor","pbf","end","extent","keys","values","properties","type","id","_pbf","_geometry","_keys","_values","readFields","readFeature","loadGeometry","pos","readVarint","cmd","length","x","y","lines","line","cmdLen","readSVarint","push","slice","Error","bbox","x1","Infinity","x2","y1","y2","_toGeoJSON","transform","coords","i","j","points","result","geometry","coordinates","toGeoJSON","options","z","size","Math","pow","x0","y0","project","p","PI","atan","exp"],"mappings":"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","sourcesContent":["// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\nimport Protobuf from 'pbf';\nimport {MvtMapboxCoordinates, MvtMapboxGeometry} from '../types';\nimport {readFeature, classifyRings} from '../../helpers/mapbox-util-functions';\n\nexport default class VectorTileFeature {\n properties: {[x: string]: string | number | boolean | null};\n extent: any;\n type: number;\n id: number | null;\n _pbf: Protobuf;\n _geometry: number;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n static get types() {\n return ['Unknown', 'Point', 'LineString', 'Polygon'];\n }\n\n constructor(\n pbf: Protobuf,\n end: number,\n extent: any,\n keys: string[],\n values: (string | number | boolean | null)[]\n ) {\n // Public\n this.properties = {};\n this.extent = extent;\n this.type = 0;\n this.id = null;\n\n // Private\n this._pbf = pbf;\n this._geometry = -1;\n this._keys = keys;\n this._values = values;\n\n pbf.readFields(readFeature, this, end);\n }\n\n // eslint-disable-next-line complexity, max-statements\n loadGeometry(): MvtMapboxGeometry {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n const end = pbf.readVarint() + pbf.pos;\n let cmd = 1;\n let length = 0;\n let x = 0;\n let y = 0;\n const lines: number[][][] = [];\n let line: number[][] | undefined;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n const cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) {\n // moveTo\n if (line) lines.push(line);\n line = [];\n }\n if (line) line.push([x, y]);\n } else if (cmd === 7) {\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (line) {\n line.push(line[0].slice()); // closePolygon\n }\n } else {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n if (line) lines.push(line);\n\n return lines;\n }\n\n // eslint-disable-next-line max-statements\n bbox() {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n const end = pbf.readVarint() + pbf.pos;\n let cmd = 1;\n let length = 0;\n let x = 0;\n let y = 0;\n let x1 = Infinity;\n let x2 = -Infinity;\n let y1 = Infinity;\n let y2 = -Infinity;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n const cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n if (x < x1) x1 = x;\n if (x > x2) x2 = x;\n if (y < y1) y1 = y;\n if (y > y2) y2 = y;\n } else if (cmd !== 7) {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n return [x1, y1, x2, y2];\n }\n\n _toGeoJSON(transform) {\n let coords = this.loadGeometry();\n let type = VectorTileFeature.types[this.type];\n let i: number;\n let j: number;\n\n // eslint-disable-next-line default-case\n switch (this.type) {\n case 1:\n const points: number[] = [];\n for (i = 0; i < coords.length; i++) {\n points[i] = coords[i][0];\n }\n coords = points;\n transform(coords, this);\n break;\n\n case 2:\n for (i = 0; i < coords.length; i++) {\n transform(coords[i], this);\n }\n break;\n\n case 3:\n coords = classifyRings(coords);\n for (i = 0; i < coords.length; i++) {\n for (j = 0; j < coords[i].length; j++) {\n transform(coords[i][j], this);\n }\n }\n break;\n }\n\n if (coords.length === 1) {\n coords = coords[0];\n } else {\n type = `Multi${type}`;\n }\n\n const result: MvtMapboxCoordinates = {\n type: 'Feature',\n geometry: {\n type,\n coordinates: coords\n },\n properties: this.properties\n };\n\n if (this.id !== null) {\n result.id = this.id;\n }\n\n return result;\n }\n\n toGeoJSON(\n options: {x: number; y: number; z: number} | ((data: number[], feature: {extent: any}) => void)\n ): MvtMapboxCoordinates {\n if (typeof options === 'function') {\n return this._toGeoJSON(options);\n }\n const {x, y, z} = options;\n const size = this.extent * Math.pow(2, z);\n const x0 = this.extent * x;\n const y0 = this.extent * y;\n\n function project(line: number[]) {\n for (let j = 0; j < line.length; j++) {\n const p = line[j];\n p[0] = ((p[0] + x0) * 360) / size - 180;\n const y2 = 180 - ((p[1] + y0) * 360) / size;\n p[1] = (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;\n }\n }\n return this._toGeoJSON(project);\n }\n}\n"],"file":"vector-tile-feature.js"}
@@ -0,0 +1,69 @@
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 _vectorTileFeature = _interopRequireDefault(require("./vector-tile-feature"));
13
+
14
+ class VectorTileLayer {
15
+ constructor(pbf, end) {
16
+ (0, _defineProperty2.default)(this, "version", void 0);
17
+ (0, _defineProperty2.default)(this, "name", void 0);
18
+ (0, _defineProperty2.default)(this, "extent", void 0);
19
+ (0, _defineProperty2.default)(this, "length", void 0);
20
+ (0, _defineProperty2.default)(this, "_pbf", void 0);
21
+ (0, _defineProperty2.default)(this, "_keys", void 0);
22
+ (0, _defineProperty2.default)(this, "_values", void 0);
23
+ (0, _defineProperty2.default)(this, "_features", void 0);
24
+ this.version = 1;
25
+ this.name = '';
26
+ this.extent = 4096;
27
+ this.length = 0;
28
+ this._pbf = pbf;
29
+ this._keys = [];
30
+ this._values = [];
31
+ this._features = [];
32
+ pbf.readFields(readLayer, this, end);
33
+ this.length = this._features.length;
34
+ }
35
+
36
+ feature(i) {
37
+ if (i < 0 || i >= this._features.length) {
38
+ throw new Error('feature index out of bounds');
39
+ }
40
+
41
+ this._pbf.pos = this._features[i];
42
+
43
+ const end = this._pbf.readVarint() + this._pbf.pos;
44
+
45
+ return new _vectorTileFeature.default(this._pbf, end, this.extent, this._keys, this._values);
46
+ }
47
+
48
+ }
49
+
50
+ exports.default = VectorTileLayer;
51
+
52
+ function readLayer(tag, layer, pbf) {
53
+ if (layer && pbf) {
54
+ if (tag === 15) layer.version = pbf.readVarint();else if (tag === 1) layer.name = pbf.readString();else if (tag === 5) layer.extent = pbf.readVarint();else if (tag === 2) layer._features.push(pbf.pos);else if (tag === 3) layer._keys.push(pbf.readString());else if (tag === 4) layer._values.push(readValueMessage(pbf));
55
+ }
56
+ }
57
+
58
+ function readValueMessage(pbf) {
59
+ let value = null;
60
+ const end = pbf.readVarint() + pbf.pos;
61
+
62
+ while (pbf.pos < end) {
63
+ const tag = pbf.readVarint() >> 3;
64
+ value = tag === 1 ? pbf.readString() : tag === 2 ? pbf.readFloat() : tag === 3 ? pbf.readDouble() : tag === 4 ? pbf.readVarint64() : tag === 5 ? pbf.readVarint() : tag === 6 ? pbf.readSVarint() : tag === 7 ? pbf.readBoolean() : null;
65
+ }
66
+
67
+ return value;
68
+ }
69
+ //# sourceMappingURL=vector-tile-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/mapbox-vector-tile/vector-tile-layer.ts"],"names":["VectorTileLayer","constructor","pbf","end","version","name","extent","length","_pbf","_keys","_values","_features","readFields","readLayer","feature","i","Error","pos","readVarint","VectorTileFeature","tag","layer","readString","push","readValueMessage","value","readFloat","readDouble","readVarint64","readSVarint","readBoolean"],"mappings":"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","sourcesContent":["/* eslint-disable indent */\n// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport Protobuf from 'pbf';\nimport VectorTileFeature from './vector-tile-feature';\n\nexport default class VectorTileLayer {\n version: number;\n name: string;\n extent: number;\n length: number;\n _pbf: Protobuf;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n _features: number[];\n constructor(pbf: Protobuf, end: number) {\n // Public\n this.version = 1;\n this.name = '';\n this.extent = 4096;\n this.length = 0;\n\n // Private\n this._pbf = pbf;\n this._keys = [];\n this._values = [];\n this._features = [];\n\n pbf.readFields(readLayer, this, end);\n\n this.length = this._features.length;\n }\n\n /**\n * return feature `i` from this layer as a `VectorTileFeature`\n * @param index\n * @returns feature\n */\n\n feature(i: number): VectorTileFeature {\n if (i < 0 || i >= this._features.length) {\n throw new Error('feature index out of bounds');\n }\n\n this._pbf.pos = this._features[i];\n\n const end = this._pbf.readVarint() + this._pbf.pos;\n return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);\n }\n}\n\n/**\n *\n * @param tag\n * @param layer\n * @param pbf\n */\nfunction readLayer(tag: number, layer?: VectorTileLayer, pbf?: Protobuf): void {\n if (layer && pbf) {\n if (tag === 15) layer.version = pbf.readVarint();\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 5) layer.extent = pbf.readVarint();\n else if (tag === 2) layer._features.push(pbf.pos);\n else if (tag === 3) layer._keys.push(pbf.readString());\n else if (tag === 4) layer._values.push(readValueMessage(pbf));\n }\n}\n\n/**\n *\n * @param pbf\n * @returns value\n */\nfunction readValueMessage(pbf: Protobuf) {\n let value: string | number | boolean | null = null;\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const tag = pbf.readVarint() >> 3;\n\n value =\n tag === 1\n ? pbf.readString()\n : tag === 2\n ? pbf.readFloat()\n : tag === 3\n ? pbf.readDouble()\n : tag === 4\n ? pbf.readVarint64()\n : tag === 5\n ? pbf.readVarint()\n : tag === 6\n ? pbf.readSVarint()\n : tag === 7\n ? pbf.readBoolean()\n : null;\n }\n\n return value;\n}\n"],"file":"vector-tile-layer.js"}
@@ -0,0 +1,35 @@
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 _vectorTileLayer = _interopRequireDefault(require("./vector-tile-layer"));
13
+
14
+ class VectorTile {
15
+ constructor(pbf, end) {
16
+ (0, _defineProperty2.default)(this, "layers", void 0);
17
+ this.layers = pbf.readFields(readTile, {}, end);
18
+ }
19
+
20
+ }
21
+
22
+ exports.default = VectorTile;
23
+
24
+ function readTile(tag, layers, pbf) {
25
+ if (tag === 3) {
26
+ if (pbf) {
27
+ const layer = new _vectorTileLayer.default(pbf, pbf.readVarint() + pbf.pos);
28
+
29
+ if (layer.length && layers) {
30
+ layers[layer.name] = layer;
31
+ }
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=vector-tile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/mapbox-vector-tile/vector-tile.ts"],"names":["VectorTile","constructor","pbf","end","layers","readFields","readTile","tag","layer","VectorTileLayer","readVarint","pos","length","name"],"mappings":";;;;;;;;;;;AAEA;;AAGe,MAAMA,UAAN,CAAiB;AAE9BC,EAAAA,WAAW,CAACC,GAAD,EAAgBC,GAAhB,EAA8B;AAAA;AACvC,SAAKC,MAAL,GAAcF,GAAG,CAACG,UAAJ,CAAeC,QAAf,EAAyB,EAAzB,EAA6BH,GAA7B,CAAd;AACD;;AAJ6B;;;;AAahC,SAASG,QAAT,CAAkBC,GAAlB,EAA+BH,MAA/B,EAAwEF,GAAxE,EAA8F;AAC5F,MAAIK,GAAG,KAAK,CAAZ,EAAe;AACb,QAAIL,GAAJ,EAAS;AACP,YAAMM,KAAK,GAAG,IAAIC,wBAAJ,CAAoBP,GAApB,EAAyBA,GAAG,CAACQ,UAAJ,KAAmBR,GAAG,CAACS,GAAhD,CAAd;;AACA,UAAIH,KAAK,CAACI,MAAN,IAAgBR,MAApB,EAA4B;AAC1BA,QAAAA,MAAM,CAACI,KAAK,CAACK,IAAP,CAAN,GAAqBL,KAArB;AACD;AACF;AACF;AACF","sourcesContent":["// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport VectorTileLayer from './vector-tile-layer';\nimport Protobuf from 'pbf';\n\nexport default class VectorTile {\n layers: {[x: string]: VectorTileLayer};\n constructor(pbf: Protobuf, end?: number) {\n this.layers = pbf.readFields(readTile, {}, end);\n }\n}\n\n/**\n *\n * @param tag\n * @param layers\n * @param pbf\n */\nfunction readTile(tag: number, layers?: {[x: string]: VectorTileLayer}, pbf?: Protobuf): void {\n if (tag === 3) {\n if (pbf) {\n const layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);\n if (layer.length && layers) {\n layers[layer.name] = layer;\n }\n }\n }\n}\n"],"file":"vector-tile.js"}