diff --git a/build/buildConfig.js b/build/buildConfig.js index 61127206ad..4a55aea202 100644 --- a/build/buildConfig.js +++ b/build/buildConfig.js @@ -68,7 +68,6 @@ module.exports = (bundles, themeEntries, paths, extractThemesPlugin, prod, publi } }), new NormalModuleReplacementPlugin(/leaflet$/, path.join(paths.framework, "libs", "leaflet")), - new NormalModuleReplacementPlugin(/openlayers$/, path.join(paths.framework, "libs", "openlayers")), new NormalModuleReplacementPlugin(/proj4$/, path.join(paths.framework, "libs", "proj4")), new NoEmitOnErrorsPlugin(), extractThemesPlugin diff --git a/package-lock.json b/package-lock.json index 424040f75c..4c158be99e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.4.tgz", "integrity": "sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==", "requires": { - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "0.13.2" }, "dependencies": { "regenerator-runtime": { @@ -37,7 +37,7 @@ "resolved": "https://registry.npmjs.org/@mapbox/geojsonhint/-/geojsonhint-2.0.1.tgz", "integrity": "sha1-MtrHMA8Es+uux0tbqYU9+0JTI1Q=", "requires": { - "concat-stream": "~1.5.1", + "concat-stream": "1.5.2", "jsonlint-lines": "1.7.1", "minimist": "1.2.0", "vfile": "2.0.0", @@ -49,9 +49,125 @@ "resolved": "https://registry.npmjs.org/@mapbox/togeojson/-/togeojson-0.16.0.tgz", "integrity": "sha1-WygwAQeEMYIdx04oesr1ahHOs3w=", "requires": { - "concat-stream": "~1.5.1", + "concat-stream": "1.5.2", "minimist": "1.2.0", - "xmldom": "~0.1.19" + "xmldom": "0.1.27" + } + }, + "@terrestris/base-util": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@terrestris/base-util/-/base-util-0.1.4.tgz", + "integrity": "sha512-LlGiKWCxBNthY9ktwoIpZ3BWVmdB4Ok5NJcp2U+Km5TFmTXiR7FD4y16Dt5YuY7Cd+nxjRgJzQxytY51z67H8Q==", + "requires": { + "lodash": "4.17.11", + "loglevel": "1.6.1", + "query-string": "5.1.1", + "url-parse": "1.4.4", + "validator": "10.11.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "url-parse": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "requires": { + "querystringify": "2.1.1", + "requires-port": "1.0.0" + } + } + } + }, + "@terrestris/ol-util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@terrestris/ol-util/-/ol-util-3.0.0.tgz", + "integrity": "sha512-5cNFdZAzf++m6gv2dZ5XyVT2QmOmb3Hwml4QgNaTjWyU3yvpi5vNqdVhUHgP5sSJDDM1pIIZLSJwDV4s2dmjow==", + "requires": { + "@terrestris/base-util": "0.1.4", + "@turf/turf": "5.1.6", + "lodash": "4.17.11", + "proj4": "2.5.0", + "shpjs": "3.4.3" + }, + "dependencies": { + "jszip": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", + "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", + "requires": { + "pako": "1.0.10" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "proj4": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.5.0.tgz", + "integrity": "sha512-XZTRT7OPdLzgvtTqL8DG2cEj8lYdovztOwiwpwRSYayOty5Ipf3H68dh/fiL+HKDEyetmQSMhkkMGiJoyziz3w==", + "requires": { + "mgrs": "1.0.0", + "wkt-parser": "https://github.com/geosolutions-it/wkt-parser/tarball/mapstore2_fixes" + } + }, + "shpjs": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/shpjs/-/shpjs-3.4.3.tgz", + "integrity": "sha512-NZM75+SLgPt9dK91Z92QK+fVd2OR6zswAmkTrkHRc4mnONbAWGo38I+AxCYsKgCNfqF5cZUi2KfO7r2TZ+tHdw==", + "requires": { + "jszip": "2.6.1", + "lie": "3.1.1", + "lru-cache": "2.7.3", + "parsedbf": "1.0.0", + "proj4": "2.5.0" + } + } + } + }, + "@turf/along": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/along/-/along-5.1.5.tgz", + "integrity": "sha1-YdbmplhKzdq1asVYTge/jL5fi+s=", + "requires": { + "@turf/bearing": "5.1.5", + "@turf/destination": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5" + } + }, + "@turf/area": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-5.1.5.tgz", + "integrity": "sha1-79iZv9Jgzb0VQbKjwVX4pdLu+h0=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } } }, "@turf/bbox": { @@ -59,7 +175,17 @@ "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-4.1.0.tgz", "integrity": "sha1-YlmN3briG9pM73SGfLiuO1+DvlM=", "requires": { - "@turf/meta": "^4.1.0" + "@turf/meta": "4.7.4" + } + }, + "@turf/bbox-clip": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-5.1.5.tgz", + "integrity": "sha1-M2S1Mo3/nzz0HZ4C7a/zdNFQzIQ=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "lineclip": "1.1.5" } }, "@turf/bbox-polygon": { @@ -67,7 +193,7 @@ "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-5.1.5.tgz", "integrity": "sha1-auuk7VHYXSluD3w4uIwznwHu4CQ=", "requires": { - "@turf/helpers": "^5.1.5" + "@turf/helpers": "5.1.5" } }, "@turf/bearing": { @@ -75,8 +201,26 @@ "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-5.1.5.tgz", "integrity": "sha1-egt5ATbE70eX8CRjBdRcvi0ns/c=", "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5" + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/bezier-spline": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-5.1.5.tgz", + "integrity": "sha1-WaJ7ul17l+8Vqz/VpA+9I4cEm8o=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/boolean-clockwise": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-5.1.5.tgz", + "integrity": "sha1-MwK32sYsXikaB4nimvcoM4f6nes=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" } }, "@turf/boolean-contains": { @@ -84,11 +228,11 @@ "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-5.1.5.tgz", "integrity": "sha1-WW1jruY2961T7pn5/yTJaZSg7xQ=", "requires": { - "@turf/bbox": "^5.1.5", - "@turf/boolean-point-in-polygon": "^5.1.5", - "@turf/boolean-point-on-line": "^5.1.5", - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5" + "@turf/bbox": "5.1.5", + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/boolean-point-on-line": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" }, "dependencies": { "@turf/bbox": { @@ -96,8 +240,8 @@ "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", "requires": { - "@turf/helpers": "^5.1.5", - "@turf/meta": "^5.1.5" + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" } }, "@turf/meta": { @@ -105,22 +249,21 @@ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", "requires": { - "@turf/helpers": "^5.1.5" + "@turf/helpers": "5.1.5" } } } }, - "@turf/boolean-overlap": { + "@turf/boolean-crosses": { "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-5.1.5.tgz", - "integrity": "sha1-DU5kxSx3CijpPZ7834qLg3OsznU=", - "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5", - "@turf/line-intersect": "^5.1.5", - "@turf/line-overlap": "^5.1.5", - "@turf/meta": "^5.1.5", - "geojson-equality": "0.1.6" + "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-5.1.5.tgz", + "integrity": "sha1-Ab+uollvFk3kpNMlCU3HwlXHFdY=", + "requires": { + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-intersect": "5.1.5", + "@turf/polygon-to-line": "5.1.5" }, "dependencies": { "@turf/line-intersect": { @@ -128,10 +271,10 @@ "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-5.1.5.tgz", "integrity": "sha1-DikHGuQDKV5JFyO8SfXPrI0R3fM=", "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5", - "@turf/line-segment": "^5.1.5", - "@turf/meta": "^5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-segment": "5.1.5", + "@turf/meta": "5.2.0", "geojson-rbush": "2.1.0" } }, @@ -140,9 +283,9 @@ "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz", "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=", "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5", - "@turf/meta": "^5.1.5" + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" } }, "@turf/meta": { @@ -150,7 +293,7 @@ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", "requires": { - "@turf/helpers": "^5.1.5" + "@turf/helpers": "5.1.5" } }, "geojson-rbush": { @@ -158,176 +301,45 @@ "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-2.1.0.tgz", "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=", "requires": { - "@turf/helpers": "*", - "@turf/meta": "*", - "rbush": "*" + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "rbush": "2.0.2" } } } }, - "@turf/boolean-point-in-polygon": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz", - "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=", - "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5" - } - }, - "@turf/boolean-point-on-line": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-5.1.5.tgz", - "integrity": "sha1-9jPF/4Aq0ku48Vja269v9KAj3Xs=", - "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5" - } - }, - "@turf/center": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/center/-/center-5.1.5.tgz", - "integrity": "sha1-RKss2VT2PA03dX9xWKmcPvURS4A=", + "@turf/boolean-disjoint": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-5.1.6.tgz", + "integrity": "sha512-KHvUS6SBNYHBCLIJEJrg04pF5Oy+Fqn8V5G9U+9pti5vI9tyX7Ln2g7RSB7iJ1Cxsz8QAi6OukhXjEF2/8ZpGg==", "requires": { - "@turf/bbox": "^5.1.5", - "@turf/helpers": "^5.1.5" + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/line-intersect": "5.1.5", + "@turf/meta": "5.2.0", + "@turf/polygon-to-line": "5.1.5" }, "dependencies": { - "@turf/bbox": { + "@turf/line-intersect": { "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", - "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", - "requires": { - "@turf/helpers": "^5.1.5", - "@turf/meta": "^5.1.5" - } - }, - "@turf/meta": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", - "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-5.1.5.tgz", + "integrity": "sha1-DikHGuQDKV5JFyO8SfXPrI0R3fM=", "requires": { - "@turf/helpers": "^5.1.5" + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-segment": "5.1.5", + "@turf/meta": "5.2.0", + "geojson-rbush": "2.1.0" } - } - } - }, - "@turf/destination": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-5.1.5.tgz", - "integrity": "sha1-7TU4G9zoO73cvQei4rzivd/7zCY=", - "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5" - } - }, - "@turf/distance": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz", - "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=", - "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5" - } - }, - "@turf/explode": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-4.7.3.tgz", - "integrity": "sha1-9+LvslrqA0EMzh6YFlhLqU/JGEY=", - "requires": { - "@turf/helpers": "^4.7.3", - "@turf/meta": "^4.7.3" - }, - "dependencies": { - "@turf/helpers": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-4.7.3.tgz", - "integrity": "sha1-vDEqxDyrPFMqSDFRxMOCxWSUKek=" - } - } - }, - "@turf/great-circle": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-5.1.5.tgz", - "integrity": "sha1-3r+2cc5HVQnLY3MBwV/PzPo1mpM=", - "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5" - } - }, - "@turf/helpers": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz", - "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8=" - }, - "@turf/inside": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@turf/inside/-/inside-4.1.0.tgz", - "integrity": "sha1-0zIidYVLcxxNeP/AaFbcWbEgCYU=", - "requires": { - "@turf/invariant": "^4.1.0" - }, - "dependencies": { - "@turf/invariant": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-4.7.3.tgz", - "integrity": "sha1-U482fSPBE/yEnXDJpSS4Vjh0YB0=" - } - } - }, - "@turf/invariant": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz", - "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=", - "requires": { - "@turf/helpers": "^5.1.5" - } - }, - "@turf/line-intersect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-4.1.0.tgz", - "integrity": "sha1-GvjT1w0mPgJf41tBuGWmJlCLSoQ=", - "requires": { - "@turf/helpers": "^4.1.0", - "@turf/invariant": "^4.1.0", - "@turf/line-segment": "^4.1.0", - "@turf/meta": "^4.1.0", - "geojson-rbush": "^1.0.1" - }, - "dependencies": { - "@turf/helpers": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-4.7.3.tgz", - "integrity": "sha1-vDEqxDyrPFMqSDFRxMOCxWSUKek=" }, - "@turf/invariant": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-4.7.3.tgz", - "integrity": "sha1-U482fSPBE/yEnXDJpSS4Vjh0YB0=" - } - } - }, - "@turf/line-overlap": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-5.1.5.tgz", - "integrity": "sha1-lDxvh6A4bcQ9+sEdKz/5wRLNP2A=", - "requires": { - "@turf/boolean-point-on-line": "^5.1.5", - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5", - "@turf/line-segment": "^5.1.5", - "@turf/meta": "^5.1.5", - "@turf/nearest-point-on-line": "^5.1.5", - "geojson-rbush": "2.1.0" - }, - "dependencies": { "@turf/line-segment": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz", "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=", "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5", - "@turf/meta": "^5.1.5" + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" } }, "@turf/meta": { @@ -335,7 +347,7 @@ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", "requires": { - "@turf/helpers": "^5.1.5" + "@turf/helpers": "5.1.5" } }, "geojson-rbush": { @@ -343,52 +355,35 @@ "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-2.1.0.tgz", "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=", "requires": { - "@turf/helpers": "*", - "@turf/meta": "*", - "rbush": "*" + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "rbush": "2.0.2" } } } }, - "@turf/line-segment": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-4.7.3.tgz", - "integrity": "sha1-dx9x+mU9jmu8Wo2JIoMWPpSzTXo=", + "@turf/boolean-equal": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-5.1.5.tgz", + "integrity": "sha1-Kfj21gu4RQff12WzIlTbjnLJOKQ=", "requires": { - "@turf/helpers": "^4.7.3", - "@turf/invariant": "^4.7.3", - "@turf/meta": "^4.7.3" - }, - "dependencies": { - "@turf/helpers": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-4.7.3.tgz", - "integrity": "sha1-vDEqxDyrPFMqSDFRxMOCxWSUKek=" - }, - "@turf/invariant": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-4.7.3.tgz", - "integrity": "sha1-U482fSPBE/yEnXDJpSS4Vjh0YB0=" - } + "@turf/clean-coords": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "geojson-equality": "0.1.6" } }, - "@turf/meta": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-4.7.4.tgz", - "integrity": "sha1-beLx6YkLj2S2aeS0fAmyCJMGOXc=" - }, - "@turf/nearest-point-on-line": { + "@turf/boolean-overlap": { "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-5.1.5.tgz", - "integrity": "sha1-VgauKX8VlHUkvqUaKp71HsG/nDY=", + "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-5.1.5.tgz", + "integrity": "sha1-DU5kxSx3CijpPZ7834qLg3OsznU=", "requires": { - "@turf/bearing": "^5.1.5", - "@turf/destination": "^5.1.5", - "@turf/distance": "^5.1.5", - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5", - "@turf/line-intersect": "^5.1.5", - "@turf/meta": "^5.1.5" + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-intersect": "5.1.5", + "@turf/line-overlap": "5.1.5", + "@turf/meta": "5.2.0", + "geojson-equality": "0.1.6" }, "dependencies": { "@turf/line-intersect": { @@ -396,10 +391,10 @@ "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-5.1.5.tgz", "integrity": "sha1-DikHGuQDKV5JFyO8SfXPrI0R3fM=", "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5", - "@turf/line-segment": "^5.1.5", - "@turf/meta": "^5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-segment": "5.1.5", + "@turf/meta": "5.2.0", "geojson-rbush": "2.1.0" } }, @@ -408,9 +403,9 @@ "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz", "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=", "requires": { - "@turf/helpers": "^5.1.5", - "@turf/invariant": "^5.1.5", - "@turf/meta": "^5.1.5" + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" } }, "@turf/meta": { @@ -418,7 +413,7 @@ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", "requires": { - "@turf/helpers": "^5.1.5" + "@turf/helpers": "5.1.5" } }, "geojson-rbush": { @@ -426,82 +421,2138 @@ "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-2.1.0.tgz", "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=", "requires": { - "@turf/helpers": "*", - "@turf/meta": "*", - "rbush": "*" + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "rbush": "2.0.2" } } } }, - "@turf/point-on-surface": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@turf/point-on-surface/-/point-on-surface-4.1.0.tgz", - "integrity": "sha1-XHBWHlQv221InE11W6cLBLcygVY=", + "@turf/boolean-parallel": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-5.1.5.tgz", + "integrity": "sha1-c5NYR16ltlx+GCejw+DopofTqF0=", "requires": { - "@turf/center": "^4.1.0", - "@turf/distance": "^4.1.0", - "@turf/explode": "^4.1.0", - "@turf/helpers": "^4.1.0", - "@turf/inside": "^4.1.0" + "@turf/clean-coords": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/line-segment": "5.1.5", + "@turf/rhumb-bearing": "5.1.5" }, "dependencies": { - "@turf/bbox": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-4.7.3.tgz", - "integrity": "sha1-461PEKfptBtSKIDTMIMZgZkFkGc=", + "@turf/line-segment": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz", + "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=", "requires": { - "@turf/meta": "^4.7.3" + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" } }, - "@turf/center": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/center/-/center-4.7.3.tgz", - "integrity": "sha1-dE5cZSp7G70OHuPwXjDd5D4qNaQ=", + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", "requires": { - "@turf/bbox": "^4.7.3", - "@turf/helpers": "^4.7.3" + "@turf/helpers": "5.1.5" } - }, - "@turf/distance": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-4.7.3.tgz", - "integrity": "sha1-tatIoJpkJwbWXDm5GUM9XSzFcbE=", + } + } + }, + "@turf/boolean-point-in-polygon": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-5.1.5.tgz", + "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/boolean-point-on-line": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-5.1.5.tgz", + "integrity": "sha1-9jPF/4Aq0ku48Vja269v9KAj3Xs=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/boolean-within": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-5.1.5.tgz", + "integrity": "sha1-RxBdVtB1Kp0Pv81Dw2pfkUnchpc=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/boolean-point-on-line": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/buffer": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-5.1.5.tgz", + "integrity": "sha1-hByWJ8+5dLEirE4alW8EZrwCMcQ=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/center": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "@turf/projection": "5.1.5", + "d3-geo": "1.7.1", + "turf-jsts": "1.2.3" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/center": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/center/-/center-5.1.5.tgz", + "integrity": "sha1-RKss2VT2PA03dX9xWKmcPvURS4A=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/helpers": "5.1.5" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/center-mean": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-5.1.5.tgz", + "integrity": "sha1-jI6YdTkeXwnw5uePXWYbiLIQigo=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/center-median": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-5.1.5.tgz", + "integrity": "sha1-u0Yb/noqSGAdikcnaFcYcjoUqHI=", + "requires": { + "@turf/center-mean": "5.1.5", + "@turf/centroid": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/center-of-mass": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-5.1.5.tgz", + "integrity": "sha1-TTvXnYhJjbq4Mk1PafAyL2Uguco=", + "requires": { + "@turf/centroid": "5.1.5", + "@turf/convex": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/centroid": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-5.1.5.tgz", + "integrity": "sha1-d4radCFjNQIa2P0OemWoNJ1Tx2k=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/circle": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-6.0.1.tgz", + "integrity": "sha512-pF9XsYtCvY9ZyNqJ3hFYem9VaiGdVNQb0SFq/zzDMwH3iWZPPJQHnnDB/3e8RD1VDtBBov9p5uO2k7otsfezjw==", + "requires": { + "@turf/destination": "6.0.1", + "@turf/helpers": "6.1.4" + }, + "dependencies": { + "@turf/destination": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.0.1.tgz", + "integrity": "sha512-MroK4nRdp7as174miCAugp8Uvorhe6rZ7MJiC9Hb4+hZR7gNFJyVKmkdDDXIoCYs6MJQsx0buI+gsCpKwgww0Q==", "requires": { - "@turf/helpers": "^4.7.3", - "@turf/invariant": "^4.7.3" + "@turf/helpers": "6.1.4", + "@turf/invariant": "6.1.2" } }, "@turf/helpers": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-4.7.3.tgz", - "integrity": "sha1-vDEqxDyrPFMqSDFRxMOCxWSUKek=" + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.1.4.tgz", + "integrity": "sha512-vJvrdOZy1ngC7r3MDA7zIGSoIgyrkWcGnNIEaqn/APmw+bVLF2gAW7HIsdTxd12s5wQMqEpqIQrmrbRRZ0xC7g==" }, "@turf/invariant": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-4.7.3.tgz", - "integrity": "sha1-U482fSPBE/yEnXDJpSS4Vjh0YB0=" + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.1.2.tgz", + "integrity": "sha512-WU08Ph8j0J2jVGlQCKChXoCtI50BB3yEH21V++V0T4cR1T27HKCxkehV2sYMwTierfMBgjwSwDIsxnR4/2mWXg==", + "requires": { + "@turf/helpers": "6.1.4" + } + } + } + }, + "@turf/clean-coords": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-5.1.5.tgz", + "integrity": "sha1-EoAKmKeMmkUqcuxChJPEOs8q2h8=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/clone": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-5.1.5.tgz", + "integrity": "sha1-JT6NNUdxgZduM636tQoPAqfw42c=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "@turf/clusters": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-5.1.5.tgz", + "integrity": "sha1-ZzpeXxsZycq6vFfJCO6t1oIiTdQ=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/clusters-dbscan": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-5.1.5.tgz", + "integrity": "sha1-V4H7TmVsdHoLjpk333MYHAMJ4m8=", + "requires": { + "@turf/clone": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0", + "density-clustering": "1.3.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/clusters-kmeans": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-5.1.5.tgz", + "integrity": "sha1-/W3+qLEzuovcI3CsPKzuFYejAvE=", + "requires": { + "@turf/clone": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0", + "skmeans": "0.9.7" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/collect": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-5.1.5.tgz", + "integrity": "sha1-/pjJqMIY7PJP/DPXApUXt8GbKj4=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/helpers": "5.1.5", + "rbush": "2.0.2" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/combine": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-5.1.5.tgz", + "integrity": "sha1-uxS976VVBDVxlfwaEkzX1TqMiQU=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/concave": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-5.1.5.tgz", + "integrity": "sha1-I7uqw4fQNLlldKG9cNBZI3qdIRA=", + "requires": { + "@turf/clone": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0", + "@turf/tin": "5.1.5", + "topojson-client": "3.0.0", + "topojson-server": "3.0.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/convex": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-5.1.5.tgz", + "integrity": "sha1-Dfk3fdACIWzpghsH9wXgN9rj4B0=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "concaveman": "1.1.1" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/destination": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-5.1.5.tgz", + "integrity": "sha1-7TU4G9zoO73cvQei4rzivd/7zCY=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/difference": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-5.1.5.tgz", + "integrity": "sha1-ok1pCnvKgD8QkKnuO52Qb8Q3H0I=", + "requires": { + "@turf/area": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0", + "turf-jsts": "1.2.3" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/dissolve": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-5.1.5.tgz", + "integrity": "sha1-LPEzqQIdIWODHD16lY1lB/nYGTg=", + "requires": { + "@turf/boolean-overlap": "5.1.5", + "@turf/clone": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-intersect": "5.1.5", + "@turf/meta": "5.2.0", + "@turf/union": "5.1.5", + "geojson-rbush": "2.1.0", + "get-closest": "0.0.4" + }, + "dependencies": { + "@turf/line-intersect": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-5.1.5.tgz", + "integrity": "sha1-DikHGuQDKV5JFyO8SfXPrI0R3fM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-segment": "5.1.5", + "@turf/meta": "5.2.0", + "geojson-rbush": "2.1.0" + } + }, + "@turf/line-segment": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz", + "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "geojson-rbush": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-2.1.0.tgz", + "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "rbush": "2.0.2" + } + } + } + }, + "@turf/distance": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-5.1.5.tgz", + "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/ellipse": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-5.1.5.tgz", + "integrity": "sha1-1XyrhTmFkgzeYCKKeNgEWAJcVL4=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/rhumb-destination": "5.1.5", + "@turf/transform-rotate": "5.1.5" + } + }, + "@turf/envelope": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-5.1.5.tgz", + "integrity": "sha1-UBMwnFP91D369LWIplw/7X28EIo=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/bbox-polygon": "5.1.5", + "@turf/helpers": "5.1.5" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/explode": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-4.7.3.tgz", + "integrity": "sha1-9+LvslrqA0EMzh6YFlhLqU/JGEY=", + "requires": { + "@turf/helpers": "4.7.3", + "@turf/meta": "4.7.4" + }, + "dependencies": { + "@turf/helpers": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-4.7.3.tgz", + "integrity": "sha1-vDEqxDyrPFMqSDFRxMOCxWSUKek=" + } + } + }, + "@turf/flatten": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-5.1.5.tgz", + "integrity": "sha1-2iknBnEz7WFpsLnWB7khVoiqE1g=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/flip": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-5.1.5.tgz", + "integrity": "sha1-Q29kOnIvDKU7n85jjkaT2zYIpoo=", + "requires": { + "@turf/clone": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/great-circle": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-5.1.5.tgz", + "integrity": "sha1-3r+2cc5HVQnLY3MBwV/PzPo1mpM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/helpers": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz", + "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8=" + }, + "@turf/hex-grid": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-5.1.5.tgz", + "integrity": "sha1-m3ul/s9QUfHoWJL3E/zlxVBQKmo=", + "requires": { + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/intersect": "5.1.6", + "@turf/invariant": "5.2.0" + } + }, + "@turf/inside": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@turf/inside/-/inside-4.1.0.tgz", + "integrity": "sha1-0zIidYVLcxxNeP/AaFbcWbEgCYU=", + "requires": { + "@turf/invariant": "4.7.3" + }, + "dependencies": { + "@turf/invariant": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-4.7.3.tgz", + "integrity": "sha1-U482fSPBE/yEnXDJpSS4Vjh0YB0=" + } + } + }, + "@turf/interpolate": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-5.1.5.tgz", + "integrity": "sha1-DxLwq3VtbdEK+ykMpuh3ve8BPqo=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/centroid": "5.1.5", + "@turf/clone": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/hex-grid": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0", + "@turf/point-grid": "5.1.5", + "@turf/square-grid": "5.1.5", + "@turf/triangle-grid": "5.1.5" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/intersect": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-5.1.6.tgz", + "integrity": "sha512-KXyNv/GXdoGAOy03qZF53rgtXC2tNhF/4jLwTKiVRrBQH6kcEpipGStdJ+QkYIlarQPa8f7I9UlVAB19et4MfQ==", + "requires": { + "@turf/clean-coords": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/truncate": "5.1.5", + "turf-jsts": "1.2.3" + } + }, + "@turf/invariant": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.2.0.tgz", + "integrity": "sha1-8BUP9ykLOFd7c9CIt5MsHuCqkKc=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "@turf/isobands": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-5.1.5.tgz", + "integrity": "sha1-a0TO9YTVUaMTBBh68jtKFYLj8I0=", + "requires": { + "@turf/area": "5.1.5", + "@turf/bbox": "5.1.5", + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/explode": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/explode": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-5.1.5.tgz", + "integrity": "sha1-sSsvd0AEobSPYrqVsgocZVo94Rg=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/isolines": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-5.1.5.tgz", + "integrity": "sha1-irTn9Cuz38VGFOW/FVln9+VdLeE=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/kinks": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-5.1.5.tgz", + "integrity": "sha1-irtpYdm7AQchO63fLCwmQNAlaYA=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "@turf/length": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/length/-/length-5.1.5.tgz", + "integrity": "sha1-86X4ZMK5lqi7RxeUU1ofrxLuvvs=", + "requires": { + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/line-arc": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-5.1.5.tgz", + "integrity": "sha1-AHinRHg1oSrkFKIR+aZNEYYVDhU=", + "requires": { + "@turf/circle": "5.1.5", + "@turf/destination": "5.1.5", + "@turf/helpers": "5.1.5" + }, + "dependencies": { + "@turf/circle": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-5.1.5.tgz", + "integrity": "sha1-mxV3g1UIq1L7HBCypQZcuiuHtqU=", + "requires": { + "@turf/destination": "5.1.5", + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/line-chunk": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-5.1.5.tgz", + "integrity": "sha1-kQqFwFwG2dD5w4l3oF4IGNUIXEI=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/length": "5.1.5", + "@turf/line-slice-along": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/line-intersect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-4.1.0.tgz", + "integrity": "sha1-GvjT1w0mPgJf41tBuGWmJlCLSoQ=", + "requires": { + "@turf/helpers": "4.7.3", + "@turf/invariant": "4.7.3", + "@turf/line-segment": "4.7.3", + "@turf/meta": "4.7.4", + "geojson-rbush": "1.2.0" + }, + "dependencies": { + "@turf/helpers": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-4.7.3.tgz", + "integrity": "sha1-vDEqxDyrPFMqSDFRxMOCxWSUKek=" + }, + "@turf/invariant": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-4.7.3.tgz", + "integrity": "sha1-U482fSPBE/yEnXDJpSS4Vjh0YB0=" + } + } + }, + "@turf/line-offset": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-5.1.5.tgz", + "integrity": "sha1-KrWy8In4yRPiMdmUN4553KkLWh4=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/line-overlap": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-5.1.5.tgz", + "integrity": "sha1-lDxvh6A4bcQ9+sEdKz/5wRLNP2A=", + "requires": { + "@turf/boolean-point-on-line": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-segment": "5.1.5", + "@turf/meta": "5.2.0", + "@turf/nearest-point-on-line": "5.1.5", + "geojson-rbush": "2.1.0" + }, + "dependencies": { + "@turf/line-segment": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz", + "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "geojson-rbush": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-2.1.0.tgz", + "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "rbush": "2.0.2" + } + } + } + }, + "@turf/line-segment": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-4.7.3.tgz", + "integrity": "sha1-dx9x+mU9jmu8Wo2JIoMWPpSzTXo=", + "requires": { + "@turf/helpers": "4.7.3", + "@turf/invariant": "4.7.3", + "@turf/meta": "4.7.4" + }, + "dependencies": { + "@turf/helpers": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-4.7.3.tgz", + "integrity": "sha1-vDEqxDyrPFMqSDFRxMOCxWSUKek=" + }, + "@turf/invariant": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-4.7.3.tgz", + "integrity": "sha1-U482fSPBE/yEnXDJpSS4Vjh0YB0=" + } + } + }, + "@turf/line-slice": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-5.1.5.tgz", + "integrity": "sha1-Hs/OFGKjeFeXVM7fRGTN4mgp8rU=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/nearest-point-on-line": "5.1.5" + } + }, + "@turf/line-slice-along": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-5.1.5.tgz", + "integrity": "sha1-7drQoh70efKWihG9LdcomiEy6aU=", + "requires": { + "@turf/bearing": "5.1.5", + "@turf/destination": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5" + } + }, + "@turf/line-split": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-5.1.5.tgz", + "integrity": "sha1-Wy30w3YZty73JbUWPPmSbVVArLc=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-intersect": "5.1.5", + "@turf/line-segment": "5.1.5", + "@turf/meta": "5.2.0", + "@turf/nearest-point-on-line": "5.1.5", + "@turf/square": "5.1.5", + "@turf/truncate": "5.1.5", + "geojson-rbush": "2.1.0" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/line-intersect": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-5.1.5.tgz", + "integrity": "sha1-DikHGuQDKV5JFyO8SfXPrI0R3fM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-segment": "5.1.5", + "@turf/meta": "5.2.0", + "geojson-rbush": "2.1.0" + } + }, + "@turf/line-segment": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz", + "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "geojson-rbush": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-2.1.0.tgz", + "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "rbush": "2.0.2" + } + } + } + }, + "@turf/line-to-polygon": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-5.1.5.tgz", + "integrity": "sha1-ITz0Gmj4Ikd4ujnTGH3sPouBhlo=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/mask": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-5.1.5.tgz", + "integrity": "sha1-mrD+8aJyyY/j70kvn/thggayQtU=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "@turf/union": "5.1.5", + "rbush": "2.0.2" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/meta": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-4.7.4.tgz", + "integrity": "sha1-beLx6YkLj2S2aeS0fAmyCJMGOXc=" + }, + "@turf/midpoint": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-5.1.5.tgz", + "integrity": "sha1-4mH2srDqgSTM7/VSomLdRlydBfA=", + "requires": { + "@turf/bearing": "5.1.5", + "@turf/destination": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5" + } + }, + "@turf/nearest-point": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-5.1.5.tgz", + "integrity": "sha1-EgUN5Bw5hEMiTHl43g9iE5ANNPs=", + "requires": { + "@turf/clone": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/nearest-point-on-line": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-5.1.5.tgz", + "integrity": "sha1-VgauKX8VlHUkvqUaKp71HsG/nDY=", + "requires": { + "@turf/bearing": "5.1.5", + "@turf/destination": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-intersect": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/line-intersect": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-5.1.5.tgz", + "integrity": "sha1-DikHGuQDKV5JFyO8SfXPrI0R3fM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-segment": "5.1.5", + "@turf/meta": "5.2.0", + "geojson-rbush": "2.1.0" + } + }, + "@turf/line-segment": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz", + "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "geojson-rbush": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-2.1.0.tgz", + "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "rbush": "2.0.2" + } + } + } + }, + "@turf/nearest-point-to-line": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-5.1.6.tgz", + "integrity": "sha512-ZSvDIEiHhifn/vNwLXZI/E8xmEz5yBPqfUR7BVHRZrB1cP7jLhKZvkbidjG//uW8Fr1Ulc+PFOXczLspIcx/lw==", + "requires": { + "@turf/helpers": "6.1.4", + "@turf/invariant": "6.1.2", + "@turf/meta": "6.0.2", + "@turf/point-to-line-distance": "5.1.6", + "object-assign": "4.1.1" + }, + "dependencies": { + "@turf/helpers": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.1.4.tgz", + "integrity": "sha512-vJvrdOZy1ngC7r3MDA7zIGSoIgyrkWcGnNIEaqn/APmw+bVLF2gAW7HIsdTxd12s5wQMqEpqIQrmrbRRZ0xC7g==" + }, + "@turf/invariant": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.1.2.tgz", + "integrity": "sha512-WU08Ph8j0J2jVGlQCKChXoCtI50BB3yEH21V++V0T4cR1T27HKCxkehV2sYMwTierfMBgjwSwDIsxnR4/2mWXg==", + "requires": { + "@turf/helpers": "6.1.4" + } + }, + "@turf/meta": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.0.2.tgz", + "integrity": "sha512-VA7HJkx7qF1l3+GNGkDVn2oXy4+QoLP6LktXAaZKjuT1JI0YESat7quUkbCMy4zP9lAUuvS4YMslLyTtr919FA==", + "requires": { + "@turf/helpers": "6.1.4" + } + } + } + }, + "@turf/planepoint": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-5.1.5.tgz", + "integrity": "sha1-GLvfAG91ne9eQsagBsn53oGyt/8=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/point-grid": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-5.1.5.tgz", + "integrity": "sha1-MFFBJI9Quv42zn5mukuX56sjaIc=", + "requires": { + "@turf/boolean-within": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/point-on-feature": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-5.1.5.tgz", + "integrity": "sha1-MMfwMkMCd8ZBjZbSieRba/shP+c=", + "requires": { + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/center": "5.1.5", + "@turf/explode": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/nearest-point": "5.1.5" + }, + "dependencies": { + "@turf/explode": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-5.1.5.tgz", + "integrity": "sha1-sSsvd0AEobSPYrqVsgocZVo94Rg=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/point-on-surface": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@turf/point-on-surface/-/point-on-surface-4.1.0.tgz", + "integrity": "sha1-XHBWHlQv221InE11W6cLBLcygVY=", + "requires": { + "@turf/center": "4.7.3", + "@turf/distance": "4.7.3", + "@turf/explode": "4.7.3", + "@turf/helpers": "4.7.3", + "@turf/inside": "4.1.0" + }, + "dependencies": { + "@turf/bbox": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-4.7.3.tgz", + "integrity": "sha1-461PEKfptBtSKIDTMIMZgZkFkGc=", + "requires": { + "@turf/meta": "4.7.4" + } + }, + "@turf/center": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/center/-/center-4.7.3.tgz", + "integrity": "sha1-dE5cZSp7G70OHuPwXjDd5D4qNaQ=", + "requires": { + "@turf/bbox": "4.7.3", + "@turf/helpers": "4.7.3" + } + }, + "@turf/distance": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-4.7.3.tgz", + "integrity": "sha1-tatIoJpkJwbWXDm5GUM9XSzFcbE=", + "requires": { + "@turf/helpers": "4.7.3", + "@turf/invariant": "4.7.3" + } + }, + "@turf/helpers": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-4.7.3.tgz", + "integrity": "sha1-vDEqxDyrPFMqSDFRxMOCxWSUKek=" + }, + "@turf/invariant": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-4.7.3.tgz", + "integrity": "sha1-U482fSPBE/yEnXDJpSS4Vjh0YB0=" + } + } + }, + "@turf/point-to-line-distance": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-5.1.6.tgz", + "integrity": "sha512-PE3hiTeeDEi4ZLPtI8XAzFYW9nHo1EVsZGm/4ZVV8jo39d3X1oLVHxY3e1PkCmWwRapXy4QLqvnTQ7nU4wspNw==", + "requires": { + "@turf/bearing": "6.0.1", + "@turf/distance": "6.0.1", + "@turf/helpers": "6.1.4", + "@turf/invariant": "6.1.2", + "@turf/meta": "6.0.2", + "@turf/projection": "6.0.1", + "@turf/rhumb-bearing": "6.0.1", + "@turf/rhumb-distance": "6.0.1" + }, + "dependencies": { + "@turf/bearing": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.0.1.tgz", + "integrity": "sha512-mXY1NozqV9EFfBTbUItujwfqfQF0G/Xe2fzvnZle90ekPEUfhi4Dgf5JswJTd96J9LiT8kcd6Jonp5khnx0wIg==", + "requires": { + "@turf/helpers": "6.1.4", + "@turf/invariant": "6.1.2" + } + }, + "@turf/clone": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-6.0.2.tgz", + "integrity": "sha512-UVpYPnW3wRj3bPncR6Z2PRbowBk+nEdVWgGewPxrKKLfvswtVtG9n/OIyvbU3E3ZOadBVxTH2uAMEMOz4800FA==", + "requires": { + "@turf/helpers": "6.1.4" + } + }, + "@turf/distance": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.0.1.tgz", + "integrity": "sha512-q7t7rWIWfkg7MP1Vt4uLjSEhe5rPfCO2JjpKmk7JC+QZKEQkuvHEqy3ejW1iC7Kw5ZcZNR3qdMGGz+6HnVwqvg==", + "requires": { + "@turf/helpers": "6.1.4", + "@turf/invariant": "6.1.2" + } + }, + "@turf/helpers": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.1.4.tgz", + "integrity": "sha512-vJvrdOZy1ngC7r3MDA7zIGSoIgyrkWcGnNIEaqn/APmw+bVLF2gAW7HIsdTxd12s5wQMqEpqIQrmrbRRZ0xC7g==" + }, + "@turf/invariant": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.1.2.tgz", + "integrity": "sha512-WU08Ph8j0J2jVGlQCKChXoCtI50BB3yEH21V++V0T4cR1T27HKCxkehV2sYMwTierfMBgjwSwDIsxnR4/2mWXg==", + "requires": { + "@turf/helpers": "6.1.4" + } + }, + "@turf/meta": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.0.2.tgz", + "integrity": "sha512-VA7HJkx7qF1l3+GNGkDVn2oXy4+QoLP6LktXAaZKjuT1JI0YESat7quUkbCMy4zP9lAUuvS4YMslLyTtr919FA==", + "requires": { + "@turf/helpers": "6.1.4" + } + }, + "@turf/projection": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-6.0.1.tgz", + "integrity": "sha512-Y3RvGT6I53MjYKLG69e9sMk45wJXcLbrEO1t6P3WQQQGqA2gYhhMJyV41vE2Z2llrJpvs2dDx/tIeQzGd0HHMQ==", + "requires": { + "@turf/clone": "6.0.2", + "@turf/helpers": "6.1.4", + "@turf/meta": "6.0.2" + } + }, + "@turf/rhumb-bearing": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-6.0.1.tgz", + "integrity": "sha512-MVBra8OVfjM4+/N0B3o6cBIYg9p/uRKzA9uk05RfrzasEbUL1vdD23LkTooVL74Yw4UxL8BQD9hS5Re2COJFDA==", + "requires": { + "@turf/helpers": "6.1.4", + "@turf/invariant": "6.1.2" + } + }, + "@turf/rhumb-distance": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-6.0.1.tgz", + "integrity": "sha512-3G45DQtQByzzfHFPcCyJdUZFwsd45zfZ7sAb1ddF7mhEj4G70+T2G3GKjInymqDNrbyh2gbG6wQiZSToC8Uf9g==", + "requires": { + "@turf/helpers": "6.1.4", + "@turf/invariant": "6.1.2" + } + } + } + }, + "@turf/points-within-polygon": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-5.1.5.tgz", + "integrity": "sha1-K4VaXfOq2lfC7oIKB1SrlJKKIzc=", + "requires": { + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/polygon-tangents": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-5.1.5.tgz", + "integrity": "sha1-K/AJkUcwJbF44lDcfLmuVAm71lI=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/polygon-to-line": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-5.1.5.tgz", + "integrity": "sha1-I7tEjYTcTGUZmaxhGjbZHFklA2o=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/polygon-to-linestring": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@turf/polygon-to-linestring/-/polygon-to-linestring-4.1.0.tgz", + "integrity": "sha1-THE9SUG9iKauaGgXNv1WJZbyPhU=", + "requires": { + "@turf/helpers": "4.7.3", + "@turf/invariant": "4.7.3" + }, + "dependencies": { + "@turf/helpers": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-4.7.3.tgz", + "integrity": "sha1-vDEqxDyrPFMqSDFRxMOCxWSUKek=" + }, + "@turf/invariant": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-4.7.3.tgz", + "integrity": "sha1-U482fSPBE/yEnXDJpSS4Vjh0YB0=" + } + } + }, + "@turf/polygonize": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-5.1.5.tgz", + "integrity": "sha1-BJP6EYefOdELmtAs5qI+lC0IqjI=", + "requires": { + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/envelope": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/projection": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-5.1.5.tgz", + "integrity": "sha1-JFF+7rLzaBa6n3EueubWo2jt91c=", + "requires": { + "@turf/clone": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/random": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/random/-/random-5.1.5.tgz", + "integrity": "sha1-sy78k0Vgroulfo67UfJBw5+6Lns=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "@turf/rewind": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-5.1.5.tgz", + "integrity": "sha1-nqPbSmi3PB/R3RH1djGxQ8/vock=", + "requires": { + "@turf/boolean-clockwise": "5.1.5", + "@turf/clone": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/rhumb-bearing": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-5.1.5.tgz", + "integrity": "sha1-rPalAkJ+uMSeGM2mrg7/qwxd3NI=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/rhumb-destination": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-5.1.5.tgz", + "integrity": "sha1-sbKuuSFUfyrAwamUtqEw+SRjx0I=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/rhumb-distance": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-5.1.5.tgz", + "integrity": "sha1-GAaFdiX0IlOE2tQT5p85U4/192U=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0" + } + }, + "@turf/sample": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-5.1.5.tgz", + "integrity": "sha1-6ctEikeJzFbuPeLdZ4HiNDQ1tBE=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "@turf/sector": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-5.1.5.tgz", + "integrity": "sha1-rCu5TBPt1gNPb9wrZwCBNdIPXgc=", + "requires": { + "@turf/circle": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/line-arc": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/circle": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-5.1.5.tgz", + "integrity": "sha1-mxV3g1UIq1L7HBCypQZcuiuHtqU=", + "requires": { + "@turf/destination": "5.1.5", + "@turf/helpers": "5.1.5" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/shortest-path": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-5.1.5.tgz", + "integrity": "sha1-hUroCW9rw+EwD6ynfz6PZ9j5Nas=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/bbox-polygon": "5.1.5", + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/clean-coords": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0", + "@turf/transform-scale": "5.1.5" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/simplify": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-5.1.5.tgz", + "integrity": "sha1-Csjyei60IYGD7dmZjDJ1q+QIuSY=", + "requires": { + "@turf/clean-coords": "5.1.5", + "@turf/clone": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/square": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/square/-/square-5.1.5.tgz", + "integrity": "sha1-qnsh5gM8ySUsOlvW89iNq9b+0YA=", + "requires": { + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5" + } + }, + "@turf/square-grid": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-5.1.5.tgz", + "integrity": "sha1-G9X3uesU8LYLwjH+/nNR0aMvGlE=", + "requires": { + "@turf/boolean-contains": "5.1.5", + "@turf/boolean-overlap": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/intersect": "5.1.6", + "@turf/invariant": "5.2.0" + } + }, + "@turf/standard-deviational-ellipse": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-5.1.5.tgz", + "integrity": "sha1-hc0oO14ayljyG9ZkEuQUtW2FIyQ=", + "requires": { + "@turf/center-mean": "5.1.5", + "@turf/ellipse": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0", + "@turf/points-within-polygon": "5.1.5" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/tag": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-5.1.5.tgz", + "integrity": "sha1-0e4aUIjs/UoUEQGcmCOczypJfSA=", + "requires": { + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/clone": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/tesselate": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-5.1.5.tgz", + "integrity": "sha1-MqWU6cIaAEIKn5DSxD3z4RZgYc0=", + "requires": { + "@turf/helpers": "5.1.5", + "earcut": "2.1.5" + } + }, + "@turf/tin": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-5.1.5.tgz", + "integrity": "sha1-KCI+r8X76a6azKgc3P6l0UJMkX0=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "@turf/transform-rotate": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-5.1.5.tgz", + "integrity": "sha1-0Jbt2eMA/jFQadVNjkWMQJIh7fs=", + "requires": { + "@turf/centroid": "5.1.5", + "@turf/clone": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0", + "@turf/rhumb-bearing": "5.1.5", + "@turf/rhumb-destination": "5.1.5", + "@turf/rhumb-distance": "5.1.5" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/transform-scale": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-5.1.5.tgz", + "integrity": "sha1-cP064BhWz3uunxWtVhzf6PiQAbk=", + "requires": { + "@turf/bbox": "5.1.5", + "@turf/center": "5.1.5", + "@turf/centroid": "5.1.5", + "@turf/clone": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0", + "@turf/rhumb-bearing": "5.1.5", + "@turf/rhumb-destination": "5.1.5", + "@turf/rhumb-distance": "5.1.5" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + } + }, + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/transform-translate": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-5.1.5.tgz", + "integrity": "sha1-Uwolf7Hccmja3Ks05nkB6yo97GM=", + "requires": { + "@turf/clone": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "@turf/meta": "5.2.0", + "@turf/rhumb-destination": "5.1.5" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/triangle-grid": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-5.1.5.tgz", + "integrity": "sha1-ezZ2IQhVTBTyjK/zxIsc/ILI3IE=", + "requires": { + "@turf/distance": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/intersect": "5.1.6", + "@turf/invariant": "5.2.0" + } + }, + "@turf/truncate": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-5.1.5.tgz", + "integrity": "sha1-nu37Oxi6gfLJjT6tCUMcyhiErYk=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } + } + } + }, + "@turf/turf": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-5.1.6.tgz", + "integrity": "sha1-wxIlkoh+0jS3VGi4qMRb+Ib7+PY=", + "requires": { + "@turf/along": "5.1.5", + "@turf/area": "5.1.5", + "@turf/bbox": "5.1.5", + "@turf/bbox-clip": "5.1.5", + "@turf/bbox-polygon": "5.1.5", + "@turf/bearing": "5.1.5", + "@turf/bezier-spline": "5.1.5", + "@turf/boolean-clockwise": "5.1.5", + "@turf/boolean-contains": "5.1.5", + "@turf/boolean-crosses": "5.1.5", + "@turf/boolean-disjoint": "5.1.6", + "@turf/boolean-equal": "5.1.5", + "@turf/boolean-overlap": "5.1.5", + "@turf/boolean-parallel": "5.1.5", + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/boolean-point-on-line": "5.1.5", + "@turf/boolean-within": "5.1.5", + "@turf/buffer": "5.1.5", + "@turf/center": "5.1.5", + "@turf/center-mean": "5.1.5", + "@turf/center-median": "5.1.5", + "@turf/center-of-mass": "5.1.5", + "@turf/centroid": "5.1.5", + "@turf/circle": "5.1.5", + "@turf/clean-coords": "5.1.5", + "@turf/clone": "5.1.5", + "@turf/clusters": "5.1.5", + "@turf/clusters-dbscan": "5.1.5", + "@turf/clusters-kmeans": "5.1.5", + "@turf/collect": "5.1.5", + "@turf/combine": "5.1.5", + "@turf/concave": "5.1.5", + "@turf/convex": "5.1.5", + "@turf/destination": "5.1.5", + "@turf/difference": "5.1.5", + "@turf/dissolve": "5.1.5", + "@turf/distance": "5.1.5", + "@turf/ellipse": "5.1.5", + "@turf/envelope": "5.1.5", + "@turf/explode": "5.1.5", + "@turf/flatten": "5.1.5", + "@turf/flip": "5.1.5", + "@turf/great-circle": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/hex-grid": "5.1.5", + "@turf/interpolate": "5.1.5", + "@turf/intersect": "5.1.6", + "@turf/invariant": "5.1.5", + "@turf/isobands": "5.1.5", + "@turf/isolines": "5.1.5", + "@turf/kinks": "5.1.5", + "@turf/length": "5.1.5", + "@turf/line-arc": "5.1.5", + "@turf/line-chunk": "5.1.5", + "@turf/line-intersect": "5.1.5", + "@turf/line-offset": "5.1.5", + "@turf/line-overlap": "5.1.5", + "@turf/line-segment": "5.1.5", + "@turf/line-slice": "5.1.5", + "@turf/line-slice-along": "5.1.5", + "@turf/line-split": "5.1.5", + "@turf/line-to-polygon": "5.1.5", + "@turf/mask": "5.1.5", + "@turf/meta": "5.1.6", + "@turf/midpoint": "5.1.5", + "@turf/nearest-point": "5.1.5", + "@turf/nearest-point-on-line": "5.1.5", + "@turf/nearest-point-to-line": "5.1.6", + "@turf/planepoint": "5.1.5", + "@turf/point-grid": "5.1.5", + "@turf/point-on-feature": "5.1.5", + "@turf/point-to-line-distance": "5.1.6", + "@turf/points-within-polygon": "5.1.5", + "@turf/polygon-tangents": "5.1.5", + "@turf/polygon-to-line": "5.1.5", + "@turf/polygonize": "5.1.5", + "@turf/projection": "5.1.5", + "@turf/random": "5.1.5", + "@turf/rewind": "5.1.5", + "@turf/rhumb-bearing": "5.1.5", + "@turf/rhumb-destination": "5.1.5", + "@turf/rhumb-distance": "5.1.5", + "@turf/sample": "5.1.5", + "@turf/sector": "5.1.5", + "@turf/shortest-path": "5.1.5", + "@turf/simplify": "5.1.5", + "@turf/square": "5.1.5", + "@turf/square-grid": "5.1.5", + "@turf/standard-deviational-ellipse": "5.1.5", + "@turf/tag": "5.1.5", + "@turf/tesselate": "5.1.5", + "@turf/tin": "5.1.5", + "@turf/transform-rotate": "5.1.5", + "@turf/transform-scale": "5.1.5", + "@turf/transform-translate": "5.1.5", + "@turf/triangle-grid": "5.1.5", + "@turf/truncate": "5.1.5", + "@turf/union": "5.1.5", + "@turf/unkink-polygon": "5.1.5", + "@turf/voronoi": "5.1.5" + }, + "dependencies": { + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.1.6" + } + }, + "@turf/circle": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-5.1.5.tgz", + "integrity": "sha1-mxV3g1UIq1L7HBCypQZcuiuHtqU=", + "requires": { + "@turf/destination": "5.1.5", + "@turf/helpers": "5.1.5" + } + }, + "@turf/explode": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-5.1.5.tgz", + "integrity": "sha1-sSsvd0AEobSPYrqVsgocZVo94Rg=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.1.6" + } + }, + "@turf/invariant": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-5.1.5.tgz", + "integrity": "sha1-9Z9P76CSJLFdzhZR+QPIaNV6JOE=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "@turf/line-intersect": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-5.1.5.tgz", + "integrity": "sha1-DikHGuQDKV5JFyO8SfXPrI0R3fM=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.1.5", + "@turf/line-segment": "5.1.5", + "@turf/meta": "5.1.6", + "geojson-rbush": "2.1.0" + } + }, + "@turf/line-segment": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-5.1.5.tgz", + "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.1.5", + "@turf/meta": "5.1.6" + } + }, + "@turf/meta": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.1.6.tgz", + "integrity": "sha1-wgqGPt7Qhp+yhUje6Ik0G8y0akY=", + "requires": { + "@turf/helpers": "5.1.5" + } + }, + "geojson-rbush": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-2.1.0.tgz", + "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=", + "requires": { + "@turf/helpers": "5.1.5", + "@turf/meta": "5.1.6", + "rbush": "2.0.2" + } + } + } + }, + "@turf/union": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/union/-/union-5.1.5.tgz", + "integrity": "sha1-UyhbYJQEf8WNlqrA6pCGXsNNRUs=", + "requires": { + "@turf/helpers": "5.1.5", + "turf-jsts": "1.2.3" + } + }, + "@turf/unkink-polygon": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-5.1.5.tgz", + "integrity": "sha1-ewGEfFD7V0riV54Z5Ey6hSbSE8M=", + "requires": { + "@turf/area": "5.1.5", + "@turf/boolean-point-in-polygon": "5.1.5", + "@turf/helpers": "5.1.5", + "@turf/meta": "5.2.0", + "rbush": "2.0.2" + }, + "dependencies": { + "@turf/meta": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-5.2.0.tgz", + "integrity": "sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=", + "requires": { + "@turf/helpers": "5.1.5" + } } } }, - "@turf/polygon-to-linestring": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-to-linestring/-/polygon-to-linestring-4.1.0.tgz", - "integrity": "sha1-THE9SUG9iKauaGgXNv1WJZbyPhU=", + "@turf/voronoi": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-5.1.5.tgz", + "integrity": "sha1-6FbpQG3MLyXWbdyJhYTifC6/ymY=", "requires": { - "@turf/helpers": "^4.1.0", - "@turf/invariant": "^4.1.0" - }, - "dependencies": { - "@turf/helpers": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-4.7.3.tgz", - "integrity": "sha1-vDEqxDyrPFMqSDFRxMOCxWSUKek=" - }, - "@turf/invariant": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-4.7.3.tgz", - "integrity": "sha1-U482fSPBE/yEnXDJpSS4Vjh0YB0=" - } + "@turf/helpers": "5.1.5", + "@turf/invariant": "5.2.0", + "d3-voronoi": "1.1.2" } }, "JSV": { @@ -518,21 +2569,24 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, "requires": { - "mime-types": "~2.1.24", + "mime-types": "2.1.24", "negotiator": "0.6.2" } }, "acorn": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha1-MXrHghgmwixwLWYYmrg1lnXxNdc=" + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true }, "acorn-dynamic-import": { "version": "2.0.2", @@ -540,7 +2594,7 @@ "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, "requires": { - "acorn": "^4.0.3" + "acorn": "4.0.13" }, "dependencies": { "acorn": { @@ -557,7 +2611,7 @@ "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", "dev": true, "requires": { - "acorn": "^4.0.4" + "acorn": "4.0.13" }, "dependencies": { "acorn": { @@ -570,10 +2624,10 @@ }, "acorn-jsx": { "version": "https://github.com/geosolutions-it/acorn-jsx/tarball/master", - "integrity": "sha1-QUvI4f3KSGKeZ06x2/HOvxsaZGc=", + "integrity": "sha512-etsxGN8zUnAIGzYa/StAaIduoBnsOs1RoatuVyNkO1kgWn8NNheA+Ae3Ymwq6F9eQgXDuuRUm7i/nxyTVwP/2w==", "dev": true, "requires": { - "acorn": "^5.0.3" + "acorn": "5.2.1" } }, "acorn-to-esprima": { @@ -585,7 +2639,8 @@ "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true }, "ag-grid": { "version": "3.3.3", @@ -601,9 +2656,10 @@ "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, "ajv-errors": { @@ -621,10 +2677,11 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" } }, "alphanum-sort": { @@ -639,7 +2696,7 @@ "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=", "dev": true, "requires": { - "stable": "~0.1.3" + "stable": "0.1.8" } }, "amdefine": { @@ -666,11 +2723,11 @@ "anymatch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" + "micromatch": "2.3.11", + "normalize-path": "2.1.1" }, "dependencies": { "arr-diff": { @@ -679,7 +2736,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "array-unique": { @@ -694,9 +2751,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.3" } }, "expand-brackets": { @@ -705,7 +2762,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "extglob": { @@ -714,7 +2771,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-extglob": { @@ -729,7 +2786,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "micromatch": { @@ -738,60 +2795,49 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } } } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=" - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true }, "array-equal": { "version": "1.0.0", @@ -820,12 +2866,8 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "asap": { "version": "2.0.6", @@ -836,19 +2878,20 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { - "safer-buffer": "~2.1.0" + "safer-buffer": "2.1.2" } }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" } }, "assert": { @@ -857,7 +2900,7 @@ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { - "object-assign": "^4.1.1", + "object-assign": "4.1.1", "util": "0.10.3" }, "dependencies": { @@ -881,12 +2924,14 @@ "assert-plus": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true }, "ast-traverse": { "version": "0.1.1", @@ -903,9 +2948,10 @@ "async": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, "requires": { - "lodash": "^4.14.0" + "lodash": "4.17.5" } }, "async-each": { @@ -914,27 +2960,24 @@ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true }, "attr-accept": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-1.1.3.tgz", "integrity": "sha512-iT40nudw8zmCweivz6j58g+RT33I4KbaIvRUhjNmDwO2WmsQUxFEZZYZ5w3vXe5x5MX9D7mfvA/XaLOZYFR9EQ==", "requires": { - "core-js": "^2.5.0" + "core-js": "2.6.5" } }, "autoprefixer": { @@ -943,31 +2986,33 @@ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "dev": true, "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000967", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1" } }, "aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "axios": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" + "follow-redirects": "1.7.0", + "is-buffer": "1.1.6" } }, "axios-mock-adapter": { @@ -976,13 +3021,13 @@ "integrity": "sha512-m2D8ngMTQ5p4zZNBsPKoENgwz5rDfd0pZmXI/spdE2eeeKIcR3jquk+NRiBVFtb9UJlciBYplNzSUmgQ6X385Q==", "dev": true, "requires": { - "deep-equal": "^1.0.1" + "deep-equal": "1.0.1" } }, "b64-to-blob": { "version": "1.2.19", "resolved": "https://registry.npmjs.org/b64-to-blob/-/b64-to-blob-1.2.19.tgz", - "integrity": "sha1-FX2F/ciBFmW5o10p/7xqUiuij74=" + "integrity": "sha512-L3nSu8GgF4iEyNYakCQSfL2F5GI5aCXcot9mNTf+4N0/BMhpxqqHyOb6jIR24iq2xLjQZLG8FOt3gnUcV+9NVg==" }, "babel-code-frame": { "version": "6.26.0", @@ -990,9 +3035,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" }, "dependencies": { "ansi-styles": { @@ -1026,7 +3071,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -1110,10 +3155,10 @@ "integrity": "sha1-T3nnpPWHns8D9Iyxb1UqNV/MMbI=", "dev": true, "requires": { - "acorn-to-esprima": "^1.0.5", - "babel-core": "^5.8.33", - "lodash.assign": "^3.2.0", - "lodash.pick": "^3.1.0" + "acorn-to-esprima": "1.0.7", + "babel-core": "5.8.38", + "lodash.assign": "3.2.0", + "lodash.pick": "3.1.0" }, "dependencies": { "ansi-styles": { @@ -1222,9 +3267,9 @@ "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=", "dev": true, "requires": { - "get-stdin": "^4.0.1", - "minimist": "^1.1.0", - "repeating": "^1.1.0" + "get-stdin": "4.0.1", + "minimist": "1.2.0", + "repeating": "1.1.3" } }, "globals": { @@ -1239,8 +3284,8 @@ "integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=", "dev": true, "requires": { - "os-tmpdir": "^1.0.1", - "user-home": "^1.1.1" + "os-tmpdir": "1.0.2", + "user-home": "1.1.1" } }, "js-tokens": { @@ -1267,7 +3312,7 @@ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "brace-expansion": "1.1.11" } }, "ms": { @@ -1282,7 +3327,7 @@ "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", "dev": true, "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } }, "source-map-support": { @@ -1300,7 +3345,7 @@ "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "0.1.1" } } } @@ -1311,7 +3356,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -1319,17 +3364,17 @@ "babel-generator": { "version": "6.26.1", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha1-GERAjTuPDTWkBOp6wYDwh6YBvZA=", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "babel-helper-bindify-decorators": { @@ -1338,9 +3383,9 @@ "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-builder-binary-assignment-operator-visitor": { @@ -1349,9 +3394,9 @@ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", "dev": true, "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-builder-react-jsx": { @@ -1360,9 +3405,9 @@ "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "esutils": "^2.0.2" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.2" } }, "babel-helper-call-delegate": { @@ -1371,10 +3416,10 @@ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-define-map": { @@ -1383,10 +3428,10 @@ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" } }, "babel-helper-explode-assignable-expression": { @@ -1395,9 +3440,9 @@ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-explode-class": { @@ -1406,10 +3451,10 @@ "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", "dev": true, "requires": { - "babel-helper-bindify-decorators": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-function-name": { @@ -1418,11 +3463,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-get-function-arity": { @@ -1431,8 +3476,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-hoist-variables": { @@ -1441,8 +3486,8 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-optimise-call-expression": { @@ -1451,8 +3496,8 @@ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-regex": { @@ -1461,9 +3506,9 @@ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" } }, "babel-helper-remap-async-to-generator": { @@ -1472,11 +3517,11 @@ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-replace-supers": { @@ -1485,12 +3530,12 @@ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helpers": { @@ -1499,8 +3544,8 @@ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-istanbul": { @@ -1509,23 +3554,23 @@ "integrity": "sha1-K3a3YT6iLidCVQSXP4KPi+g9mF4=", "dev": true, "requires": { - "abbrev": "1.0.x", - "async": "1.x", - "babel-core": "6.x.x", - "escodegen": "1.7.x", - "esprima": "2.5.x", - "fileset": "0.2.x", - "handlebars": "4.0.x", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "object-assign": "^4.0.1", - "once": "1.x", - "resolve": "1.1.x", - "source-map": "0.4.x", - "supports-color": "3.1.x", - "which": "1.2.x", - "wordwrap": "1.0.x" + "abbrev": "1.0.9", + "async": "1.5.2", + "babel-core": "6.8.0", + "escodegen": "1.7.1", + "esprima": "2.5.0", + "fileset": "0.2.1", + "handlebars": "4.0.11", + "js-yaml": "3.13.1", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "object-assign": "4.1.1", + "once": "1.4.0", + "resolve": "1.1.7", + "source-map": "0.4.4", + "supports-color": "3.1.2", + "which": "1.2.14", + "wordwrap": "1.0.0" }, "dependencies": { "abbrev": { @@ -1558,7 +3603,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "0.1.1" } }, "supports-color": { @@ -1567,7 +3612,7 @@ "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "1.0.0" } }, "wordwrap": { @@ -1584,10 +3629,10 @@ "integrity": "sha1-PEWw5m3gPOtrSOgurCX8BvOVAK0=", "dev": true, "requires": { - "babel-istanbul": "0.6.x", - "babel-loader": "6.2.x", - "loader-utils": "0.2.x", - "object-assign": "4.0.x" + "babel-istanbul": "0.6.1", + "babel-loader": "6.2.4", + "loader-utils": "0.2.17", + "object-assign": "4.0.1" }, "dependencies": { "big.js": { @@ -1608,10 +3653,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.0.1" } }, "object-assign": { @@ -1628,9 +3673,9 @@ "integrity": "sha1-qnCv+N3CI6WVLoOaQ6bDpMi/oek=", "dev": true, "requires": { - "loader-utils": "^0.2.11", - "mkdirp": "^0.5.1", - "object-assign": "^4.0.1" + "loader-utils": "0.2.17", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" }, "dependencies": { "big.js": { @@ -1651,10 +3696,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } } } @@ -1665,7 +3710,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-add-module-exports": { @@ -1683,7 +3728,7 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-constant-folding": { @@ -1740,7 +3785,7 @@ "integrity": "sha1-xJ56/QL1d7xNoF6i3wAiUM980SM=", "dev": true, "requires": { - "lodash": "^3.9.3" + "lodash": "3.10.1" }, "dependencies": { "lodash": { @@ -1769,7 +3814,7 @@ "integrity": "sha1-UVu/qZaJOYEULZCx+bFjXeKZUQk=", "dev": true, "requires": { - "lodash": "^4.6.1" + "lodash": "4.17.5" } }, "babel-plugin-remove-console": { @@ -1880,9 +3925,9 @@ "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-generators": "^6.5.0", - "babel-runtime": "^6.22.0" + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-async-to-generator": { @@ -1891,9 +3936,9 @@ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-class-constructor-call": { @@ -1902,9 +3947,9 @@ "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", "dev": true, "requires": { - "babel-plugin-syntax-class-constructor-call": "^6.18.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-plugin-syntax-class-constructor-call": "6.18.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-class-properties": { @@ -1913,10 +3958,10 @@ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-decorators": { @@ -1925,11 +3970,11 @@ "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", "dev": true, "requires": { - "babel-helper-explode-class": "^6.24.1", - "babel-plugin-syntax-decorators": "^6.13.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-do-expressions": { @@ -1938,8 +3983,8 @@ "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=", "dev": true, "requires": { - "babel-plugin-syntax-do-expressions": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-plugin-syntax-do-expressions": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-arrow-functions": { @@ -1948,7 +3993,7 @@ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-block-scoped-functions": { @@ -1957,7 +4002,7 @@ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-block-scoping": { @@ -1966,11 +4011,11 @@ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" } }, "babel-plugin-transform-es2015-classes": { @@ -1979,15 +4024,15 @@ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-computed-properties": { @@ -1996,8 +4041,8 @@ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-destructuring": { @@ -2006,7 +4051,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-duplicate-keys": { @@ -2015,8 +4060,8 @@ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-for-of": { @@ -2025,7 +4070,7 @@ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -2034,9 +4079,9 @@ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-literals": { @@ -2045,7 +4090,7 @@ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-modules-commonjs": { @@ -2054,10 +4099,10 @@ "integrity": "sha1-WKeThjqefKhwvcWogRF/+sJ9tvM=", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-object-super": { @@ -2066,8 +4111,8 @@ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "dev": true, "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -2076,12 +4121,12 @@ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-shorthand-properties": { @@ -2090,8 +4135,8 @@ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-spread": { @@ -2100,7 +4145,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -2109,9 +4154,9 @@ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-template-literals": { @@ -2120,7 +4165,7 @@ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-typeof-symbol": { @@ -2129,7 +4174,7 @@ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -2138,9 +4183,9 @@ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" } }, "babel-plugin-transform-exponentiation-operator": { @@ -2149,9 +4194,9 @@ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", "dev": true, "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-export-extensions": { @@ -2160,8 +4205,8 @@ "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", "dev": true, "requires": { - "babel-plugin-syntax-export-extensions": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-plugin-syntax-export-extensions": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-flow-strip-types": { @@ -2170,8 +4215,8 @@ "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", "dev": true, "requires": { - "babel-plugin-syntax-flow": "^6.18.0", - "babel-runtime": "^6.22.0" + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-function-bind": { @@ -2180,8 +4225,8 @@ "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=", "dev": true, "requires": { - "babel-plugin-syntax-function-bind": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-plugin-syntax-function-bind": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-object-rest-spread": { @@ -2190,8 +4235,8 @@ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-react-display-name": { @@ -2200,7 +4245,7 @@ "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-react-jsx": { @@ -2209,9 +4254,9 @@ "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", "dev": true, "requires": { - "babel-helper-builder-react-jsx": "^6.24.1", - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-react-jsx-source": { @@ -2220,8 +4265,8 @@ "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", "dev": true, "requires": { - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-regenerator": { @@ -2230,7 +4275,7 @@ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { - "regenerator-transform": "^0.10.0" + "regenerator-transform": "0.10.1" } }, "babel-plugin-transform-strict-mode": { @@ -2239,8 +4284,8 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-undeclared-variables-check": { @@ -2274,27 +4319,27 @@ "integrity": "sha1-iLM+WP7JTG695Y3GXs5dFODsJWg=", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "^6.3.13", - "babel-plugin-transform-es2015-arrow-functions": "^6.3.13", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.3.13", - "babel-plugin-transform-es2015-block-scoping": "^6.6.0", - "babel-plugin-transform-es2015-classes": "^6.6.0", - "babel-plugin-transform-es2015-computed-properties": "^6.3.13", - "babel-plugin-transform-es2015-destructuring": "^6.6.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.6.0", - "babel-plugin-transform-es2015-for-of": "^6.6.0", - "babel-plugin-transform-es2015-function-name": "^6.3.13", - "babel-plugin-transform-es2015-literals": "^6.3.13", - "babel-plugin-transform-es2015-modules-commonjs": "^6.6.0", - "babel-plugin-transform-es2015-object-super": "^6.3.13", - "babel-plugin-transform-es2015-parameters": "^6.6.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.3.13", - "babel-plugin-transform-es2015-spread": "^6.3.13", - "babel-plugin-transform-es2015-sticky-regex": "^6.3.13", - "babel-plugin-transform-es2015-template-literals": "^6.6.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.6.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.3.13", - "babel-plugin-transform-regenerator": "^6.6.0" + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" } }, "babel-preset-react": { @@ -2303,12 +4348,12 @@ "integrity": "sha1-0yiaoOMI29SLchD5l3EB8Pluvh8=", "dev": true, "requires": { - "babel-plugin-syntax-flow": "^6.3.13", - "babel-plugin-syntax-jsx": "^6.3.13", - "babel-plugin-transform-flow-strip-types": "^6.3.13", - "babel-plugin-transform-react-display-name": "^6.3.13", - "babel-plugin-transform-react-jsx": "^6.3.13", - "babel-plugin-transform-react-jsx-source": "^6.3.13" + "babel-plugin-syntax-flow": "6.18.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-source": "6.22.0" } }, "babel-preset-stage-0": { @@ -2317,9 +4362,9 @@ "integrity": "sha1-i4R5sgd0grjz3I+PXwyceXiM3iI=", "dev": true, "requires": { - "babel-plugin-transform-do-expressions": "^6.3.13", - "babel-plugin-transform-function-bind": "^6.3.13", - "babel-preset-stage-1": "^6.3.13" + "babel-plugin-transform-do-expressions": "6.22.0", + "babel-plugin-transform-function-bind": "6.22.0", + "babel-preset-stage-1": "6.24.1" } }, "babel-preset-stage-1": { @@ -2328,9 +4373,9 @@ "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", "dev": true, "requires": { - "babel-plugin-transform-class-constructor-call": "^6.24.1", - "babel-plugin-transform-export-extensions": "^6.22.0", - "babel-preset-stage-2": "^6.24.1" + "babel-plugin-transform-class-constructor-call": "6.24.1", + "babel-plugin-transform-export-extensions": "6.22.0", + "babel-preset-stage-2": "6.24.1" } }, "babel-preset-stage-2": { @@ -2339,10 +4384,10 @@ "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", "dev": true, "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-decorators": "^6.24.1", - "babel-preset-stage-3": "^6.24.1" + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" } }, "babel-preset-stage-3": { @@ -2351,11 +4396,11 @@ "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", "dev": true, "requires": { - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-generator-functions": "^6.24.1", - "babel-plugin-transform-async-to-generator": "^6.24.1", - "babel-plugin-transform-exponentiation-operator": "^6.24.1", - "babel-plugin-transform-object-rest-spread": "^6.22.0" + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0" } }, "babel-regenerator-runtime": { @@ -2369,46 +4414,46 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" + "babel-core": "6.26.3", + "babel-runtime": "6.26.0", + "core-js": "2.6.5", + "home-or-tmp": "2.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" }, "dependencies": { "babel-core": { "version": "6.26.3", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha1-suLwnjQtDwyI4vAuBneUEl51wgc=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.6.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" } }, "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "debug": { @@ -2439,8 +4484,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "core-js": "2.6.5", + "regenerator-runtime": "0.11.1" } }, "babel-standalone": { @@ -2454,17 +4499,17 @@ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" }, "dependencies": { "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true } } @@ -2475,21 +4520,21 @@ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.5" }, "dependencies": { "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "debug": { @@ -2515,79 +4560,82 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" } }, - "babylon": { - "version": "7.0.0-beta.19", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", - "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==" - }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" }, "dependencies": { "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -2600,24 +4648,26 @@ "base62": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.8.tgz", - "integrity": "sha1-EmTLD7hI2HV5KHdHnb6LrmuuNCg=", + "integrity": "sha512-V6YHUbjLxN1ymqNLb1DPHoU1CpfdL7d2YTIp5W3U4hhoG4hhxNmsFDs66M9EXxBiSEke5Bt5dwdfMwwZF70iLA==", "dev": true }, "base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true }, "base64-js": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM=", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, "base64id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true }, "batch": { "version": "0.6.1", @@ -2634,14 +4684,16 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, "requires": { "callsite": "1.0.0" } @@ -2651,15 +4703,6 @@ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -2672,7 +4715,7 @@ "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=", "dev": true, "requires": { - "readable-stream": "~1.0.26" + "readable-stream": "1.0.34" }, "dependencies": { "isarray": { @@ -2695,20 +4738,15 @@ } } }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, "bluebird": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha1-2VUfnemPH82h5oPRfukaBgLuLrk=" + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" }, "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", "dev": true }, "body-parser": { @@ -2718,15 +4756,15 @@ "dev": true, "requires": { "bytes": "3.1.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "1.1.2", "http-errors": "1.7.2", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.7.0", "raw-body": "2.4.0", - "type-is": "~1.6.17" + "type-is": "1.6.18" }, "dependencies": { "debug": { @@ -2744,10 +4782,10 @@ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "dev": true, "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", + "statuses": "1.5.0", "toidentifier": "1.0.0" } }, @@ -2787,8 +4825,9 @@ "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "bootstrap": { @@ -2799,9 +4838,10 @@ "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -2809,25 +4849,27 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2850,23 +4892,23 @@ "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, "browserify-cipher": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "browserify-aes": "1.2.0", + "browserify-des": "1.0.2", + "evp_bytestokey": "1.0.3" } }, "browserify-des": { @@ -2875,10 +4917,10 @@ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, "browserify-rsa": { @@ -2897,22 +4939,22 @@ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "elliptic": "6.4.1", + "inherits": "2.0.3", + "parse-asn1": "5.1.4" } }, "browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "pako": "~1.0.5" + "pako": "1.0.10" } }, "browserslist": { @@ -2921,8 +4963,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" + "caniuse-db": "1.0.30000967", + "electron-to-chromium": "1.3.133" } }, "buffer": { @@ -2942,8 +4984,8 @@ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "dev": true, "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" + "buffer-alloc-unsafe": "1.1.0", + "buffer-fill": "1.0.0" } }, "buffer-alloc-unsafe": { @@ -2970,16 +5012,6 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" - }, - "builtin-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", - "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==" - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -2995,23 +5027,25 @@ "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" } }, "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true }, "camel-case": { "version": "3.0.0", @@ -3019,14 +5053,15 @@ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "dev": true, "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "no-case": "2.3.2", + "upper-case": "1.1.3" } }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true }, "camelcase-keys": { "version": "2.1.0", @@ -3034,8 +5069,8 @@ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "camelcase": "2.1.1", + "map-obj": "1.0.1" }, "dependencies": { "camelcase": { @@ -3052,10 +5087,10 @@ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "dev": true, "requires": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000967", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" } }, "caniuse-db": { @@ -3075,27 +5110,30 @@ "integrity": "sha1-xjy1qeegxwaYqch3g0c+YJFepIM=", "requires": { "rgbcolor": "0.0.4", - "stackblur": "^1.0.0", - "xmldom": "^0.1.22" + "stackblur": "1.0.0", + "xmldom": "0.1.27" } }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "catharsis": { "version": "0.8.10", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.10.tgz", "integrity": "sha512-l2OUaz/3PU3MZylspVFJvwHCVfWyvcduPq4lv3AzZ2pJzZCo7kNKFNyatwujD7XgvGkNAE/Jhhbh2uARNwNkfw==", + "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "4.17.11" }, "dependencies": { "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true } } }, @@ -3103,9 +5141,10 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "cesium": { @@ -3122,48 +5161,40 @@ "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.1.tgz", "integrity": "sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==" }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" } }, "change-case": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz", - "integrity": "sha1-/Uh0bM4C8D8KZyV30dOo3C7OsDc=", - "dev": true, - "requires": { - "camel-case": "^3.0.0", - "constant-case": "^2.0.0", - "dot-case": "^2.1.0", - "header-case": "^1.0.0", - "is-lower-case": "^1.1.0", - "is-upper-case": "^1.1.0", - "lower-case": "^1.1.1", - "lower-case-first": "^1.0.0", - "no-case": "^2.3.2", - "param-case": "^2.1.0", - "pascal-case": "^2.0.0", - "path-case": "^2.1.0", - "sentence-case": "^2.1.0", - "snake-case": "^2.1.0", - "swap-case": "^1.1.0", - "title-case": "^2.1.0", - "upper-case": "^1.1.1", - "upper-case-first": "^1.1.0" + "integrity": "sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "constant-case": "2.0.0", + "dot-case": "2.1.1", + "header-case": "1.0.1", + "is-lower-case": "1.1.3", + "is-upper-case": "1.1.2", + "lower-case": "1.1.4", + "lower-case-first": "1.0.2", + "no-case": "2.3.2", + "param-case": "2.1.1", + "pascal-case": "2.0.1", + "path-case": "2.1.1", + "sentence-case": "2.1.1", + "snake-case": "2.1.0", + "swap-case": "1.1.2", + "title-case": "2.1.1", + "upper-case": "1.1.3", + "upper-case-first": "1.1.2" } }, "change-emitter": { @@ -3177,15 +5208,15 @@ "integrity": "sha1-KT5yhkDMk92Cd0JDNLPG1K06NIo=", "dev": true, "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "anymatch": "1.3.2", + "async-each": "1.0.3", + "fsevents": "1.2.9", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1" }, "dependencies": { "is-extglob": { @@ -3200,7 +5231,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } } } @@ -3213,20 +5244,20 @@ "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, "clap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha1-TzZ0WzIAhJJVf0ZBLWbVDLmbzlE=", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", "dev": true, "requires": { - "chalk": "^1.1.3" + "chalk": "1.1.3" }, "dependencies": { "ansi-styles": { @@ -3254,7 +5285,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -3262,20 +5293,22 @@ "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -3291,8 +5324,8 @@ "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", "dev": true, "requires": { - "commander": "2.8.x", - "source-map": "0.4.x" + "commander": "2.8.1", + "source-map": "0.4.4" }, "dependencies": { "commander": { @@ -3310,7 +5343,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "0.1.1" } } } @@ -3322,7 +5355,7 @@ "dev": true, "requires": { "exit": "0.1.2", - "glob": "^7.1.1" + "glob": "7.1.1" } }, "cli-width": { @@ -3335,109 +5368,37 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" }, "dependencies": { "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "closure-util": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/closure-util/-/closure-util-1.26.0.tgz", - "integrity": "sha512-zpWABEochWrY48soiEttuqJk/OSYscS9PcvKgHvKUefM29+R8rqx5Bp8KIZHR0Nsq1JrNgxg2VTmJ/IsqN5VOA==", - "requires": { - "acorn": "5.2.1", - "async": "2.6.0", - "fs-extra": "4.0.2", - "gaze": "1.1.2", - "get-down": "1.2.0", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "handlebars": "4.0.11", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nomnom": "1.8.1", - "npmlog": "4.1.2", - "rimraf": "2.6.2", - "send": "0.16.1", - "socket.io": "2.0.4", - "temp": "0.8.3" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", - "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "requires": { - "glob": "^7.0.5" - } + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true } } }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true }, "coa": { "version": "1.0.4", @@ -3445,7 +5406,7 @@ "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", "dev": true, "requires": { - "q": "^1.1.2" + "q": "1.5.0" } }, "code-point-at": { @@ -3462,9 +5423,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "map-visit": "1.0.0", + "object-visit": "1.0.1" } }, "color": { @@ -3473,9 +5435,9 @@ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "dev": true, "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" + "clone": "1.0.4", + "color-convert": "1.9.3", + "color-string": "0.3.0" }, "dependencies": { "clone": { @@ -3507,7 +5469,7 @@ "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", "dev": true, "requires": { - "color-name": "^1.0.0" + "color-name": "1.1.3" } }, "colorbrewer": { @@ -3521,9 +5483,9 @@ "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", "dev": true, "requires": { - "color": "^0.11.0", + "color": "0.11.4", "css-color-names": "0.0.4", - "has": "^1.0.1" + "has": "1.0.3" } }, "colors": { @@ -3538,22 +5500,22 @@ "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", "dev": true, "requires": { - "lodash": "^4.5.0" + "lodash": "4.17.5" } }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "commander": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" }, "commoner": { "version": "0.10.8", @@ -3561,15 +5523,15 @@ "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", "dev": true, "requires": { - "commander": "^2.5.0", - "detective": "^4.3.1", - "glob": "^5.0.15", - "graceful-fs": "^4.1.2", - "iconv-lite": "^0.4.5", - "mkdirp": "^0.5.0", - "private": "^0.1.6", - "q": "^1.1.2", - "recast": "^0.11.17" + "commander": "2.20.0", + "detective": "4.7.1", + "glob": "5.0.15", + "graceful-fs": "4.1.15", + "iconv-lite": "0.4.24", + "mkdirp": "0.5.1", + "private": "0.1.8", + "q": "1.5.0", + "recast": "0.11.23" }, "dependencies": { "esprima": { @@ -3584,11 +5546,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "recast": { @@ -3598,9 +5560,9 @@ "dev": true, "requires": { "ast-types": "0.9.6", - "esprima": "~3.1.0", - "private": "~0.1.5", - "source-map": "~0.5.0" + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" } } } @@ -3608,17 +5570,20 @@ "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true }, "component-inherit": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true }, "compressible": { "version": "2.0.17", @@ -3626,7 +5591,7 @@ "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", "dev": true, "requires": { - "mime-db": ">= 1.40.0 < 2" + "mime-db": "1.40.0" } }, "compression": { @@ -3635,13 +5600,13 @@ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "requires": { - "accepts": "~1.3.5", + "accepts": "1.3.7", "bytes": "3.0.0", - "compressible": "~2.0.16", + "compressible": "2.0.17", "debug": "2.6.9", - "on-headers": "~1.0.2", + "on-headers": "1.0.2", "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "bytes": { @@ -3670,16 +5635,29 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "concat-stream": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", "requires": { - "inherits": "~2.0.1", - "readable-stream": "~2.0.0", - "typedarray": "~0.0.5" + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + } + }, + "concaveman": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/concaveman/-/concaveman-1.1.1.tgz", + "integrity": "sha1-bCSCWAslI874L8K+wAoEFebmgWI=", + "requires": { + "monotone-convex-hull-2d": "1.0.1", + "point-in-polygon": "1.0.1", + "rbush": "2.0.2", + "robust-orientation": "1.1.3", + "tinyqueue": "1.2.3" } }, "connect": { @@ -3690,7 +5668,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.0", - "parseurl": "~1.3.2", + "parseurl": "1.3.3", "utils-merge": "1.0.1" }, "dependencies": { @@ -3723,22 +5701,17 @@ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "^0.1.4" + "date-now": "0.1.4" } }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, "constant-case": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", "integrity": "sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY=", "dev": true, "requires": { - "snake-case": "^2.1.0", - "upper-case": "^1.1.1" + "snake-case": "2.1.0", + "upper-case": "1.1.3" } }, "constants-browserify": { @@ -3756,13 +5729,13 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, "content-type-parser": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", - "integrity": "sha1-yqvoBiPmNjiyUC/Ux/Ev9M4jUuc=", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", "dev": true }, "convert-source-map": { @@ -3771,13 +5744,14 @@ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "safe-buffer": "5.1.2" } }, "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true }, "cookie-signature": { "version": "1.0.6", @@ -3788,14 +5762,15 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true }, "copy-to-clipboard": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.2.0.tgz", "integrity": "sha512-eOZERzvCmxS8HWzugj4Uxl8OJxa7T2k1Gi0X5qavwydHIfuSHq2dTD09LOg/XyGq4Zpb5IsR/2OJ5lbOegz78w==", "requires": { - "toggle-selection": "^1.0.6" + "toggle-selection": "1.0.6" } }, "copy-webpack-plugin": { @@ -3804,14 +5779,14 @@ "integrity": "sha1-lyjjg7lDFgUNDHRjlY8rhcCqggA=", "dev": true, "requires": { - "bluebird": "^2.10.2", - "fs-extra": "^0.26.4", - "glob": "^6.0.4", - "is-glob": "^3.1.0", - "loader-utils": "^0.2.15", - "lodash": "^4.3.0", - "minimatch": "^3.0.0", - "node-dir": "^0.1.10" + "bluebird": "2.11.0", + "fs-extra": "0.26.7", + "glob": "6.0.4", + "is-glob": "3.1.0", + "loader-utils": "0.2.17", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "node-dir": "0.1.17" }, "dependencies": { "big.js": { @@ -3832,11 +5807,11 @@ "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" + "graceful-fs": "4.1.15", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.5.2" } }, "glob": { @@ -3845,11 +5820,11 @@ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "json5": { @@ -3864,7 +5839,7 @@ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "4.1.15" } }, "klaw": { @@ -3873,7 +5848,7 @@ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "dev": true, "requires": { - "graceful-fs": "^4.1.9" + "graceful-fs": "4.1.15" } }, "loader-utils": { @@ -3882,10 +5857,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } } } @@ -3906,13 +5881,13 @@ "integrity": "sha1-YXPOvVb6wELB9DkO33r2wHx8uJI=", "dev": true, "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.4.3", - "minimist": "^1.2.0", - "object-assign": "^4.1.0", - "os-homedir": "^1.0.1", - "parse-json": "^2.2.0", - "require-from-string": "^1.1.0" + "is-directory": "0.3.1", + "js-yaml": "3.13.1", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" } }, "coveralls": { @@ -3946,11 +5921,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "esprima": { @@ -3965,10 +5940,10 @@ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "dev": true, "requires": { - "chalk": "^1.1.1", - "commander": "^2.9.0", - "is-my-json-valid": "^2.12.4", - "pinkie-promise": "^2.0.0" + "chalk": "1.1.3", + "commander": "2.20.0", + "is-my-json-valid": "2.20.0", + "pinkie-promise": "2.0.1" } }, "js-yaml": { @@ -3977,8 +5952,8 @@ "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" + "argparse": "1.0.10", + "esprima": "2.7.3" } }, "qs": { @@ -3993,26 +5968,26 @@ "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", "dev": true, "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.11.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~2.0.6", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "qs": "~6.3.0", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "~0.4.1", - "uuid": "^3.0.0" + "aws-sign2": "0.6.0", + "aws4": "1.8.0", + "caseless": "0.11.0", + "combined-stream": "1.0.8", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.24", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.6", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.4.3", + "uuid": "3.0.1" } }, "strip-ansi": { @@ -4021,7 +5996,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "tunnel-agent": { @@ -4038,8 +6013,8 @@ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "bn.js": "4.11.8", + "elliptic": "6.4.1" } }, "create-hash": { @@ -4048,11 +6023,11 @@ "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "md5.js": "1.3.5", + "ripemd160": "2.0.2", + "sha.js": "2.4.11" } }, "create-hmac": { @@ -4061,12 +6036,12 @@ "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", "dev": true, "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "inherits": "2.0.3", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" } }, "create-react-class": { @@ -4074,36 +6049,37 @@ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz", "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=", "requires": { - "fbjs": "^0.8.9", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "fbjs": "0.8.17", + "loose-envify": "1.4.0", + "object-assign": "4.1.1" } }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, "requires": { - "boom": "2.x.x" + "boom": "2.10.1" } }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "browserify-cipher": "1.0.1", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.3", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "diffie-hellman": "5.0.3", + "inherits": "2.0.3", + "pbkdf2": "3.0.17", + "public-encrypt": "4.0.3", + "randombytes": "2.1.0", + "randomfill": "1.0.4" } }, "css-color-names": { @@ -4123,14 +6099,14 @@ "integrity": "sha1-c4PbaiD8xCOVutpLirwlwnNVd7g=", "dev": true, "requires": { - "css-selector-tokenizer": "^0.5.1", - "cssnano": ">=2.6.1 <4", - "loader-utils": "~0.2.2", - "postcss": "^5.0.6", + "css-selector-tokenizer": "0.5.4", + "cssnano": "3.10.0", + "loader-utils": "0.2.17", + "postcss": "5.2.16", "postcss-modules-extract-imports": "1.0.0-beta2", "postcss-modules-local-by-default": "1.0.0-beta1", "postcss-modules-scope": "1.0.0-beta2", - "source-list-map": "^0.1.4" + "source-list-map": "0.1.8" }, "dependencies": { "big.js": { @@ -4151,10 +6127,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } } } @@ -4170,10 +6146,10 @@ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", + "boolbase": "1.0.0", + "css-what": "2.1.3", "domutils": "1.5.1", - "nth-check": "~1.0.1" + "nth-check": "1.0.2" } }, "css-selector-tokenizer": { @@ -4182,8 +6158,8 @@ "integrity": "sha1-E5uv00o1/QwUKEhwSeBpnm9qLCE=", "dev": true, "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1" + "cssesc": "0.1.0", + "fastparse": "1.1.2" } }, "css-tree": { @@ -4191,8 +6167,8 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha24.tgz", "integrity": "sha1-hpkRg3dV6LgcSO+0NZp/iFIRJ/4=", "requires": { - "mdn-data": "^1.0.0", - "source-map": "^0.5.3" + "mdn-data": "1.2.0", + "source-map": "0.5.7" } }, "css-what": { @@ -4213,38 +6189,38 @@ "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", "dev": true, "requires": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.3", + "object-assign": "4.1.1", + "postcss": "5.2.16", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.3", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.1", + "postcss-zindex": "2.2.0" } }, "csso": { @@ -4253,8 +6229,8 @@ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", "dev": true, "requires": { - "clap": "^1.0.9", - "source-map": "^0.5.3" + "clap": "1.2.3", + "source-map": "0.5.7" } }, "cssom": { @@ -4269,7 +6245,7 @@ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, "requires": { - "cssom": "0.3.x" + "cssom": "0.3.6" } }, "currently-unhandled": { @@ -4278,7 +6254,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "^1.0.1" + "array-find-index": "1.0.2" } }, "custom-event": { @@ -4293,7 +6269,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "^0.10.9" + "es5-ext": "0.10.50" } }, "d3-array": { @@ -4316,12 +6292,20 @@ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.3.2.tgz", "integrity": "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ==" }, + "d3-geo": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.7.1.tgz", + "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==", + "requires": { + "d3-array": "1.2.4" + } + }, "d3-interpolate": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz", "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==", "requires": { - "d3-color": "1" + "d3-color": "1.2.3" } }, "d3-path": { @@ -4334,13 +6318,13 @@ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.4.tgz", "integrity": "sha1-UOKL9qGTtwZ0VShRXtmz1EIFoDM=", "requires": { - "d3-array": "1", - "d3-collection": "1", - "d3-color": "1", - "d3-format": "1", - "d3-interpolate": "1", - "d3-time": "1", - "d3-time-format": "2" + "d3-array": "1.2.4", + "d3-collection": "1.0.7", + "d3-color": "1.2.3", + "d3-format": "1.3.2", + "d3-interpolate": "1.3.2", + "d3-time": "1.0.11", + "d3-time-format": "2.1.3" } }, "d3-shape": { @@ -4348,7 +6332,7 @@ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.0.4.tgz", "integrity": "sha1-FF7hAMy+xC+OPxmWzQXHhvef4cY=", "requires": { - "d3-path": "1" + "d3-path": "1.0.7" } }, "d3-time": { @@ -4361,21 +6345,28 @@ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.3.tgz", "integrity": "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==", "requires": { - "d3-time": "1" + "d3-time": "1.0.11" } }, + "d3-voronoi": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", + "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true } } }, @@ -4396,8 +6387,8 @@ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", "dev": true, "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" + "get-stdin": "4.0.1", + "meow": "3.7.0" } }, "debug": { @@ -4405,13 +6396,14 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -4424,11 +6416,11 @@ "integrity": "sha1-w3hI5s0+BT8KmCy3wiXypSjDeQg=", "dev": true, "requires": { - "is-tar": "^1.0.0", - "strip-dirs": "^0.1.1", - "tar-stream": "^0.4.5", - "through2": "^0.6.1", - "vinyl": "^0.4.3" + "is-tar": "1.0.0", + "strip-dirs": "0.1.1", + "tar-stream": "0.4.7", + "through2": "0.6.5", + "vinyl": "0.4.6" } }, "decompress-tarbz2": { @@ -4437,12 +6429,12 @@ "integrity": "sha1-ewZSBGgkYYzmkfdIMUEzq3Ba7W0=", "dev": true, "requires": { - "is-bzip2": "^1.0.0", - "seek-bzip": "^1.0.3", - "strip-dirs": "^0.1.1", - "tar-stream": "^0.4.5", - "through2": "^0.6.1", - "vinyl": "^0.4.3" + "is-bzip2": "1.0.0", + "seek-bzip": "1.0.5", + "strip-dirs": "0.1.1", + "tar-stream": "0.4.7", + "through2": "0.6.5", + "vinyl": "0.4.6" } }, "decompress-targz": { @@ -4451,11 +6443,11 @@ "integrity": "sha1-uT502356igowzwGfAxtGDycHc0o=", "dev": true, "requires": { - "is-gzip": "^1.0.0", - "strip-dirs": "^1.0.0", - "tar-stream": "^1.1.1", - "through2": "^0.6.1", - "vinyl": "^0.4.3" + "is-gzip": "1.0.0", + "strip-dirs": "1.1.1", + "tar-stream": "1.6.2", + "through2": "0.6.5", + "vinyl": "0.4.6" }, "dependencies": { "ansi-styles": { @@ -4467,11 +6459,11 @@ "bl": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha1-oWCRFxcQPAdBDO9j71Gzl8Alr5w=", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "readable-stream": "2.3.6", + "safe-buffer": "5.1.2" } }, "chalk": { @@ -4490,31 +6482,31 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "strip-ansi": { @@ -4523,7 +6515,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-dirs": { @@ -4546,13 +6538,13 @@ "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "dev": true, "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" + "bl": "1.2.2", + "buffer-alloc": "1.2.0", + "end-of-stream": "1.4.1", + "fs-constants": "1.0.0", + "readable-stream": "2.3.6", + "to-buffer": "1.1.1", + "xtend": "4.0.1" } } } @@ -4563,11 +6555,11 @@ "integrity": "sha1-ZQD/BMKpkt6pIplrSA5gvBRV5FI=", "dev": true, "requires": { - "is-zip": "^1.0.0", - "strip-dirs": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.3", - "yauzl": "^2.2.1" + "is-zip": "1.0.0", + "strip-dirs": "1.1.1", + "through2": "0.6.5", + "vinyl": "0.4.6", + "yauzl": "2.10.0" }, "dependencies": { "ansi-styles": { @@ -4595,7 +6587,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-dirs": { @@ -4614,38 +6606,6 @@ } } }, - "decompress-zip": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", - "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", - "requires": { - "binary": "^0.3.0", - "graceful-fs": "^4.1.3", - "mkpath": "^0.1.0", - "nopt": "^3.0.1", - "q": "^1.1.2", - "readable-stream": "^1.1.8", - "touch": "0.0.3" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - } - } - }, "deconstruct-number-format": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/deconstruct-number-format/-/deconstruct-number-format-0.0.1.tgz", @@ -4675,7 +6635,7 @@ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "requires": { - "clone": "^1.0.2" + "clone": "1.0.4" }, "dependencies": { "clone": { @@ -4692,48 +6652,53 @@ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "object-keys": "1.1.1" } }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" }, "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -4749,16 +6714,16 @@ "integrity": "sha1-siYJ8sehG6ej2xFoBcE5scr/qdI=", "dev": true, "requires": { - "alter": "~0.2.0", - "ast-traverse": "~0.1.1", - "breakable": "~1.0.0", - "esprima-fb": "~15001.1001.0-dev-harmony-fb", - "simple-fmt": "~0.1.0", - "simple-is": "~0.2.0", - "stringmap": "~0.2.2", - "stringset": "~0.2.1", - "tryor": "~0.1.2", - "yargs": "~3.27.0" + "alter": "0.2.0", + "ast-traverse": "0.1.1", + "breakable": "1.0.0", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "simple-fmt": "0.1.0", + "simple-is": "0.2.0", + "stringmap": "0.2.2", + "stringset": "0.2.1", + "tryor": "0.1.2", + "yargs": "3.27.0" }, "dependencies": { "window-size": { @@ -4786,12 +6751,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "denodeify": { "version": "1.2.1", @@ -4799,10 +6760,16 @@ "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", "dev": true }, + "density-clustering": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/density-clustering/-/density-clustering-1.3.0.tgz", + "integrity": "sha1-3J9ZyPCrl+FiSsZJMP0xlIF9ysU=" + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true }, "des.js": { "version": "1.0.0", @@ -4810,14 +6777,15 @@ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" } }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true }, "detect-indent": { "version": "4.0.0", @@ -4825,7 +6793,7 @@ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "repeating": "^2.0.0" + "repeating": "2.0.1" } }, "detect-node": { @@ -4842,11 +6810,11 @@ "detective": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", - "integrity": "sha1-DspzFDOEQv67bWXaVMELscgrJG4=", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", "dev": true, "requires": { - "acorn": "^5.2.1", - "defined": "^1.0.0" + "acorn": "5.2.1", + "defined": "1.0.0" } }, "di": { @@ -4867,9 +6835,9 @@ "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", "dev": true, "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.1.0" } }, "disposables": { @@ -4882,21 +6850,21 @@ "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-2.6.0.tgz", "integrity": "sha1-ErrWbVh0LG5ffPKUP7aFlED4CcQ=", "requires": { - "asap": "^2.0.6", - "invariant": "^2.0.0", - "lodash": "^4.2.0", - "redux": "^3.7.1" + "asap": "2.0.6", + "invariant": "2.2.4", + "lodash": "4.17.5", + "redux": "3.7.2" }, "dependencies": { "redux": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", - "integrity": "sha1-BrcxIyFZAdJdBlvjQusCa8HIU3s=", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", "requires": { - "lodash": "^4.2.1", - "lodash-es": "^4.2.1", - "loose-envify": "^1.1.0", - "symbol-observable": "^1.0.3" + "lodash": "4.17.5", + "lodash-es": "4.17.11", + "loose-envify": "1.4.0", + "symbol-observable": "1.2.0" } } } @@ -4912,21 +6880,21 @@ "integrity": "sha1-AInyFFnXtBuPLWTSYQ8d0aiD2zc=", "dev": true, "requires": { - "bluebird": "^3.5.0", - "chalk": "^1.1.3", - "dustjs-linkedin": "^2.7.5", - "easy-table": "^1.0.0", - "fs-extra": "^2.0.0", - "glob": "^7.1.1", - "jsdoc-x": "^1.3.3", - "jsdom": "^9.11.0", - "less": "^2.7.2", - "less-plugin-clean-css": "^1.5.1", - "lodash": "^4.17.4", - "marked": "^0.3.6", - "strip-json-comments": "^2.0.1", - "uglify-js": "^2.8.11", - "yargs": "^7.0.2" + "bluebird": "3.5.1", + "chalk": "1.1.3", + "dustjs-linkedin": "2.7.5", + "easy-table": "1.1.1", + "fs-extra": "2.1.2", + "glob": "7.1.1", + "jsdoc-x": "1.3.3", + "jsdom": "9.12.0", + "less": "2.7.3", + "less-plugin-clean-css": "1.5.1", + "lodash": "4.17.5", + "marked": "0.3.19", + "strip-json-comments": "2.0.1", + "uglify-js": "2.8.29", + "yargs": "7.1.0" }, "dependencies": { "ansi-styles": { @@ -4960,9 +6928,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" } }, "fs-extra": { @@ -4971,8 +6939,8 @@ "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0" + "graceful-fs": "4.1.15", + "jsonfile": "2.4.0" } }, "jsonfile": { @@ -4987,17 +6955,17 @@ "less": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", - "integrity": "sha1-zBJg9RyQCp7A2R+2mYE54CUHtjs=", + "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", "dev": true, "requires": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "mime": "^1.2.11", - "mkdirp": "^0.5.0", - "promise": "^7.1.1", + "errno": "0.1.7", + "graceful-fs": "4.1.15", + "image-size": "0.5.5", + "mime": "1.4.1", + "mkdirp": "0.5.1", + "promise": "7.3.1", "request": "2.81.0", - "source-map": "^0.5.3" + "source-map": "0.5.7" } }, "strip-ansi": { @@ -5006,7 +6974,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "yargs": { @@ -5015,19 +6983,19 @@ "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", "dev": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.3", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" } } } @@ -5038,7 +7006,7 @@ "integrity": "sha1-gUKEkalC7xiwSSBW7aOADu5X1h0=", "dev": true, "requires": { - "esutils": "^1.1.6", + "esutils": "1.1.6", "isarray": "0.0.1" }, "dependencies": { @@ -5062,7 +7030,7 @@ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, "requires": { - "utila": "~0.4" + "utila": "0.4.0" } }, "dom-helpers": { @@ -5070,7 +7038,7 @@ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", "requires": { - "@babel/runtime": "^7.1.2" + "@babel/runtime": "7.4.4" } }, "dom-serialize": { @@ -5079,10 +7047,10 @@ "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", "dev": true, "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" + "custom-event": "1.0.1", + "ent": "2.2.0", + "extend": "3.0.2", + "void-elements": "2.0.1" } }, "dom-serializer": { @@ -5091,8 +7059,8 @@ "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "1.3.1", + "entities": "1.1.2" } }, "dom-walk": { @@ -5103,7 +7071,7 @@ "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, "domelementtype": { @@ -5118,7 +7086,7 @@ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { - "domelementtype": "1" + "domelementtype": "1.3.1" } }, "domutils": { @@ -5127,8 +7095,8 @@ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "0.1.1", + "domelementtype": "1.3.1" } }, "dot-case": { @@ -5137,7 +7105,7 @@ "integrity": "sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4=", "dev": true, "requires": { - "no-case": "^2.2.0" + "no-case": "2.3.2" } }, "download-cli": { @@ -5146,9 +7114,9 @@ "integrity": "sha1-NDF9DzbkRxEcPTyS3ewo8w5mvsE=", "dev": true, "requires": { - "download": "^3.2.0", - "get-stdin": "^4.0.1", - "meow": "^3.3.0" + "download": "3.3.0", + "get-stdin": "4.0.1", + "meow": "3.7.0" }, "dependencies": { "camelcase-keys": { @@ -5157,8 +7125,8 @@ "integrity": "sha1-vRoRv5sxoc5JNJOpMN4aC69K1+w=", "dev": true, "requires": { - "camelcase": "^1.0.1", - "map-obj": "^1.0.0" + "camelcase": "1.2.1", + "map-obj": "1.0.1" } }, "download": { @@ -5167,24 +7135,24 @@ "integrity": "sha1-KigNxZQXCdavAsIfl0YsVokhM2w=", "dev": true, "requires": { - "concat-stream": "^1.4.6", - "decompress-tar": "^2.0.1", - "decompress-tarbz2": "^2.0.1", - "decompress-targz": "^2.0.1", - "decompress-unzip": "^2.0.0", - "download-status": "^2.0.1", - "each-async": "^1.0.0", - "get-stdin": "^3.0.0", - "gulp-rename": "^1.2.0", - "meow": "^2.0.0", - "rc": "^0.5.1", - "request": "^2.34.0", - "stream-combiner": "^0.2.1", - "through2": "^0.6.1", - "url-regex": "^2.0.2", - "vinyl": "^0.4.3", - "vinyl-fs": "^0.3.7", - "ware": "^1.0.1" + "concat-stream": "1.5.2", + "decompress-tar": "2.0.2", + "decompress-tarbz2": "2.0.2", + "decompress-targz": "2.1.0", + "decompress-unzip": "2.1.2", + "download-status": "2.2.1", + "each-async": "1.1.1", + "get-stdin": "3.0.2", + "gulp-rename": "1.4.0", + "meow": "2.1.0", + "rc": "0.5.5", + "request": "2.81.0", + "stream-combiner": "0.2.2", + "through2": "0.6.5", + "url-regex": "2.1.3", + "vinyl": "0.4.6", + "vinyl-fs": "0.3.14", + "ware": "1.3.0" }, "dependencies": { "get-stdin": { @@ -5199,10 +7167,10 @@ "integrity": "sha1-OmP3eXfBUMFv2ESE0M72d8QYJ5k=", "dev": true, "requires": { - "camelcase-keys": "^1.0.0", - "indent-string": "^1.1.0", - "minimist": "^1.1.0", - "object-assign": "^2.0.0" + "camelcase-keys": "1.0.0", + "indent-string": "1.2.2", + "minimist": "1.2.0", + "object-assign": "2.1.1" } } } @@ -5213,9 +7181,9 @@ "integrity": "sha1-25m8xYPrarux5I3LsZmamGBBy2s=", "dev": true, "requires": { - "get-stdin": "^4.0.1", - "minimist": "^1.1.0", - "repeating": "^1.1.0" + "get-stdin": "4.0.1", + "minimist": "1.2.0", + "repeating": "1.1.3" } }, "object-assign": { @@ -5230,7 +7198,7 @@ "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", "dev": true, "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } } } @@ -5241,10 +7209,10 @@ "integrity": "sha1-KPPFvNsA10qwBgL1CIiqZrd8yvk=", "dev": true, "requires": { - "chalk": "^0.5.1", - "lpad-align": "^1.0.0", - "object-assign": "^2.0.0", - "progress": "^1.1.8" + "chalk": "0.5.1", + "lpad-align": "1.1.2", + "object-assign": "2.1.1", + "progress": "1.1.8" }, "dependencies": { "ansi-regex": { @@ -5278,7 +7246,7 @@ "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", "dev": true, "requires": { - "ansi-regex": "^0.2.0" + "ansi-regex": "0.2.1" } }, "object-assign": { @@ -5293,7 +7261,7 @@ "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", "dev": true, "requires": { - "ansi-regex": "^0.2.1" + "ansi-regex": "0.2.1" } }, "supports-color": { @@ -5316,8 +7284,8 @@ "integrity": "sha1-YY8GP3LBm3jIBVrCMBx1t7a73Mw=", "dev": true, "requires": { - "chokidar": "~1.5.1", - "cli": "^1.0.1" + "chokidar": "1.5.2", + "cli": "1.0.1" } }, "dynamic-public-path-webpack-plugin": { @@ -5332,18 +7300,23 @@ "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", "dev": true, "requires": { - "onetime": "^1.0.0", - "set-immediate-shim": "^1.0.0" + "onetime": "1.1.0", + "set-immediate-shim": "1.0.1" } }, + "earcut": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.1.5.tgz", + "integrity": "sha512-QFWC7ywTVLtvRAJTVp8ugsuuGQ5mVqNmJ1cRYeLrSHgP3nycr2RHTJob9OtM0v8ujuoKN0NY1a93J/omeTL1PA==" + }, "easy-table": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.1.tgz", - "integrity": "sha1-wbm5rWigFwkaHCNeS8uid1QOFD8=", + "integrity": "sha512-C9Lvm0WFcn2RgxbMnTbXZenMIWcBtkzMr+dWqq/JsVoGFSVUVlPqeOa5LP5kM0I3zoOazFpckOEb2/0LDFfToQ==", "dev": true, "requires": { - "ansi-regex": "^3.0.0", - "wcwidth": ">=1.0.1" + "ansi-regex": "3.0.0", + "wcwidth": "1.0.1" }, "dependencies": { "ansi-regex": { @@ -5358,15 +7331,17 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true }, "electron-to-chromium": { "version": "1.3.133", @@ -5384,7 +7359,7 @@ "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.1.15.tgz", "integrity": "sha512-16/5avDegXlUxytGgaumhjyQoM6hpp5j3+L79sYq5hlXfTNRy5WMMuTVWkZU3egp/CokCmTmvf18P3KeB57Iog==", "requires": { - "batch-processor": "^1.0.0" + "batch-processor": "1.0.0" } }, "elliptic": { @@ -5393,13 +7368,13 @@ "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.7", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" } }, "emitter-component": { @@ -5415,97 +7390,24 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true }, "encoding": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "0.4.24" } }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "^1.4.0" - } - }, - "engine.io": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz", - "integrity": "sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA==", - "requires": { - "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "uws": "~9.14.0", - "ws": "~3.3.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "engine.io-client": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", - "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~3.3.1", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" + "once": "1.4.0" } }, "enhanced-resolve": { @@ -5514,10 +7416,10 @@ "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.7" + "graceful-fs": "4.1.15", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.9" } }, "ent": { @@ -5535,10 +7437,10 @@ "errno": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "prr": "~1.0.1" + "prr": "1.0.1" } }, "error-ex": { @@ -5547,7 +7449,7 @@ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "is-arrayish": "0.2.1" } }, "error-stack-parser": { @@ -5556,7 +7458,7 @@ "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=", "dev": true, "requires": { - "stackframe": "^0.3.1" + "stackframe": "0.3.1" } }, "es-abstract": { @@ -5565,12 +7467,12 @@ "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "es-to-primitive": "1.2.0", + "function-bind": "1.1.1", + "has": "1.0.3", + "is-callable": "1.1.4", + "is-regex": "1.0.4", + "object-keys": "1.1.1" } }, "es-to-primitive": { @@ -5579,9 +7481,9 @@ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "1.1.4", + "is-date-object": "1.0.1", + "is-symbol": "1.0.2" } }, "es5-ext": { @@ -5590,9 +7492,9 @@ "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", "dev": true, "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" } }, "es6-iterator": { @@ -5601,9 +7503,9 @@ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "d": "1.0.0", + "es5-ext": "0.10.50", + "es6-symbol": "3.1.1" } }, "es6-map": { @@ -5612,12 +7514,12 @@ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" + "d": "1.0.0", + "es5-ext": "0.10.50", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" } }, "es6-object-assign": { @@ -5636,11 +7538,11 @@ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", + "d": "1.0.0", + "es5-ext": "0.10.50", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" + "event-emitter": "0.3.5" } }, "es6-symbol": { @@ -5649,8 +7551,8 @@ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "1.0.0", + "es5-ext": "0.10.50" } }, "es6-templates": { @@ -5659,8 +7561,8 @@ "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", "dev": true, "requires": { - "recast": "~0.11.12", - "through": "~2.3.6" + "recast": "0.11.23", + "through": "2.3.8" }, "dependencies": { "esprima": { @@ -5676,9 +7578,9 @@ "dev": true, "requires": { "ast-types": "0.9.6", - "esprima": "~3.1.0", - "private": "~0.1.5", - "source-map": "~0.5.0" + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" } } } @@ -5689,10 +7591,10 @@ "integrity": "sha1-cGzvnpmqI2undmwjnIueKG6n0ig=", "dev": true, "requires": { - "d": "~0.1.1", - "es5-ext": "~0.10.6", - "es6-iterator": "~0.1.3", - "es6-symbol": "~2.0.1" + "d": "0.1.1", + "es5-ext": "0.10.50", + "es6-iterator": "0.1.3", + "es6-symbol": "2.0.1" }, "dependencies": { "d": { @@ -5701,7 +7603,7 @@ "integrity": "sha1-2hhMU10Y2O57oqoim5FACfrhEwk=", "dev": true, "requires": { - "es5-ext": "~0.10.2" + "es5-ext": "0.10.50" } }, "es6-iterator": { @@ -5710,9 +7612,9 @@ "integrity": "sha1-1vWLjE/EE8JJtLqhl2j45NfIlE4=", "dev": true, "requires": { - "d": "~0.1.1", - "es5-ext": "~0.10.5", - "es6-symbol": "~2.0.1" + "d": "0.1.1", + "es5-ext": "0.10.50", + "es6-symbol": "2.0.1" } }, "es6-symbol": { @@ -5721,8 +7623,8 @@ "integrity": "sha1-dhtcZ8/U8dGK+yNPaR1nhoLLO/M=", "dev": true, "requires": { - "d": "~0.1.1", - "es5-ext": "~0.10.5" + "d": "0.1.1", + "es5-ext": "0.10.50" } } } @@ -5730,7 +7632,8 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true }, "escape-string-regexp": { "version": "1.0.5", @@ -5743,11 +7646,11 @@ "integrity": "sha1-MOz89mypjcZ80v0WKr626vqM5vw=", "dev": true, "requires": { - "esprima": "^1.2.2", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.5.0", - "source-map": "~0.2.0" + "esprima": "1.2.5", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.5.0", + "source-map": "0.2.0" }, "dependencies": { "esprima": { @@ -5763,7 +7666,7 @@ "dev": true, "optional": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "0.1.1" } } } @@ -5774,10 +7677,10 @@ "integrity": "sha1-tiFdwQLAC9w2JPIsJhRdO1Fe4cc=", "dev": true, "requires": { - "es6-map": "^0.1.1", - "es6-weak-map": "^0.1.2", - "esrecurse": "^3.1.1", - "estraverse": "^3.1.0" + "es6-map": "0.1.5", + "es6-weak-map": "0.1.4", + "esrecurse": "3.1.1", + "estraverse": "3.1.0" }, "dependencies": { "estraverse": { @@ -5794,28 +7697,28 @@ "integrity": "sha1-VKUICYVbllVyHG8u5Xs1HtzigQE=", "dev": true, "requires": { - "chalk": "^1.0.0", - "concat-stream": "^1.4.6", - "debug": "^2.1.1", - "doctrine": "^0.6.2", - "escape-string-regexp": "^1.0.2", - "escope": "^3.1.0", - "espree": "^2.0.1", - "estraverse": "^4.1.0", - "estraverse-fb": "^1.3.1", - "globals": "^8.0.0", - "inquirer": "^0.8.2", - "is-my-json-valid": "^2.10.0", - "js-yaml": "^3.2.5", - "minimatch": "^2.0.1", - "mkdirp": "^0.5.0", - "object-assign": "^2.0.0", - "optionator": "^0.5.0", - "path-is-absolute": "^1.0.0", - "strip-json-comments": "~1.0.1", - "text-table": "~0.2.0", - "user-home": "^1.0.0", - "xml-escape": "~1.0.0" + "chalk": "1.1.3", + "concat-stream": "1.5.2", + "debug": "2.6.9", + "doctrine": "0.6.4", + "escape-string-regexp": "1.0.5", + "escope": "3.2.0", + "espree": "2.2.5", + "estraverse": "4.2.0", + "estraverse-fb": "1.3.2", + "globals": "8.18.0", + "inquirer": "0.8.5", + "is-my-json-valid": "2.20.0", + "js-yaml": "3.13.1", + "minimatch": "2.0.10", + "mkdirp": "0.5.1", + "object-assign": "2.1.1", + "optionator": "0.5.0", + "path-is-absolute": "1.0.1", + "strip-json-comments": "1.0.4", + "text-table": "0.2.0", + "user-home": "1.1.1", + "xml-escape": "1.0.0" }, "dependencies": { "ansi-styles": { @@ -5870,7 +7773,7 @@ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "brace-expansion": "1.1.11" } }, "ms": { @@ -5891,7 +7794,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { @@ -5910,10 +7813,10 @@ }, "espree": { "version": "https://github.com/geosolutions-it/espree/tarball/fix_acorn_jsx", - "integrity": "sha1-Q4eLTXqmVLpkt9HWocRq4w1+2S4=", + "integrity": "sha512-TP4cZoxKK/rMHDTl5bkITsILUi8oz5Wp+UTvjVcCRcGBAfkrFOh8PTtVKW/rfOLcuFO+i6PI3vKyjQotEDKFUw==", "dev": true, "requires": { - "acorn": "^3.3.0", + "acorn": "3.3.0", "acorn-jsx": "https://github.com/geosolutions-it/acorn-jsx/tarball/master" }, "dependencies": { @@ -5937,7 +7840,7 @@ "integrity": "sha1-j+uWNpnU0bLWWlds1LEpZnKg8Ok=", "dev": true, "requires": { - "estraverse": "~3.1.0" + "estraverse": "3.1.0" }, "dependencies": { "estraverse": { @@ -5960,11 +7863,6 @@ "integrity": "sha1-0yOky15awzHOoDNBOpJT4WQ+B8Q=", "dev": true }, - "estree-walker": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz", - "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==" - }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -5974,7 +7872,8 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true }, "event-emitter": { "version": "0.3.5", @@ -5982,8 +7881,8 @@ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "1.0.0", + "es5-ext": "0.10.50" } }, "eventemitter3": { @@ -6008,17 +7907,17 @@ "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", "dev": true, "requires": { - "original": ">=0.0.5" + "original": "1.0.2" } }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "md5.js": "1.3.5", + "safe-buffer": "5.1.2" } }, "exenv": { @@ -6038,9 +7937,9 @@ "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", "dev": true, "requires": { - "array-slice": "^0.2.3", - "array-unique": "^0.2.1", - "braces": "^0.1.2" + "array-slice": "0.2.3", + "array-unique": "0.2.1", + "braces": "0.1.5" }, "dependencies": { "array-unique": { @@ -6055,7 +7954,7 @@ "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", "dev": true, "requires": { - "expand-range": "^0.1.0" + "expand-range": "0.1.1" } }, "expand-range": { @@ -6064,8 +7963,8 @@ "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", "dev": true, "requires": { - "is-number": "^0.1.1", - "repeat-string": "^0.2.2" + "is-number": "0.1.1", + "repeat-string": "0.2.2" } }, "is-number": { @@ -6086,20 +7985,22 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -6108,22 +8009,25 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -6133,7 +8037,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.4" }, "dependencies": { "fill-range": { @@ -6142,11 +8046,11 @@ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "3.1.1", + "repeat-element": "1.1.3", + "repeat-string": "1.6.1" } }, "is-number": { @@ -6155,7 +8059,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "isobject": { @@ -6190,36 +8094,36 @@ "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", "dev": true, "requires": { - "accepts": "~1.3.5", + "accepts": "1.3.7", "array-flatten": "1.1.1", "body-parser": "1.18.3", "content-disposition": "0.5.2", - "content-type": "~1.0.4", + "content-type": "1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", + "proxy-addr": "2.0.5", "qs": "6.5.2", - "range-parser": "~1.2.0", + "range-parser": "1.2.1", "safe-buffer": "5.1.2", "send": "0.16.2", "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "statuses": "1.4.0", + "type-is": "1.6.18", "utils-merge": "1.0.1", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "body-parser": { @@ -6229,15 +8133,15 @@ "dev": true, "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", + "depd": "1.1.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.2", "raw-body": "2.3.3", - "type-is": "~1.6.16" + "type-is": "1.6.18" } }, "bytes": { @@ -6258,16 +8162,16 @@ "finalhandler": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha1-7r9O2EAHnIP0JJA4ydcDAIMBsQU=", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.3", + "statuses": "1.4.0", + "unpipe": "1.0.0" } }, "iconv-lite": { @@ -6276,7 +8180,7 @@ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "ms": { @@ -6312,28 +8216,28 @@ "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "on-finished": "2.3.0", + "range-parser": "1.2.1", + "statuses": "1.4.0" } }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic=", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", "dev": true } } @@ -6347,17 +8251,19 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -6366,63 +8272,70 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -6432,16 +8345,17 @@ "integrity": "sha1-aTFbiF+Hbb+W04Gfap8cynrr8Vk=", "dev": true, "requires": { - "ajv": "^4.11.2", - "async": "^2.1.2", - "loader-utils": "^1.0.2", - "webpack-sources": "^0.1.0" + "ajv": "4.11.8", + "async": "2.6.0", + "loader-utils": "1.2.3", + "webpack-sources": "0.1.5" } }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", @@ -6451,7 +8365,7 @@ "fast-diff": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha1-S2LEK44D3j+EhGC2OQeZIGldAVQ=" + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" }, "fast-json-stable-stringify": { "version": "2.0.0", @@ -6476,7 +8390,7 @@ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { - "websocket-driver": ">=0.5.1" + "websocket-driver": "0.7.0" } }, "fbjs": { @@ -6484,13 +8398,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.19" }, "dependencies": { "core-js": { @@ -6506,7 +8420,7 @@ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "dev": true, "requires": { - "pend": "~1.2.0" + "pend": "1.2.0" } }, "figures": { @@ -6515,8 +8429,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" } }, "file-loader": { @@ -6525,8 +8439,8 @@ "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==", "dev": true, "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" + "loader-utils": "1.2.3", + "schema-utils": "1.0.0" }, "dependencies": { "ajv": { @@ -6535,10 +8449,10 @@ "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "schema-utils": { @@ -6547,9 +8461,9 @@ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "ajv": "6.10.0", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.4.0" } } } @@ -6571,8 +8485,8 @@ "integrity": "sha1-WI74lzxmI7KnbfRlEFaWuWqsgGc=", "dev": true, "requires": { - "glob": "5.x", - "minimatch": "2.x" + "glob": "5.0.15", + "minimatch": "2.0.10" }, "dependencies": { "glob": { @@ -6581,11 +8495,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "minimatch": { @@ -6594,7 +8508,7 @@ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "brace-expansion": "1.1.11" } } } @@ -6602,26 +8516,28 @@ "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc=", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", "dev": true }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -6633,12 +8549,12 @@ "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.3", + "statuses": "1.3.1", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -6670,8 +8586,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" }, "dependencies": { "path-exists": { @@ -6680,7 +8596,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "pinkie-promise": "2.0.1" } } } @@ -6702,13 +8618,14 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", "requires": { - "debug": "^3.2.6" + "debug": "3.2.6" } }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true }, "for-own": { "version": "0.1.5", @@ -6716,27 +8633,24 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, - "foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.8", + "mime-types": "2.1.24" } }, "format-number": { @@ -6751,8 +8665,8 @@ "integrity": "sha1-65bo8WQMkh90FEZsz43LO7aALLo=", "optional": true, "requires": { - "deconstruct-number-format": "~0.0.1", - "format-number": "^2.0.1" + "deconstruct-number-format": "0.0.1", + "format-number": "2.0.2" } }, "forwarded": { @@ -6765,14 +8679,16 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, "requires": { - "map-cache": "^0.2.2" + "map-cache": "0.2.2" } }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true }, "fs-access": { "version": "1.0.1", @@ -6780,13 +8696,13 @@ "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", "dev": true, "requires": { - "null-check": "^1.0.0" + "null-check": "1.0.0" } }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha1-a+Dem+mYzhavivwkSXue6bfM2a0=", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, "fs-extra": { @@ -6794,9 +8710,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" + "graceful-fs": "4.1.15", + "jsonfile": "3.0.1", + "universalify": "0.1.2" } }, "fs-readdir-recursive": { @@ -6808,7 +8724,8 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "fsevents": { "version": "1.2.9", @@ -6817,452 +8734,389 @@ "dev": true, "optional": true, "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "nan": "2.14.0", + "node-pre-gyp": "0.12.0" }, "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "bundled": true, "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "bundled": true, "dev": true, "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.3.6" } }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, - "optional": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, "chownr": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "bundled": true, "dev": true, "optional": true }, "debug": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "bundled": true, "dev": true, "optional": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "bundled": true, "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bundled": true, "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.3.5" } }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.3" } }, "glob": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "bundled": true, "dev": true, "optional": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "ignore-walk": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "bundled": true, "dev": true, "optional": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, - "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, - "optional": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "minipass": { "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "bundled": true, "dev": true, - "optional": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "safe-buffer": "5.1.2", + "yallist": "3.0.3" } }, "minizlib": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.3.5" } }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "bundled": true, "dev": true, "optional": true }, "needle": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.0.tgz", - "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", + "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "debug": "4.1.1", + "iconv-lite": "0.4.24", + "sax": "1.2.4" } }, "node-pre-gyp": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", - "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", + "bundled": true, "dev": true, "optional": true, "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.3.0", + "nopt": "4.0.1", + "npm-packlist": "1.4.1", + "npmlog": "4.1.2", + "rc": "1.2.8", + "rimraf": "2.6.3", + "semver": "5.7.0", + "tar": "4.4.8" } }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "npm-bundled": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", + "bundled": true, "dev": true, "optional": true }, "npm-packlist": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", - "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", + "bundled": true, "dev": true, "optional": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.6" } }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "dev": true, "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.5", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, - "optional": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "dev": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } @@ -7270,197 +9124,142 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "bundled": true, "dev": true, "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "rimraf": { "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.1.3" + "glob": "7.1.3" } }, "safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "bundled": true, "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "bundled": true, "dev": true, "optional": true }, "semver": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, - "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "bundled": true, "dev": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, - "optional": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "bundled": true, "dev": true, "optional": true }, "tar": { "version": "4.4.8", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "chownr": "1.1.1", + "fs-minipass": "1.2.5", + "minipass": "2.3.5", + "minizlib": "1.2.1", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.3" } }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "bundled": true, "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "1.0.2" } }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "optional": true + "bundled": true, + "dev": true }, "yallist": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true, - "optional": true + "bundled": true, + "dev": true } } }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", - "requires": { - "globule": "^1.0.0" - } + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "generate-function": { "version": "2.3.1", @@ -7468,7 +9267,7 @@ "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", "dev": true, "requires": { - "is-property": "^1.0.2" + "is-property": "1.0.2" } }, "generate-object-property": { @@ -7477,7 +9276,7 @@ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true, "requires": { - "is-property": "^1.0.0" + "is-property": "1.0.2" } }, "geojson-equality": { @@ -7485,7 +9284,7 @@ "resolved": "https://registry.npmjs.org/geojson-equality/-/geojson-equality-0.1.6.tgz", "integrity": "sha1-oXE3TvBD5dR5eZWEC65GSOB1LXI=", "requires": { - "deep-equal": "^1.0.0" + "deep-equal": "1.0.1" } }, "geojson-normalize": { @@ -7498,40 +9297,73 @@ "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-1.2.0.tgz", "integrity": "sha1-7KO2o6+4maRT74LV4jcwkuINd+U=", "requires": { - "@turf/meta": "^4.6.0", - "rbush": "^2.0.1" + "@turf/meta": "4.7.4", + "rbush": "2.0.2" } }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true + "geostyler-openlayers-parser": { + "version": "https://github.com/geosolutions-it/geostyler-openlayers-parser/tarball/ms2", + "integrity": "sha512-d8Vmd30MblIjojYabIOV770UXt7a/D58d1Pc4zJK5cHZJQV0J92kTCSCkA12jjGt1ORTUV+3nLsr7wHZG9P1Ig==", + "requires": { + "@terrestris/ol-util": "3.0.0", + "geostyler-style": "1.2.1", + "lodash": "4.17.15" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + } + } }, - "get-down": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-down/-/get-down-1.2.0.tgz", - "integrity": "sha512-SbpdXn+fNmGN6pp/vBALveh3oCbWYTR3wb5qifauPSFhAfAVQ7TMOnAkVzQm4YZD2KABzJB3sA2kmMLaOylA2A==", + "geostyler-sld-parser": { + "version": "https://github.com/geosolutions-it/geostyler-sld-parser/tarball/ms2", + "integrity": "sha512-Moj9mpKXHPuDbJo7Fxt/NhSgG3fH1MTGSNG4OYFsH9Gu3BIz/zlBAsDYGOLEA+J/2VA1YIIZ5ioQ8RHSOYBCfQ==", "requires": { - "decompress-zip": "0.3.0", - "graceful-fs": "4.1.11", - "junk": "2.1.0", - "mout": "1.0.0", - "q": "1.5.0", - "request": "2.81.0", - "request-progress": "3.0.0", - "retry": "0.10.1", - "tar": "3.1.5", - "tmp": "0.0.31" + "geostyler-style": "1.2.1", + "lodash": "4.17.15", + "xml2js": "0.4.19", + "xmldom": "0.1.27" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.7" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" } } }, + "geostyler-style": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/geostyler-style/-/geostyler-style-1.2.1.tgz", + "integrity": "sha512-GIGOt0/C2MuaI/+gMAfz78VYQp/bdoMOd2e/cCmXZ9a1bZPYJXmy02R7Vrv4TV/Q2zKq/a08UQ72G6CV1vyE+Q==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-closest": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/get-closest/-/get-closest-0.0.4.tgz", + "integrity": "sha1-JprHdtHmAiqg/Vht1wjop9Miaa8=" + }, "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", @@ -7541,20 +9373,23 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true } } }, @@ -7564,12 +9399,12 @@ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "glob-base": { @@ -7578,8 +9413,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" }, "dependencies": { "is-extglob": { @@ -7594,7 +9429,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } } } @@ -7605,7 +9440,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" }, "dependencies": { "is-extglob": { @@ -7620,7 +9455,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } } } @@ -7631,12 +9466,12 @@ "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", "dev": true, "requires": { - "glob": "^4.3.1", - "glob2base": "^0.0.12", - "minimatch": "^2.0.1", - "ordered-read-streams": "^0.1.0", - "through2": "^0.6.1", - "unique-stream": "^1.0.0" + "glob": "4.5.3", + "glob2base": "0.0.12", + "minimatch": "2.0.10", + "ordered-read-streams": "0.1.0", + "through2": "0.6.5", + "unique-stream": "1.0.0" }, "dependencies": { "glob": { @@ -7645,10 +9480,10 @@ "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.4.0" } }, "minimatch": { @@ -7657,7 +9492,7 @@ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "brace-expansion": "1.1.11" } } } @@ -7668,7 +9503,7 @@ "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", "dev": true, "requires": { - "gaze": "^0.5.1" + "gaze": "0.5.2" }, "dependencies": { "gaze": { @@ -7677,7 +9512,7 @@ "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", "dev": true, "requires": { - "globule": "~0.1.0" + "globule": "0.1.0" } }, "glob": { @@ -7686,9 +9521,9 @@ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", "dev": true, "requires": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" + "graceful-fs": "1.2.3", + "inherits": "1.0.2", + "minimatch": "0.2.14" } }, "globule": { @@ -7697,9 +9532,9 @@ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", "dev": true, "requires": { - "glob": "~3.1.21", - "lodash": "~1.0.1", - "minimatch": "~0.2.11" + "glob": "3.1.21", + "lodash": "1.0.2", + "minimatch": "0.2.14" } }, "graceful-fs": { @@ -7726,8 +9561,8 @@ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "lru-cache": "2.7.3", + "sigmund": "1.0.1" } } } @@ -7738,7 +9573,7 @@ "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", "dev": true, "requires": { - "find-index": "^0.1.1" + "find-index": "0.1.1" } }, "global": { @@ -7746,46 +9581,16 @@ "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", "requires": { - "min-document": "^2.19.0", - "process": "~0.5.1" + "min-document": "2.19.0", + "process": "0.5.2" } }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, - "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - }, - "dependencies": { - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } - } - }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", @@ -7824,24 +9629,27 @@ "version": "4.0.11", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" }, "dependencies": { "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true }, "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "0.1.1" } } } @@ -7849,15 +9657,17 @@ "har-schema": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true }, "har-validator": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, "has": { @@ -7865,7 +9675,7 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { - "function-bind": "^1.1.1" + "function-bind": "1.1.1" } }, "has-ansi": { @@ -7873,7 +9683,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "has-binary": { @@ -7893,21 +9703,6 @@ } } }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - } - } - }, "has-color": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", @@ -7916,7 +9711,8 @@ "has-cors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true }, "has-flag": { "version": "1.0.0", @@ -7930,36 +9726,34 @@ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" } }, "has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -7970,8 +9764,8 @@ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, "hash.js": { @@ -7980,19 +9774,20 @@ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" } }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, "he": { @@ -8007,8 +9802,8 @@ "integrity": "sha1-lTWXMZfBRLCWE81l0xfvGZY70C0=", "dev": true, "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.3" + "no-case": "2.3.2", + "upper-case": "1.1.3" } }, "history": { @@ -8016,11 +9811,11 @@ "resolved": "https://registry.npmjs.org/history/-/history-4.6.1.tgz", "integrity": "sha1-kRz462VyhVWpTysSeAoMUxoU0v0=", "requires": { - "invariant": "^2.2.1", - "loose-envify": "^1.2.0", - "resolve-pathname": "^2.0.0", - "value-equal": "^0.2.0", - "warning": "^3.0.0" + "invariant": "2.2.4", + "loose-envify": "1.4.0", + "resolve-pathname": "2.2.0", + "value-equal": "0.2.1", + "warning": "3.0.0" } }, "hmac-drbg": { @@ -8029,15 +9824,16 @@ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "hash.js": "1.1.7", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" } }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true }, "hoist-non-react-statics": { "version": "1.2.0", @@ -8050,8 +9846,8 @@ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "hosted-git-info": { @@ -8066,10 +9862,10 @@ "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "dev": true, "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "inherits": "2.0.3", + "obuf": "1.1.2", + "readable-stream": "2.0.6", + "wbuf": "1.7.3" } }, "html-comment-regex": { @@ -8081,10 +9877,10 @@ "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha1-5w2EuU2lOqN14R/jo1G+ZkLKRvg=", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "1.0.5" } }, "html-entities": { @@ -8096,14 +9892,14 @@ "html-loader": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.1.tgz", - "integrity": "sha1-Tx6DlqHqarQr7cmH36wFgHCGHr4=", + "integrity": "sha512-RxokXoxcsRSWcN553Ew+K0TUo68gQfmddTuUIZ4xRD8Ax1xXzX2UYQ3FC3D5MoRPGAdL1erWKeEFihDrrdxHiA==", "dev": true, "requires": { - "es6-templates": "^0.2.2", - "fastparse": "^1.1.1", - "html-minifier": "^3.0.1", - "loader-utils": "^1.0.2", - "object-assign": "^4.1.0" + "es6-templates": "0.2.3", + "fastparse": "1.1.2", + "html-minifier": "3.5.21", + "loader-utils": "1.2.3", + "object-assign": "4.1.1" } }, "html-minifier": { @@ -8112,13 +9908,13 @@ "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", "dev": true, "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" + "camel-case": "3.0.0", + "clean-css": "4.2.1", + "commander": "2.17.1", + "he": "1.2.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.4.10" }, "dependencies": { "clean-css": { @@ -8127,7 +9923,7 @@ "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", "dev": true, "requires": { - "source-map": "~0.6.0" + "source-map": "0.6.1" } }, "commander": { @@ -8148,8 +9944,8 @@ "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", "dev": true, "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" + "commander": "2.19.0", + "source-map": "0.6.1" }, "dependencies": { "commander": { @@ -8261,12 +10057,12 @@ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "dev": true, "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "1.3.1", + "domhandler": "2.4.2", + "domutils": "1.5.1", + "entities": "1.1.2", + "inherits": "2.0.3", + "readable-stream": "3.3.0" }, "dependencies": { "readable-stream": { @@ -8275,9 +10071,9 @@ "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "inherits": "2.0.3", + "string_decoder": "1.2.0", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -8286,7 +10082,7 @@ "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -8301,6 +10097,7 @@ "version": "1.6.3", "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, "requires": { "depd": "1.1.2", "inherits": "2.0.3", @@ -8311,7 +10108,8 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true } } }, @@ -8324,12 +10122,12 @@ "http-proxy": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha1-etOElGWPhGBeL220Q230EPTlvpo=", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "eventemitter3": "3.1.2", + "follow-redirects": "1.7.0", + "requires-port": "1.0.0" }, "dependencies": { "eventemitter3": { @@ -8346,10 +10144,10 @@ "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", "dev": true, "requires": { - "http-proxy": "^1.16.2", - "is-glob": "^3.1.0", - "lodash": "^4.17.2", - "micromatch": "^2.3.11" + "http-proxy": "1.17.0", + "is-glob": "3.1.0", + "lodash": "4.17.5", + "micromatch": "2.3.11" }, "dependencies": { "arr-diff": { @@ -8358,7 +10156,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "array-unique": { @@ -8373,9 +10171,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.3" } }, "expand-brackets": { @@ -8384,7 +10182,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "extglob": { @@ -8393,7 +10191,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-extglob": { @@ -8408,19 +10206,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" }, "dependencies": { "is-glob": { @@ -8429,7 +10227,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } } } @@ -8440,10 +10238,11 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.16.1" } }, "https-browserify": { @@ -8468,7 +10267,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "ieee754": { @@ -8499,7 +10298,7 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "^2.0.0" + "repeating": "2.0.1" } }, "indexes-of": { @@ -8511,15 +10310,17 @@ "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -8530,7 +10331,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, "inquirer": { @@ -8539,14 +10340,14 @@ "integrity": "sha1-29dAz2yjtzEpamPOb22WGFHzNt8=", "dev": true, "requires": { - "ansi-regex": "^1.1.1", - "chalk": "^1.0.0", - "cli-width": "^1.0.1", - "figures": "^1.3.5", - "lodash": "^3.3.1", - "readline2": "^0.1.1", - "rx": "^2.4.3", - "through": "^2.3.6" + "ansi-regex": "1.1.1", + "chalk": "1.1.3", + "cli-width": "1.1.1", + "figures": "1.7.0", + "lodash": "3.10.1", + "readline2": "0.1.1", + "rx": "2.5.3", + "through": "2.3.8" }, "dependencies": { "ansi-regex": { @@ -8586,7 +10387,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" }, "dependencies": { "ansi-regex": { @@ -8639,9 +10440,9 @@ "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.4.0" } }, "invert-kv": { @@ -8673,7 +10474,7 @@ "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", "dev": true, "requires": { - "is-relative": "^0.1.0" + "is-relative": "0.1.3" } }, "is-absolute-url": { @@ -8686,8 +10487,9 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-arrayish": { @@ -8702,7 +10504,7 @@ "integrity": "sha1-Kb4sLY2UUIUri7r7Y1unuNjofsI=", "dev": true, "requires": { - "is-callable": "^1.0.4" + "is-callable": "1.1.4" } }, "is-binary-path": { @@ -8711,7 +10513,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "1.13.1" } }, "is-boolean-object": { @@ -8723,7 +10525,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-bzip2": { "version": "1.0.0", @@ -8741,8 +10543,9 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-date-object": { @@ -8754,17 +10557,19 @@ "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -8786,17 +10591,17 @@ "integrity": "sha1-XoXxlX4FKIMkf+s4aWWju6Ffuz0=", "dev": true, "requires": { - "has": "^1.0.1", - "is-arrow-function": "^2.0.3", - "is-boolean-object": "^1.0.0", - "is-callable": "^1.1.3", - "is-date-object": "^1.0.1", - "is-generator-function": "^1.0.6", - "is-number-object": "^1.0.3", - "is-regex": "^1.0.3", - "is-string": "^1.0.4", - "is-symbol": "^1.0.1", - "object.entries": "^1.0.4" + "has": "1.0.3", + "is-arrow-function": "2.0.3", + "is-boolean-object": "1.0.0", + "is-callable": "1.1.4", + "is-date-object": "1.0.1", + "is-generator-function": "1.0.7", + "is-number-object": "1.0.3", + "is-regex": "1.0.4", + "is-string": "1.0.4", + "is-symbol": "1.0.2", + "object.entries": "1.1.0" } }, "is-equal-shallow": { @@ -8805,13 +10610,14 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true }, "is-extglob": { "version": "2.1.1", @@ -8825,7 +10631,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-fullwidth-code-point": { @@ -8833,13 +10639,13 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-generator-function": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", - "integrity": "sha1-0hMuUpuwAAp/gHlNS99c1eWBNSI=", + "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==", "dev": true }, "is-glob": { @@ -8848,7 +10654,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "2.1.1" } }, "is-gzip": { @@ -8863,7 +10669,7 @@ "integrity": "sha1-a96Bqs3feLZZtmKdYpytxRqIbVw=", "dev": true, "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } }, "is-lower-case": { @@ -8872,18 +10678,13 @@ "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", "dev": true, "requires": { - "lower-case": "^1.1.0" + "lower-case": "1.1.4" } }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" - }, "is-my-ip-valid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha1-ezUbjo7dTTmV1NBmaA5mTZRpaCQ=", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", "dev": true }, "is-my-json-valid": { @@ -8892,11 +10693,11 @@ "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", "dev": true, "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" + "generate-function": "2.3.1", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" } }, "is-natural-number": { @@ -8909,8 +10710,9 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-number-object": { @@ -8928,9 +10730,10 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" } }, "is-posix-bracket": { @@ -8957,7 +10760,7 @@ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "has": "^1.0.1" + "has": "1.0.3" } }, "is-relative": { @@ -8983,7 +10786,7 @@ "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", "dev": true, "requires": { - "html-comment-regex": "^1.1.0" + "html-comment-regex": "1.1.2" } }, "is-symbol": { @@ -8992,7 +10795,7 @@ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "1.0.0" } }, "is-tar": { @@ -9004,7 +10807,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-upper-case": { "version": "1.1.2", @@ -9012,7 +10816,7 @@ "integrity": "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=", "dev": true, "requires": { - "upper-case": "^1.1.0" + "upper-case": "1.1.3" } }, "is-utf8": { @@ -9024,7 +10828,8 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=" + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true }, "is-zip": { "version": "1.0.0", @@ -9043,7 +10848,7 @@ "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", "dev": true, "requires": { - "buffer-alloc": "^1.2.0" + "buffer-alloc": "1.2.0" } }, "isexe": { @@ -9060,21 +10865,23 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "isomorphic-fetch": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" + "node-fetch": "1.7.3", + "whatwg-fetch": "3.0.0" } }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "istanbul": { "version": "0.4.5", @@ -9082,20 +10889,20 @@ "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", "dev": true, "requires": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" + "abbrev": "1.0.9", + "async": "1.5.2", + "escodegen": "1.8.1", + "esprima": "2.7.3", + "glob": "5.0.15", + "handlebars": "4.0.11", + "js-yaml": "3.13.1", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.4.0", + "resolve": "1.1.7", + "supports-color": "3.2.3", + "which": "1.2.14", + "wordwrap": "1.0.0" }, "dependencies": { "abbrev": { @@ -9116,11 +10923,11 @@ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" + "esprima": "2.7.3", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.2.0" } }, "esprima": { @@ -9141,11 +10948,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "levn": { @@ -9154,8 +10961,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "1.1.2", + "type-check": "0.3.2" } }, "optionator": { @@ -9164,12 +10971,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" } }, "resolve": { @@ -9185,7 +10992,7 @@ "dev": true, "optional": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "0.1.1" } }, "supports-color": { @@ -9194,7 +11001,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "1.0.0" } }, "wordwrap": { @@ -9211,10 +11018,10 @@ "integrity": "sha1-5UkpAKsLuoNe+oAkywC+mz7qJwA=", "dev": true, "requires": { - "convert-source-map": "^1.3.0", - "istanbul-lib-instrument": "^1.1.3", - "loader-utils": "^0.2.16", - "object-assign": "^4.1.0" + "convert-source-map": "1.6.0", + "istanbul-lib-instrument": "1.10.2", + "loader-utils": "0.2.17", + "object-assign": "4.1.1" }, "dependencies": { "big.js": { @@ -9235,10 +11042,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } } } @@ -9255,19 +11062,19 @@ "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", "dev": true, "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.2.1", + "semver": "5.7.0" }, "dependencies": { "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true } } @@ -9313,8 +11120,8 @@ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.1" }, "dependencies": { "esprima": { @@ -9325,37 +11132,30 @@ } } }, - "js2xmlparser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", - "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", - "requires": { - "xmlcreate": "^1.0.1" - } - }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "jsdoc": { "version": "https://github.com/geosolutions-it/jsdoc/tarball/fix_acorn_jsx", - "integrity": "sha1-Ns4ftr82366y/u53JTwehf6Liy4=", + "integrity": "sha512-Pt7BYmn+F/7li24gJ/hfSmuJNUlnCZhReqTj2sRo/ad2FMf9wr6du1jkbiNPsEqLGXd4qV3kkFH2y23HgK8guw==", "dev": true, "requires": { "acorn-jsx": "https://github.com/geosolutions-it/acorn-jsx/tarball/master", - "bluebird": "~3.4.6", - "catharsis": "~0.8.8", - "escape-string-regexp": "~1.0.5", + "bluebird": "3.4.7", + "catharsis": "0.8.10", + "escape-string-regexp": "1.0.5", "espree": "https://github.com/geosolutions-it/espree/tarball/fix_acorn_jsx", - "js2xmlparser": "~1.0.0", - "klaw": "~1.3.0", - "marked": "~0.3.6", - "mkdirp": "~0.5.1", - "requizzle": "~0.2.1", - "strip-json-comments": "~2.0.1", + "js2xmlparser": "1.0.0", + "klaw": "1.3.1", + "marked": "0.3.19", + "mkdirp": "0.5.1", + "requizzle": "0.2.2", + "strip-json-comments": "2.0.1", "taffydb": "2.6.2", - "underscore": "~1.8.3" + "underscore": "1.8.3" }, "dependencies": { "bluebird": { @@ -9376,7 +11176,7 @@ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "dev": true, "requires": { - "graceful-fs": "^4.1.9" + "graceful-fs": "4.1.15" } } } @@ -9387,8 +11187,8 @@ "integrity": "sha1-KwhuXv6QpY31AVbmr/gjWcnrUno=", "dev": true, "requires": { - "jstransform": "^11.0.1", - "object-assign": "^3.0.0" + "jstransform": "11.0.3", + "object-assign": "3.0.0" }, "dependencies": { "object-assign": { @@ -9405,12 +11205,12 @@ "integrity": "sha1-wrTC9rczChA+rfyAeH7V3WyPTPw=", "dev": true, "requires": { - "bluebird": "^3.5.0", - "fs-extra": "^2.0.0", - "glob": "^7.1.1", - "jsdoc": "^3.4.3", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.4", + "bluebird": "3.5.1", + "fs-extra": "2.1.2", + "glob": "7.1.1", + "jsdoc": "https://github.com/geosolutions-it/jsdoc/tarball/fix_acorn_jsx", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.5", "tmp": "0.0.31" }, "dependencies": { @@ -9420,8 +11220,8 @@ "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0" + "graceful-fs": "4.1.15", + "jsonfile": "2.4.0" } }, "jsonfile": { @@ -9441,25 +11241,25 @@ "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", "dev": true, "requires": { - "abab": "^1.0.3", - "acorn": "^4.0.4", - "acorn-globals": "^3.1.0", - "array-equal": "^1.0.0", - "content-type-parser": "^1.0.1", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.2.37 < 0.3.0", - "escodegen": "^1.6.1", - "html-encoding-sniffer": "^1.0.1", - "nwmatcher": ">= 1.3.9 < 2.0.0", - "parse5": "^1.5.1", - "request": "^2.79.0", - "sax": "^1.2.1", - "symbol-tree": "^3.2.1", - "tough-cookie": "^2.3.2", - "webidl-conversions": "^4.0.0", - "whatwg-encoding": "^1.0.1", - "whatwg-url": "^4.3.0", - "xml-name-validator": "^2.0.1" + "abab": "1.0.4", + "acorn": "4.0.13", + "acorn-globals": "3.1.0", + "array-equal": "1.0.0", + "content-type-parser": "1.0.2", + "cssom": "0.3.6", + "cssstyle": "0.2.37", + "escodegen": "1.7.1", + "html-encoding-sniffer": "1.0.2", + "nwmatcher": "1.4.4", + "parse5": "1.5.1", + "request": "2.81.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.4", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.5", + "whatwg-url": "4.8.0", + "xml-name-validator": "2.0.1" }, "dependencies": { "acorn": { @@ -9494,7 +11294,8 @@ "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -9505,14 +11306,16 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, "requires": { - "jsonify": "~0.0.0" + "jsonify": "0.0.0" } }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json3": { "version": "3.3.2", @@ -9525,7 +11328,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "minimist": "^1.2.0" + "minimist": "1.2.0" } }, "jsonfile": { @@ -9533,22 +11336,23 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "4.1.15" } }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true }, "jsonix": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/jsonix/-/jsonix-2.4.1.tgz", "integrity": "sha1-fKkUqFo2nyezDxPMDBWiJYuJSzM=", "requires": { - "amdefine": "0.x.x", - "xmldom": ">=0.1.21", - "xmlhttprequest": "1.x.x" + "amdefine": "0.1.1", + "xmldom": "0.1.27", + "xmlhttprequest": "1.8.0" } }, "jsonlint-lines": { @@ -9556,8 +11360,8 @@ "resolved": "https://registry.npmjs.org/jsonlint-lines/-/jsonlint-lines-1.7.1.tgz", "integrity": "sha1-UH3mgNP7jEvhZBzFfW9nnynxeP8=", "requires": { - "JSV": ">= 4.0.x", - "nomnom": ">= 1.5.x" + "JSV": "4.0.2", + "nomnom": "1.8.1" } }, "jsonp": { @@ -9565,7 +11369,7 @@ "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz", "integrity": "sha1-pltPoPEL2nGaBUQep7lMVfPhW64=", "requires": { - "debug": "^2.1.3" + "debug": "2.6.9" }, "dependencies": { "debug": { @@ -9593,6 +11397,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -9603,7 +11408,8 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true } } }, @@ -9613,11 +11419,11 @@ "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", "dev": true, "requires": { - "base62": "^1.1.0", - "commoner": "^0.10.1", - "esprima-fb": "^15001.1.0-dev-harmony-fb", - "object-assign": "^2.0.0", - "source-map": "^0.4.2" + "base62": "1.2.8", + "commoner": "0.10.8", + "esprima-fb": "15001.1.0-dev-harmony-fb", + "object-assign": "2.1.1", + "source-map": "0.4.4" }, "dependencies": { "esprima-fb": { @@ -9638,7 +11444,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "0.1.1" } } } @@ -9651,13 +11457,13 @@ "jszip": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", - "integrity": "sha1-48KmxtcGrG5gMxQDbUPNQL7v3zc=", + "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", "requires": { - "core-js": "~2.3.0", - "es6-promise": "~3.0.2", - "lie": "~3.1.0", - "pako": "~1.0.2", - "readable-stream": "~2.0.6" + "core-js": "2.3.0", + "es6-promise": "3.0.2", + "lie": "3.1.1", + "pako": "1.0.10", + "readable-stream": "2.0.6" }, "dependencies": { "core-js": { @@ -9672,44 +11478,39 @@ } } }, - "junk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-2.1.0.tgz", - "integrity": "sha1-9DG0t/By3FAKXxDOf07HGTDnATQ=" - }, "karma": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/karma/-/karma-1.5.0.tgz", "integrity": "sha1-nEwU8EAL7ywEyOjmv/WTcQJcwAk=", "dev": true, "requires": { - "bluebird": "^3.3.0", - "body-parser": "^1.16.1", - "chokidar": "^1.4.1", - "colors": "^1.1.0", - "combine-lists": "^1.0.0", - "connect": "^3.6.0", - "core-js": "^2.2.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.0", - "expand-braces": "^0.1.1", - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "http-proxy": "^1.13.0", - "isbinaryfile": "^3.0.0", - "lodash": "^3.8.0", - "log4js": "^0.6.31", - "mime": "^1.3.4", - "minimatch": "^3.0.0", - "optimist": "^0.6.1", - "qjobs": "^1.1.4", - "range-parser": "^1.2.0", - "rimraf": "^2.6.0", - "safe-buffer": "^5.0.1", + "bluebird": "3.5.1", + "body-parser": "1.19.0", + "chokidar": "1.5.2", + "colors": "1.1.2", + "combine-lists": "1.0.1", + "connect": "3.6.6", + "core-js": "2.6.5", + "di": "0.0.1", + "dom-serialize": "2.2.1", + "expand-braces": "0.1.2", + "glob": "7.1.1", + "graceful-fs": "4.1.15", + "http-proxy": "1.17.0", + "isbinaryfile": "3.0.3", + "lodash": "3.10.1", + "log4js": "0.6.38", + "mime": "1.4.1", + "minimatch": "3.0.4", + "optimist": "0.6.1", + "qjobs": "1.2.0", + "range-parser": "1.2.1", + "rimraf": "2.6.3", + "safe-buffer": "5.1.2", "socket.io": "1.7.3", - "source-map": "^0.5.3", + "source-map": "0.5.7", "tmp": "0.0.31", - "useragent": "^2.1.12" + "useragent": "2.3.0" }, "dependencies": { "accepts": { @@ -9718,7 +11519,7 @@ "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", "dev": true, "requires": { - "mime-types": "~2.1.11", + "mime-types": "2.1.24", "negotiator": "0.6.1" } }, @@ -9841,7 +11642,7 @@ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { - "glob": "^7.1.3" + "glob": "7.1.4" }, "dependencies": { "glob": { @@ -9850,12 +11651,12 @@ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } } } @@ -9953,8 +11754,8 @@ "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", "dev": true, "requires": { - "options": ">=0.0.5", - "ultron": "1.0.x" + "options": "0.0.6", + "ultron": "1.0.2" } }, "xmlhttprequest-ssl": { @@ -9971,8 +11772,8 @@ "integrity": "sha1-wnkMWjKxVXfQ//Wk1aJwOztDnCU=", "dev": true, "requires": { - "fs-access": "^1.0.0", - "which": "^1.2.1" + "fs-access": "1.0.1", + "which": "1.2.14" } }, "karma-cli": { @@ -9981,7 +11782,7 @@ "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=", "dev": true, "requires": { - "resolve": "^1.1.6" + "resolve": "1.10.1" } }, "karma-coverage": { @@ -9990,11 +11791,11 @@ "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=", "dev": true, "requires": { - "dateformat": "^1.0.6", - "istanbul": "^0.4.0", - "lodash": "^3.8.0", - "minimatch": "^3.0.0", - "source-map": "^0.5.1" + "dateformat": "1.0.12", + "istanbul": "0.4.5", + "lodash": "3.10.1", + "minimatch": "3.0.4", + "source-map": "0.5.7" }, "dependencies": { "lodash": { @@ -10011,8 +11812,8 @@ "integrity": "sha1-b5YO5zh5Owh7qZKEqFTva+TTKuA=", "dev": true, "requires": { - "coveralls": "~2.11.2", - "glob": "~5.0.0" + "coveralls": "2.11.16", + "glob": "5.0.15" }, "dependencies": { "glob": { @@ -10021,11 +11822,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } } } @@ -10042,7 +11843,7 @@ "integrity": "sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw=", "dev": true, "requires": { - "lodash": "^4.6.1" + "lodash": "4.17.5" } }, "karma-junit-reporter": { @@ -10051,7 +11852,7 @@ "integrity": "sha1-T5xAzt+xo5X4rvh2q/lhiZF8Y5Y=", "dev": true, "requires": { - "path-is-absolute": "^1.0.0", + "path-is-absolute": "1.0.1", "xmlbuilder": "8.2.2" }, "dependencies": { @@ -10093,11 +11894,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -10106,7 +11907,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -10117,7 +11918,7 @@ "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", "dev": true, "requires": { - "graceful-fs": "^4.1.2" + "graceful-fs": "4.1.15" } }, "karma-webpack": { @@ -10126,11 +11927,11 @@ "integrity": "sha1-vTg1CvVkXJZECQdwk56+fOcm+GQ=", "dev": true, "requires": { - "async": "~0.9.0", - "loader-utils": "^0.2.5", - "lodash": "^3.8.0", - "source-map": "^0.1.41", - "webpack-dev-middleware": "^1.0.11" + "async": "0.9.2", + "loader-utils": "0.2.17", + "lodash": "3.10.1", + "source-map": "0.1.43", + "webpack-dev-middleware": "1.12.2" }, "dependencies": { "async": { @@ -10157,10 +11958,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } }, "lodash": { @@ -10175,7 +11976,7 @@ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "0.1.1" } } } @@ -10199,22 +12000,16 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { - "is-buffer": "^1.1.5" - } - }, - "klaw": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", - "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", - "requires": { - "graceful-fs": "^4.1.9" + "is-buffer": "1.1.6" } }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true }, "lcid": { "version": "1.0.0", @@ -10222,7 +12017,7 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "1.0.0" } }, "lcov-parse": { @@ -10261,7 +12056,7 @@ "resolved": "https://registry.npmjs.org/leaflet-simple-graticule/-/leaflet-simple-graticule-1.0.2.tgz", "integrity": "sha1-bmhecTRRXOADnWaGJHTUq/B+noc=", "requires": { - "leaflet": "^0.7.3" + "leaflet": "0.7.7" }, "dependencies": { "leaflet": { @@ -10286,7 +12081,7 @@ "resolved": "https://registry.npmjs.org/leaflet.nontiledlayer/-/leaflet.nontiledlayer-1.0.7.tgz", "integrity": "sha1-AlapxGYGJ0HBioBO9JCNCs2mubo=", "requires": { - "leaflet": "^1.0.2" + "leaflet": "1.3.1" } }, "less": { @@ -10295,13 +12090,13 @@ "integrity": "sha1-bL/qIrO4MDBOml+zcdVPpIDJ188=", "dev": true, "requires": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "mime": "^1.2.11", - "mkdirp": "^0.5.0", - "promise": "^7.1.1", - "source-map": "^0.5.3" + "errno": "0.1.7", + "graceful-fs": "4.1.15", + "image-size": "0.5.5", + "mime": "1.4.1", + "mkdirp": "0.5.1", + "promise": "7.3.1", + "source-map": "0.5.7" } }, "less-loader": { @@ -10310,7 +12105,7 @@ "integrity": "sha1-ttj4E5yEk98J2ZKpOgBzSwj4RSg=", "dev": true, "requires": { - "loader-utils": "^0.2.5" + "loader-utils": "0.2.17" }, "dependencies": { "big.js": { @@ -10331,10 +12126,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } } } @@ -10345,7 +12140,7 @@ "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=", "dev": true, "requires": { - "clean-css": "^3.0.1" + "clean-css": "3.4.28" } }, "leven": { @@ -10360,8 +12155,8 @@ "integrity": "sha1-uo0znQykphDjo/FFucr0iAcVUFQ=", "dev": true, "requires": { - "prelude-ls": "~1.1.0", - "type-check": "~0.3.1" + "prelude-ls": "1.1.2", + "type-check": "0.3.2" } }, "lie": { @@ -10369,9 +12164,14 @@ "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", "requires": { - "immediate": "~3.0.5" + "immediate": "3.0.6" } }, + "lineclip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/lineclip/-/lineclip-1.1.5.tgz", + "integrity": "sha1-K/JgZ9lDVP6r+R5CdoI221YW/RM=" + }, "load-json-file": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -10396,9 +12196,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" + "big.js": "5.2.2", + "emojis-list": "2.1.0", + "json5": "1.0.1" } }, "lodash": { @@ -10417,8 +12217,8 @@ "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" } }, "lodash._basecopy": { @@ -10433,8 +12233,8 @@ "integrity": "sha1-B3D/gBMa9uNPO1EXlqe6UhTmX/c=", "dev": true, "requires": { - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" } }, "lodash._basefor": { @@ -10455,9 +12255,9 @@ "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", "dev": true, "requires": { - "lodash._bindcallback": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash.restparam": "^3.0.0" + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" } }, "lodash._getnative": { @@ -10483,8 +12283,8 @@ "integrity": "sha1-/2G5oBens699MObFPeKK+hm4dQo=", "dev": true, "requires": { - "lodash._basefor": "^3.0.0", - "lodash.keysin": "^3.0.0" + "lodash._basefor": "3.0.3", + "lodash.keysin": "3.0.8" } }, "lodash.assign": { @@ -10493,9 +12293,9 @@ "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", "dev": true, "requires": { - "lodash._baseassign": "^3.0.0", - "lodash._createassigner": "^3.0.0", - "lodash.keys": "^3.0.0" + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1", + "lodash.keys": "3.1.2" } }, "lodash.clonedeep": { @@ -10514,7 +12314,7 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-3.1.1.tgz", "integrity": "sha1-gSIRw3ipTMKdWqTjNGzwv846ffU=", "requires": { - "lodash._getnative": "^3.0.0" + "lodash._getnative": "3.9.1" } }, "lodash.flow": { @@ -10543,9 +12343,9 @@ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" } }, "lodash.keysin": { @@ -10554,8 +12354,8 @@ "integrity": "sha1-IsRJPrvtsUJ5YqVLRFssinZ/tH8=", "dev": true, "requires": { - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" } }, "lodash.memoize": { @@ -10570,11 +12370,11 @@ "integrity": "sha1-8lKoVbIEa2G805BLJvdr0u/GVVA=", "dev": true, "requires": { - "lodash._baseflatten": "^3.0.0", - "lodash._bindcallback": "^3.0.0", - "lodash._pickbyarray": "^3.0.0", - "lodash._pickbycallback": "^3.0.0", - "lodash.restparam": "^3.0.0" + "lodash._baseflatten": "3.1.4", + "lodash._bindcallback": "3.0.1", + "lodash._pickbyarray": "3.0.2", + "lodash._pickbycallback": "3.0.0", + "lodash.restparam": "3.6.1" } }, "lodash.restparam": { @@ -10600,7 +12400,7 @@ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", "requires": { - "chalk": "^1.0.0" + "chalk": "1.1.3" }, "dependencies": { "ansi-styles": { @@ -10613,11 +12413,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -10625,7 +12425,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -10636,8 +12436,8 @@ "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", "dev": true, "requires": { - "readable-stream": "~1.0.2", - "semver": "~4.3.3" + "readable-stream": "1.0.34", + "semver": "4.3.6" }, "dependencies": { "isarray": { @@ -10652,10 +12452,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "core-util-is": "1.0.2", + "inherits": "2.0.3", "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" } }, "semver": { @@ -10666,17 +12466,23 @@ } } }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "js-tokens": "4.0.0" } }, "loud-rejection": { @@ -10685,8 +12491,8 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" } }, "lower-case": { @@ -10701,7 +12507,7 @@ "integrity": "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=", "dev": true, "requires": { - "lower-case": "^1.1.2" + "lower-case": "1.1.4" } }, "lpad-align": { @@ -10710,10 +12516,10 @@ "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", "dev": true, "requires": { - "get-stdin": "^4.0.1", - "indent-string": "^2.1.0", - "longest": "^1.0.0", - "meow": "^3.3.0" + "get-stdin": "4.0.1", + "indent-string": "2.1.0", + "longest": "1.0.1", + "meow": "3.7.0" } }, "lru-cache": { @@ -10726,18 +12532,11 @@ "resolved": "https://registry.npmjs.org/lrucache/-/lrucache-1.0.3.tgz", "integrity": "sha1-Ox3tDRuoLhiLm9q6nu5khvhkpDQ=" }, - "magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", - "requires": { - "vlq": "^0.2.2" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true }, "map-obj": { "version": "1.0.1", @@ -10749,21 +12548,23 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, "requires": { - "object-visit": "^1.0.0" + "object-visit": "1.0.1" } }, "marked": { "version": "0.3.19", "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", - "integrity": "sha1-XUf3CcTJ/Dwha21GEnKA9As515A=" + "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", + "dev": true }, "matchmedia": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/matchmedia/-/matchmedia-0.1.2.tgz", "integrity": "sha1-z9R/K/aPvH9eob06PPFxXsujwb0=", "requires": { - "css-mediaquery": "^0.1.2" + "css-mediaquery": "0.1.2" } }, "material-colors": { @@ -10788,9 +12589,9 @@ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "hash-base": "3.0.4", + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, "mdn-data": { @@ -10810,8 +12611,8 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "errno": "0.1.7", + "readable-stream": "2.0.6" } }, "meow": { @@ -10820,16 +12621,16 @@ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.5.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" } }, "merge-descriptors": { @@ -10853,26 +12654,28 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -10882,24 +12685,27 @@ "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", "dev": true, "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "bn.js": "4.11.8", + "brorand": "1.1.0" } }, "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=" + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true }, "mime-db": { "version": "1.40.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true }, "mime-types": { "version": "2.1.24", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, "requires": { "mime-db": "1.40.0" } @@ -10909,13 +12715,13 @@ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "requires": { - "dom-walk": "^0.1.0" + "dom-walk": "0.1.1" } }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, "minimalistic-crypto-utils": { @@ -10927,9 +12733,10 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -10937,38 +12744,23 @@ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, - "minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "requires": { - "minipass": "^2.2.1" - } - }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "for-in": "1.0.2", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -10977,6 +12769,7 @@ "version": "0.5.1", "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" }, @@ -10984,15 +12777,11 @@ "minimist": { "version": "0.0.8", "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true } } }, - "mkpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", - "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=" - }, "mocha": { "version": "2.4.5", "resolved": "http://registry.npmjs.org/mocha/-/mocha-2.4.5.tgz", @@ -11037,9 +12826,9 @@ "integrity": "sha1-4xPusknHr/qlxHUoaw4RW1mDlGc=", "dev": true, "requires": { - "graceful-fs": "~2.0.0", - "inherits": "2", - "minimatch": "~0.2.11" + "graceful-fs": "2.0.3", + "inherits": "2.0.3", + "minimatch": "0.2.14" } }, "graceful-fs": { @@ -11054,8 +12843,8 @@ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "lru-cache": "2.7.3", + "sigmund": "1.0.1" } }, "ms": { @@ -11074,13 +12863,16 @@ }, "moment": { "version": "2.21.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz", + "resolved": "http://registry.npmjs.org/moment/-/moment-2.21.0.tgz", "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==" }, - "mout": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mout/-/mout-1.0.0.tgz", - "integrity": "sha1-m98dSvV9ZtR8s1OmM1oygQmOFQE=" + "monotone-convex-hull-2d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/monotone-convex-hull-2d/-/monotone-convex-hull-2d-1.0.1.tgz", + "integrity": "sha1-R/Xa6t88Sv03dkuqGqh4ekDu4Iw=", + "requires": { + "robust-orientation": "1.1.3" + } }, "ms": { "version": "2.1.1", @@ -11094,9 +12886,9 @@ "dev": true }, "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, @@ -11104,24 +12896,26 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -11137,7 +12931,7 @@ "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", "dev": true, "requires": { - "xml-char-classes": "^1.0.0" + "xml-char-classes": "1.0.0" } }, "ncp": { @@ -11149,7 +12943,8 @@ "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true }, "neo-async": { "version": "2.6.1", @@ -11171,10 +12966,10 @@ "no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "dev": true, "requires": { - "lower-case": "^1.1.1" + "lower-case": "1.1.4" } }, "node-dir": { @@ -11183,7 +12978,7 @@ "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", "dev": true, "requires": { - "minimatch": "^3.0.2" + "minimatch": "3.0.4" } }, "node-ensure": { @@ -11194,10 +12989,10 @@ "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8=", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "encoding": "0.1.12", + "is-stream": "1.1.0" } }, "node-geo-distance": { @@ -11211,28 +13006,28 @@ "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", "dev": true, "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", + "assert": "1.5.0", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "3.0.0", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.6", + "stream-browserify": "2.0.2", + "stream-http": "2.8.3", + "string_decoder": "1.2.0", + "timers-browserify": "2.0.10", "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", + "url": "0.11.0", + "util": "0.11.1", "vm-browserify": "0.0.4" }, "dependencies": { @@ -11245,7 +13040,7 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "readable-stream": { @@ -11280,7 +13075,7 @@ "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -11290,8 +13085,8 @@ "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", "requires": { - "chalk": "~0.4.0", - "underscore": "~1.6.0" + "chalk": "0.4.0", + "underscore": "1.6.0" }, "dependencies": { "underscore": { @@ -11305,8 +13100,9 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, "requires": { - "abbrev": "1" + "abbrev": "1.1.1" } }, "normalize-package-data": { @@ -11315,10 +13111,10 @@ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "2.7.1", + "resolve": "1.10.1", + "semver": "5.7.0", + "validate-npm-package-license": "3.0.4" } }, "normalize-path": { @@ -11327,7 +13123,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } }, "normalize-range": { @@ -11342,10 +13138,10 @@ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", "dev": true, "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" } }, "nouislider": { @@ -11353,24 +13149,13 @@ "resolved": "https://registry.npmjs.org/nouislider/-/nouislider-9.2.0.tgz", "integrity": "sha1-6HxQfeKwtNB1A4taQlR8fbvrr2k=" }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "dev": true, "requires": { - "boolbase": "~1.0.0" + "boolbase": "1.0.0" } }, "null-check": { @@ -11393,13 +13178,14 @@ "nwmatcher": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha1-IoVjHzSpXw0Dlc2QDJbtObWPNG4=", + "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", "dev": true }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true }, "object-assign": { "version": "4.1.1", @@ -11409,24 +13195,27 @@ "object-component": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -11447,8 +13236,9 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, "requires": { - "isobject": "^3.0.0" + "isobject": "3.0.1" } }, "object.entries": { @@ -11457,10 +13247,10 @@ "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "define-properties": "1.1.3", + "es-abstract": "1.13.0", + "function-bind": "1.1.1", + "has": "1.0.3" } }, "object.omit": { @@ -11469,22 +13259,23 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" } }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, "ogc-schemas": { @@ -11492,8 +13283,8 @@ "resolved": "https://registry.npmjs.org/ogc-schemas/-/ogc-schemas-2.6.1.tgz", "integrity": "sha1-CDSwDYA49W/t0gZGfzTBMOmXb5I=", "requires": { - "jsonix": ">=2.4.0", - "w3c-schemas": ">=1.4.0" + "jsonix": "2.4.1", + "w3c-schemas": "1.4.0" }, "dependencies": { "w3c-schemas": { @@ -11501,15 +13292,26 @@ "resolved": "https://registry.npmjs.org/w3c-schemas/-/w3c-schemas-1.4.0.tgz", "integrity": "sha1-9Nr+ktl69WqZs/qhUg9ZLfKZhCg=", "requires": { - "jsonix": ">=2.4.0" + "jsonix": "2.4.1" } } } }, + "ol": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ol/-/ol-5.3.0.tgz", + "integrity": "sha512-UrOJGNI5XdYfE9n43RJdsMq25SjI4nIi5Kf0kxi+q6vEknzeRxM/wgYf8FMs7Ss3URuIbsKmetW9dVMOYB/DkQ==", + "requires": { + "pbf": "3.1.0", + "pixelworks": "1.1.0", + "rbush": "2.0.2" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, "requires": { "ee-first": "1.1.1" } @@ -11524,8 +13326,9 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "onetime": { @@ -11534,97 +13337,31 @@ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, - "openlayers": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/openlayers/-/openlayers-4.6.4.tgz", - "integrity": "sha512-Oru7/xniirjech7H5zkMQSUj/JUymNveiE4vAwmyjAmcoNyO4zTRD/Pp7BPfxBPuAz45vDl78H1wEQD7RGWkGg==", - "requires": { - "async": "2.6.0", - "closure-util": "1.26.0", - "fs-extra": "4.0.3", - "jsdoc": "3.5.5", - "nomnom": "1.8.1", - "pbf": "3.1.0", - "pixelworks": "1.1.0", - "rbush": "2.0.1", - "rollup": "^0.52.0", - "rollup-plugin-cleanup": "^2.0.0", - "rollup-plugin-commonjs": "^8.2.6", - "rollup-plugin-node-resolve": "^3.0.0", - "temp": "0.8.3", - "walk": "2.3.9" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsdoc": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", - "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", - "requires": { - "babylon": "7.0.0-beta.19", - "bluebird": "~3.5.0", - "catharsis": "~0.8.9", - "escape-string-regexp": "~1.0.5", - "js2xmlparser": "~3.0.0", - "klaw": "~2.0.0", - "marked": "~0.3.6", - "mkdirp": "~0.5.1", - "requizzle": "~0.2.1", - "strip-json-comments": "~2.0.1", - "taffydb": "2.6.2", - "underscore": "~1.8.3" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "rbush": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.1.tgz", - "integrity": "sha1-TPrKKMMGS8DudUMaG3mZDode76k=", - "requires": { - "quickselect": "^1.0.0" - } - } - } - }, "opn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "dev": true, "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" } }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.10", + "wordwrap": "0.0.3" }, "dependencies": { "minimist": { "version": "0.0.10", "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true } } }, @@ -11634,12 +13371,12 @@ "integrity": "sha1-t1qJlaLUF98ltuTjhi9QqohlE2g=", "dev": true, "requires": { - "deep-is": "~0.1.2", - "fast-levenshtein": "~1.0.0", - "levn": "~0.2.5", - "prelude-ls": "~1.1.1", - "type-check": "~0.3.1", - "wordwrap": "~0.0.2" + "deep-is": "0.1.3", + "fast-levenshtein": "1.0.7", + "levn": "0.2.5", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "0.0.3" } }, "options": { @@ -11660,7 +13397,7 @@ "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", "dev": true, "requires": { - "url-parse": "^1.4.3" + "url-parse": "1.4.7" } }, "os-browserify": { @@ -11687,7 +13424,8 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "output-file-sync": { "version": "1.1.2", @@ -11695,9 +13433,9 @@ "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", "dev": true, "requires": { - "graceful-fs": "^4.1.4", - "mkdirp": "^0.5.1", - "object-assign": "^4.1.0" + "graceful-fs": "4.1.15", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" } }, "pako": { @@ -11717,13 +13455,13 @@ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", "dev": true, "requires": { - "no-case": "^2.2.0" + "no-case": "2.3.2" } }, "parchment": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", - "integrity": "sha1-rt7Xq5OP6SHUw0vDOc4RaLwv/eU=" + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" }, "parse-asn1": { "version": "5.1.4", @@ -11731,12 +13469,12 @@ "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "asn1.js": "4.10.1", + "browserify-aes": "1.2.0", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.17", + "safe-buffer": "5.1.2" } }, "parse-glob": { @@ -11745,10 +13483,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" }, "dependencies": { "is-extglob": { @@ -11763,7 +13501,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } } } @@ -11774,7 +13512,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "1.3.2" } }, "parse-key": { @@ -11792,10 +13530,10 @@ "parsedbf": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parsedbf/-/parsedbf-1.0.0.tgz", - "integrity": "sha1-+t5+T62VtwBv8Li1nymnZ+CGVlk=", + "integrity": "sha512-qm8G6BPAL8yesN4UP4cNq1rxI5g5OyQNwS/SiLvjVT87PZ+9sbRdIANqH8kPKWvIiDbFM2V3C0xUuh/jvUqRdQ==", "requires": { - "iconv-lite": "^0.4.15", - "text-encoding-polyfill": "^0.6.7" + "iconv-lite": "0.4.24", + "text-encoding-polyfill": "0.6.7" } }, "parsejson": { @@ -11804,23 +13542,25 @@ "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", "dev": true, "requires": { - "better-assert": "~1.0.0" + "better-assert": "1.0.2" } }, "parseqs": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, "requires": { - "better-assert": "~1.0.0" + "better-assert": "1.0.2" } }, "parseuri": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, "requires": { - "better-assert": "~1.0.0" + "better-assert": "1.0.2" } }, "parseurl": { @@ -11835,14 +13575,15 @@ "integrity": "sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=", "dev": true, "requires": { - "camel-case": "^3.0.0", - "upper-case-first": "^1.1.0" + "camel-case": "3.0.0", + "upper-case-first": "1.1.2" } }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true }, "path-browserify": { "version": "0.0.0", @@ -11856,7 +13597,7 @@ "integrity": "sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU=", "dev": true, "requires": { - "no-case": "^2.2.0" + "no-case": "2.3.2" } }, "path-dirname": { @@ -11874,12 +13615,14 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "path-to-regexp": { "version": "1.7.0", @@ -11902,9 +13645,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "graceful-fs": "4.1.15", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, "pbf": { @@ -11912,8 +13655,8 @@ "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.1.0.tgz", "integrity": "sha512-/hYJmIsTmh7fMkHAWWXJ5b8IKLWdjdlAFb3IHkRBn1XUhIYBChVGfVwmHEAV3UfXTxsP/AKfYTXTS/dCPxJd5w==", "requires": { - "ieee754": "^1.1.6", - "resolve-protobuf-schema": "^2.0.0" + "ieee754": "1.1.13", + "resolve-protobuf-schema": "2.1.0" } }, "pbkdf2": { @@ -11922,11 +13665,11 @@ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", "dev": true, "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" } }, "pdfjs-dist": { @@ -11934,8 +13677,8 @@ "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-1.10.100.tgz", "integrity": "sha512-aCfONGqlBeazYxik3rjd7xaoCKMRYECwZSCC3EC3weqibF2V1Bp/v9WZbF7Lyy5Q6UE4NqOYu126r7U+Le4Uhg==", "requires": { - "node-ensure": "^0.0.0", - "worker-loader": "^1.0.0" + "node-ensure": "0.0.0", + "worker-loader": "1.1.1" } }, "pdfviewer": { @@ -11952,7 +13695,8 @@ "performance-now": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true }, "pify": { "version": "2.3.0", @@ -11972,7 +13716,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pixelworks": { @@ -11983,25 +13727,30 @@ "platform": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", - "integrity": "sha1-+2lYxpbgfikY0u7aDwvJRI1zNEQ=" + "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==" }, "plur": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", "requires": { - "irregular-plurals": "^1.0.0" + "irregular-plurals": "1.4.0" } }, + "point-in-polygon": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.0.1.tgz", + "integrity": "sha1-1Ztk6P7kHElFiqyCtWcYxZV7Kvc=" + }, "portfinder": { "version": "1.0.20", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", "dev": true, "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" }, "dependencies": { "async": { @@ -12030,7 +13779,8 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true }, "postcss": { "version": "5.2.16", @@ -12038,10 +13788,10 @@ "integrity": "sha1-cysxAAAPn/g3mkilODntCXN2rVc=", "dev": true, "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "chalk": "1.1.3", + "js-base64": "2.5.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" }, "dependencies": { "ansi-styles": { @@ -12056,11 +13806,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" }, "dependencies": { "supports-color": { @@ -12077,7 +13827,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -12086,7 +13836,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "1.0.0" } } } @@ -12097,9 +13847,9 @@ "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "dev": true, "requires": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" + "postcss": "5.2.16", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" } }, "postcss-colormin": { @@ -12108,9 +13858,9 @@ "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", "dev": true, "requires": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" + "colormin": "1.1.2", + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1" } }, "postcss-convert-values": { @@ -12119,8 +13869,8 @@ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", "dev": true, "requires": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1" } }, "postcss-discard-comments": { @@ -12129,7 +13879,7 @@ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "dev": true, "requires": { - "postcss": "^5.0.14" + "postcss": "5.2.16" } }, "postcss-discard-duplicates": { @@ -12138,7 +13888,7 @@ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", "dev": true, "requires": { - "postcss": "^5.0.4" + "postcss": "5.2.16" } }, "postcss-discard-empty": { @@ -12147,7 +13897,7 @@ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "dev": true, "requires": { - "postcss": "^5.0.14" + "postcss": "5.2.16" } }, "postcss-discard-overridden": { @@ -12156,7 +13906,7 @@ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "dev": true, "requires": { - "postcss": "^5.0.16" + "postcss": "5.2.16" } }, "postcss-discard-unused": { @@ -12165,8 +13915,8 @@ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "dev": true, "requires": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" + "postcss": "5.2.16", + "uniqs": "2.0.0" } }, "postcss-filter-plugins": { @@ -12175,7 +13925,7 @@ "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", "dev": true, "requires": { - "postcss": "^5.0.4" + "postcss": "5.2.16" } }, "postcss-load-config": { @@ -12184,10 +13934,10 @@ "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", "dev": true, "requires": { - "cosmiconfig": "^2.1.0", - "object-assign": "^4.1.0", - "postcss-load-options": "^1.2.0", - "postcss-load-plugins": "^2.3.0" + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" } }, "postcss-load-options": { @@ -12196,8 +13946,8 @@ "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", "dev": true, "requires": { - "cosmiconfig": "^2.1.0", - "object-assign": "^4.1.0" + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" } }, "postcss-load-plugins": { @@ -12206,8 +13956,8 @@ "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", "dev": true, "requires": { - "cosmiconfig": "^2.1.1", - "object-assign": "^4.1.0" + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" } }, "postcss-loader": { @@ -12216,10 +13966,10 @@ "integrity": "sha1-piHqH6KQYqg5cqRvVEhncTAZFus=", "dev": true, "requires": { - "loader-utils": "^1.0.2", - "object-assign": "^4.1.1", - "postcss": "^5.2.15", - "postcss-load-config": "^1.2.0" + "loader-utils": "1.2.3", + "object-assign": "4.1.1", + "postcss": "5.2.16", + "postcss-load-config": "1.2.0" } }, "postcss-merge-idents": { @@ -12228,9 +13978,9 @@ "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", "dev": true, "requires": { - "has": "^1.0.1", - "postcss": "^5.0.10", - "postcss-value-parser": "^3.1.1" + "has": "1.0.3", + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1" } }, "postcss-merge-longhand": { @@ -12239,7 +13989,7 @@ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", "dev": true, "requires": { - "postcss": "^5.0.4" + "postcss": "5.2.16" } }, "postcss-merge-rules": { @@ -12248,11 +13998,11 @@ "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", "dev": true, "requires": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.16", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.3" } }, "postcss-message-helpers": { @@ -12267,9 +14017,9 @@ "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", "dev": true, "requires": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" + "object-assign": "4.1.1", + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1" } }, "postcss-minify-gradients": { @@ -12278,8 +14028,8 @@ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", "dev": true, "requires": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1" } }, "postcss-minify-params": { @@ -12288,10 +14038,10 @@ "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", "dev": true, "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" + "alphanum-sort": "1.0.2", + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1", + "uniqs": "2.0.0" } }, "postcss-minify-selectors": { @@ -12300,10 +14050,10 @@ "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", "dev": true, "requires": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" + "alphanum-sort": "1.0.2", + "has": "1.0.3", + "postcss": "5.2.16", + "postcss-selector-parser": "2.2.3" } }, "postcss-modules-extract-imports": { @@ -12312,7 +14062,7 @@ "integrity": "sha1-8dNTPuo/553/qXojccyRY5NAHcU=", "dev": true, "requires": { - "postcss": "^5.0.4" + "postcss": "5.2.16" } }, "postcss-modules-local-by-default": { @@ -12321,8 +14071,8 @@ "integrity": "sha1-ibOtZfZplzOGgElTlIqtI7czDV8=", "dev": true, "requires": { - "css-selector-tokenizer": "^0.5.1", - "postcss": "^5.0.4" + "css-selector-tokenizer": "0.5.4", + "postcss": "5.2.16" } }, "postcss-modules-scope": { @@ -12331,8 +14081,8 @@ "integrity": "sha1-dq+LAAjt5ka7nbZ14nvE7jqgRLw=", "dev": true, "requires": { - "css-selector-tokenizer": "^0.5.0", - "postcss": "^5.0.4" + "css-selector-tokenizer": "0.5.4", + "postcss": "5.2.16" } }, "postcss-normalize-charset": { @@ -12341,7 +14091,7 @@ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "dev": true, "requires": { - "postcss": "^5.0.5" + "postcss": "5.2.16" } }, "postcss-normalize-url": { @@ -12350,10 +14100,10 @@ "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", "dev": true, "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1" } }, "postcss-ordered-values": { @@ -12362,8 +14112,8 @@ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", "dev": true, "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1" } }, "postcss-prefix-selector": { @@ -12372,7 +14122,7 @@ "integrity": "sha1-tJWUnWOcYxRxRWSDJoUyFvPBCQA=", "dev": true, "requires": { - "postcss": "^5.0.8" + "postcss": "5.2.16" } }, "postcss-reduce-idents": { @@ -12381,8 +14131,8 @@ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "dev": true, "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1" } }, "postcss-reduce-initial": { @@ -12391,7 +14141,7 @@ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", "dev": true, "requires": { - "postcss": "^5.0.4" + "postcss": "5.2.16" } }, "postcss-reduce-transforms": { @@ -12400,9 +14150,9 @@ "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", "dev": true, "requires": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" + "has": "1.0.3", + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1" } }, "postcss-selector-parser": { @@ -12411,9 +14161,9 @@ "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", "dev": true, "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" } }, "postcss-svgo": { @@ -12422,10 +14172,10 @@ "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", "dev": true, "requires": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" + "is-svg": "2.1.0", + "postcss": "5.2.16", + "postcss-value-parser": "3.3.1", + "svgo": "0.7.2" } }, "postcss-unique-selectors": { @@ -12434,9 +14184,9 @@ "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", "dev": true, "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" + "alphanum-sort": "1.0.2", + "postcss": "5.2.16", + "uniqs": "2.0.0" } }, "postcss-value-parser": { @@ -12451,9 +14201,9 @@ "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", "dev": true, "requires": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" + "has": "1.0.3", + "postcss": "5.2.16", + "uniqs": "2.0.0" } }, "prelude-extension": { @@ -12461,7 +14211,7 @@ "resolved": "https://registry.npmjs.org/prelude-extension/-/prelude-extension-0.0.13.tgz", "integrity": "sha1-HT/kHLdXjY2+/IZe/d0o2IyaA6g=", "requires": { - "prelude-ls": "^1.1.2" + "prelude-ls": "1.1.2" } }, "prelude-ls": { @@ -12487,14 +14237,14 @@ "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", "dev": true, "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" + "renderkid": "2.0.3", + "utila": "0.4.0" } }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true }, "process": { @@ -12515,18 +14265,18 @@ }, "proj4": { "version": "https://github.com/geosolutions-it/proj4js/tarball/mapstore2_fixes", - "integrity": "sha1-N+OwhGILdXOBrk/uoJWpsz4WGr8=", + "integrity": "sha512-aaE8JSn8ZVUOZ5TR2BRL0H6iceZaAuVcX6VGMd7IMMd+i7fgNxoYvBD/3zsx4lPazM9audAAhoqNd1rfWIbZGQ==", "requires": { "mgrs": "1.0.0", - "wkt-parser": "^1.2.0" + "wkt-parser": "https://github.com/geosolutions-it/wkt-parser/tarball/mapstore2_fixes" } }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "~2.0.3" + "asap": "2.0.6" } }, "prop-types": { @@ -12534,9 +14284,9 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "fbjs": "0.8.17", + "loose-envify": "1.4.0", + "object-assign": "4.1.1" } }, "prop-types-extra": { @@ -12544,8 +14294,8 @@ "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.0.tgz", "integrity": "sha512-QFyuDxvMipmIVKD2TwxLVPzMnO4e5oOf1vr3tJIomL8E7d0lr6phTHd5nkPhFIzTD1idBLLEPeylL9g+rrTzRg==", "requires": { - "react-is": "^16.3.2", - "warning": "^3.0.0" + "react-is": "16.8.6", + "warning": "3.0.0" } }, "propagating-hammerjs": { @@ -12553,7 +14303,7 @@ "resolved": "https://registry.npmjs.org/propagating-hammerjs/-/propagating-hammerjs-1.4.6.tgz", "integrity": "sha1-/tAOmwB2f/1C0U9bUxvEk+tnLjc=", "requires": { - "hammerjs": "^2.0.6" + "hammerjs": "2.0.8" } }, "protocol-buffers-schema": { @@ -12567,7 +14317,7 @@ "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", "dev": true, "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.1.2", "ipaddr.js": "1.9.0" } }, @@ -12589,18 +14339,19 @@ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "parse-asn1": "5.1.4", + "randombytes": "2.1.0", + "safe-buffer": "5.1.2" } }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "pure-color": { "version": "1.3.0", @@ -12611,12 +14362,13 @@ "q": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=" + "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "dev": true }, "qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha1-xF6cYYAL0IfviNfiVkI73Unl0HE=", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true }, "qr.js": { @@ -12635,7 +14387,8 @@ "qs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true }, "query-string": { "version": "4.3.4", @@ -12643,8 +14396,8 @@ "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", "dev": true, "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" } }, "querystring": { @@ -12661,25 +14414,24 @@ "querystringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", - "dev": true + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" }, "quickselect": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", - "integrity": "sha1-hS5BLOQY8jetW2YNcM/6xkeulMI=" + "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==" }, "quill": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.6.tgz", - "integrity": "sha1-mfTeH+6FkloNfUFjttgyjyMxek0=", + "integrity": "sha512-K0mvhimWZN6s+9OQ249CH2IEPZ9JmkFuCQeHAOQax3EZ2nDJ3wfGh59mnlQaZV2i7u8eFarx6wAtvQKgShojug==", "requires": { - "clone": "^2.1.1", - "deep-equal": "^1.0.1", - "eventemitter3": "^2.0.3", - "extend": "^3.0.1", - "parchment": "^1.1.4", - "quill-delta": "^3.6.2" + "clone": "2.1.2", + "deep-equal": "1.0.1", + "eventemitter3": "2.0.3", + "extend": "3.0.2", + "parchment": "1.1.4", + "quill-delta": "3.6.3" } }, "quill-delta": { @@ -12687,8 +14439,8 @@ "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", "requires": { - "deep-equal": "^1.0.1", - "extend": "^3.0.2", + "deep-equal": "1.0.1", + "extend": "3.0.2", "fast-diff": "1.1.2" } }, @@ -12697,7 +14449,7 @@ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", "requires": { - "performance-now": "^2.1.0" + "performance-now": "2.1.0" }, "dependencies": { "performance-now": { @@ -12712,7 +14464,7 @@ "resolved": "https://registry.npmjs.org/rafl/-/rafl-1.2.2.tgz", "integrity": "sha1-/pMPdYIRAg1H44gV9Rlqi+QVB0A=", "requires": { - "global": "~4.3.0" + "global": "4.3.2" } }, "randomatic": { @@ -12721,9 +14473,9 @@ "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", "dev": true, "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.4" }, "dependencies": { "is-number": { @@ -12746,23 +14498,24 @@ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { - "safe-buffer": "^5.1.0" + "safe-buffer": "5.1.2" } }, "randomfill": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "randombytes": "2.1.0", + "safe-buffer": "5.1.2" } }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true }, "raw-body": { "version": "2.4.0", @@ -12782,10 +14535,10 @@ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "dev": true, "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", + "statuses": "1.5.0", "toidentifier": "1.0.0" } }, @@ -12812,9 +14565,9 @@ "rbush": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", - "integrity": "sha1-u2AFwnMbe6HVqaA1dykn0WphRgU=", + "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", "requires": { - "quickselect": "^1.0.1" + "quickselect": "1.1.1" } }, "rc": { @@ -12823,10 +14576,10 @@ "integrity": "sha1-VBzDMA9GS23+ZDLXVvDy3T6esZk=", "dev": true, "requires": { - "deep-extend": "~0.2.5", - "ini": "~1.3.0", - "minimist": "~0.0.7", - "strip-json-comments": "0.1.x" + "deep-extend": "0.2.11", + "ini": "1.3.5", + "minimist": "0.0.10", + "strip-json-comments": "0.1.3" }, "dependencies": { "minimist": { @@ -12848,11 +14601,11 @@ "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=", "requires": { - "create-react-class": "^15.6.0", - "fbjs": "^0.8.9", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.0", - "prop-types": "^15.5.10" + "create-react-class": "15.6.2", + "fbjs": "0.8.17", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, "react-addons-css-transition-group": { @@ -12860,19 +14613,19 @@ "resolved": "https://registry.npmjs.org/react-addons-css-transition-group/-/react-addons-css-transition-group-15.6.2.tgz", "integrity": "sha1-nkN2vPQLUhfRTsaFUwgc7ksIptY=", "requires": { - "react-transition-group": "^1.2.0" + "react-transition-group": "1.2.1" }, "dependencies": { "react-transition-group": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.1.tgz", - "integrity": "sha1-4R9yslf5IbITIpp3TfRmEjRsfKY=", + "integrity": "sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==", "requires": { - "chain-function": "^1.0.0", - "dom-helpers": "^3.2.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.5.6", - "warning": "^3.0.0" + "chain-function": "1.0.1", + "dom-helpers": "3.4.0", + "loose-envify": "1.4.0", + "prop-types": "15.6.0", + "warning": "3.0.0" } } } @@ -12882,8 +14635,8 @@ "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.2.tgz", "integrity": "sha1-GYoAuR/DdiPbZKKP0XtZa6NicC8=", "requires": { - "fbjs": "^0.8.4", - "object-assign": "^4.1.0" + "fbjs": "0.8.17", + "object-assign": "4.1.1" } }, "react-addons-update": { @@ -12891,8 +14644,8 @@ "resolved": "https://registry.npmjs.org/react-addons-update/-/react-addons-update-15.6.2.tgz", "integrity": "sha1-5TdTxbNIh5dFEMiC1/sHWFHV5QQ=", "requires": { - "fbjs": "^0.8.9", - "object-assign": "^4.1.0" + "fbjs": "0.8.17", + "object-assign": "4.1.1" } }, "react-autobind": { @@ -12906,10 +14659,10 @@ "integrity": "sha1-OFjyTpxN2MvT9wLz901YHKKRcmk=", "dev": true, "requires": { - "base16": "^1.0.0", - "lodash.curry": "^4.0.1", - "lodash.flow": "^3.3.0", - "pure-color": "^1.2.0" + "base16": "1.0.0", + "lodash.curry": "4.1.1", + "lodash.flow": "3.5.0", + "pure-color": "1.3.0" } }, "react-bootstrap": { @@ -12917,28 +14670,28 @@ "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.31.0.tgz", "integrity": "sha1-u8qATAQE2cZAECsrZWrkzVvqNcg=", "requires": { - "babel-runtime": "^6.11.6", - "classnames": "^2.2.5", - "dom-helpers": "^3.2.0", - "invariant": "^2.2.1", - "keycode": "^2.1.2", - "prop-types": "^15.5.6", - "react-overlays": "^0.7.0", - "react-prop-types": "^0.4.0", - "uncontrollable": "^4.1.0", - "warning": "^3.0.0" + "babel-runtime": "6.26.0", + "classnames": "2.2.5", + "dom-helpers": "3.4.0", + "invariant": "2.2.4", + "keycode": "2.2.0", + "prop-types": "15.6.0", + "react-overlays": "0.7.4", + "react-prop-types": "0.4.0", + "uncontrollable": "4.1.0", + "warning": "3.0.0" }, "dependencies": { "react-overlays": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.7.4.tgz", - "integrity": "sha1-7y7GUsNESriqAUJisY9mIGjlbVw=", + "integrity": "sha512-7vsooMx3siLAuEfTs8FYeP/lAORWWFXTO8PON3KgX0Htq1Oa+po6ioSjGyO0/GO5CVSMNhpWt6V2opeexHgBuQ==", "requires": { - "classnames": "^2.2.5", - "dom-helpers": "^3.2.1", - "prop-types": "^15.5.10", - "prop-types-extra": "^1.0.1", - "warning": "^3.0.0" + "classnames": "2.2.5", + "dom-helpers": "3.4.0", + "prop-types": "15.6.0", + "prop-types-extra": "1.1.0", + "warning": "3.0.0" } } } @@ -12953,10 +14706,10 @@ "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.11.3.tgz", "integrity": "sha1-OjtcZq2orAS6voBmbjrK8NucSTI=", "requires": { - "lodash": "^4.0.1", - "material-colors": "^1.2.1", - "reactcss": "^1.2.0", - "tinycolor2": "^1.1.2" + "lodash": "4.17.5", + "material-colors": "1.2.6", + "reactcss": "1.2.3", + "tinycolor2": "1.4.1" } }, "react-confirm-button": { @@ -12964,8 +14717,8 @@ "resolved": "https://registry.npmjs.org/react-confirm-button/-/react-confirm-button-0.0.2.tgz", "integrity": "sha1-5k760tCdNDqzyqQtc8AtIZTZLKw=", "requires": { - "babel-runtime": "^6.5.0", - "classnames": "^2.2.5" + "babel-runtime": "6.26.0", + "classnames": "2.2.5" } }, "react-container-dimensions": { @@ -12973,9 +14726,9 @@ "resolved": "https://registry.npmjs.org/react-container-dimensions/-/react-container-dimensions-1.3.2.tgz", "integrity": "sha1-4T0xOeQvQRCyhVEgLkSZ7YVBS90=", "requires": { - "element-resize-detector": "^1.1.10", - "invariant": "^2.2.2", - "prop-types": "^15.5.8" + "element-resize-detector": "1.1.15", + "invariant": "2.2.4", + "prop-types": "15.6.0" } }, "react-copy-to-clipboard": { @@ -12983,8 +14736,8 @@ "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.0.tgz", "integrity": "sha1-I8zdfE2ewsx2ODnipVsSIK608z0=", "requires": { - "copy-to-clipboard": "^3", - "prop-types": "^15.5.8" + "copy-to-clipboard": "3.2.0", + "prop-types": "15.6.0" } }, "react-data-grid": { @@ -13002,12 +14755,12 @@ "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-2.6.0.tgz", "integrity": "sha1-f6JWds+CfViokSk+PBq1naACVFo=", "requires": { - "disposables": "^1.0.1", - "dnd-core": "^2.6.0", - "hoist-non-react-statics": "^2.1.0", - "invariant": "^2.1.0", - "lodash": "^4.2.0", - "prop-types": "^15.5.10" + "disposables": "1.0.2", + "dnd-core": "2.6.0", + "hoist-non-react-statics": "2.5.5", + "invariant": "2.2.4", + "lodash": "4.17.5", + "prop-types": "15.6.0" }, "dependencies": { "hoist-non-react-statics": { @@ -13022,7 +14775,7 @@ "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-2.6.0.tgz", "integrity": "sha1-WQzRzKeEQbsnTt1XH+9MCxbdz44=", "requires": { - "lodash": "^4.2.0" + "lodash": "4.17.5" } }, "react-dock": { @@ -13030,8 +14783,8 @@ "resolved": "https://registry.npmjs.org/react-dock/-/react-dock-0.2.4.tgz", "integrity": "sha1-5yfcdVCztzEWY13LnA4E0Lev4Xw=", "requires": { - "lodash.debounce": "^3.1.1", - "prop-types": "^15.5.8" + "lodash.debounce": "3.1.1", + "prop-types": "15.6.0" } }, "react-dom": { @@ -13039,10 +14792,10 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz", "integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=", "requires": { - "fbjs": "^0.8.9", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.0", - "prop-types": "^15.5.10" + "fbjs": "0.8.17", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, "react-dom-factories": { @@ -13055,7 +14808,7 @@ "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-2.2.6.tgz", "integrity": "sha1-OoBuEPLaa6v+pBNr5lEOibDXaQE=", "requires": { - "classnames": "^2.2.5" + "classnames": "2.2.5" } }, "react-dropzone": { @@ -13063,8 +14816,8 @@ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-3.13.1.tgz", "integrity": "sha1-U4DUdYW0StKHfAtam5Kr570qEuU=", "requires": { - "attr-accept": "^1.0.3", - "prop-types": "^15.5.7" + "attr-accept": "1.1.3", + "prop-types": "15.6.0" } }, "react-event-listener": { @@ -13072,9 +14825,9 @@ "resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.6.6.tgz", "integrity": "sha512-+hCNqfy7o9wvO6UgjqFmBzARJS7qrNoda0VqzvOuioEpoEXKutiKuv92dSz6kP7rYLmyHPyYNLesi5t/aH1gfw==", "requires": { - "@babel/runtime": "^7.2.0", - "prop-types": "^15.6.0", - "warning": "^4.0.1" + "@babel/runtime": "7.4.4", + "prop-types": "15.6.0", + "warning": "4.0.3" }, "dependencies": { "warning": { @@ -13082,7 +14835,7 @@ "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.4.0" } } } @@ -13092,11 +14845,11 @@ "resolved": "https://registry.npmjs.org/react-grid-layout-resize-prevent-collision/-/react-grid-layout-resize-prevent-collision-0.16.0.tgz", "integrity": "sha1-TQ68SpbJhF0em1lsSbh4Ab6EyE8=", "requires": { - "classnames": "2.x", - "lodash.isequal": "^4.0.0", - "prop-types": "15.x", - "react-draggable": "^3.0.3", - "react-resizable": "^1.7.5" + "classnames": "2.2.5", + "lodash.isequal": "4.5.0", + "prop-types": "15.6.0", + "react-draggable": "3.3.0", + "react-resizable": "1.8.0" }, "dependencies": { "react-draggable": { @@ -13104,8 +14857,8 @@ "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-3.3.0.tgz", "integrity": "sha512-U7/jD0tAW4T0S7DCPK0kkKLyL0z61sC/eqU+NUfDjnq+JtBKaYKDHpsK2wazctiA4alEzCXUnzkREoxppOySVw==", "requires": { - "classnames": "^2.2.5", - "prop-types": "^15.6.0" + "classnames": "2.2.5", + "prop-types": "15.6.0" } } } @@ -13142,8 +14895,8 @@ "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-1.1.4.tgz", "integrity": "sha1-y8RQctQITdxXgG2447NOZEuDZqw=", "requires": { - "create-react-class": "^15.5.2", - "prop-types": "^15.5.8" + "create-react-class": "15.6.2", + "prop-types": "15.6.0" } }, "react-intl": { @@ -13151,10 +14904,10 @@ "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.3.0.tgz", "integrity": "sha1-4d9q9WZ/3wHL5KqyDhNyUeKuUUI=", "requires": { - "intl-format-cache": "^2.0.5", - "intl-messageformat": "^1.3.0", - "intl-relativeformat": "^1.3.0", - "invariant": "^2.1.1" + "intl-format-cache": "2.1.0", + "intl-messageformat": "1.3.0", + "intl-relativeformat": "1.3.0", + "invariant": "2.2.4" } }, "react-is": { @@ -13164,13 +14917,12 @@ }, "react-joyride": { "version": "github:ddeath/react-joyride#a51a19f6e298245d30ebee3fa7e69ed585ed29f3", - "from": "github:ddeath/react-joyride#fixed-positioning-and-overlay", "requires": { - "css-element-queries": "^0.4.0", - "nested-property": "^0.0.7", - "react-autobind": "^1.0", - "react-bootstrap": "^0.30.10", - "scroll": "^2.0" + "css-element-queries": "0.4.0", + "nested-property": "0.0.7", + "react-autobind": "1.0.6", + "react-bootstrap": "0.30.10", + "scroll": "2.0.3" }, "dependencies": { "react-bootstrap": { @@ -13178,16 +14930,16 @@ "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.30.10.tgz", "integrity": "sha1-27ppCVlfKvTZGTfbD5bsjC3y0ag=", "requires": { - "babel-runtime": "^6.11.6", - "classnames": "^2.2.5", - "dom-helpers": "^3.2.0", - "invariant": "^2.2.1", - "keycode": "^2.1.2", - "prop-types": "^15.5.6", - "react-overlays": "^0.6.12", - "react-prop-types": "^0.4.0", - "uncontrollable": "^4.0.1", - "warning": "^3.0.0" + "babel-runtime": "6.26.0", + "classnames": "2.2.5", + "dom-helpers": "3.4.0", + "invariant": "2.2.4", + "keycode": "2.2.0", + "prop-types": "15.6.0", + "react-overlays": "0.6.12", + "react-prop-types": "0.4.0", + "uncontrollable": "4.1.0", + "warning": "3.0.0" } }, "react-overlays": { @@ -13195,10 +14947,10 @@ "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.6.12.tgz", "integrity": "sha1-oHnHUMxCnX20x0dKlbS1QDPiVcM=", "requires": { - "classnames": "^2.2.5", - "dom-helpers": "^3.2.0", - "react-prop-types": "^0.4.0", - "warning": "^3.0.0" + "classnames": "2.2.5", + "dom-helpers": "3.4.0", + "react-prop-types": "0.4.0", + "warning": "3.0.0" } } } @@ -13209,9 +14961,9 @@ "integrity": "sha1-cmMXOizIvwXqxjsEGcPOdbIy4oQ=", "dev": true, "requires": { - "babel-runtime": "^6.6.1", - "prop-types": "^15.5.8", - "react-base16-styling": "^0.5.1" + "babel-runtime": "6.26.0", + "prop-types": "15.6.0", + "react-base16-styling": "0.5.3" } }, "react-motion": { @@ -13220,9 +14972,9 @@ "integrity": "sha1-Fwj8Ku5VKQDSHB5r7Sg0aGPgF7Y=", "dev": true, "requires": { - "performance-now": "^0.2.0", - "prop-types": "^15.5.8", - "raf": "^3.1.0" + "performance-now": "0.2.0", + "prop-types": "15.6.0", + "raf": "3.4.1" } }, "react-notification-system": { @@ -13230,9 +14982,9 @@ "resolved": "https://registry.npmjs.org/react-notification-system/-/react-notification-system-0.2.14.tgz", "integrity": "sha1-IfkX85/u4UVRaGQ1CHUEFDPE1cA=", "requires": { - "create-react-class": "^15.5.1", - "object-assign": "^4.0.1", - "prop-types": "^15.5.6" + "create-react-class": "15.6.2", + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, "react-nouislider": { @@ -13240,7 +14992,7 @@ "resolved": "https://registry.npmjs.org/react-nouislider/-/react-nouislider-2.0.0.tgz", "integrity": "sha1-d7IYlRU9wlU995ghxS89ytqdM5c=", "requires": { - "nouislider": "^9.2.0" + "nouislider": "9.2.0" } }, "react-overlays": { @@ -13248,10 +15000,10 @@ "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.6.3.tgz", "integrity": "sha1-5OH1sEssxfwWcIO5QUrULplJub0=", "requires": { - "classnames": "^2.1.3", - "dom-helpers": "^2.3.0", - "react-prop-types": "^0.2.1", - "warning": "^2.1.0" + "classnames": "2.2.5", + "dom-helpers": "2.4.0", + "react-prop-types": "0.2.2", + "warning": "2.1.0" }, "dependencies": { "dom-helpers": { @@ -13264,7 +15016,7 @@ "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz", "integrity": "sha1-rkmRTUlSOCET0OIQsuUQFvC9fxk=", "requires": { - "warning": "^2.0.0" + "warning": "2.1.0" } }, "warning": { @@ -13272,7 +15024,7 @@ "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.4.0" } } } @@ -13282,9 +15034,9 @@ "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-1.6.1.tgz", "integrity": "sha1-3FKOvua354ZNtQNtXVIgm2eo4NE=", "requires": { - "pdfjs-dist": "^1.7.339", - "react": ">=15.0", - "react-dom": ">=15.0" + "pdfjs-dist": "1.10.100", + "react": "15.6.2", + "react-dom": "15.6.2" } }, "react-prop-types": { @@ -13292,7 +15044,7 @@ "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", "integrity": "sha1-+ZsL+0AGkpya8gUefBQUpcdbk9A=", "requires": { - "warning": "^3.0.0" + "warning": "3.0.0" } }, "react-pure-render": { @@ -13306,11 +15058,11 @@ "resolved": "https://registry.npmjs.org/react-quill/-/react-quill-1.1.0.tgz", "integrity": "sha1-NI29NiUmB/0xytFA8clelp2hjVM=", "requires": { - "create-react-class": "^15.6.0", - "lodash": "^4.17.4", - "prop-types": "^15.5.10", - "quill": "^1.2.6", - "react-dom-factories": "^1.0.0" + "create-react-class": "15.6.2", + "lodash": "4.17.5", + "prop-types": "15.6.0", + "quill": "1.3.6", + "react-dom-factories": "1.0.2" } }, "react-redux": { @@ -13318,13 +15070,13 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.5.tgz", "integrity": "sha1-+OjHsjlCJXblLWt9sGQ5RpvphGo=", "requires": { - "create-react-class": "^15.5.3", - "hoist-non-react-statics": "^1.0.3", - "invariant": "^2.0.0", - "lodash": "^4.2.0", - "lodash-es": "^4.2.0", - "loose-envify": "^1.1.0", - "prop-types": "^15.5.10" + "create-react-class": "15.6.2", + "hoist-non-react-statics": "1.2.0", + "invariant": "2.2.4", + "lodash": "4.17.5", + "lodash-es": "4.17.11", + "loose-envify": "1.4.0", + "prop-types": "15.6.0" } }, "react-resizable": { @@ -13332,8 +15084,8 @@ "resolved": "https://registry.npmjs.org/react-resizable/-/react-resizable-1.8.0.tgz", "integrity": "sha512-lfYlCelPyUL8GLYd4SgFtZOrFY8XpxpDwXjgGHLiLM2aMv7mEkBT8Jn5MUV1TCinF5mIro4CMezfnniAZEkGvg==", "requires": { - "prop-types": "15.x", - "react-draggable": "^3.0.3" + "prop-types": "15.6.0", + "react-draggable": "3.3.0" }, "dependencies": { "react-draggable": { @@ -13341,8 +15093,8 @@ "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-3.3.0.tgz", "integrity": "sha512-U7/jD0tAW4T0S7DCPK0kkKLyL0z61sC/eqU+NUfDjnq+JtBKaYKDHpsK2wazctiA4alEzCXUnzkREoxppOySVw==", "requires": { - "classnames": "^2.2.5", - "prop-types": "^15.6.0" + "classnames": "2.2.5", + "prop-types": "15.6.0" } } } @@ -13352,7 +15104,7 @@ "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-0.4.1.tgz", "integrity": "sha1-Gfi5k+HoaeKHk0TiDcI8T6woslY=", "requires": { - "prop-types": "^15.5.8" + "prop-types": "15.6.0" } }, "react-responsive": { @@ -13360,9 +15112,9 @@ "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-1.3.0.tgz", "integrity": "sha1-rcnoBS0jS+aX8FOGt5WeVYelRkE=", "requires": { - "hyphenate-style-name": "^1.0.0", - "matchmedia": "^0.1.2", - "prop-types": "^15.5.7" + "hyphenate-style-name": "1.0.3", + "matchmedia": "0.1.2", + "prop-types": "15.6.0" } }, "react-router": { @@ -13370,26 +15122,26 @@ "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.1.1.tgz", "integrity": "sha1-1Ejzt8G0Kab7sDOVCZlJxgax/pU=", "requires": { - "history": "^4.6.0", - "hoist-non-react-statics": "^1.2.0", - "invariant": "^2.2.2", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.5.3", - "prop-types": "^15.5.4", - "warning": "^3.0.0" + "history": "4.6.1", + "hoist-non-react-statics": "1.2.0", + "invariant": "2.2.4", + "loose-envify": "1.4.0", + "path-to-regexp": "1.7.0", + "prop-types": "15.6.0", + "warning": "3.0.0" } }, "react-router-dom": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz", - "integrity": "sha1-yKgd863Fi7qKdngulGy9Tq5km40=", - "requires": { - "history": "^4.7.2", - "invariant": "^2.2.2", - "loose-envify": "^1.3.1", - "prop-types": "^15.5.4", - "react-router": "^4.2.0", - "warning": "^3.0.0" + "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", + "requires": { + "history": "4.9.0", + "invariant": "2.2.4", + "loose-envify": "1.4.0", + "prop-types": "15.6.0", + "react-router": "4.3.1", + "warning": "3.0.0" }, "dependencies": { "history": { @@ -13397,12 +15149,12 @@ "resolved": "https://registry.npmjs.org/history/-/history-4.9.0.tgz", "integrity": "sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA==", "requires": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^2.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^0.4.0" + "@babel/runtime": "7.4.4", + "loose-envify": "1.4.0", + "resolve-pathname": "2.2.0", + "tiny-invariant": "1.0.4", + "tiny-warning": "1.0.2", + "value-equal": "0.4.0" } }, "hoist-non-react-statics": { @@ -13415,13 +15167,13 @@ "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz", "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==", "requires": { - "history": "^4.7.2", - "hoist-non-react-statics": "^2.5.0", - "invariant": "^2.2.4", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.1", - "warning": "^4.0.1" + "history": "4.9.0", + "hoist-non-react-statics": "2.5.5", + "invariant": "2.2.4", + "loose-envify": "1.4.0", + "path-to-regexp": "1.7.0", + "prop-types": "15.7.2", + "warning": "4.0.3" }, "dependencies": { "prop-types": { @@ -13429,9 +15181,9 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "react-is": "16.8.6" } }, "warning": { @@ -13439,7 +15191,7 @@ "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.4.0" } } } @@ -13447,7 +15199,7 @@ "value-equal": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", - "integrity": "sha1-xb3S9U7gk8BIOdcc4uR1imiQq8c=" + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" } } }, @@ -13456,9 +15208,9 @@ "resolved": "https://registry.npmjs.org/react-router-redux/-/react-router-redux-5.0.0-alpha.6.tgz", "integrity": "sha1-dBhmPC7NPFG+hW/PKPPR3uzBpXY=", "requires": { - "history": "^4.5.1", - "prop-types": "^15.5.4", - "react-router": "^4.1.1" + "history": "4.6.1", + "prop-types": "15.6.0", + "react-router": "4.1.1" } }, "react-scroll-up": { @@ -13466,10 +15218,10 @@ "resolved": "https://registry.npmjs.org/react-scroll-up/-/react-scroll-up-1.3.0.tgz", "integrity": "sha1-BGrpQP8TI0JMsL69S9DJy25sS0E=", "requires": { - "detect-passive-events": "^1.0.0", - "object-assign": "^4.0.1", - "prop-types": "^15.5.8", - "tween-functions": "^1.1.0" + "detect-passive-events": "1.0.4", + "object-assign": "4.1.1", + "prop-types": "15.6.0", + "tween-functions": "1.2.0" } }, "react-select": { @@ -13477,10 +15229,10 @@ "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.0.0-rc.4.tgz", "integrity": "sha1-8o87qxgZb/jzIze7Uu0BV3PJBmM=", "requires": { - "classnames": "^2.2.4", - "create-react-class": "^15.5.2", - "prop-types": "^15.5.8", - "react-input-autosize": "^1.1.3" + "classnames": "2.2.5", + "create-react-class": "15.6.2", + "prop-types": "15.6.0", + "react-input-autosize": "1.1.4" } }, "react-selectize": { @@ -13488,9 +15240,9 @@ "resolved": "https://registry.npmjs.org/react-selectize/-/react-selectize-2.0.3.tgz", "integrity": "sha1-QU5xJZvsWoZk1QwRrvCmHJ22KNg=", "requires": { - "prelude-extension": "^0.0.13", - "prelude-ls": "^1.1.1", - "tether": "^1.1.1" + "prelude-extension": "0.0.13", + "prelude-ls": "1.1.2", + "tether": "1.4.6" } }, "react-share": { @@ -13498,11 +15250,11 @@ "resolved": "https://registry.npmjs.org/react-share/-/react-share-1.15.1.tgz", "integrity": "sha1-SZD8CjAoWjZl0Cae1/AC4PPeZPY=", "requires": { - "babel-runtime": "^6.6.1", - "classnames": "^2.2.5", - "jsonp": "^0.2.1", - "platform": "^1.3.4", - "prop-types": "^15.5.8" + "babel-runtime": "6.26.0", + "classnames": "2.2.5", + "jsonp": "0.2.1", + "platform": "1.3.5", + "prop-types": "15.6.0" } }, "react-side-effect": { @@ -13510,8 +15262,8 @@ "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.0.tgz", "integrity": "sha1-VyCffryUDVXg/agv5RQiZUF11gk=", "requires": { - "exenv": "^1.2.1", - "shallowequal": "^0.2.2" + "exenv": "1.2.2", + "shallowequal": "0.2.2" } }, "react-sidebar": { @@ -13524,33 +15276,33 @@ "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-0.3.0.tgz", "integrity": "sha1-tnZl17mCAlfjQnnBXgLo5RMevpk=", "requires": { - "lodash": "^4.16.4", - "prop-types": "^15.5.8", - "raf": "^3.2.0", - "react-transition-group": "^1.1.1" + "lodash": "4.17.5", + "prop-types": "15.6.0", + "raf": "3.4.1", + "react-transition-group": "1.2.1" }, "dependencies": { "react-transition-group": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.1.tgz", - "integrity": "sha1-4R9yslf5IbITIpp3TfRmEjRsfKY=", + "integrity": "sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==", "requires": { - "chain-function": "^1.0.0", - "dom-helpers": "^3.2.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.5.6", - "warning": "^3.0.0" + "chain-function": "1.0.1", + "dom-helpers": "3.4.0", + "loose-envify": "1.4.0", + "prop-types": "15.6.0", + "warning": "3.0.0" } } } }, "react-sortable-items": { "version": "https://github.com/geosolutions-it/react-sortable-items/tarball/react15", - "integrity": "sha1-f1+BcSDi6ghI3sK4kgTSAhzRW7c=", + "integrity": "sha512-lpBaMFKUvXcaUGyrURw0dZsHWcNKGhkwNlW5vjCZ3UOrXrULogJTC8GQ4caVxBsBYCezNzLpEiawKx8HNpU6jg==", "requires": { - "classnames": "^1.1.4", - "react-addons-update": "^15.4.2", - "react-dom": "^15.4.2" + "classnames": "1.2.2", + "react-addons-update": "15.6.2", + "react-dom": "15.6.2" }, "dependencies": { "classnames": { @@ -13565,9 +15317,9 @@ "resolved": "https://registry.npmjs.org/react-spinkit/-/react-spinkit-2.1.2.tgz", "integrity": "sha1-VcA3vXPpnktpvy43xiJ0dOdKmfY=", "requires": { - "classnames": "^2.2.3", - "object-assign": "^4.1.0", - "prop-types": "^15.5.8" + "classnames": "2.2.5", + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, "react-swipeable-views": { @@ -13575,12 +15327,12 @@ "resolved": "https://registry.npmjs.org/react-swipeable-views/-/react-swipeable-views-0.12.2.tgz", "integrity": "sha1-fR0tZTdT+gAgg30E5LyfamfNURg=", "requires": { - "babel-runtime": "^6.23.0", - "dom-helpers": "^3.2.1", - "prop-types": "^15.5.4", - "react-swipeable-views-core": "^0.11.1", - "react-swipeable-views-utils": "^0.12.0", - "warning": "^3.0.0" + "babel-runtime": "6.26.0", + "dom-helpers": "3.4.0", + "prop-types": "15.6.0", + "react-swipeable-views-core": "0.11.1", + "react-swipeable-views-utils": "0.12.18", + "warning": "3.0.0" } }, "react-swipeable-views-core": { @@ -13588,8 +15340,8 @@ "resolved": "https://registry.npmjs.org/react-swipeable-views-core/-/react-swipeable-views-core-0.11.1.tgz", "integrity": "sha1-YdBGeZ+Qclu/kaDrOryrgFx3TKw=", "requires": { - "babel-runtime": "^6.23.0", - "warning": "^3.0.0" + "babel-runtime": "6.26.0", + "warning": "3.0.0" } }, "react-swipeable-views-utils": { @@ -13598,11 +15350,11 @@ "integrity": "sha512-Y8APE9bSfZhebYHRGDOoHeIqNJbrZMlpIiHqD0hovdlYv+HvBAdqAKdwppzIE1QXISqBKwJAlYl86plvfTW1dg==", "requires": { "@babel/runtime": "7.0.0", - "fbjs": "^0.8.4", - "keycode": "^2.1.7", - "prop-types": "^15.6.0", - "react-event-listener": "^0.6.0", - "react-swipeable-views-core": "^0.12.17" + "fbjs": "0.8.17", + "keycode": "2.2.0", + "prop-types": "15.6.0", + "react-event-listener": "0.6.6", + "react-swipeable-views-core": "0.12.17" }, "dependencies": { "@babel/runtime": { @@ -13610,7 +15362,7 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==", "requires": { - "regenerator-runtime": "^0.12.0" + "regenerator-runtime": "0.12.1" } }, "react-swipeable-views-core": { @@ -13619,7 +15371,7 @@ "integrity": "sha512-KfQ+BPfLVBe7kxb+0zbVJp3eGQfZlt1gn5J+GYAgnYoZ29GrqkTfiQFKmrG4tmVnhxvRiXFA7Q0q9EBMYTc/FA==", "requires": { "@babel/runtime": "7.0.0", - "warning": "^4.0.1" + "warning": "4.0.3" } }, "regenerator-runtime": { @@ -13632,7 +15384,7 @@ "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.4.0" } } } @@ -13642,8 +15394,8 @@ "resolved": "https://registry.npmjs.org/react-textfit/-/react-textfit-1.1.0.tgz", "integrity": "sha512-iznFbj7fCizuo3Xof9iv57I8GZFiYp8vUFj+4qihHJZpzNwxWad7JZu7ALTAnwaiq/H0p60g8G4ifeEJYmfJuw==", "requires": { - "process": "^0.11.9", - "prop-types": "^15.5.10" + "process": "0.11.10", + "prop-types": "15.6.0" }, "dependencies": { "process": { @@ -13665,10 +15417,10 @@ "integrity": "sha1-XgLPbkSoYzFP88aKDIJsLZ1wsiE=", "dev": true, "requires": { - "chain-function": "^1.0.0", - "dom-helpers": "^3.2.0", - "prop-types": "^15.5.6", - "warning": "^3.0.0" + "chain-function": "1.0.1", + "dom-helpers": "3.4.0", + "prop-types": "15.6.0", + "warning": "3.0.0" } }, "react-twitter-widgets": { @@ -13676,11 +15428,11 @@ "resolved": "https://registry.npmjs.org/react-twitter-widgets/-/react-twitter-widgets-1.3.0.tgz", "integrity": "sha1-SP4I63QY3WfjSfOOHCfFFtMRjRw=", "requires": { - "exenv": "^1.2.1", - "lodash.clonedeep": "^4.3.1", - "lodash.isequal": "^4.1.1", - "prop-types": "^15.3.0", - "scriptjs": "^2.5.8" + "exenv": "1.2.2", + "lodash.clonedeep": "4.5.0", + "lodash.isequal": "4.5.0", + "prop-types": "15.6.0", + "scriptjs": "2.5.9" } }, "react-widgets": { @@ -13688,16 +15440,16 @@ "resolved": "https://registry.npmjs.org/react-widgets/-/react-widgets-3.4.8.tgz", "integrity": "sha1-nowtmc6OWIiaBi93/+7FkdoBmGw=", "requires": { - "classnames": "^2.1.2", - "date-arithmetic": "^3.0.0", + "classnames": "2.2.5", + "date-arithmetic": "3.1.0", "deconstruct-number-format": "0.0.1", - "dom-helpers": "^2.2.4", + "dom-helpers": "2.4.0", "format-number-with-string": "0.0.2", - "invariant": "^2.1.0", - "loose-envify": "^1.2.0", - "prop-types": "^15.5.0", - "uncontrollable": "^4.0.0", - "warning": "^2.0.0" + "invariant": "2.2.4", + "loose-envify": "1.4.0", + "prop-types": "15.6.0", + "uncontrollable": "4.1.0", + "warning": "2.1.0" }, "dependencies": { "dom-helpers": { @@ -13710,7 +15462,7 @@ "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.4.0" } } } @@ -13718,9 +15470,9 @@ "reactcss": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", - "integrity": "sha1-wAATh15Vexzw39mjaKHD2rO1SN0=", + "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", "requires": { - "lodash": "^4.0.1" + "lodash": "4.17.5" } }, "read-pkg": { @@ -13729,9 +15481,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "load-json-file": "1.1.0", + "normalize-package-data": "2.5.0", + "path-type": "1.1.0" } }, "read-pkg-up": { @@ -13740,8 +15492,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "1.1.2", + "read-pkg": "1.1.0" } }, "readable-stream": { @@ -13763,9 +15515,9 @@ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "graceful-fs": "4.1.15", + "micromatch": "3.1.10", + "readable-stream": "2.0.6" } }, "readline-promise": { @@ -13781,7 +15533,7 @@ "dev": true, "requires": { "mute-stream": "0.0.4", - "strip-ansi": "^2.0.1" + "strip-ansi": "2.0.1" }, "dependencies": { "ansi-regex": { @@ -13796,7 +15548,7 @@ "integrity": "sha1-32LBqpTtLxFOHQ8h/R1QSCt5pg4=", "dev": true, "requires": { - "ansi-regex": "^1.0.0" + "ansi-regex": "1.1.1" } } } @@ -13830,8 +15582,8 @@ "core-js": "2.4.1", "d3-scale": "1.0.4", "d3-shape": "1.0.4", - "lodash": "~4.17.4", - "prop-types": "~15.5.7", + "lodash": "4.17.5", + "prop-types": "15.5.10", "react-resize-detector": "0.4.1", "react-smooth": "0.3.0", "recharts-scale": "0.3.0", @@ -13848,8 +15600,8 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", "requires": { - "fbjs": "^0.8.9", - "loose-envify": "^1.3.1" + "fbjs": "0.8.17", + "loose-envify": "1.4.0" } } } @@ -13862,12 +15614,12 @@ "recompose": { "version": "0.24.0", "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.24.0.tgz", - "integrity": "sha1-Ji6T+XRDnrF+d3mCTYjM6QSSpd0=", + "integrity": "sha512-7+UVym5Mfks/ukIDfcAiasrY61YGki8uIs4CmLTGU7UV2lm2ObbhOl913WrlsZKu8x8uA/sLJUOI5hxVga0dIA==", "requires": { - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^1.0.0", - "symbol-observable": "^1.0.4" + "change-emitter": "0.1.6", + "fbjs": "0.8.17", + "hoist-non-react-statics": "1.2.0", + "symbol-observable": "1.2.0" } }, "redbox-react": { @@ -13876,9 +15628,9 @@ "integrity": "sha1-cDFMV8BmJX63Cwok3HlLXO9PHE4=", "dev": true, "requires": { - "error-stack-parser": "^1.3.6", - "object-assign": "^4.0.1", - "prop-types": "^15.5.4" + "error-stack-parser": "1.3.6", + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, "redent": { @@ -13887,8 +15639,8 @@ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "indent-string": "2.1.0", + "strip-indent": "1.0.1" } }, "reduce-css-calc": { @@ -13913,7 +15665,7 @@ "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", "requires": { - "balanced-match": "^0.4.2" + "balanced-match": "0.4.2" }, "dependencies": { "balanced-match": { @@ -13928,10 +15680,10 @@ "resolved": "https://registry.npmjs.org/redux/-/redux-3.6.0.tgz", "integrity": "sha1-iHwrPQub2G7KK+cFccJ2VMGeGI0=", "requires": { - "lodash": "^4.2.1", - "lodash-es": "^4.2.1", - "loose-envify": "^1.1.0", - "symbol-observable": "^1.0.2" + "lodash": "4.17.5", + "lodash-es": "4.17.11", + "loose-envify": "1.4.0", + "symbol-observable": "1.2.0" } }, "redux-devtools": { @@ -13940,9 +15692,9 @@ "integrity": "sha1-m/hBUVQwH1aQbyajb1vB9cqRO7U=", "dev": true, "requires": { - "lodash": "^4.2.0", - "prop-types": "^15.5.7", - "redux-devtools-instrument": "^1.0.1" + "lodash": "4.17.5", + "prop-types": "15.6.0", + "redux-devtools-instrument": "1.9.6" } }, "redux-devtools-dock-monitor": { @@ -13951,11 +15703,11 @@ "integrity": "sha1-6yE6Ah+MJbiS9smL24c2hhXj0gE=", "dev": true, "requires": { - "babel-runtime": "^6.2.0", - "parse-key": "^0.2.1", - "prop-types": "^15.5.8", - "react-dock": "^0.2.4", - "react-pure-render": "^1.0.2" + "babel-runtime": "6.26.0", + "parse-key": "0.2.1", + "prop-types": "15.6.0", + "react-dock": "0.2.4", + "react-pure-render": "1.0.2" } }, "redux-devtools-instrument": { @@ -13964,8 +15716,8 @@ "integrity": "sha512-MwvY4cLEB2tIfWWBzrUR02UM9qRG2i7daNzywRvabOSVdvAY7s9BxSwMmVRH1Y/7QWjplNtOwgT0apKhHg2Qew==", "dev": true, "requires": { - "lodash": "^4.2.0", - "symbol-observable": "^1.0.2" + "lodash": "4.17.5", + "symbol-observable": "1.2.0" } }, "redux-devtools-log-monitor": { @@ -13974,11 +15726,11 @@ "integrity": "sha1-LeDKHXCNogi8pknsdBAwIwNszjk=", "dev": true, "requires": { - "lodash.debounce": "^4.0.4", - "prop-types": "^15.0.0", - "react-json-tree": "^0.10.8", - "react-pure-render": "^1.0.2", - "redux-devtools-themes": "^1.0.0" + "lodash.debounce": "4.0.8", + "prop-types": "15.6.0", + "react-json-tree": "0.10.9", + "react-pure-render": "1.0.2", + "redux-devtools-themes": "1.0.0" }, "dependencies": { "lodash.debounce": { @@ -13995,7 +15747,7 @@ "integrity": "sha1-xILc48U3OXYEX0ATSQfZ3LOuPV0=", "dev": true, "requires": { - "base16": "^1.0.0" + "base16": "1.0.0" } }, "redux-immutable-state-invariant": { @@ -14004,8 +15756,8 @@ "integrity": "sha1-2N8BwvOKtd8fQ0zSYTtejE6fnYM=", "dev": true, "requires": { - "invariant": "^2.1.0", - "json-stringify-safe": "^5.0.1" + "invariant": "2.2.4", + "json-stringify-safe": "5.0.1" } }, "redux-logger": { @@ -14034,7 +15786,7 @@ "resolved": "https://registry.npmjs.org/redux-undo/-/redux-undo-0.5.0.tgz", "integrity": "sha1-mbqrdE6O9jcU/xrAiBXX6Wvz7mY=", "requires": { - "redux": "^3.0.2" + "redux": "3.6.0" } }, "regenerate": { @@ -14049,18 +15801,18 @@ "integrity": "sha1-oORXxY69uuV1yfjNdRJ+k3VkNdg=", "dev": true, "requires": { - "commoner": "~0.10.3", - "defs": "~1.1.0", - "esprima-fb": "~15001.1001.0-dev-harmony-fb", - "private": "~0.1.5", + "commoner": "0.10.8", + "defs": "1.1.1", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "private": "0.1.8", "recast": "0.10.33", - "through": "~2.3.8" + "through": "2.3.8" } }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, "regenerator-transform": { "version": "0.10.1", @@ -14068,27 +15820,28 @@ "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", "dev": true, "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" } }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "^0.1.3" + "is-equal-shallow": "0.1.3" } }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" } }, "regexpu": { @@ -14097,11 +15850,11 @@ "integrity": "sha1-5TTcmRqeWEYFDJjebX3UpVyeoW0=", "dev": true, "requires": { - "esprima": "^2.6.0", - "recast": "^0.10.10", - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "esprima": "2.7.3", + "recast": "0.10.33", + "regenerate": "1.4.0", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" }, "dependencies": { "esprima": { @@ -14118,9 +15871,9 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "regenerate": "1.4.0", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" } }, "regjsgen": { @@ -14135,7 +15888,7 @@ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { - "jsesc": "~0.5.0" + "jsesc": "0.5.0" }, "dependencies": { "jsesc": { @@ -14164,11 +15917,11 @@ "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", "dev": true, "requires": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" + "css-select": "1.2.0", + "dom-converter": "0.2.0", + "htmlparser2": "3.10.1", + "strip-ansi": "3.0.1", + "utila": "0.4.0" }, "dependencies": { "strip-ansi": { @@ -14177,7 +15930,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -14185,7 +15938,8 @@ "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true }, "repeat-string": { "version": "1.6.1", @@ -14198,7 +15952,7 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } }, "replace-ext": { @@ -14210,37 +15964,30 @@ "version": "2.81.0", "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" - } - }, - "request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", - "requires": { - "throttleit": "^1.0.0" + "aws-sign2": "0.6.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.8", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.24", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.2", + "stringstream": "0.0.6", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" } }, "require-directory": { @@ -14270,21 +16017,22 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "requizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.2.tgz", "integrity": "sha512-oJ6y7JcUJkblRGhMByGNcszeLgU0qDxNKFCiUZR1XyzHyVsev+Mxb1tyygxLd1ORsKee1SA5BInFdUwY64GE/A==", + "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "4.17.11" }, "dependencies": { "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true } } }, @@ -14302,37 +16050,35 @@ "version": "1.10.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", + "dev": true, "requires": { - "path-parse": "^1.0.6" + "path-parse": "1.0.6" } }, "resolve-pathname": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", - "integrity": "sha1-fpriHtgV/WOrGJre7mTcgx7vqHk=" + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==" }, "resolve-protobuf-schema": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", "requires": { - "protocol-buffers-schema": "^3.3.1" + "protocol-buffers-schema": "3.3.2" } }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=" - }, - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true }, "rgbcolor": { "version": "0.0.4", @@ -14343,8 +16089,9 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "rimraf": { @@ -14359,72 +16106,42 @@ "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "hash-base": "3.0.4", + "inherits": "2.0.3" } }, - "rollup": { - "version": "0.52.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.52.3.tgz", - "integrity": "sha512-cw+vb9NqaTXlwJyb8G+Ve+uhhlVTcl1NKBkfANdeQqVcpZFilQgeNnAnNiu7MwfeXrqiKEGz+3R03a3zeFkmEQ==" - }, - "rollup-plugin-cleanup": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-2.0.1.tgz", - "integrity": "sha512-Z2UpMe3l2Oo8jzoB2gAWcb3UqIyiGxlh8kKlcs/W53yTPtwdF8RGfhuTx+/kjRlkSc5TC03t3sX3Lj3B40k9Eg==", + "robust-orientation": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/robust-orientation/-/robust-orientation-1.1.3.tgz", + "integrity": "sha1-2v9bANO+TmByLw6cAVbvln8cIEk=", "requires": { - "acorn": "4.x", - "magic-string": "^0.22.4", - "rollup-pluginutils": "^2.0.1" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - } + "robust-scale": "1.0.2", + "robust-subtract": "1.0.0", + "robust-sum": "1.0.0", + "two-product": "1.0.2" } }, - "rollup-plugin-commonjs": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.4.1.tgz", - "integrity": "sha512-mg+WuD+jlwoo8bJtW3Mvx7Tz6TsIdMsdhuvCnDMoyjh0oxsVgsjB/N0X984RJCWwc5IIiqNVJhXeeITcc73++A==", + "robust-scale": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/robust-scale/-/robust-scale-1.0.2.tgz", + "integrity": "sha1-d1Ey7QlULQKOWLLMecBikLz3jDI=", "requires": { - "acorn": "^5.2.1", - "estree-walker": "^0.5.0", - "magic-string": "^0.22.4", - "resolve": "^1.4.0", - "rollup-pluginutils": "^2.0.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", - "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==" - } + "two-product": "1.0.2", + "two-sum": "1.0.0" } }, - "rollup-plugin-node-resolve": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz", - "integrity": "sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==", - "requires": { - "builtin-modules": "^2.0.0", - "is-module": "^1.0.0", - "resolve": "^1.1.6" - } + "robust-subtract": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/robust-subtract/-/robust-subtract-1.0.0.tgz", + "integrity": "sha1-4LFk4e2LpOOl3aRaEgODSNvtPpo=" }, - "rollup-pluginutils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.6.0.tgz", - "integrity": "sha512-aGQwspEF8oPKvg37u3p7h0cYNwmJR1sCBMZGZ5b9qy8HGtETknqjzcxrDRrcAnJNXN18lBH4Q9vZYth/p4n8jQ==", - "requires": { - "estree-walker": "^0.6.0", - "micromatch": "^3.1.10" - } + "robust-sum": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/robust-sum/-/robust-sum-1.0.0.tgz", + "integrity": "sha1-FmRuUlKStNJdgnV6KGlV4Lv6U9k=" }, "rx": { "version": "2.5.3", @@ -14437,39 +16154,41 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.1.1.tgz", "integrity": "sha1-/EiSKWW8bF77zA/kbpCjr2QTens=", "requires": { - "symbol-observable": "^1.0.1" + "symbol-observable": "1.2.0" } }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, "requires": { - "ret": "~0.1.10" + "ret": "0.1.15" } }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=" + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "schema-utils": { "version": "0.4.7", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "6.10.0", + "ajv-keywords": "3.4.0" }, "dependencies": { "ajv": { @@ -14477,10 +16196,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } } } @@ -14500,7 +16219,7 @@ "resolved": "https://registry.npmjs.org/scroll/-/scroll-2.0.3.tgz", "integrity": "sha512-3ncZzf8gUW739h3LeS68nSssO60O+GGjT3SxzgofQmT8PIoyHzebql9HHPJopZX8iT6TKOdwaWFMqL6LzUN3DQ==", "requires": { - "rafl": "~1.2.1" + "rafl": "1.2.2" } }, "seek-bzip": { @@ -14509,7 +16228,7 @@ "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", "dev": true, "requires": { - "commander": "~2.8.1" + "commander": "2.8.1" }, "dependencies": { "commander": { @@ -14535,49 +16254,14 @@ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "dev": true }, - "send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.1", - "destroy": "~1.0.4", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.3.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, "sentence-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", "integrity": "sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ=", "dev": true, "requires": { - "no-case": "^2.2.0", - "upper-case-first": "^1.1.2" + "no-case": "2.3.2", + "upper-case-first": "1.1.2" } }, "serve-index": { @@ -14586,13 +16270,13 @@ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { - "accepts": "~1.3.4", + "accepts": "1.3.7", "batch": "0.6.1", "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "escape-html": "1.0.3", + "http-errors": "1.6.3", + "mime-types": "2.1.24", + "parseurl": "1.3.3" }, "dependencies": { "debug": { @@ -14618,9 +16302,9 @@ "integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=", "dev": true, "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.3", "send": "0.16.2" }, "dependencies": { @@ -14646,18 +16330,18 @@ "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "on-finished": "2.3.0", + "range-parser": "1.2.1", + "statuses": "1.4.0" } }, "statuses": { @@ -14671,7 +16355,8 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-immediate-shim": { "version": "1.0.1", @@ -14682,20 +16367,22 @@ "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -14708,7 +16395,8 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true }, "sha.js": { "version": "2.4.11", @@ -14716,8 +16404,8 @@ "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, "shallowequal": { @@ -14725,7 +16413,7 @@ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-0.2.2.tgz", "integrity": "sha1-HjL9W8q2rWiKSBLLDMBO/HXHAU4=", "requires": { - "lodash.keys": "^3.1.2" + "lodash.keys": "3.1.2" } }, "shebang-regex": { @@ -14737,13 +16425,13 @@ "shpjs": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/shpjs/-/shpjs-3.4.2.tgz", - "integrity": "sha1-TZw2hyU1bRPQUm+NHIX4hTrVqsU=", + "integrity": "sha512-vFv4xUDfoMPcDrdrfpdFtVdo1OPW+PB+t240Htg2VJSlKs4vkN/ZfOweGpULnheTmedR1Q0EBaEp4tA6HuuBXQ==", "requires": { - "jszip": "^2.4.0", - "lie": "^3.0.1", - "lru-cache": "^2.7.0", - "parsedbf": "^1.0.0", - "proj4": "^2.1.4" + "jszip": "2.6.1", + "lie": "3.1.1", + "lru-cache": "2.7.3", + "parsedbf": "1.0.0", + "proj4": "2.5.0" }, "dependencies": { "jszip": { @@ -14751,7 +16439,7 @@ "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz", "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=", "requires": { - "pako": "~1.0.2" + "pako": "1.0.10" } }, "proj4": { @@ -14760,7 +16448,7 @@ "integrity": "sha512-XZTRT7OPdLzgvtTqL8DG2cEj8lYdovztOwiwpwRSYayOty5Ipf3H68dh/fiL+HKDEyetmQSMhkkMGiJoyziz3w==", "requires": { "mgrs": "1.0.0", - "wkt-parser": "^1.2.0" + "wkt-parser": "https://github.com/geosolutions-it/wkt-parser/tarball/mapstore2_fixes" } } } @@ -14774,7 +16462,8 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "simple-fmt": { "version": "0.1.0", @@ -14794,6 +16483,11 @@ "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA=", "dev": true }, + "skmeans": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", + "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==" + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -14806,28 +16500,30 @@ "integrity": "sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=", "dev": true, "requires": { - "no-case": "^2.2.0" + "no-case": "2.3.2" } }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.1" }, "dependencies": { "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -14836,188 +16532,101 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, "snapdragon-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" }, "dependencies": { "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, "snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, "requires": { - "kind-of": "^3.2.0" + "kind-of": "3.2.2" } }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, "requires": { - "hoek": "2.x.x" - } - }, - "socket.io": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz", - "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=", - "requires": { - "debug": "~2.6.6", - "engine.io": "~3.1.0", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.0.4", - "socket.io-parser": "~3.1.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" - }, - "socket.io-client": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", - "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~2.6.4", - "engine.io-client": "~3.1.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.1.1", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "socket.io-parser": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", - "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", - "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "has-binary2": "~1.0.2", - "isarray": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } + "hoek": "2.16.3" } }, "sockjs": { @@ -15026,8 +16635,8 @@ "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", "dev": true, "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^2.0.2" + "faye-websocket": "0.10.0", + "uuid": "2.0.3" }, "dependencies": { "uuid": { @@ -15044,12 +16653,12 @@ "integrity": "sha1-8CEqhVDkyUaMjM6u79LjSTwDOtU=", "dev": true, "requires": { - "debug": "^2.2.0", + "debug": "2.6.9", "eventsource": "0.1.6", - "faye-websocket": "~0.11.0", - "inherits": "^2.0.1", - "json3": "^3.3.2", - "url-parse": "^1.1.1" + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.4.7" }, "dependencies": { "debug": { @@ -15067,7 +16676,7 @@ "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", "dev": true, "requires": { - "websocket-driver": ">=0.5.1" + "websocket-driver": "0.7.0" } }, "ms": { @@ -15084,7 +16693,7 @@ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", "dev": true, "requires": { - "is-plain-obj": "^1.0.0" + "is-plain-obj": "1.1.0" } }, "source-list-map": { @@ -15102,27 +16711,29 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "atob": "2.1.2", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" } }, "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "^0.5.6" + "source-map": "0.5.7" } }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true }, "spdx-correct": { "version": "3.1.0", @@ -15130,8 +16741,8 @@ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "dev": true, "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.4" } }, "spdx-exceptions": { @@ -15143,11 +16754,11 @@ "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "spdx-exceptions": "2.2.0", + "spdx-license-ids": "3.0.4" } }, "spdx-license-ids": { @@ -15162,12 +16773,12 @@ "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", "dev": true, "requires": { - "debug": "^2.6.8", - "handle-thing": "^1.2.5", - "http-deceiver": "^1.2.7", - "safe-buffer": "^5.0.1", - "select-hose": "^2.0.0", - "spdy-transport": "^2.0.18" + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.2", + "select-hose": "2.0.0", + "spdy-transport": "2.1.1" }, "dependencies": { "debug": { @@ -15193,13 +16804,13 @@ "integrity": "sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q==", "dev": true, "requires": { - "debug": "^2.6.8", - "detect-node": "^2.0.3", - "hpack.js": "^2.1.6", - "obuf": "^1.1.1", - "readable-stream": "^2.2.9", - "safe-buffer": "^5.0.1", - "wbuf": "^1.7.2" + "debug": "2.6.9", + "detect-node": "2.0.4", + "hpack.js": "2.1.6", + "obuf": "1.1.2", + "readable-stream": "2.3.6", + "safe-buffer": "5.1.2", + "wbuf": "1.7.3" }, "dependencies": { "debug": { @@ -15220,31 +16831,31 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -15252,9 +16863,10 @@ "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, "requires": { - "extend-shallow": "^3.0.0" + "extend-shallow": "3.0.2" } }, "sprintf-js": { @@ -15267,29 +16879,31 @@ "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true } } }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", "dev": true }, "stackblur": { @@ -15307,17 +16921,19 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "define-property": "0.2.5", + "object-copy": "0.1.0" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -15325,7 +16941,8 @@ "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true }, "stream-browserify": { "version": "2.0.2", @@ -15333,8 +16950,8 @@ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "inherits": "2.0.3", + "readable-stream": "2.0.6" } }, "stream-combiner": { @@ -15353,17 +16970,17 @@ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" }, "dependencies": { "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "readable-stream": { @@ -15384,10 +17001,10 @@ "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -15395,17 +17012,16 @@ "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" }, "dependencies": { "strip-ansi": { @@ -15413,7 +17029,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -15438,7 +17054,8 @@ "stringstream": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==" + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "dev": true }, "strip-ansi": { "version": "0.1.1", @@ -15451,7 +17068,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "is-utf8": "0.2.1" } }, "strip-dirs": { @@ -15530,13 +17147,14 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "^4.0.1" + "get-stdin": "4.0.1" } }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "style-loader": { "version": "0.12.4", @@ -15544,7 +17162,7 @@ "integrity": "sha1-rn0GZdxNxlPaov6Xu5CRS8HSLZs=", "dev": true, "requires": { - "loader-utils": "^0.2.7" + "loader-utils": "0.2.17" }, "dependencies": { "big.js": { @@ -15565,10 +17183,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } } } @@ -15579,7 +17197,7 @@ "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", "dev": true, "requires": { - "chalk": "^1.0.0" + "chalk": "1.1.3" }, "dependencies": { "ansi-styles": { @@ -15607,7 +17225,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -15623,13 +17241,13 @@ "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", "dev": true, "requires": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", - "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" }, "dependencies": { "esprima": { @@ -15644,8 +17262,8 @@ "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" + "argparse": "1.0.10", + "esprima": "2.7.3" } } } @@ -15656,14 +17274,14 @@ "integrity": "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=", "dev": true, "requires": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" + "lower-case": "1.1.4", + "upper-case": "1.1.3" } }, "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ=" + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, "symbol-tree": { "version": "3.2.2", @@ -15674,7 +17292,8 @@ "taffydb": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true }, "tapable": { "version": "0.2.9", @@ -15682,27 +17301,16 @@ "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==", "dev": true }, - "tar": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/tar/-/tar-3.1.5.tgz", - "integrity": "sha512-TKJKz1fqBOZBaIQ/MGRKU0EnTGmKMLy4ReTRgP10AgtfOWBbj9PBg4MgY80GFpqGbs2EzcIctW5gbwbP4woDYg==", - "requires": { - "minipass": "^2.0.2", - "minizlib": "^1.0.3", - "mkdirp": "^0.5.0", - "yallist": "^3.0.2" - } - }, "tar-stream": { "version": "0.4.7", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.4.7.tgz", "integrity": "sha1-Hx0s6evHtCdlJDyg6PG3v9oKrc0=", "dev": true, "requires": { - "bl": "^0.9.0", - "end-of-stream": "^1.0.0", - "readable-stream": "^1.0.27-1", - "xtend": "^4.0.0" + "bl": "0.9.5", + "end-of-stream": "1.4.1", + "readable-stream": "1.1.14", + "xtend": "4.0.1" }, "dependencies": { "isarray": { @@ -15725,22 +17333,6 @@ } } }, - "temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", - "requires": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" - } - } - }, "tether": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.6.tgz", @@ -15749,7 +17341,7 @@ "text-encoding-polyfill": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/text-encoding-polyfill/-/text-encoding-polyfill-0.6.7.tgz", - "integrity": "sha1-TSfeAVPkyG6yYx/9dMLz9Xlpqew=" + "integrity": "sha512-/DZ1XJqhbqRkCop6s9ZFu8JrFRwmVuHg4quIRm+ziFkR3N3ec6ck6yBvJ1GYeEQZhLVwRW0rZE+C3SSJpy0RTg==" }, "text-table": { "version": "0.2.0", @@ -15757,11 +17349,6 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=" - }, "through": { "version": "2.3.8", "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -15774,8 +17361,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" + "readable-stream": "1.0.34", + "xtend": "4.0.1" }, "dependencies": { "isarray": { @@ -15807,10 +17394,10 @@ "timers-browserify": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha1-HSjj0qrfHVpZlsTp+VYBzQU0gK4=", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", "dev": true, "requires": { - "setimmediate": "^1.0.4" + "setimmediate": "1.0.5" } }, "tiny-invariant": { @@ -15828,14 +17415,19 @@ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" }, + "tinyqueue": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-1.2.3.tgz", + "integrity": "sha512-Qz9RgWuO9l8lT+Y9xvbzhPT2efIUIFd69N7eF7tJ9lnQl0iLj1M7peK7IoUGZL9DJHw9XftqLreccfxcQgYLxA==" + }, "title-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", "integrity": "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=", "dev": true, "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" + "no-case": "2.3.2", + "upper-case": "1.1.3" } }, "tmatch": { @@ -15848,14 +17440,16 @@ "version": "0.0.31", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true, "requires": { - "os-tmpdir": "~1.0.1" + "os-tmpdir": "1.0.2" } }, "to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true }, "to-arraybuffer": { "version": "1.0.1", @@ -15866,7 +17460,7 @@ "to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", "dev": true }, "to-fast-properties": { @@ -15879,28 +17473,31 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" } }, "toggle-selection": { @@ -15914,36 +17511,35 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, + "topojson-client": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.0.0.tgz", + "integrity": "sha1-H5kpOnfvQqRI0DKoGqmCtz82DS8=", + "requires": { + "commander": "2.20.0" + } + }, + "topojson-server": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.0.tgz", + "integrity": "sha1-N4546Hw5cqe1vixdYENptrrmnF4=", + "requires": { + "commander": "2.20.0" + } + }, "toposort": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/toposort/-/toposort-0.2.12.tgz", "integrity": "sha1-x9KYTz1IwhcxXMMtdwiIt3lJHoE=", "dev": true }, - "touch": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", - "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", - "requires": { - "nopt": "~1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "requires": { - "abbrev": "1" - } - } - } - }, "tough-cookie": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, "requires": { - "punycode": "^1.4.1" + "punycode": "1.4.1" } }, "tr46": { @@ -15952,11 +17548,6 @@ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "dev": true }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" - }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -15996,8 +17587,9 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.2" } }, "turf-bbox": { @@ -16005,7 +17597,7 @@ "resolved": "https://registry.npmjs.org/turf-bbox/-/turf-bbox-3.0.10.tgz", "integrity": "sha1-2/2WZDqB2iECIbK74fd9HHEKI+E=", "requires": { - "turf-meta": "^3.0.10" + "turf-meta": "3.0.12" } }, "turf-buffer": { @@ -16015,8 +17607,8 @@ "requires": { "geojson-normalize": "0.0.0", "jsts": "1.1.2", - "turf-combine": "^3.0.10", - "turf-helpers": "^3.0.10" + "turf-combine": "3.0.12", + "turf-helpers": "3.0.12" } }, "turf-center": { @@ -16024,8 +17616,8 @@ "resolved": "https://registry.npmjs.org/turf-center/-/turf-center-3.0.12.tgz", "integrity": "sha1-Rd1sFym7hnKR4+AC6cdQb4xEAZY=", "requires": { - "turf-bbox": "^3.0.12", - "turf-helpers": "^3.0.12" + "turf-bbox": "3.0.12", + "turf-helpers": "3.0.12" }, "dependencies": { "turf-bbox": { @@ -16033,7 +17625,7 @@ "resolved": "https://registry.npmjs.org/turf-bbox/-/turf-bbox-3.0.12.tgz", "integrity": "sha1-P6BhF8hEOGDsgKxg/V0vEyC/sb4=", "requires": { - "turf-meta": "^3.0.12" + "turf-meta": "3.0.12" } } } @@ -16043,7 +17635,7 @@ "resolved": "https://registry.npmjs.org/turf-combine/-/turf-combine-3.0.12.tgz", "integrity": "sha1-FnB0bw/c4NHqiqain/5UONRGz3M=", "requires": { - "turf-meta": "^3.0.12" + "turf-meta": "3.0.12" } }, "turf-distance": { @@ -16051,8 +17643,8 @@ "resolved": "https://registry.npmjs.org/turf-distance/-/turf-distance-3.0.12.tgz", "integrity": "sha1-+5e4cF+s2ZOxReAUtBhiYQ7spEk=", "requires": { - "turf-helpers": "^3.0.12", - "turf-invariant": "^3.0.12" + "turf-helpers": "3.0.12", + "turf-invariant": "3.0.12" } }, "turf-explode": { @@ -16060,8 +17652,8 @@ "resolved": "https://registry.npmjs.org/turf-explode/-/turf-explode-3.0.12.tgz", "integrity": "sha1-xa4owoTNAGxWUR7H1AjEilQU7P4=", "requires": { - "turf-helpers": "^3.0.12", - "turf-meta": "^3.0.12" + "turf-helpers": "3.0.12", + "turf-meta": "3.0.12" } }, "turf-helpers": { @@ -16074,7 +17666,7 @@ "resolved": "https://registry.npmjs.org/turf-inside/-/turf-inside-3.0.12.tgz", "integrity": "sha1-m6QPpu7WO+x+fYiqZCdiLE3wcGY=", "requires": { - "turf-invariant": "^3.0.12" + "turf-invariant": "3.0.12" } }, "turf-intersect": { @@ -16090,6 +17682,11 @@ "resolved": "https://registry.npmjs.org/turf-invariant/-/turf-invariant-3.0.12.tgz", "integrity": "sha1-O5UlOVOZHr2WLdNdT2cEwofejr4=" }, + "turf-jsts": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/turf-jsts/-/turf-jsts-1.2.3.tgz", + "integrity": "sha512-Ja03QIJlPuHt4IQ2FfGex4F4JAr8m3jpaHbFbQrgwr7s7L6U8ocrHiF3J1+wf9jzhGKxvDeaCAnGDot8OjGFyA==" + }, "turf-meta": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/turf-meta/-/turf-meta-3.0.12.tgz", @@ -16100,7 +17697,7 @@ "resolved": "https://registry.npmjs.org/turf-point/-/turf-point-2.0.1.tgz", "integrity": "sha1-otzDCi0g9Ez1xicd97riwOIUYGk=", "requires": { - "minimist": "^1.1.0" + "minimist": "1.2.0" } }, "turf-point-on-surface": { @@ -16108,11 +17705,11 @@ "resolved": "https://registry.npmjs.org/turf-point-on-surface/-/turf-point-on-surface-3.0.10.tgz", "integrity": "sha1-GeQR0u/fJ50AP916A1MfV29RUkU=", "requires": { - "turf-center": "^3.0.10", - "turf-distance": "^3.0.10", - "turf-explode": "^3.0.10", - "turf-helpers": "^3.0.10", - "turf-inside": "^3.0.10" + "turf-center": "3.0.12", + "turf-distance": "3.0.12", + "turf-explode": "3.0.12", + "turf-helpers": "3.0.12", + "turf-inside": "3.0.12" } }, "turf-union": { @@ -16131,7 +17728,18 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "two-product": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/two-product/-/two-product-1.0.2.tgz", + "integrity": "sha1-Z9ldSyV6kh4stL16+VEfkIhSLqo=" + }, + "two-sum": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/two-sum/-/two-sum-1.0.0.tgz", + "integrity": "sha1-MdPzIjnk9zHsqd+RVeKyl/AIq2Q=" }, "type-check": { "version": "0.3.2", @@ -16139,7 +17747,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "1.1.2" } }, "type-is": { @@ -16149,7 +17757,7 @@ "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "mime-types": "2.1.24" } }, "typedarray": { @@ -16166,28 +17774,25 @@ "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" } }, "uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true }, "uncontrollable": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", "integrity": "sha1-4DWCkSUuGGUiLZCTmxny9J+Bwak=", "requires": { - "invariant": "^2.1.0" + "invariant": "2.2.4" } }, "underscore": { @@ -16199,30 +17804,33 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "set-value": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" } } } @@ -16265,25 +17873,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "has-value": "0.3.1", + "isobject": "3.0.1" }, "dependencies": { "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" }, "dependencies": { "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, "requires": { "isarray": "1.0.0" } @@ -16293,7 +17904,8 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true } } }, @@ -16315,7 +17927,7 @@ "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", "dev": true, "requires": { - "upper-case": "^1.1.1" + "upper-case": "1.1.3" } }, "uri-js": { @@ -16323,7 +17935,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.1" }, "dependencies": { "punycode": { @@ -16336,7 +17948,8 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true }, "url": { "version": "0.11.0", @@ -16360,8 +17973,8 @@ "integrity": "sha1-Z+h3l1n4AA2nSZSQZoDJQ6mwkl0=", "dev": true, "requires": { - "loader-utils": "0.2.x", - "mime": "1.2.x" + "loader-utils": "0.2.17", + "mime": "1.2.11" }, "dependencies": { "big.js": { @@ -16382,10 +17995,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } }, "mime": { @@ -16402,8 +18015,8 @@ "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "dev": true, "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "querystringify": "2.1.1", + "requires-port": "1.0.0" } }, "url-regex": { @@ -16412,13 +18025,14 @@ "integrity": "sha1-g50T1gIYMgLqcP75b8bD0pUU+4Q=", "dev": true, "requires": { - "ip-regex": "^1.0.1" + "ip-regex": "1.0.3" } }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true }, "user-home": { "version": "1.1.1", @@ -16429,11 +18043,11 @@ "useragent": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", - "integrity": "sha1-IX+UOtVAyyEoZYqyP8lg9qiMmXI=", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", "dev": true, "requires": { - "lru-cache": "4.1.x", - "tmp": "0.0.x" + "lru-cache": "4.1.5", + "tmp": "0.0.31" }, "dependencies": { "lru-cache": { @@ -16442,8 +18056,8 @@ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, "yallist": { @@ -16485,22 +18099,21 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" }, - "uws": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/uws/-/uws-9.14.0.tgz", - "integrity": "sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg==", - "optional": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "spdx-correct": "3.1.0", + "spdx-expression-parse": "3.0.0" } }, + "validator": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", + "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" + }, "value-equal": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.2.1.tgz", @@ -16522,16 +18135,18 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true } } }, @@ -16540,11 +18155,11 @@ "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.0.0.tgz", "integrity": "sha1-iGIFAONrrQJaCwHMJRBtvLMJBUg=", "requires": { - "has": "^1.0.1", - "is-buffer": "^1.1.4", + "has": "1.0.3", + "is-buffer": "1.1.6", "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "x-is-string": "^0.1.0" + "unist-util-stringify-position": "1.1.2", + "x-is-string": "0.1.0" } }, "vfile-reporter": { @@ -16552,14 +18167,14 @@ "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-3.0.0.tgz", "integrity": "sha1-/lBxTjc+DSlAUQA4qZvWCb3IIJ8=", "requires": { - "chalk": "^1.1.0", - "log-symbols": "^1.0.2", - "plur": "^2.0.0", - "repeat-string": "^1.5.0", - "string-width": "^1.0.0", - "strip-ansi": "^3.0.1", + "chalk": "1.1.3", + "log-symbols": "1.0.2", + "plur": "2.1.2", + "repeat-string": "1.6.1", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", "trim": "0.0.1", - "unist-util-stringify-position": "^1.0.0" + "unist-util-stringify-position": "1.1.2" }, "dependencies": { "ansi-styles": { @@ -16572,11 +18187,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -16584,7 +18199,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -16595,8 +18210,8 @@ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "dev": true, "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" + "clone": "0.2.0", + "clone-stats": "0.0.1" }, "dependencies": { "clone": { @@ -16613,14 +18228,14 @@ "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", "dev": true, "requires": { - "defaults": "^1.0.0", - "glob-stream": "^3.1.5", - "glob-watcher": "^0.0.6", - "graceful-fs": "^3.0.0", - "mkdirp": "^0.5.0", - "strip-bom": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" + "defaults": "1.0.3", + "glob-stream": "3.1.18", + "glob-watcher": "0.0.6", + "graceful-fs": "3.0.11", + "mkdirp": "0.5.1", + "strip-bom": "1.0.0", + "through2": "0.6.5", + "vinyl": "0.4.6" }, "dependencies": { "graceful-fs": { @@ -16629,7 +18244,7 @@ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", "dev": true, "requires": { - "natives": "^1.1.0" + "natives": "1.1.6" } }, "strip-bom": { @@ -16638,8 +18253,8 @@ "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", "dev": true, "requires": { - "first-chunk-stream": "^1.0.0", - "is-utf8": "^0.2.0" + "first-chunk-stream": "1.0.0", + "is-utf8": "0.2.1" } } } @@ -16649,18 +18264,13 @@ "resolved": "https://registry.npmjs.org/vis/-/vis-4.21.0.tgz", "integrity": "sha1-3XFji/9/ZJXQC8n0DCU1JhM97Ws=", "requires": { - "emitter-component": "^1.1.1", - "hammerjs": "^2.0.8", - "keycharm": "^0.2.0", - "moment": "^2.18.1", - "propagating-hammerjs": "^1.4.6" + "emitter-component": "1.1.1", + "hammerjs": "2.0.8", + "keycharm": "0.2.0", + "moment": "2.21.0", + "propagating-hammerjs": "1.4.6" } }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" - }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -16681,15 +18291,7 @@ "resolved": "https://registry.npmjs.org/w3c-schemas/-/w3c-schemas-1.3.1.tgz", "integrity": "sha1-kBobqo8wfh+LuwXFIO6ikFrFxCk=", "requires": { - "jsonix": ">=2.3.2" - } - }, - "walk": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz", - "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=", - "requires": { - "foreachasync": "^3.0.0" + "jsonix": "2.4.1" } }, "ware": { @@ -16698,7 +18300,7 @@ "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", "dev": true, "requires": { - "wrap-fn": "^0.1.0" + "wrap-fn": "0.1.5" } }, "warning": { @@ -16706,28 +18308,28 @@ "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.4.0" } }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha1-S8EsLr6KonenHx0/FNaFx7RGzQA=", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", "dev": true, "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "chokidar": "2.1.5", + "graceful-fs": "4.1.15", + "neo-async": "2.6.1" }, "dependencies": { "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "micromatch": "3.1.10", + "normalize-path": "2.1.1" }, "dependencies": { "normalize-path": { @@ -16736,7 +18338,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } } } @@ -16747,18 +18349,18 @@ "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "anymatch": "2.0.0", + "async-each": "1.0.3", + "braces": "2.3.2", + "fsevents": "1.2.9", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.1", + "normalize-path": "3.0.0", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.1.2" } }, "glob-parent": { @@ -16767,8 +18369,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" }, "dependencies": { "is-glob": { @@ -16777,7 +18379,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "2.1.1" } } } @@ -16788,7 +18390,7 @@ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "is-extglob": "2.1.1" } }, "normalize-path": { @@ -16802,10 +18404,10 @@ "wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "requires": { - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "1.0.1" } }, "wcwidth": { @@ -16815,13 +18417,13 @@ "dev": true, "optional": true, "requires": { - "defaults": "^1.0.3" + "defaults": "1.0.3" } }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha1-qFWYCx8LazWbodXZ+zmulB+qY60=", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, "webpack": { @@ -16830,26 +18432,26 @@ "integrity": "sha1-e7HXKuIIfdGkr1Jq/sFe7RfdpHU=", "dev": true, "requires": { - "acorn": "^4.0.4", - "acorn-dynamic-import": "^2.0.0", - "ajv": "^4.7.0", - "ajv-keywords": "^1.1.1", - "async": "^2.1.2", - "enhanced-resolve": "^3.0.0", - "interpret": "^1.0.0", - "json-loader": "^0.5.4", - "loader-runner": "^2.3.0", - "loader-utils": "^0.2.16", - "memory-fs": "~0.4.1", - "mkdirp": "~0.5.0", - "node-libs-browser": "^2.0.0", - "source-map": "^0.5.3", - "supports-color": "^3.1.0", - "tapable": "~0.2.5", - "uglify-js": "^2.7.5", - "watchpack": "^1.2.0", - "webpack-sources": "^0.1.4", - "yargs": "^6.0.0" + "acorn": "4.0.13", + "acorn-dynamic-import": "2.0.2", + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "interpret": "1.2.0", + "json-loader": "0.5.4", + "loader-runner": "2.4.0", + "loader-utils": "0.2.17", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.2.0", + "source-map": "0.5.7", + "supports-color": "3.2.3", + "tapable": "0.2.9", + "uglify-js": "2.8.29", + "watchpack": "1.6.0", + "webpack-sources": "0.1.5", + "yargs": "6.6.0" }, "dependencies": { "acorn": { @@ -16882,9 +18484,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" } }, "json5": { @@ -16899,10 +18501,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } }, "strip-ansi": { @@ -16911,7 +18513,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -16920,7 +18522,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "1.0.0" } }, "yargs": { @@ -16929,19 +18531,19 @@ "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", "dev": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.3", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" } }, "yargs-parser": { @@ -16950,7 +18552,7 @@ "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "dev": true, "requires": { - "camelcase": "^3.0.0" + "camelcase": "3.0.0" } } } @@ -16961,8 +18563,8 @@ "integrity": "sha1-Sy/avTpTY9IsVTGh6qPIQoImm7U=", "dev": true, "requires": { - "commander": "^2.7.1", - "filesize": "^3.1.2", + "commander": "2.20.0", + "filesize": "3.6.1", "humanize": "0.0.9" } }, @@ -16972,11 +18574,11 @@ "integrity": "sha1-+PwRIM47T8VoDO7LQ9d3lmshEF4=", "dev": true, "requires": { - "memory-fs": "~0.4.1", - "mime": "^1.5.0", - "path-is-absolute": "^1.0.0", - "range-parser": "^1.0.3", - "time-stamp": "^2.0.0" + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.1", + "time-stamp": "2.2.0" }, "dependencies": { "mime": { @@ -16994,22 +18596,22 @@ "dev": true, "requires": { "ansi-html": "0.0.7", - "chokidar": "^1.6.0", - "compression": "^1.5.2", - "connect-history-api-fallback": "^1.3.0", - "express": "^4.13.3", - "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.17.1", + "chokidar": "1.7.0", + "compression": "1.7.4", + "connect-history-api-fallback": "1.6.0", + "express": "4.16.4", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", "opn": "4.0.2", - "portfinder": "^1.0.9", - "serve-index": "^1.7.2", + "portfinder": "1.0.20", + "serve-index": "1.9.1", "sockjs": "0.3.18", "sockjs-client": "1.1.2", - "spdy": "^3.4.1", - "strip-ansi": "^3.0.0", - "supports-color": "^3.1.1", - "webpack-dev-middleware": "^1.9.0", - "yargs": "^6.0.0" + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "3.2.3", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" }, "dependencies": { "camelcase": { @@ -17024,15 +18626,15 @@ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "anymatch": "1.3.2", + "async-each": "1.0.3", + "fsevents": "1.2.9", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1" } }, "cliui": { @@ -17041,9 +18643,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" } }, "is-extglob": { @@ -17058,7 +18660,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "strip-ansi": { @@ -17067,7 +18669,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -17076,7 +18678,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "1.0.0" } }, "yargs": { @@ -17085,19 +18687,19 @@ "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", "dev": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.3", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" } }, "yargs-parser": { @@ -17106,7 +18708,7 @@ "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "dev": true, "requires": { - "camelcase": "^3.0.0" + "camelcase": "3.0.0" } } } @@ -17117,11 +18719,11 @@ "integrity": "sha1-lR8zwHMk7IsWzDxvgSgjT48ygh0=", "dev": true, "requires": { - "glob": "^7.0.5", - "mkdirp": "^0.5.1", + "glob": "7.1.1", + "mkdirp": "0.5.1", "tmp": "0.0.29", - "uglify-js": "^2.6.2", - "webpack-sources": "^0.1.2" + "uglify-js": "2.8.29", + "webpack-sources": "0.1.5" }, "dependencies": { "tmp": { @@ -17130,7 +18732,7 @@ "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", "dev": true, "requires": { - "os-tmpdir": "~1.0.1" + "os-tmpdir": "1.0.2" } } } @@ -17141,8 +18743,8 @@ "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", "dev": true, "requires": { - "source-list-map": "~0.1.7", - "source-map": "~0.5.3" + "source-list-map": "0.1.8", + "source-map": "0.5.7" } }, "websocket-driver": { @@ -17151,14 +18753,14 @@ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "http-parser-js": ">=0.4.0", - "websocket-extensions": ">=0.1.1" + "http-parser-js": "0.5.0", + "websocket-extensions": "0.1.3" } }, "websocket-extensions": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, "wellknown": { @@ -17166,8 +18768,8 @@ "resolved": "https://registry.npmjs.org/wellknown/-/wellknown-0.5.0.tgz", "integrity": "sha1-Ca6YcfqCbPCm7BU37wDDedeNcQE=", "requires": { - "concat-stream": "~1.5.0", - "minimist": "~1.2.0" + "concat-stream": "1.5.2", + "minimist": "1.2.0" } }, "whatwg-encoding": { @@ -17190,8 +18792,8 @@ "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", "dev": true, "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "tr46": "0.0.3", + "webidl-conversions": "3.0.1" }, "dependencies": { "webidl-conversions": { @@ -17214,7 +18816,7 @@ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "which-module": { @@ -17223,35 +18825,29 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", "dev": true }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true }, "wkt-parser": { "version": "https://github.com/geosolutions-it/wkt-parser/tarball/mapstore2_fixes", - "integrity": "sha1-aJh2mPtVyLUi8VJwqlhQ/n8/MZE=" + "integrity": "sha512-wO2eAPzA4NNvXJYDSBBoWTZusJD/nXIO66teTnSUhy+94f6YbAyAJByjvTXZfyMU5/QyY+9PxurcCuj361z+nw==" }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true }, "worker-loader": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-1.1.1.tgz", "integrity": "sha1-kg103axoFvxjU5JlPti0rxkp/ZI=", "requires": { - "loader-utils": "^1.0.0", - "schema-utils": "^0.4.0" + "loader-utils": "1.2.3", + "schema-utils": "0.4.7" } }, "wrap-ansi": { @@ -17295,17 +18891,8 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "wtf-8": { "version": "1.0.0", @@ -17341,8 +18928,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "^4.1.0" + "sax": "1.2.4", + "xmlbuilder": "4.2.1" } }, "xmlbuilder": { @@ -17350,14 +18937,9 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", "requires": { - "lodash": "^4.0.0" + "lodash": "4.17.5" } }, - "xmlcreate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", - "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=" - }, "xmldom": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", @@ -17368,11 +18950,6 @@ "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" }, - "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -17385,15 +18962,11 @@ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" - }, "yargs": { "version": "3.10.0", "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, "requires": { "camelcase": "1.2.1", "cliui": "2.1.0", @@ -17407,7 +18980,7 @@ "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", "dev": true, "requires": { - "camelcase": "^3.0.0" + "camelcase": "3.0.0" }, "dependencies": { "camelcase": { @@ -17424,14 +18997,15 @@ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "dev": true, "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "buffer-crc32": "0.2.13", + "fd-slicer": "1.1.0" } }, "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true } } } diff --git a/package.json b/package.json index 2951d1db70..252766b43b 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "@mapbox/togeojson": "0.16.0", "@turf/bbox": "4.1.0", "@turf/center": "5.1.5", + "@turf/circle": "6.0.1", "@turf/great-circle": "5.1.5", "@turf/inside": "4.1.0", "@turf/bbox-polygon": "5.1.5", @@ -114,6 +115,8 @@ "eventlistener": "0.0.1", "file-saver": "1.3.3", "fs-extra": "3.0.1", + "geostyler-sld-parser": "https://github.com/geosolutions-it/geostyler-sld-parser/tarball/ms2", + "geostyler-openlayers-parser": "https://github.com/geosolutions-it/geostyler-openlayers-parser/tarball/ms2", "history": "4.6.1", "html2canvas": "0.5.0-beta4", "immutable": "4.0.0-rc.12", @@ -139,7 +142,7 @@ "node-geo-distance": "1.2.0", "object-assign": "4.1.1", "ogc-schemas": "2.6.1", - "openlayers": "4.6.4", + "ol": "5.3.0", "pdfviewer": "0.3.2", "proj4": "https://github.com/geosolutions-it/proj4js/tarball/mapstore2_fixes", "prop-types": "15.6.0", diff --git a/project/custom/templates/index.html b/project/custom/templates/index.html index 847db456db..e2101f9641 100644 --- a/project/custom/templates/index.html +++ b/project/custom/templates/index.html @@ -7,14 +7,12 @@ __PROJECTDESCRIPTION__ - - diff --git a/project/custom/templates/webpack.config.js b/project/custom/templates/webpack.config.js index 3f17a183ec..abe7f9595d 100644 --- a/project/custom/templates/webpack.config.js +++ b/project/custom/templates/webpack.config.js @@ -41,7 +41,6 @@ module.exports = (env) => { "__DEVTOOLS__": !isProduction }), new NormalModuleReplacementPlugin(/leaflet$/, path.join(__dirname, "MapStore2", "web", "client", "libs", "leaflet")), - new NormalModuleReplacementPlugin(/openlayers$/, path.join(__dirname, "MapStore2", "web", "client", "libs", "openlayers")), new NormalModuleReplacementPlugin(/cesium$/, path.join(__dirname, "MapStore2", "web", "client", "libs", "cesium")), new NormalModuleReplacementPlugin(/proj4$/, path.join(__dirname, "MapStore2", "web", "client", "libs", "proj4")), new NoEmitOnErrorsPlugin(), diff --git a/project/standard/templates/index.html b/project/standard/templates/index.html index bb8ee79d50..30249737b6 100644 --- a/project/standard/templates/index.html +++ b/project/standard/templates/index.html @@ -86,13 +86,11 @@ - - diff --git a/project/standard/templates/indexTemplate.html b/project/standard/templates/indexTemplate.html index 7d2a1c4d19..25531bb99f 100644 --- a/project/standard/templates/indexTemplate.html +++ b/project/standard/templates/indexTemplate.html @@ -86,13 +86,11 @@ - - diff --git a/web/client/api/WFS3.js b/web/client/api/WFS3.js new file mode 100644 index 0000000000..69aac58166 --- /dev/null +++ b/web/client/api/WFS3.js @@ -0,0 +1,144 @@ +/* + * Copyright 2019, GeoSolutions Sas. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +import axios from 'axios'; +import head from 'lodash/head'; +import isString from 'lodash/isString'; +import ConfigUtils from '../utils/ConfigUtils'; + +const capabilitiesCache = {}; + +const collectionToLayer = (collection) => { + const { name, title, extent, links } = collection; + const spatial = extent && extent.spatial || [-180, -90, 180, 90]; + const { href: layerUrl, type: format } = head((links || []).filter(({ rel }) => rel === 'tiles')) || {}; + const { href: tilingSchemes } = head((links || []).filter(({ rel }) => rel === 'tilingSchemes')) || {}; + const { href: tilingScheme } = head((links || []).filter(({ rel }) => rel === 'tilingScheme')) || {}; + return { + name, + title, + type: 'wfs3', + visibility: true, + url: layerUrl, + format, + tilingScheme, + tilingSchemes, + bbox: { + crs: 'EPSG:4326', + bounds: { + minx: spatial[0], + miny: spatial[1], + maxx: spatial[2], + maxy: spatial[3] + } + } + }; +}; + +const searchAndPaginate = (json = {}, startPosition, maxRecords, text, url) => { + const { collections } = json; + const filteredLayers = collections + .filter((layer = {}) => !text + || layer.name && layer.name.toLowerCase().indexOf(text.toLowerCase()) !== -1 + || layer.title && layer.title.toLowerCase().indexOf(text.toLowerCase()) !== -1); + return { + numberOfRecordsMatched: filteredLayers.length, + numberOfRecordsReturned: Math.min(maxRecords, filteredLayers.length), + nextRecord: startPosition + Math.min(maxRecords, filteredLayers.length) + 1, + records: filteredLayers + .filter((layer, index) => index >= startPosition - 1 && index < startPosition - 1 + maxRecords) + .map((collection) => ({ + ...collection, + ...collectionToLayer(collection), + capabilitiesUrl: url + })) + }; +}; + +const parseUrl = function(url) { + const serviceUrl = (url || '').split(/\/wfs3\//)[0]; + return `${serviceUrl}/wfs3/collections`; +}; + +export const getRecords = function(url, startPosition, maxRecords, text) { + const cached = capabilitiesCache[url]; + if (cached && new Date().getTime() < cached.timestamp + (ConfigUtils.getConfigProp('cacheExpire') || 60) * 1000) { + return new Promise((resolve) => { + resolve(searchAndPaginate(cached.data, startPosition, maxRecords, text, url)); + }); + } + return axios.get(parseUrl(url)) + .then(({ data }) => { + capabilitiesCache[url] = { + timestamp: new Date().getTime(), + data + }; + return searchAndPaginate(data, startPosition, maxRecords, text, url); + }); +}; + +export const textSearch = function(url, startPosition, maxRecords, text) { + return getRecords(url, startPosition, maxRecords, text); +}; + +export const getTilingSchemes = (layer) => { + const { tilingSchemes, tilingScheme } = layer; + if (isString(tilingSchemes)) { + return axios.get(tilingSchemes) + .then(({ data }) => { + return data && data.tilingSchemes && data.tilingSchemes.length > 0 + ? axios.all( + data.tilingSchemes.map((tilingSchemeId) => + axios.get(tilingScheme.replace('{tilingSchemeId}', tilingSchemeId)) + .then(({ data: scheme }) => scheme) + .catch(() => null) + ) + ) + .then((schemes) => ({ + tilingSchemes: { + url: tilingSchemes, + schemes: schemes.filter(scheme => scheme) + }, + allowedSRS: schemes + .filter(scheme => scheme) + .reduce((acc, { supportedCRS }) => { + return { + ...acc, + [supportedCRS]: true + }; + }, {}) + })) + : { + tilingSchemes: { + url: tilingSchemes, + schemes: null + }, + allowedSRS: {} + }; + }); + } + return new Promise((resolve) => resolve(tilingSchemes)); +}; + +export const getLayerFromId = (serviceUrl, collectionId) => { + return axios.get(`${parseUrl(serviceUrl)}/${collectionId}`) + .then(({ data: collection }) => { + const layer = collectionToLayer(collection); + return getTilingSchemes(layer) + .then((params) => ({ + ...layer, + ...params + })); + }); +}; + +export const reset = () => { + Object.keys(capabilitiesCache).forEach(key => { + delete capabilitiesCache[key]; + }); +}; diff --git a/web/client/api/__tests__/WFS3-test.js b/web/client/api/__tests__/WFS3-test.js new file mode 100644 index 0000000000..e709702540 --- /dev/null +++ b/web/client/api/__tests__/WFS3-test.js @@ -0,0 +1,252 @@ +/* + * Copyright 2019, GeoSolutions Sas. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +import expect from 'expect'; +import { + getTilingSchemes, + getLayerFromId, + textSearch, + reset +} from '../WFS3'; +import MockAdapter from 'axios-mock-adapter'; +import axios from '../../libs/ajax'; + +let mockAxios; + +describe('Test WFS3 API', () => { + + beforeEach(done => { + mockAxios = new MockAdapter(axios); + setTimeout(done); + }); + + afterEach(done => { + mockAxios.restore(); + setTimeout(done); + reset(); + }); + + it('test getTilingSchemes', (done) => { + + const TILING_SCHEMES_URL = '/geoserver/wfs3/collections/layer_name/tiles'; + const TILING_SCHEMES_ID = 'GoogleMapsCompatible'; + const TILING_SCHEME = { + type: 'TileMatrixSet', + identifier: 'GoogleMapsCompatible', + title: 'GoogleMapsCompatible', + supportedCRS: 'EPSG:3857', + tileMatrix: [{ + matrixHeight: 1, + matrixWidth: 1, + tileHeight: 256, + tileWidth: 256, + identifier: '0', + scaleDenominator: 559082263.9508929, + topLeftCorner: [ + -20037508.34, + 20037508 + ], + type: 'TileMatrix' + }], + boundingBox: { + crs: 'http://www.opengis.net/def/crs/EPSG/0/3857', + lowerCorner: [ + -20037508.34, + -20037508.34 + ], + upperCorner: [ + 20037508.34, + 20037508.34 + ], + type: 'BoundingBox' + }, + wellKnownScaleSet: 'http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible' + }; + + mockAxios.onGet(TILING_SCHEMES_URL).reply(() => { + return [ 200, { tilingSchemes: [ TILING_SCHEMES_ID ] }]; + }); + + mockAxios.onGet(`${TILING_SCHEMES_URL}/${TILING_SCHEMES_ID}`).reply(() => { + return [ 200, TILING_SCHEME]; + }); + + const layer = { + tilingScheme: `${TILING_SCHEMES_URL}/{tilingSchemeId}`, + tilingSchemes: TILING_SCHEMES_URL + }; + + getTilingSchemes(layer) + .then(({ tilingSchemes, allowedSRS }) => { + expect(allowedSRS).toEqual({ 'EPSG:3857': true }); + expect(tilingSchemes).toEqual({ + url: TILING_SCHEMES_URL, + schemes: [ TILING_SCHEME ] + }); + done(); + }); + }); + + it('test getLayerFromId', (done) => { + const SERVICE_URL = '/geoserver/wfs3/collections/'; + const COLLECTIONS_ID = 'layer_name'; + const TILING_SCHEMES_URL = '/geoserver/wfs3/collections/layer_name/tiles'; + const TILING_SCHEMES_ID = 'GoogleMapsCompatible'; + const COLLECTION = { + name: COLLECTIONS_ID, + title: 'Layer Title', + extent: { + spatial: [-180, -90, 180, 90] + }, + links: [ + { + href: '/geoserver/wfs3/collections/layer_name/tiles/{tilingSchemeId}/{level}/{row}/{col}', + rel: 'tiles', + type: 'application/vnd.mapbox-vector-tile' + }, + { + href: '/geoserver/wfs3/collections/layer_name/tiles/{tilingSchemeId}', + rel: 'tilingScheme', + type: 'application/json', + title: '...' + }, + { + href: TILING_SCHEMES_URL, + rel: 'tilingSchemes', + type: 'application/json', + title: '...' + } + ] + }; + + const TILING_SCHEME = { + type: 'TileMatrixSet', + identifier: 'GoogleMapsCompatible', + title: 'GoogleMapsCompatible', + supportedCRS: 'EPSG:3857', + tileMatrix: [{ + matrixHeight: 1, + matrixWidth: 1, + tileHeight: 256, + tileWidth: 256, + identifier: '0', + scaleDenominator: 559082263.9508929, + topLeftCorner: [ + -20037508.34, + 20037508 + ], + type: 'TileMatrix' + }], + boundingBox: { + crs: 'http://www.opengis.net/def/crs/EPSG/0/3857', + lowerCorner: [ + -20037508.34, + -20037508.34 + ], + upperCorner: [ + 20037508.34, + 20037508.34 + ], + type: 'BoundingBox' + }, + wellKnownScaleSet: 'http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible' + }; + + mockAxios.onGet(`${SERVICE_URL}${COLLECTIONS_ID}`).reply(() => { + return [ 200, COLLECTION]; + }); + + mockAxios.onGet(TILING_SCHEMES_URL).reply(() => { + return [ 200, { tilingSchemes: [ TILING_SCHEMES_ID ] }]; + }); + + mockAxios.onGet(`${TILING_SCHEMES_URL}/${TILING_SCHEMES_ID}`).reply(() => { + return [ 200, TILING_SCHEME]; + }); + + getLayerFromId(SERVICE_URL, COLLECTIONS_ID) + .then((layer) => { + expect(layer).toEqual({ + name: COLLECTIONS_ID, + title: 'Layer Title', + type: 'wfs3', + visibility: true, + url: '/geoserver/wfs3/collections/layer_name/tiles/{tilingSchemeId}/{level}/{row}/{col}', + format: 'application/vnd.mapbox-vector-tile', + tilingScheme: '/geoserver/wfs3/collections/layer_name/tiles/{tilingSchemeId}', + tilingSchemes: { + url: TILING_SCHEMES_URL, + schemes: [ TILING_SCHEME ] + }, + allowedSRS: { 'EPSG:3857': true }, + bbox: { + crs: 'EPSG:4326', + bounds: { + minx: -180, + miny: -90, + maxx: 180, + maxy: 90 + } + }}); + done(); + }); + }); + it('test textSearch', (done) => { + const TILING_SCHEMES_URL = '/geoserver/wfs3/collections'; + const START_POSITION = 1; + const MAX_RECORDS = 1; + const TEXT = ''; + const COLLECTIONS = [ + { + name: 'layer_name_01', + title: 'layer title 01', + extent: { + spatial: [-180, -90, 180, 90] + }, + links: [] + }, + { + name: 'layer_name_02', + title: 'layer title 02', + extent: { + spatial: [-180, -90, 180, 90] + }, + links: [] + } + ]; + + mockAxios.onGet(TILING_SCHEMES_URL) + .reply(() => { + return [ 200, { collections: COLLECTIONS }]; + }); + textSearch(TILING_SCHEMES_URL, START_POSITION, MAX_RECORDS, TEXT) + .then((res) => { + expect(res).toEqual({ + numberOfRecordsMatched: 2, + numberOfRecordsReturned: 1, + nextRecord: 3, + records: [{ + name: 'layer_name_01', + title: 'layer title 01', + extent: { spatial: [ -180, -90, 180, 90 ] }, + links: [], + type: 'wfs3', + visibility: true, + url: undefined, + format: undefined, + tilingScheme: undefined, + tilingSchemes: undefined, + bbox: { crs: 'EPSG:4326', bounds: { minx: -180, miny: -90, maxx: 180, maxy: 90 } }, + capabilitiesUrl: '/geoserver/wfs3/collections' + }] + }); + done(); + }); + }); +}); + diff --git a/web/client/components/map/__tests__/BaseMap-test.jsx b/web/client/components/map/__tests__/BaseMap-test.jsx index 869ade9b61..96d56e3bd3 100644 --- a/web/client/components/map/__tests__/BaseMap-test.jsx +++ b/web/client/components/map/__tests__/BaseMap-test.jsx @@ -5,12 +5,13 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -const ReactDOM = require('react-dom'); -const expect = require('expect'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import expect from 'expect'; + +import BaseMap from '../BaseMap'; +import mapType from '../enhancers/mapType'; -const BaseMap = require('../BaseMap'); -const mapType = require('../enhancers/mapType'); const TestMap = mapType(BaseMap); const LAYER_OSM = { diff --git a/web/client/components/map/cesium/__tests__/Layer-test-chrome.jsx b/web/client/components/map/cesium/__tests__/Layer-test-chrome.jsx index 091c5de49d..ac62eef837 100644 --- a/web/client/components/map/cesium/__tests__/Layer-test-chrome.jsx +++ b/web/client/components/map/cesium/__tests__/Layer-test-chrome.jsx @@ -162,6 +162,63 @@ describe('Cesium layer', () => { expect(map.imageryLayers._layers[0]._imageryProvider._tileProvider._subdomains.length).toBe(1); expect(map.imageryLayers._layers[0]._imageryProvider.proxy.proxy).toExist(); }); + + it('test wms vector formats must change to default image format (image/png)', () => { + const options = { + "type": 'wms', + "visibility": true, + "name": 'osm:vector_tile', + "group": 'Vector', + "url": "http://demo.geo-solutions.it/geoserver/wms" + }; + + let layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + + expect(layer.layer._tileProvider._url.indexOf('format=image%2Fpng') !== -1).toBe(true); + + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(layer.layer._tileProvider._url.indexOf('format=image%2Fpng') !== -1).toBe(true); + + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(layer.layer._tileProvider._url.indexOf('format=image%2Fpng') !== -1).toBe(true); + + // check if it switches to jpeg + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(layer.layer._tileProvider._url.indexOf('format=image%2Fjpeg') !== -1).toBe(true); + }); + it('wms layer with credits', () => { var options = { "type": "wms", @@ -825,4 +882,73 @@ describe('Cesium layer', () => { expect(cqlFilter).toBe("((\"prop2\" = 'value2')) AND (prop = 'value')"); }); + + + it('test wmts vector formats must change to default image format (image/png)', () => { + const options = { + type: 'wmts', + visibility: true, + name: 'osm:vector_tile', + group: 'Vector', + tileMatrixSet: 'EPSG:900913', + matrixIds: { + 'EPSG:4326': [{ + ranges: { + cols: {max: 0, min: 0}, + rows: {max: 0, min: 0} + } + }] + }, + url: 'http://sample.server/geoserver/gwc/service/wmts' + }; + + const GeoJSON = 'application/json;type=geojson'; + let layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(layer.layer._format).toBe('image/png'); + + const MVT = 'application/vnd.mapbox-vector-tile'; + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(layer.layer._format).toBe('image/png'); + + const TopoJSON = 'application/json;type=topojson'; + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(layer.layer._format).toBe('image/png'); + + // check if it switches to jpeg + const JPEG = 'image/jpeg'; + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(layer.layer._format).toBe(JPEG); + }); }); diff --git a/web/client/components/map/cesium/plugins/WMSLayer.js b/web/client/components/map/cesium/plugins/WMSLayer.js index fac6a6e1ee..6da659e72e 100644 --- a/web/client/components/map/cesium/plugins/WMSLayer.js +++ b/web/client/components/map/cesium/plugins/WMSLayer.js @@ -18,6 +18,8 @@ const {getAuthenticationParam, getURLs} = require('../../../../utils/LayersUtils const { optionsToVendorParams } = require('../../../../utils/VendorParamsUtils'); const SecurityUtils = require('../../../../utils/SecurityUtils'); +const { isVectorFormat } = require('../../../../utils/VectorTileUtils'); + function splitUrl(originalUrl) { let url = originalUrl; let queryString = ""; @@ -57,7 +59,7 @@ function wmsToCesiumOptionsSingleTile(options) { const params = optionsToVendorParams(options); const parameters = assign({ styles: options.style || "", - format: options.format || 'image/png', + format: isVectorFormat(options.format) && 'image/png' || options.format || 'image/png', transparent: options.transparent !== undefined ? options.transparent : true, opacity: opacity, tiled: options.tiled !== undefined ? options.tiled : true, @@ -94,7 +96,7 @@ function wmsToCesiumOptions(options) { enablePickFeatures: false, parameters: assign({ styles: options.style || "", - format: options.format || 'image/png', + format: isVectorFormat(options.format) && 'image/png' || options.format || 'image/png', transparent: options.transparent !== undefined ? options.transparent : true, opacity: opacity, tiled: options.tiled !== undefined ? options.tiled : true diff --git a/web/client/components/map/cesium/plugins/WMTSLayer.js b/web/client/components/map/cesium/plugins/WMTSLayer.js index d319e89ded..2710da3198 100644 --- a/web/client/components/map/cesium/plugins/WMTSLayer.js +++ b/web/client/components/map/cesium/plugins/WMTSLayer.js @@ -6,15 +6,16 @@ * LICENSE file in the root directory of this source tree. */ -const Layers = require('../../../../utils/cesium/Layers'); -const ConfigUtils = require('../../../../utils/ConfigUtils'); -const ProxyUtils = require('../../../../utils/ProxyUtils'); -const WMTSUtils = require('../../../../utils/WMTSUtils'); -const Cesium = require('../../../../libs/cesium'); -const {getAuthenticationParam, getURLs} = require('../../../../utils/LayersUtils'); -const assign = require('object-assign'); -const { isObject, isArray, slice, get, head} = require('lodash'); -const urlParser = require('url'); +import Layers from '../../../../utils/cesium/Layers'; +import ConfigUtils from '../../../../utils/ConfigUtils'; +import ProxyUtils from '../../../../utils/ProxyUtils'; +import WMTSUtils from '../../../../utils/WMTSUtils'; +import Cesium from '../../../../libs/cesium'; +import { getAuthenticationParam, getURLs } from '../../../../utils/LayersUtils'; +import assign from 'object-assign'; +import { isObject, isArray, slice, get, head} from 'lodash'; +import urlParser from 'url'; +import { isVectorFormat } from '../../../../utils/VectorTileUtils'; function splitUrl(originalUrl) { let url = originalUrl; @@ -112,7 +113,8 @@ function wmtsToCesiumOptions(options) { return assign({ // TODO: multi-domain support, if use {s} switches to RESTFul mode url: head(getURLs(isArray(options.url) ? options.url : [options.url], queryParametersString)), - format: options.format || 'image/png', + // set image format to png if vector to avoid errors while switching between map type + format: isVectorFormat(options.format) && 'image/png' || options.format || 'image/png', isValid, // tileDiscardPolicy: { // isReady: () => true, @@ -148,7 +150,8 @@ const createLayer = options => { }; const updateLayer = (layer, newOptions, oldOptions) => { - if (newOptions.securityToken !== oldOptions.securityToken) { + if (newOptions.securityToken !== oldOptions.securityToken + || oldOptions.format !== newOptions.format) { return createLayer(newOptions); } return null; diff --git a/web/client/components/map/leaflet/DrawSupport.jsx b/web/client/components/map/leaflet/DrawSupport.jsx index c990ccf430..8f7da8c640 100644 --- a/web/client/components/map/leaflet/DrawSupport.jsx +++ b/web/client/components/map/leaflet/DrawSupport.jsx @@ -28,7 +28,7 @@ L.Draw.Polygon.prototype._calculateFinishDistance = function(t) { }; const {isSimpleGeomType, getSimpleGeomType} = require('../../../utils/MapUtils'); -const {boundsToOLExtent} = require('../../../utils/DrawSupportUtils'); +const {boundsToOLExtent} = require('../../../utils/leaflet/DrawSupportUtils'); const assign = require('object-assign'); const CoordinatesUtils = require('../../../utils/CoordinatesUtils'); diff --git a/web/client/components/map/leaflet/__tests__/Layer-test.jsx b/web/client/components/map/leaflet/__tests__/Layer-test.jsx index d531e63f23..ab74aeb5ae 100644 --- a/web/client/components/map/leaflet/__tests__/Layer-test.jsx +++ b/web/client/components/map/leaflet/__tests__/Layer-test.jsx @@ -186,6 +186,78 @@ describe('Leaflet layer', () => { expect(urls.length).toBe(1); }); + it('test wms vector formats must change to default image format (image/png)', () => { + const options = { + type: 'wms', + visibility: true, + name: 'osm:vector_tile', + group: 'Vector', + "url": "http://sample.server/geoserver/wms" + }; + + let layer = ReactDOM.render(, document.getElementById("container")); + expect(layer).toExist(); + let lcount = 0; + map.eachLayer(function() { lcount++; }); + expect(lcount).toBe(1); + + expect(layer.layer.wmsParams.format).toBe('image/png'); + + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + lcount = 0; + map.eachLayer(function() { lcount++; }); + expect(lcount).toBe(1); + + expect(layer.layer.wmsParams.format).toBe('image/png'); + + + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + lcount = 0; + map.eachLayer(function() { lcount++; }); + expect(lcount).toBe(1); + + expect(layer.layer.wmsParams.format).toBe('image/png'); + + // check if it switches to jpeg + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + lcount = 0; + map.eachLayer(function() { lcount++; }); + expect(lcount).toBe(1); + + expect(layer.layer.wmsParams.format).toBe('image/jpeg'); + + }); + it('creates a wms elevation layer for leaflet map', () => { var options = { "type": "wms", @@ -924,4 +996,88 @@ describe('Leaflet layer', () => { expect(lcount).toBe(1); expect(layer.layer.wmsParams.CQL_FILTER).toBe("((\"prop2\" = 'value2')) AND (prop = 'value')"); }); + + it('test wmts vector formats must change to default image format (image/png)', () => { + const options = { + type: 'wmts', + visibility: true, + name: 'osm:vector_tile', + group: 'Vector', + tileMatrixSet: [ + { + 'TileMatrix': [], + 'ows:Identifier': 'EPSG:900913', + 'ows:SupportedCRS': 'urn:ogc:def:crs:EPSG::900913' + } + ], + url: 'http://sample.server/geoserver/gwc/service/wmts' + }; + + const GeoJSON = 'application/json;type=geojson'; + let layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + let lcount = 0; + map.eachLayer(function() {lcount++; }); + expect(lcount).toBe(1); + + expect(layer.layer.wmtsParams.format).toBe('image/png'); + + const MVT = 'application/vnd.mapbox-vector-tile'; + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + lcount = 0; + map.eachLayer(function() {lcount++; }); + expect(lcount).toBe(1); + + expect(layer.layer.wmtsParams.format).toBe('image/png'); + + + const TopoJSON = 'application/json;type=topojson'; + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + lcount = 0; + map.eachLayer(function() {lcount++; }); + expect(lcount).toBe(1); + + expect(layer.layer.wmtsParams.format).toBe('image/png'); + + // check if it switches to jpeg + const JPEG = 'image/jpeg'; + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + lcount = 0; + map.eachLayer(function() {lcount++; }); + expect(lcount).toBe(1); + + expect(layer.layer.wmtsParams.format).toBe(JPEG); + + }); }); diff --git a/web/client/components/map/leaflet/plugins/WMSLayer.js b/web/client/components/map/leaflet/plugins/WMSLayer.js index 3aea7b3cba..ad7e07b3d3 100644 --- a/web/client/components/map/leaflet/plugins/WMSLayer.js +++ b/web/client/components/map/leaflet/plugins/WMSLayer.js @@ -19,6 +19,8 @@ const SecurityUtils = require('../../../../utils/SecurityUtils'); const ElevationUtils = require('../../../../utils/ElevationUtils'); const { creditsToAttribution } = require('../../../../utils/LayersUtils'); +const { isVectorFormat } = require('../../../../utils/VectorTileUtils'); + require('leaflet.nontiledlayer'); L.NonTiledLayer.WMSCustom = L.NonTiledLayer.WMS.extend({ @@ -166,7 +168,7 @@ function wmsToLeafletOptions(options) { attribution: options.credits && creditsToAttribution(options.credits), layers: options.name, styles: options.style || "", - format: options.format || 'image/png', + format: isVectorFormat(options.format) && 'image/png' || options.format || 'image/png', transparent: options.transparent !== undefined ? options.transparent : true, tiled: options.tiled !== undefined ? options.tiled : true, opacity: opacity, diff --git a/web/client/components/map/leaflet/plugins/WMTSLayer.js b/web/client/components/map/leaflet/plugins/WMTSLayer.js index 789a4cfd13..417c3aa0e6 100644 --- a/web/client/components/map/leaflet/plugins/WMTSLayer.js +++ b/web/client/components/map/leaflet/plugins/WMTSLayer.js @@ -6,14 +6,15 @@ * LICENSE file in the root directory of this source tree. */ -const Layers = require('../../../../utils/leaflet/Layers'); -const CoordinatesUtils = require('../../../../utils/CoordinatesUtils'); -const L = require('leaflet'); -const assign = require('object-assign'); -const SecurityUtils = require('../../../../utils/SecurityUtils'); -const WMTSUtils = require('../../../../utils/WMTSUtils'); -const WMTS = require('../../../../utils/leaflet/WMTS'); -const {isArray, isObject, head} = require('lodash'); +import Layers from '../../../../utils/leaflet/Layers'; +import CoordinatesUtils from '../../../../utils/CoordinatesUtils'; +import L from 'leaflet'; +import assign from 'object-assign'; +import SecurityUtils from '../../../../utils/SecurityUtils'; +import WMTSUtils from '../../../../utils/WMTSUtils'; +import WMTS from '../../../../utils/leaflet/WMTS'; +import { isArray, isObject, head } from 'lodash'; +import { isVectorFormat } from '../../../../utils/VectorTileUtils'; L.tileLayer.wmts = function(urls, options, matrixOptions) { return new WMTS(urls, options, matrixOptions); @@ -26,7 +27,8 @@ function wmtsToLeafletOptions(options) { requestEncoding: options.requestEncoding, layer: options.name, style: options.style || "", - format: options.format || 'image/png', + // set image format to png if vector to avoid errors while switching between map type + format: isVectorFormat(options.format) && 'image/png' || options.format || 'image/png', tileMatrixSet: tileMatrixSet, version: options.version || "1.0.0", tileSize: options.tileSize || 256, @@ -60,7 +62,8 @@ const createLayer = options => { }; const updateLayer = (layer, newOptions, oldOptions) => { - if (oldOptions.securityToken !== newOptions.securityToken) { + if (oldOptions.securityToken !== newOptions.securityToken + || oldOptions.format !== newOptions.format) { return createLayer(newOptions); } return null; diff --git a/web/client/components/map/openlayers/DrawSupport.jsx b/web/client/components/map/openlayers/DrawSupport.jsx index 4eec1b25e7..feca6d2086 100644 --- a/web/client/components/map/openlayers/DrawSupport.jsx +++ b/web/client/components/map/openlayers/DrawSupport.jsx @@ -6,22 +6,49 @@ * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -const ol = require('openlayers'); -const {concat, head, find, slice, omit, isArray, last, filter, isNil, castArray} = require('lodash'); -const PropTypes = require('prop-types'); -const assign = require('object-assign'); -const uuid = require('uuid'); -const axios = require('axios'); -const {isSimpleGeomType, getSimpleGeomType} = require('../../../utils/MapUtils'); -const {reprojectGeoJson, calculateDistance, reproject} = require('../../../utils/CoordinatesUtils'); -const {createStylesAsync} = require('../../../utils/VectorStyleUtils'); -const wgs84Sphere = new ol.Sphere(6378137); -const {transformPolygonToCircle} = require('../../../utils/DrawSupportUtils'); -const {isCompletePolygon} = require('../../../utils/AnnotationsUtils'); -const VectorStyle = require('./VectorStyle'); -const {parseStyles} = require('./VectorStyle'); -const geojsonFormat = new ol.format.GeoJSON(); +import React from 'react'; +import concat from 'lodash/concat'; +import head from 'lodash/head'; +import find from 'lodash/find'; +import slice from 'lodash/slice'; +import omit from 'lodash/omit'; +import isArray from 'lodash/isArray'; +import last from 'lodash/last'; +import filter from 'lodash/filter'; +import isNil from 'lodash/isNil'; +import castArray from 'lodash/castArray'; + +import PropTypes from 'prop-types'; +import assign from 'object-assign'; +import uuid from 'uuid'; +import axios from 'axios'; +import {isSimpleGeomType, getSimpleGeomType} from '../../../utils/MapUtils'; +import {reprojectGeoJson, calculateDistance, reproject} from '../../../utils/CoordinatesUtils'; +import {createStylesAsync} from '../../../utils/VectorStyleUtils'; +import {transformPolygonToCircle} from '../../../utils/openlayers/DrawSupportUtils'; +import {isCompletePolygon} from '../../../utils/AnnotationsUtils'; +import { parseStyles, getStyle, defaultStyles, getMarkerStyle, getMarkerStyleLegacy } from './VectorStyle'; + +import {GeoJSON} from 'ol/format'; +import Feature from 'ol/Feature'; +import VectorSource from 'ol/source/Vector'; +import VectorLayer from 'ol/layer/Vector'; +import Draw from 'ol/interaction/Draw'; +import { Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, Circle} from 'ol/geom'; +import GeometryCollection from 'ol/geom/GeometryCollection'; +import {Style, Stroke, Fill, Text} from 'ol/style'; +import CircleStyle from 'ol/style/Circle'; +import Collection from 'ol/Collection'; +import {always, primaryAction, altKeyOnly} from 'ol/events/condition'; +import DoubleClickZoom from 'ol/interaction/DoubleClickZoom'; +import Translate from 'ol/interaction/Translate'; +import Modify from 'ol/interaction/Modify'; +import Select from 'ol/interaction/Select'; +import {unByKey} from 'ol/Observable'; +import {getCenter} from 'ol/extent'; +import {fromCircle, circular} from 'ol/geom/Polygon'; + +const geojsonFormat = new GeoJSON(); /** * Component that allows to draw and edit geometries as (Point, LineString, Polygon, Rectangle, Circle, MultiGeometries) @@ -44,7 +71,7 @@ const geojsonFormat = new ol.format.GeoJSON(); */ // TODO FIX doc -class DrawSupport extends React.Component { +export default class DrawSupport extends React.Component { static propTypes = { map: PropTypes.object, drawOwner: PropTypes.string, @@ -114,7 +141,7 @@ class DrawSupport extends React.Component { } getNewFeature = (newDrawMethod, coordinates, radius, center) => { - return new ol.Feature({ + return new Feature({ geometry: this.createOLGeometry({type: newDrawMethod, coordinates, radius, center}) }); } @@ -131,7 +158,7 @@ class DrawSupport extends React.Component { if (f.style) { let olFeature = this.toOlFeature(f); if (olFeature) { - olFeature.setStyle(f.style ? VectorStyle.getStyle(f) : this.toOlStyle(f.style, f.selected)); + olFeature.setStyle(f.style ? getStyle(f) : this.toOlStyle(f.style, f.selected)); } } }); @@ -162,8 +189,8 @@ class DrawSupport extends React.Component { /** This is a style function that applies array of styles to the features. It takes the style from the features in the props being drawn because - the style array from the geojson feature model is not passed to ol.feature - @param {object} ftOl it is an ol.Feature object + the style array from the geojson feature model is not passed to Feature + @param {object} ftOl it is an Feature object */ layerStyle = (ftOl) => { let originalFeature = head(newProps.features) && find(head(newProps.features).features, ftTemp => ftTemp.properties.id === ftOl.getProperties().id) || null; @@ -174,12 +201,12 @@ class DrawSupport extends React.Component { }); } else { // if the styles is not present in the feature it uses a default one based on the drawMethod basically - return parseStyles({style: VectorStyle.defaultStyles[styleType]}); + return parseStyles({style: defaultStyles[styleType]}); } }; - this.geojson = new ol.format.GeoJSON(); - this.drawSource = new ol.source.Vector(); - this.drawLayer = new ol.layer.Vector({ + this.geojson = new GeoJSON(); + this.drawSource = new VectorSource(); + this.drawLayer = new VectorLayer({ source: this.drawSource, zIndex: 100000000, style: layerStyle @@ -205,9 +232,9 @@ class DrawSupport extends React.Component { let feature; features.forEach((f) => { if (f.type === "FeatureCollection") { - let featuresOL = (new ol.format.GeoJSON()).readFeatures(f); + let featuresOL = (new GeoJSON()).readFeatures(f); featuresOL = featuresOL.map(ft => transformPolygonToCircle(ft, mapCrs)); - this.drawSource = new ol.source.Vector({ + this.drawSource = new VectorSource({ features: featuresOL }); this.drawLayer.setSource(this.drawSource); @@ -221,11 +248,11 @@ class DrawSupport extends React.Component { if (drawMethod === "Circle" && geometry && (geometry.properties && geometry.properties.center || geometry.center)) { center = geometry.properties && geometry.properties.center ? reproject(geometry.properties.center, "EPSG:4326", mapCrs) : geometry.center; center = [center.x, center.y]; - feature = new ol.Feature({ + feature = new Feature({ geometry: this.createOLGeometry({type: "Circle", center, projection: "EPSG:3857", radius: geometry.properties && geometry.properties.radius || geometry.radius}) }); } else { - feature = new ol.Feature({ + feature = new Feature({ geometry: this.createOLGeometry(geometry.geometry ? geometry.geometry : {...geometry, ...geometry.properties, center }) }); } @@ -238,15 +265,15 @@ class DrawSupport extends React.Component { // TODO CHECK THIS WITH FeatureCollection if (features.length === 0 && (options.editEnabled || options.drawEnabled)) { if (options.transformToFeatureCollection) { - this.drawSource = new ol.source.Vector({ - features: (new ol.format.GeoJSON()).readFeatures( + this.drawSource = new VectorSource({ + features: (new GeoJSON()).readFeatures( { type: "FeatureCollection", features: [] }) }); this.drawLayer.setSource(this.drawSource); } else { - feature = new ol.Feature({ + feature = new Feature({ geometry: this.createOLGeometry({type: drawMethod, coordinates: null}) }); this.drawSource.addFeature(feature); @@ -254,8 +281,8 @@ class DrawSupport extends React.Component { } else { if (features[0] && features[0].type === "GeometryCollection" ) { // HERE IT ENTERS WITH EDIT - this.drawSource = new ol.source.Vector({ - features: (new ol.format.GeoJSON()).readFeatures(features[0]) + this.drawSource = new VectorSource({ + features: (new GeoJSON()).readFeatures(features[0]) }); let geoms = this.replacePolygonsWithCircles(this.drawSource.getFeatures()[0]); @@ -265,8 +292,8 @@ class DrawSupport extends React.Component { if (features[0] && features[0].geometry && features[0].geometry.type === "GeometryCollection" ) { // HERE IT ENTERS WITH REPLACE feature = reprojectGeoJson(features[0], options.featureProjection, mapCrs).geometry; - this.drawSource = new ol.source.Vector({ - features: (new ol.format.GeoJSON()).readFeatures(feature) + this.drawSource = new VectorSource({ + features: (new GeoJSON()).readFeatures(feature) }); // TODO remove this props this.drawSource.getFeatures()[0].set("textGeometriesIndexes", features[0].properties && features[0].properties.textGeometriesIndexes); @@ -297,7 +324,7 @@ class DrawSupport extends React.Component { } else { const styleType = this.convertGeometryTypeToStyleType(newProps.drawMethod); // if the styles is not present in the feature it uses a default one based on the drawMethod basically - return parseStyles({style: VectorStyle.defaultStyles[styleType]}); + return parseStyles({style: defaultStyles[styleType]}); } }); } @@ -322,25 +349,23 @@ class DrawSupport extends React.Component { if (this.drawInteraction) { this.removeDrawInteraction(); } - this.drawInteraction = new ol.interaction.Draw(this.drawPropertiesForGeometryType(drawMethod, maxPoints, this.drawSource, newProps)); + this.drawInteraction = new Draw(this.drawPropertiesForGeometryType(drawMethod, maxPoints, this.drawSource, newProps)); this.props.map.disableEventListener('singleclick'); - this.drawInteraction.on('drawstart', function(evt) { - this.sketchFeature = evt.feature; + this.drawInteraction.on('drawstart', () => { if (this.selectInteraction) { this.selectInteraction.getFeatures().clear(); this.selectInteraction.setActive(false); } - }, this); - this.drawInteraction.on('drawend', function(evt) { - this.sketchFeature = evt.feature; - this.sketchFeature.set('id', uuid.v1()); - let feature; - if (this.props.drawMethod === "Circle" && this.sketchFeature.getGeometry().getType() === "Circle") { - const radius = this.sketchFeature.getGeometry().getRadius(); - const center = this.sketchFeature.getGeometry().getCenter(); - this.sketchFeature.setGeometry(this.polygonFromCircle(center, radius)); + }); + this.drawInteraction.on('drawend', (evt) => { + const sketchFeature = evt.feature.clone(); + sketchFeature.set('id', uuid.v1()); + if (this.props.drawMethod === "Circle" && sketchFeature.getGeometry().getType() === "Circle") { + const radius = sketchFeature.getGeometry().getRadius(); + const center = sketchFeature.getGeometry().getCenter(); + sketchFeature.setGeometry(this.polygonFromCircle(center, radius)); } - feature = this.fromOLFeature(this.sketchFeature, startingPoint); + const feature = this.fromOLFeature(sketchFeature, startingPoint); this.props.onEndDrawing(feature, this.props.drawOwner); if (this.props.options.stopAfterDrawing) { @@ -351,7 +376,7 @@ class DrawSupport extends React.Component { this.addSelectInteraction(); this.selectInteraction.setActive(true); } - }, this); + }); this.props.map.addInteraction(this.drawInteraction); this.setDoubleClickZoomEnabled(false); @@ -359,7 +384,7 @@ class DrawSupport extends React.Component { toMulti = (geometry) => { if (geometry.getType() === 'Point') { - return new ol.geom.MultiPoint([geometry.getCoordinates()]); + return new MultiPoint([geometry.getCoordinates()]); } return geometry; }; @@ -367,20 +392,20 @@ class DrawSupport extends React.Component { if (this.drawInteraction) { this.removeDrawInteraction(); } - this.drawInteraction = new ol.interaction.Draw(this.drawPropertiesForGeometryType(getSimpleGeomType(drawMethod), maxPoints, isSimpleGeomType(drawMethod) ? this.drawSource : null, newProps )); + this.drawInteraction = new Draw(this.drawPropertiesForGeometryType(getSimpleGeomType(drawMethod), maxPoints, isSimpleGeomType(drawMethod) ? this.drawSource : null, newProps )); this.props.map.disableEventListener('singleclick'); - this.drawInteraction.on('drawstart', function(evt) { - this.sketchFeature = evt.feature; + this.drawInteraction.on('drawstart', () => { if (this.selectInteraction) { this.selectInteraction.getFeatures().clear(); this.selectInteraction.setActive(false); } - }, this); + }); - this.drawInteraction.on('drawend', function(evt) { - this.sketchFeature = evt.feature; - this.sketchFeature.set('id', uuid.v1()); - let drawnGeom = this.sketchFeature.getGeometry(); + this.drawInteraction.on('drawend', (evt) => { + const sketchFeature = evt.feature.clone(); + const id = uuid.v1(); + sketchFeature.set('id', id); + let drawnGeom = sketchFeature.getGeometry(); let drawnFeatures = this.drawLayer.getSource().getFeatures(); let previousGeometries; let features = this.props.features; @@ -396,8 +421,7 @@ class DrawSupport extends React.Component { newFeature = this.getNewFeature(newDrawMethod, coordinates); // TODO verify center is projected in 4326 and is an array center = reproject(center, this.getMapCrs(), "EPSG:4326", false); - const originalId = newProps && newProps.features && newProps.features.length && newProps.features[0] && newProps.features[0].features && newProps.features[0].features.length && newProps.features[0].features.filter(f => f.properties.isDrawing)[0].properties.id || this.sketchFeature.get("id"); - // this.sketchFeature.set('id', originalId); + const originalId = newProps && newProps.features && newProps.features.length && newProps.features[0] && newProps.features[0].features && newProps.features[0].features.length && newProps.features[0].features.filter(f => f.properties.isDrawing)[0].properties.id || id; newFeature.setProperties({isCircle: true, radius, center: [center.x, center.y], id: originalId}); } else if (drawMethod === "Polygon") { newDrawMethod = this.props.drawMethod; @@ -412,7 +436,7 @@ class DrawSupport extends React.Component { newFeature.setProperties({isText: true, valueText: "."}); } } - // drawnFeatures is array of ol.Feature + // drawnFeatures is array of Feature const previousFeatures = drawnFeatures.length >= 1 ? [...this.replaceCirclesWithPolygonsInFeatureColl(drawnFeatures)] : []; if (!newFeature.getProperties().id) { newFeature.setProperties({id: uuid.v1()}); @@ -420,8 +444,8 @@ class DrawSupport extends React.Component { const newFeatures = [...previousFeatures, newFeature]; // create FeatureCollection externalize as function let newFeatureColl = geojsonFormat.writeFeaturesObject(newFeatures); - const vectorSource = new ol.source.Vector({ - features: (new ol.format.GeoJSON()).readFeatures(newFeatureColl) + const vectorSource = new VectorSource({ + features: (new GeoJSON()).readFeatures(newFeatureColl) }); this.drawLayer.setSource(vectorSource); let feature = reprojectGeoJson(newFeatureColl, this.getMapCrs(), "EPSG:4326"); @@ -438,18 +462,18 @@ class DrawSupport extends React.Component { const newMultiGeom = this.toMulti(this.createOLGeometry({type: newDrawMethod, coordinates})); if (features.length === 1 && features[0] && !features[0].geometry) { previousGeometries = []; - geomCollection = new ol.geom.GeometryCollection([newMultiGeom]); + geomCollection = new GeometryCollection([newMultiGeom]); } else { previousGeometries = this.toMulti(head(drawnFeatures).getGeometry()); if (previousGeometries.getGeometries) { // transform also previous circles into polygon const geoms = this.replaceCirclesWithPolygons(head(drawnFeatures)); - geomCollection = new ol.geom.GeometryCollection([...geoms, newMultiGeom]); + geomCollection = new GeometryCollection([...geoms, newMultiGeom]); } else { - geomCollection = new ol.geom.GeometryCollection([previousGeometries, newMultiGeom]); + geomCollection = new GeometryCollection([previousGeometries, newMultiGeom]); } } - this.sketchFeature.setGeometry(geomCollection); + sketchFeature.setGeometry(geomCollection); } else if (drawMethod === "Text" || drawMethod === "MultiPoint") { let coordinates = drawnGeom.getCoordinates(); @@ -457,17 +481,17 @@ class DrawSupport extends React.Component { let newMultiGeom = this.toMulti(this.createOLGeometry({type: newDrawMethod, coordinates: [coordinates]})); if (features.length === 1 && !features[0].geometry) { previousGeometries = []; - geomCollection = new ol.geom.GeometryCollection([newMultiGeom]); + geomCollection = new GeometryCollection([newMultiGeom]); } else { previousGeometries = this.toMulti(head(drawnFeatures).getGeometry()); if (previousGeometries.getGeometries) { let geoms = this.replaceCirclesWithPolygons(head(drawnFeatures)); - geomCollection = new ol.geom.GeometryCollection([...geoms, newMultiGeom]); + geomCollection = new GeometryCollection([...geoms, newMultiGeom]); } else { - geomCollection = new ol.geom.GeometryCollection([previousGeometries, newMultiGeom]); + geomCollection = new GeometryCollection([previousGeometries, newMultiGeom]); } } - this.sketchFeature.setGeometry(geomCollection); + sketchFeature.setGeometry(geomCollection); } else if (!isSimpleGeomType(drawMethod)) { let newMultiGeom; geomCollection = null; @@ -502,42 +526,42 @@ class DrawSupport extends React.Component { let newGeoms = geoms.map(gg => { return gg.getType() === geomAlreadyPresent.getType() ? geomAlreadyPresent : gg; }); - geomCollection = new ol.geom.GeometryCollection(newGeoms); + geomCollection = new GeometryCollection(newGeoms); } else { if (previousGeometries.getType() === "GeometryCollection") { - geomCollection = new ol.geom.GeometryCollection([...geoms, newMultiGeom]); + geomCollection = new GeometryCollection([...geoms, newMultiGeom]); } else { if (drawMethod === "Text") { - geomCollection = new ol.geom.GeometryCollection([newMultiGeom]); + geomCollection = new GeometryCollection([newMultiGeom]); } else { - geomCollection = new ol.geom.GeometryCollection([previousGeometries, newMultiGeom]); + geomCollection = new GeometryCollection([previousGeometries, newMultiGeom]); } } } - this.sketchFeature.setGeometry(geomCollection); + sketchFeature.setGeometry(geomCollection); } else { - this.sketchFeature.setGeometry(geomAlreadyPresent); + sketchFeature.setGeometry(geomAlreadyPresent); } } let properties = this.props.features[0].properties; if (drawMethod === "Text") { properties = assign({}, this.props.features[0].properties, { textValues: (this.props.features[0].properties.textValues || []).concat(["."]), - textGeometriesIndexes: (this.props.features[0].properties.textGeometriesIndexes || []).concat([this.sketchFeature.getGeometry().getGeometries().length - 1]) + textGeometriesIndexes: (this.props.features[0].properties.textGeometriesIndexes || []).concat([sketchFeature.getGeometry().getGeometries().length - 1]) }); } if (drawMethod === "Circle") { properties = assign({}, properties, { - circles: (this.props.features[0].properties.circles || []).concat([this.sketchFeature.getGeometry().getGeometries().length - 1]) + circles: (this.props.features[0].properties.circles || []).concat([sketchFeature.getGeometry().getGeometries().length - 1]) }); } - let feature = this.fromOLFeature(this.sketchFeature, startingPoint, properties); - const vectorSource = new ol.source.Vector({ - features: (new ol.format.GeoJSON()).readFeatures(feature) + let feature = this.fromOLFeature(sketchFeature, startingPoint, properties); + const vectorSource = new VectorSource({ + features: (new GeoJSON()).readFeatures(feature) }); this.drawLayer.setSource(vectorSource); - let newFeature = reprojectGeoJson(geojsonFormat.writeFeatureObject(this.sketchFeature.clone()), this.getMapCrs(), "EPSG:4326"); + let newFeature = reprojectGeoJson(geojsonFormat.writeFeatureObject(sketchFeature.clone()), this.getMapCrs(), "EPSG:4326"); if (newFeature.geometry.type === "Polygon") { newFeature.geometry.coordinates[0].push(newFeature.geometry.coordinates[0][0]); } @@ -563,7 +587,7 @@ class DrawSupport extends React.Component { } } - }, this); + }); this.props.map.addInteraction(this.drawInteraction); this.setDoubleClickZoomEnabled(false); @@ -573,27 +597,27 @@ class DrawSupport extends React.Component { let drawBaseProps = { source: this.drawSource || source, type: /** @type {ol.geom.GeometryType} */ geometryType, - style: geometryType === "Marker" ? VectorStyle.getMarkerStyle(newProps.style) : new ol.style.Style({ - fill: new ol.style.Fill({ + style: geometryType === "Marker" ? getMarkerStyle(newProps.style) : new Style({ + fill: new Fill({ color: 'rgba(255, 255, 255, 0.2)' }), - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: 'rgba(0, 0, 0, 0.5)', lineDash: [10, 10], width: 2 }), - image: new ol.style.Circle({ + image: new CircleStyle({ radius: 5, - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: 'rgba(0, 0, 0, 0.7)' }), - fill: new ol.style.Fill({ + fill: new Fill({ color: 'rgba(255, 255, 255, 0.2)' }) }) }), - features: new ol.Collection(), - condition: ol.events.condition.always + features: new Collection(), + condition: always }; let roiProps = {}; switch (geometryType) { @@ -603,7 +627,7 @@ class DrawSupport extends React.Component { roiProps.geometryFunction = function(coordinates, geometry) { let geom = geometry; if (!geom) { - geom = new ol.geom.Polygon(null); + geom = new Polygon(null); } let start = coordinates[0]; let end = coordinates[1]; @@ -627,7 +651,7 @@ class DrawSupport extends React.Component { roiProps.geometryFunction = (coordinates, geometry) => { let geom = geometry; if (!geom) { - geom = new ol.geom.Polygon(null); + geom = new Polygon(null); geom.setProperties({geodesicCenter: [...coordinates[0]]}, true); } let projection = this.props.map.getView().getProjection().getCode(); @@ -635,7 +659,7 @@ class DrawSupport extends React.Component { return this.reprojectCoordinatesToWGS84(coordinate, projection); }); let radius = calculateDistance(wgs84Coordinates, 'haversine'); - let coords = ol.geom.Polygon.circular(wgs84Sphere, wgs84Coordinates[0], radius, roiProps.maxPoints).clone().transform('EPSG:4326', projection).getCoordinates(); + let coords = circular(wgs84Coordinates[0], radius).clone().transform('EPSG:4326', projection).getCoordinates(); geom.setCoordinates(coords); return geom; }; @@ -669,7 +693,7 @@ class DrawSupport extends React.Component { let interactions = this.props.map.getInteractions(); for (let i = 0; i < interactions.getLength(); i++) { let interaction = interactions.item(i); - if (interaction instanceof ol.interaction.DoubleClickZoom) { + if (interaction instanceof DoubleClickZoom) { interaction.setActive(enabled); break; } @@ -704,7 +728,7 @@ class DrawSupport extends React.Component { this.props.map.removeInteraction(this.translateInteraction); } - this.translateInteraction = new ol.interaction.Translate({ + this.translateInteraction = new Translate({ features: this.selectInteraction.getFeatures() }); this.translateInteraction.setActive(false); @@ -717,10 +741,10 @@ class DrawSupport extends React.Component { this.props.map.removeInteraction(this.modifyInteraction); } - this.modifyInteraction = new ol.interaction.Modify({ + this.modifyInteraction = new Modify({ features: this.selectInteraction.getFeatures(), condition: (e) => { - return ol.events.condition.primaryAction(e) && !ol.events.condition.altKeyOnly(e); + return primaryAction(e) && !altKeyOnly(e); } }); @@ -739,7 +763,7 @@ class DrawSupport extends React.Component { addDrawOrEditInteractions = (newProps) => { if (this.state && this.state.keySingleClickCallback) { - ol.Observable.unByKey(this.state.keySingleClickCallback); + unByKey(this.state.keySingleClickCallback); } const singleClickCallback = (event) => { if (this.drawSource && newProps.options) { @@ -827,7 +851,7 @@ class DrawSupport extends React.Component { olFt = transformPolygonToCircle(olFt, this.getMapCrs()); previousFeatures[previousFtIndex] = olFt; - this.drawSource = new ol.source.Vector({ + this.drawSource = new VectorSource({ features: previousFeatures }); this.drawLayer.setSource(this.drawSource); @@ -889,13 +913,13 @@ class DrawSupport extends React.Component { this.selectFeature(olFt); } } - this.selectInteraction = new ol.interaction.Select({ + this.selectInteraction = new Select({ layers: [this.drawLayer], - features: new ol.Collection(selectedFeature && olFt ? [olFt] : null) + features: new Collection(selectedFeature && olFt ? [olFt] : null) }); if (olFt) { const styleType = this.convertGeometryTypeToStyleType(props.drawMethod); - olFt.setStyle(VectorStyle.getStyle({ ...props, style: {...props.style, type: styleType, highlight: true, useSelectedStyle: props.options.useSelectedStyle }}, false, props.features[0] && props.features[0].properties && props.features[0].properties.valueText && [props.features[0].properties.valueText] || [] )); + olFt.setStyle(getStyle({ ...props, style: {...props.style, type: styleType, highlight: true, useSelectedStyle: props.options.useSelectedStyle }}, false, props.features[0] && props.features[0].properties && props.features[0].properties.valueText && [props.features[0].properties.valueText] || [] )); } this.selectInteraction.on('select', (evt) => { @@ -952,7 +976,6 @@ class DrawSupport extends React.Component { if (this.drawInteraction) { this.props.map.removeInteraction(this.drawInteraction); this.drawInteraction = null; - this.sketchFeature = null; /** Map Singleclick event is dealyed by 250 ms see here * https://openlayers.org/en/latest/apidoc/ol.MapBrowserEvent.html#event:singleclick * This timeout prevents ol map to throw mapClick event that has alredy been managed @@ -994,22 +1017,22 @@ class DrawSupport extends React.Component { }; fromOLFeature = (feature, startingPoint, properties) => { - let geometry = feature.getGeometry(); - let extent = geometry.getExtent(); - let geometryProperties = geometry.getProperties(); + const geometry = feature.getGeometry(); // retrieve geodesic center from properties // it's different from extent center - let center = geometryProperties && geometryProperties.geodesicCenter || ol.extent.getCenter(extent); - let coordinates; - let projection = this.props.map.getView().getProjection().getCode(); - let radius; - let type = geometry.getType(); + const projection = this.props.map.getView().getProjection().getCode(); + const type = geometry.getType(); + // LineString, Polygon, MultiLineString, MultiPolygon if (geometry.getCoordinates) { - coordinates = geometry.getCoordinates(); + const extent = geometry.getExtent(); + const geometryProperties = geometry.getProperties(); + const center = geometryProperties && geometryProperties.geodesicCenter || getCenter(extent); + let coordinates = geometry.getCoordinates(); if (startingPoint) { coordinates = concat(startingPoint, coordinates); geometry.setCoordinates(coordinates); } + let radius; if (this.props.drawMethod === "Circle") { if (this.props.options.geodesic) { const wgs84Coordinates = [[...center], [...coordinates[0][0]]].map((coordinate) => { @@ -1033,13 +1056,14 @@ class DrawSupport extends React.Component { } let geometries = geometry.getGeometries().map((g, i) => { - extent = g.getExtent(); - center = ol.extent.getCenter(extent); - coordinates = g.getCoordinates(); + const extent = g.getExtent(); + const center = getCenter(extent); + let coordinates = g.getCoordinates(); if (startingPoint) { coordinates = concat(startingPoint, coordinates); g.setCoordinates(coordinates); } + let radius; if (properties.circles && properties.circles.indexOf(i) !== -1) { if (this.props.options.geodesic) { const wgs84Coordinates = [[...center], [...coordinates[0][0]]].map((coordinate) => { @@ -1063,13 +1087,12 @@ class DrawSupport extends React.Component { projection: this.getMapCrs() }); }); - type = "GeometryCollection"; return assign({}, { type: "Feature", id: feature.get('id'), style: this.fromOlStyle(feature.getStyle()), geometry: { - type, + type: "GeometryCollection", geometries }, projection @@ -1114,32 +1137,32 @@ class DrawSupport extends React.Component { strokeColor = '#4a90e2'; } strokeColor = this.hexToRgb(strokeColor).concat([style && style.opacity || 1]); - let newStyle = new ol.style.Style({ - fill: new ol.style.Fill({ + let newStyle = new Style({ + fill: new Fill({ color: fillColor }), - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: strokeColor, width: style && (style.strokeWidth || style.weight) ? style.strokeWidth || style.weight : 2 }), - text: new ol.style.Text({ + text: new Text({ text: style && style.text ? style.text : '', - fill: new ol.style.Fill({ color: style && (style.strokeColor || style.color) ? style.strokeColor || style.color : '#000' }), - stroke: new ol.style.Stroke({ color: '#fff', width: 2 }), + fill: new Fill({ color: style && (style.strokeColor || style.color) ? style.strokeColor || style.color : '#000' }), + stroke: new Stroke({ color: '#fff', width: 2 }), font: style && style.fontSize ? style.fontSize + 'px helvetica' : '' }) }); if (type === "GeometryCollection") { - return [...VectorStyle.getMarkerStyleLegacy({ + return [...getMarkerStyleLegacy({ style: { iconGlyph: 'comment', iconShape: 'square', iconColor: 'blue' } }), newStyle]; } if (style && (style.iconUrl || style.iconGlyph)) { - return VectorStyle.getMarkerStyleLegacy({ + return getMarkerStyleLegacy({ style }); } @@ -1175,13 +1198,13 @@ class DrawSupport extends React.Component { filter features to be edited */ const editFilter = props && props.options && props.options.editFilter; - this.modifyFeatureColl = new ol.Collection(filter(this.drawLayer.getSource().getFeatures(), editFilter)); + this.modifyFeatureColl = new Collection(filter(this.drawLayer.getSource().getFeatures(), editFilter)); - this.modifyInteraction = new ol.interaction.Modify({ + this.modifyInteraction = new Modify({ features: this.modifyFeatureColl, condition: (e) => { - return ol.events.condition.primaryAction(e) && !ol.events.condition.altKeyOnly(e); + return primaryAction(e) && !altKeyOnly(e); } }); @@ -1216,8 +1239,8 @@ class DrawSupport extends React.Component { if (this.translateInteraction) { this.props.map.removeInteraction(this.translateInteraction); } - this.translateInteraction = new ol.interaction.Translate({ - features: new ol.Collection(this.drawLayer.getSource().getFeatures()) + this.translateInteraction = new Translate({ + features: new Collection(this.drawLayer.getSource().getFeatures()) }); this.translateInteraction.setActive(false); this.translateInteraction.on('translateend', (e) => { @@ -1250,7 +1273,7 @@ class DrawSupport extends React.Component { createOLGeometry = ({type, coordinates, radius, center, geometries, projection, options = {}}) => { if (type === "GeometryCollection") { - return geometries && geometries.length ? new ol.geom.GeometryCollection(geometries.map(g => this.olGeomFromType({type: g.type}))) : new ol.geom.GeometryCollection([]); + return geometries && geometries.length ? new GeometryCollection(geometries.map(g => this.olGeomFromType({type: g.type}))) : new GeometryCollection([]); } return this.olGeomFromType({type, coordinates, radius, center, projection, options}); }; @@ -1259,11 +1282,11 @@ class DrawSupport extends React.Component { let geometry; switch (type) { - case "Point": case "Marker": case "Text": { geometry = new ol.geom.Point(coordinates ? coordinates : []); break; } - case "LineString": { geometry = new ol.geom.LineString(coordinates ? coordinates : []); break; } - case "MultiPoint": /*case "Text":*/ { geometry = new ol.geom.MultiPoint(coordinates ? coordinates : []); break; } // TODO move text on "Point" - case "MultiLineString": { geometry = new ol.geom.MultiLineString(coordinates ? coordinates : []); break; } - case "MultiPolygon": { geometry = new ol.geom.MultiPolygon(coordinates ? coordinates : []); break; } + case "Point": case "Marker": case "Text": { geometry = new Point(coordinates ? coordinates : []); break; } + case "LineString": { geometry = new LineString(coordinates ? coordinates : []); break; } + case "MultiPoint": /*case "Text":*/ { geometry = new MultiPoint(coordinates ? coordinates : []); break; } // TODO move text on "Point" + case "MultiLineString": { geometry = new MultiLineString(coordinates ? [coordinates] : []); break; } + case "MultiPolygon": { geometry = new MultiPolygon(coordinates ? coordinates : []); break; } // default is Polygon default: { let correctCenter = isArray(center) ? {x: center[0], y: center[1]} : center; @@ -1278,9 +1301,9 @@ class DrawSupport extends React.Component { // TODO simplify, too much use of elvis operator geometry = isCircle ? options.geodesic ? - ol.geom.Polygon.circular(wgs84Sphere, this.reprojectCoordinatesToWGS84([correctCenter.x, correctCenter.y], projection), radius, 100).clone().transform('EPSG:4326', projection) - : ol.geom.Polygon.fromCircle(new ol.geom.Circle([correctCenter.x, correctCenter.y], radius), 100) - : new ol.geom.Polygon(coordinates && isArray(coordinates[0]) ? coordinates : []); + circular(this.reprojectCoordinatesToWGS84([correctCenter.x, correctCenter.y], projection), radius, 100).clone().transform('EPSG:4326', projection) + : fromCircle(new Circle([correctCenter.x, correctCenter.y], radius), 100) + : new Polygon(coordinates && isArray(coordinates[0]) ? coordinates : []); // store geodesic center if (geometry && isCircle && options.geodesic) { @@ -1317,10 +1340,10 @@ class DrawSupport extends React.Component { * @param {number[]} center in 3857 [lon, lat] * @param {number} radius in meters * @param {number} npoints number of sides - * @return {ol.geom.Polygon} the polygon which approximate the circle + * @return {Polygon} the polygon which approximate the circle */ polygonFromCircle = (center, radius, npoints = 100) => { - return ol.geom.Polygon.fromCircle(new ol.geom.Circle(center, radius), npoints); + return fromCircle(new Circle(center, radius), npoints); } polygonCoordsFromCircle = (center, radius, npoints = 100) => { @@ -1329,8 +1352,8 @@ class DrawSupport extends React.Component { /** * replace circles with polygons in feature collection - * @param {ol.Feature[]} features to transform - * @return {ol.Feature[]} features transformed + * @param {Feature[]} features to transform + * @return {Feature[]} features transformed */ replaceCirclesWithPolygonsInFeatureColl = (features) => { return features.map(f => { @@ -1342,8 +1365,8 @@ class DrawSupport extends React.Component { } /** * tranform circle to polygon - * @param {ol.Feature} feature to check if needs to be transformed - * @return {ol.Feature} feature transformed in polygon + * @param {Feature} feature to check if needs to be transformed + * @return {Feature} feature transformed in polygon */ replaceCircleWithPolygon = (feature) => { if (feature.getProperties().isCircle && feature.getGeometry().getType() === "Circle") { @@ -1356,7 +1379,7 @@ class DrawSupport extends React.Component { } /** * replace circles with polygons - * @param {ol.Feature} feature must contain a geometry collection + * @param {Feature} feature must contain a geometry collection * @return {ol.geom.SimpleGeometry[]} geometries */ replaceCirclesWithPolygons = (feature) => { @@ -1378,7 +1401,7 @@ class DrawSupport extends React.Component { } /** * replace polygons with circles - * @param {ol.Feature} feature must contain a geometry collection and property "circles" + * @param {Feature} feature must contain a geometry collection and property "circles" * @return {ol.geom.SimpleGeometry[]} geometries */ replacePolygonsWithCircles = (feature) => { @@ -1389,9 +1412,9 @@ class DrawSupport extends React.Component { } if (feature.getProperties() && feature.getProperties().circles && feature.getProperties().circles.indexOf(i) !== -1) { const extent = g.getExtent(); - const center = ol.extent.getCenter(extent); + const center = getCenter(extent); const radius = this.calculateRadius(center, g.getCoordinates()); - return new ol.geom.Circle(center, radius); + return new Circle(center, radius); } return g; }); @@ -1411,4 +1434,4 @@ class DrawSupport extends React.Component { }); } } -module.exports = DrawSupport; + diff --git a/web/client/components/map/openlayers/Feature.jsx b/web/client/components/map/openlayers/Feature.jsx index c7566df699..d198588679 100644 --- a/web/client/components/map/openlayers/Feature.jsx +++ b/web/client/components/map/openlayers/Feature.jsx @@ -5,17 +5,20 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -const PropTypes = require('prop-types'); -var ol = require('openlayers'); -const axios = require('axios'); -const { isEqual, find, castArray } = require('lodash'); -const { parseStyles } = require('./VectorStyle'); -const { transformPolygonToCircle } = require('../../../utils/DrawSupportUtils'); -const { createStylesAsync } = require('../../../utils/VectorStyleUtils'); +import React from 'react'; +import PropTypes from 'prop-types'; +import axios from 'axios'; +import isEqual from 'lodash/isEqual'; +import find from 'lodash/find'; +import castArray from 'lodash/castArray'; -class Feature extends React.Component { +import { parseStyles } from './VectorStyle'; +import { transformPolygonToCircle } from '../../../utils/openlayers/DrawSupportUtils'; +import { createStylesAsync } from '../../../utils/VectorStyleUtils'; +import GeoJSON from 'ol/format/GeoJSON'; + +export default class Feature extends React.Component { static propTypes = { type: PropTypes.string, layerStyle: PropTypes.object, @@ -59,7 +62,7 @@ class Feature extends React.Component { } addFeatures = (props) => { - const format = new ol.format.GeoJSON(); + const format = new GeoJSON(); let ftGeometry = null; let canRender = false; @@ -137,4 +140,3 @@ class Feature extends React.Component { }; } -module.exports = Feature; diff --git a/web/client/components/map/openlayers/HighlightFeatureSupport.jsx b/web/client/components/map/openlayers/HighlightFeatureSupport.jsx index ef770d36db..60cbfa6b6f 100644 --- a/web/client/components/map/openlayers/HighlightFeatureSupport.jsx +++ b/web/client/components/map/openlayers/HighlightFeatureSupport.jsx @@ -1,4 +1,3 @@ -const PropTypes = require('prop-types'); /** * Copyright 2016, GeoSolutions Sas. * All rights reserved. @@ -7,10 +6,14 @@ const PropTypes = require('prop-types'); * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -const ol = require('openlayers'); +import PropTypes from 'prop-types'; +import React from 'react'; +import Select from 'ol/interaction/Select'; +import {platformModifierKeyOnly} from 'ol/events/condition'; +import {Style, Stroke, Fill} from 'ol/style'; +import CircleStyle from 'ol/style/Circle'; -class HighlightFeatureSupport extends React.Component { +export default class HighlightFeatureSupport extends React.Component { static propTypes = { map: PropTypes.object, layer: PropTypes.string.isRequired, @@ -112,10 +115,10 @@ class HighlightFeatureSupport extends React.Component { createSelectInteraction = () => { this.createStyle(); - this._selectInteraction = new ol.interaction.Select({ + this._selectInteraction = new Select({ layers: this.layersFilter, style: this._style, - toggleCondition: ol.events.condition.platformModifierKeyOnly + toggleCondition: platformModifierKeyOnly }); this._selectInteraction.on('select', this.selectionChange, this); this.props.map.addInteraction(this._selectInteraction); @@ -143,20 +146,20 @@ class HighlightFeatureSupport extends React.Component { createStyle = () => { let sty = this.props.selectedStyle; let style = { - stroke: new ol.style.Stroke( sty.stroke ? sty.stroke : { + stroke: new Stroke( sty.stroke ? sty.stroke : { color: 'blue', width: 1 }), - fill: new ol.style.Fill(sty.fill ? sty.fill : { + fill: new Fill(sty.fill ? sty.fill : { color: 'blue' }) }; if (sty.type === "Point") { style = { - image: new ol.style.Circle({...style, radius: sty.radius || 5}) + image: new CircleStyle({...style, radius: sty.radius || 5}) }; } - this._style = new ol.style.Style(style); + this._style = new Style(style); }; highlightFeatures = (features) => { @@ -174,4 +177,3 @@ class HighlightFeatureSupport extends React.Component { }; } -module.exports = HighlightFeatureSupport; diff --git a/web/client/components/map/openlayers/Layer.jsx b/web/client/components/map/openlayers/Layer.jsx index 758ed03601..bf8ca1e49a 100644 --- a/web/client/components/map/openlayers/Layer.jsx +++ b/web/client/components/map/openlayers/Layer.jsx @@ -1,4 +1,3 @@ -const PropTypes = require('prop-types'); /** * Copyright 2015, GeoSolutions Sas. * All rights reserved. @@ -6,14 +5,19 @@ const PropTypes = require('prop-types'); * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -var React = require('react'); -var Layers = require('../../../utils/openlayers/Layers'); -var CoordinatesUtils = require('../../../utils/CoordinatesUtils'); -var assign = require('object-assign'); -const _ = require('lodash'); -const Rx = require('rxjs'); -class OpenlayersLayer extends React.Component { +import PropTypes from 'prop-types'; +import React from 'react'; +import Layers from '../../../utils/openlayers/Layers'; +import CoordinatesUtils from '../../../utils/CoordinatesUtils'; +import assign from 'object-assign'; +import Rx from 'rxjs'; +import isNumber from 'lodash/isNumber'; +import isArray from 'lodash/isArray'; +import omit from 'lodash/omit'; +import isEqual from 'lodash/isEqual'; + +export default class OpenlayersLayer extends React.Component { static propTypes = { onWarning: PropTypes.func, maxExtent: PropTypes.array, @@ -114,7 +118,7 @@ class OpenlayersLayer extends React.Component { }; generateOpts = (options, position, srs, securityToken) => { - return assign({}, options, _.isNumber(position) ? {zIndex: position} : null, { + return assign({}, options, isNumber(position) ? {zIndex: position} : null, { srs, onError: () => { this.props.onCreationError(options); @@ -134,7 +138,7 @@ class OpenlayersLayer extends React.Component { const layerExtent = options && options.bbox && options.bbox.bounds; const mapBboxPolygon = mapExtent && CoordinatesUtils.reprojectBbox(mapExtent, this.props.srs, 'EPSG:4326'); let layerBboxPolygon = layerExtent && CoordinatesUtils.getExtentFromNormalized(layerExtent, this.props.srs).extent; - if (layerBboxPolygon && layerBboxPolygon.length === 2 && _.isArray(layerBboxPolygon[1])) { + if (layerBboxPolygon && layerBboxPolygon.length === 2 && isArray(layerBboxPolygon[1])) { layerBboxPolygon = layerBboxPolygon[1]; } @@ -166,7 +170,7 @@ class OpenlayersLayer extends React.Component { if (newProps.position === oldProps.position && newProps.srs === oldProps.srs && newProps.securityToken === oldProps.securityToken ) { // check if options are the same, except loading if (newProps.options === oldProps.options) return; - if (_.isEqual( _.omit(newProps.options, ["loading"]), _.omit(oldProps.options, ["loading"]) ) ) { + if (isEqual( omit(newProps.options, ["loading"]), omit(oldProps.options, ["loading"]) ) ) { return; } } @@ -292,5 +296,3 @@ class OpenlayersLayer extends React.Component { return valid; }; } - -module.exports = OpenlayersLayer; diff --git a/web/client/components/map/openlayers/LegacyVectorStyle.js b/web/client/components/map/openlayers/LegacyVectorStyle.js index 203e2e5942..326cf6a443 100644 --- a/web/client/components/map/openlayers/LegacyVectorStyle.js +++ b/web/client/components/map/openlayers/LegacyVectorStyle.js @@ -1,22 +1,27 @@ -var markerIcon = require('./img/marker-icon.png'); -var markerShadow = require('./img/marker-shadow.png'); -var ol = require('openlayers'); -const {last, head} = require('lodash'); +import markerIcon from './img/marker-icon.png'; +import markerShadow from './img/marker-shadow.png'; + +import last from 'lodash/last'; +import head from 'lodash/head'; +import trim from 'lodash/trim'; +import isString from 'lodash/isString'; +import isArray from 'lodash/isArray'; + +import assign from 'object-assign'; + +import {colorToRgbaStr} from '../../../utils/ColorUtils'; +import {set} from '../../../utils/ImmutableUtils'; + +import {Circle, Stroke, Fill, Text, Style, Icon} from 'ol/style'; +import {Point} from 'ol/geom'; +import Icons from '../../../utils/openlayers/Icons'; + const blue = [0, 153, 255, 1]; -const assign = require('object-assign'); -const {trim, isString, isArray} = require('lodash'); -const {colorToRgbaStr} = require('../../../utils/ColorUtils'); -const {set} = require('../../../utils/ImmutableUtils'); -const selectedStyleConfiguration = { - white: [255, 255, 255, 1], - blue: [0, 153, 255, 1], - width: 3 -}; -const image = new ol.style.Circle({ +const image = new Circle({ radius: 5, fill: null, - stroke: new ol.style.Stroke({color: 'red', width: 1}) + stroke: new Stroke({color: 'red', width: 1}) }); /** @@ -25,12 +30,12 @@ const image = new ol.style.Circle({ * @param {number} options.radius radius of the circle * @param {string} options.fillColor ol color for the circle fill style * @param {boolean} options.applyToPolygon tells if this style can be applied to a polygon - * @return {ol.style.Style} style of the point + * @return {Style} style of the point */ -const firstPointOfPolylineStyle = ({radius = 5, fillColor = 'green', applyToPolygon = false} = {}) => new ol.style.Style({ - image: new ol.style.Circle({ +export const firstPointOfPolylineStyle = ({radius = 5, fillColor = 'green', applyToPolygon = false} = {}) => new Style({ + image: new Circle({ radius, - fill: new ol.style.Fill({ + fill: new Fill({ color: fillColor }) }), @@ -41,7 +46,7 @@ const firstPointOfPolylineStyle = ({radius = 5, fillColor = 'green', applyToPoly return null; } let coordinates = type === "Polygon" ? geom.getCoordinates()[0] : geom.getCoordinates(); - return coordinates.length > 1 ? new ol.geom.Point(head(coordinates)) : null; + return coordinates.length > 1 ? new Point(head(coordinates)) : null; } }); @@ -51,12 +56,12 @@ const firstPointOfPolylineStyle = ({radius = 5, fillColor = 'green', applyToPoly * @param {number} options.radius radius of the circle * @param {string} options.fillColor ol color for the circle fill style * @param {boolean} options.applyToPolygon tells if this style can be applied to a polygon - * @return {ol.style.Style} style of the point + * @return {Style} style of the point */ -const lastPointOfPolylineStyle = ({radius = 5, fillColor = 'red', applyToPolygon = false} = {}) => new ol.style.Style({ - image: new ol.style.Circle({ +export const lastPointOfPolylineStyle = ({radius = 5, fillColor = 'red', applyToPolygon = false} = {}) => new Style({ + image: new Circle({ radius, - fill: new ol.style.Fill({ + fill: new Fill({ color: fillColor }) }), @@ -67,40 +72,40 @@ const lastPointOfPolylineStyle = ({radius = 5, fillColor = 'red', applyToPolygon return null; } let coordinates = type === "Polygon" ? geom.getCoordinates()[0] : geom.getCoordinates(); - return new ol.geom.Point(coordinates.length > 3 ? coordinates[coordinates.length - (type === "Polygon" ? 2 : 1)] : last(coordinates)); + return new Point(coordinates.length > 3 ? coordinates[coordinates.length - (type === "Polygon" ? 2 : 1)] : last(coordinates)); } }); /** creates styles to highlight/customize start and end point of a polyline */ -const startEndPolylineStyle = (startPointOptions = {}, endPointOptions = {}) => { +export const startEndPolylineStyle = (startPointOptions = {}, endPointOptions = {}) => { return [firstPointOfPolylineStyle(startPointOptions), lastPointOfPolylineStyle(endPointOptions)]; }; const getTextStyle = (tempStyle, valueText, highlight = false) => { - return new ol.style.Style({ - text: new ol.style.Text({ + return new Style({ + text: new Text({ offsetY: -( 4 * Math.sqrt(tempStyle.fontSize)), // TODO improve this for high font values > 100px textAlign: tempStyle.textAlign || "center", text: valueText || "", font: tempStyle.font, - fill: new ol.style.Fill({ + fill: new Fill({ // WRONG, SETTING A FILL STYLE WITH A COLOR (STROKE) ATTRIBUTE color: colorToRgbaStr(tempStyle.stroke || tempStyle.color || '#000000', tempStyle.opacity || 1) }), // halo - stroke: highlight ? new ol.style.Stroke({ + stroke: highlight ? new Stroke({ color: [255, 255, 255, 1], width: 2 }) : null }), image: highlight ? - new ol.style.Circle({ + new Circle({ radius: 5, fill: null, - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: colorToRgbaStr(tempStyle.color || "#0000FF", tempStyle.opacity || 1), width: tempStyle.weight || 1 }) @@ -108,7 +113,6 @@ const getTextStyle = (tempStyle, valueText, highlight = false) => { }); }; -const Icons = require('../../../utils/openlayers/Icons'); const STYLE_POINT = { color: '#ffcc33', @@ -162,7 +166,7 @@ const STYLE_MARKER = { iconGlyph: "comment" }; -const defaultStyles = { +export const defaultStyles = { "Marker": STYLE_MARKER, "Text": STYLE_TEXT, "Circle": STYLE_CIRCLE, @@ -175,7 +179,7 @@ const defaultStyles = { }; const strokeStyle = (options, defaultsStyle = {color: 'blue', width: 3, lineDash: [6]}) => ({ - stroke: new ol.style.Stroke( + stroke: new Stroke( options.style ? options.style.stroke || { color: options.style.color || defaultsStyle.color, @@ -191,7 +195,7 @@ const strokeStyle = (options, defaultsStyle = {color: 'blue', width: 3, lineDash }); const fillStyle = (options, defaultsStyle = {color: 'rgba(0, 0, 255, 0.1)'}) => ({ - fill: new ol.style.Fill( + fill: new Fill( options.style ? options.style.fill || { color: colorToRgbaStr(options.style.fillColor, options.style.fillOpacity) || defaultsStyle.color @@ -202,76 +206,76 @@ const fillStyle = (options, defaultsStyle = {color: 'rgba(0, 0, 255, 0.1)'}) => }); const defaultOLStyles = { - 'Point': () => [new ol.style.Style({ + 'Point': () => [new Style({ image: image })], - 'LineString': options => [new ol.style.Style(assign({}, + 'LineString': options => [new Style(assign({}, strokeStyle(options, {color: 'blue', width: 3}) ))], - 'MultiLineString': options => [new ol.style.Style(assign({}, + 'MultiLineString': options => [new Style(assign({}, strokeStyle(options, {color: 'blue', width: 3}) ))], - 'MultiPoint': () => [new ol.style.Style({ + 'MultiPoint': () => [new Style({ image: image })], - 'MultiPolygon': options => [new ol.style.Style(assign({}, + 'MultiPolygon': options => [new Style(assign({}, strokeStyle(options), fillStyle(options) ))], - 'Polygon': options => [new ol.style.Style(assign({}, + 'Polygon': options => [new Style(assign({}, strokeStyle(options), fillStyle(options) ))], - 'GeometryCollection': options => [new ol.style.Style(assign({}, + 'GeometryCollection': options => [new Style(assign({}, strokeStyle(options), fillStyle(options), - {image: new ol.style.Circle({ + {image: new Circle({ radius: 10, fill: null, - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: 'magenta' }) }) }))], - 'Circle': () => [new ol.style.Style({ - stroke: new ol.style.Stroke({ + 'Circle': () => [new Style({ + stroke: new Stroke({ color: 'red', width: 2 }), - fill: new ol.style.Fill({ + fill: new Fill({ color: 'rgba(255,0,0,0.2)' }) })], - 'marker': (options) => [new ol.style.Style({ - image: new ol.style.Icon({ + 'marker': (options) => [new Style({ + image: new Icon({ anchor: [14, 41], anchorXUnits: 'pixels', anchorYUnits: 'pixels', src: markerShadow }) -}), new ol.style.Style({ - image: new ol.style.Icon({ +}), new Style({ + image: new Icon({ anchor: [0.5, 1], anchorXUnits: 'fraction', anchorYUnits: 'fraction', src: markerIcon }), - text: new ol.style.Text({ + text: new Text({ text: options.label, scale: 1.25, offsetY: 8, - fill: new ol.style.Fill({color: '#000000'}), - stroke: new ol.style.Stroke({color: '#FFFFFF', width: 2}) + fill: new Fill({color: '#000000'}), + stroke: new Stroke({color: '#FFFFFF', width: 2}) }) })] }; -const styleFunction = function(feature, options) { +export const styleFunction = function(feature, options) { const type = feature.getGeometry().getType(); return defaultOLStyles[type](options && options.style && options.style[type] && {style: {...options.style[type]}} || options || {}); }; -function getMarkerStyle(options) { +export function getMarkerStyle(options) { if (options.style.iconUrl) { return Icons.standard.getIcon(options); } @@ -291,21 +295,21 @@ const getValidStyle = (geomType, options = { style: defaultStyles}, isDrawing, t let tempStyle = options.style[geomType] || options.style; if (geomType === "MultiLineString" || geomType === "LineString") { let styles = [ - new ol.style.Style({ - stroke: options.style.useSelectedStyle ? new ol.style.Stroke({ + new Style({ + stroke: options.style.useSelectedStyle ? new Stroke({ color: [255, 255, 255, 1], width: tempStyle.weight + 2 }) : null }), - new ol.style.Style(tempStyle ? { - stroke: new ol.style.Stroke( tempStyle && tempStyle.stroke ? tempStyle.stroke : { + new Style(tempStyle ? { + stroke: new Stroke( tempStyle && tempStyle.stroke ? tempStyle.stroke : { color: colorToRgbaStr(options.style && tempStyle.color || "#0000FF", tempStyle.opacity || 1), lineDash: options.style.highlight ? [10] : [0], width: tempStyle.weight || 1 }), image: isDrawing ? image : null } : { - stroke: new ol.style.Stroke(defaultStyles[geomType] && defaultStyles[geomType].stroke ? defaultStyles[geomType].stroke : { + stroke: new Stroke(defaultStyles[geomType] && defaultStyles[geomType].stroke ? defaultStyles[geomType].stroke : { color: colorToRgbaStr(options.style && defaultStyles[geomType].color || "#0000FF", defaultStyles[geomType].opacity || 1), lineDash: options.style.highlight ? [10] : [0], width: defaultStyles[geomType].weight || 1 @@ -317,32 +321,32 @@ const getValidStyle = (geomType, options = { style: defaultStyles}, isDrawing, t } if ((geomType === "MultiPoint" || geomType === "Point") && (tempStyle.iconUrl || tempStyle.iconGlyph) ) { - return isDrawing ? new ol.style.Style({ + return isDrawing ? new Style({ image: image }) : getMarkerStyle({style: {...tempStyle, highlight: options.style.highlight || options.style.useSelectedStyle}}); } if (geomType === "Circle" && radius ) { let styles = [ - new ol.style.Style({ - stroke: options.style.useSelectedStyle ? new ol.style.Stroke({ + new Style({ + stroke: options.style.useSelectedStyle ? new Stroke({ color: [255, 255, 255, 1], width: tempStyle.weight + 4 }) : null }), - new ol.style.Style({ - stroke: new ol.style.Stroke( tempStyle && tempStyle.stroke ? tempStyle.stroke : { + new Style({ + stroke: new Stroke( tempStyle && tempStyle.stroke ? tempStyle.stroke : { color: options.style.useSelectedStyle ? blue : colorToRgbaStr(options.style && tempStyle.color || "#0000FF", tempStyle.opacity || 1), lineDash: options.style.highlight ? [10] : [0], width: tempStyle.weight || 1 }), - fill: new ol.style.Fill(tempStyle.fill ? tempStyle.fill : { + fill: new Fill(tempStyle.fill ? tempStyle.fill : { color: colorToRgbaStr(options.style && tempStyle.fillColor || "#0000FF", tempStyle.fillOpacity || 0.2) }) - }), new ol.style.Style({ - image: options.style.useSelectedStyle ? new ol.style.Circle({ + }), new Style({ + image: options.style.useSelectedStyle ? new Circle({ radius: 3, - fill: new ol.style.Fill(tempStyle.fill ? tempStyle.fill : { + fill: new Fill(tempStyle.fill ? tempStyle.fill : { color: blue }) }) : null, @@ -351,7 +355,7 @@ const getValidStyle = (geomType, options = { style: defaultStyles}, isDrawing, t const type = geom.getType(); if (type === "Circle") { let coordinates = geom.getCenter(); - return new ol.geom.Point(coordinates); + return new Point(coordinates); } return null; } @@ -363,20 +367,20 @@ const getValidStyle = (geomType, options = { style: defaultStyles}, isDrawing, t } if (geomType === "MultiPolygon" || geomType === "Polygon") { let styles = [ - new ol.style.Style({ - stroke: options.style.useSelectedStyle ? new ol.style.Stroke({ + new Style({ + stroke: options.style.useSelectedStyle ? new Stroke({ color: [255, 255, 255, 1], width: tempStyle.weight + 2 }) : null }), - new ol.style.Style({ - stroke: new ol.style.Stroke( tempStyle.stroke ? tempStyle.stroke : { + new Style({ + stroke: new Stroke( tempStyle.stroke ? tempStyle.stroke : { color: options.style.useSelectedStyle ? blue : colorToRgbaStr(options.style && tempStyle.color || "#0000FF", tempStyle.opacity || 1), lineDash: options.style.highlight ? [10] : [0], width: tempStyle.weight || 1 }), image: isDrawing ? image : null, - fill: new ol.style.Fill(tempStyle.fill ? tempStyle.fill : { + fill: new Fill(tempStyle.fill ? tempStyle.fill : { color: colorToRgbaStr(options.style && tempStyle.fillColor || "#0000FF", tempStyle.fillOpacity || 1) }) }) @@ -387,7 +391,7 @@ const getValidStyle = (geomType, options = { style: defaultStyles}, isDrawing, t return fallbackStyle; }; -function getStyle(options, isDrawing = false, textValues = []) { +export function getStyle(options, isDrawing = false, textValues = []) { // this is causing max call stack size exceeded because it contains ol functions and it comes from the store // we suggest to remove this behaviour @@ -425,19 +429,19 @@ function getStyle(options, isDrawing = false, textValues = []) { } if (!style && options.style) { style = { - stroke: new ol.style.Stroke( options.style.stroke ? options.style.stroke : { + stroke: new Stroke( options.style.stroke ? options.style.stroke : { color: colorToRgbaStr(options.style && options.style.color || "#0000FF", options.style.opacity || 1), lineDash: options.style.highlight ? [10] : [0], width: options.style.weight || 1 }), - fill: new ol.style.Fill(options.style.fill ? options.style.fill : { + fill: new Fill(options.style.fill ? options.style.fill : { color: colorToRgbaStr(options.style && options.style.fillColor || "#0000FF", options.style.fillOpacity || 1) }) }; if (geomType === "Point") { style = { - image: new ol.style.Circle(assign({}, style, {radius: options.style.radius || 5})) + image: new Circle(assign({}, style, {radius: options.style.radius || 5})) }; } if (options.style.iconUrl || options.style.iconGlyph) { @@ -456,7 +460,7 @@ function getStyle(options, isDrawing = false, textValues = []) { }; return style; } - style = new ol.style.Style(style); + style = new Style(style); /* managing new style structure @@ -503,7 +507,7 @@ function getStyle(options, isDrawing = false, textValues = []) { } if (type === "Point" || type === "MultiPoint") { markerStyles = getMarkerStyle({style: {...options.style[type], highlight: options.style.highlight}}); - return isDrawing ? new ol.style.Style({ + return isDrawing ? new Style({ image: image, geometry: feature.getGeometry() }) : markerStyles.map(m => { @@ -538,14 +542,3 @@ function getStyle(options, isDrawing = false, textValues = []) { } : style || styleFunction; } - -module.exports = { - startEndPolylineStyle, - lastPointOfPolylineStyle, - firstPointOfPolylineStyle, - selectedStyleConfiguration, - getStyle, - getMarkerStyle, - styleFunction, - defaultStyles -}; diff --git a/web/client/components/map/openlayers/Locate.jsx b/web/client/components/map/openlayers/Locate.jsx index 9d79110e9e..093756cfa4 100644 --- a/web/client/components/map/openlayers/Locate.jsx +++ b/web/client/components/map/openlayers/Locate.jsx @@ -1,6 +1,6 @@ -const PropTypes = require('prop-types'); -const React = require('react'); -const OlLocate = require('../../../utils/openlayers/OlLocate'); +import PropTypes from 'prop-types'; +import React from 'react'; +import OlLocate from '../../../utils/openlayers/OlLocate'; const defaultOpt = { follow: true, // follow with zoom and pan the user's location @@ -16,7 +16,7 @@ const defaultOpt = { } }; -class Locate extends React.Component { +export default class Locate extends React.Component { static displayName = 'Locate'; static propTypes = { @@ -80,4 +80,3 @@ class Locate extends React.Component { }; } -module.exports = Locate; diff --git a/web/client/components/map/openlayers/Map.jsx b/web/client/components/map/openlayers/Map.jsx index bf14a92dcc..04f078729d 100644 --- a/web/client/components/map/openlayers/Map.jsx +++ b/web/client/components/map/openlayers/Map.jsx @@ -5,20 +5,39 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const ol = require('openlayers'); -const proj4 = require('proj4').default; -const PropTypes = require('prop-types'); -const React = require('react'); -const assign = require('object-assign'); -const CoordinatesUtils = require('../../../utils/CoordinatesUtils'); -const ConfigUtils = require('../../../utils/ConfigUtils'); -const mapUtils = require('../../../utils/MapUtils'); -const projUtils = require('../../../utils/openlayers/projUtils'); +import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction'; +import { defaults as defaultControls } from 'ol/control'; +import Map from 'ol/Map'; +import View from 'ol/View'; +import { toLonLat } from 'ol/proj'; +import Zoom from 'ol/control/Zoom'; +import Units from 'ol/proj/Units'; -const { isEqual, throttle, isArray, isNil } = require('lodash'); +import { getWidth, getHeight } from 'ol/extent'; -class OpenlayersMap extends React.Component { +import proj4 from 'proj4'; +import { register } from 'ol/proj/proj4.js'; +import PropTypes from 'prop-types'; +import React from 'react'; +import assign from 'object-assign'; + +import CoordinatesUtils from '../../../utils/CoordinatesUtils'; +import ConfigUtils from '../../../utils/ConfigUtils'; +import mapUtils from '../../../utils/MapUtils'; +import projUtils from '../../../utils/openlayers/projUtils'; + +import isEqual from 'lodash/isEqual'; +import throttle from 'lodash/throttle'; +import isArray from 'lodash/isArray'; +import isNil from 'lodash/isNil'; + +import 'ol/ol.css'; + +// add overrides for css +import './mapstore-ol-overrides.css'; + +export default class OpenlayersMap extends React.Component { static propTypes = { id: PropTypes.string, style: PropTypes.object, @@ -67,12 +86,12 @@ class OpenlayersMap extends React.Component { componentDidMount() { this.props.projectionDefs.forEach(p => { - projUtils.addProjections(ol, p.code, p.extent, p.worldExtent, p.axisOrientation || proj4.defs(p.code).axis || 'enu'); + projUtils.addProjections(p.code, p.extent, p.worldExtent, p.axisOrientation || proj4.defs(p.code).axis || 'enu'); }); // It may be a good idea to check if CoordinateUtils also registered the projectionDefs // normally it happens ad application level. let center = CoordinatesUtils.reproject([this.props.center.x, this.props.center.y], 'EPSG:4326', this.props.projection); - ol.proj.setProj4(proj4); + register(proj4); let interactionsOptions = assign(this.props.interactive ? {} : { doubleClickZoom: false, dragPan: false, @@ -84,21 +103,21 @@ class OpenlayersMap extends React.Component { pinchZoom: false }, this.props.mapOptions.interactions); - let interactions = ol.interaction.defaults(assign({ + let interactions = defaults(assign({ dragPan: false, mouseWheelZoom: false }, interactionsOptions, {})); if (interactionsOptions === undefined || interactionsOptions.dragPan === undefined || interactionsOptions.dragPan) { interactions.extend([ - new ol.interaction.DragPan({ kinetic: false }) + new DragPan({ kinetic: false }) ]); } if (interactionsOptions === undefined || interactionsOptions.mouseWheelZoom === undefined || interactionsOptions.mouseWheelZoom) { interactions.extend([ - new ol.interaction.MouseWheelZoom({ duration: 0 }) + new MouseWheelZoom({ duration: 0 }) ]); } - let controls = ol.control.defaults(assign({ + let controls = defaultControls(assign({ zoom: this.props.zoomControl, attributionOptions: assign({ collapsible: false @@ -106,7 +125,7 @@ class OpenlayersMap extends React.Component { target: document.querySelector(this.props.mapOptions.attribution.container) } : {}) }, this.props.mapOptions.controls)); - let map = new ol.Map({ + let map = new Map({ layers: [], controls: controls, interactions: interactions, @@ -133,7 +152,7 @@ class OpenlayersMap extends React.Component { pos[0] = CoordinatesUtils.normalizeLng(pos[0]); } if (this.props.projection === 'EPSG:900913' || this.props.projection === 'EPSG:3857') { - pos = ol.proj.toLonLat(pos, this.props.projection); + pos = toLonLat(pos, this.props.projection); projectionExtent = CoordinatesUtils.reprojectBbox(projectionExtent, this.props.projection, "EPSG:4326"); } // prevent user from clicking outside the projection extent @@ -160,7 +179,7 @@ class OpenlayersMap extends React.Component { if (!this.markerPresent && geom.getType() === "Point") { this.markerPresent = true; layerInfo = layer.get('msId'); - const arr = ol.proj.toLonLat(geom.getFirstCoordinate(), this.props.projection); + const arr = toLonLat(geom.getFirstCoordinate(), this.props.projection); coords = { x: arr[0], y: arr[1] }; } } @@ -207,9 +226,9 @@ class OpenlayersMap extends React.Component { if (newProps.zoomControl !== this.props.zoomControl) { if (newProps.zoomControl) { - this.map.addControl(new ol.control.Zoom()); + this.map.addControl(new Zoom()); } else { - this.map.removeControl(this.map.getControls().getArray().filter((ctl) => ctl instanceof ol.control.Zoom)[0]); + this.map.removeControl(this.map.getControls().getArray().filter((ctl) => ctl instanceof Zoom)[0]); } } @@ -287,12 +306,12 @@ class OpenlayersMap extends React.Component { const projection = this.map.getView().getProjection(); const extent = projection.getExtent(); - const extentWidth = !extent ? 360 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] / - ol.proj.METERS_PER_UNIT[projection.getUnits()] : - ol.extent.getWidth(extent); - const extentHeight = !extent ? 360 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] / - ol.proj.METERS_PER_UNIT[projection.getUnits()] : - ol.extent.getHeight(extent); + const extentWidth = !extent ? 360 * Units.METERS_PER_UNIT[Units.DEGREES] / + Units.METERS_PER_UNIT[projection.getUnits()] : + getWidth(extent); + const extentHeight = !extent ? 360 * Units.METERS_PER_UNIT[Units.DEGREES] / + Units.METERS_PER_UNIT[projection.getUnits()] : + getHeight(extent); let resX = extentWidth / tileWidth; let resY = extentHeight / tileHeight; @@ -388,7 +407,7 @@ class OpenlayersMap extends React.Component { mouseMoveEvent = (event) => { if (!event.dragging && event.coordinate) { let pos = event.coordinate.slice(); - let coords = ol.proj.toLonLat(pos, this.props.projection); + let coords = toLonLat(pos, this.props.projection); let tLng = coords[0] / 360 % 1 * 360; if (tLng < -180) { tLng = tLng + 360; @@ -415,11 +434,11 @@ class OpenlayersMap extends React.Component { const crs = view.getProjection().getCode(); // some projections are repeated on the x axis // and they need to be updated also if the center is outside of the projection extent - const wrappedProjections = [ 'EPSG:3857', 'EPSG:900913', 'EPSG:4326' ]; + const wrappedProjections = ['EPSG:3857', 'EPSG:900913', 'EPSG:4326']; // prevent user from dragging outside the projection extent if (wrappedProjections.indexOf(crs) !== -1 - || (tempCenter && tempCenter[0] >= projectionExtent[0] && tempCenter[0] <= projectionExtent[2] && - tempCenter[1] >= projectionExtent[1] && tempCenter[1] <= projectionExtent[3])) { + || (tempCenter && tempCenter[0] >= projectionExtent[0] && tempCenter[0] <= projectionExtent[2] && + tempCenter[1] >= projectionExtent[1] && tempCenter[1] <= projectionExtent[3])) { let c = this.normalizeCenter(view.getCenter()); let bbox = view.calculateExtent(this.map.getSize()); let size = { @@ -459,7 +478,7 @@ class OpenlayersMap extends React.Component { zoom: zoom, minZoom: limits.minZoom }, newOptions || {}); - return new ol.View(viewOptions); + return new View(viewOptions); }; _updateMapPositionFromNewProps = (newProps) => { @@ -542,7 +561,3 @@ class OpenlayersMap extends React.Component { }); }; } - -// add overrides for css -require('./mapstore-ol-overrides.css'); -module.exports = OpenlayersMap; diff --git a/web/client/components/map/openlayers/MeasurementSupport.jsx b/web/client/components/map/openlayers/MeasurementSupport.jsx index 90386da0a8..29ab7d5fd1 100644 --- a/web/client/components/map/openlayers/MeasurementSupport.jsx +++ b/web/client/components/map/openlayers/MeasurementSupport.jsx @@ -6,25 +6,39 @@ * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -const PropTypes = require('prop-types'); -const {round, isEqual, dropRight, pick} = require('lodash'); -const assign = require('object-assign'); -const ol = require('openlayers'); - -const wgs84Sphere = new ol.Sphere(6378137); -const {reprojectGeoJson, reproject, calculateAzimuth, calculateDistance, transformLineToArcs} = require('../../../utils/CoordinatesUtils'); -const {convertUom, getFormattedBearingValue} = require('../../../utils/MeasureUtils'); -const {set} = require('../../../utils/ImmutableUtils'); -const {startEndPolylineStyle} = require('./VectorStyle'); -const {getMessageById} = require('../../../utils/LocaleUtils'); -const {createOLGeometry} = require('../../../utils/openlayers/DrawUtils'); +import React from 'react'; +import PropTypes from 'prop-types'; +import round from 'lodash/round'; +import isEqual from 'lodash/isEqual'; +import dropRight from 'lodash/dropRight'; +import pick from 'lodash/pick'; + +import assign from 'object-assign'; + +import {reprojectGeoJson, reproject, calculateAzimuth, calculateDistance, transformLineToArcs} from '../../../utils/CoordinatesUtils'; +import {convertUom, getFormattedBearingValue} from '../../../utils/MeasureUtils'; +import {set} from '../../../utils/ImmutableUtils'; +import {startEndPolylineStyle} from './VectorStyle'; +import {getMessageById} from '../../../utils/LocaleUtils'; +import {createOLGeometry} from '../../../utils/openlayers/DrawUtils'; + +import {Polygon, LineString} from 'ol/geom'; +import Overlay from 'ol/Overlay'; +import VectorSource from 'ol/source/Vector'; +import VectorLayer from 'ol/layer/Vector'; +import Feature from 'ol/Feature'; +import {Stroke, Fill, Style} from 'ol/style'; +import CircleStyle from 'ol/style/Circle'; +import Draw from 'ol/interaction/Draw'; +import GeoJSON from 'ol/format/GeoJSON'; +import {unByKey} from 'ol/Observable'; +import {getArea} from 'ol/sphere'; const getProjectionCode = (olMap) => { return olMap.getView().getProjection().getCode(); }; -class MeasurementSupport extends React.Component { +export default class MeasurementSupport extends React.Component { static propTypes = { startEndPoint: PropTypes.object, map: PropTypes.object, @@ -112,15 +126,15 @@ class MeasurementSupport extends React.Component { let geom = this.source.getFeatures()[0].getGeometry(); let output; - if (geom instanceof ol.geom.Polygon) { + if (geom instanceof Polygon) { output = this.formatArea(geom, props); this.tooltipCoord = geom.getInteriorPoint().getCoordinates(); - } else if (geom instanceof ol.geom.LineString) { + } else if (geom instanceof LineString) { output = this.formatLength(geom, props); this.tooltipCoord = geom.getLastCoordinate(); } this.measureTooltipElement.innerHTML = output; - this.measureTooltip = new ol.Overlay({ + this.measureTooltip = new Overlay({ element: this.measureTooltipElement, offset: [0, -7], positioning: 'bottom-center' @@ -144,10 +158,10 @@ class MeasurementSupport extends React.Component { let ft = set("geometry.coordinates", newCoords, features[0]); featuresToReplace = [ft]; } - this.source = new ol.source.Vector(); + this.source = new VectorSource(); featuresToReplace.forEach((geoJSON) => { let geometry = reprojectGeoJson(geoJSON, "EPSG:4326", getProjectionCode(this.props.map)).geometry; - const feature = new ol.Feature({ + const feature = new Feature({ geometry: createOLGeometry(geometry) }); this.source.addFeature(feature); @@ -168,19 +182,19 @@ class MeasurementSupport extends React.Component { this.removeDrawInteraction(); } // create a layer to draw on - this.source = new ol.source.Vector(); + this.source = new VectorSource(); let styles = [ - new ol.style.Style({ - fill: new ol.style.Fill({ + new Style({ + fill: new Fill({ color: 'rgba(255, 255, 255, 0.2)' }), - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: '#ffcc33', width: 2 }), - image: new ol.style.Circle({ + image: new CircleStyle({ radius: 7, - fill: new ol.style.Fill({ + fill: new Fill({ color: '#ffcc33' }) }) @@ -193,7 +207,7 @@ class MeasurementSupport extends React.Component { startEndPointStyles = startEndPolylineStyle(options.startPointOptions, options.endPointOptions); } - vector = new ol.layer.Vector({ + vector = new VectorLayer({ source: this.source, zIndex: 1000000, style: [...styles, ...startEndPointStyles] @@ -207,38 +221,38 @@ class MeasurementSupport extends React.Component { geometryType = newProps.measurement.geomType; } // create an interaction to draw with - draw = new ol.interaction.Draw({ + draw = new Draw({ source: this.source, type: /** @type {ol.geom.GeometryType} */ geometryType, - style: new ol.style.Style({ - fill: new ol.style.Fill({ + style: new Style({ + fill: new Fill({ color: 'rgba(255, 255, 255, 0.2)' }), - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: 'rgba(0, 0, 0, 0.5)', lineDash: [10, 10], width: 2 }), - image: new ol.style.Circle({ + image: new CircleStyle({ radius: 5, - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: 'rgba(0, 0, 0, 0.7)' }), - fill: new ol.style.Fill({ + fill: new Fill({ color: 'rgba(255, 255, 255, 0.2)' }) }) }) }); - this.clickListener = this.props.map.on('click', () => this.updateMeasurementResults(this.props), this); + this.clickListener = this.props.map.on('click', () => this.updateMeasurementResults(this.props)); if (this.props.updateOnMouseMove) { - this.props.map.on('pointermove', () => this.updateMeasurementResults(this.props), this); + this.props.map.on('pointermove', () => this.updateMeasurementResults(this.props)); } - this.props.map.on('pointermove', this.pointerMoveHandler, this); + this.props.map.on('pointermove', (evt) => this.pointerMoveHandler(evt)); - draw.on('drawstart', function(evt) { + draw.on('drawstart', (evt) => { // preserve the sketch feature of the draw controller // to update length/area on drawing a new vertex this.sketchFeature = evt.feature; @@ -256,10 +270,10 @@ class MeasurementSupport extends React.Component { this.listener = this.sketchFeature.getGeometry().on('change', (e) => { let geom = e.target; let output; - if (geom instanceof ol.geom.Polygon) { + if (geom instanceof Polygon) { output = this.formatArea(geom, this.props); this.tooltipCoord = geom.getInteriorPoint().getCoordinates(); - } else if (geom instanceof ol.geom.LineString) { + } else if (geom instanceof LineString) { output = this.formatLength(geom, this.props); this.tooltipCoord = geom.getLastCoordinate(); } @@ -267,12 +281,12 @@ class MeasurementSupport extends React.Component { this.measureTooltipElement.innerHTML = output; this.measureTooltip.setPosition(this.tooltipCoord); } - }, this); + }); this.props.resetGeometry(); - }, this); - draw.on('drawend', function(evt) { + }); + draw.on('drawend', (evt) => { this.drawing = false; - const geojsonFormat = new ol.format.GeoJSON(); + const geojsonFormat = new GeoJSON(); let newFeature = reprojectGeoJson(geojsonFormat.writeFeatureObject(evt.feature.clone()), getProjectionCode(this.props.map), "EPSG:4326"); this.props.changeGeometry(newFeature); if (this.props.measurement.lineMeasureEnabled) { @@ -284,9 +298,9 @@ class MeasurementSupport extends React.Component { if (this.props.measurement.showLabel) { this.measureTooltipElement.className = 'tooltip tooltip-static'; this.measureTooltip.setOffset([0, -7]); - ol.Observable.unByKey(this.listener); + unByKey(this.listener); } - }, this); + }); this.props.map.addInteraction(draw); if (this.props.measurement.showLabel) { @@ -307,7 +321,7 @@ class MeasurementSupport extends React.Component { this.props.map.removeLayer(this.measureLayer); this.sketchFeature = null; this.props.map.un('click', () => this.updateMeasurementResults(this.props), this); - ol.Observable.unByKey(this.clickListener); + unByKey(this.clickListener); if (this.props.updateOnMouseMove) { this.props.map.un('pointermove', () => this.updateMeasurementResults(this.props), this); } @@ -327,9 +341,9 @@ class MeasurementSupport extends React.Component { if (this.sketchFeature && this.drawing) { let geom = (this.sketchFeature.getGeometry()); - if (geom instanceof ol.geom.Polygon) { + if (geom instanceof Polygon) { helpMsg = this.continuePolygonMsg; - } else if (geom instanceof ol.geom.LineString) { + } else if (geom instanceof LineString) { helpMsg = this.continueLineMsg; } } @@ -369,7 +383,7 @@ class MeasurementSupport extends React.Component { this.drawInteraction.finishDrawing(); } } - const geojsonFormat = new ol.format.GeoJSON(); + const geojsonFormat = new GeoJSON(); let feature = reprojectGeoJson(geojsonFormat.writeFeatureObject(this.sketchFeature.clone()), getProjectionCode(props.map), "EPSG:4326"); // it will no longer create 100 points for arcs to put in the state @@ -404,8 +418,8 @@ class MeasurementSupport extends React.Component { calculateGeodesicArea = (coordinates) => { if (coordinates.length >= 4 ) { - let reprojectedCoordinatesIn4326 = this.reprojectedCoordinatesIn4326(coordinates); - return Math.abs(wgs84Sphere.geodesicArea(reprojectedCoordinatesIn4326)); + const reprojectedCoordinatesIn4326 = this.reprojectedCoordinatesIn4326(coordinates); + return Math.abs(getArea(new Polygon([reprojectedCoordinatesIn4326]), { projection: 'EPSG:4326' })); } return 0; }; @@ -417,7 +431,7 @@ class MeasurementSupport extends React.Component { this.removeHelpTooltip(); this.helpTooltipElement = document.createElement('div'); this.helpTooltipElement.className = 'tooltip hidden'; - this.helpTooltip = new ol.Overlay({ + this.helpTooltip = new Overlay({ element: this.helpTooltipElement, offset: [15, 0], positioning: 'center-left' @@ -431,7 +445,7 @@ class MeasurementSupport extends React.Component { this.removeMeasureTooltips(); this.measureTooltipElement = document.createElement('div'); this.measureTooltipElement.className = 'tooltip tooltip-measure'; - this.measureTooltip = new ol.Overlay({ + this.measureTooltip = new Overlay({ element: this.measureTooltipElement, offset: [0, -15], positioning: 'bottom-center' @@ -488,5 +502,3 @@ class MeasurementSupport extends React.Component { } } } - -module.exports = MeasurementSupport; diff --git a/web/client/components/map/openlayers/Overview.jsx b/web/client/components/map/openlayers/Overview.jsx index 6557ae6374..204b0cbb87 100644 --- a/web/client/components/map/openlayers/Overview.jsx +++ b/web/client/components/map/openlayers/Overview.jsx @@ -5,12 +5,13 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const PropTypes = require('prop-types'); -const React = require('react'); -const ol = require('openlayers'); -const Layers = require('../../../utils/openlayers/Layers'); -const assign = require('object-assign'); -const {isFinite} = require('lodash'); +import PropTypes from 'prop-types'; +import React from 'react'; +import Layers from '../../../utils/openlayers/Layers'; +import assign from 'object-assign'; +import isFinite from 'lodash/isFinite'; + +import OverviewMap from 'ol/control/OverviewMap'; require('./overview.css'); @@ -22,7 +23,7 @@ const defaultOpt = { collapsible: true }; -class Overview extends React.Component { +export default class Overview extends React.Component { static displayName = 'Overview'; static propTypes = { @@ -44,7 +45,7 @@ class Overview extends React.Component { olLayers.push(Layers.createLayer(layerOpt.type, layerOpt.options || {})); }); let opt = assign({}, defaultOpt, this.props.overviewOpt, {layers: olLayers}); - this.overview = new ol.control.OverviewMap(opt); + this.overview = new OverviewMap(opt); if (this.props.map) { this.overview.setMap(this.props.map); } @@ -130,5 +131,3 @@ class Overview extends React.Component { this.props.map.getView().fit(extent, mapSize, {nearest: true}); }; } - -module.exports = Overview; diff --git a/web/client/components/map/openlayers/ScaleBar.jsx b/web/client/components/map/openlayers/ScaleBar.jsx index 966ce35219..cfb5d14806 100644 --- a/web/client/components/map/openlayers/ScaleBar.jsx +++ b/web/client/components/map/openlayers/ScaleBar.jsx @@ -6,13 +6,12 @@ * LICENSE file in the root directory of this source tree. */ -const PropTypes = require('prop-types'); -const React = require('react'); -const ol = require('openlayers'); +import PropTypes from 'prop-types'; +import React from 'react'; +import assign from 'object-assign'; +import ScaleLine from 'ol/control/ScaleLine'; -const assign = require('object-assign'); - -class ScaleBar extends React.Component { +export default class ScaleBar extends React.Component { static propTypes = { map: PropTypes.object, className: PropTypes.string, @@ -29,7 +28,7 @@ class ScaleBar extends React.Component { }; componentDidMount() { - this.scalebar = new ol.control.ScaleLine(assign({}, this.props, this.props.container ? { + this.scalebar = new ScaleLine(assign({}, this.props, this.props.container ? { target: document.querySelector(this.props.container) } : {})); if (this.props.map) { @@ -48,4 +47,3 @@ class ScaleBar extends React.Component { } } -module.exports = ScaleBar; diff --git a/web/client/components/map/openlayers/SelectionSupport.jsx b/web/client/components/map/openlayers/SelectionSupport.jsx index 00938e4d3b..fe192287df 100644 --- a/web/client/components/map/openlayers/SelectionSupport.jsx +++ b/web/client/components/map/openlayers/SelectionSupport.jsx @@ -1,4 +1,3 @@ -const PropTypes = require('prop-types'); /** * Copyright 2017, Sourcepole AG. * All rights reserved. @@ -7,10 +6,16 @@ const PropTypes = require('prop-types'); * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -var ol = require('openlayers'); +import PropTypes from 'prop-types'; +import React from 'react'; +import VectorSource from 'ol/source/Vector'; +import VectorLayer from 'ol/layer/Vector'; +import {Style, Fill, Stroke} from 'ol/style'; +import CircleStyle from 'ol/style/Circle'; +import Draw from 'ol/interaction/Draw'; +import DoubleClickZoom from 'ol/interaction/DoubleClickZoom'; -class SelectionSupport extends React.Component { +export default class SelectionSupport extends React.Component { static propTypes = { map: PropTypes.object, projection: PropTypes.string, @@ -42,21 +47,21 @@ class SelectionSupport extends React.Component { this.removeDrawInteraction(); } // create a layer to draw on - let source = new ol.source.Vector(); - let vector = new ol.layer.Vector({ + let source = new VectorSource(); + let vector = new VectorLayer({ source: source, zIndex: 1000000, - style: new ol.style.Style({ - fill: new ol.style.Fill({ + style: new Style({ + fill: new Fill({ color: 'rgba(255, 255, 255, 0.2)' }), - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: '#ffcc33', width: 2 }), - image: new ol.style.Circle({ + image: new CircleStyle({ radius: 7, - fill: new ol.style.Fill({ + fill: new Fill({ color: '#ffcc33' }) }) @@ -66,40 +71,40 @@ class SelectionSupport extends React.Component { this.props.map.addLayer(vector); // create an interaction to draw with - let draw = new ol.interaction.Draw({ + let draw = new Draw({ source: source, type: /** @type {ol.geom.GeometryType} */ newProps.selection.geomType, - style: new ol.style.Style({ - fill: new ol.style.Fill({ + style: new Style({ + fill: new Fill({ color: 'rgba(255, 255, 255, 0.2)' }), - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: 'rgba(0, 0, 0, 0.5)', lineDash: [10, 10], width: 2 }), - image: new ol.style.Circle({ + image: new CircleStyle({ radius: 5, - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: 'rgba(0, 0, 0, 0.7)' }), - fill: new ol.style.Fill({ + fill: new Fill({ color: 'rgba(255, 255, 255, 0.2)' }) }) }) }); - draw.on('drawstart', function(evt) { + draw.on('drawstart', (evt) => { // preserv the sketch feature of the draw controller // to update length/area on drawing a new vertex this.sketchFeature = evt.feature; // clear previous sketches source.clear(); - }, this); - draw.on('drawend', function() { + }); + draw.on('drawend', () => { this.updateSelectionState(); - }, this); + }); this.props.map.addInteraction(draw); this.drawInteraction = draw; @@ -140,12 +145,10 @@ class SelectionSupport extends React.Component { let interactions = this.props.map.getInteractions(); for (let i = 0; i < interactions.getLength(); i++) { let interaction = interactions.item(i); - if (interaction instanceof ol.interaction.DoubleClickZoom) { + if (interaction instanceof DoubleClickZoom) { interaction.setActive(enabled); break; } } }; } - -module.exports = SelectionSupport; diff --git a/web/client/components/map/openlayers/SnapshotSupport.jsx b/web/client/components/map/openlayers/SnapshotSupport.jsx index 7da719c5d3..4f38cdded1 100644 --- a/web/client/components/map/openlayers/SnapshotSupport.jsx +++ b/web/client/components/map/openlayers/SnapshotSupport.jsx @@ -6,7 +6,10 @@ * LICENSE file in the root directory of this source tree. */ -module.exports = { - GrabMap: require('./snapshot/GrabMap.jsx'), - Preview: require('./snapshot/Preview.jsx') +import GrabMap from './snapshot/GrabMap.jsx'; +import Preview from './snapshot/Preview.jsx'; + +export default { + GrabMap, + Preview }; diff --git a/web/client/components/map/openlayers/VectorStyle.js b/web/client/components/map/openlayers/VectorStyle.js index 261c7e8610..70158b1ad8 100644 --- a/web/client/components/map/openlayers/VectorStyle.js +++ b/web/client/components/map/openlayers/VectorStyle.js @@ -5,15 +5,40 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const ol = require('openlayers'); -const {isNil, trim, isString, isArray, castArray, head, last, find, isObject} = require('lodash'); -const {colorToRgbaStr} = require('../../../utils/ColorUtils'); -const {reproject, transformLineToArcs} = require('../../../utils/CoordinatesUtils'); -const Icons = require('../../../utils/openlayers/Icons'); -const { +import isNil from 'lodash/isNil'; +import trim from 'lodash/trim'; +import isString from 'lodash/isString'; +import isArray from 'lodash/isArray'; +import castArray from 'lodash/castArray'; +import head from 'lodash/head'; +import last from 'lodash/last'; +import find from 'lodash/find'; +import isObject from 'lodash/isObject'; + +import {colorToRgbaStr} from '../../../utils/ColorUtils'; +import {reproject, transformLineToArcs} from '../../../utils/CoordinatesUtils'; +import Icons from '../../../utils/openlayers/Icons'; +import { isMarkerStyle, isTextStyle, isStrokeStyle, isFillStyle, isCircleStyle, isSymbolStyle, registerGeometryFunctions, geometryFunctions -} = require('../../../utils/VectorStyleUtils'); +} from '../../../utils/VectorStyleUtils'; + +import CircleStyle from 'ol/style/Circle'; +import {Stroke, Fill, Text, Style} from 'ol/style'; +import {Point, LineString} from 'ol/geom'; + +import {Promise} from 'es6-promise'; +import axios from '../../../libs/ajax'; + +import { getStyleParser } from '../../../utils/VectorStyleUtils'; +import OlStyleParser from 'geostyler-openlayers-parser'; + +const olStyleParser = new OlStyleParser(); + +import { + getStyle as getStyleLegacy, getMarkerStyle as getMarkerStyleLegacyFun, + startEndPolylineStyle as startEndPolylineStyleLegacy, defaultStyles as defaultStylesLegacy} from './LegacyVectorStyle'; + const selectedStyle = { white: [255, 255, 255, 1], blue: [0, 153, 255, 1], @@ -26,8 +51,8 @@ const selectedStyle = { * @param {object} ol.Fill object * @return if a circle style is passed then return it available for ol.style.Image */ -const getCircleStyle = (style = {}, stroke = null, fill = null) => { - return isCircleStyle(style) ? new ol.style.Circle({ +export const getCircleStyle = (style = {}, stroke = null, fill = null) => { + return isCircleStyle(style) ? new CircleStyle({ stroke, fill, radius: style.radius || 5 @@ -39,7 +64,7 @@ const getCircleStyle = (style = {}, stroke = null, fill = null) => { * @param {object} style to convert * @return array of ol.Style */ -const getMarkerStyle = (style) => { +export const getMarkerStyle = (style) => { if (isMarkerStyle(style)) { if (style.iconUrl) { return Icons.standard.getIcon({style}); @@ -54,10 +79,10 @@ const getMarkerStyle = (style) => { /** * converts a style object * @param {object} style to convert - * @return an ol.style.Stroke style + * @return an Stroke style */ -const getStrokeStyle = (style = {}) => { - return isStrokeStyle(style) ? new ol.style.Stroke(style.stroke && isObject(style.stroke) ? style.stroke : { // not sure about this ternary expr +export const getStrokeStyle = (style = {}) => { + return isStrokeStyle(style) ? new Stroke(style.stroke && isObject(style.stroke) ? style.stroke : { // not sure about this ternary expr color: style.highlight ? selectedStyle.blue : colorToRgbaStr(style.color || style.stroke || "#0000FF", isNil(style.opacity) ? 1 : style.opacity), width: isNil(style.weight) ? 1 : style.weight, lineDash: isString(style.dashArray) && trim(style.dashArray).split(' ') || isArray(style.dashArray) && style.dashArray || [0], @@ -70,10 +95,10 @@ const getStrokeStyle = (style = {}) => { /** * converts a style object * @param {object} style to convert - * @return an ol.style.Fill style + * @return an Fill style */ -const getFillStyle = (style = {}) => { - return isFillStyle(style) ? new ol.style.Fill(style.fill && isObject(style.fill) ? style.fill : { // not sure about this ternary expr +export const getFillStyle = (style = {}) => { + return isFillStyle(style) ? new Fill(style.fill && isObject(style.fill) ? style.fill : { // not sure about this ternary expr color: colorToRgbaStr(style.fillColor || "#0000FF", isNil(style.fillOpacity) ? 1 : style.fillOpacity) }) : null; }; @@ -81,28 +106,28 @@ const getFillStyle = (style = {}) => { /** * converts a style object * @param {object} style to convert - * @param {object} stroke ol.style.Stroke ready to use - * @param {object} fill ol.style.Fill ready to use - * @return an ol.style.Text style + * @param {object} stroke Stroke ready to use + * @param {object} fill Fill ready to use + * @return an Text style */ -const getTextStyle = (style = {}, stroke = null, fill = null, feature) => { - return isTextStyle(style) ? new ol.style.Text({ +export const getTextStyle = (style = {}, stroke = null, fill = null, feature) => { + return isTextStyle(style) ? new Text({ fill, offsetY: style.offsetY || -( 4 * Math.sqrt(style.fontSize)), // TODO improve this for high font values > 100px textAlign: style.textAlign || "center", text: style.label || feature && feature.properties && feature.properties.valueText || "New", font: style.font || "Arial", // halo - stroke: style.highlight ? new ol.style.Stroke({ + stroke: style.highlight ? new Stroke({ color: [255, 255, 255, 1], width: 2 }) : stroke, // this should be another rule for the small circle image: style.highlight ? - new ol.style.Circle({ + new CircleStyle({ radius: 5, fill: null, - stroke: new ol.style.Stroke({ + stroke: new Stroke({ color: colorToRgbaStr(style.color || "#0000FF", style.opacity || 1), width: style.weight || 1 }) @@ -117,12 +142,12 @@ const getTextStyle = (style = {}, stroke = null, fill = null, feature) => { * @param {number} options.radius radius of the circle * @param {string} options.fillColor ol color for the circle fill style * @param {boolean} options.applyToPolygon tells if this style can be applied to a polygon - * @return {ol.style.Style} style of the point + * @return {Style} style of the point */ -const firstPointOfPolylineStyle = ({radius = 5, fillColor = 'green', applyToPolygon = false} = {}) => new ol.style.Style({ - image: new ol.style.Circle({ +export const firstPointOfPolylineStyle = ({radius = 5, fillColor = 'green', applyToPolygon = false} = {}) => new Style({ + image: new CircleStyle({ radius, - fill: new ol.style.Fill({ + fill: new Fill({ color: fillColor }) }), @@ -133,7 +158,7 @@ const firstPointOfPolylineStyle = ({radius = 5, fillColor = 'green', applyToPoly return null; } let coordinates = type === "Polygon" ? geom.getCoordinates()[0] : geom.getCoordinates(); - return coordinates.length > 1 ? new ol.geom.Point(head(coordinates)) : null; + return coordinates.length > 1 ? new Point(head(coordinates)) : null; } }); @@ -143,12 +168,12 @@ const firstPointOfPolylineStyle = ({radius = 5, fillColor = 'green', applyToPoly * @param {number} options.radius radius of the circle * @param {string} options.fillColor ol color for the circle fill style * @param {boolean} options.applyToPolygon tells if this style can be applied to a polygon - * @return {ol.style.Style} style of the point + * @return {Style} style of the point */ -const lastPointOfPolylineStyle = ({radius = 5, fillColor = 'red', applyToPolygon = false} = {}) => new ol.style.Style({ - image: new ol.style.Circle({ +export const lastPointOfPolylineStyle = ({radius = 5, fillColor = 'red', applyToPolygon = false} = {}) => new Style({ + image: new CircleStyle({ radius, - fill: new ol.style.Fill({ + fill: new Fill({ color: fillColor }) }), @@ -159,14 +184,14 @@ const lastPointOfPolylineStyle = ({radius = 5, fillColor = 'red', applyToPolygon return null; } let coordinates = type === "Polygon" ? geom.getCoordinates()[0] : geom.getCoordinates(); - return new ol.geom.Point(coordinates.length > 3 ? coordinates[coordinates.length - (type === "Polygon" ? 2 : 1)] : last(coordinates)); + return new Point(coordinates.length > 3 ? coordinates[coordinates.length - (type === "Polygon" ? 2 : 1)] : last(coordinates)); } }); /** creates styles to highlight/customize start and end point of a polyline */ -const addDefaultStartEndPoints = (styles = [], startPointOptions = {radius: 3, fillColor: "green", applyToPolygon: true}, endPointOptions = {radius: 3, fillColor: "red", applyToPolygon: true}) => { +export const addDefaultStartEndPoints = (styles = [], startPointOptions = {radius: 3, fillColor: "green", applyToPolygon: true}, endPointOptions = {radius: 3, fillColor: "red", applyToPolygon: true}) => { let points = []; if (!find(styles, s => s.geometry === "startPoint" && s.filtering)) { points.push(firstPointOfPolylineStyle({...startPointOptions})); @@ -177,13 +202,13 @@ const addDefaultStartEndPoints = (styles = [], startPointOptions = {radius: 3, f return points; }; -const centerPoint = (feature) => { +export const centerPoint = (feature) => { const geometry = feature.getGeometry(); const extent = geometry.getExtent(); let center = geometry.getCenter && geometry.getCenter() || [extent[2] - extent[0], extent[3] - extent[1]]; - return new ol.geom.Point(center); + return new Point(center); }; -const lineToArc = (feature) => { +export const lineToArc = (feature) => { const type = feature.getGeometry().getType(); if (type === "LineString" || type === "MultiPoint") { let coordinates = feature.getGeometry().getCoordinates(); @@ -191,25 +216,25 @@ const lineToArc = (feature) => { const point = reproject(c, "EPSG:3857", "EPSG:4326"); return [point.x, point .y]; })); - return new ol.geom.LineString(coordinates.map(c => { + return new LineString(coordinates.map(c => { const point = reproject(c, "EPSG:4326", "EPSG:3857"); return [point.x, point .y]; })); } return feature.getGeometry(); }; -const startPoint = (feature) => { +export const startPoint = (feature) => { const geom = feature.getGeometry(); const type = geom.getType(); let coordinates = type === "Polygon" ? geom.getCoordinates()[0] : geom.getCoordinates(); - return coordinates.length > 1 ? new ol.geom.Point(head(coordinates)) : null; + return coordinates.length > 1 ? new Point(head(coordinates)) : null; }; -const endPoint = (feature) => { +export const endPoint = (feature) => { const geom = feature.getGeometry(); const type = geom.getType(); let coordinates = type === "Polygon" ? geom.getCoordinates()[0] : geom.getCoordinates(); - return new ol.geom.Point(coordinates.length > 3 ? coordinates[coordinates.length - (type === "Polygon" ? 2 : 1)] : last(coordinates)); + return new Point(coordinates.length > 3 ? coordinates[coordinates.length - (type === "Polygon" ? 2 : 1)] : last(coordinates)); }; registerGeometryFunctions("centerPoint", centerPoint, "Point"); @@ -220,7 +245,7 @@ registerGeometryFunctions("endPoint", endPoint, "Point"); /** if a geom expression is present then return the corresponding function */ -const getGeometryTrasformation = (style = {}) => { +export const getGeometryTrasformation = (style = {}) => { return style.geometry ? // then parse the geom_expression and return true or false (feature) => { @@ -229,14 +254,14 @@ const getGeometryTrasformation = (style = {}) => { } : (f) => f.getGeometry(); }; -const getFilter = (style = {}) => { +export const getFilter = (style = {}) => { return !isNil(style.filtering) ? // then parse the filter_expression and return true or false style.filtering : true; // if no filter is defined, it returns true }; -const parseStyleToOl = (feature = {properties: {}}, style = {}, tempStyles = []) => { +export const parseStyleToOl = (feature = {properties: {}}, style = {}, tempStyles = []) => { const filtering = getFilter(style, feature); if (filtering) { const stroke = getStrokeStyle(style); @@ -259,7 +284,7 @@ const parseStyleToOl = (feature = {properties: {}}, style = {}, tempStyles = []) const zIndex = style.zIndex; // if filter is defined and true (default value) - const finalStyle = new ol.style.Style({ + const finalStyle = new Style({ geometry: getGeometryTrasformation(style), image, text, @@ -269,12 +294,12 @@ const parseStyleToOl = (feature = {properties: {}}, style = {}, tempStyles = []) }); return [finalStyle].concat(feature && feature.properties && feature.properties.canEdit && !feature.properties.isCircle ? addDefaultStartEndPoints(tempStyles) : []); } - return new ol.style.Style({}); + return new Style({}); // if not do not return anything }; -const parseStyles = (feature = {properties: {}}) => { +export const parseStyles = (feature = {properties: {}}) => { let styles = feature.style; if (styles) { let tempStyles = isArray(styles) ? styles : castArray(styles); @@ -285,24 +310,23 @@ const parseStyles = (feature = {properties: {}}) => { return []; }; -/* importing legacy functions, do not use them if possible */ -module.exports = { - getStyle: require('./LegacyVectorStyle').getStyle, - getMarkerStyleLegacy: require('./LegacyVectorStyle').getMarkerStyle, - startEndPolylineStyle: require('./LegacyVectorStyle').startEndPolylineStyle, - defaultStyles: require('./LegacyVectorStyle').defaultStyles, - getCircleStyle, - getMarkerStyle, - getStrokeStyle, - getFillStyle, - getTextStyle, - firstPointOfPolylineStyle, - lastPointOfPolylineStyle, - centerPoint, - startPoint, - endPoint, - getGeometryTrasformation, - getFilter, - parseStyleToOl, - parseStyles + +export const getStyle = (options, isDrawing = false, textValues = []) => { + if (options.style && options.style.url) { + return axios.get(options.style.url).then(response => { + return getStyleParser(options.style.format).readStyle(response.data) + .then(style => olStyleParser.writeStyle(style)); + }); + } + const style = getStyleLegacy(options, isDrawing, textValues); + if (options.asPromise) { + return new Promise((resolve) => { + resolve(style); + }); + } + return style; }; + +export const getMarkerStyleLegacy = getMarkerStyleLegacyFun; +export const startEndPolylineStyle = startEndPolylineStyleLegacy; +export const defaultStyles = defaultStylesLegacy; diff --git a/web/client/components/map/openlayers/__tests__/DrawSupport-test.jsx b/web/client/components/map/openlayers/__tests__/DrawSupport-test.jsx index 15a414c3b1..e554eea8cc 100644 --- a/web/client/components/map/openlayers/__tests__/DrawSupport-test.jsx +++ b/web/client/components/map/openlayers/__tests__/DrawSupport-test.jsx @@ -5,23 +5,26 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -const ReactDOM = require('react-dom'); -const expect = require('expect'); -const ol = require('openlayers'); -const assign = require('object-assign'); -const DrawSupport = require('../DrawSupport'); -const {DEFAULT_ANNOTATIONS_STYLES} = require('../../../../utils/AnnotationsUtils'); -const {circle, geomCollFeature} = require('../../../../test-resources/drawsupport/features'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import expect from 'expect'; +import assign from 'object-assign'; +import DrawSupport from '../DrawSupport'; +import {DEFAULT_ANNOTATIONS_STYLES} from '../../../../utils/AnnotationsUtils'; +import {circle, geomCollFeature} from '../../../../test-resources/drawsupport/features'; + +import {Map, View, Feature} from 'ol'; +import {Point, Circle, Polygon, LineString, MultiLineString} from 'ol/geom'; +import Collection from 'ol/Collection'; const viewOptions = { projection: 'EPSG:3857', center: [0, 0], zoom: 5 }; -let olMap = new ol.Map({ +let olMap = new Map({ target: "map", - view: new ol.View(viewOptions) + view: new View(viewOptions) }); olMap.disableEventListener = () => {}; @@ -77,9 +80,9 @@ describe('Test DrawSupport', () => { afterEach((done) => { document.body.innerHTML = ''; - olMap = new ol.Map({ + olMap = new Map({ target: "map", - view: new ol.View(viewOptions) + view: new View(viewOptions) }); olMap.disableEventListener = () => {}; @@ -226,8 +229,8 @@ describe('Test DrawSupport', () => { , document.getElementById("container")); - const feature = new ol.Feature({ - geometry: new ol.geom.Point(13.0, 43.0), + const feature = new Feature({ + geometry: new Point(13.0, 43.0), name: 'My Point' }); support.selectInteraction.dispatchEvent({ @@ -256,8 +259,8 @@ describe('Test DrawSupport', () => { ReactDOM.render( , document.getElementById("container")); - const feature = new ol.Feature({ - geometry: new ol.geom.Point(13.0, 43.0), + const feature = new Feature({ + geometry: new Point(13.0, 43.0), name: 'My Point' }); support.translateInteraction.dispatchEvent({ @@ -372,8 +375,8 @@ describe('Test DrawSupport', () => { }) }) }; - const feature = new ol.Feature({ - geometry: new ol.geom.Point(13.0, 43.0), + const feature = new Feature({ + geometry: new Point(13.0, 43.0), name: 'My Point' }); const spyEnd = expect.spyOn(testHandlers, "onEndDrawing"); @@ -410,8 +413,8 @@ describe('Test DrawSupport', () => { }) }) }; - const feature = new ol.Feature({ - geometry: new ol.geom.Circle([13.0, 43.0], 100), + const feature = new Feature({ + geometry: new Circle([13.0, 43.0], 100), name: 'My Point' }); const spyEnd = expect.spyOn(testHandlers, "onEndDrawing"); @@ -451,8 +454,8 @@ describe('Test DrawSupport', () => { }) }) }; - const feature = new ol.Feature({ - geometry: new ol.geom.Point(13.0, 43.0), + const feature = new Feature({ + geometry: new Point(13.0, 43.0), name: 'My Point' }); const spyEnd = expect.spyOn(testHandlers, "onEndDrawing"); @@ -1151,8 +1154,8 @@ describe('Test DrawSupport', () => { 'name': "some name" } }; - const feature = new ol.Feature({ - geometry: new ol.geom.Point(13.0, 43.0), + const feature = new Feature({ + geometry: new Point(13.0, 43.0), name: 'My Point' }); const spyEnd = expect.spyOn(testHandlers, "onEndDrawing"); @@ -1205,8 +1208,8 @@ describe('Test DrawSupport', () => { 'name': "some name" } }; - const feature = new ol.Feature({ - geometry: new ol.geom.Point(13.0, 43.0), + const feature = new Feature({ + geometry: new Point(13.0, 43.0), name: 'My Point' }); const spyEnd = expect.spyOn(testHandlers, "onEndDrawing"); @@ -1346,8 +1349,8 @@ describe('Test DrawSupport', () => { }) }; - const simplifiedCircle = new ol.Feature({ - geometry: new ol.geom.Polygon([[ + const simplifiedCircle = new Feature({ + geometry: new Polygon([[ [1260844.6064174946, 5858067.29727681], [1260960.7874218025, 5857951.114737838], [1260844.6064174946, 5857834.9352681665], @@ -1739,8 +1742,8 @@ describe('Test DrawSupport', () => { const radius = 1000; support.drawInteraction.dispatchEvent({ type: 'drawend', - feature: new ol.Feature({ - geometry: new ol.geom.Circle(center, radius) + feature: new Feature({ + geometry: new Circle(center, radius) }) }); const drawOwner = null; @@ -1782,8 +1785,8 @@ describe('Test DrawSupport', () => { const coordinate = [1300, 4300]; support.drawInteraction.dispatchEvent({ type: 'drawend', - feature: new ol.Feature({ - geometry: new ol.geom.Point(coordinate) + feature: new Feature({ + geometry: new Point(coordinate) }) }); const drawOwner = null; @@ -1824,8 +1827,8 @@ describe('Test DrawSupport', () => { expect(support).toExist(); support.drawInteraction.dispatchEvent({ type: 'drawend', - feature: new ol.Feature({ - geometry: new ol.geom.Polygon([[[1300, 4300], [8, 9], [8, 59]]]) + feature: new Feature({ + geometry: new Polygon([[[1300, 4300], [8, 9], [8, 59]]]) }) }); const drawOwner = null; @@ -1865,8 +1868,8 @@ describe('Test DrawSupport', () => { expect(support).toExist(); support.drawInteraction.dispatchEvent({ type: 'drawend', - feature: new ol.Feature({ - geometry: new ol.geom.LineString([[1300, 4300], [8, 9], [8, 59]]) + feature: new Feature({ + geometry: new LineString([[1300, 4300], [8, 9], [8, 59]]) }) }); const drawOwner = null; @@ -1905,8 +1908,8 @@ describe('Test DrawSupport', () => { const radius = 1000; support.drawInteraction.dispatchEvent({ type: 'drawend', - feature: new ol.Feature({ - geometry: new ol.geom.Circle(center, radius) + feature: new Feature({ + geometry: new Circle(center, radius) }) }); expect(spyOnGeometryChanged).toHaveBeenCalled(); @@ -1941,8 +1944,8 @@ describe('Test DrawSupport', () => { expect(support).toExist(); support.drawInteraction.dispatchEvent({ type: 'drawend', - feature: new ol.Feature({ - geometry: new ol.geom.MultiLineString([[[1300, 4300], [8, 9], [8, 59]]]) + feature: new Feature({ + geometry: new MultiLineString([[[1300, 4300], [8, 9], [8, 59]]]) }) }); expect(spyOnGeometryChanged).toHaveBeenCalled(); @@ -1976,8 +1979,8 @@ describe('Test DrawSupport', () => { expect(support).toExist(); support.drawInteraction.dispatchEvent({ type: 'drawend', - feature: new ol.Feature({ - geometry: new ol.geom.Point([1300, 4300]) + feature: new Feature({ + geometry: new Point([1300, 4300]) }) }); expect(spyOnGeometryChanged).toHaveBeenCalled(); @@ -2008,8 +2011,8 @@ describe('Test DrawSupport', () => { } }); expect(support).toExist(); - const feature = new ol.Feature({ - geometry: new ol.geom.Point(13.0, 43.0), + const feature = new Feature({ + geometry: new Point(13.0, 43.0), name: 'My Point' }); support.selectInteraction.dispatchEvent({ @@ -2037,9 +2040,9 @@ describe('Test DrawSupport', () => { const radius = 1000; support.modifyInteraction.dispatchEvent({ type: 'modifyend', - features: new ol.Collection( - [new ol.Feature({ - geometry: new ol.geom.Circle(center, radius) + features: new Collection( + [new Feature({ + geometry: new Circle(center, radius) })] ) }); @@ -2070,9 +2073,9 @@ describe('Test DrawSupport', () => { const radius = 1000; support.modifyInteraction.dispatchEvent({ type: 'modifyend', - features: new ol.Collection( - [new ol.Feature({ - geometry: new ol.geom.Circle(center, radius) + features: new Collection( + [new Feature({ + geometry: new Circle(center, radius) })] ) }); diff --git a/web/client/components/map/openlayers/__tests__/Feature-test.jsx b/web/client/components/map/openlayers/__tests__/Feature-test.jsx index 5781f19edc..c4b3b218db 100644 --- a/web/client/components/map/openlayers/__tests__/Feature-test.jsx +++ b/web/client/components/map/openlayers/__tests__/Feature-test.jsx @@ -5,14 +5,17 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -const ReactDOM = require('react-dom'); -const ol = require('openlayers'); -const Feature = require('../Feature.jsx'); -const expect = require('expect'); -require('../../../../utils/openlayers/Layers'); -const {DEFAULT_ANNOTATIONS_STYLES} = require('../../../../utils/AnnotationsUtils'); -require('../plugins/VectorLayer'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import expect from 'expect'; +import Feature from '../Feature'; +import '../../../../utils/openlayers/Layers'; +import {DEFAULT_ANNOTATIONS_STYLES} from '../../../../utils/AnnotationsUtils'; +import '../plugins/VectorLayer'; + +import { Map, View } from 'ol'; +import VectorSource from 'ol/source/Vector'; +import VectorLayer from 'ol/layer/Vector'; describe('Test Feature', () => { document.body.innerHTML = '
'; @@ -20,16 +23,11 @@ describe('Test Feature', () => { beforeEach((done) => { document.body.innerHTML = '
'; - map = new ol.Map({ + map = new Map({ layers: [ ], - controls: ol.control.defaults({ - attributionOptions: /** @type {olx.control.AttributionOptions} */ { - collapsible: false - } - }), target: 'map', - view: new ol.View({ + view: new View({ center: [0, 0], zoom: 5 }) @@ -73,11 +71,11 @@ describe('Test Feature', () => { ] } }; - const source = new ol.source.Vector({ + const source = new VectorSource({ features: [] }); const msId = "some value"; - let container = new ol.layer.Vector({ + let container = new VectorLayer({ msId, source: source, visible: true, @@ -126,11 +124,11 @@ describe('Test Feature', () => { ] } }; - const source = new ol.source.Vector({ + const source = new VectorSource({ features: [] }); const msId = "some value"; - let container = new ol.layer.Vector({ + let container = new VectorLayer({ msId, source: source, visible: true, @@ -189,11 +187,11 @@ describe('Test Feature', () => { ] } }; - const source = new ol.source.Vector({ + const source = new VectorSource({ features: [] }); const msId = "some value"; - let container = new ol.layer.Vector({ + let container = new VectorLayer({ msId, source: source, visible: true, @@ -290,10 +288,10 @@ describe('Test Feature', () => { ] } }; - const source = new ol.source.Vector({ + const source = new VectorSource({ features: [] }); - let container = new ol.layer.Vector({ + let container = new VectorLayer({ source: source, visible: true, zIndex: 1 @@ -402,11 +400,11 @@ describe('Test Feature', () => { ] } }; - const source = new ol.source.Vector({ + const source = new VectorSource({ features: [] }); const msId = "some value"; - let container = new ol.layer.Vector({ + let container = new VectorLayer({ msId, source: source, visible: true, diff --git a/web/client/components/map/openlayers/__tests__/HighlightFeatureSupport-test.jsx b/web/client/components/map/openlayers/__tests__/HighlightFeatureSupport-test.jsx index f4825543f4..13dcdcfdbb 100644 --- a/web/client/components/map/openlayers/__tests__/HighlightFeatureSupport-test.jsx +++ b/web/client/components/map/openlayers/__tests__/HighlightFeatureSupport-test.jsx @@ -6,11 +6,18 @@ * LICENSE file in the root directory of this source tree. */ -const expect = require('expect'); -const React = require('react'); -const ReactDOM = require('react-dom'); -let ol = require('openlayers'); -const HighlightFeatureSupport = require('../HighlightFeatureSupport'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import expect from 'expect'; + +import HighlightFeatureSupport from '../HighlightFeatureSupport'; + +import GeoJSON from 'ol/format/GeoJSON'; + +import { Map, View } from 'ol'; + +import VectorSource from 'ol/source/Vector'; +import VectorLayer from 'ol/layer/Vector'; let createVectorLayer = function(options) { let features; @@ -19,14 +26,14 @@ let createVectorLayer = function(options) { if (Array.isArray(options.features)) { featureCollection = { "type": "FeatureCollection", features: featureCollection}; } - features = (new ol.format.GeoJSON()).readFeatures(featureCollection); + features = (new GeoJSON()).readFeatures(featureCollection); features.forEach((f) => f.getGeometry().transform('EPSG:4326', options.crs || 'EPSG:3857')); } - const source = new ol.source.Vector({ + const source = new VectorSource({ features: features }); - return new ol.layer.Vector({ + return new VectorLayer({ msId: options.id, source: source, zIndex: options.zIndex @@ -72,9 +79,9 @@ describe('HighlightFeatureSupport Ol', () => { center: [0, 0], zoom: 5 }; - var map = new ol.Map({ + var map = new Map({ target: "map", - view: new ol.View(viewOptions) + view: new View(viewOptions) }); let vector = createVectorLayer(layer); map.addLayer(vector); diff --git a/web/client/components/map/openlayers/__tests__/Layer-test.jsx b/web/client/components/map/openlayers/__tests__/Layer-test.jsx index 1d8ee8d04d..c39ea21ea5 100644 --- a/web/client/components/map/openlayers/__tests__/Layer-test.jsx +++ b/web/client/components/map/openlayers/__tests__/Layer-test.jsx @@ -5,25 +5,33 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -var React = require('react'); -var ReactDOM = require('react-dom'); -var ol = require('openlayers'); -var OpenlayersLayer = require('../Layer.jsx'); -var expect = require('expect'); -var assign = require('object-assign'); -require('../../../../utils/openlayers/Layers'); -require('../plugins/OSMLayer'); -require('../plugins/WMSLayer'); -require('../plugins/WMTSLayer'); -require('../plugins/GoogleLayer'); -require('../plugins/BingLayer'); -require('../plugins/MapQuest'); -require('../plugins/VectorLayer'); -require('../plugins/GraticuleLayer'); -require('../plugins/OverlayLayer'); - -const SecurityUtils = require('../../../../utils/SecurityUtils'); -const ConfigUtils = require('../../../../utils/ConfigUtils'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import expect from 'expect'; +import OpenlayersLayer from '../Layer'; + +import assign from 'object-assign'; +import '../../../../utils/openlayers/Layers'; +import '../plugins/OSMLayer'; +import '../plugins/WMSLayer'; +import '../plugins/WMTSLayer'; +import '../plugins/GoogleLayer'; +import '../plugins/BingLayer'; +import '../plugins/MapQuest'; +import '../plugins/VectorLayer'; +import '../plugins/GraticuleLayer'; +import '../plugins/OverlayLayer'; + +import SecurityUtils from '../../../../utils/SecurityUtils'; +import ConfigUtils from '../../../../utils/ConfigUtils'; + +import { Map, View } from 'ol'; +import { defaults as defaultControls } from 'ol/control'; + +import axios from "../../../../libs/ajax"; +import MockAdapter from "axios-mock-adapter"; + +let mockAxios; const sampleTileMatrixConfig900913 = { "matrixIds": { @@ -150,17 +158,18 @@ describe('Openlayers layer', () => { let map; beforeEach(() => { + mockAxios = new MockAdapter(axios); document.body.innerHTML = '
'; - map = new ol.Map({ + map = new Map({ layers: [ ], - controls: ol.control.defaults({ - attributionOptions: /** @type {olx.control.AttributionOptions} */ { + controls: defaultControls({ + attributionOptions: { collapsible: false } }), target: 'map', - view: new ol.View({ + view: new View({ center: [0, 0], zoom: 5 }) @@ -168,6 +177,7 @@ describe('Openlayers layer', () => { }); afterEach(() => { + mockAxios.restore(); map.setTarget(null); document.body.innerHTML = ''; }); @@ -270,6 +280,151 @@ describe('Openlayers layer', () => { expect(map.getLayers().item(0).getSource().getAttributions()).toNotExist(); }); + it('test wms vector formats', () => { + const options = { + "type": 'wms', + "visibility": true, + "name": 'osm:vector_tile', + "group": 'Vector', + "url": "http://sample.server/geoserver/wms" + }; + + let layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(map.getLayers().getLength()).toBe(1); + expect(layer.layer.getType()).toBe('VECTOR_TILE'); + expect(layer.layer.getSource().format_.constructor.name).toBe('GeoJSON'); + + layer = ReactDOM.render(, document.getElementById("container")); + expect(layer).toExist(); + expect(map.getLayers().getLength()).toBe(1); + expect(layer.layer.getType()).toBe('VECTOR_TILE'); + expect(layer.layer.getSource().format_.constructor.name).toBe('MVT'); + + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(map.getLayers().getLength()).toBe(1); + expect(layer.layer.getType()).toBe('VECTOR_TILE'); + expect(layer.layer.getSource().format_.constructor.name).toBe('TopoJSON'); + }); + + it('test wms vector formats styles are applied', (done) => { + const options = { + "type": 'wms', + "visibility": true, + "name": 'osm:vector_tile', + "group": 'Vector', + "url": "http://sample.server/geoserver/wms", + "vectorStyle": { + "color": "#ff0000", + "fillColor": "#ffff00", + "fillOpacity": 0.5 + } + }; + + let layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(map.getLayers().getLength()).toBe(1); + expect(layer.layer.getType()).toBe('VECTOR_TILE'); + expect(layer.layer.getSource().format_.constructor.name).toBe('GeoJSON'); + setTimeout(() => { + const style = layer.layer.getStyle(); + expect(style).toExist(); + expect(style.getStroke().getColor()).toBe('rgb(255, 0, 0)'); + expect(style.getFill().getColor()).toBe('rgba(255, 255, 0, 0.5)'); + done(); + }, 0); + }); + + it('test wms vector formats remote styles are applied', (done) => { + const SLD = ` + + + Simple Polygon + + Simple Polygon + + + + + #FF0000 + 2 + + + #FFFF00 + 0.5 + + + + + + + `; + mockAxios.onGet().reply(200, SLD); + const options = { + "type": 'wms', + "visibility": true, + "name": 'osm:vector_tile', + "group": 'Vector', + "url": "http://sample.server/geoserver/wms", + "vectorStyle": { + "url": "http://mystyle", + "format": "sld" + } + }; + let layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(map.getLayers().getLength()).toBe(1); + expect(layer.layer.getType()).toBe('VECTOR_TILE'); + expect(layer.layer.getSource().format_.constructor.name).toBe('GeoJSON'); + setTimeout(() => { + const style = layer.layer.getStyle(); + expect(style).toExist(); + expect(style.getStroke().getColor()).toBe('#FF0000'); + expect(style.getFill().getColor()).toBe('rgba(255, 255, 0, 0.5)'); + done(); + }, 0); + }); + it('wms layer attribution with credits - create and update layer', () => { const TEXT1 = "some attribution"; const TEXT2 = "some other attibution"; @@ -294,13 +449,12 @@ describe('Openlayers layer', () => { , document.getElementById("container")); - expect(layer).toExist(); // check creation expect(map.getLayers().getLength()).toBe(1); expect(map.getLayers().item(0).getSource().urls.length).toBe(1); expect(map.getLayers().item(0).getSource().getAttributions()).toExist(); - expect(map.getLayers().item(0).getSource().getAttributions()[0].getHTML()).toBe(TEXT1); + expect(map.getLayers().item(0).getSource().getAttributions()()[0]).toBe(TEXT1); // check remove ReactDOM.render( { , document.getElementById("container")); expect(map.getLayers().item(0).getSource().getAttributions()).toExist(); - expect(map.getLayers().item(0).getSource().getAttributions()[0].getHTML()).toBe(TEXT2); + expect(map.getLayers().item(0).getSource().getAttributions()()[0]).toBe(TEXT2); // check content update ReactDOM.render( , document.getElementById("container")); expect(map.getLayers().item(0).getSource().getAttributions()).toExist(); - expect(map.getLayers().item(0).getSource().getAttributions()[0].getHTML()).toBe(TEXT1); + expect(map.getLayers().item(0).getSource().getAttributions()()[0]).toBe(TEXT1); // check complex contents ReactDOM.render( , document.getElementById("container")); expect(map.getLayers().item(0).getSource().getAttributions()).toExist(); - expect(map.getLayers().item(0).getSource().getAttributions()[0].getHTML()).toBe(''); + expect(map.getLayers().item(0).getSource().getAttributions()()[0]).toBe(''); }); it('creates a wms elevation layer for openlayers map', () => { @@ -1702,4 +1856,140 @@ describe('Openlayers layer', () => { expect(layer.layer.getSource().getParams().CQL_FILTER).toBe("((\"prop2\" = 'value2')) AND (prop = 'value')"); }); + + + it('test wmts vector formats', () => { + + const options = { + type: 'wmts', + visibility: true, + name: 'osm:vector_tile', + group: 'Vector', + tileMatrixSet: [ + { + 'TileMatrix': [], + 'ows:Identifier': 'EPSG:900913', + 'ows:SupportedCRS': 'urn:ogc:def:crs:EPSG::900913' + } + ], + url: 'http://sample.server/geoserver/gwc/service/wmts' + }; + + const GeoJSON = 'application/json;type=geojson'; + let layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(map.getLayers().getLength()).toBe(1); + expect(layer.layer.getType()).toBe('VECTOR_TILE'); + expect(layer.layer.getSource().format_.constructor.name).toBe('GeoJSON'); + + + const MVT = 'application/vnd.mapbox-vector-tile'; + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(map.getLayers().getLength()).toBe(1); + expect(layer.layer.getType()).toBe('VECTOR_TILE'); + expect(layer.layer.getSource().format_.constructor.name).toBe('MVT'); + + const TopoJSON = 'application/json;type=topojson'; + layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(map.getLayers().getLength()).toBe(1); + expect(layer.layer.getType()).toBe('VECTOR_TILE'); + expect(layer.layer.getSource().format_.constructor.name).toBe('TopoJSON'); + + }); + + it('test render a wfs3 layer', () => { + + const options = { + id: 'layer_id', + name: 'layer_name', + title: 'Layer Title', + type: 'wfs3', + visibility: true, + url: '/geoserver/wfs3/collections/layer_name/tiles/{tilingSchemeId}/{level}/{row}/{col}', + format: 'application/vnd.mapbox-vector-tile', + tilingScheme: '/geoserver/wfs3/collections/layer_name/tiles/{tilingSchemeId}', + tilingSchemes: { + url: '/geoserver/wfs3/collections/layer_name/tiles', + schemes: [ + { + type: 'TileMatrixSet', + identifier: 'GoogleMapsCompatible', + title: 'GoogleMapsCompatible', + supportedCRS: 'EPSG:3857', + tileMatrix: [{ + matrixHeight: 1, + matrixWidth: 1, + tileHeight: 256, + tileWidth: 256, + identifier: '0', + scaleDenominator: 559082263.9508929, + topLeftCorner: [ + -20037508.34, + 20037508 + ], + type: 'TileMatrix' + }], + boundingBox: { + crs: 'http://www.opengis.net/def/crs/EPSG/0/3857', + lowerCorner: [ + -20037508.34, + -20037508.34 + ], + upperCorner: [ + 20037508.34, + 20037508.34 + ], + type: 'BoundingBox' + }, + wellKnownScaleSet: 'http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible' + } + ] + }, + bbox: { + crs: 'EPSG:4326', + bounds: { + minx: -156.2575, + miny: -90, + maxx: 123.33333333333333, + maxy: 46.5475 + } + }, + allowedSRS: { + 'EPSG:3857': true + } + }; + + let layer = ReactDOM.render(, document.getElementById("container")); + + expect(layer).toExist(); + expect(map.getLayers().getLength()).toBe(1); + expect(layer.layer.getType()).toBe('VECTOR_TILE'); + expect(layer.layer.getSource().format_.constructor.name).toBe('MVT'); + }); }); diff --git a/web/client/components/map/openlayers/__tests__/LegacyVectorStyle-test.js b/web/client/components/map/openlayers/__tests__/LegacyVectorStyle-test.js index 06c5175a89..0cc3f631e1 100644 --- a/web/client/components/map/openlayers/__tests__/LegacyVectorStyle-test.js +++ b/web/client/components/map/openlayers/__tests__/LegacyVectorStyle-test.js @@ -5,11 +5,15 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const expect = require('expect'); -const LegacyVectorStyle = require('../LegacyVectorStyle'); -const ol = require('openlayers'); -const {geomCollFeature} = require('../../../../test-resources/drawsupport/features'); -const {DEFAULT_ANNOTATIONS_STYLES} = require('../../../../utils/AnnotationsUtils'); +import expect from 'expect'; +import { getStyle, styleFunction, firstPointOfPolylineStyle, lastPointOfPolylineStyle, startEndPolylineStyle } from '../LegacyVectorStyle'; + +import {geomCollFeature} from '../../../../test-resources/drawsupport/features'; +import {DEFAULT_ANNOTATIONS_STYLES} from '../../../../utils/AnnotationsUtils'; + +import Feature from 'ol/Feature'; +import {Point, LineString, MultiLineString, Polygon, MultiPolygon} from 'ol/geom'; +import GeometryCollection from 'ol/geom/GeometryCollection'; describe('Test LegacyVectorStyle', () => { beforeEach((done) => { @@ -23,7 +27,7 @@ describe('Test LegacyVectorStyle', () => { }); it('simple point style', () => { - const style = LegacyVectorStyle.getStyle({ + const style = getStyle({ style: { type: 'Point', "Point": { @@ -36,7 +40,7 @@ describe('Test LegacyVectorStyle', () => { }); it('style name', () => { - const style = LegacyVectorStyle.getStyle({ + const style = getStyle({ type: 'Point', iconUrl: 'myurl' }); @@ -51,7 +55,7 @@ describe('Test LegacyVectorStyle', () => { }, name: 'My Point' }; - const style = LegacyVectorStyle.getStyle({ + const style = getStyle({ features: [feature], style: { radius: 10, @@ -65,13 +69,13 @@ describe('Test LegacyVectorStyle', () => { it('test styleFunction with LineString', () => { - const lineString = new ol.Feature({ - geometry: new ol.geom.LineString([ + const lineString = new Feature({ + geometry: new LineString([ [100.0, 0.0], [101.0, 1.0] ]) }); - let olStyle = LegacyVectorStyle.styleFunction(lineString); + let olStyle = styleFunction(lineString); let olStroke = olStyle[0].getStroke(); expect(olStroke.getColor()).toBe('blue'); @@ -84,7 +88,7 @@ describe('Test LegacyVectorStyle', () => { } }; - olStyle = LegacyVectorStyle.styleFunction(lineString, options); + olStyle = styleFunction(lineString, options); olStroke = olStyle[0].getStroke(); expect(olStroke.getColor()).toBe('#3388ff'); @@ -101,7 +105,7 @@ describe('Test LegacyVectorStyle', () => { } }; - olStyle = LegacyVectorStyle.styleFunction(lineString, optionsWithFeatureType); + olStyle = styleFunction(lineString, optionsWithFeatureType); olStroke = olStyle[0].getStroke(); expect(olStroke.getColor()).toBe('#ffaa33'); @@ -111,14 +115,14 @@ describe('Test LegacyVectorStyle', () => { it('test styleFunction with MultiLineString', () => { - const multiLineString = new ol.Feature({ - geometry: new ol.geom.MultiLineString([ + const multiLineString = new Feature({ + geometry: new MultiLineString([ [ [100.0, 0.0], [101.0, 1.0] ], [ [102.0, 2.0], [103.0, 3.0] ] ]) }); - let olStyle = LegacyVectorStyle.styleFunction(multiLineString); + let olStyle = styleFunction(multiLineString); let olStroke = olStyle[0].getStroke(); expect(olStroke.getColor()).toBe('blue'); @@ -131,7 +135,7 @@ describe('Test LegacyVectorStyle', () => { } }; - olStyle = LegacyVectorStyle.styleFunction(multiLineString, options); + olStyle = styleFunction(multiLineString, options); olStroke = olStyle[0].getStroke(); expect(olStroke.getColor()).toBe('#3388ff'); @@ -148,7 +152,7 @@ describe('Test LegacyVectorStyle', () => { } }; - olStyle = LegacyVectorStyle.styleFunction(multiLineString, optionsWithFeatureType); + olStyle = styleFunction(multiLineString, optionsWithFeatureType); olStroke = olStyle[0].getStroke(); expect(olStroke.getColor()).toBe('#ffaa33'); @@ -158,13 +162,13 @@ describe('Test LegacyVectorStyle', () => { it('test styleFunction with Polygon', () => { - const polygon = new ol.Feature({ - geometry: new ol.geom.Polygon([ + const polygon = new Feature({ + geometry: new Polygon([ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ]) }); - let olStyle = LegacyVectorStyle.styleFunction(polygon); + let olStyle = styleFunction(polygon); let olFill = olStyle[0].getFill(); let olStroke = olStyle[0].getStroke(); @@ -183,7 +187,7 @@ describe('Test LegacyVectorStyle', () => { } }; - olStyle = LegacyVectorStyle.styleFunction(polygon, options); + olStyle = styleFunction(polygon, options); olFill = olStyle[0].getFill(); olStroke = olStyle[0].getStroke(); @@ -208,7 +212,7 @@ describe('Test LegacyVectorStyle', () => { } }; - olStyle = LegacyVectorStyle.styleFunction(polygon, optionsWithFeatureType); + olStyle = styleFunction(polygon, optionsWithFeatureType); olFill = olStyle[0].getFill(); olStroke = olStyle[0].getStroke(); @@ -221,8 +225,8 @@ describe('Test LegacyVectorStyle', () => { it('test styleFunction with MultiPolygon', () => { - const multiPolygon = new ol.Feature({ - geometry: new ol.geom.MultiPolygon([ + const multiPolygon = new Feature({ + geometry: new MultiPolygon([ [ [ [102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0] ] ], @@ -233,7 +237,7 @@ describe('Test LegacyVectorStyle', () => { ]) }); - let olStyle = LegacyVectorStyle.styleFunction(multiPolygon); + let olStyle = styleFunction(multiPolygon); let olFill = olStyle[0].getFill(); let olStroke = olStyle[0].getStroke(); @@ -252,7 +256,7 @@ describe('Test LegacyVectorStyle', () => { } }; - olStyle = LegacyVectorStyle.styleFunction(multiPolygon, options); + olStyle = styleFunction(multiPolygon, options); olFill = olStyle[0].getFill(); olStroke = olStyle[0].getStroke(); @@ -277,7 +281,7 @@ describe('Test LegacyVectorStyle', () => { } }; - olStyle = LegacyVectorStyle.styleFunction(multiPolygon, optionsWithFeatureType); + olStyle = styleFunction(multiPolygon, optionsWithFeatureType); olFill = olStyle[0].getFill(); olStroke = olStyle[0].getStroke(); @@ -289,31 +293,31 @@ describe('Test LegacyVectorStyle', () => { }); it('test firstPointOfPolylineStyle defaults', () => { - let olStyle = LegacyVectorStyle.firstPointOfPolylineStyle(); + let olStyle = firstPointOfPolylineStyle(); expect(olStyle.getImage().getRadius()).toBe(5); expect(olStyle.getImage().getFill().getColor()).toBe("green"); }); it('test lastPointOfPolylineStyle defaults', () => { - let olStyle = LegacyVectorStyle.lastPointOfPolylineStyle(); + let olStyle = lastPointOfPolylineStyle(); expect(olStyle.getImage().getRadius()).toBe(5); expect(olStyle.getImage().getFill().getColor()).toBe("red"); }); it('test firstPointOfPolylineStyle {radius: 4}', () => { - let olStyle = LegacyVectorStyle.firstPointOfPolylineStyle({radius: 4}); + let olStyle = firstPointOfPolylineStyle({radius: 4}); expect(olStyle.getImage().getRadius()).toBe(4); expect(olStyle.getImage().getFill().getColor()).toBe("green"); }); it('test lastPointOfPolylineStyle {radius: 4}', () => { - let olStyle = LegacyVectorStyle.lastPointOfPolylineStyle({radius: 4}); + let olStyle = lastPointOfPolylineStyle({radius: 4}); expect(olStyle.getImage().getRadius()).toBe(4); expect(olStyle.getImage().getFill().getColor()).toBe("red"); }); it('test startEndPolylineStyle defaults', () => { - let styles = LegacyVectorStyle.startEndPolylineStyle(); + let styles = startEndPolylineStyle(); expect(styles[0].getImage().getRadius()).toBe(5); expect(styles[0].getImage().getFill().getColor()).toBe("green"); expect(styles[1].getImage().getRadius()).toBe(5); @@ -322,7 +326,7 @@ describe('Test LegacyVectorStyle', () => { it('test styleFunction with GeometryCollection', () => { - const multiPolygon = new ol.geom.MultiPolygon([ + const multiPolygon = new MultiPolygon([ [ [ [102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0] ] ], @@ -332,11 +336,11 @@ describe('Test LegacyVectorStyle', () => { ] ]); - const geometryCollection = new ol.Feature({ - geometry: new ol.geom.GeometryCollection([multiPolygon]) + const geometryCollection = new Feature({ + geometry: new GeometryCollection([multiPolygon]) }); - let olStyle = LegacyVectorStyle.styleFunction(geometryCollection); + let olStyle = styleFunction(geometryCollection); let olFill = olStyle[0].getFill(); let olStroke = olStyle[0].getStroke(); @@ -356,7 +360,7 @@ describe('Test LegacyVectorStyle', () => { } }; - olStyle = LegacyVectorStyle.styleFunction(geometryCollection, options); + olStyle = styleFunction(geometryCollection, options); olFill = olStyle[0].getFill(); olStroke = olStyle[0].getStroke(); @@ -381,7 +385,7 @@ describe('Test LegacyVectorStyle', () => { } }; - olStyle = LegacyVectorStyle.styleFunction(geometryCollection, optionsWithFeatureType); + olStyle = styleFunction(geometryCollection, optionsWithFeatureType); olFill = olStyle[0].getFill(); olStroke = olStyle[0].getStroke(); @@ -392,7 +396,7 @@ describe('Test LegacyVectorStyle', () => { }); it('test getStyle with GeometryCollection', () => { - const styleFunc = LegacyVectorStyle.getStyle({ + const styleFunc = getStyle({ features: [geomCollFeature], style: { color: "ff0000", @@ -402,11 +406,11 @@ describe('Test LegacyVectorStyle', () => { }, false, ["textValue"]); expect(styleFunc).toExist(); - const styleGenerated = styleFunc(new ol.Feature({ - geometry: new ol.geom.GeometryCollection([ - new ol.geom.LineString([[1, 2], [1, 3]]), - new ol.geom.Polygon([[1, 2], [1, 3], [1, 1], [1, 2]]), - new ol.geom.Point([1, 20]) + const styleGenerated = styleFunc(new Feature({ + geometry: new GeometryCollection([ + new LineString([[1, 2], [1, 3]]), + new Polygon([[1, 2], [1, 3], [1, 1], [1, 2]]), + new Point([1, 20]) ]) })); expect(styleGenerated).toExist(); diff --git a/web/client/components/map/openlayers/__tests__/Locate-test.jsx b/web/client/components/map/openlayers/__tests__/Locate-test.jsx index 96a5401e14..f6ee69af38 100644 --- a/web/client/components/map/openlayers/__tests__/Locate-test.jsx +++ b/web/client/components/map/openlayers/__tests__/Locate-test.jsx @@ -5,28 +5,24 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -var expect = require('expect'); -var React = require('react'); -var ReactDOM = require('react-dom'); -var ol = require('openlayers'); -var Locate = require('../Locate'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import expect from 'expect'; +import Locate from '../Locate'; + +import { Map, View } from 'ol'; describe('Openlayers Locate component', () => { let map; beforeEach((done) => { document.body.innerHTML = '
'; - map = new ol.Map({ + map = new Map({ layers: [ ], - controls: ol.control.defaults({ - attributionOptions: /** @type {olx.control.AttributionOptions} */ { - collapsible: false - } - }), target: 'map', - view: new ol.View({ + view: new View({ center: [0, 0], zoom: 5 }) diff --git a/web/client/components/map/openlayers/__tests__/Map-test.jsx b/web/client/components/map/openlayers/__tests__/Map-test.jsx index fa4c3af952..1fe5fc916c 100644 --- a/web/client/components/map/openlayers/__tests__/Map-test.jsx +++ b/web/client/components/map/openlayers/__tests__/Map-test.jsx @@ -5,18 +5,25 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -const ReactDOM = require('react-dom'); -const OpenlayersMap = require('../Map.jsx'); -const OpenlayersLayer = require('../Layer.jsx'); -const expect = require('expect'); -const assign = require('object-assign'); -const ol = require('openlayers'); -const proj = require('proj4').default; -const mapUtils = require('../../../../utils/MapUtils'); -require('../../../../utils/openlayers/Layers'); -require('../plugins/OSMLayer'); -require('../plugins/VectorLayer'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import expect from 'expect'; +import OpenlayersLayer from '../Layer'; +import OpenlayersMap from '../Map'; + +import assign from 'object-assign'; + +import proj from 'proj4'; +import MapUtils from '../../../../utils/MapUtils'; + +import '../../../../utils/openlayers/Layers'; +import '../plugins/OSMLayer'; +import '../plugins/VectorLayer'; + +import {get, transform} from 'ol/proj'; + +import Feature from 'ol/Feature'; +import {Point, Polygon} from 'ol/geom'; describe('OpenlayersMap', () => { @@ -109,7 +116,7 @@ describe('OpenlayersMap', () => { const map = ReactDOM.render(comp, document.getElementById("map")); expect(map).toExist(); expect(map.map.getView().getProjection().getCode()).toBe('EPSG:25830'); - expect(ol.proj.get('EPSG:25830')).toExist(); + expect(get('EPSG:25830')).toExist(); }); it('custom projection with axisOrientation', () => { @@ -136,8 +143,8 @@ describe('OpenlayersMap', () => { const map = ReactDOM.render(comp, document.getElementById("map")); expect(map).toExist(); expect(map.map.getView().getProjection().getCode()).toBe('EPSG:31468'); - expect(ol.proj.get('EPSG:31468')).toExist(); - expect(ol.proj.get('EPSG:31468').getAxisOrientation()).toBe('neu'); + expect(get('EPSG:31468')).toExist(); + expect(get('EPSG:31468').getAxisOrientation()).toBe('neu'); }); it('check if the handler for "click" event is called with elevation', () => { @@ -262,8 +269,8 @@ describe('OpenlayersMap', () => { setTimeout(() => { map.map.forEachFeatureAtPixel = (pixel, callback) => { callback.call(null, { - feature: new ol.Feature({ - geometry: new ol.geom.Point([10.3, 43.9]), + feature: new Feature({ + geometry: new Point([10.3, 43.9]), name: 'My Point' }), getGeometry: () => { @@ -299,8 +306,8 @@ describe('OpenlayersMap', () => { setTimeout(() => { map.map.forEachFeatureAtPixel = (pixel, callback) => { callback.call(null, { - feature: new ol.Feature({ - geometry: new ol.geom.Point([10.3, 43.9]), + feature: new Feature({ + geometry: new Point([10.3, 43.9]), name: 'My Point' }), getGeometry: () => { @@ -335,8 +342,8 @@ describe('OpenlayersMap', () => { setTimeout(() => { map.map.forEachFeatureAtPixel = (pixel, callback) => { callback.call(null, { - feature: new ol.Feature({ - geometry: new ol.geom.Polygon([ [0, 0], [0, 1], [1, 1], [1, 0], [0, 0] ]), + feature: new Feature({ + geometry: new Polygon([ [0, 0], [0, 1], [1, 1], [1, 0], [0, 0] ]), name: 'My Point' }), getGeometry: () => { @@ -375,8 +382,8 @@ describe('OpenlayersMap', () => { setTimeout(() => { map.map.forEachFeatureAtPixel = (pixel, callback) => { callback.call(null, { - feature: new ol.Feature({ - geometry: new ol.geom.Polygon([ [0, 0], [0, 1], [1, 1], [1, 0], [0, 0] ]), + feature: new Feature({ + geometry: new Polygon([ [0, 0], [0, 1], [1, 1], [1, 0], [0, 0] ]), name: 'My Point' }), getGeometry: () => { @@ -416,8 +423,8 @@ describe('OpenlayersMap', () => { setTimeout(() => { map.map.forEachFeatureAtPixel = (pixel, callback) => { callback.call(null, { - feature: new ol.Feature({ - geometry: new ol.geom.Point([43.0, 10]), + feature: new Feature({ + geometry: new Point([43.0, 10]), name: 'My Point' }), getGeometry: () => { @@ -534,7 +541,7 @@ describe('OpenlayersMap', () => { expect(spy.calls[1].arguments[3].width).toExist(); done(); }); - olMap.getView().setCenter(ol.proj.transform([10, 44], 'EPSG:4326', 'EPSG:3857')); + olMap.getView().setCenter(transform([10, 44], 'EPSG:4326', 'EPSG:3857')); olMap.dispatchEvent('moveend'); }); @@ -705,7 +712,7 @@ describe('OpenlayersMap', () => { // instanciating the map that will be used to compute the bounfing box let map = ReactDOM.render(, document.getElementById("map")); // computing the bounding box for the new center and the new zoom - const bbox = mapUtils.getBbox({y: 44, x: 10}, 5); + const bbox = MapUtils.getBbox({y: 44, x: 10}, 5); // update the map with the new center and the new zoom so we can check our computed bouding box map = ReactDOM.render(, document.getElementById("map")); const mapBbox = map.map.getView().calculateExtent(map.map.getSize()); @@ -724,10 +731,10 @@ describe('OpenlayersMap', () => { }); it('test GET_PIXEL_FROM_COORDINATES_HOOK/GET_COORDINATES_FROM_PIXEL_HOOK hook registration', () => { - mapUtils.registerHook(mapUtils.GET_PIXEL_FROM_COORDINATES_HOOK, undefined); - mapUtils.registerHook(mapUtils.GET_COORDINATES_FROM_PIXEL_HOOK, undefined); - let getPixelFromCoordinates = mapUtils.getHook(mapUtils.GET_PIXEL_FROM_COORDINATES_HOOK); - let getCoordinatesFromPixel = mapUtils.getHook(mapUtils.GET_COORDINATES_FROM_PIXEL_HOOK); + MapUtils.registerHook(MapUtils.GET_PIXEL_FROM_COORDINATES_HOOK, undefined); + MapUtils.registerHook(MapUtils.GET_COORDINATES_FROM_PIXEL_HOOK, undefined); + let getPixelFromCoordinates = MapUtils.getHook(MapUtils.GET_PIXEL_FROM_COORDINATES_HOOK); + let getCoordinatesFromPixel = MapUtils.getHook(MapUtils.GET_COORDINATES_FROM_PIXEL_HOOK); expect(getPixelFromCoordinates).toNotExist(); expect(getCoordinatesFromPixel).toNotExist(); @@ -735,13 +742,13 @@ describe('OpenlayersMap', () => { document.getElementById("map")); expect(map).toExist(); - getPixelFromCoordinates = mapUtils.getHook(mapUtils.GET_PIXEL_FROM_COORDINATES_HOOK); - getCoordinatesFromPixel = mapUtils.getHook(mapUtils.GET_COORDINATES_FROM_PIXEL_HOOK); + getPixelFromCoordinates = MapUtils.getHook(MapUtils.GET_PIXEL_FROM_COORDINATES_HOOK); + getCoordinatesFromPixel = MapUtils.getHook(MapUtils.GET_COORDINATES_FROM_PIXEL_HOOK); expect(getPixelFromCoordinates).toExist(); expect(getCoordinatesFromPixel).toExist(); }); it('test ZOOM_TO_EXTENT_HOOK', (done) => { - mapUtils.registerHook(mapUtils.ZOOM_TO_EXTENT_HOOK, undefined); + MapUtils.registerHook(MapUtils.ZOOM_TO_EXTENT_HOOK, undefined); const testHandlers = { onMapViewChanges: () => { } @@ -786,7 +793,7 @@ describe('OpenlayersMap', () => { }); expect(map).toExist(); - const hook = mapUtils.getHook(mapUtils.ZOOM_TO_EXTENT_HOOK); + const hook = MapUtils.getHook(MapUtils.ZOOM_TO_EXTENT_HOOK); expect(hook).toExist(); hook([0, 0, 20, 20], { crs: "EPSG:4326", duration: 0 }); olMap.dispatchEvent('moveend'); @@ -810,7 +817,7 @@ describe('OpenlayersMap', () => { * To avoid this, zoom to max resolution extent. * TODO: improve this to manage all degenerated bounding boxes. */ - mapUtils.registerHook(mapUtils.ZOOM_TO_EXTENT_HOOK, undefined); + MapUtils.registerHook(MapUtils.ZOOM_TO_EXTENT_HOOK, undefined); const testHandlers = { onMapViewChanges: () => { } @@ -841,7 +848,7 @@ describe('OpenlayersMap', () => { }); expect(map).toExist(); - const hook = mapUtils.getHook(mapUtils.ZOOM_TO_EXTENT_HOOK); + const hook = MapUtils.getHook(MapUtils.ZOOM_TO_EXTENT_HOOK); expect(hook).toExist(); hook([-180, -90, 180, 90], { crs: "EPSG:4326", duration: 0 }); olMap.dispatchEvent('moveend'); @@ -856,7 +863,7 @@ describe('OpenlayersMap', () => { * To avoid this, zoom to max resolution extent. * TODO: improve this to manage all degenerated bounding boxes. */ - mapUtils.registerHook(mapUtils.ZOOM_TO_EXTENT_HOOK, undefined); + MapUtils.registerHook(MapUtils.ZOOM_TO_EXTENT_HOOK, undefined); const testHandlers = { onMapViewChanges: () => { } @@ -889,7 +896,7 @@ describe('OpenlayersMap', () => { }); expect(map).toExist(); - const hook = mapUtils.getHook(mapUtils.ZOOM_TO_EXTENT_HOOK); + const hook = MapUtils.getHook(MapUtils.ZOOM_TO_EXTENT_HOOK); expect(hook).toExist(); hook([1, 1, 1, 1], { crs: "EPSG:4326", duration: 0 }); olMap.dispatchEvent('moveend'); diff --git a/web/client/components/map/openlayers/__tests__/MeasurementSupport-test.jsx b/web/client/components/map/openlayers/__tests__/MeasurementSupport-test.jsx index 08fef654f8..3a60f964bb 100644 --- a/web/client/components/map/openlayers/__tests__/MeasurementSupport-test.jsx +++ b/web/client/components/map/openlayers/__tests__/MeasurementSupport-test.jsx @@ -6,17 +6,21 @@ * LICENSE file in the root directory of this source tree. */ -const expect = require('expect'); -const React = require('react'); -const ReactDOM = require('react-dom'); -const ol = require('openlayers'); -const {round} = require('lodash'); -const MeasurementSupport = require('../MeasurementSupport'); -const { +import React from 'react'; +import ReactDOM from 'react-dom'; +import expect from 'expect'; + +import round from 'lodash/round'; +import MeasurementSupport from '../MeasurementSupport'; + +import { lineFeature, lineFeature3, polyFeatureClosed -} = require('../../../../test-resources/drawsupport/features'); +} from '../../../../test-resources/drawsupport/features'; + +import { Map, View, Feature } from 'ol'; +import {LineString} from 'ol/geom'; describe('Openlayers MeasurementSupport', () => { let msNode; @@ -27,9 +31,9 @@ describe('Openlayers MeasurementSupport', () => { center: [0, 0], zoom: 5 }; - let map = new ol.Map({ + let map = new Map({ target: "map", - view: new ol.View(viewOptions) + view: new View(viewOptions) }); const uom = { length: {unit: 'm', label: 'm'}, @@ -83,9 +87,9 @@ describe('Openlayers MeasurementSupport', () => { document.body.innerHTML = ''; msNode = undefined; expect.restoreSpies(); - map = new ol.Map({ + map = new Map({ target: "map", - view: new ol.View(viewOptions) + view: new View(viewOptions) }); setTimeout(done); }); @@ -192,7 +196,7 @@ describe('Openlayers MeasurementSupport', () => { expect(spyUpdateMeasures.calls.length).toBe(1); const measureState = spyUpdateMeasures.calls[0].arguments[0]; expect(measureState).toExist(); - expect(round(measureState.area, 2)).toBe(49490132941.51); + expect(round(measureState.area, 2)).toBe(49379574502.64); expect(measureState.bearing).toBe(0); }); @@ -214,15 +218,15 @@ describe('Openlayers MeasurementSupport', () => { }); cmp.drawInteraction.dispatchEvent({ type: 'drawstart', - feature: new ol.Feature({ - geometry: new ol.geom.LineString([[13.0, 43.0], [13.0, 40.0]]), + feature: new Feature({ + geometry: new LineString([[13.0, 43.0], [13.0, 40.0]]), name: 'My line with 2 points' }) }); cmp.drawInteraction.dispatchEvent({ type: 'drawend', - feature: new ol.Feature({ - geometry: new ol.geom.LineString([[13.0, 43.0], [13.0, 40.0], [11.0, 41.0]]), + feature: new Feature({ + geometry: new LineString([[13.0, 43.0], [13.0, 40.0], [11.0, 41.0]]), name: 'My line with 3 points' }) }); @@ -249,15 +253,15 @@ describe('Openlayers MeasurementSupport', () => { }); cmp.drawInteraction.dispatchEvent({ type: 'drawstart', - feature: new ol.Feature({ - geometry: new ol.geom.LineString([[13.0, 43.0], [13.0, 40.0]]), + feature: new Feature({ + geometry: new LineString([[13.0, 43.0], [13.0, 40.0]]), name: 'My line with 2 points' }) }); cmp.drawInteraction.dispatchEvent({ type: 'drawend', - feature: new ol.Feature({ - geometry: new ol.geom.LineString([[13.0, 43.0], [13.0, 40.0], [11.0, 41.0]]), + feature: new Feature({ + geometry: new LineString([[13.0, 43.0], [13.0, 40.0], [11.0, 41.0]]), name: 'My line with 3 points' }) }); diff --git a/web/client/components/map/openlayers/__tests__/Overview-test.jsx b/web/client/components/map/openlayers/__tests__/Overview-test.jsx index 949c75777c..beadadc0c9 100644 --- a/web/client/components/map/openlayers/__tests__/Overview-test.jsx +++ b/web/client/components/map/openlayers/__tests__/Overview-test.jsx @@ -5,27 +5,23 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const expect = require('expect'); -const React = require('react'); -const ReactDOM = require('react-dom'); -const ol = require('openlayers'); -const Overview = require('../Overview'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import expect from 'expect'; +import Overview from '../Overview'; + +import { Map, View } from 'ol'; describe('Openlayers Overview component', () => { let map; beforeEach((done) => { document.body.innerHTML = '
'; - map = new ol.Map({ + map = new Map({ layers: [ ], - controls: ol.control.defaults({ - attributionOptions: /** @type {olx.control.AttributionOptions} */ { - collapsible: false - } - }), target: 'map', - view: new ol.View({ + view: new View({ center: [0, 0], zoom: 5 }) diff --git a/web/client/components/map/openlayers/__tests__/ScaleBar-test.jsx b/web/client/components/map/openlayers/__tests__/ScaleBar-test.jsx index b533ccc4fa..32ff841b8d 100644 --- a/web/client/components/map/openlayers/__tests__/ScaleBar-test.jsx +++ b/web/client/components/map/openlayers/__tests__/ScaleBar-test.jsx @@ -5,26 +5,22 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -var React = require('react'); -var ReactDOM = require('react-dom'); -var ol = require('openlayers'); -var ScaleBar = require('../ScaleBar'); -var expect = require('expect'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import expect from 'expect'; +import ScaleBar from '../ScaleBar'; + +import { Map, View } from 'ol'; describe('Openlayers ScaleBar component', () => { let map; beforeEach((done) => { document.body.innerHTML = '
'; - map = new ol.Map({ + map = new Map({ layers: [ ], - controls: ol.control.defaults({ - attributionOptions: /** @type {olx.control.AttributionOptions} */ { - collapsible: false - } - }), target: 'map', - view: new ol.View({ + view: new View({ center: [0, 0], zoom: 5 }) diff --git a/web/client/components/map/openlayers/__tests__/VectorStyle-test.js b/web/client/components/map/openlayers/__tests__/VectorStyle-test.js index cc84de2bd3..2cd49c5771 100644 --- a/web/client/components/map/openlayers/__tests__/VectorStyle-test.js +++ b/web/client/components/map/openlayers/__tests__/VectorStyle-test.js @@ -5,8 +5,8 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const expect = require('expect'); -const { +import expect from 'expect'; +import { getCircleStyle, getMarkerStyle, getStrokeStyle, @@ -14,22 +14,36 @@ const { getTextStyle, getGeometryTrasformation, getFilter, - parseStyles -} = require('../VectorStyle'); -const ol = require('openlayers'); -const {isArray} = require('lodash'); -const baseImageUrl = require('../../../mapcontrols/annotations/img/markers_default.png'); -const shadowImageUrl = require('../../../mapcontrols/annotations/img/markers_shadow.png'); -const MarkerUtils = require('../../../../utils/MarkerUtils'); -const {colorToRgbaStr} = require('../../../../utils/ColorUtils'); + parseStyles, + getStyle +} from '../VectorStyle'; + +import isArray from 'lodash/isArray'; +import baseImageUrl from '../../../mapcontrols/annotations/img/markers_default.png'; +import shadowImageUrl from '../../../mapcontrols/annotations/img/markers_shadow.png'; +import MarkerUtils from '../../../../utils/MarkerUtils'; +import {colorToRgbaStr} from '../../../../utils/ColorUtils'; + +import {Stroke, Fill} from 'ol/style'; + +import Feature from 'ol/Feature'; +import {Point, MultiPoint, Polygon} from 'ol/geom'; + +import axios from "../../../../libs/ajax"; +import MockAdapter from "axios-mock-adapter"; + +let mockAxios; + const glyphs = MarkerUtils.getGlyphs('fontawesome'); describe('Test VectorStyle', () => { beforeEach((done) => { + mockAxios = new MockAdapter(axios); document.body.innerHTML = '
'; setTimeout(done); }); afterEach((done) => { + mockAxios.restore(); document.body.innerHTML = ''; setTimeout(done); }); @@ -57,11 +71,11 @@ describe('Test VectorStyle', () => { const strokeStyle = { color: "#223366" }; - const stroke = new ol.style.Stroke(strokeStyle); + const stroke = new Stroke(strokeStyle); const fillStyle = { color: "#998877" }; - const fill = new ol.style.Fill(fillStyle); + const fill = new Fill(fillStyle); const olStyle = getCircleStyle({ radius: 800 }, @@ -306,7 +320,7 @@ describe('Test VectorStyle', () => { Options are: - remove it - test it more, on ol they say that some defaults are applied, but it is not the case - (https://openlayers.org/en/v4.6.5/apidoc/ol.style.Stroke.html) + (https://openlayers.org/en/v4.6.5/apidoc/Stroke.html) */ const strokeStyle = { color: "#ffffff", @@ -450,9 +464,9 @@ describe('Test VectorStyle', () => { }; const geomFunc = getGeometryTrasformation(markerStyle); expect(geomFunc).toNotBe(null); - const feature = new ol.Feature({ - geometry: new ol.geom.Point([1, 2]), - labelPoint: new ol.geom.Point([1, 1]), + const feature = new Feature({ + geometry: new Point([1, 2]), + labelPoint: new Point([1, 1]), name: 'My Polygon' }); expect(geomFunc(feature).getType()).toBe("Point"); @@ -466,9 +480,9 @@ describe('Test VectorStyle', () => { }; const geomFunc = getGeometryTrasformation(markerStyle); expect(geomFunc).toNotBe(null); - const feature = new ol.Feature({ - geometry: new ol.geom.Polygon([[[1, 2], [2, 2], [3, 2], [1, 2]]]), - labelPoint: new ol.geom.Point([1, 1]), + const feature = new Feature({ + geometry: new Polygon([[[1, 2], [2, 2], [3, 2], [1, 2]]]), + labelPoint: new Point([1, 1]), name: 'My Polygon' }); expect(geomFunc(feature).getType()).toBe("Point"); @@ -480,9 +494,9 @@ describe('Test VectorStyle', () => { }; const geomFunc = getGeometryTrasformation(markerStyle); expect(geomFunc).toNotBe(null); - const feature = new ol.Feature({ - geometry: new ol.geom.MultiPoint([[1, 2], [2, 2], [3, 2], [1, 2]]), - labelPoint: new ol.geom.Point([1, 1]), + const feature = new Feature({ + geometry: new MultiPoint([[1, 2], [2, 2], [3, 2], [1, 2]]), + labelPoint: new Point([1, 1]), name: 'My Polygon' }); expect(geomFunc(feature).getType()).toBe("LineString"); @@ -494,9 +508,9 @@ describe('Test VectorStyle', () => { }; const geomFunc = getGeometryTrasformation(markerStyle); expect(geomFunc).toNotBe(null); - const feature = new ol.Feature({ - geometry: new ol.geom.Polygon([[[1, 2], [2, 2], [3, 2], [1, 2]]]), - labelPoint: new ol.geom.Point([1, 1]), + const feature = new Feature({ + geometry: new Polygon([[[1, 2], [2, 2], [3, 2], [1, 2]]]), + labelPoint: new Point([1, 1]), name: 'My Polygon' }); expect(geomFunc(feature).getType()).toBe("Polygon"); @@ -555,4 +569,76 @@ describe('Test VectorStyle', () => { expect(isArray(olStyles)).toBe(true); expect(olStyles.length).toBe(3); }); + it('getStyle is compatible with legacy get style', () => { + const style = getStyle({ + style: { + type: 'Point', + "Point": { + iconGlyph: "comment" + } + } + }, true); + expect(style).toExist(); + expect(style.getImage()).toExist(); + // TODO: add more tests from LegacyVectorStyle here + }); + it('getStyle can return a promise', (done) => { + const stylePromise = getStyle({ + asPromise: true, + style: { + type: 'Point', + "Point": { + iconGlyph: "comment" + } + } + }, true); + stylePromise.then(style => { + expect(style).toExist(); + expect(style.getImage()).toExist(); + done(); + }); + }); + it('getStyle supports remote styles', (done) => { + const SLD = ` + + + Simple Point + + SLD Cook Book: Simple Point + + + + + + circle + + #FF0000 + + + 6 + + + + + + + `; + mockAxios.onGet().reply(200, SLD); + const stylePromise = getStyle({ + style: { + url: "http://styleurl", + format: "sld" + } + }, true); + stylePromise.then(style => { + expect(style).toExist(); + expect(style.getImage()).toExist(); + done(); + }); + }); }); diff --git a/web/client/components/map/openlayers/index.js b/web/client/components/map/openlayers/index.js index 319c6d6046..6259b765c3 100644 --- a/web/client/components/map/openlayers/index.js +++ b/web/client/components/map/openlayers/index.js @@ -1,9 +1,9 @@ module.exports = { - LLayer: require('./Layer.jsx'), - Locate: require('./Locate.jsx'), - LMap: require('./Map.jsx'), - MeasurementSupport: require('./MeasurementSupport'), - Overview: require('./Overview'), - ScaleBar: require('./ScaleBar'), - Feature: require('./Feature') + LLayer: require('./Layer.jsx').default, + Locate: require('./Locate.jsx').default, + LMap: require('./Map.jsx').default, + MeasurementSupport: require('./MeasurementSupport').default, + Overview: require('./Overview').default, + ScaleBar: require('./ScaleBar').default, + Feature: require('./Feature').default }; diff --git a/web/client/components/map/openlayers/plugins/BingLayer.js b/web/client/components/map/openlayers/plugins/BingLayer.js index e23d91196b..2564a209d9 100644 --- a/web/client/components/map/openlayers/plugins/BingLayer.js +++ b/web/client/components/map/openlayers/plugins/BingLayer.js @@ -6,8 +6,9 @@ * LICENSE file in the root directory of this source tree. */ -var Layers = require('../../../../utils/openlayers/Layers'); -var ol = require('openlayers'); +import Layers from '../../../../utils/openlayers/Layers'; +import TileLayer from 'ol/layer/Tile'; +import BingMaps from 'ol/source/BingMaps'; const checkLoaded = (layer, options) => { if (layer.getSource && layer.getSource().getState() === 'error') { @@ -24,12 +25,12 @@ Layers.registerType('bing', { create: (options) => { var key = options.apiKey; var maxNativeZoom = options.maxNativeZoom || 19; - const layer = new ol.layer.Tile({ + const layer = new TileLayer({ preload: Infinity, opacity: options.opacity !== undefined ? options.opacity : 1, zIndex: options.zIndex, visible: options.visibility, - source: new ol.source.BingMaps({ + source: new BingMaps({ key: key, imagerySet: options.name, maxZoom: maxNativeZoom diff --git a/web/client/components/map/openlayers/plugins/GoogleLayer.js b/web/client/components/map/openlayers/plugins/GoogleLayer.js index e63e93fdc4..74b680757a 100644 --- a/web/client/components/map/openlayers/plugins/GoogleLayer.js +++ b/web/client/components/map/openlayers/plugins/GoogleLayer.js @@ -6,17 +6,17 @@ * LICENSE file in the root directory of this source tree. */ -var Layers = require('../../../../utils/openlayers/Layers'); -var ol = require('openlayers'); -var React = require('react'); - -var layersMap; -var rendererItem; -var gmaps = {}; -var isTouchSupported = 'ontouchstart' in window; -var startEvent = isTouchSupported ? 'touchstart' : 'mousedown'; -var moveEvent = isTouchSupported ? 'touchmove' : 'mousemove'; -var endEvent = isTouchSupported ? 'touchend' : 'mouseup'; +import Layers from '../../../../utils/openlayers/Layers'; +import React from 'react'; +import {transform} from 'ol/proj'; + +let layersMap; +let rendererItem; +let gmaps = {}; +let isTouchSupported = 'ontouchstart' in window; +let startEvent = isTouchSupported ? 'touchstart' : 'mousedown'; +let moveEvent = isTouchSupported ? 'touchmove' : 'mousemove'; +let endEvent = isTouchSupported ? 'touchend' : 'mouseup'; Layers.registerType('google', { create: (options, map, mapId) => { @@ -44,7 +44,7 @@ Layers.registerType('google', { let mapContainer = document.getElementById(mapId + 'gmaps'); let setCenter = function() { if (mapContainer.style.visibility !== 'hidden') { - const center = ol.proj.transform(map.getView().getCenter(), 'EPSG:3857', 'EPSG:4326'); + const center = transform(map.getView().getCenter(), 'EPSG:3857', 'EPSG:4326'); gmaps[mapId].setCenter(new google.maps.LatLng(center[1], center[0])); } }; @@ -193,7 +193,7 @@ Layers.registerType('google', { let google = window.google; if (!oldOptions.visibility && newOptions.visibility) { let view = map.getView(); - const center = ol.proj.transform(view.getCenter(), 'EPSG:3857', 'EPSG:4326'); + const center = transform(view.getCenter(), 'EPSG:3857', 'EPSG:4326'); gmaps[mapId].setCenter(new google.maps.LatLng(center[1], center[0])); gmaps[mapId].setZoom(view.getZoom()); } diff --git a/web/client/components/map/openlayers/plugins/GraticuleLayer.js b/web/client/components/map/openlayers/plugins/GraticuleLayer.js index 26912579b1..c6ec9be91b 100644 --- a/web/client/components/map/openlayers/plugins/GraticuleLayer.js +++ b/web/client/components/map/openlayers/plugins/GraticuleLayer.js @@ -6,14 +6,15 @@ * LICENSE file in the root directory of this source tree. */ -var Layers = require('../../../../utils/openlayers/Layers'); -var ol = require('openlayers'); +import Layers from '../../../../utils/openlayers/Layers'; +import Graticule from 'ol/Graticule'; +import {Stroke} from 'ol/style'; Layers.registerType('graticule', { create: (options, map) => { - let graticule = new ol.Graticule({ - strokeStyle: options.style || new ol.style.Stroke({ + let graticule = new Graticule({ + strokeStyle: options.style || new Stroke({ color: 'rgba(255,120,0,0.9)', width: 2, lineDash: [0.5, 4] diff --git a/web/client/components/map/openlayers/plugins/MapQuest.js b/web/client/components/map/openlayers/plugins/MapQuest.js index 06941c06c4..731aad8e17 100644 --- a/web/client/components/map/openlayers/plugins/MapQuest.js +++ b/web/client/components/map/openlayers/plugins/MapQuest.js @@ -6,7 +6,7 @@ * LICENSE file in the root directory of this source tree. */ -var Layers = require('../../../../utils/openlayers/Layers'); +import Layers from '../../../../utils/openlayers/Layers'; Layers.registerType('mapquest', { create: (options) => { diff --git a/web/client/components/map/openlayers/plugins/MarkerLayer.js b/web/client/components/map/openlayers/plugins/MarkerLayer.js index 0362d5b99f..457a50f528 100644 --- a/web/client/components/map/openlayers/plugins/MarkerLayer.js +++ b/web/client/components/map/openlayers/plugins/MarkerLayer.js @@ -6,13 +6,13 @@ * LICENSE file in the root directory of this source tree. */ -var Layers = require('../../../../utils/openlayers/Layers'); -var ol = require('openlayers'); -var assign = require('object-assign'); -var defaultIcon = require('../img/marker-icon.png'); +import Layers from '../../../../utils/openlayers/Layers'; +import assign from 'object-assign'; +import defaultIcon from '../img/marker-icon.png'; +import {Style, Icon} from 'ol/style'; -var icon = new ol.style.Style({ - image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ { +const icon = new Style({ + image: new Icon(/** @type {olx.style.IconOptions} */ { anchor: [0.5, 1], anchorXUnits: 'fraction', anchorYUnits: 'fraction', @@ -22,11 +22,13 @@ var icon = new ol.style.Style({ }); const defaultStyles = { - 'Point': [new ol.style.Style({ + 'Point': [new Style({ image: icon })]}; - +/** + * @deprecated use VectorLayer + */ Layers.registerType('marker', { create: (options, map, mapId) => { return Layers.createLayer('vector', assign(options, {style: () => { return defaultStyles.Point; }}), map, mapId); diff --git a/web/client/components/map/openlayers/plugins/OSMLayer.js b/web/client/components/map/openlayers/plugins/OSMLayer.js index 0e08ff051f..927ee8c307 100644 --- a/web/client/components/map/openlayers/plugins/OSMLayer.js +++ b/web/client/components/map/openlayers/plugins/OSMLayer.js @@ -6,16 +6,17 @@ * LICENSE file in the root directory of this source tree. */ -var Layers = require('../../../../utils/openlayers/Layers'); -var ol = require('openlayers'); +import Layers from '../../../../utils/openlayers/Layers'; +import OSM from 'ol/source/OSM'; +import TileLayer from 'ol/layer/Tile'; Layers.registerType('osm', { create: (options) => { - return new ol.layer.Tile({ + return new TileLayer({ opacity: options.opacity !== undefined ? options.opacity : 1, visible: options.visibility, zIndex: options.zIndex, - source: new ol.source.OSM() + source: new OSM() }); } }); diff --git a/web/client/components/map/openlayers/plugins/OverlayLayer.js b/web/client/components/map/openlayers/plugins/OverlayLayer.js index 58709b8fc4..fe0c95e54d 100644 --- a/web/client/components/map/openlayers/plugins/OverlayLayer.js +++ b/web/client/components/map/openlayers/plugins/OverlayLayer.js @@ -6,9 +6,9 @@ * LICENSE file in the root directory of this source tree. */ -var Layers = require('../../../../utils/openlayers/Layers'); -var ol = require('openlayers'); -var eventListener = require('eventlistener'); +import Layers from '../../../../utils/openlayers/Layers'; +import eventListener from 'eventlistener'; +import Overlay from 'ol/Overlay'; const removeIds = (items) => { if (items.length !== 0) { @@ -50,7 +50,7 @@ Layers.registerType('overlay', { const original = document.getElementById(options.id); const cloned = cloneOriginalOverlay(original, options); document.body.appendChild(cloned); - const overlay = new ol.Overlay({ + const overlay = new Overlay({ id: options.id, element: cloned, autoPan: options.autoPan || false, diff --git a/web/client/components/map/openlayers/plugins/TileProviderLayer.js b/web/client/components/map/openlayers/plugins/TileProviderLayer.js index 54f5c45879..10223293ef 100644 --- a/web/client/components/map/openlayers/plugins/TileProviderLayer.js +++ b/web/client/components/map/openlayers/plugins/TileProviderLayer.js @@ -5,12 +5,13 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -var assign = require('object-assign'); -var Layers = require('../../../../utils/openlayers/Layers'); -var ol = require('openlayers'); -var TileProvider = require('../../../../utils/TileConfigProvider'); -var CoordinatesUtils = require('../../../../utils/CoordinatesUtils'); -const { getUrls, template } = require('../../../../utils/TileProviderUtils'); +import assign from 'object-assign'; +import Layers from '../../../../utils/openlayers/Layers'; +import TileProvider from '../../../../utils/TileConfigProvider'; +import CoordinatesUtils from '../../../../utils/CoordinatesUtils'; +import { getUrls, template } from '../../../../utils/TileProviderUtils'; +import XYZ from 'ol/source/XYZ'; +import TileLayer from 'ol/layer/Tile'; /*eslint-disable */ function lBoundsToOlExtent(bounds, destPrj){ @@ -22,11 +23,11 @@ function tileXYZToOpenlayersOptions(options) { let urls = options.url.match(/(\{s\})/) ? getUrls(options) : [template(options.url, options)]; let sourceOpt = assign({}, { urls: urls, - attributions: options.attribution ? [new ol.Attribution({ html: options.attribution})] : [], + attributions: options.attribution ? [options.attribution] : [], maxZoom: options.maxZoom ? options.maxZoom : 18, minZoom: options.minZoom ? options.minZoom : 0 // dosen't affect ol layer rendering UNSUPPORTED }); - let source = new ol.source.XYZ(sourceOpt); + let source = new XYZ(sourceOpt); let olOpt = assign({}, { opacity: options.opacity !== undefined ? options.opacity : 1, visible: options.visibility !== false, @@ -40,6 +41,6 @@ Layers.registerType('tileprovider', { create: (options) => { let [url, opt] = TileProvider.getLayerConfig(options.provider, options); opt.url = url; - return new ol.layer.Tile(tileXYZToOpenlayersOptions(opt)); + return new TileLayer(tileXYZToOpenlayersOptions(opt)); } }); diff --git a/web/client/components/map/openlayers/plugins/VectorLayer.js b/web/client/components/map/openlayers/plugins/VectorLayer.js index 923aca31e5..bc16037cae 100644 --- a/web/client/components/map/openlayers/plugins/VectorLayer.js +++ b/web/client/components/map/openlayers/plugins/VectorLayer.js @@ -6,22 +6,23 @@ * LICENSE file in the root directory of this source tree. */ -var Layers = require('../../../../utils/openlayers/Layers'); -const VectorStyle = require('../VectorStyle'); -var ol = require('openlayers'); -const {isEqual} = require('lodash'); +import Layers from '../../../../utils/openlayers/Layers'; +import {getStyle} from '../VectorStyle'; +import isEqual from 'lodash/isEqual'; +import VectorSource from 'ol/source/Vector'; +import VectorLayer from 'ol/layer/Vector'; Layers.registerType('vector', { create: (options) => { let features = []; - const source = new ol.source.Vector({ + const source = new VectorSource({ features: features }); - const style = VectorStyle.getStyle(options); + const style = getStyle(options); - return new ol.layer.Vector({ + return new VectorLayer({ msId: options.id, source: source, visible: options.visibility !== false, @@ -39,7 +40,7 @@ Layers.registerType('vector', { } if (!isEqual(oldOptions.style, newOptions.style)) { - layer.setStyle(VectorStyle.getStyle(newOptions)); + layer.setStyle(getStyle(newOptions)); } }, render: () => { diff --git a/web/client/components/map/openlayers/plugins/WFS3Layer.js b/web/client/components/map/openlayers/plugins/WFS3Layer.js new file mode 100644 index 0000000000..29afb747f9 --- /dev/null +++ b/web/client/components/map/openlayers/plugins/WFS3Layer.js @@ -0,0 +1,128 @@ +/** + * Copyright 2018, GeoSolutions Sas. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +import head from 'lodash/head'; +import urlParser from 'url'; + +import CoordinatesUtils from '../../../../utils/CoordinatesUtils'; +import MapUtils from '../../../../utils/MapUtils'; +import Layers from '../../../../utils/openlayers/Layers'; +import SecurityUtils from '../../../../utils/SecurityUtils'; + +import {get, getTransform} from 'ol/proj'; +import {applyTransform} from 'ol/extent'; +import TileGrid from 'ol/tilegrid/TileGrid'; +import VectorTileLayer from 'ol/layer/VectorTile'; +import VectorTile from 'ol/source/VectorTile'; +import MVT from 'ol/format/MVT'; + +import { isVectorFormat } from '../../../../utils/VectorTileUtils'; +import { OL_VECTOR_FORMATS, applyStyle } from '../../../../utils/openlayers/VectorTileUtils'; + +const createLayer = (options) => { + + const srs = CoordinatesUtils.normalizeSRS(options.srs || 'EPSG:3857', options.allowedSRS); + const projection = get(srs); + const metersPerUnit = projection.getMetersPerUnit(); + + const tilingScheme = head(options.tilingSchemes + && options.tilingSchemes.schemes + && options.tilingSchemes.schemes.filter(({ supportedCRS }) => supportedCRS === srs)); + + const { identifier: tilingSchemeId, tileMatrix, boundingBox } = tilingScheme || {}; + const scales = tileMatrix && tileMatrix.map(({ scaleDenominator }) => scaleDenominator); + const mapResolutions = MapUtils.getResolutions(); + + const scaleToResolution = s => s * 0.28E-3 / metersPerUnit; + const matrixResolutions = options.resolutions || scales && scales.map(scaleToResolution); + const resolutions = matrixResolutions || mapResolutions; + + const switchOriginXY = projection.getAxisOrientation().substr(0, 2) === 'ne'; + const origins = tileMatrix && tileMatrix + .map(({ topLeftCorner } = {}) => topLeftCorner) + .map(([ x, y ] = []) => switchOriginXY ? [y, x] : [x, y]); + + const tileSizes = tileMatrix && tileMatrix + .map(({tileWidth, tileHeight}) => [tileWidth, tileHeight]); + + const bbox = options.bbox; + + const extent = bbox + ? applyTransform([ + parseFloat(bbox.bounds.minx), + parseFloat(bbox.bounds.miny), + parseFloat(bbox.bounds.maxx), + parseFloat(bbox.bounds.maxy) + ], getTransform(bbox.crs, options.srs)) + : null; + + const tileGridExtent = boundingBox && boundingBox.lowerCorner && boundingBox.upperCorner + ? [ + ...boundingBox.lowerCorner, + ...boundingBox.upperCorner + ] + : null; + + const tileGrid = new TileGrid({ + extent: tileGridExtent, + minZoom: 0, + origins, + origin: !origins ? [20037508.3428, -20037508.3428] : undefined, + resolutions, + tileSizes, + tileSize: !tileSizes ? [256, 256] : undefined + }); + + let url = (options.url || '') + .replace(/\{tilingSchemeId\}/, tilingSchemeId) + .replace(/\{level\}/, '{z}') + .replace(/\{row\}/, '{y}') + .replace(/\{col\}/, '{x}'); + + let queryParameters = { }; + SecurityUtils.addAuthenticationParameter(url, queryParameters, options.securityToken); + + const layerUrl = decodeURI(url); + const queryParametersString = urlParser.format({ query: { ...queryParameters } }); + + const Format = isVectorFormat(options.format) && OL_VECTOR_FORMATS[options.format] || MVT; + + const source = new VectorTile({ + format: new Format({ + dataProjection: srs, + layerName: '_layer_' + }), + tileGrid, + url: layerUrl + queryParametersString + }); + + const layer = new VectorTileLayer({ + extent, + msId: options.id, + source: source, + visible: options.visibility !== false, + zIndex: options.zIndex + }); + + applyStyle(options.vectorStyle, layer); + + return layer; +}; +Layers.registerType('wfs3', { + create: createLayer, + update: (layer, newOptions, oldOptions) => { + if (oldOptions.securityToken !== newOptions.securityToken + || oldOptions.srs !== newOptions.srs) { + return createLayer(newOptions); + } + return null; + }, + render: () => { + return null; + } +}); diff --git a/web/client/components/map/openlayers/plugins/WMSLayer.js b/web/client/components/map/openlayers/plugins/WMSLayer.js index 4d9c91ffbe..3c4d246ea6 100644 --- a/web/client/components/map/openlayers/plugins/WMSLayer.js +++ b/web/client/components/map/openlayers/plugins/WMSLayer.js @@ -5,21 +5,38 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -const Message = require('../../../../components/I18N/Message'); -const Layers = require('../../../../utils/openlayers/Layers'); -const ol = require('openlayers'); -const {isNil, union} = require('lodash'); -const objectAssign = require('object-assign'); -const CoordinatesUtils = require('../../../../utils/CoordinatesUtils'); -const ProxyUtils = require('../../../../utils/ProxyUtils'); -const { isArray, castArray } = require('lodash'); -const {optionsToVendorParams} = require('../../../../utils/VendorParamsUtils'); -const SecurityUtils = require('../../../../utils/SecurityUtils'); -const { creditsToAttribution } = require('../../../../utils/LayersUtils'); +import React from 'react'; +import Message from '../../../../components/I18N/Message'; +import Layers from '../../../../utils/openlayers/Layers'; +import isNil from 'lodash/isNil'; +import isEqual from 'lodash/isEqual'; +import union from 'lodash/union'; +import isArray from 'lodash/isArray'; +import assign from 'object-assign'; + +import CoordinatesUtils from '../../../../utils/CoordinatesUtils'; +import ProxyUtils from '../../../../utils/ProxyUtils'; + +import {optionsToVendorParams} from '../../../../utils/VendorParamsUtils'; +import SecurityUtils from '../../../../utils/SecurityUtils'; +import { creditsToAttribution } from '../../../../utils/LayersUtils'; + +import MapUtils from '../../../../utils/MapUtils'; +import ElevationUtils from '../../../../utils/ElevationUtils'; + +import ImageLayer from 'ol/layer/Image'; +import ImageWMS from 'ol/source/ImageWMS'; +import {get} from 'ol/proj'; +import TileGrid from 'ol/tilegrid/TileGrid'; +import TileLayer from 'ol/layer/Tile'; +import TileWMS from 'ol/source/TileWMS'; + +import VectorTileSource from 'ol/source/VectorTile'; +import VectorTileLayer from 'ol/layer/VectorTile'; + +import { isVectorFormat } from '../../../../utils/VectorTileUtils'; +import { OL_VECTOR_FORMATS, applyStyle } from '../../../../utils/openlayers/VectorTileUtils'; -const mapUtils = require('../../../../utils/MapUtils'); -const ElevationUtils = require('../../../../utils/ElevationUtils'); /** @param {object} options of the layer @return the Openlayers options from the layers ones and/or default. @@ -28,7 +45,7 @@ const ElevationUtils = require('../../../../utils/ElevationUtils'); function wmsToOpenlayersOptions(options) { const params = optionsToVendorParams(options); // NOTE: can we use opacity to manage visibility? - const result = objectAssign({}, options.baseParams, { + const result = assign({}, options.baseParams, { LAYERS: options.name, STYLES: options.style || "", FORMAT: options.format || 'image/png', @@ -37,7 +54,7 @@ function wmsToOpenlayersOptions(options) { CRS: CoordinatesUtils.normalizeSRS(options.srs || 'EPSG:3857', options.allowedSRS), TILED: !isNil(options.tiled) ? options.tiled : true, VERSION: options.version || "1.3.0" - }, objectAssign( + }, assign( {}, (options._v_ ? {_v_: options._v_} : {}), (params || {}) @@ -76,11 +93,10 @@ function elevationLoadFunction(forceProxy, imageTile, src) { function addTileLoadFunction(sourceOptions, options) { if (options.useForElevation) { - return objectAssign({}, sourceOptions, { tileLoadFunction: elevationLoadFunction.bind(null, [options.forceProxy]) }); - // return objectAssign({}, sourceOptions, { tileLoadFunction: (imageTile, src) => { imageTile.getImage().src = src; } }); + return assign({}, sourceOptions, { tileLoadFunction: elevationLoadFunction.bind(null, [options.forceProxy]) }); } if (options.forceProxy) { - return objectAssign({}, sourceOptions, {tileLoadFunction: proxyTileLoadFunction}); + return assign({}, sourceOptions, {tileLoadFunction: proxyTileLoadFunction}); } return sourceOptions; } @@ -114,155 +130,182 @@ function getElevation(pos) { return ; } } -const toOLAttributions = credits => credits && creditsToAttribution(credits) ? castArray(creditsToAttribution(credits)) : undefined; +const toOLAttributions = credits => credits && creditsToAttribution(credits) || undefined; -Layers.registerType('wms', { - create: (options, map) => { - const urls = getWMSURLs(isArray(options.url) ? options.url : [options.url]); - const queryParameters = wmsToOpenlayersOptions(options) || {}; - urls.forEach(url => SecurityUtils.addAuthenticationParameter(url, queryParameters, options.securityToken)); - if (options.singleTile) { - return new ol.layer.Image({ - opacity: options.opacity !== undefined ? options.opacity : 1, - visible: options.visibility !== false, - zIndex: options.zIndex, - source: new ol.source.ImageWMS({ - url: urls[0], - attributions: toOLAttributions(options.credits), - params: queryParameters, - ratio: options.ratio || 1 - }) - }); - } - const mapSrs = map && map.getView() && map.getView().getProjection() && map.getView().getProjection().getCode() || 'EPSG:3857'; - const extent = ol.proj.get(CoordinatesUtils.normalizeSRS(options.srs || mapSrs, options.allowedSRS)).getExtent(); - const sourceOptions = addTileLoadFunction({ - attributions: toOLAttributions(options.credits), - urls: urls, - params: queryParameters, - tileGrid: new ol.tilegrid.TileGrid({ - extent: extent, - resolutions: mapUtils.getResolutions(), - tileSize: options.tileSize ? options.tileSize : 256, - origin: options.origin ? options.origin : [extent[0], extent[1]] - }) - }, options); - const layer = new ol.layer.Tile({ +const createLayer = (options, map) => { + const urls = getWMSURLs(isArray(options.url) ? options.url : [options.url]); + const queryParameters = wmsToOpenlayersOptions(options) || {}; + urls.forEach(url => SecurityUtils.addAuthenticationParameter(url, queryParameters, options.securityToken)); + + const vectorFormat = isVectorFormat(options.format); + + if (options.singleTile && !vectorFormat) { + return new ImageLayer({ opacity: options.opacity !== undefined ? options.opacity : 1, visible: options.visibility !== false, zIndex: options.zIndex, - source: new ol.source.TileWMS(sourceOptions) + source: new ImageWMS({ + url: urls[0], + attributions: toOLAttributions(options.credits), + params: queryParameters, + ratio: options.ratio || 1 + }) }); - layer.set('map', map); - if (options.useForElevation) { - layer.set('nodata', options.nodata); - layer.set('getElevation', getElevation.bind(layer)); + } + const mapSrs = map && map.getView() && map.getView().getProjection() && map.getView().getProjection().getCode() || 'EPSG:3857'; + const extent = get(CoordinatesUtils.normalizeSRS(options.srs || mapSrs, options.allowedSRS)).getExtent(); + const sourceOptions = addTileLoadFunction({ + attributions: toOLAttributions(options.credits), + urls: urls, + params: queryParameters, + tileGrid: new TileGrid({ + extent: extent, + resolutions: MapUtils.getResolutions(), + tileSize: options.tileSize ? options.tileSize : 256, + origin: options.origin ? options.origin : [extent[0], extent[1]] + }) + }, options); + const wmsSource = new TileWMS({ ...sourceOptions }); + const layerConfig = { + opacity: options.opacity !== undefined ? options.opacity : 1, + visible: options.visibility !== false, + zIndex: options.zIndex + }; + let layer; + if (vectorFormat) { + layer = new VectorTileLayer({ + ...layerConfig, + source: new VectorTileSource({ + ...sourceOptions, + format: new OL_VECTOR_FORMATS[options.format]({ + layerName: '_layer_' + }), + tileUrlFunction: (tileCoord, pixelRatio, projection) => wmsSource.tileUrlFunction(tileCoord, pixelRatio, projection) + }) + }); + } else { + layer = new TileLayer({ + ...layerConfig, + source: wmsSource + }); + } + layer.set('map', map); + if (vectorFormat) { + layer.set('wmsSource', wmsSource); + if (options.vectorStyle) { + applyStyle(options.vectorStyle, layer); } - return layer; - }, + } + if (options.useForElevation) { + layer.set('nodata', options.nodata); + layer.set('getElevation', getElevation.bind(layer)); + } + return layer; +}; + +const mustCreateNewLayer = (oldOptions, newOptions) => { + return (oldOptions.singleTile !== newOptions.singleTile + || oldOptions.securityToken !== newOptions.securityToken + || oldOptions.ratio !== newOptions.ratio + // no way to remove attribution when credits are removed, so have re-create the layer is needed. Seems to be solved in OL v5.3.0, due to the ol commit 9b8232f65b391d5d381d7a99a7cd070fc36696e9 (https://github.com/openlayers/openlayers/pull/7329) + || oldOptions.credits !== newOptions.credits && !newOptions.credits + || isVectorFormat(oldOptions.format) !== isVectorFormat(newOptions.format) + || isVectorFormat(oldOptions.format) && isVectorFormat(newOptions.format) && oldOptions.format !== newOptions.format + ); +}; + +Layers.registerType('wms', { + create: createLayer, update: (layer, newOptions, oldOptions, map) => { - if (oldOptions && layer && layer.getSource() && layer.getSource().updateParams) { - let changed = false; + const newIsVector = isVectorFormat(newOptions.format); + + if (mustCreateNewLayer(oldOptions, newOptions)) { + // TODO: do we need to clean anything before re-creating stuff from scratch? + return createLayer(newOptions, map); + } + let needsRefresh = false; + if (newIsVector && newOptions.vectorStyle && !isEqual(newOptions.vectorStyle, oldOptions.vectorStyle || {})) { + applyStyle(newOptions.vectorStyle, layer); + needsRefresh = true; + } + + const wmsSource = layer.get('wmsSource') || layer.getSource(); + const vectorSource = newIsVector ? layer.getSource() : null; + + if (oldOptions.srs !== newOptions.srs) { + const extent = get(CoordinatesUtils.normalizeSRS(newOptions.srs, newOptions.allowedSRS)).getExtent(); + if (newOptions.singleTile && !newIsVector) { + layer.setExtent(extent); + } else { + const tileGrid = new TileGrid({ + extent: extent, + resolutions: MapUtils.getResolutions(), + tileSize: newOptions.tileSize ? newOptions.tileSize : 256, + origin: newOptions.origin ? newOptions.origin : [extent[0], extent[1]] + }); + wmsSource.tileGrid = tileGrid; + if (vectorSource) { + vectorSource.tileGrid = tileGrid; + } + } + needsRefresh = true; + } + + if (oldOptions.credits !== newOptions.credits && newOptions.credits) { + wmsSource.setAttributions(toOLAttributions(newOptions.credits)); + needsRefresh = true; + } + + let changed = false; + let oldParams; + let newParams; + if (oldOptions && wmsSource && wmsSource.updateParams) { if (oldOptions.params && newOptions.params) { changed = union( - Object.keys(oldOptions.params), - Object.keys(newOptions.params) - ).reduce((found, param) => { - if (newOptions.params[param] !== oldOptions.params[param]) { - return true; - } - return found; - }, false); + Object.keys(oldOptions.params), + Object.keys(newOptions.params) + ).reduce((found, param) => { + if (newOptions.params[param] !== oldOptions.params[param]) { + return true; + } + return found; + }, false); } else if ((!oldOptions.params && newOptions.params) || (oldOptions.params && !newOptions.params)) { changed = true; } - let oldParams = wmsToOpenlayersOptions(oldOptions); - let newParams = wmsToOpenlayersOptions(newOptions); + oldParams = wmsToOpenlayersOptions(oldOptions); + newParams = wmsToOpenlayersOptions(newOptions); changed = changed || ["LAYERS", "STYLES", "FORMAT", "TRANSPARENT", "TILED", "VERSION", "_v_", "CQL_FILTER", "SLD", "VIEWPARAMS"].reduce((found, param) => { if (oldParams[param] !== newParams[param]) { return true; } return found; }, false); - if (oldOptions.srs !== newOptions.srs) { - const extent = ol.proj.get(CoordinatesUtils.normalizeSRS(newOptions.srs, newOptions.allowedSRS)).getExtent(); - layer.getSource().tileGrid = new ol.tilegrid.TileGrid({ - extent: extent, - resolutions: mapUtils.getResolutions(), - tileSize: newOptions.tileSize ? newOptions.tileSize : 256, - origin: newOptions.origin ? newOptions.origin : [extent[0], extent[1]] - }); + + needsRefresh = needsRefresh || changed; + } + + if (needsRefresh) { + // forces tile cache drop + // this prevents old cached tiles at lower zoom levels to be + // rendered during new params load, but causes a blink glitch. + // TODO: find out a way to refresh only once to clear lower zoom level cache. + if (wmsSource.refresh) { + wmsSource.refresh(); + } + if (vectorSource) { + vectorSource.clear(); + vectorSource.refresh(); } if (changed) { - const params = objectAssign(newParams, SecurityUtils.addAuthenticationToSLD(optionsToVendorParams(newOptions) || {}, newOptions)); - const source = layer.getSource(); - // forces tile cache drop - // this prevents old cached tiles at lower zoom levels to be - // rendered during new params load, but causes a blink glitch. - // TODO: find out a way to refresh only once to clear lower zoom level cache. - if (layer.getSource().refresh ) { - layer.getSource().refresh(); - } - source.updateParams(objectAssign(params, Object.keys(oldParams || {}).reduce((previous, key) => { - return params[key] ? previous : objectAssign(previous, { + const params = assign(newParams, SecurityUtils.addAuthenticationToSLD(optionsToVendorParams(newOptions) || {}, newOptions)); + + wmsSource.updateParams(assign(params, Object.keys(oldParams || {}).reduce((previous, key) => { + return params[key] ? previous : assign(previous, { [key]: undefined }); }, {}))); - - } - if (oldOptions.credits !== newOptions.credits && newOptions.credits) { - layer.getSource().setAttributions(toOLAttributions(newOptions.credits)); - } - if (oldOptions.singleTile !== newOptions.singleTile - || oldOptions.securityToken !== newOptions.securityToken - || oldOptions.ratio !== newOptions.ratio - // no way to remove attribution when credits are removed, so have re-create the layer is needed. Seems to be solved in OL v5.3.0, due to the ol commit 9b8232f65b391d5d381d7a99a7cd070fc36696e9 (https://github.com/openlayers/openlayers/pull/7329) - || oldOptions.credits !== newOptions.credits && !newOptions.credits - ) { - const urls = getWMSURLs(isArray(newOptions.url) ? newOptions.url : [newOptions.url]); - const queryParameters = wmsToOpenlayersOptions(newOptions) || {}; - urls.forEach(url => SecurityUtils.addAuthenticationParameter(url, queryParameters, newOptions.securityToken)); - let newLayer; - if (newOptions.singleTile) { - // return the Image Layer with the related source - newLayer = new ol.layer.Image({ - opacity: newOptions.opacity !== undefined ? newOptions.opacity : 1, - visible: newOptions.visibility !== false, - zIndex: newOptions.zIndex, - source: new ol.source.ImageWMS({ - attributions: toOLAttributions(newOptions.credits), - url: urls[0], - params: queryParameters, - ratio: newOptions.ratio || 1 - }) - }); - } else { - // return the Tile Layer with the related source - const mapSrs = map && map.getView() && map.getView().getProjection() && map.getView().getProjection().getCode() || 'EPSG:3857'; - const extent = ol.proj.get(CoordinatesUtils.normalizeSRS(newOptions.srs || mapSrs, newOptions.allowedSRS)).getExtent(); - newLayer = new ol.layer.Tile({ - opacity: newOptions.opacity !== undefined ? newOptions.opacity : 1, - visible: newOptions.visibility !== false, - zIndex: newOptions.zIndex, - source: new ol.source.TileWMS(objectAssign({ - attributions: toOLAttributions(newOptions.credits), - urls: urls, - params: queryParameters, - tileGrid: new ol.tilegrid.TileGrid({ - // TODO: custom grid sets extents - extent: extent, - // TODO: custom grid sets resolutions and tile size (needed to generate resolutions) - resolutions: mapUtils.getResolutions(), - tileSize: newOptions.tileSize ? newOptions.tileSize : 256, - // TODO: GWC grid sets with `alignTopLeft=true` may require `extent[0], extent[3]` - origin: newOptions.origin ? newOptions.origin : [extent[0], extent[1]] - }) - }, newOptions.forceProxy ? {tileLoadFunction: proxyTileLoadFunction} : {})) - }); - } - return newLayer; } - return null; } } }); diff --git a/web/client/components/map/openlayers/plugins/WMTSLayer.js b/web/client/components/map/openlayers/plugins/WMTSLayer.js index b83ebe6227..ffb614617c 100644 --- a/web/client/components/map/openlayers/plugins/WMTSLayer.js +++ b/web/client/components/map/openlayers/plugins/WMTSLayer.js @@ -6,15 +6,37 @@ * LICENSE file in the root directory of this source tree. */ -var Layers = require('../../../../utils/openlayers/Layers'); -var ol = require('openlayers'); -const { castArray, head, last } = require('lodash'); -const SecurityUtils = require('../../../../utils/SecurityUtils'); -const WMTSUtils = require('../../../../utils/WMTSUtils'); -const CoordinatesUtils = require('../../../../utils/CoordinatesUtils'); -const mapUtils = require('../../../../utils/MapUtils'); -const assign = require('object-assign'); -const urlParser = require('url'); +import Layers from '../../../../utils/openlayers/Layers'; + +import castArray from 'lodash/castArray'; +import head from 'lodash/head'; +import last from 'lodash/last'; + +import SecurityUtils from '../../../../utils/SecurityUtils'; +import WMTSUtils from '../../../../utils/WMTSUtils'; +import CoordinatesUtils from '../../../../utils/CoordinatesUtils'; +import MapUtils from '../../../../utils/MapUtils'; +import { isVectorFormat} from '../../../../utils/VectorTileUtils'; +import urlParser from 'url'; + +import {get, getTransform} from 'ol/proj'; +import {applyTransform} from 'ol/extent'; +import TileLayer from 'ol/layer/Tile'; +import VectorTileLayer from 'ol/layer/VectorTile'; +import WMTS from 'ol/source/WMTS'; +import VectorTile from 'ol/source/VectorTile'; +import WMTSTileGrid from 'ol/tilegrid/WMTS'; +import MVT from 'ol/format/MVT'; +import GeoJSON from 'ol/format/GeoJSON'; +import TopoJSON from 'ol/format/TopoJSON'; + +import { getStyle } from '../VectorStyle'; + +const OL_VECTOR_FORMATS = { + 'application/vnd.mapbox-vector-tile': MVT, + 'application/json;type=geojson': GeoJSON, + 'application/json;type=topojson': TopoJSON +}; function getWMSURLs(urls) { return urls.map((url) => url.split("\?")[0]); @@ -24,12 +46,12 @@ const createLayer = options => { // options.urls is an alternative name of URL. const urls = getWMSURLs(castArray(options.url)); const srs = CoordinatesUtils.normalizeSRS(options.srs || 'EPSG:3857', options.allowedSRS); - const projection = ol.proj.get(srs); + const projection = get(srs); const metersPerUnit = projection.getMetersPerUnit(); const tilMatrixSetName = WMTSUtils.getTileMatrixSet(options.tileMatrixSet, srs, options.allowedSRS, options.matrixIds); const tileMatrixSet = head(options.tileMatrixSet.filter(tM => tM['ows:Identifier'] === tilMatrixSetName)); const scales = tileMatrixSet && tileMatrixSet.TileMatrix.map(t => t.ScaleDenominator); - const mapResolutions = mapUtils.getResolutions(); + const mapResolutions = MapUtils.getResolutions(); /* * WMTS assumes a DPI 90.7 instead of 96 as documented in the WMTSCapabilities document: * "The tile matrix set that has scale values calculated based on the dpi defined by OGC specification @@ -55,12 +77,12 @@ const createLayer = options => { const bbox = options.bbox; const extent = bbox - ? ol.extent.applyTransform([ + ? applyTransform([ parseFloat(bbox.bounds.minx), parseFloat(bbox.bounds.miny), parseFloat(bbox.bounds.maxx), parseFloat(bbox.bounds.maxy) - ], ol.proj.getTransform(bbox.crs, options.srs)) + ], getTransform(bbox.crs, options.srs)) : null; let queryParameters = {}; @@ -75,36 +97,59 @@ const createLayer = options => { // Temporary fix for https://github.com/openlayers/openlayers/issues/8700 . It should be solved in OL 5.3.0 // it's exclusive so the map lower resolution that draws the image in less then 0.5 pixels have to be the maxResolution const maxResolution = options.maxResolution || last(mapResolutions.filter((r = []) => resolutions[0] / r * TILE_SIZE < 0.5)); - return new ol.layer.Tile({ + const format = (options.availableFormats || []).indexOf(options.format) !== -1 && options.format + || !options.availableFormats && options.format || 'image/png'; + const isVector = isVectorFormat(format); + + const wmtsOptions = { + requestEncoding, + urls: urls.map(u => u + queryParametersString), + layer: options.name, + version: options.version || "1.0.0", + matrixSet: tilMatrixSetName, + format, + style: options.style, + tileGrid: new WMTSTileGrid({ + origins, + origin: !origins ? [20037508.3428, -20037508.3428] : undefined, // Either origin or origins must be configured, never both. + // extent: extent, + resolutions, + matrixIds, + // TODO: matrixLimits from ranges + tileSize: options.tileSize || [TILE_SIZE, TILE_SIZE] + }), + wrapX: true + }; + + const wmtsSource = new WMTS(wmtsOptions); + const Layer = isVector ? VectorTileLayer : TileLayer; + const wmtsLayer = new Layer({ opacity: options.opacity !== undefined ? options.opacity : 1, zIndex: options.zIndex, extent: extent, maxResolution, visible: options.visibility !== false, - source: new ol.source.WMTS(assign({ - requestEncoding, - urls: urls.map(u => u + queryParametersString), - layer: options.name, - version: options.version || "1.0.0", - matrixSet: tilMatrixSetName, - format: options.format || 'image/png', - style: options.style, - tileGrid: new ol.tilegrid.WMTS({ - origins, - origin: !origins ? [20037508.3428, -20037508.3428] : undefined, // Either origin or origins must be configured, never both. - // extent: extent, - resolutions, - matrixIds, - // TODO: matrixLimits from ranges - tileSize: options.tileSize || [TILE_SIZE, TILE_SIZE] - }), - wrapX: true - })) + source: isVector + ? new VectorTile({ + ...wmtsOptions, + format: new OL_VECTOR_FORMATS[options.format]({ + dataProjection: srs + }), + tileUrlFunction: (...args) => wmtsSource.tileUrlFunction(...args) + }) + : wmtsSource }); + + if (isVector) wmtsLayer.setStyle(getStyle(options)); + + return wmtsLayer; }; const updateLayer = (layer, newOptions, oldOptions) => { - if (oldOptions.securityToken !== newOptions.securityToken || oldOptions.srs !== newOptions.srs) { + if (oldOptions.securityToken !== newOptions.securityToken + || oldOptions.srs !== newOptions.srs + || oldOptions.format !== newOptions.format + || oldOptions.style !== newOptions.style) { return createLayer(newOptions); } return null; diff --git a/web/client/components/map/openlayers/plugins/index.js b/web/client/components/map/openlayers/plugins/index.js index 614c5d53dd..96079a765d 100644 --- a/web/client/components/map/openlayers/plugins/index.js +++ b/web/client/components/map/openlayers/plugins/index.js @@ -7,14 +7,15 @@ */ module.exports = { - BingLayer: require('./BingLayer'), - GoogleLayer: require('./GoogleLayer'), - GraticuleLayer: require('./GraticuleLayer'), - MapQuest: require('./MapQuest'), - OSMLayer: require('./OSMLayer'), - OverlayLayer: require('./OverlayLayer'), - TileProviderLayer: require('./TileProviderLayer'), - VectorLayer: require('./VectorLayer'), - WMSLayer: require('./WMSLayer'), - WMTSLayer: require('./WMTSLayer') + BingLayer: require('./BingLayer').default, + GoogleLayer: require('./GoogleLayer').default, + GraticuleLayer: require('./GraticuleLayer').default, + MapQuest: require('./MapQuest').default, + OSMLayer: require('./OSMLayer').default, + OverlayLayer: require('./OverlayLayer').default, + TileProviderLayer: require('./TileProviderLayer').default, + VectorLayer: require('./VectorLayer').default, + WFS3Layer: require('./WFS3Layer').default, + WMSLayer: require('./WMSLayer').default, + WMTSLayer: require('./WMTSLayer').default }; diff --git a/web/client/components/map/openlayers/snapshot/GrabMap.jsx b/web/client/components/map/openlayers/snapshot/GrabMap.jsx index 52c42e4cc7..76b4a03abc 100644 --- a/web/client/components/map/openlayers/snapshot/GrabMap.jsx +++ b/web/client/components/map/openlayers/snapshot/GrabMap.jsx @@ -1,4 +1,3 @@ -const PropTypes = require('prop-types'); /** * Copyright 2015, GeoSolutions Sas. * All rights reserved. @@ -6,14 +5,17 @@ const PropTypes = require('prop-types'); * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -var React = require('react'); -var {LMap, +import PropTypes from 'prop-types'; +import React from 'react'; +import {LMap, LLayer, Feature -} = require('../index'); -const assign = require('object-assign'); -const ConfigUtils = require('../../../../utils/ConfigUtils'); -require("./snapshotMapStyle.css"); +} from '../index'; +import assign from 'object-assign'; +import ConfigUtils from '../../../../utils/ConfigUtils'; +import './snapshotMapStyle.css'; + +import '../../../map/openlayers/plugins/index'; /** * GrabMap for OpenLayers map generate a fake-map, hidden, and waits for the @@ -21,7 +23,7 @@ require("./snapshotMapStyle.css"); * In order to avoid cross origin issues, the allowTaint property have to be set * to false if you are not sure that the items come from the same orgin. */ -class GrabOlMap extends React.Component { +export default class GrabOlMap extends React.Component { static propTypes = { id: PropTypes.node, config: ConfigUtils.PropTypes.config, @@ -154,7 +156,3 @@ class GrabOlMap extends React.Component { }; } - -require('../../../map/openlayers/plugins/index'); - -module.exports = GrabOlMap; diff --git a/web/client/components/map/openlayers/snapshot/Preview.jsx b/web/client/components/map/openlayers/snapshot/Preview.jsx index 87ca4d216d..02a51adf3e 100644 --- a/web/client/components/map/openlayers/snapshot/Preview.jsx +++ b/web/client/components/map/openlayers/snapshot/Preview.jsx @@ -1,4 +1,3 @@ -const PropTypes = require('prop-types'); /** * Copyright 2015, GeoSolutions Sas. * All rights reserved. @@ -6,10 +5,11 @@ const PropTypes = require('prop-types'); * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const React = require('react'); -const ConfigUtils = require('../../../../utils/ConfigUtils'); -const ProxyUtils = require('../../../../utils/ProxyUtils'); -const {isEqual} = require('lodash'); +import PropTypes from 'prop-types'; +import React from 'react'; +import ConfigUtils from '../../../../utils/ConfigUtils'; +import ProxyUtils from '../../../../utils/ProxyUtils'; +import isEqual from 'lodash/isEqual'; /** * Preview for OpenLayers map generate is a fast system to get the image @@ -17,7 +17,7 @@ const {isEqual} = require('lodash'); * if it is not tainted, this can be used also to generate snapshot * (extracting the image URL from the canvas). */ -class GrabLMap extends React.Component { +export default class GrabLMap extends React.Component { static propTypes = { config: ConfigUtils.PropTypes.config, layers: PropTypes.array, @@ -166,5 +166,3 @@ class GrabLMap extends React.Component { return this.refs.canvas.toDataURL(); }; } - -module.exports = GrabLMap; diff --git a/web/client/components/map/openlayers/snapshot/__tests__/GrabMap-test.jsx b/web/client/components/map/openlayers/snapshot/__tests__/GrabMap-test.jsx index 79344600a4..52f2a71a4d 100644 --- a/web/client/components/map/openlayers/snapshot/__tests__/GrabMap-test.jsx +++ b/web/client/components/map/openlayers/snapshot/__tests__/GrabMap-test.jsx @@ -5,11 +5,11 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -var expect = require('expect'); +import expect from 'expect'; -var React = require('react'); -var ReactDOM = require('react-dom'); -var GrabMap = require('../GrabMap'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import GrabMap from '../GrabMap'; describe("the OL GrabMap component", () => { beforeEach((done) => { @@ -27,11 +27,6 @@ describe("the OL GrabMap component", () => { const tb = ReactDOM.render(, document.getElementById("snap")); expect(tb).toExist(); }); - /* it('component update', () => { - let tb = ReactDOM.render(, document.getElementById("snap")); - expect(tb).toExist(); - tb = ReactDOM.render(, document.getElementById("snap")); - });*/ it('component snapshot img creation', (done) => { let layers = [{ "source": "mapquest", diff --git a/web/client/components/map/openlayers/snapshot/__tests__/Preview-test.jsx b/web/client/components/map/openlayers/snapshot/__tests__/Preview-test.jsx index ce7e4fd290..beda56b6fe 100644 --- a/web/client/components/map/openlayers/snapshot/__tests__/Preview-test.jsx +++ b/web/client/components/map/openlayers/snapshot/__tests__/Preview-test.jsx @@ -5,16 +5,16 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -var expect = require('expect'); +import expect from 'expect'; -var React = require('react'); -var ReactDOM = require('react-dom'); -var GrabMap = require('../Preview'); -var OLMap = require('../../../../map/openlayers/Map.jsx'); +import React from 'react'; +import ReactDOM from 'react-dom'; +import GrabMap from '../Preview'; +import OLMap from '../../../../map/openlayers/Map'; -require('../../../../../utils/openlayers/Layers'); -require('../../../../map/openlayers/plugins/OSMLayer'); +import '../../../../../utils/openlayers/Layers'; +import '../../../../map/openlayers/plugins/OSMLayer'; describe("test the OL Snapshot Preview component", () => { beforeEach((done) => { diff --git a/web/client/components/map/plugins/openlayers.js b/web/client/components/map/plugins/openlayers.js index 3047538d1e..6161de8727 100644 --- a/web/client/components/map/plugins/openlayers.js +++ b/web/client/components/map/plugins/openlayers.js @@ -9,14 +9,14 @@ module.exports = () => { require('../openlayers/plugins/index'); return { - Map: require('../openlayers/Map'), - Layer: require('../openlayers/Layer'), - Feature: require('../openlayers/Feature'), - Locate: require('../openlayers/Locate'), - MeasurementSupport: require('../openlayers/MeasurementSupport'), - Overview: require('../openlayers/Overview'), - ScaleBar: require('../openlayers/ScaleBar'), - DrawSupport: require('../openlayers/DrawSupport') + Map: require('../openlayers/Map').default, + Layer: require('../openlayers/Layer').default, + Feature: require('../openlayers/Feature').default, + Locate: require('../openlayers/Locate').default, + MeasurementSupport: require('../openlayers/MeasurementSupport').default, + Overview: require('../openlayers/Overview').default, + ScaleBar: require('../openlayers/ScaleBar').default, + DrawSupport: require('../openlayers/DrawSupport').default }; }; diff --git a/web/client/components/mapcontrols/Snapshot/SnapshotSupport.jsx b/web/client/components/mapcontrols/Snapshot/SnapshotSupport.jsx index 8bb84c6d73..18ec4c1f93 100644 --- a/web/client/components/mapcontrols/Snapshot/SnapshotSupport.jsx +++ b/web/client/components/mapcontrols/Snapshot/SnapshotSupport.jsx @@ -7,5 +7,6 @@ */ module.exports = (mapType) => { - return require('../../map/' + mapType + '/SnapshotSupport'); + const SnapshotSupport = require('../../map/' + mapType + '/SnapshotSupport'); + return SnapshotSupport.default || SnapshotSupport; }; diff --git a/web/client/components/print/MapPreview.jsx b/web/client/components/print/MapPreview.jsx index 629b611520..c47b41ede6 100644 --- a/web/client/components/print/MapPreview.jsx +++ b/web/client/components/print/MapPreview.jsx @@ -57,10 +57,11 @@ class MapPreview extends React.Component { }; componentWillMount() { - PMap = require('../map/' + this.props.mapType + '/Map'); - Layer = require('../map/' + this.props.mapType + '/Layer'); + const mapComponents = require('../map/' + this.props.mapType + '/index'); + PMap = mapComponents.LMap; + Layer = mapComponents.LLayer; + Feature = mapComponents.Feature; require('../map/' + this.props.mapType + '/plugins/index'); - Feature = require('../map/' + this.props.mapType + '/index').Feature; } getRatio = () => { diff --git a/web/client/examples/api/index.html b/web/client/examples/api/index.html index 80ca465dd0..d87b48f0ef 100644 --- a/web/client/examples/api/index.html +++ b/web/client/examples/api/index.html @@ -7,7 +7,6 @@ - @@ -18,7 +17,6 @@ - diff --git a/web/client/index.html b/web/client/index.html index 2dba99399b..c0fff91c0c 100644 --- a/web/client/index.html +++ b/web/client/index.html @@ -86,13 +86,11 @@ - - diff --git a/web/client/indexTemplate.html b/web/client/indexTemplate.html index bab93731bc..53e736f90c 100644 --- a/web/client/indexTemplate.html +++ b/web/client/indexTemplate.html @@ -86,13 +86,11 @@ - - diff --git a/web/client/plugins/MapImport.jsx b/web/client/plugins/MapImport.jsx index 8201aa59e2..ac1f8382f1 100644 --- a/web/client/plugins/MapImport.jsx +++ b/web/client/plugins/MapImport.jsx @@ -18,6 +18,7 @@ const {toggleControl} = require('../actions/controls'); const assign = require('object-assign'); const {Glyphicon} = require('react-bootstrap'); +const {mapTypeSelector} = require('../selectors/maptype'); module.exports = { MapImportPlugin: assign({loadPlugin: (resolve) => { @@ -32,7 +33,8 @@ module.exports = { bbox: state.mapimport && state.mapimport.bbox || null, success: state.mapimport && state.mapimport.success || null, errors: state.mapimport && state.mapimport.errors || null, - shapeStyle: state.style || {} + shapeStyle: state.style || {}, + mapType: mapTypeSelector(state) } ), { setLayers, diff --git a/web/client/plugins/Snapshot.jsx b/web/client/plugins/Snapshot.jsx index 1b559080f6..4d83699eb4 100644 --- a/web/client/plugins/Snapshot.jsx +++ b/web/client/plugins/Snapshot.jsx @@ -14,6 +14,7 @@ const {onCreateSnapshot, changeSnapshotState, saveImage, onRemoveSnapshot, onSna const {mapSelector} = require('../selectors/map'); const {layersSelector} = require('../selectors/layers'); +const {mapTypeSelector} = require('../selectors/maptype'); const {toggleControl} = require('../actions/controls'); @@ -23,12 +24,14 @@ const {Glyphicon} = require('react-bootstrap'); const snapshotSelector = createSelector([ mapSelector, + mapTypeSelector, layersSelector, (state) => state.controls && state.controls.toolbar && state.controls.toolbar.active === "snapshot" || state.controls.snapshot && state.controls.snapshot.enabled, (state) => state.browser, (state) => state.snapshot || {queue: []} -], (map, layers, active, browser, snapshot) => ({ +], (map, mapType, layers, active, browser, snapshot) => ({ map, + mapType, layers, active, browser, diff --git a/web/client/plugins/map/openlayers/index.js b/web/client/plugins/map/openlayers/index.js index 5e025686ff..1986ecdb8d 100644 --- a/web/client/plugins/map/openlayers/index.js +++ b/web/client/plugins/map/openlayers/index.js @@ -11,14 +11,14 @@ const addI18NProps = require('../../../components/I18N/enhancers/addI18NProps'); const addFormatNumber = addI18NProps(['formatNumber']); module.exports = { - LMap: require('../../../components/map/openlayers/Map'), - Layer: require('../../../components/map/openlayers/Layer'), - Feature: require('../../../components/map/openlayers/Feature'), - Locate: require('../../../components/map/openlayers/Locate'), - MeasurementSupport: addFormatNumber(require('../../../components/map/openlayers/MeasurementSupport')), - Overview: require('../../../components/map/openlayers/Overview'), - ScaleBar: require('../../../components/map/openlayers/ScaleBar'), - DrawSupport: require('../../../components/map/openlayers/DrawSupport'), - HighlightFeatureSupport: require('../../../components/map/openlayers/HighlightFeatureSupport'), - SelectionSupport: require('../../../components/map/openlayers/SelectionSupport') + LMap: require('../../../components/map/openlayers/Map').default, + Layer: require('../../../components/map/openlayers/Layer').default, + Feature: require('../../../components/map/openlayers/Feature').default, + Locate: require('../../../components/map/openlayers/Locate').default, + MeasurementSupport: addFormatNumber(require('../../../components/map/openlayers/MeasurementSupport').default), + Overview: require('../../../components/map/openlayers/Overview').default, + ScaleBar: require('../../../components/map/openlayers/ScaleBar').default, + DrawSupport: require('../../../components/map/openlayers/DrawSupport').default, + HighlightFeatureSupport: require('../../../components/map/openlayers/HighlightFeatureSupport').default, + SelectionSupport: require('../../../components/map/openlayers/SelectionSupport').default }; diff --git a/web/client/reducers/annotations.js b/web/client/reducers/annotations.js index df3d4ac139..3d537cf302 100644 --- a/web/client/reducers/annotations.js +++ b/web/client/reducers/annotations.js @@ -7,8 +7,9 @@ */ const assign = require('object-assign'); -const ol = require('openlayers'); -const {reproject, reprojectGeoJson, transformLineToArcs} = require('../utils/CoordinatesUtils'); +const {transformLineToArcs} = require('../utils/CoordinatesUtils'); + +const circle = require('@turf/circle').default; const {PURGE_MAPINFO_RESULTS} = require('../actions/mapInfo'); const {TOGGLE_CONTROL} = require('../actions/controls'); @@ -75,35 +76,29 @@ function annotations(state = { validationErrors: {} }, action) { let features; if (selected.properties.isCircle) { - let center = !isNil(coordinates) ? validCoordinates[0] : state.selected.properties.center; + let centerCoords = !isNil(coordinates) ? validCoordinates[0] : state.selected.properties.center; selected = assign({}, {...selected, properties: { - ...state.selected.properties, center, radius: !isNil(radius) ? radius : selected.properties.radius + ...state.selected.properties, center: centerCoords, radius: !isNil(radius) ? radius : selected.properties.radius }}); features = state.editing.features.map(f => { return f.properties.id === state.selected.properties.id ? selected : f; }); - selected = {...selected, geometry: {coordinates: center, type: "Circle"}}; - let centerOL; - let c = [[[]]]; + selected = { ...selected, geometry: { coordinates: centerCoords, type: "Circle"}}; + let center; + let c = { + type: 'Polygon', + coordinates: [[[]]] + }; // polygonGeom setting if (validateCoordsArray(selected.properties.center)) { - centerOL = reproject(selected.properties.center, "EPSG:4326", "EPSG:3857"); - c = ol.geom.Polygon.fromCircle(new ol.geom.Circle([centerOL.x, centerOL.y], radius), 100).getCoordinates(); + center = selected.properties.center; + c = circle(center, radius * 1000, { steps: 100 }).geometry; } else { selected = set("properties.center", [], selected); } - // need to change the polygon coords after radius changes, but this implementation is ugly. is using ol to do that, maybe we need to refactor this - let feature = { - type: "Feature", - geometry: { - type: "Polygon", - coordinates: c - } - }; - let projFt = reprojectGeoJson(feature, "EPSG:3857", "EPSG:4326"); - selected = set("properties.polygonGeom", projFt.geometry, selected); + selected = set("properties.polygonGeom", c, selected); } else if (selected.properties.isText) { let c = !isNil(coordinates) ? validCoordinates[0] : state.selected.geometry.coordinates; selected = assign({}, {...selected, @@ -235,20 +230,11 @@ function annotations(state = { validationErrors: {} }, action) { }), selected); selected = set("properties.center", action.components[0], selected); selected = set("geometry.coordinates", action.components[0], selected); - let center = reproject(selected.properties.center, "EPSG:4326", "EPSG:3857"); // need to change the polygon coords after radius changes // but this implementation is ugly. is using openlayers to do that and maybe we need to refactor this - let coordinates = ol.geom.Polygon.fromCircle(new ol.geom.Circle([center.x, center.y], action.radius), 100).getCoordinates(); - let feature = { - type: "Feature", - geometry: { - type: "Polygon", - coordinates - } - }; - let projFt = reprojectGeoJson(feature, "EPSG:3857", "EPSG:4326"); - selected = set("properties.polygonGeom", projFt.geometry, selected); + let feature = circle(selected.properties.center, action.radius * 1000, { steps: 100 }); + selected = set("properties.polygonGeom", feature.geometry, selected); let ftChangedIndex = findIndex(state.editing.features, (f) => f.properties.id === state.selected.properties.id); const selectedGeoJSON = set("geometry", selected.properties.polygonGeom, selected); diff --git a/web/client/simple.html b/web/client/simple.html index 8a42685c82..ef2cd9af94 100644 --- a/web/client/simple.html +++ b/web/client/simple.html @@ -7,11 +7,9 @@ MapStore HomePage - - diff --git a/web/client/utils/DrawSupportUtils.jsx b/web/client/utils/DrawSupportUtils.jsx deleted file mode 100644 index e6ce24e679..0000000000 --- a/web/client/utils/DrawSupportUtils.jsx +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2017, GeoSolutions Sas. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. -*/ - -/** - * Utils used in DrawSupport for leaflet and openlayers -*/ - -const ol = require('openlayers'); -const {isArray} = require('lodash'); -const {reproject} = require('./CoordinatesUtils'); - -/** - * Transforms a leaflet bounds object into an array. - * @prop {object} the bounds - * @return the array [minx, miny, maxx, maxy] -*/ -const boundsToOLExtent = (bounds) => { - return [bounds.getWest(), bounds.getSouth(), bounds.getEast(), bounds.getNorth()]; -}; - -/** - * @return a feature extracted from leaflet layer used in queryform -*/ -const fromLeafletFeatureToQueryform = (layer) => { - let geoJesonFt = layer.toGeoJSON(); - let bounds = layer.getBounds(); - let extent = boundsToOLExtent(bounds); - let center = bounds.getCenter(); - let radius = layer.getRadius ? layer.getRadius() : 0; - let coordinates = geoJesonFt.features[0].geometry.coordinates; - let projection = "EPSG:4326"; - let type = geoJesonFt.features[0].geometry.type; - - // Geometry respect query form panel needs - return { - type, - extent, - center, - coordinates, - radius, - projection - }; -}; -const calculateRadius = (center, coordinates) => { - return isArray(coordinates) && isArray(coordinates[0]) && isArray(coordinates[0][0]) ? Math.sqrt(Math.pow(center[0] - coordinates[0][0][0], 2) + Math.pow(center[1] - coordinates[0][0][1], 2)) : 100; -}; - -const transformPolygonToCircle = (feature, mapCrs) => { - - if (!feature.getGeometry() || feature.getGeometry().getType() !== "Polygon" || feature.getProperties().center && feature.getProperties().center.length === 0) { - return feature; - } - if (feature.getProperties() && feature.getProperties().isCircle && feature.getProperties().center && feature.getProperties().center[0] && feature.getProperties().center[1]) { - // center must be a valid point - const extent = feature.getGeometry().getExtent(); - let center; - if (feature.getProperties().center) { - center = reproject(feature.getProperties().center, "EPSG:4326", mapCrs); - center = [center.x, center.y]; - } else { - center = ol.extent.getCenter(extent); - } - const radius = feature.getProperties().radius || calculateRadius(center, feature.getGeometry().getCoordinates()); - feature.setGeometry(new ol.geom.Circle(center, radius)); - return feature; - } - return feature; -}; - -module.exports = { - transformPolygonToCircle, - boundsToOLExtent, - fromLeafletFeatureToQueryform -}; diff --git a/web/client/utils/StyleUtils.js b/web/client/utils/StyleUtils.js index b417af104c..6b4b517b90 100644 --- a/web/client/utils/StyleUtils.js +++ b/web/client/utils/StyleUtils.js @@ -7,7 +7,8 @@ */ module.exports = (mapType) => { + const StyleUtils = require('./' + mapType + '/StyleUtils'); return { - toVectorStyle: require('./' + mapType + '/StyleUtils') + toVectorStyle: StyleUtils.default || StyleUtils }; }; diff --git a/web/client/utils/VectorStyleUtils.js b/web/client/utils/VectorStyleUtils.js index 5c29a7417b..cabc8e3e3f 100644 --- a/web/client/utils/VectorStyleUtils.js +++ b/web/client/utils/VectorStyleUtils.js @@ -10,6 +10,10 @@ const {isNil} = require('lodash'); const {set} = require('./ImmutableUtils'); const {colorToRgbaStr} = require('./ColorUtils'); const axios = require('axios'); +const SLDParser = require('geostyler-sld-parser').default; +const StyleParsers = { + sld: new SLDParser() +}; /** * checks if there is at least one attrbute in the object @@ -326,6 +330,10 @@ const createStylesAsync = (styles = []) => { }); }; +const getStyleParser = (format = 'sld') => { + return StyleParsers[format]; +}; + module.exports = { getGeometryFunction, SymbolsStyles, @@ -348,5 +356,6 @@ module.exports = { isFillStyle, getSymbolsStyles, setSymbolsStyles, - createStylesAsync + createStylesAsync, + getStyleParser }; diff --git a/web/client/utils/VectorTileUtils.js b/web/client/utils/VectorTileUtils.js new file mode 100644 index 0000000000..09cbfc8803 --- /dev/null +++ b/web/client/utils/VectorTileUtils.js @@ -0,0 +1,15 @@ +/* + * Copyright 2019, GeoSolutions Sas. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +export const VECTOR_FORMATS = [ + 'application/vnd.mapbox-vector-tile', + 'application/json;type=geojson', + 'application/json;type=topojson' +]; + +export const isVectorFormat = (format) => VECTOR_FORMATS.indexOf(format) !== -1; diff --git a/web/client/utils/__tests__/VectorStyleUtils-test.js b/web/client/utils/__tests__/VectorStyleUtils-test.js index 233afeff2d..ec320ef088 100644 --- a/web/client/utils/__tests__/VectorStyleUtils-test.js +++ b/web/client/utils/__tests__/VectorStyleUtils-test.js @@ -29,7 +29,8 @@ const { createSvgUrl, createStylesAsync, setSymbolsStyles, - getSymbolsStyles + getSymbolsStyles, + getStyleParser } = require("../VectorStyleUtils"); const LENGTH_OF_OBJECT_DATA_URL = "blob:http://localhost:9876/87844744-f879-4f5b-90bc-2cc6e70ba3cd".length; @@ -406,4 +407,10 @@ describe("VectorStyleUtils ", () => { expect(results[1].fillColor).toBe("#FF00FF"); }); }); + it('getStyleParser returns parsers for supported style formats', () => { + expect(getStyleParser('sld')).toExist(); + expect(getStyleParser('sld').readStyle).toExist(); + expect(getStyleParser('sld').writeStyle).toExist(); + expect(getStyleParser('css')).toNotExist(); + }); }); diff --git a/web/client/utils/__tests__/VectorTileUtils-test.js b/web/client/utils/__tests__/VectorTileUtils-test.js new file mode 100644 index 0000000000..26c0de691a --- /dev/null +++ b/web/client/utils/__tests__/VectorTileUtils-test.js @@ -0,0 +1,36 @@ +/* + * Copyright 2019, GeoSolutions Sas. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +import expect from 'expect'; +import { isVectorFormat } from '../VectorTileUtils'; + +describe('VectorTileUtils', () => { + it('test isVectorFormat with vector formats', () => { + const MVT = 'application/vnd.mapbox-vector-tile'; + expect(isVectorFormat(MVT)).toBe(true); + + const GeoJSON = 'application/json;type=geojson'; + expect(isVectorFormat(GeoJSON)).toBe(true); + + const TopoJSON = 'application/json;type=topojson'; + expect(isVectorFormat(TopoJSON)).toBe(true); + }); + it('test isVectorFormat with image formats', () => { + const PNG = 'image/png'; + expect(isVectorFormat(PNG)).toBe(false); + + const PNG8 = 'image/png8'; + expect(isVectorFormat(PNG8)).toBe(false); + + const JPEG = 'image/jpeg'; + expect(isVectorFormat(JPEG)).toBe(false); + + const GIF = 'image/gif'; + expect(isVectorFormat(GIF)).toBe(false); + }); +}); diff --git a/web/client/utils/leaflet/DrawSupportUtils.js b/web/client/utils/leaflet/DrawSupportUtils.js new file mode 100644 index 0000000000..673100500d --- /dev/null +++ b/web/client/utils/leaflet/DrawSupportUtils.js @@ -0,0 +1,45 @@ +/* + * Copyright 2017, GeoSolutions Sas. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. +*/ + +/** + * Utils used in DrawSupport for leaflet +*/ + +/** + * Transforms a leaflet bounds object into an array. + * @prop {object} the bounds + * @return the array [minx, miny, maxx, maxy] +*/ +export const boundsToOLExtent = (bounds) => { + return [bounds.getWest(), bounds.getSouth(), bounds.getEast(), bounds.getNorth()]; +}; + +/** + * @return a feature extracted from leaflet layer used in queryform +*/ +export const fromLeafletFeatureToQueryform = (layer) => { + let geoJesonFt = layer.toGeoJSON(); + let bounds = layer.getBounds(); + let extent = boundsToOLExtent(bounds); + let center = bounds.getCenter(); + let radius = layer.getRadius ? layer.getRadius() : 0; + let coordinates = geoJesonFt.features[0].geometry.coordinates; + let projection = "EPSG:4326"; + let type = geoJesonFt.features[0].geometry.type; + + // Geometry respect query form panel needs + return { + type, + extent, + center, + coordinates, + radius, + projection + }; +}; + diff --git a/web/client/utils/__tests__/DrawSupportUtils-test.js b/web/client/utils/leaflet/__tests__/DrawSupportUtils-test.js similarity index 100% rename from web/client/utils/__tests__/DrawSupportUtils-test.js rename to web/client/utils/leaflet/__tests__/DrawSupportUtils-test.js diff --git a/web/client/utils/leaflet/test/WMTS-test.js b/web/client/utils/leaflet/__tests__/WMTS-test.js similarity index 100% rename from web/client/utils/leaflet/test/WMTS-test.js rename to web/client/utils/leaflet/__tests__/WMTS-test.js diff --git a/web/client/utils/openlayers/DrawSupportUtils.js b/web/client/utils/openlayers/DrawSupportUtils.js new file mode 100644 index 0000000000..10c7a5f4fb --- /dev/null +++ b/web/client/utils/openlayers/DrawSupportUtils.js @@ -0,0 +1,39 @@ +/* + * Copyright 2019, GeoSolutions Sas. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. +*/ + +import isArray from 'lodash/isArray'; +import { reproject } from '../CoordinatesUtils'; + +import { getCenter } from 'ol/extent'; +import { Circle } from 'ol/geom'; + +const calculateRadius = (center, coordinates) => { + return isArray(coordinates) && isArray(coordinates[0]) && isArray(coordinates[0][0]) ? Math.sqrt(Math.pow(center[0] - coordinates[0][0][0], 2) + Math.pow(center[1] - coordinates[0][0][1], 2)) : 100; +}; + +export const transformPolygonToCircle = (feature, mapCrs) => { + + if (!feature.getGeometry() || feature.getGeometry().getType() !== "Polygon" || feature.getProperties().center && feature.getProperties().center.length === 0) { + return feature; + } + if (feature.getProperties() && feature.getProperties().isCircle && feature.getProperties().center && feature.getProperties().center[0] && feature.getProperties().center[1]) { + // center must be a valid point + const extent = feature.getGeometry().getExtent(); + let center; + if (feature.getProperties().center) { + center = reproject(feature.getProperties().center, "EPSG:4326", mapCrs); + center = [center.x, center.y]; + } else { + center = getCenter(extent); + } + const radius = feature.getProperties().radius || calculateRadius(center, feature.getGeometry().getCoordinates()); + feature.setGeometry(new Circle(center, radius)); + return feature; + } + return feature; +}; diff --git a/web/client/utils/openlayers/DrawUtils.js b/web/client/utils/openlayers/DrawUtils.js index 187fae6130..7df5a2f35c 100644 --- a/web/client/utils/openlayers/DrawUtils.js +++ b/web/client/utils/openlayers/DrawUtils.js @@ -6,24 +6,26 @@ * LICENSE file in the root directory of this source tree. */ -let ol = require('openlayers'); -module.exports = { - createOLGeometry: ({type, coordinates, radius, center} = {}) => { - let geometry; - switch (type) { - case "Point": { geometry = new ol.geom.Point(coordinates ? coordinates : []); break; } - case "LineString": { geometry = new ol.geom.LineString(coordinates ? coordinates : []); break; } - case "MultiPoint": { geometry = new ol.geom.MultiPoint(coordinates ? coordinates : []); break; } - case "MultiLineString": { geometry = new ol.geom.MultiLineString(coordinates ? coordinates : []); break; } - case "MultiPolygon": { geometry = new ol.geom.MultiPolygon(coordinates ? coordinates : []); break; } - // defaults is Polygon / Circle - default: { geometry = radius && center ? - ol.geom.Polygon.fromCircle(new ol.geom.Circle([center.x, center.y], radius), 100) : new ol.geom.Polygon(coordinates ? coordinates : []); - } +import {Point, LineString, MultiPoint, MultiLineString, Polygon, MultiPolygon, Circle} from 'ol/geom'; +import {fromCircle} from 'ol/geom/Polygon'; + +export const createOLGeometry = ({ type, coordinates, radius, center } = {}) => { + let geometry; + switch (type) { + case "Point": { geometry = new Point(coordinates ? coordinates : []); break; } + case "LineString": { geometry = new LineString(coordinates ? coordinates : []); break; } + case "MultiPoint": { geometry = new MultiPoint(coordinates ? coordinates : []); break; } + case "MultiLineString": { geometry = new MultiLineString(coordinates ? coordinates : []); break; } + case "MultiPolygon": { geometry = new MultiPolygon(coordinates ? coordinates : []); break; } + // defaults is Polygon / Circle + default: { + geometry = radius && center ? + fromCircle(new Circle([center.x, center.y], radius), 100) : new Polygon(coordinates ? coordinates : []); } - return geometry; - }, - isPolygon: (feature = {}) => { - return feature && feature.geometry && feature.geometry.type === "Polygon"; } + return geometry; +}; + +export const isPolygon = (feature = {}) => { + return feature && feature.geometry && feature.geometry.type === "Polygon"; }; diff --git a/web/client/utils/openlayers/Icons.js b/web/client/utils/openlayers/Icons.js index bca51ba6ba..03880fa5a0 100644 --- a/web/client/utils/openlayers/Icons.js +++ b/web/client/utils/openlayers/Icons.js @@ -6,40 +6,45 @@ * LICENSE file in the root directory of this source tree. */ -const ol = require('openlayers'); +import MarkerUtils from '../MarkerUtils'; + +import isArray from 'lodash/isArray'; +import isNumber from 'lodash/isNumber'; +import isNil from 'lodash/isNil'; + +import {Text, Fill, Style, Icon} from 'ol/style'; -const MarkerUtils = require('../MarkerUtils'); const markers = MarkerUtils.markers.extra; const extraMarker = markers.icons[0]; const extraMarkerShadow = markers.icons[1]; const glyphs = MarkerUtils.getGlyphs('fontawesome'); -const {isArray, isNumber, isNil} = require('lodash'); -const getHighlishtStyle = ({highlight, rotation = 0}) => (highlight ? [new ol.style.Style({ - text: new ol.style.Text({ + +const getHighlishtStyle = ({highlight, rotation = 0}) => (highlight ? [new Style({ + text: new Text({ rotation, text: '\ue165', font: '18px mapstore2', offsetY: -markers.size[1] - 10, - fill: new ol.style.Fill({color: '#FF00FF'}) + fill: new Fill({color: '#FF00FF'}) }) })] : []); -module.exports = { +export default { extra: { getIcon: (options = {}) => { const rotation = !isNil(options.style && options.style.rotation) ? options.style.rotation : 0; - return [new ol.style.Style({ - image: new ol.style.Icon(({ + return [new Style({ + image: new Icon(({ rotation, anchor: [12, 12], anchorXUnits: 'pixels', anchorYUnits: 'pixels', src: extraMarkerShadow })) - }), new ol.style.Style({ - image: new ol.style.Icon({ + }), new Style({ + image: new Icon({ rotation, src: extraMarker, anchor: [markers.size[0] / 2, markers.size[1]], @@ -48,12 +53,12 @@ module.exports = { size: markers.size, offset: [markers.colors.indexOf(options.style.iconColor || 'blue') * markers.size[0], markers.shapes.indexOf(options.style.iconShape || 'circle') * markers.size[1]] }), - text: new ol.style.Text({ + text: new Text({ rotation, text: glyphs[options.style.iconGlyph], font: '14px FontAwesome', offsetY: -markers.size[1] * 2 / 3, - fill: new ol.style.Fill({color: '#FFFFFF'}) + fill: new Fill({color: '#FFFFFF'}) }) })].concat(getHighlishtStyle(options.style)); @@ -63,8 +68,8 @@ module.exports = { getIcon: ({style, iconAnchor }) => { const rotation = !isNil(style && style.rotation) ? style.rotation : 0; const anchor = style.iconAnchor || iconAnchor; - let markerStyle = [new ol.style.Style({ - image: new ol.style.Icon(({ + let markerStyle = [new Style({ + image: new Icon(({ anchor: anchor || [0.5, 1], anchorXUnits: style.anchorXUnits || (( anchor || anchor === 0) ? 'pixels' : 'fraction'), anchorYUnits: style.anchorYUnits || (( anchor || anchor === 0) ? 'pixels' : 'fraction'), @@ -75,8 +80,8 @@ module.exports = { })) })]; if (style.shadowUrl) { - markerStyle = [new ol.style.Style({ - image: new ol.style.Icon({ + markerStyle = [new Style({ + image: new Icon({ anchor: [12, 41], anchorXUnits: 'pixels', anchorYUnits: 'pixels', diff --git a/web/client/utils/openlayers/Layers.js b/web/client/utils/openlayers/Layers.js index 06e6f8dadc..f2901f2f4a 100644 --- a/web/client/utils/openlayers/Layers.js +++ b/web/client/utils/openlayers/Layers.js @@ -8,74 +8,87 @@ const layerTypes = {}; -var Layers = { +export const registerType = function(type, impl) { + layerTypes[type] = impl; +}; - registerType: function(type, impl) { - layerTypes[type] = impl; - }, +export const createLayer = function(type, options, map, mapId) { + var layerCreator = layerTypes[type]; + if (layerCreator) { + return layerCreator.create(options, map, mapId); + } + return null; +}; - createLayer: function(type, options, map, mapId) { - var layerCreator = layerTypes[type]; - if (layerCreator) { - return layerCreator.create(options, map, mapId); +export const updateLayer = function(type, layer, newOptions, oldOptions, map, mapId) { + var layerCreator = layerTypes[type]; + if (layerCreator && layerCreator.update) { + return layerCreator.update(layer, newOptions, oldOptions, map, mapId); + } else if (oldOptions && layer && layer.getSource() && layer.getSource().updateParams) { + // old method, keept for compatibility. + // TODO move it in specific layerCreator where possibile + let changed = false; + if (oldOptions.params && newOptions.params) { + changed = Object.keys(oldOptions.params).reduce((found, param) => { + if (newOptions.params[param] !== oldOptions.params[param]) { + return true; + } + return found; + }, false); + } else if (!oldOptions.params && newOptions.params) { + changed = true; } - return null; - }, - updateLayer: function(type, layer, newOptions, oldOptions, map, mapId) { - var layerCreator = layerTypes[type]; - if (layerCreator && layerCreator.update) { - return layerCreator.update(layer, newOptions, oldOptions, map, mapId); - } else if (oldOptions && layer && layer.getSource() && layer.getSource().updateParams) { - // old method, keept for compatibility. - // TODO move it in specific layerCreator where possibile - let changed = false; - if (oldOptions.params && newOptions.params) { - changed = Object.keys(oldOptions.params).reduce((found, param) => { - if (newOptions.params[param] !== oldOptions.params[param]) { - return true; - } - return found; - }, false); - } else if (!oldOptions.params && newOptions.params) { - changed = true; - } - if (changed) { - layer.getSource().updateParams(newOptions.params); - } - } - }, - removeLayer: function(type, options, map, mapId, layer) { - var layerCreator = layerTypes[type]; - if (layerCreator && layerCreator.remove) { - return layerCreator.remove(options, map, mapId, layer); - } - return null; - }, - renderLayer: function(type, options, map, mapId, layer) { - var layerCreator = layerTypes[type]; - if (layerCreator && layerCreator.render) { - return layerCreator.render(options, map, mapId, layer); - } - return null; - }, - isValid(type, layer) { - var layerCreator = layerTypes[type]; - if (layerCreator && layerCreator.isValid) { - return layerCreator.isValid(layer); + if (changed) { + layer.getSource().updateParams(newOptions.params); } - return true; - }, - isSupported(type) { - return !!layerTypes[type]; - }, - isCompatible(type, options) { - const layerCreator = layerTypes[type]; - if (layerCreator && layerCreator.isCompatible) { - return layerCreator.isCompatible(options); - } - return true; } }; -module.exports = Layers; +export const removeLayer = function(type, options, map, mapId, layer) { + var layerCreator = layerTypes[type]; + if (layerCreator && layerCreator.remove) { + return layerCreator.remove(options, map, mapId, layer); + } + return null; +}; + +export const renderLayer = function(type, options, map, mapId, layer) { + var layerCreator = layerTypes[type]; + if (layerCreator && layerCreator.render) { + return layerCreator.render(options, map, mapId, layer); + } + return null; +}; + +export const isValid = function(type, layer) { + var layerCreator = layerTypes[type]; + if (layerCreator && layerCreator.isValid) { + return layerCreator.isValid(layer); + } + return true; +}; + +export const isSupported = function(type) { + return !!layerTypes[type]; +}; + +export const isCompatible = function(type, options) { + const layerCreator = layerTypes[type]; + if (layerCreator && layerCreator.isCompatible) { + return layerCreator.isCompatible(options); + } + return true; +}; + +export default { + registerType, + createLayer, + updateLayer, + removeLayer, + renderLayer, + isValid, + isSupported, + isCompatible +}; + diff --git a/web/client/utils/openlayers/OlLocate.js b/web/client/utils/openlayers/OlLocate.js index fd20f7e8f7..7d09ef4e95 100644 --- a/web/client/utils/openlayers/OlLocate.js +++ b/web/client/utils/openlayers/OlLocate.js @@ -6,13 +6,26 @@ * LICENSE file in the root directory of this source tree. */ -var ol = require('openlayers'); -var popUp = require('./OlPopUp')(); -var assign = require('object-assign'); +import olPopUp from './OlPopUp'; +import assign from 'object-assign'; +import {inherits} from 'ol'; +import BaseObject from 'ol/Object'; +import Overlay from 'ol/Overlay'; +import Feature from 'ol/Feature'; +import VectorSource from 'ol/source/Vector'; +import VectorLayer from 'ol/layer/Vector'; +import Geolocation from 'ol/Geolocation'; +import {Point, Circle} from 'ol/geom'; +import GeometryCollection from 'ol/geom/GeometryCollection'; +import {Style, Fill, Stroke} from 'ol/style'; +import CircleStyle from 'ol/style/Circle'; -var OlLocate = function(map, optOptions) { - ol.Object.call(this, {state: "DISABLED"}); +const popUp = olPopUp(); + + +const OlLocate = function(map, optOptions) { + BaseObject.call(this, {state: "DISABLED"}); this.map = map; let defOptions = { drawCircle: true, // draw accuracy circle @@ -41,43 +54,48 @@ var OlLocate = function(map, optOptions) { }; this.options = assign({}, defOptions, optOptions || {} ); - this.geolocate = new ol.Geolocation({ + this.geolocate = new Geolocation({ projection: this.map.getView().getProjection(), trackingOptions: this.options.locateOptions }); - this.geolocate.on('change:position', this._updatePosFt, this); + this.updateHandler = this._updatePosFt.bind(this); + this.geolocate.on('change:position', this.updateHandler); this.popup = popUp; this.popup.hidden = true; this.popCnt = popUp.getElementsByClassName("ol-popup-cnt")[0]; - this.overlay = new ol.Overlay({ + this.overlay = new Overlay({ element: this.popup, positioning: 'top-center', stopEvent: false }); - this.layer = new ol.layer.Vector({ - source: new ol.source.Vector({useSpatialIndex: false})}); - this.posFt = new ol.Feature({ + this.layer = new VectorLayer({ + source: new VectorSource({useSpatialIndex: false})}); + this.posFt = new Feature({ geometry: this.geolocate.getAccuracyGeometry(), name: 'position', id: '_locate-pos'}); this.posFt.setStyle(this.options.locateStyle); this.layer.getSource().addFeature(this.posFt); + + this.clickHandler = this.mapClick.bind(this); + this.stopHandler = this.stopFollow.bind(this); + this.errorHandler = this.options.onLocationError.bind(this); }; -ol.inherits(OlLocate, ol.Object); +inherits(OlLocate, BaseObject); OlLocate.prototype.start = function() { - this.geolocate.on('error', this.options.onLocationError, this); + this.geolocate.on('error', this.errorHandler); this.follow = this.options.follow; this.geolocate.setTracking(true); this.layer.setMap(this.map); this.map.addOverlay(this.overlay); if (this.options.showPopup) { - this.map.on('click', this.mapClick, this); - this.map.on('touch', this.mapClick, this); + this.map.on('click', this.clickHandler); + this.map.on('touch', this.clickHandler); } if (this.options.stopFollowingOnDrag) { - this.map.on('pointerdrag', this.stopFollow, this); + this.map.on('pointerdrag', this.stopHandler); } if (!this.p) { this.set("state", "LOCATING"); @@ -88,24 +106,24 @@ OlLocate.prototype.start = function() { OlLocate.prototype.startFollow = function() { this.follow = true; if (this.options.stopFollowingOnDrag) { - this.map.on('pointerdrag', this.stopFollow, this); + this.map.on('pointerdrag', this.stopHandler); } if (this.p) { this._updatePosFt(); } }; OlLocate.prototype.stop = function() { - this.geolocate.un('error', this.options.onLocationError, this); + this.geolocate.un('error', this.errorHandler); this.geolocate.setTracking(false); this.popup.hide = true; this.map.removeOverlay(this.overlay); this.layer.setMap( null ); if (this.options.showPopup) { - this.map.un('click', this.mapClick); - this.map.un('touch', this.mapClick); + this.map.un('click', this.clickHandler); + this.map.un('touch', this.clickHandler); } if (this.options.stopFollowingOnDrag && !this.follow) { - this.map.un('pointerdrag', this.stopFollow, this); + this.map.un('pointerdrag', this.stopHandler); } this.set("state", "DISABLED"); }; @@ -113,7 +131,7 @@ OlLocate.prototype.stop = function() { OlLocate.prototype.stopFollow = function() { this.follow = false; - this.map.un('pointerdrag', this.stopFollow, this); + this.map.un('pointerdrag', this.stopHandler); this.set("state", "ENABLED"); }; @@ -125,12 +143,12 @@ OlLocate.prototype._updatePosFt = function() { } let p = this.geolocate.getPosition(); this.p = p; - let point = new ol.geom.Point([parseFloat(p[0]), parseFloat(p[1])]); + let point = new Point([parseFloat(p[0]), parseFloat(p[1])]); if (this.options.drawCircle) { - let accuracy = new ol.geom.Circle([parseFloat(p[0]), parseFloat(p[1])], this.geolocate.getAccuracy()); - this.posFt.setGeometry(new ol.geom.GeometryCollection([point, accuracy])); + let accuracy = new Circle([parseFloat(p[0]), parseFloat(p[1])], this.geolocate.getAccuracy()); + this.posFt.setGeometry(new GeometryCollection([point, accuracy])); } else { - this.posFt.setGeometry(new ol.geom.GeometryCollection([point])); + this.posFt.setGeometry(new GeometryCollection([point])); } if (!this.popup.hidden) { this._updatePopUpCnt(); @@ -185,14 +203,14 @@ OlLocate.prototype.mapClick = function(evt) { }; OlLocate.prototype._getDefaultStyles = function() { - return new ol.style.Style({ - image: new ol.style.Circle({ + return new Style({ + image: new CircleStyle({ radius: 6, - fill: new ol.style.Fill({color: 'rgba(42,147,238,0.7)'}), - stroke: new ol.style.Stroke({color: 'rgba(19,106,236,1)', width: 2}) + fill: new Fill({color: 'rgba(42,147,238,0.7)'}), + stroke: new Stroke({color: 'rgba(19,106,236,1)', width: 2}) }), - fill: new ol.style.Fill({color: 'rgba(19,106,236,0.15)'}), - stroke: new ol.style.Stroke({color: 'rgba(19,106,236,1)', width: 2}) + fill: new Fill({color: 'rgba(19,106,236,0.15)'}), + stroke: new Stroke({color: 'rgba(19,106,236,1)', width: 2}) }); }; @@ -200,4 +218,4 @@ OlLocate.prototype.setStrings = function(newStrings) { this.options.strings = assign({}, this.options.strings, newStrings); }; -module.exports = OlLocate; +export default OlLocate; diff --git a/web/client/utils/openlayers/OlPopUp.js b/web/client/utils/openlayers/OlPopUp.js index 3d17d259d5..331eed0985 100644 --- a/web/client/utils/openlayers/OlPopUp.js +++ b/web/client/utils/openlayers/OlPopUp.js @@ -6,9 +6,9 @@ * LICENSE file in the root directory of this source tree. */ -require('./olPopUp.css'); +import './olPopUp.css'; -let popUp = function() { +export default function() { let pop = document.createElement('div'); pop.setAttribute("class", "ol-popup"); let popDismis = document.createElement('a'); @@ -29,5 +29,4 @@ let popUp = function() { pop.appendChild(popCntWrap); pop.appendChild(popTipWrap); return pop; -}; -module.exports = popUp; +} diff --git a/web/client/utils/openlayers/StyleUtils.js b/web/client/utils/openlayers/StyleUtils.js index c21543bda7..4926ee7944 100644 --- a/web/client/utils/openlayers/StyleUtils.js +++ b/web/client/utils/openlayers/StyleUtils.js @@ -5,8 +5,9 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const assign = require('object-assign'); -const ol = require('openlayers'); +import assign from 'object-assign'; +import {Style, Stroke, Fill} from 'ol/style'; +import CircleStyle from 'ol/style/Circle'; const getColor = function(color) { return `rgba(${ color.r }, ${ color.g }, ${ color.b }, ${ color.a })`; @@ -29,18 +30,18 @@ const toVectorStyle = function(layer, style) { color: getColor(style.color), fillColor: getColor(style.fill) }; - let stroke = new ol.style.Stroke({ + let stroke = new Stroke({ color: getColor(style.color), width: style.width }); - let fill = new ol.style.Fill({ + let fill = new Fill({ color: getColor(style.fill) }); switch (getGeomType(layer)) { case 'Polygon': case 'MultiPolygon': { // TODO clear this, it goes in maximum call stack size exceeded - newLayer.nativeStyle = new ol.style.Style({ + newLayer.nativeStyle = new Style({ stroke: stroke, fill: fill }); @@ -50,7 +51,7 @@ const toVectorStyle = function(layer, style) { case 'LineString': { // TODO clear this, it goes in maximum call stack size exceeded - newLayer.nativeStyle = new ol.style.Style({ + newLayer.nativeStyle = new Style({ stroke: stroke }); break; @@ -58,8 +59,8 @@ const toVectorStyle = function(layer, style) { case 'Point': case 'MultiPoint': { // TODO clear this, it goes in maximum call stack size exceeded - newLayer.nativeStyle = new ol.style.Style({ - image: new ol.style.Circle({ + newLayer.nativeStyle = new Style({ + image: new CircleStyle({ radius: style.radius, fill: fill, stroke: stroke @@ -68,11 +69,11 @@ const toVectorStyle = function(layer, style) { } case 'GeometryCollection': { // TODO clear this, it goes in maximum call stack size exceeded - newLayer.nativeStyle = new ol.style.Style({ + newLayer.nativeStyle = new Style({ radius: style.radius, stroke: stroke, fill: fill, - image: new ol.style.Circle({ + image: new CircleStyle({ radius: style.radius, fill: fill, stroke: stroke @@ -88,4 +89,4 @@ const toVectorStyle = function(layer, style) { return newLayer; }; -module.exports = toVectorStyle; +export default toVectorStyle; diff --git a/web/client/utils/openlayers/VectorTileUtils.js b/web/client/utils/openlayers/VectorTileUtils.js new file mode 100644 index 0000000000..669edf2d6f --- /dev/null +++ b/web/client/utils/openlayers/VectorTileUtils.js @@ -0,0 +1,26 @@ +/* + * Copyright 2019, GeoSolutions Sas. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +import MVT from 'ol/format/MVT'; +import GeoJSON from 'ol/format/GeoJSON'; +import TopoJSON from 'ol/format/TopoJSON'; +import { getStyle } from '../../components/map/openlayers/VectorStyle'; + +export const OL_VECTOR_FORMATS = { + 'application/vnd.mapbox-vector-tile': MVT, + 'application/json;type=geojson': GeoJSON, + 'application/json;type=topojson': TopoJSON +}; + +export const applyStyle = (vectorStyle, layer) => { + getStyle({ asPromise: true, style: vectorStyle }).then((style) => { + layer.setStyle(style); + }).catch(() => { + // TODO: error notifications + }); +}; diff --git a/web/client/utils/openlayers/__tests__/Icons-test.js b/web/client/utils/openlayers/__tests__/Icons-test.js index cc625f6976..23b6e0d846 100644 --- a/web/client/utils/openlayers/__tests__/Icons-test.js +++ b/web/client/utils/openlayers/__tests__/Icons-test.js @@ -6,7 +6,7 @@ * LICENSE file in the root directory of this source tree. */ -import * as Icons from '../Icons'; +import Icons from '../Icons'; import expect from 'expect'; describe('Icons openlayers styles', () => { @@ -39,7 +39,6 @@ describe('Icons openlayers styles', () => { expect(iconImage.getOrigin()).toEqual([72, 46]); expect(iconImage.getRotation()).toEqual(1); expect(iconImage.getSize()).toEqual([36, 46]); - expect(iconImage.getSnapToPixel()).toEqual(true); expect(new RegExp("/web/client/components/mapcontrols/annotations/img/markers_default.png").test(iconImage.getSrc())).toEqual(true); const iconText = icon.getText(); expect(iconText).toExist(); @@ -91,7 +90,6 @@ describe('Icons openlayers styles', () => { expect(iconImage.getOrigin()).toEqual([0, 0]); expect(iconImage.getRotation()).toEqual(1); expect(iconImage.getSize()).toEqual([14, 14]); - expect(iconImage.getSnapToPixel()).toEqual(true); }); it('test standard getIcon iconUrl, yes shadow, yes highlight', () => { const getIcon = Icons.standard.getIcon; @@ -119,7 +117,6 @@ describe('Icons openlayers styles', () => { expect(iconImage.getOrigin()).toEqual([0, 0]); expect(iconImage.getRotation()).toEqual(1); expect(iconImage.getSize()).toEqual([14, 14]); - expect(iconImage.getSnapToPixel()).toEqual(true); const highlightStyle = styles[2]; expect(highlightStyle).toExist(); const highlightStyleText = highlightStyle.getText(); diff --git a/web/client/utils/openlayers/__tests__/VectorTileUtils-test.js b/web/client/utils/openlayers/__tests__/VectorTileUtils-test.js new file mode 100644 index 0000000000..0d01ef9cf5 --- /dev/null +++ b/web/client/utils/openlayers/__tests__/VectorTileUtils-test.js @@ -0,0 +1,18 @@ +/* + * Copyright 2019, GeoSolutions Sas. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. + */ + +import expect from 'expect'; +import { OL_VECTOR_FORMATS } from '../VectorTileUtils'; + +describe('VectorTileUtils openlayers', () => { + it('test OL_VECTOR_FORMATS contains entry for all supported formats', () => { + expect(OL_VECTOR_FORMATS['application/vnd.mapbox-vector-tile']).toExist(); + expect(OL_VECTOR_FORMATS['application/json;type=geojson']).toExist(); + expect(OL_VECTOR_FORMATS['application/json;type=topojson']).toExist(); + }); +}); diff --git a/web/client/utils/openlayers/projUtils.js b/web/client/utils/openlayers/projUtils.js index e82ab99818..547940e9ec 100644 --- a/web/client/utils/openlayers/projUtils.js +++ b/web/client/utils/openlayers/projUtils.js @@ -5,13 +5,15 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ -const projUtils = { + +import {addProjection, Projection} from 'ol/proj'; +export default { /** * function needed in openlayer for adding new projection */ - addProjections: function(ol, code, extent, worldExtent, axisOrientation) { - ol.proj.addProjection(new ol.proj.Projection({ + addProjections: function(code, extent, worldExtent, axisOrientation) { + addProjection(new Projection({ code, extent, worldExtent, @@ -20,5 +22,3 @@ const projUtils = { ); } }; - -module.exports = projUtils;