@loaders.gl/mvt 3.1.0-alpha.3 → 4.0.0-alpha.4

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.
@@ -84,7 +84,7 @@ export default class VectorTileFeature {
84
84
  i += 2;
85
85
  }
86
86
  } else {
87
- throw new Error(`unknown command ${cmd}`);
87
+ throw new Error("unknown command ".concat(cmd));
88
88
  }
89
89
  }
90
90
 
@@ -128,7 +128,7 @@ export default class VectorTileFeature {
128
128
  geom.type = VectorTileFeature.types[this.type];
129
129
 
130
130
  if (geom.lines.length > 1) {
131
- geom.type = `Multi${geom.type}`;
131
+ geom.type = "Multi".concat(geom.type);
132
132
  }
133
133
 
134
134
  const result = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/binary-vector-tile/vector-tile-feature.ts"],"names":["classifyRings","project","readFeature","endPos","cmd","cmdLen","length","x","y","i","TEST_EXPORTS","VectorTileFeature","types","constructor","pbf","end","extent","keys","values","firstPassData","properties","type","id","_pbf","_geometry","_keys","_values","_firstPassData","readFields","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"],"mappings":";AAIA,SAAQA,aAAR,EAAuBC,OAAvB,EAAgCC,WAAhC,QAAkD,qCAAlD;AAGA,IAAIC,MAAJ;AACA,IAAIC,GAAJ;AACA,IAAIC,MAAJ;AACA,IAAIC,MAAJ;AACA,IAAIC,CAAJ;AACA,IAAIC,CAAJ;AACA,IAAIC,CAAJ;AAEA,OAAO,MAAMC,YAAY,GAAG;AAC1BV,EAAAA;AAD0B,CAArB;AAIP,eAAe,MAAMW,iBAAN,CAAwB;AAUrB,aAALC,KAAK,GAAG;AACjB,WAAO,CAAC,SAAD,EAAY,OAAZ,EAAqB,YAArB,EAAmC,SAAnC,CAAP;AACD;;AAGDC,EAAAA,WAAW,CACTC,GADS,EAETC,GAFS,EAGTC,MAHS,EAITC,IAJS,EAKTC,MALS,EAMTC,aANS,EAOT;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAEA,SAAKC,UAAL,GAAkB,EAAlB;AACA,SAAKJ,MAAL,GAAcA,MAAd;AACA,SAAKK,IAAL,GAAY,CAAZ;AACA,SAAKC,EAAL,GAAU,IAAV;AAGA,SAAKC,IAAL,GAAYT,GAAZ;AACA,SAAKU,SAAL,GAAiB,CAAC,CAAlB;AACA,SAAKC,KAAL,GAAaR,IAAb;AACA,SAAKS,OAAL,GAAeR,MAAf;AACA,SAAKS,cAAL,GAAsBR,aAAtB;AAEAL,IAAAA,GAAG,CAACc,UAAJ,CAAe1B,WAAf,EAA4B,IAA5B,EAAkCa,GAAlC;AACD;;AAGDc,EAAAA,YAAY,GAAsB;AAChC,UAAMf,GAAG,GAAG,KAAKS,IAAjB;AACAT,IAAAA,GAAG,CAACgB,GAAJ,GAAU,KAAKN,SAAf;AAEArB,IAAAA,MAAM,GAAGW,GAAG,CAACiB,UAAJ,KAAmBjB,GAAG,CAACgB,GAAhC;AACA1B,IAAAA,GAAG,GAAG,CAAN;AACAE,IAAAA,MAAM,GAAG,CAAT;AACAC,IAAAA,CAAC,GAAG,CAAJ;AACAC,IAAAA,CAAC,GAAG,CAAJ;AACAC,IAAAA,CAAC,GAAG,CAAJ;AAOA,UAAMuB,KAAe,GAAG,EAAxB;AACA,UAAMC,IAAc,GAAG,EAAvB;;AAEA,WAAOnB,GAAG,CAACgB,GAAJ,GAAU3B,MAAjB,EAAyB;AACvB,UAAIG,MAAM,IAAI,CAAd,EAAiB;AACfD,QAAAA,MAAM,GAAGS,GAAG,CAACiB,UAAJ,EAAT;AACA3B,QAAAA,GAAG,GAAGC,MAAM,GAAG,GAAf;AACAC,QAAAA,MAAM,GAAGD,MAAM,IAAI,CAAnB;AACD;;AAEDC,MAAAA,MAAM;;AAEN,UAAIF,GAAG,KAAK,CAAR,IAAaA,GAAG,KAAK,CAAzB,EAA4B;AAC1BG,QAAAA,CAAC,IAAIO,GAAG,CAACoB,WAAJ,EAAL;AACA1B,QAAAA,CAAC,IAAIM,GAAG,CAACoB,WAAJ,EAAL;;AAEA,YAAI9B,GAAG,KAAK,CAAZ,EAAe;AAEb4B,UAAAA,KAAK,CAACG,IAAN,CAAW1B,CAAX;AACD;;AACDwB,QAAAA,IAAI,CAACE,IAAL,CAAU5B,CAAV,EAAaC,CAAb;AACAC,QAAAA,CAAC,IAAI,CAAL;AACD,OAVD,MAUO,IAAIL,GAAG,KAAK,CAAZ,EAAe;AAEpB,YAAIK,CAAC,GAAG,CAAR,EAAW;AACT,gBAAM2B,KAAK,GAAGJ,KAAK,CAACA,KAAK,CAAC1B,MAAN,GAAe,CAAhB,CAAnB;AACA2B,UAAAA,IAAI,CAACE,IAAL,CAAUF,IAAI,CAACG,KAAD,CAAd,EAAuBH,IAAI,CAACG,KAAK,GAAG,CAAT,CAA3B;AACA3B,UAAAA,CAAC,IAAI,CAAL;AACD;AACF,OAPM,MAOA;AACL,cAAM,IAAI4B,KAAJ,CAAW,mBAAkBjC,GAAI,EAAjC,CAAN;AACD;AACF;;AAED,WAAO;AAAC6B,MAAAA,IAAD;AAAOD,MAAAA;AAAP,KAAP;AACD;;AAODM,EAAAA,oBAAoB,CAACC,SAAD,EAAY;AAqB9B,QAAIC,IAAI,GAAG,KAAKX,YAAL,EAAX;AAGAU,IAAAA,SAAS,CAACC,IAAI,CAACP,IAAN,EAAY,IAAZ,CAAT;AAEA,UAAMQ,WAAW,GAAG,CAApB;;AAGA,YAAQ,KAAKpB,IAAb;AACE,WAAK,CAAL;AACE,aAAKM,cAAL,CAAoBe,kBAApB;AACA,aAAKf,cAAL,CAAoBgB,mBAApB,IAA2CH,IAAI,CAACR,KAAL,CAAW1B,MAAtD;AACA;;AAEF,WAAK,CAAL;AACE,aAAKqB,cAAL,CAAoBiB,iBAApB;AACA,aAAKjB,cAAL,CAAoBkB,cAApB,IAAsCL,IAAI,CAACR,KAAL,CAAW1B,MAAjD;AACA,aAAKqB,cAAL,CAAoBmB,kBAApB,IAA0CN,IAAI,CAACP,IAAL,CAAU3B,MAAV,GAAmBmC,WAA7D;AACA;;AAEF,WAAK,CAAL;AACE,cAAMM,UAAU,GAAG/C,aAAa,CAACwC,IAAD,CAAhC;AAIA,aAAKb,cAAL,CAAoBqB,oBAApB;AACA,aAAKrB,cAAL,CAAoBsB,mBAApB,IAA2CF,UAAU,CAACf,KAAX,CAAiB1B,MAA5D;;AAEA,aAAK,MAAM0B,KAAX,IAAoBe,UAAU,CAACf,KAA/B,EAAsC;AACpC,eAAKL,cAAL,CAAoBuB,iBAApB,IAAyClB,KAAK,CAAC1B,MAA/C;AACD;;AACD,aAAKqB,cAAL,CAAoBwB,qBAApB,IAA6CJ,UAAU,CAACd,IAAX,CAAgB3B,MAAhB,GAAyBmC,WAAtE;AAEAD,QAAAA,IAAI,GAAGO,UAAP;AACA;AA1BJ;;AA6BAP,IAAAA,IAAI,CAACnB,IAAL,GAAYV,iBAAiB,CAACC,KAAlB,CAAwB,KAAKS,IAA7B,CAAZ;;AACA,QAAImB,IAAI,CAACR,KAAL,CAAW1B,MAAX,GAAoB,CAAxB,EAA2B;AACzBkC,MAAAA,IAAI,CAACnB,IAAL,GAAa,QAAOmB,IAAI,CAACnB,IAAK,EAA9B;AACD;;AAED,UAAM+B,MAA4B,GAAG;AACnC/B,MAAAA,IAAI,EAAE,SAD6B;AAEnCgC,MAAAA,QAAQ,EAAEb,IAFyB;AAGnCpB,MAAAA,UAAU,EAAE,KAAKA;AAHkB,KAArC;;AAMA,QAAI,KAAKE,EAAL,KAAY,IAAhB,EAAsB;AACpB8B,MAAAA,MAAM,CAAC9B,EAAP,GAAY,KAAKA,EAAjB;AACD;;AAED,WAAO8B,MAAP;AACD;;AAEDE,EAAAA,mBAAmB,CACjBC,OADiB,EAEK;AACtB,QAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;AACjC,aAAO,KAAKjB,oBAAL,CAA0BiB,OAA1B,CAAP;AACD;;AACD,WAAO,KAAKjB,oBAAL,CAA0BrC,OAA1B,CAAP;AACD;;AArLoC","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"}
1
+ {"version":3,"sources":["../../../src/lib/binary-vector-tile/vector-tile-feature.ts"],"names":["classifyRings","project","readFeature","endPos","cmd","cmdLen","length","x","y","i","TEST_EXPORTS","VectorTileFeature","types","constructor","pbf","end","extent","keys","values","firstPassData","properties","type","id","_pbf","_geometry","_keys","_values","_firstPassData","readFields","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"],"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"}
@@ -68,7 +68,7 @@ export default class VectorTileFeature {
68
68
  line.push(line[0].slice());
69
69
  }
70
70
  } else {
71
- throw new Error(`unknown command ${cmd}`);
71
+ throw new Error("unknown command ".concat(cmd));
72
72
  }
