diff --git a/build/examples-webpack.config.js b/build/examples-webpack.config.js index aa29b9f8d2..87b3f0ecec 100644 --- a/build/examples-webpack.config.js +++ b/build/examples-webpack.config.js @@ -1,6 +1,18 @@ -var webpackConfig = require('./webpack.config.js'); -var assign = require('object-assign'); +const themeEntries = require('./themes.js').themeEntries; +const extractThemesPlugin = require('./themes.js').extractThemesPlugin; -assign(webpackConfig.entry, require('./examples.js')); +const path = require("path"); -module.exports = webpackConfig; +module.exports = require('./buildConfig')( + require('./examples.js'), + themeEntries, + { + base: path.join(__dirname, ".."), + dist: path.join(__dirname, "..", "web", "client", "dist"), + framework: path.join(__dirname, "..", "web", "client"), + code: path.join(__dirname, "..", "web", "client") + }, + extractThemesPlugin, + false, + "/dist/" +); diff --git a/build/prod-webpack.config.js b/build/prod-webpack.config.js index 3b18c9ce45..390a2df4b6 100644 --- a/build/prod-webpack.config.js +++ b/build/prod-webpack.config.js @@ -4,6 +4,7 @@ const assign = require('object-assign'); const themeEntries = require('./themes.js').themeEntries; const extractThemesPlugin = require('./themes.js').extractThemesPlugin; const HtmlWebpackPlugin = require('html-webpack-plugin'); +const DynamicPublicPathPlugin = require("dynamic-public-path-webpack-plugin"); const paths = { base: path.join(__dirname, ".."), @@ -46,5 +47,10 @@ module.exports = require('./buildConfig')( hash: true, filename: 'api.html' }) - ] + ].concat(Object.keys(require('./examples')).map(function(example) { + return new DynamicPublicPathPlugin({ + externalGlobal: 'window.mapStoreDist', + chunkName: example + }); + })) ); diff --git a/docs/user-guide/footer.md b/docs/user-guide/footer.md index ecd535c366..579ec7d0c1 100644 --- a/docs/user-guide/footer.md +++ b/docs/user-guide/footer.md @@ -3,4 +3,23 @@ Located at the bottom of the Data Frame, the Footer can be expanded by clicking on the mouse icon and it contains a scale bar, a map scale switcher, the coordinates of the mouse pointer and a coordinate reference system switcher. - \ No newline at end of file + + +CRS Selector +------------ + +[MapStore](https://mapstore2.geo-solutions.it/mapstore/#/) provides a *CRS Selector* through which you are able to switch the *Coordinate Reference System* of your map. In the bottom-right corner of the screen you should see this icon . + + + +Switching *CRS* is very simple: + +* **Click** on the *CRS Selector* icon . + +* **Select** the *CRS* and **click** on it. + + + +In order to identify the desired CRS, you can also filter the CRS list by typing in a search input field located in the bottom part of the selector. This selection will be saved along with the map. + +note: the list of CRSs is customizable by MapStore's configuiration. \ No newline at end of file diff --git a/docs/user-guide/timeline.md b/docs/user-guide/timeline.md index 361f07b806..10d7fc3f01 100644 --- a/docs/user-guide/timeline.md +++ b/docs/user-guide/timeline.md @@ -5,7 +5,7 @@ The Timeline is an useful tool for managing layers with a time dimension. It makes possible to observe the layers' evolution over time, to inspect the layer configuration at a specific time instant (or in a time range) and to view different layer configurations time by time dynamically through animations.
!!! warning - Timeline actually works only with **WMTS-Multidim extension** (WMS time in capabilities is not fully supported) and at least **GeoServer 2.14.5**. Anyway to support all the functionality you need **GeoServer 2.15.2**. + Timeline actually works only with [**WMTS-Multidim extension**](https://docs.geoserver.org/stable/en/user/community/wmts-multidimensional/index.html) (WMS time in capabilities is not fully supported) and at least **GeoServer 2.14.5**. Anyway to support all the functionality you need **GeoServer 2.15.2**. From now on, the layers that the Timeline can manage will be addressed as ***time layers***. When you load ***time layers*** the Timeline panel becomes automatically visible and allows you to take a look at the main functionalities. diff --git a/package-lock.json b/package-lock.json index a5f50af084..bac2ba9632 100644 --- a/package-lock.json +++ b/package-lock.json @@ -452,7 +452,7 @@ "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==" }, "accepts": { "version": "1.3.7", @@ -466,7 +466,7 @@ "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==" }, "acorn-dynamic-import": { "version": "2.0.2", @@ -504,7 +504,7 @@ }, "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.2.1" @@ -600,7 +600,7 @@ "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.3.11", @@ -706,7 +706,7 @@ "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.3" @@ -720,7 +720,7 @@ "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==" }, "arr-union": { "version": "3.1.0", @@ -777,7 +777,7 @@ "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.11.8", @@ -837,7 +837,7 @@ "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==", "requires": { "lodash": "4.17.5" } @@ -916,7 +916,7 @@ "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", @@ -937,7 +937,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -967,7 +967,7 @@ }, "babel-core": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.8.0.tgz", + "resolved": "http://registry.npmjs.org/babel-core/-/babel-core-6.8.0.tgz", "integrity": "sha1-Uv3gtMBdnrf2Cto8dWZiOPFNFCA=", "dev": true, "requires": { @@ -997,7 +997,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": { @@ -1017,7 +1017,7 @@ }, "lodash": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true }, @@ -1058,7 +1058,7 @@ }, "babel-core": { "version": "5.8.38", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.38.tgz", + "resolved": "http://registry.npmjs.org/babel-core/-/babel-core-5.8.38.tgz", "integrity": "sha1-H8ruedfmG3ULALjlT238nQr4ZVg=", "dev": true, "requires": { @@ -1112,19 +1112,19 @@ }, "babylon": { "version": "5.8.38", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz", + "resolved": "http://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz", "integrity": "sha1-7JsSCxG/bM1Bc6GL8hfmC3mFn/0=", "dev": true }, "bluebird": { "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "resolved": "http://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", "dev": true }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -1191,7 +1191,7 @@ }, "lodash": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true }, @@ -1253,7 +1253,7 @@ "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", @@ -1604,7 +1604,7 @@ }, "babel-plugin-add-module-exports": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.1.4.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.1.4.tgz", "integrity": "sha1-Glttdh7h9mPYRbTqaHhxLeMcEHo=", "dev": true, "requires": { @@ -1679,7 +1679,7 @@ "dependencies": { "lodash": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true } @@ -2179,7 +2179,7 @@ }, "babel-plugin-undeclared-variables-check": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", "integrity": "sha1-XPGqU52BP/ZOmWQSkK9iCWX2Xe4=", "dev": true, "requires": { @@ -2194,7 +2194,7 @@ }, "babel-polyfill": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.8.0.tgz", + "resolved": "http://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.8.0.tgz", "integrity": "sha1-bjP6DCa7bcfW8XEXYYT9W5XkVsI=", "requires": { "babel-regenerator-runtime": "6.5.0", @@ -2294,7 +2294,7 @@ }, "babel-regenerator-runtime": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/babel-regenerator-runtime/-/babel-regenerator-runtime-6.5.0.tgz", + "resolved": "http://registry.npmjs.org/babel-regenerator-runtime/-/babel-regenerator-runtime-6.5.0.tgz", "integrity": "sha1-DkHNHJ+ARCRm8BXHSf/4upj44RA=" }, "babel-register": { @@ -2315,7 +2315,7 @@ "babel-core": { "version": "6.26.3", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha1-suLwnjQtDwyI4vAuBneUEl51wgc=", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -2342,7 +2342,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": { @@ -2379,7 +2379,7 @@ }, "babel-standalone": { "version": "6.7.7", - "resolved": "https://registry.npmjs.org/babel-standalone/-/babel-standalone-6.7.7.tgz", + "resolved": "http://registry.npmjs.org/babel-standalone/-/babel-standalone-6.7.7.tgz", "integrity": "sha1-JnxxcocZp66FHtjsQKbZvznCJiM=" }, "babel-template": { @@ -2398,7 +2398,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 } } @@ -2423,7 +2423,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": { @@ -2473,7 +2473,7 @@ "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { "cache-base": "1.0.1", "class-utils": "0.3.6", @@ -2495,7 +2495,7 @@ "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==", "requires": { "kind-of": "6.0.2" } @@ -2503,7 +2503,7 @@ "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==", "requires": { "kind-of": "6.0.2" } @@ -2511,7 +2511,7 @@ "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==", "requires": { "is-accessor-descriptor": "1.0.0", "is-data-descriptor": "1.0.0", @@ -2521,7 +2521,7 @@ "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==" } } }, @@ -2534,7 +2534,7 @@ "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": { @@ -2545,7 +2545,7 @@ "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": { @@ -2617,7 +2617,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -2637,12 +2637,12 @@ "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": { @@ -2733,7 +2733,7 @@ "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==", "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -2795,7 +2795,7 @@ "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.2.0", @@ -2817,7 +2817,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -2843,7 +2843,7 @@ "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.10" @@ -2861,7 +2861,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { @@ -2929,7 +2929,7 @@ "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==", "requires": { "collection-visit": "1.0.0", "component-emitter": "1.2.1", @@ -3044,7 +3044,7 @@ }, "cesium": { "version": "1.17.0", - "resolved": "https://registry.npmjs.org/cesium/-/cesium-1.17.0.tgz", + "resolved": "http://registry.npmjs.org/cesium/-/cesium-1.17.0.tgz", "integrity": "sha1-cwIchDRrKbTg4/3NI6IHJq2Ppaw=", "dev": true, "requires": { @@ -3066,7 +3066,7 @@ }, "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", @@ -3077,7 +3077,7 @@ "change-case": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz", - "integrity": "sha1-/Uh0bM4C8D8KZyV30dOo3C7OsDc=", + "integrity": "sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==", "dev": true, "requires": { "camel-case": "3.0.0", @@ -3147,7 +3147,7 @@ "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.3", @@ -3157,7 +3157,7 @@ "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" @@ -3171,7 +3171,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -3196,7 +3196,7 @@ "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==", "requires": { "arr-union": "3.1.0", "define-property": "0.2.5", @@ -3231,7 +3231,7 @@ "dependencies": { "commander": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz", "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { @@ -3389,7 +3389,7 @@ }, "codemirror": { "version": "5.18.2", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.18.2.tgz", + "resolved": "http://registry.npmjs.org/codemirror/-/codemirror-5.18.2.tgz", "integrity": "sha1-VbQtAZD3LshsE/JdlF80fKvBao4=" }, "collection-visit": { @@ -3690,13 +3690,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": { @@ -4024,7 +4024,7 @@ "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.1", @@ -4401,7 +4401,7 @@ "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.6", @@ -4410,7 +4410,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -4424,12 +4424,12 @@ "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": { @@ -4445,7 +4445,7 @@ "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.2" @@ -4462,7 +4462,7 @@ }, "strip-dirs": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", "dev": true, "requires": { @@ -4512,7 +4512,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -4534,7 +4534,7 @@ }, "strip-dirs": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", "dev": true, "requires": { @@ -4632,7 +4632,7 @@ "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==", "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" @@ -4641,7 +4641,7 @@ "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==", "requires": { "kind-of": "6.0.2" } @@ -4649,7 +4649,7 @@ "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==", "requires": { "kind-of": "6.0.2" } @@ -4657,7 +4657,7 @@ "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==", "requires": { "is-accessor-descriptor": "1.0.0", "is-data-descriptor": "1.0.0", @@ -4667,7 +4667,7 @@ "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==" } } }, @@ -4703,7 +4703,7 @@ }, "yargs": { "version": "3.27.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz", "integrity": "sha1-ISBUaTFuk5Ex1Z8toMbX+YIh6kA=", "dev": true, "requires": { @@ -4776,7 +4776,7 @@ "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", @@ -4825,7 +4825,7 @@ "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.17.5", "lodash-es": "4.17.11", @@ -4877,7 +4877,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -4911,7 +4911,7 @@ }, "jsonfile": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { @@ -4921,7 +4921,7 @@ "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.7", @@ -5037,7 +5037,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": { @@ -5183,7 +5183,7 @@ "dependencies": { "ansi-regex": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "resolved": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", "dev": true }, @@ -5195,7 +5195,7 @@ }, "chalk": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", "dev": true, "requires": { @@ -5240,7 +5240,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -5254,6 +5254,12 @@ "cli": "1.0.1" } }, + "dynamic-public-path-webpack-plugin": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dynamic-public-path-webpack-plugin/-/dynamic-public-path-webpack-plugin-1.0.4.tgz", + "integrity": "sha1-5UUbG3AOhF8qQAnd96mo7byZRSc=", + "dev": true + }, "each-async": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", @@ -5267,7 +5273,7 @@ "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", @@ -5356,7 +5362,7 @@ "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" @@ -5463,7 +5469,7 @@ "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" @@ -5555,7 +5561,7 @@ }, "es6-promise": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", + "resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=" }, "es6-set": { @@ -5718,7 +5724,7 @@ }, "eslint": { "version": "0.24.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-0.24.1.tgz", + "resolved": "http://registry.npmjs.org/eslint/-/eslint-0.24.1.tgz", "integrity": "sha1-VKUICYVbllVyHG8u5Xs1HtzigQE=", "dev": true, "requires": { @@ -5754,7 +5760,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -5838,7 +5844,7 @@ }, "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", @@ -5847,7 +5853,7 @@ "dependencies": { "acorn": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true } @@ -5942,7 +5948,7 @@ "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.5", @@ -6099,7 +6105,7 @@ }, "expect": { "version": "1.20.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-1.20.1.tgz", + "resolved": "http://registry.npmjs.org/expect/-/expect-1.20.1.tgz", "integrity": "sha1-0/GEI75tBPgp2qvCQIedeGft9fM=", "dev": true, "requires": { @@ -6190,12 +6196,12 @@ "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": { @@ -6244,18 +6250,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": { @@ -6283,7 +6289,7 @@ "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==", "requires": { "is-plain-object": "2.0.4" } @@ -6379,7 +6385,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", @@ -6530,7 +6536,7 @@ "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": { @@ -6714,7 +6720,7 @@ "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": { @@ -6776,8 +6782,8 @@ "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": { @@ -6792,7 +6798,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -6835,7 +6841,7 @@ "dev": true, "optional": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "deep-extend": { @@ -6866,7 +6872,7 @@ "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.3.5" } }, "fs.realpath": { @@ -6883,14 +6889,14 @@ "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": { @@ -6900,12 +6906,12 @@ "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": { @@ -6922,7 +6928,7 @@ "dev": true, "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "ignore-walk": { @@ -6932,7 +6938,7 @@ "dev": true, "optional": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "inflight": { @@ -6942,8 +6948,8 @@ "dev": true, "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -6965,7 +6971,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "isarray": { @@ -6981,7 +6987,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -6996,8 +7002,8 @@ "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "safe-buffer": "5.1.2", + "yallist": "3.0.3" } }, "minizlib": { @@ -7007,7 +7013,7 @@ "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.3.5" } }, "mkdirp": { @@ -7033,9 +7039,9 @@ "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": { @@ -7045,16 +7051,16 @@ "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": { @@ -7064,8 +7070,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "npm-bundled": { @@ -7082,8 +7088,8 @@ "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": { @@ -7093,10 +7099,10 @@ "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": { @@ -7118,7 +7124,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "os-homedir": { @@ -7142,8 +7148,8 @@ "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": { @@ -7167,10 +7173,10 @@ "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": { @@ -7189,13 +7195,13 @@ "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": { @@ -7205,7 +7211,7 @@ "dev": true, "optional": true, "requires": { - "glob": "^7.1.3" + "glob": "7.1.3" } }, "safe-buffer": { @@ -7255,9 +7261,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": 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": { @@ -7267,7 +7273,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "strip-ansi": { @@ -7276,7 +7282,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { @@ -7293,13 +7299,13 @@ "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": { @@ -7316,7 +7322,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "1.0.2" } }, "wrappy": { @@ -7336,7 +7342,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "gauge": { "version": "2.7.4", @@ -7625,7 +7631,7 @@ }, "lodash": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", "dev": true }, @@ -7662,7 +7668,7 @@ "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": { @@ -7990,7 +7996,7 @@ "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.5" @@ -8005,7 +8011,7 @@ "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.3", @@ -8073,7 +8079,7 @@ }, "html-webpack-plugin": { "version": "2.17.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.17.0.tgz", + "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.17.0.tgz", "integrity": "sha1-QNTgAQGR2PTRi3hD1xO8XqP8uug=", "dev": true, "requires": { @@ -8099,7 +8105,7 @@ }, "commander": { "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { @@ -8147,7 +8153,7 @@ }, "uglify-js": { "version": "2.6.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", + "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", "integrity": "sha1-ZeovswWck5RpLxX+2HwrNsFrmt8=", "dev": true, "requires": { @@ -8208,7 +8214,7 @@ }, "http-errors": { "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { "depd": "1.1.2", @@ -8233,7 +8239,7 @@ "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.1.2", @@ -8439,12 +8445,12 @@ "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": { "version": "0.8.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.8.5.tgz", + "resolved": "http://registry.npmjs.org/inquirer/-/inquirer-0.8.5.tgz", "integrity": "sha1-29dAz2yjtzEpamPOb22WGFHzNt8=", "dev": true, "requires": { @@ -8460,7 +8466,7 @@ "dependencies": { "ansi-regex": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", "integrity": "sha1-QchHGUZGN15qGl0Qw8oFTvn8mA0=", "dev": true }, @@ -8472,7 +8478,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -8485,7 +8491,7 @@ }, "lodash": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true }, @@ -8548,7 +8554,7 @@ "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.4.0" } @@ -8632,7 +8638,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", @@ -8663,7 +8669,7 @@ "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==", "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", @@ -8673,7 +8679,7 @@ "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==" } } }, @@ -8748,7 +8754,7 @@ "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": { @@ -8792,7 +8798,7 @@ "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": { @@ -8837,7 +8843,7 @@ "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==", "requires": { "isobject": "3.0.1" } @@ -8933,7 +8939,7 @@ "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==" }, "is-zip": { "version": "1.0.0", @@ -9193,13 +9199,13 @@ "dependencies": { "commander": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-0.6.1.tgz", "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", "dev": true }, "mkdirp": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", "dev": true } @@ -9249,7 +9255,7 @@ }, "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", @@ -9269,7 +9275,7 @@ "dependencies": { "bluebird": { "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "resolved": "http://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", "dev": true }, @@ -9335,7 +9341,7 @@ }, "jsonfile": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { @@ -9554,13 +9560,13 @@ }, "jsts": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/jsts/-/jsts-1.1.2.tgz", + "resolved": "http://registry.npmjs.org/jsts/-/jsts-1.1.2.tgz", "integrity": "sha1-0gXSzIOTCB2eSErjYoIRBpXtwjA=" }, "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", @@ -9576,7 +9582,7 @@ }, "es6-promise": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" } } @@ -10283,7 +10289,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -10665,7 +10671,7 @@ "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==" }, "matchmedia": { "version": "0.1.2", @@ -10798,7 +10804,7 @@ "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==" }, "mime-db": { "version": "1.40.0", @@ -10824,7 +10830,7 @@ "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": { @@ -10836,14 +10842,14 @@ "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==", "requires": { "brace-expansion": "1.1.11" } }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "minipass": { @@ -10866,7 +10872,7 @@ "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==", "requires": { "for-in": "1.0.2", "is-extendable": "1.0.1" @@ -10875,7 +10881,7 @@ "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==", "requires": { "is-plain-object": "2.0.4" } @@ -10884,7 +10890,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -10892,7 +10898,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } @@ -10904,7 +10910,7 @@ }, "mocha": { "version": "2.4.5", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.4.5.tgz", + "resolved": "http://registry.npmjs.org/mocha/-/mocha-2.4.5.tgz", "integrity": "sha1-FRdo3Sh161G8gpXpgAAm6fK7OY8=", "dev": true, "requires": { @@ -10921,13 +10927,13 @@ "dependencies": { "commander": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.3.0.tgz", "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", "dev": true }, "debug": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", "dev": true, "requires": { @@ -10983,7 +10989,7 @@ }, "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": { @@ -11051,7 +11057,7 @@ }, "ncp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "dev": true }, @@ -11080,7 +11086,7 @@ "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.4" @@ -11103,7 +11109,7 @@ "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.12", "is-stream": "1.1.0" @@ -11159,17 +11165,17 @@ }, "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" }, "dependencies": { "string_decoder": { @@ -11178,7 +11184,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -11302,7 +11308,7 @@ "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": { @@ -11393,7 +11399,7 @@ "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": { @@ -11439,7 +11445,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, @@ -11532,7 +11538,7 @@ "dependencies": { "minimist": { "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" } } @@ -11586,7 +11592,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -11632,7 +11638,7 @@ "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", @@ -11701,7 +11707,7 @@ "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.24", "text-encoding-polyfill": "0.6.7" @@ -11892,7 +11898,7 @@ "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", @@ -12403,7 +12409,7 @@ "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": { @@ -12424,7 +12430,7 @@ }, "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": "https://github.com/geosolutions-it/wkt-parser/tarball/mapstore2_fixes" @@ -12433,7 +12439,7 @@ "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.6" } @@ -12525,7 +12531,7 @@ "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": { @@ -12576,12 +12582,12 @@ "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.2", "deep-equal": "1.0.1", @@ -12661,7 +12667,7 @@ "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.1.0", @@ -12721,7 +12727,7 @@ "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.1.1" } @@ -12740,7 +12746,7 @@ "dependencies": { "minimist": { "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", "dev": true }, @@ -12775,7 +12781,7 @@ "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.1", "dom-helpers": "3.4.0", @@ -12841,7 +12847,7 @@ "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.4.0", @@ -13027,7 +13033,7 @@ }, "react-hot-loader": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-1.3.1.tgz", + "resolved": "http://registry.npmjs.org/react-hot-loader/-/react-hot-loader-1.3.1.tgz", "integrity": "sha1-yVZHrni3Pfzv9uxx/8sEGC/22vk=", "dev": true, "requires": { @@ -13086,16 +13092,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": { @@ -13103,10 +13109,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" } } } @@ -13290,7 +13296,7 @@ "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=", + "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", "requires": { "history": "4.9.0", "invariant": "2.2.4", @@ -13355,7 +13361,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==" } } }, @@ -13441,7 +13447,7 @@ "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.1", "dom-helpers": "3.4.0", @@ -13626,7 +13632,7 @@ "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.17.5" } @@ -13654,7 +13660,7 @@ }, "readable-stream": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "requires": { "core-util-is": "1.0.2", @@ -13694,7 +13700,7 @@ "dependencies": { "ansi-regex": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", "integrity": "sha1-QchHGUZGN15qGl0Qw8oFTvn8mA0=", "dev": true }, @@ -13711,7 +13717,7 @@ }, "recast": { "version": "0.10.33", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", + "resolved": "http://registry.npmjs.org/recast/-/recast-0.10.33.tgz", "integrity": "sha1-lCgI96oBbx+nFCxGHX5XBKqo1pc=", "dev": true, "requires": { @@ -13770,7 +13776,7 @@ "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.6", "fbjs": "0.8.17", @@ -13801,7 +13807,7 @@ }, "reduce-css-calc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "resolved": "http://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", "requires": { "balanced-match": "0.4.2", @@ -13968,7 +13974,7 @@ "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", @@ -13984,7 +13990,7 @@ "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" @@ -13993,7 +13999,7 @@ "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==", "requires": { "extend-shallow": "3.0.2", "safe-regex": "1.1.0" @@ -14085,7 +14091,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -14217,7 +14223,7 @@ "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", @@ -14235,7 +14241,7 @@ "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=" + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, "retry": { "version": "0.10.1", @@ -14257,7 +14263,7 @@ }, "rimraf": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.2.tgz", + "resolved": "http://registry.npmjs.org/rimraf/-/rimraf-2.5.2.tgz", "integrity": "sha1-YrqUf6TAtDY4Oa7+zU8PutYFlyY=", "dev": true, "requires": { @@ -14267,7 +14273,7 @@ "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.4", @@ -14351,7 +14357,7 @@ "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==" }, "safe-regex": { "version": "1.1.0", @@ -14364,12 +14370,12 @@ "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", @@ -14422,7 +14428,7 @@ "dependencies": { "commander": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz", "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { @@ -14590,7 +14596,7 @@ "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==", "requires": { "extend-shallow": "2.0.1", "is-extendable": "0.1.1", @@ -14616,7 +14622,7 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "sha.js": { "version": "2.4.11", @@ -14645,7 +14651,7 @@ "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.6.1", "lie": "3.1.1", @@ -14692,7 +14698,7 @@ }, "simple-git": { "version": "1.33.1", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.33.1.tgz", + "resolved": "http://registry.npmjs.org/simple-git/-/simple-git-1.33.1.tgz", "integrity": "sha1-fUxVTX5/tr1osEYfDztoGIzE5Cs=", "dev": true }, @@ -14720,7 +14726,7 @@ "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==", "requires": { "base": "0.11.2", "debug": "2.6.9", @@ -14766,7 +14772,7 @@ "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==", "requires": { "define-property": "1.0.0", "isobject": "3.0.1", @@ -14784,7 +14790,7 @@ "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==", "requires": { "kind-of": "6.0.2" } @@ -14792,7 +14798,7 @@ "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==", "requires": { "kind-of": "6.0.2" } @@ -14800,7 +14806,7 @@ "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==", "requires": { "is-accessor-descriptor": "1.0.0", "is-data-descriptor": "1.0.0", @@ -14810,14 +14816,14 @@ "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==" } } }, "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==", "requires": { "kind-of": "3.2.2" } @@ -15021,7 +15027,7 @@ "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.7" @@ -15051,7 +15057,7 @@ "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.2.0", @@ -15137,13 +15143,13 @@ "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": { @@ -15152,7 +15158,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -15160,7 +15166,7 @@ "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==", "requires": { "extend-shallow": "3.0.2" } @@ -15197,7 +15203,7 @@ "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": { @@ -15247,7 +15253,7 @@ }, "stream-combiner": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", "dev": true, "requires": { @@ -15276,17 +15282,17 @@ }, "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": { @@ -15295,7 +15301,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } } } @@ -15364,7 +15370,7 @@ }, "strip-dirs": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/strip-dirs/-/strip-dirs-0.1.1.tgz", "integrity": "sha1-VSSzpQIx4BXQgU7EK4mnZCffYug=", "dev": true, "requires": { @@ -15377,7 +15383,7 @@ "dependencies": { "ansi-regex": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "resolved": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", "dev": true }, @@ -15389,7 +15395,7 @@ }, "chalk": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", "dev": true, "requires": { @@ -15498,7 +15504,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -15571,7 +15577,7 @@ "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", @@ -15621,7 +15627,7 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { @@ -15657,7 +15663,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", @@ -15672,7 +15678,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -15694,7 +15700,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -15715,7 +15721,7 @@ "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.5" @@ -15774,7 +15780,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": { @@ -15794,7 +15800,7 @@ "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==", "requires": { "define-property": "2.0.2", "extend-shallow": "3.0.2", @@ -15849,7 +15855,7 @@ "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==", "requires": { "punycode": "1.4.1" } @@ -16337,7 +16343,7 @@ "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.5", @@ -16620,7 +16626,7 @@ "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.1.5", @@ -16631,7 +16637,7 @@ "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.10", @@ -16710,7 +16716,7 @@ "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.1" @@ -16729,7 +16735,7 @@ "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": { @@ -17066,7 +17072,7 @@ "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": { @@ -17146,7 +17152,7 @@ }, "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", @@ -17164,7 +17170,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { @@ -17300,7 +17306,7 @@ }, "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "requires": { "camelcase": "1.2.1", diff --git a/package.json b/package.json index 12caa87395..a67946a5ea 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "copy-webpack-plugin": "4.0.1", "css-loader": "0.19.0", "denodeify": "1.2.1", + "dynamic-public-path-webpack-plugin": "1.0.4", "docma": "1.5.1", "download-cli": "1.0.1", "escope": "3.2.0", diff --git a/web/client/actions/__tests__/catalog-test.js b/web/client/actions/__tests__/catalog-test.js index 59025e3d5a..b9abddb1bf 100644 --- a/web/client/actions/__tests__/catalog-test.js +++ b/web/client/actions/__tests__/catalog-test.js @@ -20,7 +20,7 @@ const {getRecords, addLayerError, addLayer, ADD_LAYER_ERROR, changeCatalogFormat changeUrl, CHANGE_URL, changeType, CHANGE_TYPE, addService, ADD_SERVICE, addCatalogService, ADD_CATALOG_SERVICE, resetCatalog, RESET_CATALOG, changeAutoload, CHANGE_AUTOLOAD, deleteCatalogService, DELETE_CATALOG_SERVICE, deleteService, DELETE_SERVICE, savingService, SAVING_SERVICE, DESCRIBE_ERROR, initCatalog, CATALOG_INITED, changeText, CHANGE_TEXT, - TOGGLE_ADVANCED_SETTINGS, toggleAdvancedSettings, TOGGLE_THUMBNAIL, toggleThumbnail, TOGGLE_TEMPLATE, toggleTemplate, CHANGE_METADATA_TEMPLATE, changeMetadataTemplate + TOGGLE_ADVANCED_SETTINGS, toggleAdvancedSettings, TOGGLE_THUMBNAIL, toggleThumbnail, TOGGLE_TEMPLATE, toggleTemplate, CHANGE_METADATA_TEMPLATE, changeMetadataTemplate, SET_LOADING } = require('../catalog'); const {CHANGE_LAYER_PROPERTIES, ADD_LAYER} = require('../layers'); describe('Test correctness of the catalog actions', () => { @@ -146,10 +146,14 @@ describe('Test correctness of the catalog actions', () => { it('getRecords ISO Metadata Profile', (done) => { getRecords('csw', 'base/web/client/test-resources/csw/getRecordsResponseISO.xml', 1, 1)((actionResult) => { try { - let result = actionResult && actionResult.result; - expect(result).toExist(); - expect(result.records).toExist(); - expect(result.records.length).toBe(1); + if (actionResult.type === SET_LOADING) { + expect(actionResult.loading).toBe(true); + } else { + let result = actionResult && actionResult.result; + expect(result).toExist(); + expect(result.records).toExist(); + expect(result.records.length).toBe(1); + } done(); } catch (ex) { done(ex); @@ -159,8 +163,12 @@ describe('Test correctness of the catalog actions', () => { it('getRecords Error', (done) => { getRecords('csw', 'base/web/client/test-resources/csw/getRecordsResponseException.xml', 1, 1)((result) => { try { - expect(result).toExist(); - expect(result.error).toExist(); + if (result.type === SET_LOADING) { + expect(result.loading).toBe(true); + } else { + expect(result).toExist(); + expect(result.error).toExist(); + } done(); } catch (ex) { done(ex); @@ -171,17 +179,21 @@ describe('Test correctness of the catalog actions', () => { getRecords('csw', 'base/web/client/test-resources/csw/getRecordsResponseDC.xml', 1, 2)((actionResult) => { try { let result = actionResult && actionResult.result; - expect(result).toExist(); - expect(result.records).toExist(); - expect(result.records.length).toBe(2); - let rec0 = result.records[0]; - expect(rec0.dc).toExist(); - expect(rec0.dc.URI).toExist(); - expect(rec0.dc.URI[0]); - let uri = rec0.dc.URI[0]; - expect(uri.name).toExist(); - expect(uri.value).toExist(); - expect(uri.description).toExist(); + if (actionResult.type === SET_LOADING) { + expect(actionResult.loading).toBe(true); + } else { + expect(result).toExist(); + expect(result.records).toExist(); + expect(result.records.length).toBe(2); + let rec0 = result.records[0]; + expect(rec0.dc).toExist(); + expect(rec0.dc.URI).toExist(); + expect(rec0.dc.URI[0]); + let uri = rec0.dc.URI[0]; + expect(uri.name).toExist(); + expect(uri.value).toExist(); + expect(uri.description).toExist(); + } done(); } catch (ex) { done(ex); diff --git a/web/client/actions/catalog.js b/web/client/actions/catalog.js index c1be922693..2840ac0040 100644 --- a/web/client/actions/catalog.js +++ b/web/client/actions/catalog.js @@ -41,6 +41,7 @@ export const DELETE_SERVICE = 'CATALOG:DELETE_SERVICE'; export const SAVING_SERVICE = 'CATALOG:SAVING_SERVICE'; export const CATALOG_INITED = 'CATALOG:INIT'; export const GET_METADATA_RECORD_BY_ID = 'CATALOG:GET_METADATA_RECORD_BY_ID'; +export const SET_LOADING = 'CATALOG:SET_LOADING'; export const TOGGLE_TEMPLATE = 'CATALOG:TOGGLE_TEMPLATE'; export const TOGGLE_THUMBNAIL = 'CATALOG:TOGGLE_THUMBNAIL'; export const TOGGLE_ADVANCED_SETTINGS = 'CATALOG:TOGGLE_ADVANCED_SETTINGS'; @@ -64,6 +65,12 @@ export function savingService(status) { status }; } +export function setLoading(loading = false) { + return { + type: SET_LOADING, + loading + }; +} export function changeSelectedService(service) { return { type: CHANGE_SELECTED_SERVICE, @@ -167,6 +174,7 @@ export function initCatalog(apis = API) { export function getRecords(format, url, startPosition = 1, maxRecords, filter, options) { return (dispatch /* , getState */) => { // TODO auth (like) let opts = GeoStoreApi.getAuthOptionsFromState(getState(), {params: {start: 0, limit: 20}, baseURL: geoStoreUrl }); + dispatch(setLoading(true)); API[format].getRecords(url, startPosition, maxRecords, filter, options).then((result) => { if (result.error) { dispatch(recordsLoadError(result)); @@ -186,6 +194,7 @@ export function getRecords(format, url, startPosition = 1, maxRecords, filter, o export function textSearch(format, url, startPosition, maxRecords, text, options) { return (dispatch /* , getState */) => { // TODO auth (like) let opts = GeoStoreApi.getAuthOptionsFromState(getState(), {params: {start: 0, limit: 20}, baseURL: geoStoreUrl }); + dispatch(setLoading(true)); API[format].textSearch(url, startPosition, maxRecords, text, options).then((result) => { if (result.error) { dispatch(recordsLoadError(result)); diff --git a/web/client/components/catalog/Catalog.jsx b/web/client/components/catalog/Catalog.jsx index 2c1f0ae1aa..a4991bcaaf 100644 --- a/web/client/components/catalog/Catalog.jsx +++ b/web/client/components/catalog/Catalog.jsx @@ -119,6 +119,7 @@ class Catalog extends React.Component { pageSize: 4, records: [], saving: false, + loading: false, services: {}, wrapOptions: false, zoomToLayer: true, @@ -126,7 +127,6 @@ class Catalog extends React.Component { }; state = { - loading: false, catalogURL: null }; @@ -140,9 +140,6 @@ class Catalog extends React.Component { componentWillReceiveProps(nextProps) { if (nextProps !== this.props) { - this.setState({ - loading: false - }); if (((nextProps.mode === "view" && this.props.mode === "edit") || nextProps.services !== this.props.services || nextProps.selectedService !== this.props.selectedService) && nextProps.active && this.props.active && nextProps.selectedService && @@ -189,7 +186,7 @@ class Catalog extends React.Component { }; renderLoading = () => { - return this.state.loading ? : null; + return this.props.loading ? : null; }; renderSaving = () => { return this.props.saving ? : null; @@ -502,9 +499,6 @@ class Catalog extends React.Component { const url = services[selectedService].url; const type = services[selectedService].type; this.props.onSearch(type, url, start, this.props.pageSize, searchText || ""); - this.setState({ - loading: true - }); }; isViewMode = (mode) => { @@ -525,9 +519,6 @@ class Catalog extends React.Component { if (eventKey) { let start = (eventKey - 1) * this.props.pageSize + 1; this.search({services: this.props.services, selectedService: this.props.selectedService, start, searchText: this.props.searchText}); - this.setState({ - loading: true - }); } }; } diff --git a/web/client/components/data/download/DownloadDialog.jsx b/web/client/components/data/download/DownloadDialog.jsx index 63aac13771..63309e1e49 100644 --- a/web/client/components/data/download/DownloadDialog.jsx +++ b/web/client/components/data/download/DownloadDialog.jsx @@ -67,7 +67,7 @@ class DownloadDialog extends React.Component { }; render() { - return ( + return ( diff --git a/web/client/components/data/query/CrossLayerFilter.jsx b/web/client/components/data/query/CrossLayerFilter.jsx index f6cf6b115a..7fe0f000ba 100644 --- a/web/client/components/data/query/CrossLayerFilter.jsx +++ b/web/client/components/data/query/CrossLayerFilter.jsx @@ -25,7 +25,7 @@ const isSameOGCServiceRoot = (origSearchUrl, {search, url} = {}) => isSameUrl(or const getAllowedSpatialOperations = (spatialOperations) => (spatialOperations || []).filter( ({id} = {}) => id !== "BBOX"); module.exports = ({ - crossLayerExpanded, + crossLayerExpanded = true, spatialOperations, expandCrossLayerFilterPanel = () => {}, layers = [], @@ -52,7 +52,7 @@ module.exports = ({ return ( { name: "Within" }]} />, document.getElementById("container")); - expect(container.querySelector('.geometry-operation-selector')).toExist(); - expect(container.querySelector('.mapstore-conditions-group')).toExist(); - expect(container.querySelector('.m-slider')).toExist(); + const collapsablePanel = container.querySelector('.mapstore-switch-panel .panel-collapse'); + const expected = collapsablePanel.getAttribute('aria-hidden'); + expect(expected).toEqual('false'); }); }); diff --git a/web/client/components/layout/BorderLayout.jsx b/web/client/components/layout/BorderLayout.jsx index 3b2143b674..f38d6b697f 100644 --- a/web/client/components/layout/BorderLayout.jsx +++ b/web/client/components/layout/BorderLayout.jsx @@ -19,13 +19,14 @@ const React = require('react'); * /> * */ -module.exports = ({id, children, header, footer, columns, height, className, bodyClassName = "ms2-border-layout-body"}) => +module.exports = ({id, children, header, footer, columns, height, style={}, className, bodyClassName = "ms2-border-layout-body"}) => (
{header}
, - + ]; }; @@ -221,7 +223,7 @@ class UserDialog extends React.Component { }; render() { - return ( + return ( {(this.props.user && this.props.user.name) || } @@ -249,6 +251,12 @@ class UserDialog extends React.Component { ); } + close = () => { + this.props.onClose(); + this.newPasswordField.value = ''; + this.confirmPasswordField.value = ''; + } + isMainPasswordValid = (password) => { let p = password || this.props.user.newPassword || ""; // Empty password field will signal the GeoStoreDAO not to change the password diff --git a/web/client/components/manager/users/__tests__/UserDialog-test.jsx b/web/client/components/manager/users/__tests__/UserDialog-test.jsx index 90b260308a..434a8828cf 100644 --- a/web/client/components/manager/users/__tests__/UserDialog-test.jsx +++ b/web/client/components/manager/users/__tests__/UserDialog-test.jsx @@ -254,4 +254,16 @@ describe("Test UserDialog Component", () => { expect(retypePassword.children[0].innerHTML).toBe('user.retypePwd'); expect(retypePassword.children[1].innerHTML).toBe('*'); }); + + it('Test on close dialog, reset password field', () => { + let comp = ReactDOM.render( + , document.getElementById("container")); + expect(comp).toExist(); + const passwordField = document.querySelector("input[name='newPassword']"); + const closeBtn = document.querySelector(".btn-default"); + passwordField.value = 'password'; + ReactTestUtils.Simulate.click(closeBtn); + expect(passwordField.value).toEqual(''); + + }); }); diff --git a/web/client/components/manager/users/style/userdialog.css b/web/client/components/manager/users/style/userdialog.css index 1567dbe724..b532f53976 100644 --- a/web/client/components/manager/users/style/userdialog.css +++ b/web/client/components/manager/users/style/userdialog.css @@ -6,7 +6,6 @@ width: 300px; margin-left: calc(50% - 150px); margin-top: 100px; - transform: translate(-50%, 0); } .user-edit-dialog .modal-body .nav-tabs li a, .group-edit-dialog .modal-body .nav-tabs li a { diff --git a/web/client/components/mapcontrols/Snapshot/SnapshotPanel.jsx b/web/client/components/mapcontrols/Snapshot/SnapshotPanel.jsx index b7be5abaac..35b0a9cf50 100644 --- a/web/client/components/mapcontrols/Snapshot/SnapshotPanel.jsx +++ b/web/client/components/mapcontrols/Snapshot/SnapshotPanel.jsx @@ -21,6 +21,7 @@ const BasicSpinner = require('../../misc/spinners/BasicSpinner/BasicSpinner'); const Dialog = require('../../misc/Dialog'); const Message = require('../../I18N/Message'); +const Portal = require('../../misc/Portal'); /** * SnapshotPanel allow to export a snapshot of the current map, showing a @@ -88,7 +89,8 @@ class SnapshotPanel extends React.Component { }, panelClassName: "snapshot-panel", closeGlyph: "1-close", - buttonStyle: "primary" + buttonStyle: "primary", + bounds: '#container' }; componentWillMount() { @@ -193,10 +195,14 @@ class SnapshotPanel extends React.Component { {panel} ); } - return ( - - {panel} - ); + return ( + + + + {panel} + + + ); } return panel; }; diff --git a/web/client/components/mapcontrols/measure/MeasureComponent.jsx b/web/client/components/mapcontrols/measure/MeasureComponent.jsx index a525758800..7324e19ec3 100644 --- a/web/client/components/mapcontrols/measure/MeasureComponent.jsx +++ b/web/client/components/mapcontrols/measure/MeasureComponent.jsx @@ -256,6 +256,7 @@ class MeasureComponent extends React.Component { return ( diff --git a/web/client/components/mapcontrols/measure/MeasureDialog.jsx b/web/client/components/mapcontrols/measure/MeasureDialog.jsx index 22082ac708..901e5a002b 100644 --- a/web/client/components/mapcontrols/measure/MeasureDialog.jsx +++ b/web/client/components/mapcontrols/measure/MeasureDialog.jsx @@ -76,7 +76,7 @@ class MeasureDialog extends React.Component { style={this.props.style}> - : ( + : (
  diff --git a/web/client/components/mapcontrols/measure/__tests__/MeasureDialog-test.jsx b/web/client/components/mapcontrols/measure/__tests__/MeasureDialog-test.jsx index 659d70899e..27c870b48d 100644 --- a/web/client/components/mapcontrols/measure/__tests__/MeasureDialog-test.jsx +++ b/web/client/components/mapcontrols/measure/__tests__/MeasureDialog-test.jsx @@ -48,7 +48,7 @@ describe("test the MeasureDialog", () => { let measurement = {}; const mc = ReactDOM.render(, document.getElementById("container")); expect(mc).toExist(); - const dialog = document.getElementById('measure'); + const dialog = document.getElementById('measure-dialog'); expect(dialog).toExist(); }); @@ -79,7 +79,7 @@ describe("test the MeasureDialog", () => { const btnGroups = dom.getElementsByClassName('btn-group'); expect(btnGroups.length).toBe(2); - const dialog = document.getElementById('measure'); + const dialog = document.getElementById('measure-dialog'); expect(dialog).toNotExist(); expect(spyMount.calls.length).toBe(1); expect(spyMount).toHaveBeenCalledWith(showCoordinateEditor); @@ -119,7 +119,7 @@ describe("test the MeasureDialog", () => { const btnGroups = dom.getElementsByClassName('btn-group'); expect(btnGroups.length).toBe(2); - const dialog = document.getElementById('measure'); + const dialog = document.getElementById('measure-dialog'); expect(dialog).toNotExist(); expect(spyMount.calls.length).toBe(1); expect(spyToggleMeasure.calls.length).toBe(1); diff --git a/web/client/components/misc/Dialog.jsx b/web/client/components/misc/Dialog.jsx index 7ef917539d..1ccad14564 100644 --- a/web/client/components/misc/Dialog.jsx +++ b/web/client/components/misc/Dialog.jsx @@ -27,7 +27,8 @@ class Dialog extends React.Component { onClickOut: PropTypes.func, modal: PropTypes.bool, start: PropTypes.object, - draggable: PropTypes.bool + draggable: PropTypes.bool, + bounds: PropTypes.object }; static defaultProps = { @@ -35,7 +36,7 @@ class Dialog extends React.Component { backgroundStyle: { background: "rgba(0,0,0,.5)" }, - start: {x: 0, y: 0}, + start: {x: 0, y: 150}, className: "modal-dialog modal-content", maskLoading: false, containerClassName: "", @@ -43,7 +44,8 @@ class Dialog extends React.Component { bodyClassName: "modal-body", footerClassName: "modal-footer", modal: false, - draggable: true + draggable: true, + bounds: 'parent' }; renderLoading = () => { @@ -72,7 +74,7 @@ class Dialog extends React.Component { }; render() { - const body = (
+ const body = (
{this.renderRole('header')}
@@ -84,7 +86,7 @@ class Dialog extends React.Component { {this.renderRole('footer')}
: }
); - const dialog = this.props.draggable ? ( + const dialog = this.props.draggable ? ( {body} ) : body; let containerStyle = assign({}, this.props.style.display ? {display: this.props.style.display} : {}, this.props.backgroundStyle); @@ -105,4 +107,5 @@ class Dialog extends React.Component { }; } + module.exports = Dialog; diff --git a/web/client/epics/__tests__/annotations-test.js b/web/client/epics/__tests__/annotations-test.js index 38927ae692..602d5a29a7 100644 --- a/web/client/epics/__tests__/annotations-test.js +++ b/web/client/epics/__tests__/annotations-test.js @@ -16,7 +16,7 @@ const {set} = require('../../utils/ImmutableUtils'); const {HIDE_MAPINFO_MARKER, PURGE_MAPINFO_RESULTS, purgeMapInfoResults} = require('../../actions/mapInfo'); const {configureMap} = require('../../actions/config'); const {CLOSE_IDENTIFY} = require('../../actions/mapInfo'); -const {editAnnotation, confirmRemoveAnnotation, saveAnnotation, cancelEditAnnotation, +const {editAnnotation, confirmRemoveAnnotation, saveAnnotation, startDrawing, cancelEditAnnotation, setStyle, highlight, cleanHighlight, download, loadAnnotations, SET_STYLE, toggleStyle, resetCoordEditor, changeRadius, changeText, changeSelected, confirmDeleteFeature, openEditor, SHOW_ANNOTATION } = require('../../actions/annotations'); @@ -856,4 +856,24 @@ describe('annotations Epics', () => { store.dispatch(action); }); + it('should safely start drawing annotation when no annotation config provided', (done) => { + store = mockStore({ + annotations: { + editing: { + features: [{}] + } + } + }); + + store.subscribe(() => { + const actions = store.getActions(); + if (actions.length >= 2) { + expect(actions[1].type).toBe(CHANGE_DRAWING_STATUS); + done(); + } + }); + const action = startDrawing(); + store.dispatch(action); + }); + }); diff --git a/web/client/epics/__tests__/catalog-test.js b/web/client/epics/__tests__/catalog-test.js index b973ed09ed..5ae0bcd8b6 100644 --- a/web/client/epics/__tests__/catalog-test.js +++ b/web/client/epics/__tests__/catalog-test.js @@ -6,15 +6,16 @@ * LICENSE file in the root directory of this source tree. */ -const expect = require('expect'); - +import expect from 'expect'; +import csw from '../../api/CSW'; const API = { - csw: require('../../api/CSW') + csw }; -const {getMetadataRecordById} = require('../catalog')(API); -const {SHOW_NOTIFICATION} = require('../../actions/notifications'); -const {testEpic} = require('./epicTestUtils'); -const {getMetadataRecordById: initAction} = require('../../actions/catalog'); +import catalog from '../catalog'; +const {getMetadataRecordById} = catalog(API); +import {SHOW_NOTIFICATION} from '../../actions/notifications'; +import {testEpic} from './epicTestUtils'; +import {getMetadataRecordById as initAction} from '../../actions/catalog'; describe('catalog Epics', () => { it('getMetadataRecordById', (done) => { @@ -35,4 +36,5 @@ describe('catalog Epics', () => { }); }); + }); diff --git a/web/client/epics/annotations.js b/web/client/epics/annotations.js index ab3d3dd48b..a48cef202e 100644 --- a/web/client/epics/annotations.js +++ b/web/client/epics/annotations.js @@ -8,6 +8,7 @@ const Rx = require('rxjs'); const {saveAs} = require('file-saver'); +const {get} = require('lodash'); const {MAP_CONFIG_LOADED} = require('../actions/config'); const {TOGGLE_CONTROL, toggleControl, setControlProperty} = require('../actions/controls'); const {addLayer, updateNode, changeLayerProperties, removeLayer} = require('../actions/layers'); @@ -320,7 +321,7 @@ module.exports = (viewer) => ({ const feature = state.annotations.editing; const type = state.annotations.featureType; const defaultTextAnnotation = state.annotations.defaultTextAnnotation; - const multiGeom = state.annotations.config.multiGeometry; + const multiGeom = get(state, 'annotations.config.multiGeometry'); const drawOptions = { featureProjection: "EPSG:4326", stopAfterDrawing: !multiGeom, diff --git a/web/client/epics/catalog.js b/web/client/epics/catalog.js index d3849263eb..e35523dec5 100644 --- a/web/client/epics/catalog.js +++ b/web/client/epics/catalog.js @@ -7,13 +7,23 @@ */ const Rx = require('rxjs'); -const {ADD_SERVICE, GET_METADATA_RECORD_BY_ID, DELETE_SERVICE, deleteCatalogService, addCatalogService, savingService} = require('../actions/catalog'); +const { + ADD_SERVICE, GET_METADATA_RECORD_BY_ID, DELETE_SERVICE, deleteCatalogService, addCatalogService, savingService, + CHANGE_TEXT, textSearch +} = require('../actions/catalog'); const {showLayerMetadata} = require('../actions/layers'); const {error, success} = require('../actions/notifications'); const {SET_CONTROL_PROPERTY} = require('../actions/controls'); const {closeFeatureGrid} = require('../actions/featuregrid'); const {purgeMapInfoResults, hideMapinfoMarker} = require('../actions/mapInfo'); -const {newServiceSelector, selectedServiceSelector, servicesSelector} = require('../selectors/catalog'); +const { + delayAutoSearchSelector, + newServiceSelector, + pageSizeSelector, + selectedServiceSelector, + servicesSelector, + selectedCatalogSelector +} = require('../selectors/catalog'); const {getSelectedLayer} = require('../selectors/layers'); const axios = require('../libs/ajax'); @@ -162,5 +172,18 @@ module.exports = (API) => ({ position: "tc" }), showLayerMetadata({}, false)); }); + }), + autoSearchEpic: (action$, {getState = () => {}} = {}) => + action$.ofType(CHANGE_TEXT) + .debounce(() => { + const state = getState(); + const delay = delayAutoSearchSelector(state); + return Rx.Observable.timer(delay); + }) + .switchMap(({text}) => { + const state = getState(); + const pageSize = pageSizeSelector(state); + const {type, url} = selectedCatalogSelector(state); + return Rx.Observable.of(textSearch(type, url, 1, pageSize, text)); }) }); diff --git a/web/client/examples/api/index.html b/web/client/examples/api/index.html index 5c0d58aa77..80ca465dd0 100644 --- a/web/client/examples/api/index.html +++ b/web/client/examples/api/index.html @@ -83,6 +83,9 @@

Embed MapStore2 in your website

Toggle Weather Layer (if present)
+ diff --git a/web/client/examples/login/containers/Login.jsx b/web/client/examples/login/containers/Login.jsx index 2bf2764b31..01893333d4 100644 --- a/web/client/examples/login/containers/Login.jsx +++ b/web/client/examples/login/containers/Login.jsx @@ -37,7 +37,7 @@ class Login extends React.Component {

Hello, {this.props.security && this.props.security.user && this.props.security.user.name || "Guest user. Please login"}

-

This is a sample of the login functionality. In the future you will able to login to MapStore to create maps or admin a server.

+

This is a sample of the login functionality.

{this.renderGroups()}

@@ -48,7 +48,7 @@ class Login extends React.Component { module.exports = connect((state) => { return { - locale: state.locale && state.locale.locale, + locale: state.locale && state.locale.current, messages: state.locale && state.locale.messages || {}, security: state.security }; diff --git a/web/client/examples/plugins/app.jsx b/web/client/examples/plugins/app.jsx index d24bc3ddb4..f15076abab 100644 --- a/web/client/examples/plugins/app.jsx +++ b/web/client/examples/plugins/app.jsx @@ -62,7 +62,6 @@ const startApp = () => { const themeSample = require("raw-loader!./sample.less.raw"); let customReducers; - const customReducer = (state = {}, action) => { if (customReducers) { const newState = assign({}, state); @@ -265,8 +264,8 @@ const startApp = () => { {renderPlugins(renderPage)}
-
- +
+
diff --git a/web/client/examples/plugins/index.html b/web/client/examples/plugins/index.html index a9280a0629..f5647c495d 100644 --- a/web/client/examples/plugins/index.html +++ b/web/client/examples/plugins/index.html @@ -19,6 +19,9 @@
+ diff --git a/web/client/examples/plugins/plugins.js b/web/client/examples/plugins/plugins.js index 11fdae22c3..10eaea1740 100644 --- a/web/client/examples/plugins/plugins.js +++ b/web/client/examples/plugins/plugins.js @@ -15,7 +15,6 @@ module.exports = { ZoomInPlugin: require('../../plugins/ZoomIn'), ZoomOutPlugin: require('../../plugins/ZoomOut'), SearchPlugin: require('../../plugins/Search'), - ScaleBoxPlugin: require('../../plugins/ScaleBox'), ToolbarPlugin: require('../../plugins/Toolbar'), DrawerMenuPlugin: require('../../plugins/DrawerMenu'), BurgerMenuPlugin: require('../../plugins/BurgerMenu'), @@ -23,10 +22,6 @@ module.exports = { LocatePlugin: require('../../plugins/Locate'), IdentifyPlugin: require('../../plugins/Identify'), TOCPlugin: require('../../plugins/TOC'), - FeatureGridPlugin: require('../../plugins/FeatureGrid'), - RasterStylerPlugin: require('../../plugins/RasterStyler'), - VectorStylerPlugin: require('../../plugins/VectorStyler'), - BackgroundSwitcherPlugin: require('../../plugins/BackgroundSwitcher'), BackgroundSelectorPlugin: require('../../plugins/BackgroundSelector'), MeasurePlugin: require('../../plugins/Measure'), PrintPlugin: require('../../plugins/Print'), diff --git a/web/client/examples/print/index.html b/web/client/examples/print/index.html index 3d51ed7e25..0d0015d5ae 100644 --- a/web/client/examples/print/index.html +++ b/web/client/examples/print/index.html @@ -70,6 +70,9 @@
+ diff --git a/web/client/localConfig.json b/web/client/localConfig.json index 53e669fac5..af4bf2d050 100644 --- a/web/client/localConfig.json +++ b/web/client/localConfig.json @@ -292,7 +292,12 @@ "AddGroup", "TOCItemsSettings", "Tutorial", "MapFooter", { - "name": "Measure" + "name": "Measure", + "cfg": { + "defaultOptions": { + "showAddAsAnnotation": true + } + } }, "Print", "MapImport", "MapExport", { "name": "Settings", "cfg": { diff --git a/web/client/plugins/DrawerMenu.jsx b/web/client/plugins/DrawerMenu.jsx index 736b2b9260..21b4e92a2d 100644 --- a/web/client/plugins/DrawerMenu.jsx +++ b/web/client/plugins/DrawerMenu.jsx @@ -32,7 +32,7 @@ const Button = tooltip(ButtonB); const menuSelector = createSelector([ state => state.controls.drawer && state.controls.drawer.enabled, state => state.controls.drawer && state.controls.drawer.menu || "1", - state => state.controls.queryPanel && state.controls.queryPanel.enabled && state.controls.drawer && state.controls.drawer.width || state.controls.drawer.resizedWidth || undefined, + state => state.controls.queryPanel && state.controls.queryPanel.enabled && state.controls.drawer && state.controls.drawer.width || state.controls.drawer && state.controls.drawer.resizedWidth || undefined, state => mapLayoutValuesSelector(state, {height: true}) ], (show, activeKey, dynamicWidth, layout) => ({ show, diff --git a/web/client/plugins/MetadataExplorer.jsx b/web/client/plugins/MetadataExplorer.jsx index 5aeb6a0cae..320f3d8533 100644 --- a/web/client/plugins/MetadataExplorer.jsx +++ b/web/client/plugins/MetadataExplorer.jsx @@ -25,7 +25,7 @@ const {resultSelector, serviceListOpenSelector, newServiceSelector, newServiceTypeSelector, selectedServiceTypeSelector, searchOptionsSelector, servicesSelector, formatsSelector, loadingErrorSelector, selectedServiceSelector, modeSelector, layerErrorSelector, activeSelector, savingSelector, authkeyParamNameSelector, - searchTextSelector, groupSelector + searchTextSelector, groupSelector, pageSizeSelector, loadingSelector } = require("../selectors/catalog"); const {mapLayoutValuesSelector} = require('../selectors/maplayout'); @@ -44,14 +44,18 @@ const catalogSelector = createSelector([ (state) => selectedServiceTypeSelector(state), (state) => searchOptionsSelector(state), (state) => currentLocaleSelector(state), - (state) => currentMessagesSelector(state) -], (authkeyParamNames, result, saving, openCatalogServiceList, newService, newformat, selectedFormat, options, currentLocale, locales) =>({ + (state) => currentMessagesSelector(state), + (state) => pageSizeSelector(state), + (state) => loadingSelector(state) +], (authkeyParamNames, result, saving, openCatalogServiceList, newService, newformat, selectedFormat, options, currentLocale, locales, pageSize, loading) =>({ authkeyParamNames, saving, openCatalogServiceList, format: newformat, newService, currentLocale, + pageSize, + loading, records: result && CatalogUtils.getCatalogRecords(selectedFormat, result, options, locales) || [] })); @@ -217,6 +221,7 @@ const API = { * @prop {object} cfg.hideIdentifier shows/hides identifier * @prop {boolean} cfg.hideExpand shows/hides full description button * @prop {number} cfg.zoomToLayer enable/disable zoom to layer when added + * @prop {number} [delayAutoSearch] time in ms passed after a search is triggered by filter changes, default 1000 */ module.exports = { MetadataExplorerPlugin: assign(MetadataExplorerPlugin, { diff --git a/web/client/plugins/SearchServicesConfig.jsx b/web/client/plugins/SearchServicesConfig.jsx index 724c9c83e9..62c92276d8 100644 --- a/web/client/plugins/SearchServicesConfig.jsx +++ b/web/client/plugins/SearchServicesConfig.jsx @@ -149,7 +149,7 @@ class SearchServicesConfigPanel extends React.Component { const Section = pages && pages[page] || null; return enabled ? ( - + {titleText} { this.isDirty() ? ( diff --git a/web/client/plugins/Settings.jsx b/web/client/plugins/Settings.jsx index 608f098882..528a71325c 100644 --- a/web/client/plugins/Settings.jsx +++ b/web/client/plugins/Settings.jsx @@ -143,7 +143,7 @@ class SettingsButton extends React.Component { {settings} ); } - return ( + return ( diff --git a/web/client/plugins/TOC.jsx b/web/client/plugins/TOC.jsx index 93d3e1b62a..37cf80687e 100644 --- a/web/client/plugins/TOC.jsx +++ b/web/client/plugins/TOC.jsx @@ -343,7 +343,7 @@ class LayerTree extends React.Component {
(g.nodes || []).length) || []).length} showTools={this.props.activateToolsContainer} onClear={() => { this.props.onSelectNode(); }} onFilter={this.props.onFilter} diff --git a/web/client/plugins/__tests__/TOC-test.jsx b/web/client/plugins/__tests__/TOC-test.jsx index f6d14b5dea..5c3248507e 100644 --- a/web/client/plugins/__tests__/TOC-test.jsx +++ b/web/client/plugins/__tests__/TOC-test.jsx @@ -49,6 +49,7 @@ describe('TOCPlugin Plugin', () => { ReactDOM.render(, document.getElementById("container")); expect(document.querySelector('.toc-title').textContent).toBe('Annotations'); expect(document.querySelector('.toc-group-title').textContent).toBe('Default'); + expect(document.querySelectorAll('.mapstore-filter.form-group').length).toBe(1); }); it('TOCPlugin hides annotations layer and empty group in cesium mapType', () => { @@ -80,4 +81,30 @@ describe('TOCPlugin Plugin', () => { expect(document.querySelectorAll('.toc-title').length).toBe(1); expect(document.querySelectorAll('.toc-group-title').length).toBe(1); }); + it('TOCPlugin hides filter layer if no groups and no layers are present', () => { + const { Plugin } = getPluginForTest(TOCPlugin, { + layers: { + groups: [{ id: 'default', title: 'Default', nodes: [] }], + flat: [] + }, + maptype: { + mapType: 'openlayers' + } + }); + ReactDOM.render(, document.getElementById("container")); + expect(document.querySelectorAll('.mapstore-filter.form-group').length).toBe(0); + }); + it('TOCPlugin hides filter layer if a group with no layers are present', () => { + const { Plugin } = getPluginForTest(TOCPlugin, { + layers: { + groups: [], + flat: [] + }, + maptype: { + mapType: 'openlayers' + } + }); + ReactDOM.render(, document.getElementById("container")); + expect(document.querySelectorAll('.mapstore-filter.form-group').length).toBe(0); + }); }); diff --git a/web/client/plugins/print/print.css b/web/client/plugins/print/print.css index 08a55f313e..12c35d6164 100644 --- a/web/client/plugins/print/print.css +++ b/web/client/plugins/print/print.css @@ -37,10 +37,6 @@ right: -155px; z-index: 1000; } - -#mapstore-print-panel{ - margin-top: 100px !important; -} #mapstore-print-panel.modal-dialog { z-index: 2000; } diff --git a/web/client/product/components/viewer/about/About.jsx b/web/client/product/components/viewer/about/About.jsx index 63b99a7a1a..f6e53f1eb4 100644 --- a/web/client/product/components/viewer/about/About.jsx +++ b/web/client/product/components/viewer/about/About.jsx @@ -49,7 +49,7 @@ class About extends React.Component { className="map-logo" body={ - }/>) : ( + }/>) : (
); diff --git a/web/client/reducers/__tests__/catalog-test.js b/web/client/reducers/__tests__/catalog-test.js index 823829b2d8..07011867a3 100644 --- a/web/client/reducers/__tests__/catalog-test.js +++ b/web/client/reducers/__tests__/catalog-test.js @@ -32,7 +32,7 @@ const catalog = require('../catalog'); const {RECORD_LIST_LOADED, ADD_LAYER_ERROR, RESET_CATALOG, RECORD_LIST_LOAD_ERROR, CHANGE_CATALOG_FORMAT, CHANGE_CATALOG_MODE, FOCUS_SERVICES_LIST, CHANGE_TITLE, CHANGE_URL, CHANGE_TYPE, CHANGE_SELECTED_SERVICE, ADD_CATALOG_SERVICE, CHANGE_AUTOLOAD, DELETE_CATALOG_SERVICE, SAVING_SERVICE, CHANGE_METADATA_TEMPLATE, TOGGLE_THUMBNAIL, TOGGLE_TEMPLATE, TOGGLE_ADVANCED_SETTINGS, - changeText} = require('../../actions/catalog'); + changeText, setLoading} = require('../../actions/catalog'); const {MAP_CONFIG_LOADED} = require('../../actions/config'); const sampleRecord = { boundingBox: { @@ -67,8 +67,17 @@ describe('Test the catalog reducer', () => { const state = catalog({}, {type: RECORD_LIST_LOADED, result: {records: [sampleRecord], searchOptions: {catalogURL: "test"}}}); expect(state.hasOwnProperty('result')).toBe(true); expect(state.hasOwnProperty('searchOptions')).toBe(true); + expect(state.loading).toBe(false); + }); + it('changes the loading status of catalog', () => { + let state = catalog({}, setLoading(true)); + expect(state.loading).toBe(true); + state = catalog({}, setLoading(false)); + expect(state.loading).toBe(false); + // default + state = catalog({}, setLoading()); + expect(state.loading).toBe(false); }); - it('handles layers error', () => { const state = catalog({}, {type: ADD_LAYER_ERROR, error: 'myerror'}); expect(state.layerError).toBe('myerror'); @@ -114,6 +123,7 @@ describe('Test the catalog reducer', () => { const state = catalog({}, {type: RECORD_LIST_LOAD_ERROR, error}); expect(state.result).toBe(null); expect(state.loadingError).toBe(error); + expect(state.loading).toBe(false); expect(state.searchOptions).toBe(null); }); it('FOCUS_SERVICES_LIST', () => { diff --git a/web/client/reducers/catalog.js b/web/client/reducers/catalog.js index 6b39f10501..e1d672c8dd 100644 --- a/web/client/reducers/catalog.js +++ b/web/client/reducers/catalog.js @@ -23,8 +23,9 @@ const { ADD_CATALOG_SERVICE, DELETE_CATALOG_SERVICE, SAVING_SERVICE, - TOGGLE_THUMBNAIL, CHANGE_METADATA_TEMPLATE, + SET_LOADING, + TOGGLE_THUMBNAIL, TOGGLE_TEMPLATE, TOGGLE_ADVANCED_SETTINGS } = require('../actions/catalog'); @@ -53,21 +54,26 @@ function catalog(state = { selectedService: "", newService: {} }, + delayAutoSearch: 1000, + loading: false, + pageSize: 4, services: {}, selectedService: "", newService: {} }, action) { switch (action.type) { case SAVING_SERVICE: - return assign({}, state, { + return { + ...state, saving: action.status - }); + }; case RECORD_LIST_LOADED: return assign({}, state, { result: action.result, searchOptions: action.searchOptions, loadingError: null, - layerError: null + layerError: null, + loading: false }); case RESET_CATALOG: return assign({}, state, { @@ -85,6 +91,7 @@ function catalog(state = { result: null, searchOptions: null, loadingError: action.error, + loading: false, layerError: null }); case CHANGE_CATALOG_FORMAT: @@ -186,6 +193,9 @@ function catalog(state = { case TOGGLE_THUMBNAIL: { return set("newService.hideThumbnail", !state.newService.hideThumbnail, state); } + case SET_LOADING: { + return set("loading", action.loading, state); + } case CHANGE_METADATA_TEMPLATE: { return set("newService.metadataTemplate", action.metadataTemplate, state); } diff --git a/web/client/reducers/playback.js b/web/client/reducers/playback.js index 6abf804498..aed7518e38 100644 --- a/web/client/reducers/playback.js +++ b/web/client/reducers/playback.js @@ -2,12 +2,14 @@ const { PLAY, PAUSE, STOP, STATUS, SET_FRAMES, APPEND_FRAMES, FRAMES_LOADING, SE const { RESET_CONTROLS } = require('../actions/controls'); const { set } = require('../utils/ImmutableUtils'); -module.exports = (state = { status: STATUS.STOP, currentFrame: -1, settings: { +const DEFAULT_SETTINGS = { timeStep: 1, stepUnit: "days", frameDuration: 2, following: true -}}, action) => { +}; + +module.exports = (state = { status: STATUS.STOP, currentFrame: -1, settings: DEFAULT_SETTINGS}, action) => { switch (action.type) { case PLAY: { return set(`status`, STATUS.PLAY, state); @@ -48,12 +50,7 @@ module.exports = (state = { status: STATUS.STOP, currentFrame: -1, settings: { } case RESET_CONTROLS: { return set('metadata', undefined, set('framesLoading', undefined, set('playbackRange', undefined, set('frames', undefined, - set('currentFrame', -1, set('status', "STOP", set('settings', { - timeStep: 1, - stepUnit: "days", - frameDuration: 5, - following: true - }, state) + set('currentFrame', -1, set('status', "STOP", set('settings', DEFAULT_SETTINGS, state) )))))); } default: diff --git a/web/client/selectors/__tests__/catalog-test.js b/web/client/selectors/__tests__/catalog-test.js index 1c0dabf2c2..280b4b4446 100644 --- a/web/client/selectors/__tests__/catalog-test.js +++ b/web/client/selectors/__tests__/catalog-test.js @@ -8,22 +8,25 @@ const expect = require('expect'); const { - resultSelector, - serviceListOpenSelector, - newServiceSelector, - servicesSelector, - newServiceTypeSelector, - selectedServiceTypeSelector, - searchOptionsSelector, + activeSelector, + authkeyParamNameSelector, + delayAutoSearchSelector, formatsSelector, + groupSelector, + layerErrorSelector, loadingErrorSelector, - selectedServiceSelector, + loadingSelector, modeSelector, - layerErrorSelector, - activeSelector, - authkeyParamNameSelector, + newServiceSelector, + newServiceTypeSelector, + pageSizeSelector, + resultSelector, searchTextSelector, - groupSelector + searchOptionsSelector, + selectedServiceTypeSelector, + selectedServiceSelector, + servicesSelector, + serviceListOpenSelector } = require("../catalog"); const {set} = require('../../utils/ImmutableUtils'); @@ -204,5 +207,31 @@ describe('Test catalog selectors', () => { expect(authkeyParamNames).toExist(); expect(authkeyParamNames.length).toBe(0); }); + it('test loadingSelector', () => { + let loading = loadingSelector({}); + expect(loading).toBe(false); + + loading = loadingSelector({catalog: {loading: true}}); + expect(loading).toExist(); + expect(loading).toBe(true); + }); + it('test pageSizeSelector', () => { + let pageSize = pageSizeSelector({}); + expect(pageSize).toExist(); + expect(pageSize).toBe(4); + + pageSize = pageSizeSelector({catalog: {pageSize: 5}}); + expect(pageSize).toExist(); + expect(pageSize).toBe(5); + }); + it('test delayAutoSearchSelector', () => { + let delay = delayAutoSearchSelector({}); + expect(delay).toExist(); + expect(delay).toBe(1000); + + delay = delayAutoSearchSelector({catalog: {delayAutoSearch: 1234}}); + expect(delay).toExist(); + expect(delay).toBe(1234); + }); }); diff --git a/web/client/selectors/catalog.js b/web/client/selectors/catalog.js index 588b1333f9..60ad654515 100644 --- a/web/client/selectors/catalog.js +++ b/web/client/selectors/catalog.js @@ -13,6 +13,7 @@ module.exports = { searchOptionsSelector: (state) => get(state, "catalog.searchOptions"), formatsSelector: (state) => get(state, "catalog.supportedFormats") || [{name: "csw", label: "CSW"}, {name: "wms", label: "WMS"}, {name: "wmts", label: "WMTS"}], loadingErrorSelector: (state) => get(state, "catalog.loadingError"), + loadingSelector: (state) => get(state, "catalog.loading", false), selectedServiceSelector: (state) => get(state, "catalog.selectedService"), modeSelector: (state) => get(state, "catalog.mode", "view"), layerErrorSelector: (state) => get(state, "catalog.layerError"), @@ -20,5 +21,7 @@ module.exports = { activeSelector: (state) => get(state, "controls.toolbar.active") === "metadataexplorer" || get(state, "controls.metadataexplorer.enabled"), authkeyParamNameSelector: (state) => { return (get(state, "localConfig.authenticationRules") || []).filter(a => a.method === "authkey").map(r => r.authkeyParamName) || []; - } + }, + pageSizeSelector: (state) => get(state, "catalog.pageSize", 4), + delayAutoSearchSelector: (state) => get(state, "catalog.delayAutoSearch", 1000) }; diff --git a/web/client/selectors/measurement.js b/web/client/selectors/measurement.js index c3b64015e8..5e18666d08 100644 --- a/web/client/selectors/measurement.js +++ b/web/client/selectors/measurement.js @@ -34,7 +34,7 @@ const showAddAsAnnotationSelector = (state) => state && state.measurement && sta * return empty coordinates */ const getValidFeatureSelector = (state) => { - let feature = state.measurement.feature; + let feature = state.measurement.feature || {}; if (feature.geometry) { feature = set("geometry.coordinates", validateFeatureCoordinates(feature.geometry || {}), feature); } diff --git a/web/client/themes/default/bootstrap-theme.less b/web/client/themes/default/bootstrap-theme.less index bdbcccfce7..d9c063d701 100644 --- a/web/client/themes/default/bootstrap-theme.less +++ b/web/client/themes/default/bootstrap-theme.less @@ -141,6 +141,9 @@ button.close { margin: auto; margin-top: 150px; } + .modal-dialog-draggable { + margin-top: 0; + } } // Dropdown diff --git a/web/client/themes/default/less/panels.less b/web/client/themes/default/less/panels.less index d85c5f1e76..ba31d1ce43 100644 --- a/web/client/themes/default/less/panels.less +++ b/web/client/themes/default/less/panels.less @@ -205,7 +205,7 @@ } } -#mapstore-print-panel, #measure-dialog, #mapstore-about { +#mapstore-print-panel, #measure-dialog, #mapstore-about, #share-panel-dialog { position: absolute; top: 0%; left: 20%; diff --git a/web/client/utils/FilterUtils.jsx b/web/client/utils/FilterUtils.jsx index 5daca0a96f..084a258089 100644 --- a/web/client/utils/FilterUtils.jsx +++ b/web/client/utils/FilterUtils.jsx @@ -589,7 +589,7 @@ const FilterUtils = { `` + `${crossLayerFilter.collectGeometries.queryCollection.typeName}` + `${crossLayerFilter.collectGeometries.queryCollection.geometryName}` + - `${cqlFilter}` + + `` + `` + ``; } diff --git a/web/client/utils/PrintUtils.js b/web/client/utils/PrintUtils.js index 754043ccf5..553b05aa3f 100644 --- a/web/client/utils/PrintUtils.js +++ b/web/client/utils/PrintUtils.js @@ -9,6 +9,7 @@ const CoordinatesUtils = require('./CoordinatesUtils'); const SecurityUtils = require('./SecurityUtils'); const MapUtils = require('./MapUtils'); +const {optionsToVendorParams} = require('./VendorParamsUtils'); const AnnotationsUtils = require("./AnnotationsUtils"); const {colorToHexStr} = require("./ColorUtils"); @@ -202,8 +203,14 @@ const PrintUtils = { "TILED": true, "EXCEPTIONS": "application/vnd.ogc.se_inimage", "scaleMethod": "accurate" - }, layer.baseParams || {}, layer.params || {})) - }), + }, layer.baseParams || {}, layer.params || {}, { + ...optionsToVendorParams({ + nativeCrs: layer.nativeCrs, + layerFilter: layer.layerFilter, + filterObj: layer.filterObj + }) + } + ))}), legend: (layer, spec) => ({ "name": layer.title || layer.name, "classes": [ diff --git a/web/client/utils/URLUtils.js b/web/client/utils/URLUtils.js index 73b806a6ef..5e0d7f820e 100644 --- a/web/client/utils/URLUtils.js +++ b/web/client/utils/URLUtils.js @@ -6,7 +6,9 @@ * LICENSE file in the root directory of this source tree. */ -const urlParts = (url) => { +import Url from "url"; + +export const urlParts = (url) => { if (!url) return {}; let isRelativeUrl = !(url.indexOf("http") === 0); let urlPartsArray = isRelativeUrl ? [] : url.match(/([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/); @@ -32,19 +34,21 @@ const urlParts = (url) => { * @param {string} otherUrl url to compare to * @return {boolean} true when urls are the same else false */ -const isSameUrl = (originalUrl, otherUrl) => { +export const isSameUrl = (originalUrl, otherUrl) => { if (originalUrl === otherUrl) return true; + const urlParsed = Url.parse(originalUrl); + const otherUrlParsed = Url.parse(otherUrl); const originalUrlParts = urlParts(originalUrl); const otherUrlParts = urlParts(otherUrl); const isSameProtocol = originalUrlParts.protocol === otherUrlParts.protocol; const isSameDomain = originalUrlParts.domain === otherUrlParts.domain; const isSameRootPath = originalUrlParts.rootPath === otherUrlParts.rootPath; const isSamePort = originalUrlParts.port === otherUrlParts.port; - return isSameProtocol && isSamePort && isSameDomain && isSameRootPath; -}; - -module.exports = { - isSameUrl, - urlParts + const isSamePathname = urlParsed.pathname === otherUrlParsed.pathname; + const ignoreSearchPath = ((urlParsed.search || "").length < 4 ) === (otherUrlParsed.search || "").length < 4; + /* ignoreSearchPath is needed to ignore url where path are dirty like /wfs? and /wfs?& + * the minimum valid search path is 4 char length => ?p=v + */ + return isSameProtocol && isSamePort && isSameDomain && (ignoreSearchPath && isSamePathname ? true : isSameRootPath); }; diff --git a/web/client/utils/__tests__/FilterUtils-test.js b/web/client/utils/__tests__/FilterUtils-test.js index c4ecba337e..baf53d7c62 100644 --- a/web/client/utils/__tests__/FilterUtils-test.js +++ b/web/client/utils/__tests__/FilterUtils-test.js @@ -936,7 +936,7 @@ describe('FilterUtils', () => { + '' + 'TEST' + 'GEOMETRY' - + 'INCLUDE' + + '' + '' + ""; let expected = @@ -1010,7 +1010,7 @@ describe('FilterUtils', () => { + '' + 'regions' + 'regions_geom' - + 'area > 10' + + ' 10]]>' + '' + ""; diff --git a/web/client/utils/__tests__/PrintUtils-test.js b/web/client/utils/__tests__/PrintUtils-test.js index ff2d6385c4..a24ed38721 100644 --- a/web/client/utils/__tests__/PrintUtils-test.js +++ b/web/client/utils/__tests__/PrintUtils-test.js @@ -15,6 +15,71 @@ const layer = { type: "wms", params: {myparam: "myvalue"} }; + +const layerSottoPasso = { + id: 'DBT:SOTTOPASSO__6', + type: 'wms', + url: 'http://localhost:8081/geoserver-test/wms', + nativeCrs: 'EPSG:3003' +}; + +const layerFilterSottoPasso = { + groupFields: [ + { + id: 1, + logic: 'OR', + index: 0 + } + ], + filterFields: [ + { + rowId: 1563970241851, + groupId: 1, + attribute: 'TIPO', + operator: '=', + value: 2, + type: 'number', + fieldOptions: { + valuesCount: 0, + currentPage: 1 + }, + exception: null + } + ], + spatialField: { + method: null, + operation: 'INTERSECTS', + geometry: null, + attribute: 'GEOMETRY' + } +}; +const filterObjSottoPasso = { + featureTypeName: 'DBT:SOTTOPASSO', + filterType: 'OGC', + ogcVersion: '1.1.0', + pagination: { + startIndex: 0, + maxFeatures: 20 + }, + groupFields: [ + { + id: 1, + logic: 'AND', + index: 0 + } + ], + filterFields: [ + { + attribute: 'ID_OGGETTO', + rowId: 1563970257711, + type: 'number', + groupId: 1, + operator: '<', + value: 44 + } + ] +}; + const featurePoint = { "type": "Feature", "geometry": { @@ -208,6 +273,37 @@ describe('PrintUtils', () => { expect(specs[0].customParams.authkey).toExist(); expect(specs[0].customParams.authkey).toBe("mykey"); }); + it('custom params include layerFilter and filterObj', () => { + const specs = PrintUtils.getMapfishLayersSpecification([{ + ...layerSottoPasso, + layerFilter: layerFilterSottoPasso, + filterObj: filterObjSottoPasso + }], {}, 'map'); + expect(specs).toExist(); + expect(specs.length).toBe(1); + expect(specs[0].customParams.CQL_FILTER).toExist(); + expect(specs[0].customParams.CQL_FILTER).toBe(`(("TIPO" = '2')) AND (("ID_OGGETTO" < '44'))`); + }); + it('custom params include cql_filter', () => { + const specs = PrintUtils.getMapfishLayersSpecification([{ + ...layerSottoPasso, + filterObj: filterObjSottoPasso + }], {}, 'map'); + expect(specs).toExist(); + expect(specs.length).toBe(1); + expect(specs[0].customParams.CQL_FILTER).toExist(); + expect(specs[0].customParams.CQL_FILTER).toBe(`("ID_OGGETTO" < '44')`); + }); + it('custom params include layerFilter', () => { + const specs = PrintUtils.getMapfishLayersSpecification([{ + ...layerSottoPasso, + layerFilter: layerFilterSottoPasso + }], {}, 'map'); + expect(specs).toExist(); + expect(specs.length).toBe(1); + expect(specs[0].customParams.CQL_FILTER).toExist(); + expect(specs[0].customParams.CQL_FILTER).toBe(`("TIPO" = '2')`); + }); it('wms layer generation for legend includes scale', () => { const specs = PrintUtils.getMapfishLayersSpecification([layer], testSpec, 'legend'); expect(specs).toExist(); diff --git a/web/client/utils/__tests__/URLUtils-test.js b/web/client/utils/__tests__/URLUtils-test.js index 76056df112..662c872f1a 100644 --- a/web/client/utils/__tests__/URLUtils-test.js +++ b/web/client/utils/__tests__/URLUtils-test.js @@ -36,5 +36,33 @@ describe('URLUtils', () => { const data = isSameUrl(url3, url4); expect(data).toBeTruthy(); }); + it('test isSameUrl with clean and dirty relative url', () => { + expect(isSameUrl( + "/geoserver/wfs", + "/geoserver/wfs?&")).toBe(true); + expect(isSameUrl( + "/geoserver/wfs", + "/geoserver/wfs?")).toBe(true); + expect(isSameUrl( + "/geoserver/wfs?&", + "/geoserver/wfs?param1=true¶m2=false")).toBe(false); + expect(isSameUrl( + "/path/geoserver/wfs?", + "/geoserver/wfs?")).toBe(false); + }); + it('test isSameUrl with clean and dirty absolute url', () => { + expect(isSameUrl( + "https://demo.geo-solutions.it:443/geoserver/wfs", + "https://demo.geo-solutions.it/geoserver/wfs?")).toBe(true); + expect(isSameUrl( + "https://demo.geo-solutions.it:443/geoserver/wfs", + "https://demo.geo-solutions.it/geoserver/wfs?")).toBe(true); + expect(isSameUrl( + "https://demo.geo-solutions.it/geoserver/wfs?", + "https://demo.geo-solutions.it/geoserver/wfs?param1=true¶m2=false")).toBe(false); + expect(isSameUrl( + "https://demo.geo-solutions.it/path/geoserver/wfs?", + "https://demo.geo-solutions.it/geoserver/wfs?")).toBe(false); + }); });