73
73
  }
74
74
 
@@ -106,7 +106,7 @@ export default class VectorTileFeature {
106
106
  if (y < y1) y1 = y;
107
107
  if (y > y2) y2 = y;
108
108
  } else if (cmd !== 7) {
109
- throw new Error(`unknown command ${cmd}`);
109
+ throw new Error("unknown command ".concat(cmd));
110
110
  }
111
111
  }
112
112
 
@@ -153,7 +153,7 @@ export default class VectorTileFeature {
153
153
  if (coords.length === 1) {
154
154
  coords = coords[0];
155
155
  } else {
156
- type = `Multi${type}`;
156
+ type = "Multi".concat(type);
157
157
  }
158
158
 
159
159
  const result = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/mapbox-vector-tile/vector-tile-feature.ts"],"names":["readFeature","classifyRings","VectorTileFeature","types","constructor","pbf","end","extent","keys","values","properties","type","id","_pbf","_geometry","_keys","_values","readFields","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"}
1
+ {"version":3,"sources":["../../../src/lib/mapbox-vector-tile/vector-tile-feature.ts"],"names":["readFeature","classifyRings","VectorTileFeature","types","constructor","pbf","end","extent","keys","values","properties","type","id","_pbf","_geometry","_keys","_values","readFields","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"}
@@ -1,5 +1,5 @@
1
1
  import parseMVT from './lib/parse-mvt';
2
- const VERSION = typeof "3.1.0-alpha.3" !== 'undefined' ? "3.1.0-alpha.3" : 'latest';
2
+ const VERSION = typeof "4.0.0-alpha.4" !== 'undefined' ? "4.0.0-alpha.4" : 'latest';
3
3
  export const MVTWorkerLoader = {
4
4
  name: 'Mapbox Vector Tile',
5
5
  id: 'mvt',