diff --git a/config/webpack.config.dev.js b/config/webpack.config.dev.js index 83c3103ce..08ab3c8b3 100644 --- a/config/webpack.config.dev.js +++ b/config/webpack.config.dev.js @@ -12,6 +12,8 @@ const ModuleScopePlugin = require('react-dev-utils-for-webpack4/ModuleScopePlugi const DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack-plugin'); const getClientEnvironment = require('./env'); const paths = require('./paths'); +// const { UnusedFilesWebpackPlugin } = require('unused-files-webpack-plugin'); + // Webpack uses `publicPath` to determine where the app is being served from. // In development, we always serve from the root. This makes config easier. @@ -142,6 +144,11 @@ module.exports = { // please link the files into your node_modules/ and let module-resolution kick in. // Make sure your source files are compiled, as they will not be processed in any way. new ModuleScopePlugin(paths.appSrc, [paths.appPackageJson]), + // new UnusedFilesWebpackPlugin({ + // failOnUnused: true, + // patterns: ['src/**/*.jsx', 'src/**/*.js', 'sass/**/*.scss'], + // ignore: ['**/pt.js', '**/browser.js', '**/init.js'], + // }), ], }, module: { @@ -298,6 +305,12 @@ module.exports = { new DuplicatePackageCheckerPlugin(), + + // new UnusedFilesWebpackPlugin({ + // failOnUnused: true, + // patterns: ['src/**/*.jsx', 'src/**/*.js', 'sass/**/*.scss'], + // ignore: ['**/pt.js', '**/browser.js', '**/init.js'], + // }), ], // Some libraries import Node modules but don't use them in the browser. // Tell Webpack to provide empty mocks for them so importing them works. diff --git a/package-lock.json b/package-lock.json index b2b555d4f..29ff1aa19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "version": "7.0.0-beta.44", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "dev": true, "requires": { "@babel/highlight": "7.0.0-beta.44" } @@ -130,6 +131,7 @@ "version": "7.0.0-beta.44", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -176,6 +178,7 @@ "version": "7.12.5", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz", "integrity": "sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==", + "dev": true, "requires": { "core-js-pure": "^3.0.0", "regenerator-runtime": "^0.13.4" @@ -184,7 +187,8 @@ "regenerator-runtime": { "version": "0.13.7", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true } } }, @@ -710,12 +714,6 @@ "color-name": "~1.1.4" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -813,6 +811,14 @@ "requires": { "braces": "^3.0.1", "picomatch": "^2.2.3" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + } } }, "semver": { @@ -888,12 +894,6 @@ "color-name": "~1.1.4" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1153,12 +1153,6 @@ "color-name": "~1.1.4" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -1274,12 +1268,6 @@ "color-name": "~1.1.4" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1701,7 +1689,8 @@ "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true }, "@types/geojson": { "version": "7946.0.7", @@ -1713,6 +1702,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, "requires": { "@types/events": "*", "@types/minimatch": "*", @@ -1811,12 +1801,6 @@ "color-name": "~1.1.4" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1879,7 +1863,8 @@ "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true }, "@types/lodash": { "version": "4.14.176", @@ -1889,31 +1874,20 @@ "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true }, "@types/node": { "version": "9.4.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-9.4.6.tgz", - "integrity": "sha512-CTUtLb6WqCCgp6P59QintjHWqzf4VL1uPA27bipLAPxFqrtK1gEYllePzTICGqQ8rYsCbpnsNypXjjDzGAAjEQ==" + "integrity": "sha512-CTUtLb6WqCCgp6P59QintjHWqzf4VL1uPA27bipLAPxFqrtK1gEYllePzTICGqQ8rYsCbpnsNypXjjDzGAAjEQ==", + "dev": true }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" }, - "@types/quill": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/@types/quill/-/quill-1.3.10.tgz", - "integrity": "sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw==", - "requires": { - "parchment": "^1.1.2" - } - }, - "@types/raf": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.0.tgz", - "integrity": "sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw==" - }, "@types/react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.2.tgz", @@ -1971,6 +1945,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, "requires": { "@webassemblyjs/helper-module-context": "1.9.0", "@webassemblyjs/helper-wasm-bytecode": "1.9.0", @@ -1980,22 +1955,26 @@ "@webassemblyjs/floating-point-hex-parser": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true }, "@webassemblyjs/helper-api-error": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true }, "@webassemblyjs/helper-buffer": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true }, "@webassemblyjs/helper-code-frame": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, "requires": { "@webassemblyjs/wast-printer": "1.9.0" } @@ -2003,12 +1982,14 @@ "@webassemblyjs/helper-fsm": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true }, "@webassemblyjs/helper-module-context": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0" } @@ -2016,12 +1997,14 @@ "@webassemblyjs/helper-wasm-bytecode": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-buffer": "1.9.0", @@ -2033,6 +2016,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -2041,6 +2025,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, "requires": { "@xtuc/long": "4.2.2" } @@ -2048,12 +2033,14 @@ "@webassemblyjs/utf8": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true }, "@webassemblyjs/wasm-edit": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-buffer": "1.9.0", @@ -2069,6 +2056,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-wasm-bytecode": "1.9.0", @@ -2081,6 +2069,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-buffer": "1.9.0", @@ -2092,6 +2081,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-api-error": "1.9.0", @@ -2105,6 +2095,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/floating-point-hex-parser": "1.9.0", @@ -2118,6 +2109,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/wast-parser": "1.9.0", @@ -2133,27 +2125,26 @@ "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, "abab": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, "requires": { "mime-types": "~2.1.24", "negotiator": "0.6.2" @@ -2162,12 +2153,14 @@ "mime-db": { "version": "1.40.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true }, "mime-types": { "version": "2.1.24", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, "requires": { "mime-db": "1.40.0" } @@ -2183,6 +2176,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, "requires": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" @@ -2191,7 +2185,8 @@ "acorn": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true } } }, @@ -2213,22 +2208,14 @@ "acorn-walk": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true }, "address": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==" }, - "adler-32": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.1.0.tgz", - "integrity": "sha1-A1UaXH8O371PyPoSpoFJeOq2UcM=", - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } - }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -2259,6 +2246,7 @@ "version": "2.16.0", "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "dev": true, "requires": { "array.prototype.find": "^2.1.1", "function.prototype.name": "^1.1.2", @@ -2275,6 +2263,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -2283,6 +2272,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -2291,6 +2281,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -2299,12 +2290,14 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true } } }, @@ -2364,7 +2357,8 @@ "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true }, "ansi-escapes": { "version": "3.0.0", @@ -2374,7 +2368,8 @@ "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true }, "ansi-regex": { "version": "2.1.1", @@ -2393,6 +2388,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -2401,17 +2397,20 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -2429,6 +2428,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -2439,6 +2439,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -2453,6 +2454,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -2461,6 +2463,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -2469,6 +2472,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -2477,6 +2481,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -2487,6 +2492,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -2495,6 +2501,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -2505,6 +2512,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -2514,7 +2522,8 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -2522,6 +2531,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -2537,6 +2547,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -2545,6 +2556,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -2555,6 +2567,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -2566,6 +2579,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -2576,6 +2590,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -2584,6 +2599,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -2592,6 +2608,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -2602,6 +2619,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -2610,6 +2628,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -2619,17 +2638,20 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -2652,6 +2674,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, "requires": { "default-require-extensions": "^1.0.0" } @@ -2659,17 +2682,8 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, "argparse": { "version": "1.0.10", @@ -2683,6 +2697,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/argv-tools/-/argv-tools-0.1.1.tgz", "integrity": "sha512-Cc0dBvx4dvrjjKpyDA6w8RlNAw8Su30NvZbWl/Tv9ZALEVlLVkWQiHMi84Q0xNfpVuSaiQbYkdmWK8g1PLGhKw==", + "dev": true, "requires": { "array-back": "^2.0.0", "find-replace": "^2.0.1" @@ -2692,6 +2707,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, "requires": { "@babel/runtime": "^7.10.2", "@babel/runtime-corejs3": "^7.10.2" @@ -2701,6 +2717,7 @@ "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } @@ -2708,7 +2725,8 @@ "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true } } }, @@ -2716,6 +2734,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, "requires": { "arr-flatten": "^1.0.1" } @@ -2734,6 +2753,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", + "dev": true, "requires": { "typical": "^2.6.1" } @@ -2741,7 +2761,8 @@ "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true }, "array-filter": { "version": "0.0.1", @@ -2756,12 +2777,14 @@ "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true }, "array-includes": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -2774,6 +2797,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -2782,6 +2806,7 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -2809,6 +2834,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -2819,6 +2845,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -2829,6 +2856,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -2836,17 +2864,20 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true }, "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -2856,6 +2887,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -2864,6 +2896,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -2871,17 +2904,20 @@ "object-inspect": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==" + "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", + "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -2891,6 +2927,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -2924,12 +2961,14 @@ "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true }, "array.prototype.find": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz", "integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.4" @@ -2939,6 +2978,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -2947,6 +2987,7 @@ "version": "1.17.7", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -2965,6 +3006,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -2975,6 +3017,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -2982,12 +3025,14 @@ "is-callable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true }, "is-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -2996,6 +3041,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -3003,7 +3049,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, @@ -3011,6 +3058,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -3021,6 +3069,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -3029,6 +3078,7 @@ "version": "1.18.0-next.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -3050,6 +3100,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -3060,6 +3111,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -3067,12 +3119,14 @@ "is-callable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true }, "is-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -3081,6 +3135,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -3088,7 +3143,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, @@ -3096,6 +3152,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -3106,6 +3163,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -3114,6 +3172,7 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -3141,6 +3200,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -3151,6 +3211,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -3161,6 +3222,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -3168,17 +3230,20 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true }, "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3188,6 +3253,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -3196,6 +3262,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -3203,17 +3270,20 @@ "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -3223,6 +3293,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -3243,12 +3314,14 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, "asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -3259,7 +3332,8 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true } } }, @@ -3267,6 +3341,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, "requires": { "object-assign": "^4.1.1", "util": "0.10.3" @@ -3275,7 +3350,8 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assign-symbols": { "version": "1.0.0", @@ -3285,17 +3361,20 @@ "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true }, "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, "requires": { "lodash": "^4.17.14" } @@ -3303,17 +3382,20 @@ "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true }, "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "atob": { "version": "2.1.1", @@ -3329,6 +3411,7 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.6.tgz", "integrity": "sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==", + "dev": true, "requires": { "browserslist": "^2.5.1", "caniuse-lite": "^1.0.30000748", @@ -3341,22 +3424,26 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "axe-core": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", - "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==" + "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", + "dev": true }, "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", @@ -3396,6 +3483,7 @@ "version": "6.26.3", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, "requires": { "babel-code-frame": "^6.26.0", "babel-generator": "^6.26.0", @@ -3421,7 +3509,8 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -3429,6 +3518,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-9.0.0.tgz", "integrity": "sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g==", + "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.0.0", @@ -3442,6 +3532,7 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, "requires": { "@babel/highlight": "^7.0.0" } @@ -3450,6 +3541,7 @@ "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -3460,6 +3552,7 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" @@ -3468,7 +3561,8 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true } } }, @@ -3476,6 +3570,7 @@ "version": "6.26.1", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, "requires": { "babel-messages": "^6.23.0", "babel-runtime": "^6.26.0", @@ -3490,7 +3585,8 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -3498,6 +3594,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, "requires": { "babel-helper-explode-assignable-expression": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3508,6 +3605,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", @@ -3518,6 +3616,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, "requires": { "babel-helper-hoist-variables": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3529,6 +3628,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.26.0", @@ -3540,6 +3640,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-traverse": "^6.24.1", @@ -3550,6 +3651,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, "requires": { "babel-helper-get-function-arity": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3562,6 +3664,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3571,6 +3674,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3580,6 +3684,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3589,6 +3694,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", @@ -3599,6 +3705,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3611,6 +3718,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, "requires": { "babel-helper-optimise-call-expression": "^6.24.1", "babel-messages": "^6.23.0", @@ -3624,6 +3732,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" @@ -3633,6 +3742,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", + "dev": true, "requires": { "babel-plugin-istanbul": "^4.1.6", "babel-preset-jest": "^23.2.0" @@ -3642,6 +3752,7 @@ "version": "7.1.5", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", + "dev": true, "requires": { "find-cache-dir": "^1.0.0", "loader-utils": "^1.0.2", @@ -3652,6 +3763,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, "requires": { "commondir": "^1.0.1", "make-dir": "^1.0.0", @@ -3664,6 +3776,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -3672,6 +3785,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -3680,6 +3794,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz", "integrity": "sha512-tTfZbM9Ecwj3GK50mnPrUpinTwA4xXmDiQGCk/aBYbvl1+X8YqldK86wZ1owVJ4u3mrKbRlXMma80J18qwiaTQ==", + "dev": true, "requires": { "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-template": "^6.26.0", @@ -3690,6 +3805,7 @@ "version": "4.1.6", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, "requires": { "babel-plugin-syntax-object-rest-spread": "^6.13.0", "find-up": "^2.1.0", @@ -3700,17 +3816,20 @@ "babel-plugin-jest-hoist": { "version": "23.2.0", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", - "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=" + "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", + "dev": true }, "babel-plugin-react-generate-property": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/babel-plugin-react-generate-property/-/babel-plugin-react-generate-property-1.0.5.tgz", - "integrity": "sha512-ghZkxSTIrdUfXeTI+J/MYfYthDB+NElYLEYUOaJjgErscBKBzI45ZYVo+9wn5wLrlCpLjaeQTEIAewZ7Sf+DmQ==" + "integrity": "sha512-ghZkxSTIrdUfXeTI+J/MYfYthDB+NElYLEYUOaJjgErscBKBzI45ZYVo+9wn5wLrlCpLjaeQTEIAewZ7Sf+DmQ==", + "dev": true }, "babel-plugin-react-remove-properties": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/babel-plugin-react-remove-properties/-/babel-plugin-react-remove-properties-0.3.0.tgz", - "integrity": "sha512-vbxegtXGyVcUkCvayLzftU95vuvpYFV85pRpeMpohMHeEY46Qe0VNWfkVVcCbaZ12CXHzDFOj0esumATcW83ng==" + "integrity": "sha512-vbxegtXGyVcUkCvayLzftU95vuvpYFV85pRpeMpohMHeEY46Qe0VNWfkVVcCbaZ12CXHzDFOj0esumATcW83ng==", + "dev": true }, "babel-plugin-styled-components": { "version": "1.11.1", @@ -3726,27 +3845,32 @@ "babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true }, "babel-plugin-syntax-class-properties": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true }, "babel-plugin-syntax-dynamic-import": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true }, "babel-plugin-syntax-flow": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true }, "babel-plugin-syntax-jsx": { "version": "6.18.0", @@ -3756,17 +3880,20 @@ "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true }, "babel-plugin-syntax-trailing-function-commas": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true }, "babel-plugin-transform-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, "requires": { "babel-helper-remap-async-to-generator": "^6.24.1", "babel-plugin-syntax-async-functions": "^6.8.0", @@ -3777,6 +3904,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", "babel-plugin-syntax-class-properties": "^6.8.0", @@ -3788,6 +3916,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -3796,6 +3925,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -3804,6 +3934,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-template": "^6.26.0", @@ -3816,6 +3947,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, "requires": { "babel-helper-define-map": "^6.24.1", "babel-helper-function-name": "^6.24.1", @@ -3832,6 +3964,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" @@ -3841,6 +3974,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -3849,6 +3983,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3858,6 +3993,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -3866,6 +4002,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3876,6 +4013,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -3884,6 +4022,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, "requires": { "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3894,6 +4033,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, "requires": { "babel-plugin-transform-strict-mode": "^6.24.1", "babel-runtime": "^6.26.0", @@ -3905,6 +4045,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, "requires": { "babel-helper-hoist-variables": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3915,6 +4056,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, "requires": { "babel-plugin-transform-es2015-modules-amd": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3925,6 +4067,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, "requires": { "babel-helper-replace-supers": "^6.24.1", "babel-runtime": "^6.22.0" @@ -3934,6 +4077,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, "requires": { "babel-helper-call-delegate": "^6.24.1", "babel-helper-get-function-arity": "^6.24.1", @@ -3947,6 +4091,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3956,6 +4101,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -3964,6 +4110,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, "requires": { "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3974,6 +4121,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -3982,6 +4130,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -3990,6 +4139,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, "requires": { "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", @@ -4000,6 +4150,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, "requires": { "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", "babel-plugin-syntax-exponentiation-operator": "^6.8.0", @@ -4010,6 +4161,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, "requires": { "babel-plugin-syntax-flow": "^6.18.0", "babel-runtime": "^6.22.0" @@ -4019,6 +4171,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, "requires": { "babel-plugin-syntax-object-rest-spread": "^6.8.0", "babel-runtime": "^6.26.0" @@ -4028,6 +4181,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz", "integrity": "sha1-LxGb9NLN1F65uqrldAU8YE9hR90=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -4036,6 +4190,7 @@ "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -4044,6 +4199,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "dev": true, "requires": { "babel-helper-builder-react-jsx": "^6.24.1", "babel-plugin-syntax-jsx": "^6.8.0", @@ -4054,6 +4210,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", + "dev": true, "requires": { "babel-plugin-syntax-jsx": "^6.8.0", "babel-runtime": "^6.22.0" @@ -4063,6 +4220,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "dev": true, "requires": { "babel-plugin-syntax-jsx": "^6.8.0", "babel-runtime": "^6.22.0" @@ -4072,6 +4230,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, "requires": { "regenerator-transform": "^0.10.0" } @@ -4080,6 +4239,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -4088,6 +4248,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -4097,6 +4258,7 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "dev": true, "requires": { "babel-plugin-check-es2015-constants": "^6.22.0", "babel-plugin-syntax-trailing-function-commas": "^6.22.0", @@ -4134,6 +4296,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "dev": true, "requires": { "babel-plugin-transform-flow-strip-types": "^6.22.0" } @@ -4142,6 +4305,7 @@ "version": "23.2.0", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", + "dev": true, "requires": { "babel-plugin-jest-hoist": "^23.2.0", "babel-plugin-syntax-object-rest-spread": "^6.13.0" @@ -4151,6 +4315,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", + "dev": true, "requires": { "babel-plugin-syntax-jsx": "^6.3.13", "babel-plugin-transform-react-display-name": "^6.23.0", @@ -4164,6 +4329,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-3.1.1.tgz", "integrity": "sha512-9fRHopNaGL5ScRZdPSoyxRaABKmkS2fx0HUJ5Yphan5G8QDFD7lETsPyY7El6b7YPT3sNrw9gfrWzl4/LsJcfA==", + "dev": true, "requires": { "babel-plugin-dynamic-import-node": "1.1.0", "babel-plugin-syntax-dynamic-import": "6.18.0", @@ -4184,6 +4350,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, "requires": { "babel-core": "^6.26.0", "babel-runtime": "^6.26.0", @@ -4207,6 +4374,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-traverse": "^6.26.0", @@ -4219,6 +4387,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, "requires": { "babel-code-frame": "^6.26.0", "babel-messages": "^6.23.0", @@ -4235,6 +4404,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, "requires": { "babel-runtime": "^6.26.0", "esutils": "^2.0.2", @@ -4245,7 +4415,8 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true }, "balanced-match": { "version": "1.0.0", @@ -4320,12 +4491,14 @@ "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -4338,7 +4511,18 @@ "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } }, "bl": { "version": "4.1.0", @@ -4398,17 +4582,20 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, "bn.js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, "requires": { "bytes": "3.1.0", "content-type": "~1.0.4", @@ -4425,12 +4612,14 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -4446,6 +4635,7 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, "requires": { "array-flatten": "^2.1.0", "deep-equal": "^1.0.1", @@ -4550,11 +4740,6 @@ } } }, - "brace": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/brace/-/brace-0.11.1.tgz", - "integrity": "sha1-SJb8ydVE7vRfS7dmDbMg07N5/lg=" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4568,6 +4753,7 @@ "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, "requires": { "expand-range": "^1.8.1", "preserve": "^0.2.0", @@ -4582,17 +4768,20 @@ "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true }, "browser-process-hrtime": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", - "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=" + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true }, "browser-resolve": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, "requires": { "resolve": "1.1.7" }, @@ -4600,7 +4789,8 @@ "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true } } }, @@ -4608,6 +4798,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -4621,6 +4812,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, "requires": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -4631,6 +4823,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -4641,7 +4834,8 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true } } }, @@ -4649,6 +4843,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, "requires": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -4658,6 +4853,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, "requires": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -4673,12 +4869,14 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -4688,12 +4886,14 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, "requires": { "safe-buffer": "~5.2.0" } @@ -4704,6 +4904,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, "requires": { "pako": "~1.0.5" } @@ -4712,6 +4913,7 @@ "version": "2.11.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "dev": true, "requires": { "caniuse-lite": "^1.0.30000792", "electron-to-chromium": "^1.3.30" @@ -4721,6 +4923,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, "requires": { "node-int64": "^0.4.0" } @@ -4735,6 +4938,7 @@ "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -4744,17 +4948,20 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true }, "buffer-indexof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true }, "builtin-modules": { "version": "1.1.1", @@ -4764,12 +4971,14 @@ "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true }, "c3": { "version": "0.4.22", @@ -4783,6 +4992,7 @@ "version": "12.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, "requires": { "bluebird": "^3.5.5", "chownr": "^1.1.1", @@ -4805,6 +5015,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4817,12 +5028,14 @@ "graceful-fs": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "requires": { "yallist": "^3.0.2" } @@ -4831,6 +5044,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -4838,12 +5052,14 @@ "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } } }, @@ -4874,6 +5090,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -4887,7 +5104,8 @@ "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, "requires": { "callsites": "^2.0.0" }, @@ -4895,7 +5113,8 @@ "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true } } }, @@ -4950,55 +5169,14 @@ "caniuse-lite": { "version": "1.0.30000812", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000812.tgz", - "integrity": "sha512-j+l55ayQ9BO4Sy9iVfbf99+G+4ddAmkXoiEt73WCW4vJ83usrlHzDkFEnNXe5/swkVqE7YBm5i8M2uRXlx9vWg==" - }, - "canvg": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.8.tgz", - "integrity": "sha512-9De5heHfVRgCkln3CGEeSJMviN5U2RyxL4uutYoe8HxI60BjH2XnT2ZUHIp+ZaAZNTUd5Asqfut8WEEdANqfAg==", - "requires": { - "@babel/runtime": "^7.12.5", - "@types/raf": "^3.4.0", - "core-js": "^3.8.3", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.7", - "rgbcolor": "^1.0.1", - "stackblur-canvas": "^2.0.0", - "svg-pathdata": "^5.0.5" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "core-js": { - "version": "3.18.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.1.tgz", - "integrity": "sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA==" - }, - "raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "requires": { - "performance-now": "^2.1.0" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - } - } + "integrity": "sha512-j+l55ayQ9BO4Sy9iVfbf99+G+4ddAmkXoiEt73WCW4vJ83usrlHzDkFEnNXe5/swkVqE7YBm5i8M2uRXlx9vWg==", + "dev": true }, "capture-exit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "dev": true, "requires": { "rsvp": "^3.3.3" } @@ -5011,28 +5189,14 @@ "case-sensitive-paths-webpack-plugin": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz", - "integrity": "sha1-PSnO2MHxJL9vU4Rvs/WJRzH9yQk=" + "integrity": "sha1-PSnO2MHxJL9vU4Rvs/WJRzH9yQk=", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "cfb": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-0.12.1.tgz", - "integrity": "sha512-cP+4A0tTqtyza5gJwNwDetZ8FPjl0gPLE7mIxGKyUzOS6HkM23WaAWW/l3t7jIQSMqVXroa09Ey0lo7gV8LNxw==", - "requires": { - "commander": "~2.11.0", - "printj": "~1.1.0" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" - } - } + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.3.2", @@ -5073,6 +5237,7 @@ "version": "1.0.0-rc.10", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dev": true, "requires": { "cheerio-select": "^1.5.0", "dom-serializer": "^1.3.2", @@ -5087,6 +5252,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -5096,12 +5262,14 @@ "domelementtype": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true }, "domhandler": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, "requires": { "domelementtype": "^2.2.0" } @@ -5110,6 +5278,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, "requires": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -5119,12 +5288,14 @@ "entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true }, "htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -5135,7 +5306,8 @@ "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true } } }, @@ -5143,6 +5315,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", + "dev": true, "requires": { "css-select": "^4.1.3", "css-what": "^5.0.1", @@ -5155,6 +5328,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.0.tgz", "integrity": "sha512-6YVG6hsH9yIb/si3Th/is8Pex7qnVHO6t7q7U6TIUnkQASGbS8tnUDBftnPynLNnuUl/r2+PTd0ekiiq7R0zJw==", + "dev": true, "requires": { "boolbase": "^1.0.0", "css-what": "^5.1.0", @@ -5166,12 +5340,14 @@ "css-what": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==" + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true }, "dom-serializer": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -5181,12 +5357,14 @@ "domelementtype": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true }, "domhandler": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, "requires": { "domelementtype": "^2.2.0" } @@ -5195,6 +5373,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, "requires": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -5204,12 +5383,14 @@ "entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true }, "nth-check": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, "requires": { "boolbase": "^1.0.0" } @@ -5220,6 +5401,7 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -5238,12 +5420,14 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -5261,6 +5445,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -5269,6 +5454,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -5280,6 +5466,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -5289,6 +5476,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, "requires": { "is-extglob": "^2.1.0" } @@ -5298,12 +5486,14 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -5312,6 +5502,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { "kind-of": "^3.0.2" } @@ -5319,24 +5510,28 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true } } }, "chownr": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "dev": true }, "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, "ci-info": { "version": "1.1.2", @@ -5347,6 +5542,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -5437,6 +5633,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -5446,12 +5643,14 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -5461,17 +5660,13 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } } } }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" - }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -5504,23 +5699,6 @@ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.64.0.tgz", "integrity": "sha512-fqr6CtDQdJ6iNMbD8NX2gH2G876nNDk+TO1rrYkgWnqQdO3O1Xa9tK6q+psqhJJgE5SpbaDcgdfLmukoUVE8pg==" }, - "codepage": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.10.2.tgz", - "integrity": "sha1-vr0lIk3GJqAAfqAU4HbOBXN0dp4=", - "requires": { - "commander": "~2.11.0", - "exit-on-epipe": "~1.0.1", - "voc": "~1.0.0" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" - } - } - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -5539,14 +5717,15 @@ } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "combined-stream": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -5555,6 +5734,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.0.2.tgz", "integrity": "sha512-/qPcbL8zpqg53x4rAaqMFlRV4opN3pbla7I7k9x8kyOBMQoGT6WltjN6sXZuxOXw6DgdK7Ad+ijYS5gjcr7vlA==", + "dev": true, "requires": { "argv-tools": "^0.1.1", "array-back": "^2.0.0", @@ -5572,7 +5752,8 @@ "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true }, "component-emitter": { "version": "1.2.1", @@ -5583,6 +5764,7 @@ "version": "2.0.17", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "dev": true, "requires": { "mime-db": ">= 1.40.0 < 2" }, @@ -5590,7 +5772,8 @@ "mime-db": { "version": "1.42.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", + "dev": true } } }, @@ -5598,6 +5781,7 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, "requires": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -5611,7 +5795,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -5651,28 +5836,26 @@ "connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true }, "console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "optional": true + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, "requires": { "safe-buffer": "5.1.2" }, @@ -5680,34 +5863,40 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true }, "convert-source-map": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true }, "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, "requires": { "aproba": "^1.1.1", "fs-write-stream-atomic": "^1.0.8", @@ -5722,14 +5911,6 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, - "copy-to-clipboard": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", - "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", - "requires": { - "toggle-selection": "^1.0.6" - } - }, "core-js": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", @@ -5738,7 +5919,8 @@ "core-js-pure": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.7.0.tgz", - "integrity": "sha512-EZD2ckZysv8MMt4J6HSvS9K2GdtlZtdBncKAmF9lr2n0c9dJUaUN88PSTjvgwCgQPWKTkERXITgS6JJRAnljtg==" + "integrity": "sha512-EZD2ckZysv8MMt4J6HSvS9K2GdtlZtdBncKAmF9lr2n0c9dJUaUN88PSTjvgwCgQPWKTkERXITgS6JJRAnljtg==", + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -5766,19 +5948,11 @@ } } }, - "crc-32": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.1.1.tgz", - "integrity": "sha1-XXOdXkxuNSrYME1zIj1IP+Va240=", - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } - }, "create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, "requires": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -5787,7 +5961,8 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true } } }, @@ -5803,6 +5978,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -5815,6 +5991,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -5824,15 +6001,6 @@ "sha.js": "^2.4.8" } }, - "create-react-class": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", - "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", - "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" - } - }, "create-react-context": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", @@ -5853,9 +6021,9 @@ } }, "cropperjs": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.12.tgz", - "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.6.0.tgz", + "integrity": "sha512-BzLU/ecrfsbflwxgu+o7sQTrTlo52pVRZkTVrugEK5uyj6n8qKwAHP4s6+DWHqlXLqQ5B9+cM2MKeXiNfAsF6Q==" }, "cross-spawn": { "version": "5.1.0", @@ -5876,6 +6044,7 @@ "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, "requires": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -6032,21 +6201,17 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" }, - "cssfontparser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz", - "integrity": "sha1-9AIvyPlwDGgCnVQghK+69CWj8+M=", - "dev": true - }, "cssom": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=" + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true }, "cssstyle": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, "requires": { "cssom": "0.3.x" } @@ -6067,7 +6232,8 @@ "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true }, "d": { "version": "1.0.1", @@ -6086,12 +6252,14 @@ "damerau-levenshtein": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", - "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==" + "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", + "dev": true }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -6100,17 +6268,11 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz", "integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==", + "dev": true, "requires": { "abab": "^1.0.4", "whatwg-mimetype": "^2.0.0", "whatwg-url": "^6.4.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" - } } }, "datatables.net": { @@ -6191,6 +6353,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "dev": true, "requires": { "is-arguments": "^1.0.4", "is-date-object": "^1.0.1", @@ -6203,7 +6366,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, @@ -6235,6 +6399,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, "requires": { "execa": "^1.0.0", "ip-regex": "^2.1.0" @@ -6244,6 +6409,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -6256,6 +6422,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -6270,6 +6437,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -6280,6 +6448,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, "requires": { "strip-bom": "^2.0.0" } @@ -6399,23 +6568,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true }, "des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -6424,7 +6590,8 @@ "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true }, "detect-file": { "version": "1.0.0", @@ -6436,25 +6603,22 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, "requires": { "repeating": "^2.0.0" } }, - "detect-libc": { - "version": "1.0.3", - "resolved": false, - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "optional": true - }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true }, "detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true }, "detect-node-es": { "version": "1.1.0", @@ -6473,12 +6637,8 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - }, - "diff-match-patch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", - "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "diff-sequences": { "version": "26.6.2", @@ -6490,6 +6650,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, "requires": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -6499,7 +6660,8 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true } } }, @@ -6530,7 +6692,8 @@ "discontinuous-range": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=" + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", + "dev": true }, "dnd-core": { "version": "9.5.1", @@ -6576,12 +6739,14 @@ "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true }, "dns-packet": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" @@ -6591,6 +6756,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, "requires": { "buffer-indexof": "^1.0.0" } @@ -6605,6 +6771,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, "requires": { "esutils": "^2.0.2" } @@ -6634,12 +6801,14 @@ "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true }, "domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, "requires": { "webidl-conversions": "^4.0.2" } @@ -6655,7 +6824,7 @@ "dotenv": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", - "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" + "integrity": "sha512-XcaMACOr3JMVcEv0Y/iUM2XaOsATRZ3U1In41/1jjK6vJZ2PZbQ1bzCG8uvaByfaBpl9gqc9QWJovpUGBXLLYQ==" }, "dotenv-expand": { "version": "4.2.0", @@ -6685,6 +6854,7 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, "requires": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -6708,6 +6878,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, "requires": { "jsbn": "~0.1.0" } @@ -6715,7 +6886,8 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true }, "ejs": { "version": "2.7.4", @@ -6726,12 +6898,14 @@ "electron-to-chromium": { "version": "1.3.34", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz", - "integrity": "sha1-2TSY9AORuwwWpgPYJBuZUUBBV+0=" + "integrity": "sha1-2TSY9AORuwwWpgPYJBuZUUBBV+0=", + "dev": true }, "elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, "requires": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -6745,19 +6919,22 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true } } }, "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "emojis-list": { "version": "2.1.0", @@ -6767,7 +6944,8 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true }, "encoding": { "version": "0.1.12", @@ -6781,6 +6959,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -6789,6 +6968,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "memory-fs": "^0.4.0", @@ -6799,6 +6979,7 @@ "version": "3.11.0", "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", + "dev": true, "requires": { "array.prototype.flat": "^1.2.3", "cheerio": "^1.0.0-rc.3", @@ -6828,6 +7009,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -6836,6 +7018,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -6843,12 +7026,14 @@ "is-callable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true }, "is-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -6856,12 +7041,14 @@ "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true }, "object-is": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -6870,12 +7057,14 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dev": true, "requires": { "performance-now": "^2.1.0" } @@ -6886,6 +7075,7 @@ "version": "1.15.6", "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz", "integrity": "sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==", + "dev": true, "requires": { "enzyme-adapter-utils": "^1.14.0", "enzyme-shallow-equal": "^1.0.4", @@ -6902,6 +7092,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -6909,12 +7100,14 @@ "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, @@ -6922,6 +7115,7 @@ "version": "1.14.0", "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz", "integrity": "sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==", + "dev": true, "requires": { "airbnb-prop-types": "^2.16.0", "function.prototype.name": "^1.1.3", @@ -6936,6 +7130,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -6943,7 +7138,8 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, @@ -6957,15 +7153,11 @@ "deep-equal-ident": "^1.1.1" } }, - "enzyme-redux": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/enzyme-redux/-/enzyme-redux-0.1.7.tgz", - "integrity": "sha1-HStArU0Xo1CEdkJCgUY/ie9AEqI=" - }, "enzyme-shallow-equal": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz", "integrity": "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==", + "dev": true, "requires": { "has": "^1.0.3", "object-is": "^1.1.2" @@ -6975,6 +7167,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -6983,6 +7176,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -6991,6 +7185,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -6999,7 +7194,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, @@ -7038,6 +7234,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, "requires": { "prr": "~1.0.1" } @@ -7167,7 +7364,8 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true }, "escape-string-regexp": { "version": "1.0.5", @@ -7178,6 +7376,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dev": true, "requires": { "esprima": "^3.1.3", "estraverse": "^4.2.0", @@ -7201,6 +7400,7 @@ "version": "4.19.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, "requires": { "ajv": "^5.3.0", "babel-code-frame": "^6.22.0", @@ -7246,6 +7446,7 @@ "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, "requires": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", @@ -7256,12 +7457,14 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -7270,6 +7473,7 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" @@ -7278,32 +7482,38 @@ "fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "pluralize": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -7314,6 +7524,7 @@ "version": "16.1.0", "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-16.1.0.tgz", "integrity": "sha512-zLyOhVWhzB/jwbz7IPSbkUuj7X2ox4PHXTcZkEmDqTvd0baJmJyuxlFPDlZOE/Y5bC+HQRaEkT3FoHo9wIdRiw==", + "dev": true, "requires": { "eslint-config-airbnb-base": "^12.1.0" } @@ -7322,6 +7533,7 @@ "version": "12.1.0", "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz", "integrity": "sha512-/vjm0Px5ZCpmJqnjIzcFb9TKZrKWz0gnuG/7Gfkt0Db1ELJR51xkZth+t14rYdqWgX836XbuxtArbIHlVhbLBA==", + "dev": true, "requires": { "eslint-restricted-globals": "^0.1.1" } @@ -7329,12 +7541,14 @@ "eslint-config-react-app": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-2.1.0.tgz", - "integrity": "sha512-8QZrKWuHVC57Fmu+SsKAVxnI9LycZl7NFQ4H9L+oeISuCXhYdXqsOOIVSjQFW6JF5MXZLFE+21Syhd7mF1IRZQ==" + "integrity": "sha512-8QZrKWuHVC57Fmu+SsKAVxnI9LycZl7NFQ4H9L+oeISuCXhYdXqsOOIVSjQFW6JF5MXZLFE+21Syhd7mF1IRZQ==", + "dev": true }, "eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, "requires": { "debug": "^3.2.7", "resolve": "^1.20.0" @@ -7344,6 +7558,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -7351,7 +7566,8 @@ "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true } } }, @@ -7359,6 +7575,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "dev": true, "requires": { "loader-fs-cache": "^1.0.0", "loader-utils": "^1.0.2", @@ -7371,6 +7588,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", + "dev": true, "requires": { "debug": "^3.2.7", "find-up": "^2.1.0", @@ -7381,6 +7599,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -7388,7 +7607,8 @@ "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true } } }, @@ -7396,6 +7616,7 @@ "version": "2.39.1", "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.39.1.tgz", "integrity": "sha512-RiQv+7Z9QDJuzt+NO8sYgkLGT+h+WeCrxP7y8lI7wpU41x3x/2o3PGtHk9ck8QnA9/mlbNcy/hG0eKvmd7npaA==", + "dev": true, "requires": { "lodash": "^4.15.0" } @@ -7404,6 +7625,7 @@ "version": "2.25.3", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz", "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==", + "dev": true, "requires": { "array-includes": "^3.1.4", "array.prototype.flat": "^1.2.5", @@ -7424,6 +7646,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -7434,6 +7657,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -7442,6 +7666,7 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -7469,6 +7694,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -7479,6 +7705,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -7489,6 +7716,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -7496,22 +7724,26 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true }, "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -7520,6 +7752,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7529,6 +7762,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -7537,6 +7771,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -7544,17 +7779,20 @@ "object-inspect": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==" + "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", + "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object.values": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -7565,6 +7803,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -7574,6 +7813,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -7585,6 +7825,7 @@ "version": "6.5.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", + "dev": true, "requires": { "@babel/runtime": "^7.16.3", "aria-query": "^4.2.2", @@ -7604,6 +7845,7 @@ "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } @@ -7612,6 +7854,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -7619,7 +7862,8 @@ "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true } } }, @@ -7627,6 +7871,7 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.0.tgz", "integrity": "sha512-dceliS5itjk4EZdQYtLMz6GulcsasguIs+VTXuiC7Q5IPIdGTkyfXVdmsQOqEhlD9MciofH4cMcT1bw1WWNxCQ==", + "dev": true, "requires": { "array-includes": "^3.1.3", "array.prototype.flatmap": "^1.2.4", @@ -7648,6 +7893,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -7660,6 +7906,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -7668,6 +7915,7 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -7695,6 +7943,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -7704,12 +7953,14 @@ "estraverse": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true }, "get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -7720,6 +7971,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -7727,17 +7979,20 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true }, "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7747,6 +8002,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -7755,6 +8011,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -7763,6 +8020,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "dev": true, "requires": { "array-includes": "^3.1.3", "object.assign": "^4.1.2" @@ -7771,17 +8029,20 @@ "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object.entries": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -7792,6 +8053,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -7802,6 +8064,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -7811,12 +8074,14 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "resolve": { "version": "2.0.0-next.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -7825,12 +8090,14 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -7840,6 +8107,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -7856,12 +8124,14 @@ "eslint-restricted-globals": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", - "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=" + "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", + "dev": true }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" @@ -7884,12 +8154,14 @@ "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true }, "esquery": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, "requires": { "estraverse": "^4.0.0" } @@ -7916,7 +8188,8 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true }, "event-emitter": { "version": "0.3.5", @@ -7930,12 +8203,14 @@ "eventemitter3": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==" + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true }, "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true }, "eventsource": { "version": "0.1.6", @@ -7949,6 +8224,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -7958,6 +8234,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "dev": true, "requires": { "merge": "^1.2.0" } @@ -7979,22 +8256,19 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true }, "exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" - }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, "requires": { "is-posix-bracket": "^0.1.0" } @@ -8003,6 +8277,7 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, "requires": { "fill-range": "^2.1.0" } @@ -8019,6 +8294,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", + "dev": true, "requires": { "ansi-styles": "^3.2.0", "jest-diff": "^23.6.0", @@ -8032,6 +8308,7 @@ "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", @@ -8068,12 +8345,14 @@ "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -8095,7 +8374,8 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extend-shallow": { "version": "3.0.2", @@ -8130,6 +8410,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, "requires": { "is-extglob": "^1.0.0" } @@ -8137,18 +8418,14 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" - }, "fast-glob": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", @@ -8471,6 +8748,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, "requires": { "bser": "2.1.1" } @@ -8507,7 +8785,8 @@ "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true }, "figures": { "version": "2.0.0", @@ -8521,6 +8800,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, "requires": { "flat-cache": "^1.2.1", "object-assign": "^4.0.1" @@ -8546,11 +8826,6 @@ } } }, - "file-saver": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-1.3.8.tgz", - "integrity": "sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg==" - }, "file-selector": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.2.4.tgz", @@ -8566,15 +8841,24 @@ } } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true }, "fileset": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, "requires": { "glob": "^7.0.3", "minimatch": "^3.0.3" @@ -8589,25 +8873,20 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", "randomatic": "^3.0.0", "repeat-element": "^1.1.2", "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } } }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -8622,6 +8901,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, "requires": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -8632,6 +8912,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -8640,6 +8921,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -8649,6 +8931,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, "requires": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -8658,6 +8941,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -8666,6 +8950,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -8673,17 +8958,20 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, "requires": { "find-up": "^3.0.0" } @@ -8691,7 +8979,8 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, @@ -8715,6 +9004,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-2.0.1.tgz", "integrity": "sha512-LzDo3Fpa30FLIBsh6DCDnMN1KW2g4QKkqKmejlImgWY67dDFPX/x9Kh/op/GK522DchQXEvDi/wD48HKW49XOQ==", + "dev": true, "requires": { "array-back": "^2.0.0", "test-value": "^3.0.0" @@ -9037,21 +9327,6 @@ } } }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "requires": { - "is-buffer": "~2.0.3" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" - } - } - }, "flat-cache": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", @@ -9067,6 +9342,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, "requires": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" @@ -9076,6 +9352,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9090,6 +9367,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -9100,6 +9378,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-2.0.1.tgz", "integrity": "sha512-p/bl/5ctITsyl9zE+LRXhEguJjZsz7ViQ1lx6VxYUyt5BliZQ/l0rzYuLnJ0H90lj54rcupxdWfE5KU3LutRwQ==", + "dev": true, "requires": { "lodash": "^4.0.0" } @@ -9121,6 +9400,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", + "dev": true, "requires": { "debug": "^3.0.0" }, @@ -9129,6 +9409,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -9136,7 +9417,8 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -9160,6 +9442,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, "requires": { "for-in": "^1.0.1" } @@ -9172,12 +9455,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "1.0.6", @@ -9226,12 +9511,8 @@ "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "frac": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", - "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true }, "fragment-cache": { "version": "0.2.1", @@ -9244,12 +9525,14 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -9273,18 +9556,11 @@ "universalify": "^0.1.0" } }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "requires": { - "minipass": "^2.6.0" - } - }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "iferr": "^0.1.5", @@ -9298,133 +9574,38 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, "optional": true, "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": false, - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "glob": { - "version": "7.1.3", - "resolved": false, - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "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" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": false, - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "nopt": { - "version": "4.0.1", - "resolved": false, - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": false, - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "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" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": false, - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.0", - "resolved": false, - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "tar": { - "version": "4.4.8", - "resolved": false, - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.0.3", - "resolved": false, - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.3.tgz", - "integrity": "sha512-H51qkbNSp8mtkJt+nyW1gyStBiKZxfRqySNUR99ylq6BPXHKI4SEvIlTKp4odLfjRKJV04DFWMU3G/YRlQOsag==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "functions-have-names": "^1.2.1" + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.3.tgz", + "integrity": "sha512-H51qkbNSp8mtkJt+nyW1gyStBiKZxfRqySNUR99ylq6BPXHKI4SEvIlTKp4odLfjRKJV04DFWMU3G/YRlQOsag==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "functions-have-names": "^1.2.1" }, "dependencies": { "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -9433,6 +9614,7 @@ "version": "1.18.0-next.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -9454,6 +9636,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -9464,6 +9647,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -9471,12 +9655,14 @@ "is-callable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true }, "is-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -9485,6 +9671,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -9492,57 +9679,22 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true }, "functions-have-names": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", - "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==" - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "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" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } + "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==", + "dev": true }, "generate-function": { "version": "2.3.1", @@ -9563,12 +9715,14 @@ "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true }, "get-intrinsic": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.0.tgz", "integrity": "sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -9579,6 +9733,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -9599,6 +9754,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -9608,6 +9764,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -9618,6 +9775,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -9633,6 +9791,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -9654,6 +9813,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, "requires": { "glob-parent": "^2.0.0", "is-glob": "^2.0.0" @@ -9663,6 +9823,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, "requires": { "is-glob": "^2.0.0" } @@ -9791,7 +9952,8 @@ "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true }, "gud": { "version": "1.0.0", @@ -9817,12 +9979,14 @@ "handle-thing": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, "requires": { "minimist": "^1.2.5", "neo-async": "^2.6.0", @@ -9834,24 +9998,28 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true } } }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -9876,7 +10044,8 @@ "has-bigints": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true }, "has-flag": { "version": "3.0.0", @@ -9886,12 +10055,14 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "requires": { "has-symbols": "^1.0.2" }, @@ -9899,16 +10070,11 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true } } }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "optional": true - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -9967,6 +10133,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, "requires": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -9976,12 +10143,14 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9991,12 +10160,14 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, "requires": { "safe-buffer": "~5.2.0" } @@ -10007,6 +10178,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -10040,6 +10212,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -10055,6 +10228,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.1" @@ -10077,6 +10251,7 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, "requires": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -10088,6 +10263,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.0.tgz", "integrity": "sha512-AqCt/m9YaiMwaaAyOPdq4Ga0cM+jdDWWGueUMkdROZcTeClaGpN0AQeyGchZhTegQoABmc6+IqH7oCR/8vhQYg==", + "dev": true, "requires": { "array-filter": "^1.0.0", "call-bind": "^1.0.2" @@ -10096,7 +10272,8 @@ "array-filter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=" + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true } } }, @@ -10104,6 +10281,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, "requires": { "whatwg-encoding": "^1.0.1" } @@ -10111,7 +10289,8 @@ "html-entities": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true }, "html-minifier": { "version": "3.5.16", @@ -10164,12 +10343,14 @@ "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -10187,6 +10368,7 @@ "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, "requires": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -10225,6 +10407,7 @@ "version": "0.19.1", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, "requires": { "http-proxy": "^1.17.0", "is-glob": "^4.0.0", @@ -10235,17 +10418,20 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -10263,6 +10449,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -10273,6 +10460,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -10287,6 +10475,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -10295,6 +10484,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -10303,6 +10493,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -10311,6 +10502,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -10321,6 +10513,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -10329,6 +10522,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -10339,6 +10533,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -10348,7 +10543,8 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -10356,6 +10552,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -10371,6 +10568,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -10379,6 +10577,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -10389,6 +10588,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -10400,6 +10600,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -10410,6 +10611,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -10418,6 +10620,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -10426,6 +10629,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -10435,12 +10639,14 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -10449,6 +10655,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -10457,6 +10664,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -10466,17 +10674,20 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -10499,6 +10710,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -10508,7 +10720,8 @@ "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true }, "https-proxy-agent": { "version": "5.0.0", @@ -10541,6 +10754,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "dev": true, "requires": { "cosmiconfig": "^5.0.7", "execa": "^1.0.0", @@ -10557,12 +10771,14 @@ "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, "requires": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", @@ -10574,6 +10790,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -10586,6 +10803,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -10600,6 +10818,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -10607,12 +10826,14 @@ "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==" + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -10621,6 +10842,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, "requires": { "ci-info": "^2.0.0" } @@ -10629,15 +10851,17 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -10646,6 +10870,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -10653,12 +10878,14 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, "requires": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -10667,12 +10894,14 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, "requires": { "find-up": "^3.0.0" } @@ -10680,7 +10909,8 @@ "read-pkg": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", + "dev": true, "requires": { "normalize-package-data": "^2.3.2", "parse-json": "^4.0.0", @@ -10690,7 +10920,8 @@ "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true } } }, @@ -10715,27 +10946,20 @@ "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true }, "iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true }, "ignore": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" }, - "ignore-walk": { - "version": "3.0.1", - "resolved": false, - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, "immutable": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", @@ -10744,7 +10968,8 @@ "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, "requires": { "caller-path": "^2.0.0", "resolve-from": "^3.0.0" @@ -10753,7 +10978,8 @@ "caller-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, "requires": { "caller-callsite": "^2.0.0" } @@ -10761,7 +10987,8 @@ "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true } } }, @@ -10774,6 +11001,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, "requires": { "pkg-dir": "^2.0.0", "resolve-cwd": "^2.0.0" @@ -10795,7 +11023,8 @@ "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "inflight": { "version": "1.0.6", @@ -10820,6 +11049,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", @@ -10840,17 +11070,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -10860,6 +11093,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -10870,6 +11104,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, "requires": { "default-gateway": "^4.2.0", "ipaddr.js": "^1.9.0" @@ -10879,6 +11114,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, "requires": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -10889,6 +11125,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -10938,22 +11175,26 @@ "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true }, "ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true }, "ipaddr.js": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true }, "is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", @@ -10977,6 +11218,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "requires": { "has-bigints": "^1.0.1" } @@ -10985,6 +11227,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, "requires": { "binary-extensions": "^1.0.0" } @@ -10993,6 +11236,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, "requires": { "call-bind": "^1.0.0" } @@ -11027,6 +11271,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, "requires": { "has": "^1.0.3" }, @@ -11035,6 +11280,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -11079,12 +11325,14 @@ "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, "requires": { "is-primitive": "^2.0.0" } @@ -11097,7 +11345,8 @@ "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true }, "is-finite": { "version": "1.0.2", @@ -11115,12 +11364,14 @@ "is-generator-fn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=" + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, "requires": { "is-extglob": "^1.0.0" } @@ -11160,7 +11411,8 @@ "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true }, "is-node-process": { "version": "1.0.1", @@ -11177,6 +11429,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, "requires": { "kind-of": "^3.0.2" } @@ -11184,7 +11437,8 @@ "is-number-object": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true }, "is-obj": { "version": "1.0.1", @@ -11245,7 +11499,8 @@ "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true }, "is-potential-custom-element-name": { "version": "1.0.1", @@ -11256,7 +11511,8 @@ "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true }, "is-promise": { "version": "2.1.0", @@ -11299,7 +11555,8 @@ "is-shared-array-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true }, "is-stream": { "version": "1.1.0", @@ -11309,12 +11566,14 @@ "is-string": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true }, "is-subset": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=" + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true }, "is-symbol": { "version": "1.0.1", @@ -11324,7 +11583,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-unicode-supported": { "version": "0.1.0", @@ -11341,6 +11601,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, "requires": { "call-bind": "^1.0.0" } @@ -11374,6 +11635,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, "requires": { "isarray": "1.0.0" } @@ -11390,12 +11652,14 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "istanbul-api": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "dev": true, "requires": { "async": "^2.1.4", "fileset": "^2.0.2", @@ -11413,12 +11677,14 @@ "istanbul-lib-coverage": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==" + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true }, "istanbul-lib-hook": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "dev": true, "requires": { "append-transform": "^0.4.0" } @@ -11427,6 +11693,7 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, "requires": { "babel-generator": "^6.18.0", "babel-template": "^6.16.0", @@ -11441,6 +11708,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "dev": true, "requires": { "istanbul-lib-coverage": "^1.2.1", "mkdirp": "^0.5.1", @@ -11451,12 +11719,14 @@ "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, "requires": { "has-flag": "^1.0.0" } @@ -11467,6 +11737,7 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, "requires": { "debug": "^3.1.0", "istanbul-lib-coverage": "^1.2.1", @@ -11479,6 +11750,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -11486,12 +11758,14 @@ "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -11499,6 +11773,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, "requires": { "handlebars": "^4.0.3" } @@ -11507,6 +11782,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", + "dev": true, "requires": { "import-local": "^1.0.0", "jest-cli": "^23.6.0" @@ -11515,12 +11791,14 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -11533,6 +11811,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -11547,6 +11826,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -11554,12 +11834,14 @@ "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "jest-cli": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", + "dev": true, "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", @@ -11603,6 +11885,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -11611,6 +11894,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -11621,6 +11905,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -11630,6 +11915,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -11637,12 +11923,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "yargs": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.1.1", @@ -11662,26 +11950,18 @@ "version": "9.0.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, "requires": { "camelcase": "^4.1.0" } } } }, - "jest-canvas-mock": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/jest-canvas-mock/-/jest-canvas-mock-2.3.1.tgz", - "integrity": "sha512-5FnSZPrX3Q2ZfsbYNE3wqKR3+XorN8qFzDzB5o0golWgt6EOX1+emBnpOc9IAQ+NXFj8Nzm3h7ZdE/9H0ylBcg==", - "dev": true, - "requires": { - "cssfontparser": "^1.2.1", - "moo-color": "^1.0.2" - } - }, "jest-changed-files": { "version": "23.4.2", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", + "dev": true, "requires": { "throat": "^4.0.0" } @@ -11690,6 +11970,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", + "dev": true, "requires": { "babel-core": "^6.0.0", "babel-jest": "^23.6.0", @@ -11711,6 +11992,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", + "dev": true, "requires": { "chalk": "^2.0.1", "diff": "^3.2.0", @@ -11722,6 +12004,7 @@ "version": "23.2.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", + "dev": true, "requires": { "detect-newline": "^2.1.0" } @@ -11730,6 +12013,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", + "dev": true, "requires": { "chalk": "^2.0.1", "pretty-format": "^23.6.0" @@ -11801,6 +12085,7 @@ "version": "23.4.0", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", + "dev": true, "requires": { "jest-mock": "^23.2.0", "jest-util": "^23.4.0", @@ -11917,12 +12202,6 @@ "color-name": "~1.1.4" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -12242,6 +12521,7 @@ "version": "23.4.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "dev": true, "requires": { "jest-mock": "^23.2.0", "jest-util": "^23.4.0" @@ -12261,12 +12541,14 @@ "jest-get-type": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==" + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true }, "jest-haste-map": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", + "dev": true, "requires": { "fb-watchman": "^2.0.0", "graceful-fs": "^4.1.11", @@ -12282,6 +12564,7 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, "requires": { "loose-envify": "^1.0.0" } @@ -12292,6 +12575,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", + "dev": true, "requires": { "babel-traverse": "^6.0.0", "chalk": "^2.0.1", @@ -12311,6 +12595,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", + "dev": true, "requires": { "pretty-format": "^23.6.0" } @@ -12325,6 +12610,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", + "dev": true, "requires": { "chalk": "^2.0.1", "jest-get-type": "^22.1.0", @@ -12335,6 +12621,7 @@ "version": "23.4.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "dev": true, "requires": { "@babel/code-frame": "^7.0.0-beta.35", "chalk": "^2.0.1", @@ -12346,17 +12633,20 @@ "jest-mock": { "version": "23.2.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", - "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=" + "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", + "dev": true }, "jest-regex-util": { "version": "23.3.0", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", - "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=" + "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", + "dev": true }, "jest-resolve": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", + "dev": true, "requires": { "browser-resolve": "^1.11.3", "chalk": "^2.0.1", @@ -12367,6 +12657,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", + "dev": true, "requires": { "jest-regex-util": "^23.3.0", "jest-snapshot": "^23.6.0" @@ -12376,6 +12667,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", + "dev": true, "requires": { "exit": "^0.1.2", "graceful-fs": "^4.1.11", @@ -12396,6 +12688,7 @@ "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -12407,6 +12700,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", + "dev": true, "requires": { "babel-core": "^6.0.0", "babel-plugin-istanbul": "^4.1.6", @@ -12434,12 +12728,14 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -12452,6 +12748,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -12466,6 +12763,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -12473,12 +12771,14 @@ "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -12487,6 +12787,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -12497,6 +12798,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -12506,6 +12808,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -12513,17 +12816,20 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "yargs": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.1.1", @@ -12543,6 +12849,7 @@ "version": "9.0.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, "requires": { "camelcase": "^4.1.0" } @@ -12552,12 +12859,14 @@ "jest-serializer": { "version": "23.0.1", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", - "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=" + "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", + "dev": true }, "jest-snapshot": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", + "dev": true, "requires": { "babel-types": "^6.0.0", "chalk": "^2.0.1", @@ -12575,6 +12884,7 @@ "version": "23.4.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", + "dev": true, "requires": { "callsites": "^2.0.0", "chalk": "^2.0.1", @@ -12589,7 +12899,8 @@ "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true } } }, @@ -12597,6 +12908,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", + "dev": true, "requires": { "chalk": "^2.0.1", "jest-get-type": "^22.1.0", @@ -12608,6 +12920,7 @@ "version": "23.4.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", + "dev": true, "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", @@ -12618,6 +12931,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/jest-webpack-resolver/-/jest-webpack-resolver-0.3.0.tgz", "integrity": "sha512-VHD4ctq3KQ6y0YpUQA8Ae6IQgsDAB87BwK2EDPi5jcUMlZkPZiwu5MsGFo0uOLDcRhSPwXbEVAvne5Wyr3z4og==", + "dev": true, "requires": { "chalk": "^2.0.1", "command-line-args": "^5.0.2", @@ -12629,6 +12943,7 @@ "version": "23.2.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", + "dev": true, "requires": { "merge-stream": "^1.0.1" } @@ -12680,12 +12995,14 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "jsdom": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, "requires": { "abab": "^2.0.0", "acorn": "^5.5.3", @@ -12718,35 +13035,14 @@ "abab": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.2.tgz", - "integrity": "sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg==" - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + "integrity": "sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg==", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -12755,26 +13051,24 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true } } - }, - "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" } } }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -12792,12 +13086,14 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json3": { "version": "3.3.2", @@ -12831,6 +13127,7 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -12841,7 +13138,8 @@ "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true } } }, @@ -12849,6 +13147,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "dev": true, "requires": { "array-includes": "^3.1.3", "object.assign": "^4.1.2" @@ -12871,7 +13170,8 @@ "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true }, "kind-of": { "version": "3.2.2", @@ -12892,7 +13192,8 @@ "kleur": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", - "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==" + "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==", + "dev": true }, "known-css-properties": { "version": "0.3.0", @@ -12902,12 +13203,14 @@ "language-subtag-registry": { "version": "0.3.21", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==" + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "dev": true }, "language-tags": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dev": true, "requires": { "language-subtag-registry": "~0.3.2" } @@ -12923,12 +13226,14 @@ "left-pad": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true }, "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true }, "levn": { "version": "0.3.0", @@ -12955,6 +13260,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", + "dev": true, "requires": { "find-cache-dir": "^0.1.1", "mkdirp": "0.5.1" @@ -12964,6 +13270,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, "requires": { "commondir": "^1.0.1", "mkdirp": "^0.5.1", @@ -12974,6 +13281,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -12983,6 +13291,7 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -12991,6 +13300,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, "requires": { "pinkie-promise": "^2.0.0" } @@ -12999,6 +13309,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, "requires": { "find-up": "^1.0.0" } @@ -13008,7 +13319,8 @@ "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true }, "loader-utils": { "version": "1.1.0", @@ -13070,7 +13382,8 @@ "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true }, "lodash.capitalize": { "version": "4.2.1", @@ -13090,12 +13403,14 @@ "lodash.escape": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=" + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=", + "dev": true }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true }, "lodash.get": { "version": "4.4.2", @@ -13127,7 +13442,8 @@ "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true }, "lodash.istypedarray": { "version": "3.0.6", @@ -13165,7 +13481,8 @@ "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true }, "lodash.template": { "version": "4.5.0", @@ -13189,11 +13506,6 @@ "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", "integrity": "sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak=" }, - "lodash.uniqueid": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.uniqueid/-/lodash.uniqueid-4.0.1.tgz", - "integrity": "sha1-MmjyanyI5PSxdY1nknGBTjH6WyY=" - }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -13232,12 +13544,6 @@ "color-name": "~1.1.4" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -13258,7 +13564,8 @@ "loglevel": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz", - "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==" + "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==", + "dev": true }, "lolex": { "version": "5.1.2", @@ -13330,6 +13637,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, "requires": { "tmpl": "1.0.x" } @@ -13338,6 +13646,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } @@ -13363,7 +13672,8 @@ "math-random": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==" + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true }, "md5": { "version": "2.3.0", @@ -13379,6 +13689,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -13388,19 +13699,22 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true } } }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true }, "mem": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", @@ -13410,7 +13724,8 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true } } }, @@ -13423,6 +13738,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, "requires": { "errno": "^0.1.3", "readable-stream": "^2.0.1" @@ -13468,30 +13784,34 @@ "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true }, "merge-stream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, "requires": { "readable-stream": "^2.0.1" } }, "merge2": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", - "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true }, "micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, "requires": { "arr-diff": "^2.0.0", "array-unique": "^0.2.1", @@ -13512,6 +13832,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -13520,24 +13841,28 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true } } }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true }, "mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true }, "mime-types": { "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, "requires": { "mime-db": "~1.33.0" } @@ -13590,12 +13915,14 @@ "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true }, "minimatch": { "version": "3.0.4", @@ -13608,41 +13935,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "requires": { - "minipass": "^2.9.0" - } + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, "requires": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", @@ -13707,29 +14007,14 @@ "moo": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", - "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==" - }, - "moo-color": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.2.tgz", - "integrity": "sha512-5iXz5n9LWQzx/C2WesGFfpE6RLamzdHwsn3KpfzShwbfIqs7stnoEpaNErf/7+3mbxwZ4s8Foq7I0tPxw7BWHg==", - "dev": true, - "requires": { - "color-name": "^1.1.4" - }, - "dependencies": { - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } + "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", + "dev": true }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, "requires": { "aproba": "^1.1.1", "copy-concurrently": "^1.0.0", @@ -13812,6 +14097,14 @@ "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + } } }, "binary-extensions": { @@ -13896,12 +14189,6 @@ "color-name": "~1.1.4" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", @@ -14076,6 +14363,14 @@ "dev": true, "requires": { "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + } } }, "restore-cursor": { @@ -14202,6 +14497,7 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, "requires": { "dns-packet": "^1.3.1", "thunky": "^1.0.2" @@ -14210,7 +14506,8 @@ "multicast-dns-service-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true }, "mute-stream": { "version": "0.0.7", @@ -14218,9 +14515,10 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "dev": true, "optional": true }, "nanoclone": { @@ -14272,12 +14570,14 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true }, "nearley": { "version": "2.20.1", "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", + "dev": true, "requires": { "commander": "^2.19.0", "moo": "^0.5.0", @@ -14288,42 +14588,16 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } - }, - "needle": { - "version": "2.3.0", - "resolved": false, - "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "optional": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true } } }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true }, "neo-async": { "version": "2.5.0", @@ -14360,12 +14634,14 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, "requires": { "assert": "^1.1.1", "browserify-zlib": "^0.2.0", @@ -14396,6 +14672,7 @@ "version": "0.11.1", "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, "requires": { "inherits": "2.0.3" } @@ -14406,6 +14683,7 @@ "version": "5.4.3", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, "requires": { "growly": "^1.3.0", "is-wsl": "^1.1.0", @@ -14414,63 +14692,6 @@ "which": "^1.3.0" } }, - "node-pre-gyp": { - "version": "0.12.0", - "resolved": false, - "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", - "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" - }, - "dependencies": { - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", - "optional": true - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "optional": true - } - } - }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -14486,6 +14707,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" } @@ -14493,23 +14715,8 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" - }, - "npm-bundled": { - "version": "1.0.6", - "resolved": false, - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "resolved": false, - "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true }, "npm-path": { "version": "2.0.4", @@ -14567,22 +14774,11 @@ } } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "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" - } - }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true }, "number-is-nan": { "version": "1.0.1", @@ -14592,12 +14788,14 @@ "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "object-assign": { "version": "4.1.1", @@ -14627,12 +14825,14 @@ "object-hash": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true }, "object-inspect": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true }, "object-is": { "version": "1.0.1", @@ -14663,6 +14863,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -14674,6 +14875,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -14681,7 +14883,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, @@ -14689,6 +14892,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -14700,6 +14904,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -14708,6 +14913,7 @@ "version": "1.18.0-next.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -14729,6 +14935,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -14739,6 +14946,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -14746,12 +14954,14 @@ "is-callable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true }, "is-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -14760,6 +14970,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -14767,7 +14978,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, @@ -14775,6 +14987,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.3.tgz", "integrity": "sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -14786,6 +14999,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -14794,6 +15008,7 @@ "version": "1.18.0-next.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -14815,6 +15030,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -14825,6 +15041,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -14832,12 +15049,14 @@ "is-callable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true }, "is-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -14846,6 +15065,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -14853,7 +15073,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, @@ -14870,6 +15091,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.19.1" @@ -14879,6 +15101,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -14887,6 +15110,7 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -14914,6 +15138,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -14924,6 +15149,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -14934,6 +15160,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -14941,17 +15168,20 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true }, "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -14961,6 +15191,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -14969,6 +15200,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -14976,17 +15208,20 @@ "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -14996,6 +15231,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -15007,6 +15243,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, "requires": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" @@ -15031,6 +15268,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -15042,6 +15280,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -15050,6 +15289,7 @@ "version": "1.18.0-next.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -15071,6 +15311,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -15081,6 +15322,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -15088,12 +15330,14 @@ "is-callable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true }, "is-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -15102,6 +15346,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -15109,19 +15354,22 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, "requires": { "ee-first": "1.1.1" } @@ -15129,7 +15377,8 @@ "on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true }, "once": { "version": "1.4.0", @@ -15151,6 +15400,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, "requires": { "is-wsl": "^1.1.0" } @@ -15228,12 +15478,6 @@ "color-name": "~1.1.4" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -15296,7 +15540,8 @@ "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true }, "os-homedir": { "version": "1.0.2", @@ -15308,15 +15553,6 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "outvariant": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.3.0.tgz", @@ -15326,7 +15562,8 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", @@ -15336,7 +15573,8 @@ "p-is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true }, "p-limit": { "version": "1.2.0", @@ -15363,6 +15601,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, "requires": { "retry": "^0.12.0" } @@ -15386,12 +15625,14 @@ "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true }, "parallel-transform": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, "requires": { "cyclist": "^1.0.1", "inherits": "^2.0.3", @@ -15406,15 +15647,11 @@ "no-case": "^2.2.0" } }, - "parchment": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", - "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" - }, "parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, "requires": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -15427,6 +15664,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, "requires": { "glob-base": "^0.3.0", "is-dotfile": "^1.0.0", @@ -15450,12 +15688,14 @@ "parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true }, "parse5-htmlparser2-tree-adapter": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, "requires": { "parse5": "^6.0.1" }, @@ -15463,14 +15703,16 @@ "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true } } }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true }, "pascalcase": { "version": "0.1.1", @@ -15480,7 +15722,8 @@ "path-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true }, "path-dirname": { "version": "1.0.2", @@ -15510,12 +15753,14 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true }, "path-type": { "version": "1.1.0", @@ -15607,6 +15852,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -15618,12 +15864,8 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "pify": { "version": "2.3.0", @@ -15647,6 +15889,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, "requires": { "find-up": "^2.1.0" } @@ -15663,6 +15906,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, "requires": { "semver-compare": "^1.0.0" } @@ -15675,7 +15919,8 @@ "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true }, "popper.js": { "version": "1.14.3", @@ -15686,6 +15931,7 @@ "version": "1.0.25", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "dev": true, "requires": { "async": "^2.6.2", "debug": "^3.1.1", @@ -15696,6 +15942,7 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, "requires": { "lodash": "^4.17.14" } @@ -15704,6 +15951,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -15711,7 +15959,8 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -15842,7 +16091,8 @@ "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true }, "pretty-bytes": { "version": "4.0.2", @@ -15862,6 +16112,7 @@ "version": "23.6.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "dev": true, "requires": { "ansi-regex": "^3.0.0", "ansi-styles": "^3.2.0" @@ -15870,24 +16121,22 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true } } }, - "printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" - }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true }, "process-nextick-args": { "version": "2.0.0", @@ -15897,7 +16146,8 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true }, "promise": { "version": "8.0.1", @@ -15910,12 +16160,14 @@ "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true }, "prompts": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", + "dev": true, "requires": { "kleur": "^2.0.1", "sisteransi": "^0.1.1" @@ -15945,6 +16197,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", + "dev": true, "requires": { "has": "^1.0.3", "object.assign": "^4.1.0", @@ -15955,6 +16208,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -15985,6 +16239,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "dev": true, "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.0" @@ -15993,7 +16248,8 @@ "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true }, "pseudomap": { "version": "1.0.2", @@ -16003,12 +16259,14 @@ "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -16021,12 +16279,14 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true } } }, @@ -16034,6 +16294,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -16043,6 +16304,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, "requires": { "duplexify": "^3.6.0", "inherits": "^2.0.3", @@ -16053,6 +16315,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -16063,67 +16326,37 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true }, "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true }, "querystringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" }, - "quill": { - "version": "2.0.0-dev.3", - "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.0-dev.3.tgz", - "integrity": "sha512-FiHFpgaHaOyPjuywLBjrHal6RS1gWHoIO9dFUE2ll46Nb0xFDEulHdiFRTPPifrE1HUmAFXJIL3iJjukD+eUEQ==", - "requires": { - "clone": "^2.1.2", - "deep-equal": "^1.0.1", - "eventemitter3": "^3.1.0", - "extend": "^3.0.2", - "parchment": "2.0.0-dev.0", - "quill-delta": "4.1.0" - }, - "dependencies": { - "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" - }, - "parchment": { - "version": "2.0.0-dev.0", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-2.0.0-dev.0.tgz", - "integrity": "sha512-andCgmOy3jFa3GWfp1sPi+1u5Y6Seis6NmKyF1QdbZ3ozn3Evd/oidDqv2il4kZ/Bt/IBiWzqRaM/BVDIeO+Mg==" - } - } - }, - "quill-delta": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-4.1.0.tgz", - "integrity": "sha512-GQi04cJRnGcUR3fN8ChjfJGdnCF297BVTb4kEgnlewiyu/PRnWZDchmiJoc9Whq+ZwHgbUbcVgrbGU/dQgOVFw==", - "requires": { - "deep-equal": "^1.0.1", - "extend": "^3.0.2", - "fast-diff": "1.2.0" - } - }, "raf": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", + "dev": true, "requires": { "performance-now": "^2.1.0" } @@ -16131,12 +16364,14 @@ "railroad-diagrams": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=" + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", + "dev": true }, "randexp": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, "requires": { "discontinuous-range": "1.0.0", "ret": "~0.1.10" @@ -16146,6 +16381,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, "requires": { "is-number": "^4.0.0", "kind-of": "^6.0.0", @@ -16155,12 +16391,14 @@ "is-number": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true } } }, @@ -16168,6 +16406,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "requires": { "safe-buffer": "^5.1.0" } @@ -16176,6 +16415,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, "requires": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -16184,12 +16424,14 @@ "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, "requires": { "bytes": "3.1.0", "http-errors": "1.7.2", @@ -16200,12 +16442,14 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -16232,31 +16476,12 @@ }, "react": { "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-ace": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/react-ace/-/react-ace-7.0.5.tgz", - "integrity": "sha512-3iI+Rg2bZXCn9K984ll2OF4u9SGcJH96Q1KsUgs9v4M2WePS4YeEHfW2nrxuqJrAkE5kZbxaCE79k6kqK0YBjg==", - "requires": { - "brace": "^0.11.1", - "diff-match-patch": "^1.0.4", - "lodash.get": "^4.4.2", - "lodash.isequal": "^4.5.0", - "prop-types": "^15.7.2" - }, - "dependencies": { - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - } + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" } }, "react-bootstrap": { @@ -16475,15 +16700,6 @@ "resolved": "https://registry.npmjs.org/react-context-toolbox/-/react-context-toolbox-2.0.2.tgz", "integrity": "sha512-tY4j0imkYC3n5ZlYSgFkaw7fmlCp3IoQQ6DxpqeNHzcD0hf+6V+/HeJxviLUZ1Rv1Yn3N3xyO2EhkkZwHn0m1A==" }, - "react-copy-to-clipboard": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.4.tgz", - "integrity": "sha512-IeVAiNVKjSPeGax/Gmkqfa/+PuMTBhutEvFUaMQLwE2tS0EXrAdgOpWDX26bWTXF3HrioorR7lr08NqeYUWQCQ==", - "requires": { - "copy-to-clipboard": "^3", - "prop-types": "^15.5.8" - } - }, "react-cropper": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/react-cropper/-/react-cropper-1.3.0.tgz", @@ -16501,11 +16717,6 @@ } } }, - "react-csv": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-csv/-/react-csv-1.1.2.tgz", - "integrity": "sha512-pTOTYntW+gQWzCxyEGfS5ZeOfQw4Mu3B+DJd4jrJKNuAWFQ+EEyF2Earfg0+FVEkPwMr62OLtbYCHmc6vQWj2w==" - }, "react-datepicker": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-1.4.1.tgz", @@ -16638,11 +16849,6 @@ "is-wsl": "^1.1.0" } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -16722,20 +16928,6 @@ } } }, - "react-dom-factories": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/react-dom-factories/-/react-dom-factories-1.0.2.tgz", - "integrity": "sha1-63cFxNs2+1AbOqOP91lhaqD/luA=" - }, - "react-draggable": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-3.3.2.tgz", - "integrity": "sha512-oaz8a6enjbPtx5qb0oDWxtDNuybOylvto1QLydsXgKmwT7e3GXC2eMVDwEMIUYJIFqVG72XpOv673UuuAq6LhA==", - "requires": { - "classnames": "^2.2.5", - "prop-types": "^15.6.0" - } - }, "react-dropzone": { "version": "11.3.1", "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.3.1.tgz", @@ -16792,15 +16984,6 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-4.0.0.tgz", "integrity": "sha512-FlsPxavEyMuR6TjVbSSywovXSEyOg6ZDj5+Z8nbsRl9EkOzAhEIcS+GLoQDC5fz/t9suhUXWmUrOBrgeUvrMxw==" }, - "react-excel-workbook": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/react-excel-workbook/-/react-excel-workbook-0.0.4.tgz", - "integrity": "sha1-p/VyHGkgMQ3LDXe2SMLWOlfMZhI=", - "requires": { - "file-saver": "^1.3.3", - "xlsx": "^0.10.3" - } - }, "react-fast-compare": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", @@ -16827,14 +17010,6 @@ "prop-types": "^15.5.6" } }, - "react-html-table-to-excel": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-html-table-to-excel/-/react-html-table-to-excel-2.0.0.tgz", - "integrity": "sha1-xbGDEh5KB7R86TYzcVDau2D2AS4=", - "requires": { - "prop-types": "^15.5.10" - } - }, "react-intl": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.9.0.tgz", @@ -16939,20 +17114,6 @@ "warning": "^3.0.0" } }, - "react-quill-2": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/react-quill-2/-/react-quill-2-2.0.2.tgz", - "integrity": "sha512-woGS7iSEQ6b1vabE3G9lhTvjo3JdxeBovp9DnHm2VWot5P3Kcqcad15r4va1OZSdSpwXgxdFC3ZLU5TYKMjwOg==", - "requires": { - "@types/quill": "1.3.10", - "@types/react": "*", - "create-react-class": "^15.6.0", - "lodash": "^4.17.4", - "prop-types": "^15.5.10", - "quill": "2.0.0-dev.3", - "react-dom-factories": "^1.0.0" - } - }, "react-redux": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.2.tgz", @@ -17055,26 +17216,6 @@ "tiny-warning": "^1.0.0" } }, - "react-roving-tabindex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/react-roving-tabindex/-/react-roving-tabindex-1.0.0.tgz", - "integrity": "sha512-fqbuGWZzEe/uipC1KsY2h9CixmsluWgGX+Okh8xaMH60oBueGYRX0Qkc10u+inM7wS4O3WC+Gnyl7cG7ktj8CA==", - "requires": { - "array-find-index": "^1.0.2", - "lodash.uniqueid": "^4.0.1", - "warning": "^4.0.3" - }, - "dependencies": { - "warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "requires": { - "loose-envify": "^1.0.0" - } - } - } - }, "react-table": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.6.3.tgz", @@ -17084,6 +17225,7 @@ "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz", "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==", + "dev": true, "requires": { "object-assign": "^4.1.1", "prop-types": "^15.6.2", @@ -17095,6 +17237,7 @@ "version": "0.19.1", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -17220,6 +17363,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, "requires": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", @@ -17229,17 +17373,20 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -17257,6 +17404,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -17267,6 +17415,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -17281,6 +17430,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -17289,6 +17439,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -17297,6 +17448,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -17305,6 +17457,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -17315,6 +17468,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -17323,6 +17477,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -17333,6 +17488,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -17342,7 +17498,8 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -17350,6 +17507,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -17365,6 +17523,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -17373,6 +17532,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -17383,6 +17543,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -17394,6 +17555,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -17404,6 +17566,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -17412,6 +17575,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -17420,6 +17584,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -17430,6 +17595,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -17438,6 +17604,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -17447,17 +17614,20 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -17505,6 +17675,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, "requires": { "util.promisify": "^1.0.0" } @@ -17611,15 +17782,11 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/redux-mock-store/-/redux-mock-store-1.5.1.tgz", "integrity": "sha512-B+iZ98ESHw4EAWVLKUknQlop1OdLKOayGRmd6KavNtC0zoSsycD8hTt0hEr1eUTw2gmYJOdfBY5QAgZweTUcLQ==", + "dev": true, "requires": { "lodash.isplainobject": "^4.0.6" } }, - "redux-test-utils": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/redux-test-utils/-/redux-test-utils-0.2.2.tgz", - "integrity": "sha512-+YsUHpzZJ7G85wYgllmGLJ75opIlWrCuKThaVTsHW5xLOrzaLE4abQ3AbYcHkx/vFOReG2D8XUwMfGnFKH8hGw==" - }, "redux-thunk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", @@ -17628,7 +17795,8 @@ "reflect.ownkeys": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", - "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=" + "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=", + "dev": true }, "regenerate": { "version": "1.3.3", @@ -17644,6 +17812,7 @@ "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, "requires": { "babel-runtime": "^6.18.0", "babel-types": "^6.19.0", @@ -17654,6 +17823,7 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, "requires": { "is-equal-shallow": "^0.1.3" } @@ -17683,12 +17853,14 @@ "regexpp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==" + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, "requires": { "regenerate": "^1.2.1", "regjsgen": "^0.2.0", @@ -17740,7 +17912,8 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true }, "renderkid": { "version": "2.0.7", @@ -17860,6 +18033,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -17886,12 +18060,14 @@ "mime-db": { "version": "1.40.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true }, "mime-types": { "version": "2.1.24", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, "requires": { "mime-db": "1.40.0" } @@ -17899,17 +18075,20 @@ "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "safe-buffer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -17918,7 +18097,8 @@ "uuid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true } } }, @@ -17926,6 +18106,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, "requires": { "lodash": "^4.13.1" } @@ -17934,6 +18115,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, "requires": { "request-promise-core": "1.1.1", "stealthy-require": "^1.1.0", @@ -17943,7 +18125,8 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-from-string": { "version": "1.2.1", @@ -17953,7 +18136,8 @@ "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "require-uncached": { "version": "1.0.3", @@ -17978,6 +18162,7 @@ "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -17986,7 +18171,8 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true } } }, @@ -17994,6 +18180,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, "requires": { "resolve-from": "^3.0.0" }, @@ -18001,7 +18188,8 @@ "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true } } }, @@ -18046,12 +18234,8 @@ "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" - }, - "rgbcolor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", - "integrity": "sha1-1lBezbMEplldom+ktDMHMGd1lF0=" + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true }, "rimraf": { "version": "2.6.2", @@ -18065,6 +18249,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -18074,6 +18259,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", + "dev": true, "requires": { "lodash.flattendeep": "^4.4.0", "nearley": "^2.7.10" @@ -18082,7 +18268,8 @@ "rsvp": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==" + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "dev": true }, "run-async": { "version": "2.3.0", @@ -18095,12 +18282,14 @@ "run-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", - "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==" + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", + "dev": true }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, "requires": { "aproba": "^1.1.1" } @@ -18114,6 +18303,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, "requires": { "rx-lite": "*" } @@ -18149,12 +18339,14 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "sane": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", + "dev": true, "requires": { "anymatch": "^2.0.0", "capture-exit": "^1.2.0", @@ -18170,17 +18362,20 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -18198,6 +18393,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -18208,6 +18404,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -18222,6 +18419,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -18230,6 +18428,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -18238,6 +18437,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -18246,6 +18446,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -18256,6 +18457,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -18264,6 +18466,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -18274,6 +18477,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -18283,7 +18487,8 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -18291,6 +18496,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -18306,6 +18512,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -18314,6 +18521,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -18324,6 +18532,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -18335,6 +18544,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -18345,6 +18555,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -18353,6 +18564,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -18361,6 +18573,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -18371,6 +18584,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -18379,6 +18593,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -18388,17 +18603,20 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -18418,7 +18636,8 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true } } }, @@ -18439,6 +18658,13 @@ "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + } } }, "binary-extensions": { @@ -18528,6 +18754,13 @@ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "requires": { "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + } } }, "to-regex-range": { @@ -18828,7 +19061,8 @@ "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true }, "saxes": { "version": "5.0.1", @@ -18870,12 +19104,14 @@ "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true }, "selfsigned": { "version": "1.10.11", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "dev": true, "requires": { "node-forge": "^0.10.0" }, @@ -18883,7 +19119,8 @@ "node-forge": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true } } }, @@ -18895,7 +19132,8 @@ "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true }, "semver-diff": { "version": "2.1.0", @@ -18909,6 +19147,7 @@ "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -18928,7 +19167,8 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, @@ -18936,6 +19176,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -18953,6 +19194,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, "requires": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -18967,6 +19209,7 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -18977,7 +19220,8 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true } } }, @@ -18985,6 +19229,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -19000,7 +19245,8 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-cookie-parser": { "version": "2.5.0", @@ -19037,12 +19283,14 @@ "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -19100,7 +19348,8 @@ "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true }, "shortid": { "version": "2.2.14", @@ -19114,6 +19363,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -19128,7 +19378,8 @@ "sisteransi": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", - "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==" + "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", + "dev": true }, "slash": { "version": "1.0.0", @@ -19139,6 +19390,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0" } @@ -19249,6 +19501,7 @@ "version": "0.3.19", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, "requires": { "faye-websocket": "^0.10.0", "uuid": "^3.0.1" @@ -19258,6 +19511,7 @@ "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, "requires": { "websocket-driver": ">=0.5.1" } @@ -19265,7 +19519,8 @@ "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true } } }, @@ -19387,6 +19642,7 @@ "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, "requires": { "source-map": "^0.5.6" }, @@ -19394,7 +19650,8 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -19425,6 +19682,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "dev": true, "requires": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -19437,6 +19695,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -19444,7 +19703,8 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -19452,6 +19712,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, "requires": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -19465,6 +19726,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -19472,12 +19734,14 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "readable-stream": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -19487,12 +19751,14 @@ "safe-buffer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, "requires": { "safe-buffer": "~5.2.0" } @@ -19512,18 +19778,11 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "ssf": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.3.tgz", - "integrity": "sha512-pRuUdW0WwyB2doSqqjWyzwCD6PkfxpHAHdZp39K3dp/Hq7f+xfMwNAWIi16DyrRg4gg9c/RvLYkJTSawTPTm1w==", - "requires": { - "frac": "~1.1.2" - } - }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -19540,6 +19799,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, "requires": { "figgy-pudding": "^3.5.1" } @@ -19547,12 +19807,8 @@ "stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=" - }, - "stackblur-canvas": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.5.0.tgz", - "integrity": "sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ==" + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true }, "static-extend": { "version": "0.1.2", @@ -19576,17 +19832,20 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" @@ -19596,6 +19855,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "stream-shift": "^1.0.0" @@ -19605,6 +19865,7 @@ "version": "2.8.3", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", @@ -19617,6 +19878,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -19631,6 +19893,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -19640,7 +19903,8 @@ "stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true }, "strict-event-emitter": { "version": "0.2.4", @@ -19655,6 +19919,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, "requires": { "astral-regex": "^1.0.0", "strip-ansi": "^4.0.0" @@ -19663,12 +19928,14 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -19679,6 +19946,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -19688,22 +19956,26 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -19714,6 +19986,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -19729,6 +20002,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -19737,6 +20011,7 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -19764,6 +20039,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -19774,6 +20050,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -19784,6 +20061,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -19791,17 +20069,20 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true }, "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -19811,6 +20092,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -19819,6 +20101,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -19826,17 +20109,20 @@ "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "regexp.prototype.flags": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -19846,6 +20132,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -19855,6 +20142,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -19866,6 +20154,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz", "integrity": "sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -19876,6 +20165,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -19884,6 +20174,7 @@ "version": "1.18.0-next.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -19905,6 +20196,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -19915,6 +20207,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -19922,12 +20215,14 @@ "is-callable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true }, "is-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -19936,6 +20231,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -19943,7 +20239,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, @@ -19951,6 +20248,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -19960,6 +20258,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -19967,7 +20266,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, @@ -19975,6 +20275,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -19984,6 +20285,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -19991,7 +20293,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true } } }, @@ -20094,11 +20397,6 @@ "has-flag": "^3.0.0" } }, - "svg-pathdata": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-5.0.5.tgz", - "integrity": "sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow==" - }, "sw-precache": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/sw-precache/-/sw-precache-5.2.1.tgz", @@ -20159,12 +20457,14 @@ "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true }, "table": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, "requires": { "ajv": "^5.2.3", "ajv-keywords": "^2.1.0", @@ -20178,6 +20478,7 @@ "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, "requires": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", @@ -20188,27 +20489,32 @@ "ajv-keywords": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -20218,6 +20524,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -20256,6 +20563,7 @@ "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.6.1", @@ -20265,12 +20573,14 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -20282,6 +20592,7 @@ "version": "1.4.5", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", @@ -20298,6 +20609,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -20309,6 +20621,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", + "dev": true, "requires": { "arrify": "^1.0.1", "micromatch": "^2.3.11", @@ -20321,6 +20634,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==", + "dev": true, "requires": { "array-back": "^2.0.0", "typical": "^2.6.1" @@ -20334,7 +20648,8 @@ "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true }, "through": { "version": "2.3.8", @@ -20345,6 +20660,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -20354,6 +20670,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -20368,6 +20685,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -20377,7 +20695,8 @@ "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true }, "timed-out": { "version": "4.0.1", @@ -20388,6 +20707,7 @@ "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, "requires": { "setimmediate": "^1.0.4" } @@ -20413,17 +20733,20 @@ "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true }, "to-object-path": { "version": "0.3.0", @@ -20463,15 +20786,11 @@ } } }, - "toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" - }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true }, "toposort": { "version": "1.0.7", @@ -20482,6 +20801,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, "requires": { "punycode": "^1.4.1" } @@ -20490,6 +20810,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, "requires": { "punycode": "^2.1.0" }, @@ -20497,7 +20818,8 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true } } }, @@ -20509,12 +20831,14 @@ "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true }, "tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "dev": true, "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -20526,6 +20850,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, "requires": { "minimist": "^1.2.0" } @@ -20533,12 +20858,14 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true } } }, @@ -20550,12 +20877,14 @@ "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -20563,7 +20892,8 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "type": { "version": "1.2.0", @@ -20594,6 +20924,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -20602,12 +20933,14 @@ "mime-db": { "version": "1.40.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true }, "mime-types": { "version": "2.1.24", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, "requires": { "mime-db": "1.40.0" } @@ -20627,7 +20960,8 @@ "typical": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", - "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=" + "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", + "dev": true }, "ua-parser-js": { "version": "0.7.31", @@ -20670,6 +21004,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has-bigints": "^1.0.1", @@ -20680,7 +21015,8 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true } } }, @@ -20717,6 +21053,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, "requires": { "unique-slug": "^2.0.0" } @@ -20725,6 +21062,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, "requires": { "imurmurhash": "^0.1.4" } @@ -20745,7 +21083,8 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true }, "unset-value": { "version": "1.0.0", @@ -20796,7 +21135,8 @@ "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true }, "update-notifier": { "version": "2.5.0", @@ -20849,6 +21189,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, "requires": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -20857,7 +21198,8 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true } } }, @@ -20981,7 +21323,8 @@ "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true }, "uuid": { "version": "8.3.2", @@ -21016,12 +21359,14 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -21031,17 +21376,14 @@ "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, - "voc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/voc/-/voc-1.0.0.tgz", - "integrity": "sha512-mQwxWlK+zosxxDTqiFb9ZQBNgd794scgkhVwca7h9sEhvA52f3VzbOK+TOWeS8eSrFXnfuKrxElSPc5oLAetfw==" + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "w3c-hr-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, "requires": { "browser-process-hrtime": "^0.1.2" } @@ -21059,6 +21401,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, "requires": { "makeerror": "1.0.x" } @@ -21075,6 +21418,7 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, "requires": { "exec-sh": "^0.2.0", "minimist": "^1.2.0" @@ -21083,7 +21427,8 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true } } }, @@ -21091,6 +21436,7 @@ "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, "requires": { "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", @@ -21102,22 +21448,34 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, "optional": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "optional": true + } } }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, "optional": true }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "optional": true, "requires": { "fill-range": "^7.0.1" @@ -21127,6 +21485,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, "optional": true, "requires": { "anymatch": "~3.1.2", @@ -21143,6 +21502,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "optional": true, "requires": { "to-regex-range": "^5.0.1" @@ -21152,12 +21512,14 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "optional": true }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "optional": true, "requires": { "is-glob": "^4.0.1" @@ -21167,6 +21529,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "optional": true, "requires": { "binary-extensions": "^2.0.0" @@ -21176,12 +21539,14 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, "optional": true }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "optional": true, "requires": { "is-extglob": "^2.1.1" @@ -21191,27 +21556,40 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "optional": true }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "optional": true }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "optional": true, "requires": { "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "optional": true + } } }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "optional": true, "requires": { "is-number": "^7.0.0" @@ -21223,6 +21601,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, "optional": true, "requires": { "chokidar": "^2.1.8" @@ -21232,6 +21611,7 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, "requires": { "minimalistic-assert": "^1.0.0" } @@ -21248,12 +21628,14 @@ "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true }, "webpack": { "version": "4.46.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", @@ -21283,32 +21665,38 @@ "acorn": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -21326,6 +21714,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -21335,12 +21724,14 @@ "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true }, "enhanced-resolve": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "memory-fs": "^0.5.0", @@ -21351,6 +21742,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, "requires": { "errno": "^0.1.3", "readable-stream": "^2.0.1" @@ -21362,6 +21754,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -21376,6 +21769,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -21384,6 +21778,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -21392,6 +21787,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -21400,6 +21796,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -21410,6 +21807,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -21418,6 +21816,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -21428,6 +21827,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -21437,7 +21837,8 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -21445,6 +21846,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -21460,6 +21862,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -21468,6 +21871,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -21478,6 +21882,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -21489,6 +21894,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -21499,6 +21905,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -21507,6 +21914,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -21515,6 +21923,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -21525,6 +21934,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -21533,6 +21943,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -21542,12 +21953,14 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, "requires": { "minimist": "^1.2.0" } @@ -21555,12 +21968,14 @@ "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -21571,6 +21986,7 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -21590,12 +22006,14 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -21603,17 +22021,20 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true }, "webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -21995,6 +22416,7 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, "requires": { "memory-fs": "^0.4.1", "mime": "^2.4.4", @@ -22006,7 +22428,8 @@ "mime": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true } } }, @@ -22014,6 +22437,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", + "dev": true, "requires": { "ansi-html": "0.0.7", "bonjour": "^3.5.0", @@ -22053,17 +22477,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -22075,7 +22502,8 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, @@ -22083,6 +22511,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -22091,6 +22520,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, "requires": { "@types/glob": "^7.1.1", "globby": "^6.1.0", @@ -22105,6 +22535,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, "requires": { "original": "^1.0.0" } @@ -22113,6 +22544,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -22127,6 +22559,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -22135,6 +22568,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -22143,6 +22577,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, "requires": { "array-union": "^1.0.1", "glob": "^7.0.3", @@ -22154,7 +22589,8 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true } } }, @@ -22162,6 +22598,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" @@ -22170,17 +22607,20 @@ "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true }, "is-path-in-cwd": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, "requires": { "is-path-inside": "^2.1.0" } @@ -22189,6 +22629,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, "requires": { "path-is-inside": "^1.0.2" } @@ -22197,6 +22638,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -22205,25 +22647,23 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -22234,6 +22674,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -22242,6 +22683,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -22249,22 +22691,26 @@ "p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, "requires": { "find-up": "^3.0.0" } @@ -22273,6 +22719,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, "requires": { "glob": "^7.1.3" }, @@ -22281,6 +22728,7 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -22295,12 +22743,14 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, "sockjs-client": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, "requires": { "debug": "^3.2.5", "eventsource": "^1.0.7", @@ -22314,6 +22764,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -22324,6 +22775,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -22333,6 +22785,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -22343,6 +22796,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -22350,12 +22804,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "ws": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, "requires": { "async-limiter": "~1.0.0" } @@ -22364,6 +22820,7 @@ "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -22382,7 +22839,8 @@ "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true } } }, @@ -22390,6 +22848,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -22401,6 +22860,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, "requires": { "ansi-colors": "^3.0.0", "uuid": "^3.3.2" @@ -22409,7 +22869,8 @@ "uuid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true } } }, @@ -22473,6 +22934,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, "requires": { "iconv-lite": "0.4.19" } @@ -22485,12 +22947,14 @@ "whatwg-mimetype": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz", - "integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==" + "integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==", + "dev": true }, "whatwg-url": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, "requires": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -22509,6 +22973,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -22520,27 +22985,20 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true }, "is-symbol": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } } } }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "widest-line": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", @@ -22582,6 +23040,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, "requires": { "errno": "~0.1.7" } @@ -22590,6 +23049,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -22599,6 +23059,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -22607,6 +23068,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -22642,6 +23104,7 @@ "version": "5.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "dev": true, "requires": { "async-limiter": "~1.0.0" } @@ -22651,31 +23114,11 @@ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" }, - "xlsx": { - "version": "0.10.9", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.10.9.tgz", - "integrity": "sha1-LEPYwE7CUh1hlVKHJG6o3v4ZJ18=", - "requires": { - "adler-32": "~1.1.0", - "cfb": "~0.12.0", - "codepage": "~1.10.1", - "commander": "~2.11.0", - "crc-32": "~1.1.0", - "exit-on-epipe": "~1.0.1", - "ssf": "~0.10.0" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" - } - } - }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true }, "xmlchars": { "version": "2.2.0", @@ -22691,7 +23134,8 @@ "y18n": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true }, "yallist": { "version": "2.1.2", diff --git a/package.json b/package.json index 05da7abe1..bfeb3bfcb 100644 --- a/package.json +++ b/package.json @@ -16,45 +16,18 @@ "@entando/pagetreeselector": "^2.0.5", "@entando/utils": "^2.4.2", "@react-keycloak/web": "^3.4.0", - "autoprefixer": "7.1.6", - "babel-core": "^6.26.3", - "babel-eslint": "9.0.0", - "babel-jest": "23.6.0", - "babel-loader": "^7.1.4", - "babel-plugin-react-generate-property": "^1.0.5", - "babel-plugin-react-remove-properties": "^0.3.0", - "babel-preset-react-app": "^3.1.1", "babel-runtime": "6.26.0", "body-scroll-lock": "^3.1.5", - "brace": "^0.11.1", - "canvg": "^3.0.7", - "case-sensitive-paths-webpack-plugin": "2.1.1", "chalk": "^2.3.0", "codemirror": "^5.63.0", "css-loader": "^1.0.0", "dotenv": "4.0.0", "dotenv-expand": "4.2.0", - "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.6", - "enzyme-redux": "^0.1.7", - "eslint": "^4.18.2", - "eslint-config-airbnb": "^16.1.0", - "eslint-config-react-app": "^2.1.0", - "eslint-loader": "^2.0.0", - "eslint-plugin-flowtype": "2.39.1", - "eslint-plugin-import": "^2.24.2", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-react": "^7.26.0", "file-loader": "^1.1.11", - "flat": "^4.1.0", - "flux-standard-action": "^2.0.1", "formik": "^2.2.9", "fs-extra": "3.0.1", "history": "^4.9.0", "html-webpack-plugin": "^3.2.0", - "husky": "^1.3.0", - "jest": "^23.6.0", - "jest-webpack-resolver": "^0.3.0", "keycloak-js": "^18.0.1", "lodash": "^4.17.21", "md5": "^2.3.0", @@ -66,38 +39,26 @@ "postcss-loader": "^2.1.5", "promise": "8.0.1", "prop-types": "^15.7.2", - "raf": "3.4.0", "react": "^16.9.0", - "react-ace": "^7.0.2", "react-bootstrap": "^0.32.4", "react-bootstrap-typeahead": "4.2.0", "react-codemirror2": "^4.2.1", "react-collapse": "^5.0.0", - "react-copy-to-clipboard": "^5.0.2", "react-cropper": "^1.3.0", - "react-csv": "^1.1.1", "react-datepicker": "^1.4.1", "react-dev-utils-for-webpack4": "^5.0.0-webpack4", "react-dom": "^16.9.0", - "react-draggable": "^3.3.0", "react-dropzone": "^11.3.1", "react-ellipsis-with-tooltip": "^1.0.7", - "react-excel-workbook": "0.0.4", - "react-html-table-to-excel": "^2.0.0", "react-intl": "^2.9.0", "react-jsonschema-form": "^1.7.0", "react-loadable": "^5.4.0", - "react-quill-2": "^2.0.2", "react-redux": "^7.2.2", "react-router-dom": "^5.2.0", - "react-roving-tabindex": "^1.0.0", - "react-test-renderer": "^16.14.0", "reactour": "^1.19.0", "redux": "^4.0.1", "redux-form": "^8.3.7", "redux-localstorage": "^0.4.1", - "redux-mock-store": "^1.4.0", - "redux-test-utils": "^0.2.2", "redux-thunk": "^2.3.0", "regex-parser": "^2.2.11", "reselect": "^4.0.0", @@ -110,8 +71,6 @@ "url-loader": "^1.0.1", "uuid": "^8.1.0", "validator": "^13.7.0", - "webpack": "^4.46.0", - "webpack-dev-server": "^3.8.2", "webpack-manifest-plugin": "^2.0.3", "whatwg-fetch": "2.0.4", "yup": "^0.32.11" @@ -248,7 +207,6 @@ "commander": "^3.0.2", "duplicate-package-checker-webpack-plugin": "^3.0.0", "eslint-plugin-react-hooks": "^2.3.0", - "jest-canvas-mock": "^2.3.0", "jest-environment-jsdom-sixteen": "^1.0.3", "jest-enzyme": "^6.1.2", "jest-localstorage-mock": "^2.2.0", @@ -257,7 +215,35 @@ "npm-run": "^5.0.1", "source-map-explorer": "^1.8.0", "webpack-cli": "^3.3.0", - "whatwg-fetch": "^2.0.4" + "whatwg-fetch": "^2.0.4", + "autoprefixer": "7.1.6", + "babel-core": "^6.26.3", + "babel-eslint": "9.0.0", + "babel-jest": "23.6.0", + "babel-loader": "^7.1.4", + "babel-plugin-react-generate-property": "^1.0.5", + "babel-plugin-react-remove-properties": "^0.3.0", + "babel-preset-react-app": "^3.1.1", + "case-sensitive-paths-webpack-plugin": "2.1.1", + "webpack": "^4.46.0", + "webpack-dev-server": "^3.8.2", + "jest": "^23.6.0", + "jest-webpack-resolver": "^0.3.0", + "react-test-renderer": "^16.14.0", + "redux-mock-store": "^1.4.0", + "enzyme": "^3.11.0", + "enzyme-adapter-react-16": "^1.15.6", + "eslint": "^4.18.2", + "eslint-config-airbnb": "^16.1.0", + "eslint-config-react-app": "^2.1.0", + "eslint-loader": "^2.0.0", + "eslint-plugin-flowtype": "2.39.1", + "eslint-plugin-import": "^2.24.2", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-react": "^7.26.0", + "flux-standard-action": "^2.0.1", + "raf": "3.4.0", + "husky": "^1.3.0" }, "msw": { "workerDirectory": "public" diff --git a/sass/common/form/RenderDatePickerInput.scss b/sass/common/form/RenderDatePickerInput.scss deleted file mode 100644 index e14d27fe7..000000000 --- a/sass/common/form/RenderDatePickerInput.scss +++ /dev/null @@ -1,55 +0,0 @@ -// sass-lint:disable force-element-nesting, no-qualifying-elements, class-name-format -.react-datepicker__header { - border-bottom: 0 solid $color-pf-black-100; - background-color: $color-pf-black-100; - text-align: center; -} - -.react-datepicker__current-month, -.react-datepicker-time__header { - font-size: .9em; -} - -.react-datepicker__day-name, -.react-datepicker__day, -.react-datepicker__time-name { - width: 2.7rem; - line-height: 2.7rem; -} - -.react-datepicker { - font-size: 1.4rem; -} - -.react-datepicker-popper { - z-index: 9; -} - -.react-datepicker__current-month, -.react-datepicker-time__header { - height: 30px; - line-height: 30px; -} - -.react-datepicker__navigation { - top: 18px; -} - -.react-datepicker__current-month, -.react-datepicker-time__header { - width: 130px; - margin: 0 auto; - background: $color-pf-black-200; -} - -.react-datepicker__navigation--previous { - left: 10px; - border-right-color: $color-pf-black-900; -} - -.react-datepicker__navigation--next { - right: 10px; - border-left-color: $color-pf-black-900; -} - -// sass-lint:enable force-element-nesting, no-qualifying-elements, class-name-format diff --git a/src/api/contentSettings.js b/src/api/contentSettings.js deleted file mode 100644 index 641ac63d0..000000000 --- a/src/api/contentSettings.js +++ /dev/null @@ -1,87 +0,0 @@ -import { makeRequest, METHODS } from '@entando/apimanager'; -import { - CONTENT_SETTINGS_OK, - CONTENT_SETTINGS_REFRESH_OK, - CONTENT_SETTINGS_EDITOR_OK, - CONTENT_SETTINGS_CROP_RATIOS_OK, - CONTENT_SETTINGS_METADATA_OK, -} from 'test/mocks/contentSettings'; - -const settingsPath = '/api/plugins/cms/contentSettings'; - -export const getContentSettings = () => makeRequest({ - uri: settingsPath, - method: METHODS.GET, - mockResponse: CONTENT_SETTINGS_OK, - useAuthentication: true, -}); - -export const postReloadIndexes = () => makeRequest({ - uri: `${settingsPath}/reloadIndexes`, - method: METHODS.POST, - body: {}, - mockResponse: CONTENT_SETTINGS_REFRESH_OK, - useAuthentication: true, -}); - -export const postReloadReferences = () => makeRequest({ - uri: `${settingsPath}/reloadReferences`, - method: METHODS.POST, - body: {}, - mockResponse: CONTENT_SETTINGS_REFRESH_OK, - useAuthentication: true, -}); - -export const putEditorSettings = editorObject => makeRequest({ - uri: `${settingsPath}/editor`, - body: editorObject, - method: METHODS.PUT, - mockResponse: CONTENT_SETTINGS_EDITOR_OK, - useAuthentication: true, -}); - -export const postCropRatio = cropRatio => makeRequest({ - uri: `${settingsPath}/cropRatios`, - body: { ratio: cropRatio }, - method: METHODS.POST, - mockResponse: CONTENT_SETTINGS_CROP_RATIOS_OK, - useAuthentication: true, -}); - -export const postMetadataMap = metadata => makeRequest({ - uri: `${settingsPath}/metadata`, - body: metadata, - method: METHODS.POST, - mockResponse: CONTENT_SETTINGS_METADATA_OK, - useAuthentication: true, -}); - -export const deleteCropRatio = cropRatio => makeRequest({ - uri: `${settingsPath}/cropRatios/${cropRatio}`, - method: METHODS.DELETE, - mockResponse: CONTENT_SETTINGS_CROP_RATIOS_OK, - useAuthentication: true, -}); - -export const putMetadataMap = (key, mapping) => makeRequest({ - uri: `${settingsPath}/metadata/${key}`, - body: { mapping }, - method: METHODS.PUT, - mockResponse: CONTENT_SETTINGS_METADATA_OK, - useAuthentication: true, -}); - -export const putCropRatio = (cropRatio, newValue) => makeRequest({ - uri: `${settingsPath}/cropRatios/${cropRatio}`, - method: METHODS.PUT, - body: { ratio: newValue }, - mockResponse: CONTENT_SETTINGS_CROP_RATIOS_OK, - useAuthentication: true, -}); - -export const deleteMetadataMap = metakey => makeRequest({ - uri: `${settingsPath}/metadata/${metakey}`, - method: METHODS.DELETE, - mockResponse: CONTENT_SETTINGS_METADATA_OK, - useAuthentication: true, -}); diff --git a/src/api/notification.js b/src/api/notification.js deleted file mode 100644 index 8c66fd6bd..000000000 --- a/src/api/notification.js +++ /dev/null @@ -1,8 +0,0 @@ -import { NOTIFICATIONS } from 'test/mocks/notification'; - -// eslint-disable-next-line -export const getApiNotifications = () => ( - new Promise((resolve) => { - resolve(NOTIFICATIONS); - }) -); diff --git a/src/helpers/attrUtils.js b/src/helpers/attrUtils.js deleted file mode 100644 index 9fff0f889..000000000 --- a/src/helpers/attrUtils.js +++ /dev/null @@ -1,85 +0,0 @@ -import moment from 'moment'; - -import { - TYPE_COMPOSITE, TYPE_LIST, TYPE_MONOLIST, TYPE_BOOLEAN, - TYPE_CHECKBOX, TYPE_THREESTATE, TYPE_TEXT, - TYPE_LONGTEXT, TYPE_HYPERTEXT, TYPE_LINK, -} from 'state/content-type/const'; - -const createObjFromArr = (keyArr, value) => ( - keyArr.reduce((accObj, key) => ({ ...accObj, [key]: value }), {}) -); - -export const getTodayDateValue = () => moment().format('DD/MM/YYYY'); - -export const getAttrInitialValue = (attr, langCodes = ['en']) => { - const { type, code, compositeAttributes = [] } = attr; - const initialValue = { code }; - switch (type) { - case TYPE_COMPOSITE: - initialValue.compositeelements = compositeAttributes.map(compAttr => ( - getAttrInitialValue(compAttr, langCodes) - )); - break; - case TYPE_LIST: - initialValue.listelements = { - ...createObjFromArr(langCodes, []), - }; - break; - case TYPE_MONOLIST: - initialValue.elements = []; - break; - case TYPE_BOOLEAN: - case TYPE_CHECKBOX: - initialValue.value = 'false'; - break; - case TYPE_THREESTATE: - initialValue.value = 'none'; - break; - case TYPE_TEXT: - case TYPE_LONGTEXT: - case TYPE_HYPERTEXT: - initialValue.values = { - ...createObjFromArr(langCodes, ''), - }; - break; - case TYPE_LINK: - initialValue.value = {}; - initialValue.values = { - ...createObjFromArr(langCodes, ''), - }; - break; - default: - initialValue.value = ''; - } - - return initialValue; -}; - -/** - * Converts a date string to an object with date, minutes, hours, seconds properties - * @example - * const dtObj = getDateTimeObjFromStr('2019-11-26 14:46:07'); - * // { date: '2019-11-26', hours: '14', minutes: '46', seconds: '07' } - */ -export const getDateTimeObjFromStr = (dateStr) => { - if (!dateStr) return { date: '' }; - - const dtSegments = dateStr.split(' '); - const date = dtSegments[0]; - if (dtSegments[1]) { - const tSegments = dtSegments[1].split(':'); - const hours = tSegments[0]; - const minutes = tSegments[1]; - const seconds = tSegments[2]; - return { - date, - hours, - minutes, - seconds, - }; - } - return { - date, - }; -}; diff --git a/src/helpers/resourcesHookFactory.js b/src/helpers/resourcesHookFactory.js deleted file mode 100644 index df3ace65f..000000000 --- a/src/helpers/resourcesHookFactory.js +++ /dev/null @@ -1,17 +0,0 @@ -const resourcesHookFactory = hook => (sources) => { - const scriptsState = sources.map(source => hook(source)); - - const everyScriptLoaded = scriptsState.every((state) => { - const loaded = state[0]; - return loaded; - }); - - const someScriptError = scriptsState.some((state) => { - const error = state[1]; - return error; - }); - - return [everyScriptLoaded, someScriptError]; -}; - -export default resourcesHookFactory; diff --git a/src/state/content-settings/actions.js b/src/state/content-settings/actions.js deleted file mode 100644 index b3b2b9057..000000000 --- a/src/state/content-settings/actions.js +++ /dev/null @@ -1,261 +0,0 @@ -import { - SET_CONTENT_SETTINGS, - SET_EDITOR_SETTINGS, - SET_CROP_RATIOS, - SET_METADATA_MAPPING, -} from 'state/content-settings/types'; -import { - getContentSettings, - postReloadReferences, - postReloadIndexes, - putEditorSettings, - postCropRatio, - deleteCropRatio, - putCropRatio, - postMetadataMap, - putMetadataMap, - deleteMetadataMap, -} from 'api/contentSettings'; -import { getCropRatios, getMetadataMappingFormData } from 'state/content-settings/selectors'; -import { toggleLoading } from 'state/loading/actions'; -import { addErrors, addToast, clearErrors, TOAST_ERROR } from '@entando/messages'; - -export const setContentSettings = payload => ({ - type: SET_CONTENT_SETTINGS, - payload, -}); - -export const setEditorSettings = payload => ({ - type: SET_EDITOR_SETTINGS, - payload, -}); - -export const setCropRatios = payload => ({ - type: SET_CROP_RATIOS, - payload, -}); - -export const setMetadataMapping = payload => ({ - type: SET_METADATA_MAPPING, - payload, -}); - -export const wait = ms => new Promise(r => setTimeout(r, ms)); - -// thunks - -export const fetchContentSettings = (toggleName = 'getSettings') => dispatch => new Promise((resolve) => { - dispatch(toggleLoading(toggleName)); - getContentSettings() - .then((response) => { - response.json().then((json) => { - if (response.ok) { - dispatch(setContentSettings(json.payload)); - resolve(json.payload); - } else { - dispatch(addErrors(json.errors.map(err => err.message))); - dispatch(clearErrors()); - json.errors.forEach(err => dispatch(addToast(err.message, TOAST_ERROR))); - resolve(); - } - dispatch(toggleLoading(toggleName)); - }); - }) - .catch(() => {}); -}); - -export const sendPostReloadReferences = () => dispatch => new Promise((resolve) => { - dispatch(toggleLoading('reloadReferences')); - postReloadReferences().then((response) => { - response.json().then((json) => { - if (!response.ok) { - dispatch(addErrors(json.errors.map(err => err.message))); - dispatch(clearErrors()); - json.errors.forEach(err => dispatch(addToast(err.message, TOAST_ERROR))); - } - dispatch(toggleLoading('reloadReferences')); - resolve(); - }); - }); -}); - -export const sendPostReloadIndexes = () => dispatch => new Promise(async (resolve) => { - try { - dispatch(toggleLoading('reloadIndexes')); - const response = await postReloadIndexes(); - const json = await response.json(); - dispatch(toggleLoading('reloadIndexes')); - if (response.ok) { - // eslint-disable-next-line no-constant-condition - while (true) { - // eslint-disable-next-line no-await-in-loop - await wait(200); - // eslint-disable-next-line no-await-in-loop - const res = await dispatch(fetchContentSettings('getSettingsPoll')); - const status = res.indexesStatus; - if (status !== 1) { resolve(); break; } - } - } else { - dispatch(addErrors(json.errors.map(err => err.message))); - dispatch(clearErrors()); - json.errors.forEach(err => dispatch(addToast(err.message, TOAST_ERROR))); - } - resolve(); - } catch (error) { - dispatch(toggleLoading('reloadIndexes')); - resolve(); - } -}); - -export const sendPutEditorSettings = editor => dispatch => new Promise((resolve) => { - dispatch(toggleLoading('putEditorSettings')); - putEditorSettings(editor) - .then((response) => { - response.json().then((json) => { - if (response.ok) { - dispatch(setEditorSettings(json.payload)); - resolve(json); - } else { - dispatch(addErrors(json.errors.map(err => err.message))); - resolve(); - } - dispatch(toggleLoading('putEditorSettings')); - }); - }) - .catch(() => {}); -}); - -export const addCropRatio = cropRatio => dispatch => new Promise((resolve) => { - dispatch(toggleLoading('addCropRatio')); - - postCropRatio(cropRatio) - .then((response) => { - response.json().then((json) => { - if (response.ok) { - dispatch(setCropRatios(json.payload)); - resolve(json); - } else { - const errorMsgs = json.errors.map(err => err.message); - dispatch(addErrors(errorMsgs)); - errorMsgs.forEach(errMsg => dispatch(addToast(errMsg, TOAST_ERROR))); - resolve(); - } - - dispatch(toggleLoading('addCropRatio')); - }); - }) - .catch(() => {}); -}); - -export const sendPostMetadataMap = (key, mapping) => dispatch => new Promise((resolve) => { - dispatch(toggleLoading('postMetadataMap')); - postMetadataMap({ key, mapping }) - .then((response) => { - response.json().then((json) => { - if (response.ok) { - dispatch(setMetadataMapping(json.payload)); - resolve(json); - } else { - dispatch(addErrors(json.errors.map(err => err.message))); - resolve(); - } - dispatch(toggleLoading('postMetadataMap')); - }); - }) - .catch(() => {}); -}); - -export const removeCropRatio = cropRatio => (dispatch, getState) => new Promise((resolve) => { - dispatch(toggleLoading('removeCropRatio')); - - deleteCropRatio(cropRatio) - .then((response) => { - response.json().then((json) => { - if (response.ok) { - const cropRatios = getCropRatios(getState()); - dispatch(setCropRatios(cropRatios.filter(ratio => ratio !== cropRatio))); - resolve(json); - } else { - const errorMsgs = json.errors.map(err => err.message); - dispatch(addErrors(errorMsgs)); - errorMsgs.forEach(errMsg => dispatch(addToast(errMsg, TOAST_ERROR))); - resolve(); - } - - dispatch(toggleLoading('removeCropRatio')); - }); - }) - .catch(() => {}); -}); - -export const updateCropRatio = (cropRatio, newValue) => dispatch => new Promise((resolve) => { - dispatch(toggleLoading('updateCropRatio')); - - putCropRatio(cropRatio, newValue) - .then((response) => { - response.json().then((json) => { - if (response.ok) { - dispatch(setCropRatios(json.payload)); - resolve(json); - } else { - const errorMsgs = json.errors.map(err => err.message); - dispatch(addErrors(errorMsgs)); - errorMsgs.forEach(errMsg => dispatch(addToast(errMsg, TOAST_ERROR))); - resolve(); - } - - dispatch(toggleLoading('updateCropRatio')); - }); - }) - .catch(); -}); - -export const sendPutMetadataMap = (key, mapping) => dispatch => new Promise((resolve) => { - putMetadataMap(key, mapping) - .then((response) => { - response.json().then((json) => { - if (response.ok) { - dispatch(setMetadataMapping(json.payload)); - resolve({ key, json }); - } else { - dispatch(addErrors(json.errors.map(err => err.message))); - resolve({ key }); - } - }); - }) - .catch(() => {}); -}); - -export const checkAndPutMetadataMap = values => (dispatch, getState) => new Promise((resolve) => { - const prevValues = getMetadataMappingFormData(getState()); - const proms = []; - Object.entries(values).forEach(([key, mapping]) => { - if (prevValues[key] !== mapping) { - dispatch(toggleLoading(key)); - proms.push(dispatch(sendPutMetadataMap(key, mapping)) - .then((res) => { - dispatch(toggleLoading(res.key)); - return res.json || null; - })); - } - }); - Promise.all(proms).then(payloads => resolve(payloads)); -}); - -export const sendDeleteMetadataMap = key => dispatch => new Promise((resolve) => { - dispatch(toggleLoading('deleteMetadataMap')); - deleteMetadataMap(key) - .then((response) => { - response.json().then((json) => { - if (response.ok) { - dispatch(setMetadataMapping(json.payload)); - resolve(json); - } else { - dispatch(addErrors(json.errors.map(err => err.message))); - resolve(); - } - dispatch(toggleLoading('deleteMetadataMap')); - }); - }) - .catch(() => {}); -}); diff --git a/src/state/content-settings/reducer.js b/src/state/content-settings/reducer.js deleted file mode 100644 index e781b08f7..000000000 --- a/src/state/content-settings/reducer.js +++ /dev/null @@ -1,39 +0,0 @@ -import { - SET_CONTENT_SETTINGS, - SET_EDITOR_SETTINGS, - SET_CROP_RATIOS, - SET_METADATA_MAPPING, -} from 'state/content-settings/types'; - -const initialState = { - cropRatios: [], -}; - -const reducer = (state = initialState, action = {}) => { - switch (action.type) { - case SET_CONTENT_SETTINGS: - return { - ...state, - ...action.payload, - }; - case SET_EDITOR_SETTINGS: - return { - ...state, - editor: action.payload, - }; - case SET_CROP_RATIOS: - return { - ...state, - cropRatios: action.payload, - }; - case SET_METADATA_MAPPING: - return { - ...state, - metadata: action.payload, - }; - default: - return state; - } -}; - -export default reducer; diff --git a/src/state/content-settings/selectors.js b/src/state/content-settings/selectors.js deleted file mode 100644 index 2b03f7336..000000000 --- a/src/state/content-settings/selectors.js +++ /dev/null @@ -1,54 +0,0 @@ -import { createSelector } from 'reselect'; -import { reduce } from 'lodash'; - -export const getSettingsState = state => state.contentSettings; - -export const getIndexesStatus = createSelector( - getSettingsState, - settings => settings.indexesStatus, -); - -export const getReferencesStatus = createSelector( - getSettingsState, - settings => settings.referencesStatus, -); - -export const getIndexesLastReload = createSelector( - getSettingsState, - settings => settings.indexesLastReload, -); - -export const getEditorSettings = createSelector( - getSettingsState, - settings => settings.editor, -); - -export const getCropRatios = createSelector( - getSettingsState, - settings => settings.cropRatios, -); - -export const getMetadataMapping = createSelector( - getSettingsState, - settings => settings.metadata || {}, -); - -export const getMetadataMappingList = createSelector( - getMetadataMapping, - metadatas => Object.entries(metadatas).map(([key, metadata]) => ({ - key, - metadata, - })), -); - -export const getMetadataMappingFormData = createSelector( - getMetadataMapping, - metadatas => reduce( - metadatas, - (acc, value, key) => { - acc[key] = value.join(','); - return acc; - }, - {}, - ), -); diff --git a/src/state/content-settings/types.js b/src/state/content-settings/types.js deleted file mode 100644 index 2e6d3d8f5..000000000 --- a/src/state/content-settings/types.js +++ /dev/null @@ -1,4 +0,0 @@ -export const SET_CONTENT_SETTINGS = 'content-settings/set-content-settings'; -export const SET_EDITOR_SETTINGS = 'content-settings/set-editor-settings'; -export const SET_CROP_RATIOS = 'content-settings/set-crop-ratios'; -export const SET_METADATA_MAPPING = 'content-settings/set-metadata-mapping'; diff --git a/src/state/rootReducer.js b/src/state/rootReducer.js index 7764fceb7..2b52b0217 100644 --- a/src/state/rootReducer.js +++ b/src/state/rootReducer.js @@ -41,9 +41,7 @@ import plugins from 'state/plugins/reducer'; import contentTemplate from 'state/content-template/reducer'; import contentType from 'state/content-type/reducer'; import editContent from 'state/edit-content/reducer'; -import contentSettings from 'state/content-settings/reducer'; import contents from 'state/contents/reducer'; -import tableColumns from 'state/table-columns/reducer'; import system from 'state/system/reducer'; import currentTenant from 'state/multi-tenancy/reducer'; @@ -99,9 +97,7 @@ const reducerDef = { contentTemplate, contentType, editContent, - contentSettings, contents, - tableColumns, hub, system, mfe, diff --git a/src/state/table-columns/actions.js b/src/state/table-columns/actions.js deleted file mode 100644 index 050dd1d2f..000000000 --- a/src/state/table-columns/actions.js +++ /dev/null @@ -1,7 +0,0 @@ -import { SET_CURRENT_COLUMNS_SHOW } from 'state/table-columns/types'; - -// eslint-disable-next-line import/prefer-default-export -export const setCurrentColumnsShow = columns => ({ - type: SET_CURRENT_COLUMNS_SHOW, - payload: columns, -}); diff --git a/src/state/table-columns/reducer.js b/src/state/table-columns/reducer.js deleted file mode 100644 index f7d775f36..000000000 --- a/src/state/table-columns/reducer.js +++ /dev/null @@ -1,16 +0,0 @@ -import { SET_CURRENT_COLUMNS_SHOW } from 'state/table-columns/types'; - -const reducer = (state = {}, action = {}) => { - switch (action.type) { - case SET_CURRENT_COLUMNS_SHOW: { - return { - ...state, - currentColumnsShow: action.payload, - }; - } - default: - return state; - } -}; - -export default reducer; diff --git a/src/state/table-columns/selectors.js b/src/state/table-columns/selectors.js deleted file mode 100644 index 63000931e..000000000 --- a/src/state/table-columns/selectors.js +++ /dev/null @@ -1,9 +0,0 @@ -import { createSelector } from 'reselect'; - -export const getTableColumnsState = state => state.tableColumns; - -// eslint-disable-next-line import/prefer-default-export -export const getCurrentColumnsShow = createSelector( - getTableColumnsState, - tableColumns => tableColumns.currentColumnsShow, -); diff --git a/src/state/table-columns/types.js b/src/state/table-columns/types.js deleted file mode 100644 index b73dfbda9..000000000 --- a/src/state/table-columns/types.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line import/prefer-default-export -export const SET_CURRENT_COLUMNS_SHOW = 'cms/table-columns/set-current-columns-show'; diff --git a/src/state/user-settings/selectors.js b/src/state/user-settings/selectors.js deleted file mode 100644 index 8055b7ceb..000000000 --- a/src/state/user-settings/selectors.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line import/prefer-default-export -export const getUserSettings = state => state.userSettings; diff --git a/src/ui/activity-stream/ActivityStreamMenuContainer.js b/src/ui/activity-stream/ActivityStreamMenuContainer.js deleted file mode 100644 index e2dc5334c..000000000 --- a/src/ui/activity-stream/ActivityStreamMenuContainer.js +++ /dev/null @@ -1,14 +0,0 @@ -import { connect } from 'react-redux'; -import { ActivityStreamMenu } from '@entando/menu'; - -import { toggleNotificationList } from 'state/activity-stream/actions'; - -export const mapDispatchToProps = dispatch => ({ - onClickToggle: () => { - dispatch(toggleNotificationList()); - }, -}); - -const ActivityStreamMenuContainer = connect(null, mapDispatchToProps)(ActivityStreamMenu); - -export default ActivityStreamMenuContainer; diff --git a/src/ui/add-content/AddContentFormContainer.js b/src/ui/add-content/AddContentFormContainer.js deleted file mode 100644 index b1f156b1f..000000000 --- a/src/ui/add-content/AddContentFormContainer.js +++ /dev/null @@ -1,177 +0,0 @@ -import { connect } from 'react-redux'; -import { injectIntl, defineMessages } from 'react-intl'; -import { withRouter } from 'react-router-dom'; -import { change, formValueSelector, submit, destroy } from 'redux-form'; -import { routeConverter } from '@entando/utils'; - -import { - clearEditContentForm, - setOwnerGroupDisable, - setWorkMode, - saveContent, - fetchContent, - setMissingTranslations, - setSaveType, -} from 'state/edit-content/actions'; -import { setVisibleModal } from 'state/modal/actions'; -import { fetchContentType } from 'state/content-type/actions'; -import { sendPublishContent } from 'state/contents/actions'; -import { fetchCategoryTree } from 'state/categories/actions'; -import { ROUTE_CMS_CONTENTS, WIDGET_CONFIG_ROUTE } from 'app-init/router'; -import { addToast, TOAST_SUCCESS } from '@entando/messages'; - -import EditContentForm from 'ui/edit-content/EditContentForm'; -import { getUsername } from '@entando/apimanager'; -import { getSelectedContentType } from 'state/content-type/selectors'; -import { getTranslationWarning, getUserPreferences } from 'state/user-preferences/selectors'; -import { getLocale } from 'state/locale/selectors'; - -import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal'; - -import { - getOwnerGroupDisabled, - getSaveType, - getContent, - getMissingTranslations, -} from 'state/edit-content/selectors'; -import { fetchAllGroupEntries } from 'state/groups/actions'; -import { getGroupsList, getGroupEntries } from 'state/groups/selectors'; -import { CONTINUE_SAVE_TYPE, WORK_MODE_ADD, WORK_MODE_EDIT, APPROVE_SAVE_TYPE } from 'state/edit-content/types'; -import { fetchMyGroupPermissions } from 'state/permissions/actions'; -import { getMyGroupPermissions } from 'state/permissions/selectors'; -import { CRUD_CONTENTS_PERMISSION, SUPERUSER_PERMISSION } from 'state/permissions/const'; - -export const TranslationWarningModalID = 'TranslationWarningModal'; - -const publishContentMsgs = defineMessages({ - published: { - id: 'cms.contents.published', - defaultMessage: 'Published.', - }, - unpublished: { - id: 'cms.contents.unpublished', - defaultMessage: 'Unpublished.', - }, - saved: { - id: 'cms.contents.saved', - defaultMessage: 'Saved.', - }, -}); - -export const mapStateToProps = (state, ownProps) => { - const { match: { params = {} } } = ownProps; - const userPreferences = getUserPreferences(state); - const groupWithContentPermission = getMyGroupPermissions(state) - .find(({ permissions }) => ( - permissions.includes(SUPERUSER_PERMISSION) || permissions.includes(CRUD_CONTENTS_PERMISSION) - )); - const defaultOwnerGroup = userPreferences.defaultContentOwnerGroup - || (groupWithContentPermission && groupWithContentPermission.group); - const defaultJoinGroups = userPreferences.defaultContentJoinGroups; - const { id: contentId, contentType } = params; - - return ({ - workMode: WORK_MODE_ADD, - language: getLocale(state), - groups: getGroupsList(state), - allGroups: getGroupEntries(state), - currentUser: getUsername(state), - ownerGroupDisabled: getOwnerGroupDisabled(state), - selectedJoinGroups: formValueSelector('editcontentform')(state, 'groups'), - selectedCategories: formValueSelector('editcontentform')(state, 'contentCategories'), - selectedOwnerGroup: formValueSelector('editcontentform')(state, 'mainGroup'), - saveType: getSaveType(state), - content: getContent(state), - contentType: getSelectedContentType(state), - status: formValueSelector('editcontentform')(state, 'status'), - missingTranslations: getMissingTranslations(state), - enableTranslationWarning: getTranslationWarning(state), - ...(contentId == null && { - initialValues: { - mainGroup: defaultOwnerGroup, - groups: defaultJoinGroups, - contentType, - }, - }), - }); -}; - -export const mapDispatchToProps = (dispatch, { intl, history, match: { params } }) => ({ - onDidMount: () => { - dispatch(setWorkMode(WORK_MODE_ADD)); - dispatch(fetchCategoryTree()); - dispatch(fetchContentType(params.contentType)) - .catch(() => history.push(routeConverter(ROUTE_CMS_CONTENTS))); - dispatch(fetchMyGroupPermissions({ sort: 'group' })); - dispatch(fetchAllGroupEntries()); - }, - onSetOwnerGroupDisable: disabled => dispatch(setOwnerGroupDisable(disabled)), - onWillUnmount: () => { dispatch(clearEditContentForm()); dispatch(destroy('ContentType')); }, - onIncompleteData: () => history.push(routeConverter(ROUTE_CMS_CONTENTS)), - onSubmit: (values, categories, ignoreWarnings) => { - const { saveType } = values; - dispatch(saveContent(values, ignoreWarnings)).then((res) => { - if (res) { - dispatch(setVisibleModal('')); - dispatch(addToast( - intl.formatMessage(publishContentMsgs.saved), - TOAST_SUCCESS, - )); - let callbackRoute = routeConverter(ROUTE_CMS_CONTENTS); - const contentId = res.id ? res.id : res[0].id; - - const queryString = window.location.search; - if (queryString.includes('callback')) { - const urlParams = new URLSearchParams(window.location.search); - const widgetConfigRoute = routeConverter(WIDGET_CONFIG_ROUTE, { - widget: urlParams.get('callbackWidget'), - page: urlParams.get('callbackPage'), - frame: urlParams.get('callbackFrame'), - }); - callbackRoute = `${widgetConfigRoute}?contentId=${contentId}`; - } - - if (saveType === APPROVE_SAVE_TYPE) { - dispatch(sendPublishContent(contentId, 'published')); - history.push(callbackRoute); - } else if (saveType !== CONTINUE_SAVE_TYPE) { - history.push(callbackRoute); - } else if (res && res[0]) { - dispatch(setWorkMode(WORK_MODE_EDIT)); - dispatch(fetchContent(`/${res[0].id}`)); - } else if (res && res.id) { - dispatch(setWorkMode(WORK_MODE_EDIT)); - dispatch(fetchContent(`/${res.id}`)); - } - } - }).catch((missingTranslation) => { - dispatch(setMissingTranslations(missingTranslation)); - dispatch(setVisibleModal(TranslationWarningModalID)); - dispatch(setSaveType(saveType)); - }); - }, - onUnpublish: content => dispatch(sendPublishContent(content.id, 'draft')).then((res) => { - if (res) { - dispatch(addToast( - intl.formatMessage(publishContentMsgs.unpublished), - TOAST_SUCCESS, - )); - } - }), - onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('editcontentform')); }, - onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)), - onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTS)); }, - changeStatus: value => dispatch(change('editcontentform', 'status', value)), - closeModal: () => dispatch(setVisibleModal('')), -}); - -const EditContentContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(EditContentForm); - -export default withRouter(injectIntl(EditContentContainer)); diff --git a/src/ui/add-content/AddContentPage.js b/src/ui/add-content/AddContentPage.js deleted file mode 100644 index e7917203c..000000000 --- a/src/ui/add-content/AddContentPage.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react'; -import { Row, Col, Grid, Breadcrumb } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import AddContentFormContainer from 'ui/add-content/AddContentFormContainer'; - -const AddContentPage = () => ( - - - - - - - - - - - - - - - - - - -
- - - - - - - - - -); - -export default AddContentPage; diff --git a/src/ui/app/App.js b/src/ui/app/App.js index efae81cab..a6f12c523 100644 --- a/src/ui/app/App.js +++ b/src/ui/app/App.js @@ -1,4 +1,4 @@ -import React, { Component } from 'react'; +import React, { Component, Suspense } from 'react'; import PropTypes from 'prop-types'; import { DDProvider } from '@entando/ddtable'; import { @@ -8,6 +8,7 @@ import { } from 'react-router-dom'; import withAuth from 'auth/withAuth'; import { LoginPage } from '@entando/pages'; +import { Spinner } from 'patternfly-react'; import { ROUTE_HOME, @@ -56,14 +57,9 @@ import { ROUTE_ROLE_DETAIL, ROUTE_RELOAD_CONFIG, ROUTE_RELOAD_CONFIRM, - ROUTE_DATA_MODEL_LIST, - ROUTE_DATA_MODEL_ADD, - ROUTE_DATA_MODEL_EDIT, ROUTE_DATA_TYPE_LIST, ROUTE_DATA_TYPE_ADD, ROUTE_DATA_TYPE_EDIT, - ROUTE_DATA_TYPE_ATTRIBUTE_ADD, - ROUTE_DATA_TYPE_ATTRIBUTE_EDIT, ROUTE_ATTRIBUTE_MONOLIST_ADD, ROUTE_PROFILE_TYPE_LIST, ROUTE_PROFILE_TYPE_ADD, @@ -96,91 +92,18 @@ import { import LoginFormContainer from 'ui/login/LoginFormContainer'; import ToastsContainer from 'ui/app/ToastsContainer'; import DashboardPage from 'ui/dashboard/DashboardPage'; -import PageTreePageContainer from 'ui/pages/list/PageTreePageContainer'; -import ListWidgetPageContainer from 'ui/widgets/list/ListWidgetPageContainer'; -import AddWidgetPage from 'ui/widgets/add/AddWidgetPage'; -import NewUserWidgetPage from 'ui/widgets/newUserWidget/NewUserWidgetPage'; -import EditWidgetPageContainer from 'ui/widgets/edit/EditWidgetPageContainer'; -import WidgetConfigPageContainer from 'ui/widgets/config/WidgetConfigPageContainer'; -import DetailWidgetPageContainer from 'ui/widgets/detail/DetailWidgetPageContainer'; -import ListFragmentPage from 'ui/fragments/list/ListFragmentPage'; -import AddFragmentPage from 'ui/fragments/add/AddFragmentPage'; -import EditFragmentPageContainer from 'ui/fragments/edit/EditFragmentPageContainer'; -import CloneFragmentPageContainer from 'ui/fragments/clone/CloneFragmentPageContainer'; -import DetailFragmentPageContainer from 'ui/fragments/detail/DetailFragmentPageContainer'; -import PagesAddPageContainer from 'ui/pages/add/PagesAddPageContainer'; -import PagesEditPage from 'ui/pages/edit/PagesEditPage'; -import PagesClonePage from 'ui/pages/clone/PagesClonePage'; -import PagesDetailPageContainer from 'ui/pages/detail/PagesDetailPageContainer'; -import PageSettingsPage from 'ui/pages/settings/PageSettings'; -import PageConfigPageContainer from 'ui/pages/config/PageConfigPageContainer'; -import PageTemplateListPage from 'ui/page-templates/list/PageTemplateListPage'; -import PageTemplateAddPage from 'ui/page-templates/add/PageTemplateAddPage'; -import PageTemplateEditPage from 'ui/page-templates/edit/PageTemplateEditPage'; -import PageTemplateClonePage from 'ui/page-templates/clone/PageTemplateClonePage'; -import PageTemplateDetailPageContainer from 'ui/page-templates/detail/PageTemplateDetailPageContainer'; -import AddDataModelPage from 'ui/data-models/add/AddDataModelPage'; -import EditDataModelPage from 'ui/data-models/edit/EditDataModelPage'; -import DataModelListPage from 'ui/data-models/list/DataModelListPage'; -import UserListPage from 'ui/users/list/UserListPage'; -import UserAuthorityPageContainer from 'ui/users/authority/UserAuthorityPageContainer'; -import AddUserPage from 'ui/users/add/AddUserPage'; -import EditUserPage from 'ui/users/edit/EditUserPage'; -import EditUserProfilePage from 'ui/user-profile/edit/EditUserProfilePage'; -import DetailUserPage from 'ui/users/detail/DetailUserPage'; -import UserRestrictionsPage from 'ui/users/restrictions/UserRestrictionsPage'; -import MyProfilePageContainer from 'ui/users/my-profile/MyProfilePageContainer'; + import ListGroupPage from 'ui/groups/list/ListGroupPage'; import AddGroupPage from 'ui/groups/add/AddGroupPage'; import EditGroupPage from 'ui/groups/edit/EditGroupPage'; -import AddLabelPage from 'ui/labels/add/AddLabelPage'; -import EditLabelPage from 'ui/labels/edit/EditLabelPage'; -import LabelsAndLanguagesPageContainer from 'ui/labels/list/LabelsAndLanguagesPageContainer'; import DetailGroupPage from 'ui/groups/detail/DetailGroupPage'; -import ListRolePage from 'ui/roles/list/ListRolePage'; -import AddRolePage from 'ui/roles/add/AddRolePage'; -import EditRolePage from 'ui/roles/edit/EditRolePage'; -import DetailRolePage from 'ui/roles/detail/DetailRolePage'; -import ReloadConfigPage from 'ui/reload-configuration/ReloadConfigPage'; -import ReloadConfirmPage from 'ui/reload-configuration/ReloadConfirmPage'; import ListDataTypePage from 'ui/data-types/list/ListDataTypePage'; import AddDataTypesPage from 'ui/data-types/add/AddDataTypesPage'; import EditDataTypesPage from 'ui/data-types/edit/EditDataTypesPage'; -import AddDataTypeAttributePage from 'ui/data-types/attributes/AddDataTypeAttributePage'; -import EditDataTypeAttributePage from 'ui/data-types/attributes/EditDataTypeAttributePage'; -import MonolistPageContainer from 'ui/data-types/attributes/monolist/MonolistPageContainer'; -// component repository -import ComponentListPage from 'ui/component-repository/components/list/ComponentListPage'; -import ComponentListPageDisabled from 'ui/component-repository/components/list/ComponentListPageDisabled'; -import SettingsListPage from 'ui/component-repository/settings/list/SettingsListPage'; -import SettingsEditPage from 'ui/component-repository/settings/edit/SettingsEditPage'; -import SettingsAddPage from 'ui/component-repository/settings/add/SettingsAddPage'; -// attribute type -import ListProfileTypePage from 'ui/profile-types/list/ListProfileTypePage'; -import AddProfileTypesPage from 'ui/profile-types/add/AddProfileTypesPage'; -import EditProfileTypesPage from 'ui/profile-types/edit/EditProfileTypesPage'; -import AddProfileTypeAttributePage from 'ui/profile-types/attributes/AddProfileTypeAttributePage'; -import EditProfileTypeAttributePage from 'ui/profile-types/attributes/EditProfileTypeAttributePage'; -import MonolistProfilePageContainer from 'ui/profile-types/attributes/monolist/MonolistProfilePageContainer'; -import PluginConfigPageContainer from 'ui/plugins/PluginConfigPageContainer'; -import ListDatabasePage from 'ui/database/list/ListDatabasePage'; -import AddDatabasePageContainer from 'ui/database/add/AddDatabasePageContainer'; -import ReportDatabasePageContainer from 'ui/database/report/ReportDatabasePageContainer'; -import FileBrowserPage from 'ui/file-browser/list/ListFilesPage'; -import UploadFileBrowserPage from 'ui/file-browser/upload/UploadFileBrowserPage'; -import CreateFolderPage from 'ui/file-browser/add/CreateFolderPage'; -import CreateTextFilePage from 'ui/file-browser/add/CreateTextFilePage'; -import EditTextFilePage from 'ui/file-browser/edit/EditTextFilePage'; -import PluginsPageContainer from 'ui/plugins/PluginsPageContainer'; -import PageNotFoundContainer from 'ui/app/PageNotFoundContainer'; -import CloneWidgetPage from 'ui/widgets/clone/CloneWidgetPage'; -import EmailConfigPage from 'ui/email-config/EmailConfigPage'; import PageLayout from 'ui/app/PageLayout'; import RowSpinner from 'ui/pages/common/RowSpinner'; import entandoApps from 'entando-apps'; -import AboutPage from 'ui/about/AboutPage'; -import LicensePage from 'ui/license/LicensePage'; import getRuntimeEnv from 'helpers/getRuntimeEnv'; import { useSelector } from 'react-redux'; import { getMfeTargetContent } from 'state/mfe/selectors'; @@ -189,6 +112,82 @@ import InternalPage from 'ui/internal-page/InternalPage'; import { generateMfeRoutes } from 'helpers/urlUtils'; import NoAccessPageContainer from 'ui/app/NoAccessPageContainer'; +const ListWidgetPageContainer = React.lazy(() => import('ui/widgets/list/ListWidgetPageContainer')); +const AddWidgetPage = React.lazy(() => import('ui/widgets/add/AddWidgetPage')); +const EditWidgetPageContainer = React.lazy(() => import('ui/widgets/edit/EditWidgetPageContainer')); +const DetailWidgetPageContainer = React.lazy(() => import('ui/widgets/detail/DetailWidgetPageContainer')); +const WidgetConfigPageContainer = React.lazy(() => import('ui/widgets/config/WidgetConfigPageContainer')); +const CloneWidgetPage = React.lazy(() => import('ui/widgets/clone/CloneWidgetPage')); +const ListFragmentPage = React.lazy(() => import('ui/fragments/list/ListFragmentPage')); +const AddFragmentPage = React.lazy(() => import('ui/fragments/add/AddFragmentPage')); +const EditFragmentPageContainer = React.lazy(() => import('ui/fragments/edit/EditFragmentPageContainer')); +const CloneFragmentPageContainer = React.lazy(() => import('ui/fragments/clone/CloneFragmentPageContainer')); +const DetailFragmentPageContainer = React.lazy(() => import('ui/fragments/detail/DetailFragmentPageContainer')); +const PluginConfigPageContainer = React.lazy(() => import('ui/plugins/PluginConfigPageContainer')); +const PluginsPageContainer = React.lazy(() => import('ui/plugins/PluginsPageContainer')); +const EditUserProfilePage = React.lazy(() => import('ui/user-profile/edit/EditUserProfilePage')); +const NewUserWidgetPage = React.lazy(() => import('ui/widgets/newUserWidget/NewUserWidgetPage')); +const EmailConfigPage = React.lazy(() => import('ui/email-config/EmailConfigPage')); +const DetailRolePage = React.lazy(() => import('ui/roles/detail/DetailRolePage')); +const EditRolePage = React.lazy(() => import('ui/roles/edit/EditRolePage')); +const AddRolePage = React.lazy(() => import('ui/roles/add/AddRolePage')); +const ListRolePage = React.lazy(() => import('ui/roles/list/ListRolePage')); +const EditLabelPage = React.lazy(() => import('ui/labels/edit/EditLabelPage')); +const AddLabelPage = React.lazy(() => import('ui/labels/add/AddLabelPage')); +const LabelsAndLanguagesPageContainer = React.lazy(() => import('ui/labels/list/LabelsAndLanguagesPageContainer')); +const EditProfileTypesPage = React.lazy(() => import('ui/profile-types/edit/EditProfileTypesPage')); +const AddProfileTypesPage = React.lazy(() => import('ui/profile-types/add/AddProfileTypesPage')); +const ListProfileTypePage = React.lazy(() => import('ui/profile-types/list/ListProfileTypePage')); +const UserAuthorityPageContainer = React.lazy(() => import('ui/users/authority/UserAuthorityPageContainer')); +const MyProfilePageContainer = React.lazy(() => import('ui/users/my-profile/MyProfilePageContainer')); +const UserRestrictionsPage = React.lazy(() => import('ui/users/restrictions/UserRestrictionsPage')); +const DetailUserPage = React.lazy(() => import('ui/users/detail/DetailUserPage')); +const EditUserPage = React.lazy(() => import('ui/users/edit/EditUserPage')); +const AddUserPage = React.lazy(() => import('ui/users/add/AddUserPage')); +const UserListPage = React.lazy(() => import('ui/users/list/UserListPage')); + +const AboutPage = React.lazy(() => import('ui/about/AboutPage')); +const LicensePage = React.lazy(() => import('ui/license/LicensePage')); +const PageNotFoundContainer = React.lazy(() => import('ui/app/PageNotFoundContainer')); +const ListDatabasePage = React.lazy(() => import('ui/database/list/ListDatabasePage')); +const AddDatabasePageContainer = React.lazy(() => import('ui/database/add/AddDatabasePageContainer')); +const ReportDatabasePageContainer = React.lazy(() => import('ui/database/report/ReportDatabasePageContainer')); +const FileBrowserPage = React.lazy(() => import('ui/file-browser/list/ListFilesPage')); +const UploadFileBrowserPage = React.lazy(() => import('ui/file-browser/upload/UploadFileBrowserPage')); +const CreateFolderPage = React.lazy(() => import('ui/file-browser/add/CreateFolderPage')); +const CreateTextFilePage = React.lazy(() => import('ui/file-browser/add/CreateTextFilePage')); +const EditTextFilePage = React.lazy(() => import('ui/file-browser/edit/EditTextFilePage')); +const AddProfileTypeAttributePage = React.lazy(() => import('ui/profile-types/attributes/AddProfileTypeAttributePage')); +const EditProfileTypeAttributePage = React.lazy(() => import('ui/profile-types/attributes/EditProfileTypeAttributePage')); + +// component repository +const ComponentListPage = React.lazy(() => import('ui/component-repository/components/list/ComponentListPage')); +const ComponentListPageDisabled = React.lazy(() => import('ui/component-repository/components/list/ComponentListPageDisabled')); +const SettingsListPage = React.lazy(() => import('ui/component-repository/settings/list/SettingsListPage')); +const SettingsEditPage = React.lazy(() => import('ui/component-repository/settings/edit/SettingsEditPage')); +const SettingsAddPage = React.lazy(() => import('ui/component-repository/settings/add/SettingsAddPage')); +const ReloadConfigPage = React.lazy(() => import('ui/reload-configuration/ReloadConfigPage')); +const ReloadConfirmPage = React.lazy(() => import('ui/reload-configuration/ReloadConfirmPage')); +const MonolistProfilePageContainer = React.lazy(() => import('ui/profile-types/attributes/monolist/MonolistProfilePageContainer')); +const MonolistPageContainer = React.lazy(() => import('ui/data-types/attributes/monolist/MonolistPageContainer')); + +/* Page Section */ +const PageTreePageContainer = React.lazy(() => import('ui/pages/list/PageTreePageContainer')); +const PagesAddPageContainer = React.lazy(() => import('ui/pages/add/PagesAddPageContainer')); +const PagesEditPage = React.lazy(() => import('ui/pages/edit/PagesEditPage')); +const PagesClonePage = React.lazy(() => import('ui/pages/clone/PagesClonePage')); +const PagesDetailPageContainer = React.lazy(() => import('ui/pages/detail/PagesDetailPageContainer')); +const PageSettingsPage = React.lazy(() => import('ui/pages/settings/PageSettings')); +const PageConfigPageContainer = React.lazy(() => import('ui/pages/config/PageConfigPageContainer')); +const PageTemplateListPage = React.lazy(() => import('ui/page-templates/list/PageTemplateListPage')); +const PageTemplateAddPage = React.lazy(() => import('ui/page-templates/add/PageTemplateAddPage')); +const PageTemplateEditPage = React.lazy(() => import('ui/page-templates/edit/PageTemplateEditPage')); +const PageTemplateClonePage = React.lazy(() => import('ui/page-templates/clone/PageTemplateClonePage')); +const PageTemplateDetailPageContainer = React.lazy(() => import('ui/page-templates/detail/PageTemplateDetailPageContainer')); + +export const renderWithSuspense = component => + }>{component}; + const appsRoutes = entandoApps.reduce((routes, app) => ( [ ...routes, @@ -227,126 +226,286 @@ const RouteComponent = () => { /> {/* page */} - - - - - - - + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> {/* page template */} - - - - - + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> {/* widgets */} - - - - - - - + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> {/* fragments */} - - - - - - {/* data models */} - - - + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> {/* data type */} {/* user */} - - - - - - - + renderWithSuspense()} /> + renderWithSuspense()} /> + renderWithSuspense()} /> + renderWithSuspense()} /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> {/* profiles */} - - - + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> {/* groups */} {/* labels */} - - - + renderWithSuspense()} + /> + renderWithSuspense()} /> + renderWithSuspense()} /> {/* roles */} - - - - + renderWithSuspense()} /> + renderWithSuspense()} /> + renderWithSuspense()} /> + renderWithSuspense()} /> {/* database */} - - - - + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> {/* files */} - - - - - + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> {/* component repository */} ( - (COMPONENT_REPOSITORY_UI_ENABLED) ? - : - )} + render={() => renderWithSuspense(COMPONENT_REPOSITORY_UI_ENABLED ? + : )} /> ( - (COMPONENT_REPOSITORY_UI_ENABLED) ? - : - )} + render={() => renderWithSuspense(COMPONENT_REPOSITORY_UI_ENABLED ? + : )} /> ( - (COMPONENT_REPOSITORY_UI_ENABLED) ? - : - )} + render={() => renderWithSuspense(COMPONENT_REPOSITORY_UI_ENABLED ? + : )} /> ( - (COMPONENT_REPOSITORY_UI_ENABLED) ? - : - )} + render={() => renderWithSuspense((COMPONENT_REPOSITORY_UI_ENABLED) ? + : )} /> {/* email config */} - + renderWithSuspense()} + /> {/* other */} - - - - - - - - - - - + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + + renderWithSuspense()} + /> + + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> + renderWithSuspense()} + /> { /* static routes */} - - + renderWithSuspense()} /> + renderWithSuspense()} /> { /* app routes */} {appsRoutes} {/* MFE routes */} @@ -361,7 +520,7 @@ const RouteComponent = () => { {/* 403 */} {/* 404 */} - + renderWithSuspense()} /> ); }; diff --git a/src/ui/categories/common/formUtils.js b/src/ui/categories/common/formUtils.js deleted file mode 100644 index cb1839c13..000000000 --- a/src/ui/categories/common/formUtils.js +++ /dev/null @@ -1,6 +0,0 @@ -import { convertToQueryString } from '@entando/utils'; - -export const activeLangQueryString = convertToQueryString({ - formValues: { isActive: true }, -}); -export const noPagination = { page: 1, pageSize: 0 }; diff --git a/src/ui/common/CMSPageTitle.js b/src/ui/common/CMSPageTitle.js deleted file mode 100644 index 32e648e20..000000000 --- a/src/ui/common/CMSPageTitle.js +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { OverlayTrigger, Popover } from 'patternfly-react'; - -const helpIcon = (helpId, position) => (helpId ? ( - - -

- -

- -)} - placement={position === 'pull-right' ? 'left' : 'right'} - trigger={['click']} - rootClose - > - -
-
-) : null); - -const CMSPageTitle = ({ - titleId, helpId, titleParam, position, noHeaderMargin, largeTitle, -}) => ( -
-
-

- - {helpIcon(helpId, position)} -

-
-
-); - -CMSPageTitle.propTypes = { - titleId: PropTypes.string.isRequired, - helpId: PropTypes.string, - titleParam: PropTypes.shape({}), - position: PropTypes.string, - noHeaderMargin: PropTypes.bool, - largeTitle: PropTypes.bool, -}; - -CMSPageTitle.defaultProps = { - helpId: '', - titleParam: {}, - position: '', - noHeaderMargin: false, - largeTitle: false, -}; - -export default CMSPageTitle; diff --git a/src/ui/common/CMSShell.js b/src/ui/common/CMSShell.js deleted file mode 100644 index e77f307cb..000000000 --- a/src/ui/common/CMSShell.js +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { BrandMenu, FirstLevelMenuItem, LinkMenuItem } from '@entando/menu'; -import { FormattedMessage } from 'react-intl'; - -import LinkMenu from 'ui/common/LinkMenu'; - -const BRAND_LOGO = ; - -const CMSShell = ({ className, children }) => ( -
- - } - to="/" - /> - } - > - - - - {children} -
-); - -CMSShell.propTypes = { - children: PropTypes.node, - className: PropTypes.string, -}; - -CMSShell.defaultProps = { - children: null, - className: '', -}; - -export default CMSShell; diff --git a/src/ui/common/DraggableDialog.js b/src/ui/common/DraggableDialog.js deleted file mode 100644 index 58698e212..000000000 --- a/src/ui/common/DraggableDialog.js +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import Draggable from 'react-draggable'; -import { ModalDialog } from 'react-bootstrap'; - -const DraggableDialog = props => ( - - - -); - -export default DraggableDialog; diff --git a/src/ui/common/LinkMenu.js b/src/ui/common/LinkMenu.js deleted file mode 100644 index 0c133360a..000000000 --- a/src/ui/common/LinkMenu.js +++ /dev/null @@ -1,112 +0,0 @@ -import React, { Fragment } from 'react'; -import { LinkMenuItem } from '@entando/menu'; -import { hasAccess } from '@entando/utils'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { - ROUTE_CMS_CONTENTTEMPLATE_LIST, ROUTE_CMS_CONTENTTYPE_LIST, - ROUTE_CMS_CONTENTS, ROUTE_CMS_VERSIONING, - ROUTE_CATEGORIES, -} from 'app-init/router'; -import { adminConsoleUrl } from 'helpers/urlUtils'; -import { withPermissionValues } from 'ui/auth/withPermissions'; - -import { - CRUD_CONTENTS_PERMISSION, - VALIDATE_CONTENTS_PERMISSION, - MANAGE_RESOURCES_PERMISSION, - MANAGE_CATEGORIES_PERMISSION, -} from 'state/permissions/const'; - -const LinkMenu = ({ userPermissions, isSuperuser }) => { - const hasEditContentsAccess = hasAccess(CRUD_CONTENTS_PERMISSION, userPermissions); - - const hasContentSupervisorAccess = hasEditContentsAccess - || hasAccess(VALIDATE_CONTENTS_PERMISSION, userPermissions); - const hasManageResourcesAccess = hasAccess(MANAGE_RESOURCES_PERMISSION, userPermissions); - const hasContentTypesAccess = isSuperuser; - const hasContentTemplatesAccess = isSuperuser; - const hasContentSettingsAccess = isSuperuser; - const hasCategoriesAccess = hasAccess(MANAGE_CATEGORIES_PERMISSION, userPermissions); - const hasVersioningAccess = isSuperuser || hasEditContentsAccess || hasManageResourcesAccess; - - return ( - - { - hasContentSupervisorAccess && ( - } - to={ROUTE_CMS_CONTENTS} - /> - ) - } - { - hasContentTemplatesAccess && ( - } - to={ROUTE_CMS_CONTENTTEMPLATE_LIST} - /> - ) - } - { - hasCategoriesAccess && ( - } - to={ROUTE_CATEGORIES} - /> - ) - } - { - hasVersioningAccess && ( - } - to={ROUTE_CMS_VERSIONING} - /> - ) - } - { - isSuperuser && ( -
  • - - - -
  • - ) - } - { - hasContentTypesAccess && ( - } - to={ROUTE_CMS_CONTENTTYPE_LIST} - /> - ) - } - { - hasContentSettingsAccess && ( - } - to="/cms/content-settings" - /> - ) - } -
    - ); -}; - -LinkMenu.propTypes = { - userPermissions: PropTypes.arrayOf(PropTypes.string), - isSuperuser: PropTypes.bool.isRequired, -}; - -LinkMenu.defaultProps = { - userPermissions: [], -}; - - -export default withPermissionValues(LinkMenu); diff --git a/src/ui/common/RowSpinner.js b/src/ui/common/RowSpinner.js deleted file mode 100644 index b8ebbfa9e..000000000 --- a/src/ui/common/RowSpinner.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; - -const RowSpinner = ({ loading }) => (loading ? ( -
    -
    -
    -) : null); - -RowSpinner.propTypes = { - loading: PropTypes.bool.isRequired, -}; - -export default RowSpinner; diff --git a/src/ui/common/StickySave.js b/src/ui/common/StickySave.js deleted file mode 100644 index 0fa0229d2..000000000 --- a/src/ui/common/StickySave.js +++ /dev/null @@ -1,170 +0,0 @@ -import React from 'react'; -import { Row, Col, Button, DropdownButton, MenuItem } from 'patternfly-react'; -import { ToggleButton, ButtonToolbar } from 'react-bootstrap'; -import { intlShape, FormattedMessage } from 'react-intl'; -import { Field } from 'redux-form'; -import PropTypes from 'prop-types'; -import { formatDate, PermissionCheck } from '@entando/utils'; -import { REGULAR_SAVE_TYPE, APPROVE_SAVE_TYPE, CONTINUE_SAVE_TYPE } from 'state/edit-content/types'; -import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer'; -import { withPermissionValues } from 'ui/auth/withPermissions'; -import { VALIDATE_CONTENTS_PERMISSION } from 'state/permissions/const'; - -import ToggleButtonGroupField from 'ui/common/form/ToggleButtonGroupField'; - -const isValidDateTimeStr = (dateTime) => { - const formattedDateTime = formatDate(dateTime); - return (typeof formattedDateTime === 'string') && !(['N/A', 'INVALID DATE'].includes(formattedDateTime.toUpperCase())); -}; - -const StickySave = ({ - lastAutoSaveTime, intl, invalid, submitting, onLine, onSubmit, handleSubmit, - onUnpublish, content, isDirty, onCancel, onDiscard, onSave, userPermissions, - enableTranslationWarning, -}) => { - const disabled = invalid || submitting || !isDirty; - - return ( - - - - {isValidDateTimeStr(lastAutoSaveTime) && ( - - - {formatDate(lastAutoSaveTime)} - - )} - - - !disabled && onSubmit({ - ...values, - saveType: REGULAR_SAVE_TYPE, - }, undefined, !enableTranslationWarning, content.attributes)) - } - > - - - !disabled && onSubmit({ - ...values, - saveType: CONTINUE_SAVE_TYPE, - }, undefined, !enableTranslationWarning, content.attributes))} - > - - - - !disabled && onSubmit({ - ...values, - saveType: APPROVE_SAVE_TYPE, - }, undefined, !enableTranslationWarning, content.attributes)) - } - > - - - - - {onLine && ( - - )} - - - - - - - - - - - - - - - - - - - - - - ); -}; - -StickySave.propTypes = { - intl: intlShape.isRequired, - content: PropTypes.shape({ - id: PropTypes.string, - attributes: PropTypes.arrayOf(PropTypes.shape({})), - }), - lastAutoSaveTime: PropTypes.string, - handleSubmit: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - onUnpublish: PropTypes.func.isRequired, - invalid: PropTypes.bool.isRequired, - submitting: PropTypes.bool.isRequired, - onLine: PropTypes.bool, - isDirty: PropTypes.bool, - onDiscard: PropTypes.func.isRequired, - onCancel: PropTypes.func.isRequired, - onSave: PropTypes.func.isRequired, - userPermissions: PropTypes.arrayOf(PropTypes.string), - enableTranslationWarning: PropTypes.bool.isRequired, -}; - -StickySave.defaultProps = { - lastAutoSaveTime: ' skipped', - onLine: false, - content: {}, - isDirty: false, - userPermissions: [], -}; - -export default withPermissionValues(StickySave); diff --git a/src/ui/common/attributes/AttributeListMenuActionsProfile.js b/src/ui/common/attributes/AttributeListMenuActionsProfile.js deleted file mode 100644 index fd009d810..000000000 --- a/src/ui/common/attributes/AttributeListMenuActionsProfile.js +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { DropdownKebab, MenuItem } from 'patternfly-react'; -import { LinkMenuItem } from '@entando/menu'; -import { routeConverter } from '@entando/utils'; - -const AttributeListMenuActionsProfile = ({ - onClickDelete, onMoveUp, onMoveDown, code, routeToEdit, profiletypeCode, -}) => ( - - } - className="AttributeListMenuAction__menu-item-edit" - /> - - - - - - - - - - -); - -AttributeListMenuActionsProfile.propTypes = { - onClickDelete: PropTypes.func, - onMoveUp: PropTypes.func, - onMoveDown: PropTypes.func, - code: PropTypes.string.isRequired, - routeToEdit: PropTypes.string.isRequired, - profiletypeCode: PropTypes.string.isRequired, -}; - -AttributeListMenuActionsProfile.defaultProps = { - onClickDelete: null, - onMoveUp: null, - onMoveDown: null, -}; - -export default AttributeListMenuActionsProfile; diff --git a/src/ui/common/attributes/AttributeListTableProfile.js b/src/ui/common/attributes/AttributeListTableProfile.js deleted file mode 100644 index a6b16bf78..000000000 --- a/src/ui/common/attributes/AttributeListTableProfile.js +++ /dev/null @@ -1,91 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { Col } from 'patternfly-react'; -import AttributeListMenuActionsProfile from 'ui/common/attributes/AttributeListMenuActionsProfile'; -import AttributeCheckIcon from 'ui/common/attributes/AttributeCheckIcon'; - -const AttributeListTableProfile = (props) => { - const { attributes } = props; - - const renderRoles = (roles) => { - if (roles.length > 0) { - return ( -
      - {roles.map(role => ( -
    • {role.descr}
    • - ))} -
    - ); - } - - return (); - }; - - const renderTableRows = () => attributes.map(attribute => ( - - {attribute.code} - {attribute.type} - - {renderRoles(attribute.roles)} - - - - - - - - - - - - )); - - const renderTable = () => ( - - - - - - - - - - - - - - {renderTableRows()} - -
    - - - - - - - - - - - -
    - - ); - - return ( -
    - {renderTable()} -
    - ); -}; - -AttributeListTableProfile.propTypes = { - attributes: PropTypes.arrayOf(PropTypes.shape({})), -}; - -AttributeListTableProfile.defaultProps = { - attributes: [], -}; - -export default AttributeListTableProfile; diff --git a/src/ui/common/button/CopyTextButton.js b/src/ui/common/button/CopyTextButton.js deleted file mode 100644 index e91b0d510..000000000 --- a/src/ui/common/button/CopyTextButton.js +++ /dev/null @@ -1,42 +0,0 @@ -import React, { useState } from 'react'; -import PropTypes from 'prop-types'; -import { debounce } from 'lodash'; -import { Button, OverlayTrigger, Popover } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; -import { CopyToClipboard } from 'react-copy-to-clipboard'; - -const CopyTextButton = ({ text }) => { - const [copied, setCopied] = useState(false); - - const resetCopyIcon = debounce(() => setCopied(false), 3000); - - const handleCopy = () => { - setCopied(true); - resetCopyIcon.cancel(); - resetCopyIcon(); - }; - return ( - - - - - )} - placement="top" - trigger={['hover']} - rootClose - > - - - - ); -}; - -CopyTextButton.propTypes = { - text: PropTypes.string.isRequired, -}; - -export default CopyTextButton; diff --git a/src/ui/common/category/CategoryTreeItem.js b/src/ui/common/category/CategoryTreeItem.js deleted file mode 100644 index a83195812..000000000 --- a/src/ui/common/category/CategoryTreeItem.js +++ /dev/null @@ -1,108 +0,0 @@ -import React, { useRef } from 'react'; -import PropTypes from 'prop-types'; -import { Checkbox } from 'react-bootstrap'; -import { useRovingTabIndex, useFocusEffect } from 'react-roving-tabindex'; - -import RowSpinner from 'ui/common/RowSpinner'; -import { CONFIRM_KEYS, eventToConfirm } from 'ui/common/accessibility/KeyCodes'; - -const CategoryTreeItem = ({ - i, - checked, - category, - language, - disabled, - onCheckCategory, -}) => { - const ref = useRef(null); - - const [ - tabIndex, - focused, - handleKeyDownRove, - handleClickRove, - ] = useRovingTabIndex(ref, disabled); - - useFocusEffect(focused, ref); - - const onClickSelect = (e) => { - const { - clickConfirmed, - keyConfirmed, - } = eventToConfirm(e); - if (clickConfirmed || keyConfirmed) { - onCheckCategory(category); - } - if (clickConfirmed) { - handleKeyDownRove(e); - } - if (keyConfirmed) { - handleClickRove(e); - } - }; - - const handleKeyDown = (e) => { - if (CONFIRM_KEYS.includes(e.keyCode)) { - onClickSelect(e); - } else { - handleKeyDownRove(e); - } - }; - - const className = ['CategoryTreeSelector__column-td']; - if (category.isEmpty) { - className.push('CategoryTreeSelector__column-td--empty'); - } - const leftPadding = category.depth === 1 ? 13 : category.depth * 20; - return ( - - - - - {category.titles[language]} - - - - - - ); -}; - -CategoryTreeItem.propTypes = { - i: PropTypes.number.isRequired, - checked: PropTypes.bool.isRequired, - category: PropTypes.shape({ - isEmpty: PropTypes.bool, - code: PropTypes.string, - expanded: PropTypes.bool, - titles: PropTypes.shape({}), - depth: PropTypes.number, - loading: PropTypes.bool, - }).isRequired, - onCheckCategory: PropTypes.func, - language: PropTypes.string.isRequired, - disabled: PropTypes.bool, -}; - -CategoryTreeItem.defaultProps = { - onCheckCategory: () => {}, - disabled: false, -}; - -export default CategoryTreeItem; diff --git a/src/ui/common/category/RenderCategoryTreeInput.js b/src/ui/common/category/RenderCategoryTreeInput.js deleted file mode 100644 index f74dd8b98..000000000 --- a/src/ui/common/category/RenderCategoryTreeInput.js +++ /dev/null @@ -1,128 +0,0 @@ -import React, { useState } from 'react'; -import PropTypes from 'prop-types'; -import { RovingTabIndexProvider } from 'react-roving-tabindex'; - -import SearchFormInput from 'ui/common/form/RenderSearchFormInput'; -import { Col, ControlLabel } from 'patternfly-react'; - -import CategoryTreeItem from 'ui/common/category/CategoryTreeItem'; - -const RenderCategoryTreeInput = ({ - input, - categories, - language, - label, - labelSize, - inputSize, - append, - alignClass, - meta: { touched, error }, - help, - xsClass, -}) => { - const [searchFilter, setSearchFilter] = useState(''); - const categoriesWithoutRoot = categories.filter(c => c.code !== 'home'); - const categoriesFiltered = searchFilter - ? categoriesWithoutRoot.filter(c => searchFilter.test(c.titles[language])) - : categoriesWithoutRoot; - - const onCheckCategory = (catselected) => { - let newVal; - const valIdx = input.value.indexOf(catselected.code); - if (valIdx === -1) { - newVal = [...input.value, catselected.code]; - } else { - newVal = [...input.value]; - newVal.splice(valIdx, 1); - } - input.onChange(newVal); - }; - - const onSearchValueChange = keyword => ( - setSearchFilter(keyword === '' ? keyword : new RegExp(`${keyword}`, 'i')) - ); - - const onClearSearch = () => setSearchFilter(''); - - const categoryRows = categoriesFiltered.map((category, i) => ( - - )); - - return ( -
    - {labelSize > 0 ? ( - - - {label} {help} - - - ) : ( - '' - )} - -
    - -
    - - - - {categoryRows} - - -
    -
    -
    - - {append && {append}} - {touched && (error && {error})} -
    - ); -}; - -RenderCategoryTreeInput.propTypes = { - input: PropTypes.shape({ - value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]), - onChange: PropTypes.func, - }), - categories: PropTypes.arrayOf(PropTypes.shape({})), - language: PropTypes.string.isRequired, - append: PropTypes.string, - meta: PropTypes.shape({ - touched: PropTypes.bool, - error: PropTypes.shape({}), - }), - help: PropTypes.node, - label: PropTypes.node, - alignClass: PropTypes.string, - xsClass: PropTypes.string, - labelSize: PropTypes.number, - inputSize: PropTypes.number, -}; - -RenderCategoryTreeInput.defaultProps = { - input: {}, - categories: [], - meta: {}, - label: '', - help: null, - labelSize: 2, - inputSize: null, - append: '', - alignClass: 'text-right', - xsClass: 'mobile-left', -}; - -export default RenderCategoryTreeInput; diff --git a/src/ui/common/content/ContentFormFieldCollapse.js b/src/ui/common/content/ContentFormFieldCollapse.js deleted file mode 100644 index d45876f69..000000000 --- a/src/ui/common/content/ContentFormFieldCollapse.js +++ /dev/null @@ -1,40 +0,0 @@ -import React, { useState } from 'react'; -import PropTypes from 'prop-types'; -import { Collapse } from 'react-collapse'; - -import SectionTitle from 'ui/common/SectionTitle'; - -const ContentFormFieldCollapse = ({ label, children, showContentAtStart }) => { - const [opened, setOpened] = useState(showContentAtStart); - - const handleCollapse = () => setOpened(!opened); - - return ( -
    - - -
    - {children} -
    -
    -
    - ); -}; - -ContentFormFieldCollapse.propTypes = { - label: PropTypes.node.isRequired, - children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired, - showContentAtStart: PropTypes.bool, -}; - -ContentFormFieldCollapse.defaultProps = { - showContentAtStart: false, -}; - -export default ContentFormFieldCollapse; diff --git a/src/ui/common/content/ContentList.js b/src/ui/common/content/ContentList.js deleted file mode 100644 index df74c445b..000000000 --- a/src/ui/common/content/ContentList.js +++ /dev/null @@ -1,219 +0,0 @@ -import React, { Component, Fragment } from 'react'; -import PropTypes from 'prop-types'; -import { intlShape } from 'react-intl'; -import { PAGINATION_VIEW, PaginationRow } from 'patternfly-react'; -import { DataTable, TABLE_SORT_DIRECTION, ROW_ACTION_ALIGN } from '@entando/datatable'; -import paginatorMessages from 'ui/common/paginatorMessages'; - -const RadioButtonTableSelect = React.forwardRef((props, ref) => { - const defaultRef = React.useRef(); - const resolvedRef = ref || defaultRef; - - return ( - - - - ); -}); - -class ContentList extends Component { - constructor(props) { - super(props); - // enables our custom header formatters extensions to reactabular - this.onSort = this.onSort.bind(this); - this.onPerPageSelect = this.onPerPageSelect.bind(this); - this.markSelectedContents = this.markSelectedContents.bind(this); - this.handleRowSelect = this.handleRowSelect.bind(this); - } - - onPerPageSelect(eventKey) { - const { onFilteredSearch } = this.props; - const newPagination = { - page: 1, - pageSize: eventKey, - }; - onFilteredSearch(null, newPagination); - } - - onPageChange(newPage) { - const { - lastPage, pageSize, onFilteredSearch, - } = this.props; - if (newPage < 1 || newPage > lastPage) return 0; - const newPagination = { - page: newPage, - pageSize, - }; - return onFilteredSearch(null, newPagination); - } - - onSort(attribute, direction) { - const { onFilteredSearch, onSetSort, pageSize } = this.props; - const updatedSortingColumns = { attribute, direction }; - const newPagination = { page: 1, pageSize }; - onSetSort(updatedSortingColumns); - onFilteredSearch( - null, - newPagination, - { attribute, direction: direction.toUpperCase() }, - ); - } - - handleRowSelect(event) { - const { onContentSelect } = this.props; - onContentSelect(event.target.value); - } - - showingColumns() { - const { - activeColumns, availableColumns, intl, - } = this.props; - - const currentActiveColumns = [...activeColumns]; - const allColumns = availableColumns.map(column => column.code); - return currentActiveColumns - .filter(ac => allColumns.includes(ac)) - .map((code) => { - let columnFormat = { - Header: intl.formatMessage({ id: `cms.contents.${code}` }), - }; - switch (code) { - case 'description': - columnFormat = { - ...columnFormat, - cellAttributes: { - className: 'Contents__name-td', - style: { textOverflow: 'ellipsis' }, - }, - }; - break; - case 'created': - case 'lastModified': - columnFormat = { - ...columnFormat, - Cell: ({ value }) => new Date(value).toLocaleString(), - }; - break; - case 'typeCode': - columnFormat = { - ...columnFormat, - Cell: ({ row: { original: content } }) => content.typeDescription, - }; - break; - default: - break; - } - return { - accessor: code, - ...columnFormat, - }; - }); - } - - markSelectedContents() { - const { contents, selectedRows } = this.props; - return contents.map(c => ( - selectedRows.includes(c.id) ? Object.assign({}, c, { selected: true }) : c - )); - } - - render() { - const { - intl, totalItems, page, pageSize, perPageOptions, selectedContent, - lastPage, sortingColumns, activeColumns, onSetCurrentColumnsShow, - } = this.props; - const columns = this.showingColumns(); - const itemsStart = totalItems === 0 ? 0 : ((page - 1) * pageSize) + 1; - const itemsEnd = Math.min(page * pageSize, totalItems); - const pagination = { - page, - perPage: pageSize, - perPageOptions, - }; - const contents = this.markSelectedContents(); - - const messages = Object.keys(paginatorMessages).reduce((acc, curr) => ( - { ...acc, [curr]: intl.formatMessage(paginatorMessages[curr]) } - ), {}); - - const rowAction = { - Header: intl.formatMessage({ id: 'cms.contents.select' }), - cellAttributes: { - className: 'text-center', - }, - Cell: ({ original: content }) => ( - - ), - }; - - return ( -
    -
    - - this.onPageChange(1)} - onPreviousPage={() => this.onPageChange(page - 1)} - onPageInput={this.onPageInput} - onNextPage={() => this.onPageChange(page + 1)} - onLastPage={() => this.onPageChange(lastPage)} - messages={messages} - /> -
    -
    - ); - } -} - -ContentList.propTypes = { - intl: intlShape.isRequired, - activeColumns: PropTypes.arrayOf(PropTypes.string).isRequired, - availableColumns: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - contents: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - page: PropTypes.number.isRequired, - lastPage: PropTypes.number.isRequired, - pageSize: PropTypes.number.isRequired, - onFilteredSearch: PropTypes.func.isRequired, - totalItems: PropTypes.number.isRequired, - perPageOptions: PropTypes.arrayOf(PropTypes.number), - sortingColumns: PropTypes.shape({ - attribute: PropTypes.string, - direction: PropTypes.oneOf([TABLE_SORT_DIRECTION.ASC, TABLE_SORT_DIRECTION.DESC]), - }).isRequired, - onSetSort: PropTypes.func.isRequired, - onSetCurrentColumnsShow: PropTypes.func, - selectedRows: PropTypes.arrayOf(PropTypes.string).isRequired, - onContentSelect: PropTypes.func.isRequired, - selectedContent: PropTypes.string.isRequired, -}; - -ContentList.defaultProps = { - perPageOptions: [5, 10, 15, 25, 50], - onSetCurrentColumnsShow: () => {}, -}; - -export default ContentList; diff --git a/src/ui/common/content/ContentSearch.js b/src/ui/common/content/ContentSearch.js deleted file mode 100644 index 27a207545..000000000 --- a/src/ui/common/content/ContentSearch.js +++ /dev/null @@ -1,150 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage, intlShape, defineMessages } from 'react-intl'; -import { Filter, FormControl, Col, Button } from 'patternfly-react'; -import FormLabel from 'ui/common/form/FormLabel'; -import RenderSelectInput from 'ui/common/form/RenderSelectInput'; - -const messages = defineMessages({ - searchContent: { - id: 'cms.contents.quickSearchPlaceHolder', - defaultValue: 'Search Content', - }, - code: { - id: 'cms.label.code', - defaultValue: 'Code', - }, - name: { - id: 'cms.label.name', - defaultValue: 'Name', - }, -}); - -class ContentSearch extends Component { - constructor(props) { - super(props); - this.state = { - showAdvancedFilters: false, - }; - } - - onChangeQuickFilter(e) { - const { currentQuickFilter, onSetQuickFilter } = this.props; - currentQuickFilter.id = e.id; - currentQuickFilter.title = e.title; - onSetQuickFilter(currentQuickFilter); - } - - onChangeQuickFilterSearchText(e) { - e.preventDefault(); - const { currentQuickFilter, onSetQuickFilter } = this.props; - currentQuickFilter.value = e.target.value; - onSetQuickFilter(currentQuickFilter); - } - - onValueKeyPress(keyEvent) { - const { currentQuickFilter, onAdvancedFilterSearch } = this.props; - const { value: currentValue } = currentQuickFilter; - - if (keyEvent.key === 'Enter' && currentValue && currentValue.length > 0) { - keyEvent.stopPropagation(); - keyEvent.preventDefault(); - onAdvancedFilterSearch(); - } - } - - onToggleAdvancedFilters() { - const { showAdvancedFilters } = this.state; - this.setState({ - showAdvancedFilters: !showAdvancedFilters, - }); - } - - - render() { - const { - currentQuickFilter, intl, contentTypes, - onSetContentType, onAdvancedFilterSearch, - } = this.props; - - const QUICK_FILTERS = [ - { - id: 'description', - title: intl.formatMessage(messages.name), - filterType: 'text', - }, - { - id: 'id', - title: intl.formatMessage(messages.code), - filterType: 'text', - }, - ]; - - // WORKAROUND to prevent showing untranslated info coming from state at first render - const localizedCurrentQuickFilter = currentQuickFilter.title ? currentQuickFilter - : QUICK_FILTERS.filter(quickFilter => quickFilter.id === currentQuickFilter.id)[0]; - - return ( -
    - - - this.onChangeQuickFilter(e)} - /> - - - this.onChangeQuickFilterSearchText(e)} - onKeyPress={e => this.onValueKeyPress(e)} - /> - - -
    - } - alignClass="text-right" - options={contentTypes} - optionValue="code" - optionDisplayName="name" - defaultOptionId="cms.contents.selectContentType" - input={{ onChange: e => onSetContentType(e.target.value) }} - /> -
    - - - -
    - ); - } -} - -ContentSearch.propTypes = { - intl: intlShape.isRequired, - currentQuickFilter: PropTypes.shape({ - id: PropTypes.string, - title: PropTypes.string, - value: PropTypes.string, - filterType: PropTypes.string, - }).isRequired, - onSetQuickFilter: PropTypes.func.isRequired, - contentTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - onSetContentType: PropTypes.func.isRequired, - onAdvancedFilterSearch: PropTypes.func.isRequired, -}; - -export default ContentSearch; diff --git a/src/ui/common/content/Contents.js b/src/ui/common/content/Contents.js deleted file mode 100644 index 1699bda10..000000000 --- a/src/ui/common/content/Contents.js +++ /dev/null @@ -1,143 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { intlShape, defineMessages } from 'react-intl'; -import ContentSearch from 'ui/common/content/ContentSearch'; -import ContentList from 'ui/common/content/ContentList'; - -const messages = defineMessages({ - description: { - id: 'cms.contents.description', - defaultMessage: 'Name', - }, - lastModified: { - id: 'cms.contents.lastModified', - defaultMessage: 'Last Edited', - }, - typeCode: { - id: 'cms.contents.typeCode', - defaultMessage: 'Type', - }, - created: { - id: 'cms.contents.created', - defaultMessage: 'Created date', - }, - downloadButton: { - id: 'cms.contents.downloadAs', - defaultMessage: 'Download As', - }, - addContent: { - id: 'cms.contents.addContent', - defaultMessage: 'Add Content', - }, - columns: { - id: 'cms.contents.columns', - defaultMessage: 'Columns', - }, - selectedContents: { - id: 'cms.contents.selectedContents', - defaultMessage: 'You have selected {number} content(s), you can', - }, -}); - -const AVAILABLE_COLUMN_CODES = [ - 'description', 'lastModified', - 'typeCode', 'created', -]; - -class Contents extends Component { - constructor(props) { - super(props); - this.onSortChanged = this.onSortChanged.bind(this); - } - - componentDidMount() { - const { onDidMount } = this.props; - onDidMount(); - } - - onSortChanged(sortParams) { - const { currentAuthorShow, currentStatusShow, onSetSort } = this.props; - onSetSort({ ...sortParams, group: `${currentAuthorShow}_${currentStatusShow}` }); - } - - render() { - const { - page, totalItems, pageSize, contents, lastPage, currentQuickFilter, - onSetQuickFilter, onFilteredSearch, intl, onSetCurrentColumnsShow, - contentTypes, currentColumnsShow, onSetContentType, sortingColumns, - selectedRows, onAdvancedFilterSearch, onContentSelect, - selectedContent, - } = this.props; - - const availableColumns = AVAILABLE_COLUMN_CODES.map(code => ({ - name: intl.formatMessage(messages[code]), - code, - })); - - return ( -
    - -
    - -
    -
    - ); - } -} - -Contents.propTypes = { - intl: intlShape.isRequired, - page: PropTypes.number.isRequired, - lastPage: PropTypes.number.isRequired, - totalItems: PropTypes.number.isRequired, - pageSize: PropTypes.number.isRequired, - onDidMount: PropTypes.func.isRequired, - currentQuickFilter: PropTypes.shape({}).isRequired, - onSetQuickFilter: PropTypes.func.isRequired, - onFilteredSearch: PropTypes.func.isRequired, - contents: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - contentTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - currentAuthorShow: PropTypes.string.isRequired, - currentStatusShow: PropTypes.string.isRequired, - currentColumnsShow: PropTypes.arrayOf(PropTypes.string), - onSetCurrentColumnsShow: PropTypes.func, - onSetContentType: PropTypes.func.isRequired, - sortingColumns: PropTypes.shape({}).isRequired, - onSetSort: PropTypes.func.isRequired, - selectedRows: PropTypes.arrayOf(PropTypes.string).isRequired, - onAdvancedFilterSearch: PropTypes.func.isRequired, - onContentSelect: PropTypes.func.isRequired, - selectedContent: PropTypes.string, -}; - -Contents.defaultProps = { - currentColumnsShow: ['description', 'typeCode', 'lastModified', 'created'], - onSetCurrentColumnsShow: () => {}, - selectedContent: '', -}; - -export default Contents; diff --git a/src/ui/common/content/ContentsContainer.js b/src/ui/common/content/ContentsContainer.js deleted file mode 100644 index 40036fabd..000000000 --- a/src/ui/common/content/ContentsContainer.js +++ /dev/null @@ -1,87 +0,0 @@ -import { connect } from 'react-redux'; -import { injectIntl } from 'react-intl'; -import { withRouter } from 'react-router-dom'; -import { - setQuickFilter, fetchContentsPaged, setContentType, setSort, resetAuthorStatus, - checkStatus, -} from 'state/contents/actions'; -import { fetchCategoryTree } from 'state/categories/actions'; -import { fetchContentTypeListPaged } from 'state/content-type/actions'; -import { - getContents, getCurrentQuickFilter, getFilteringCategories, - getStatusChecked, getAccessChecked, getAuthorChecked, getCurrentAuthorShow, - getCurrentStatusShow, getSortingColumns, - getSelectedRows, -} from 'state/contents/selectors'; -import { getPagination } from 'state/pagination/selectors'; -import { setColumnOrder } from 'state/table-column-order/actions'; -import { getColumnOrder } from 'state/table-column-order/selectors'; -import { NAMESPACE_CONTENTS } from 'state/pagination/const'; -import { getContentTypeList } from 'state/content-type/selectors'; -import { getLoading } from 'state/loading/selectors'; -import { getGroupsList } from 'state/groups/selectors'; -import { getLocale } from 'state/locale/selectors'; -import { getUsername } from '@entando/apimanager'; -import Contents from 'ui/common/content/Contents'; - -export const mapStateToProps = (state, ownProps) => { - const { - page, lastPage, totalItems, pageSize, - } = getPagination(state, NAMESPACE_CONTENTS); - const { ownerGroup } = ownProps; - const currentAuthorShow = getCurrentAuthorShow(state); - const currentStatusShow = getCurrentStatusShow(state); - const sortingColumns = getSortingColumns(state, `${currentAuthorShow}_${currentStatusShow}`); - return ({ - loading: getLoading(state).contents, - language: getLocale(state), - contents: getContents(state), - currentQuickFilter: getCurrentQuickFilter(state), - groups: getGroupsList(state), - contentTypes: getContentTypeList(state), - filteringCategories: getFilteringCategories(state), - statusChecked: getStatusChecked(state), - accessChecked: getAccessChecked(state), - authorChecked: getAuthorChecked(state), - currentAuthorShow, - currentStatusShow, - currentColumnsShow: getColumnOrder(state, 'contentListTable'), - page, - lastPage, - totalItems, - pageSize, - sortingColumns, - selectedRows: getSelectedRows(state), - currentUsername: getUsername(state), - ownerGroup, - }); -}; - -export const mapDispatchToProps = (dispatch, { ownerGroup, joinGroups }) => ({ - onDidMount: () => { - dispatch(checkStatus('published')); - dispatch(fetchContentsPaged({ status: '&status=published', ownerGroup, joinGroups })); - dispatch(fetchCategoryTree()); - dispatch(fetchContentTypeListPaged({ page: 1, pageSize: 0 })); - }, - onSetQuickFilter: filter => dispatch(setQuickFilter(filter)), - onFilteredSearch: (params, page, sort) => ( - dispatch(fetchContentsPaged({ - page, sort, status: '&status=published', ownerGroup, joinGroups, - })) - ), - onAdvancedFilterSearch: () => { - dispatch(resetAuthorStatus()); - dispatch(fetchContentsPaged({ status: '&status=published', ownerGroup, joinGroups })); - }, - onSetCurrentColumnsShow: columnOrder => dispatch(setColumnOrder(columnOrder, 'contentListTable')), - onSetContentType: contentType => dispatch(setContentType(contentType)), - onSetSort: sort => dispatch(setSort(sort)), -}); - -const ContentsContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(Contents); - -export default withRouter(injectIntl(ContentsContainer)); diff --git a/src/ui/common/contenttype-attributes/AttributeCheckIcon.js b/src/ui/common/contenttype-attributes/AttributeCheckIcon.js deleted file mode 100644 index 384ff343f..000000000 --- a/src/ui/common/contenttype-attributes/AttributeCheckIcon.js +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; - -const AttributeCheckIcon = ({ isChecked, title }) => ( - -); - -AttributeCheckIcon.propTypes = { - isChecked: PropTypes.bool.isRequired, - title: PropTypes.string, -}; - -AttributeCheckIcon.defaultProps = { - title: '', -}; - -export default AttributeCheckIcon; diff --git a/src/ui/common/contenttype-attributes/AttributeEnumMapSettings.js b/src/ui/common/contenttype-attributes/AttributeEnumMapSettings.js deleted file mode 100644 index ddbf3cf8a..000000000 --- a/src/ui/common/contenttype-attributes/AttributeEnumMapSettings.js +++ /dev/null @@ -1,51 +0,0 @@ -import React from 'react'; -import { FormattedMessage, defineMessages, injectIntl, intlShape } from 'react-intl'; -import { Row, Col } from 'patternfly-react'; -import { Field } from 'redux-form'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; -import { required } from '@entando/utils'; - -export const elements = value => (value && !/^([\w\s#/-]+=[\w\s#/-]+)([^\w\s#/-]{1}([\w\s#/-]+=[\w\s#/-]+)*)*$/i.test(value) ? ( - -) : ( - undefined -)); - -const AttributeEnumEnumMapSettings = ({ intl }) => { - const msgs = defineMessages({ - enumStaticItemsMapHelp: { - id: 'cms.contenttype.enumeratorStaticItemsMap.help', - defaultMessage: 'Help', - }, - }); - - return ( - - -
    - - - - } - validate={[required, elements]} - placeholder={intl.formatMessage(msgs.enumStaticItemsMapHelp)} - /> - } - /> -
    - -
    - ); -}; -AttributeEnumEnumMapSettings.propTypes = { - intl: intlShape.isRequired, -}; - -export default injectIntl(AttributeEnumEnumMapSettings); diff --git a/src/ui/common/contenttype-attributes/AttributeEnumSettings.js b/src/ui/common/contenttype-attributes/AttributeEnumSettings.js deleted file mode 100644 index 1f367683a..000000000 --- a/src/ui/common/contenttype-attributes/AttributeEnumSettings.js +++ /dev/null @@ -1,52 +0,0 @@ -import React from 'react'; -import { FormattedMessage, defineMessages, injectIntl, intlShape } from 'react-intl'; -import { Row, Col } from 'patternfly-react'; -import { Field } from 'redux-form'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; -import { required } from '@entando/utils'; - -export const element = value => (value && !/^([\w\s#/-]+)([^\w\s#/-]{1}([\w\s#/-]+)*)*$/i.test(value) ? ( - -) : ( - undefined -)); - -const AttributeEnumSettings = ({ intl }) => { - const msgs = defineMessages({ - enumStaticItemsHelp: { - id: 'cms.contenttype.enumeratorStaticItems.help', - defaultMessage: 'Help', - }, - }); - - return ( - - -
    - - - - } - placeholder={intl.formatMessage(msgs.enumStaticItemsHelp)} - validate={[required, element]} - /> - } - /> -
    - -
    - ); -}; - -AttributeEnumSettings.propTypes = { - intl: intlShape.isRequired, -}; - -export default injectIntl(AttributeEnumSettings); diff --git a/src/ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings.js b/src/ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings.js deleted file mode 100644 index 614ba2b3c..000000000 --- a/src/ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings.js +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react'; -import { Field } from 'redux-form'; -import { FormattedMessage } from 'react-intl'; -import { Row, Col } from 'patternfly-react'; -import { isNumber } from '@entando/utils'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; - -const AttributeHypeLongMonoTextSettings = () => ( - - -
    - - - - } - validate={[isNumber]} - /> - } - validate={[isNumber]} - /> - } - /> -
    - -
    -); - -export default AttributeHypeLongMonoTextSettings; diff --git a/src/ui/common/contenttype-attributes/AttributeInfo.js b/src/ui/common/contenttype-attributes/AttributeInfo.js deleted file mode 100644 index 0d50daf59..000000000 --- a/src/ui/common/contenttype-attributes/AttributeInfo.js +++ /dev/null @@ -1,128 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Field } from 'redux-form'; -import { isUndefined } from 'lodash'; -import { FormattedMessage } from 'react-intl'; -import { Row, Col, FormGroup } from 'patternfly-react'; -import { required, maxLength } from '@entando/utils'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; -import SwitchRenderer from 'ui/common/form/SwitchRenderer'; -import { MODE_EDIT, MODE_ADD } from 'state/content-type/const'; - -const maxLength10 = maxLength(10); -const maxLength50 = maxLength(50); - -const AttributeInfo = ({ - isSearchable, isIndexable, mode, languages, -}) => { - const renderSearchable = () => { - const html = ( - - - - - - - ); - return isSearchable ? html : null; - }; - - const renderIndexable = () => { - const html = ( - - - - - - - ); - return isIndexable ? html : null; - }; - - const normalizedLanguages = languages ? languages.map(lang => lang.code) : []; - const renderNameFields = !isUndefined(normalizedLanguages) ? normalizedLanguages - .map(langCode => ( - - )} - validate={[maxLength50]} - /> - )) : null; - - return ( - - -
    - - -
    - * -
    -
    - } - disabled - /> - -)} - validate={[required, maxLength10]} - disabled={mode === MODE_EDIT} - /> - {renderNameFields} - - - - - - - {renderSearchable()} - {renderIndexable()} -
    - -
    - ); -}; - -AttributeInfo.propTypes = { - isSearchable: PropTypes.bool, - isIndexable: PropTypes.bool, - mode: PropTypes.string, - languages: PropTypes.arrayOf(PropTypes.shape({})), -}; - -AttributeInfo.defaultProps = { - isSearchable: false, - isIndexable: false, - languages: [], -}; - -AttributeInfo.defaultProps = { - mode: MODE_ADD, -}; - -export default AttributeInfo; diff --git a/src/ui/common/contenttype-attributes/AttributeInfoComposite.js b/src/ui/common/contenttype-attributes/AttributeInfoComposite.js deleted file mode 100644 index 19c6e697c..000000000 --- a/src/ui/common/contenttype-attributes/AttributeInfoComposite.js +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react'; -import { Field } from 'redux-form'; -import { FormattedMessage } from 'react-intl'; -import { Row, Col } from 'patternfly-react'; - -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; - -const AttributeInfoComposite = () => ( - - -
    - - -
    - * -
    -
    - } - disabled - /> -
    - -
    -); - -export default AttributeInfoComposite; diff --git a/src/ui/common/contenttype-attributes/AttributeListTable.js b/src/ui/common/contenttype-attributes/AttributeListTable.js deleted file mode 100644 index 33e90b42d..000000000 --- a/src/ui/common/contenttype-attributes/AttributeListTable.js +++ /dev/null @@ -1,86 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { FieldArray } from 'redux-form'; -import { Col } from 'patternfly-react'; -import AttributeListTableActions from 'ui/common/contenttype-attributes/AttributeListTableActions'; - -const AttributeListTable = ({ - attributes, - onClickDelete, - onMoveUp, - onMoveDown, - entityCode, - routeToEdit, - locale, -}) => { - const renderTable = () => ( - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - -
    - - ); - - return
    {attributes.length > 0 ? renderTable() : null}
    ; -}; - -AttributeListTable.propTypes = { - attributes: PropTypes.arrayOf(PropTypes.shape({})), - onClickDelete: PropTypes.func, - onMoveUp: PropTypes.func, - onMoveDown: PropTypes.func, - entityCode: PropTypes.string, - routeToEdit: PropTypes.string, - locale: PropTypes.string, -}; - -AttributeListTable.defaultProps = { - attributes: [], - onClickDelete: null, - onMoveUp: null, - onMoveDown: null, - entityCode: '', - routeToEdit: '', - locale: '', -}; - -export default AttributeListTable; diff --git a/src/ui/common/contenttype-attributes/AttributeListTableActions.js b/src/ui/common/contenttype-attributes/AttributeListTableActions.js deleted file mode 100644 index ec96040d0..000000000 --- a/src/ui/common/contenttype-attributes/AttributeListTableActions.js +++ /dev/null @@ -1,121 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import _ from 'lodash'; -import { DropdownKebab, MenuItem } from 'patternfly-react'; -import { routeConverter } from '@entando/utils'; -import { LinkMenuItem } from '@entando/menu'; -import AttributeCheckIcon from 'ui/common/contenttype-attributes/AttributeCheckIcon'; -import { TYPE_LIST, TYPE_MONOLIST } from 'state/content-type/const'; - -const renderRoles = (roles) => { - if (roles.length > 0) { - return ( -
      - {roles.map(role => ( -
    • {role.code} - {role.descr}
    • - ))} -
    - ); - } - return ; -}; - -const AttributeListTableActions = ({ - fields, - attributes, - onClickDelete, - onMoveUp, - onMoveDown, - routeToEdit, - entityCode, - locale, -}) => attributes.map((attribute, index) => { - const isMovableUp = index > 0; - const isMovableDown = index < attributes.length - 1; - const { type, nestedAttribute } = attribute; - const { names = {} } = attribute; - const localizedName = _.isObject(names) ? (names[locale] || '') : names; - return ( - - {attribute.code} - {localizedName} - - {type === TYPE_LIST || type === TYPE_MONOLIST ? `${type}: ${nestedAttribute.type}` : type} - - {renderRoles(attribute.roles)} - - - - - - - - -
    - - } - className="ContTypeAttributeListMenuAction__menu-item-edit" - /> - {isMovableUp ? ( - { - onMoveUp(entityCode, attribute.code, index); - fields.move(index, index - 1); - }} - > - - - ) : null} - {isMovableDown ? ( - { - onMoveDown(entityCode, attribute.code, index); - fields.move(index, index + 1); - }} - > - - - ) : null} - { - fields.remove(index); - onClickDelete(attribute.code); - }} - > - - - -
    - - - ); -}); - -AttributeListTableActions.propTypes = { - attributes: PropTypes.arrayOf(PropTypes.shape({})), - onClickDelete: PropTypes.func, - onMoveUp: PropTypes.func, - onMoveDown: PropTypes.func, - entityCode: PropTypes.string, - routeToEdit: PropTypes.string, - locale: PropTypes.string, -}; - -AttributeListTableActions.defaultProps = { - attributes: [], - onClickDelete: null, - onMoveUp: null, - onMoveDown: null, - entityCode: '', - routeToEdit: '', - locale: '', -}; - -export default AttributeListTableActions; diff --git a/src/ui/common/contenttype-attributes/AttributeListTableComposite.js b/src/ui/common/contenttype-attributes/AttributeListTableComposite.js deleted file mode 100644 index dd031c74b..000000000 --- a/src/ui/common/contenttype-attributes/AttributeListTableComposite.js +++ /dev/null @@ -1,167 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { Field, FieldArray } from 'redux-form'; -import { InputGroup, Button, Col, DropdownKebab, MenuItem } from 'patternfly-react'; -import RenderSelectInput from 'ui/common/form/RenderSelectInput'; -import FormLabel from 'ui/common/form/FormLabel'; -import AttributeCheckIcon from 'ui/common/contenttype-attributes/AttributeCheckIcon'; - -import { TYPE_COMPOSITE } from 'state/content-type/const'; - -const AttributeListTableComposite = (props) => { - const { - compositeAttributes, - attributesList, - onAddAttribute, - onClickDelete, - onMove, - invalid, - submitting, - isMonolistCompositeType, - } = props; - const name = isMonolistCompositeType - ? 'nestedAttribute.compositeAttributes' - : 'compositeAttributes'; - const selectOptions = attributesList - .filter(f => f !== TYPE_COMPOSITE) - .map(item => ({ - value: item, - text: item, - })); - - const renderSelectOption = () => ( -
    - - - - - } - name="type" - /> - - - - -
    - ); - - const renderAttributes = ({ fields }) => compositeAttributes.map((attribute, index) => { - const isMovableUp = index > 0; - const isMovableDown = index < compositeAttributes.length - 1; - return ( - - {attribute.code} - {attribute.type} - - - - -
    - - {isMovableUp ? ( - { - fields.move(index - 1, index); - onMove(index, index - 1, isMonolistCompositeType); - }} - > - - - ) : null} - {isMovableDown ? ( - { - fields.move(index, index + 1); - onMove(index, index + 1, isMonolistCompositeType); - }} - > - - - ) : null} - { - fields.remove(index); - onClickDelete(attribute.code, isMonolistCompositeType); - }} - > - - - -
    - - - ); - }); - - const renderTable = () => ( - - - - - - - - - - - - - -
    - - - - - - - -
    - - ); - - return ( -
    - {renderSelectOption()} - {compositeAttributes.length > 0 ? renderTable() : null} -
    - ); -}; - -AttributeListTableComposite.propTypes = { - attributesList: PropTypes.arrayOf(PropTypes.string).isRequired, - compositeAttributes: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - onAddAttribute: PropTypes.func.isRequired, - onClickDelete: PropTypes.func.isRequired, - onMove: PropTypes.func.isRequired, - invalid: PropTypes.bool, - submitting: PropTypes.bool, - isMonolistCompositeType: PropTypes.bool, -}; - -AttributeListTableComposite.defaultProps = { - invalid: false, - submitting: false, - isMonolistCompositeType: false, -}; - -export default AttributeListTableComposite; diff --git a/src/ui/common/contenttype-attributes/AttributeMonoListMonoSettings.js b/src/ui/common/contenttype-attributes/AttributeMonoListMonoSettings.js deleted file mode 100644 index 25450489b..000000000 --- a/src/ui/common/contenttype-attributes/AttributeMonoListMonoSettings.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { Row, Col } from 'patternfly-react'; -import { required } from '@entando/utils'; -import { Field, FormSection } from 'redux-form'; - -import RenderSelectInput from 'ui/common/form/RenderSelectInput'; -import FormLabel from 'ui/common/form/FormLabel'; - -const AttributeMonoListMonoSettings = ({ attributesList }) => { - const selectAttribute = attributesList.map(item => ({ - value: item, - text: item, - })); - - return ( - - -
    - - - - - } - name="type" - validate={[required]} - /> - -
    - -
    - ); -}; - -AttributeMonoListMonoSettings.propTypes = { - attributesList: PropTypes.arrayOf(PropTypes.string).isRequired, -}; - -export default AttributeMonoListMonoSettings; diff --git a/src/ui/common/contenttype-attributes/AttributeOgnlValidation.js b/src/ui/common/contenttype-attributes/AttributeOgnlValidation.js deleted file mode 100644 index a156c961a..000000000 --- a/src/ui/common/contenttype-attributes/AttributeOgnlValidation.js +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react'; -import { Field } from 'redux-form'; -import { FormattedMessage } from 'react-intl'; -import { Row, Col, FormGroup } from 'patternfly-react'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; -import SwitchRenderer from 'ui/common/form/SwitchRenderer'; - -const AttributeOgnlValidation = () => ( - - -
    - - - -

    - -

    -

    - -

    -

    - -

    -

    - -

    - } - /> - - - - - - - -

    - -

    - - } - /> - } - /> - } - /> - } - /> -
    - -
    -); - -export default AttributeOgnlValidation; diff --git a/src/ui/common/contenttype-attributes/AttributeRole.js b/src/ui/common/contenttype-attributes/AttributeRole.js deleted file mode 100644 index 027d67be5..000000000 --- a/src/ui/common/contenttype-attributes/AttributeRole.js +++ /dev/null @@ -1,100 +0,0 @@ -import React, { Component } from 'react'; -import { isEmpty } from 'lodash'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { Row, Col, FormGroup } from 'patternfly-react'; -import { FieldArray } from 'redux-form'; -import RoleSelectRenderer from 'ui/common/form/RoleSelectRenderer'; - -class AttributeRole extends Component { - componentDidMount() { - const { onDidMount, ...allprops } = this.props; - onDidMount(allprops); - } - - render() { - const { joinAllowedOptions, allowedRoles, allRoles } = this.props; - - const selectAllowedOptions = allowedRoles.map(item => ({ - value: item.code, - text: item.descr, - })); - - const allOptions = allRoles.map(item => ( - { - value: item.code, - text: item.descr, - } - )); - - const roleWrapper = () => { - if (isEmpty(allowedRoles) && isEmpty(joinAllowedOptions)) { - return ( - - - - - - ); - } - - const getAttributeRoleLabel = item => `${item.value} - ${item.text}`; - - return ( - - - - - - - ); - }; - - return ( - - -
    - - - - {roleWrapper()} -
    - -
    - ); - } -} - -AttributeRole.propTypes = { - onDidMount: PropTypes.func, - allowedRoles: PropTypes.arrayOf(PropTypes.shape({ - code: PropTypes.string, - descr: PropTypes.string, - })), - allRoles: PropTypes.arrayOf(PropTypes.shape({ - code: PropTypes.string, - descr: PropTypes.string, - })), - joinAllowedOptions: PropTypes.arrayOf(PropTypes.string), -}; - -AttributeRole.defaultProps = { - onDidMount: () => {}, - allowedRoles: [], - allRoles: [], - joinAllowedOptions: [], -}; - -export default AttributeRole; diff --git a/src/ui/common/contenttype-attributes/AttributesDateSettings.js b/src/ui/common/contenttype-attributes/AttributesDateSettings.js deleted file mode 100644 index ac6973dd7..000000000 --- a/src/ui/common/contenttype-attributes/AttributesDateSettings.js +++ /dev/null @@ -1,63 +0,0 @@ -import React, { useState } from 'react'; -import moment from 'moment'; -import { Field } from 'redux-form'; -import { FormattedMessage } from 'react-intl'; -import { Row, Col } from 'patternfly-react'; -import FormLabel from 'ui/common/form/FormLabel'; -import RenderDatePickerInput from 'ui/common/form/RenderDatePickerInput'; - -const AttributesDateSettings = () => { - const [fromDate, setFromDate] = useState(); - const [toDate, setToDate] = useState(); - const dateFormat = 'DD/MM/YYYY'; - return ( - - -
    - - - - } - onPickDate={date => setFromDate(moment(date, dateFormat))} - maxDate={toDate} - /> - -
    - -
    - - } - onPickDate={date => setToDate(moment(date, dateFormat))} - minDate={fromDate} - /> - -
    - -
    - - } - /> - -
    - -
    - -
    - -
    - ); -}; - -export default AttributesDateSettings; diff --git a/src/ui/common/contenttype-attributes/AttributesNumber.js b/src/ui/common/contenttype-attributes/AttributesNumber.js deleted file mode 100644 index a3abea166..000000000 --- a/src/ui/common/contenttype-attributes/AttributesNumber.js +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import { Field } from 'redux-form'; -import { FormattedMessage } from 'react-intl'; -import { Row, Col } from 'patternfly-react'; -import { isNumber } from '@entando/utils'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; - -const AttributesNumber = () => ( - - -
    - - - - } - validate={[isNumber]} - /> - } - validate={[isNumber]} - /> - } - validate={[isNumber]} - /> -
    - -
    -); - -export default AttributesNumber; diff --git a/src/ui/common/form/ActiveLanguagesFields.js b/src/ui/common/form/ActiveLanguagesFields.js deleted file mode 100644 index 766c19850..000000000 --- a/src/ui/common/form/ActiveLanguagesFields.js +++ /dev/null @@ -1,78 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Field } from 'redux-form'; -import { Row, Col } from 'patternfly-react'; -import { required, maxLength } from '@entando/utils'; -import { FormattedMessage } from 'react-intl'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; - - -const maxLength70 = maxLength(70); - -const ActiveLanguagesFields = ({ - activeLanguages, defaultLanguage, onChangeDefaultTitle, -}) => { - const renderField = () => activeLanguages.map((language) => { - const titles = `titles.${language.code}`; - - const isDefault = language.code === defaultLanguage; - - - return ( - - - {isDefault ? `${language.code} *` : language.code} - - * - - } - placeholder={language.name} - className="form-control" - validate={[required, maxLength70]} - onChange={(ev) => { - if (isDefault && onChangeDefaultTitle) onChangeDefaultTitle(ev.currentTarget.value); - }} - /> - ); - }); - - return ( -
    - - -
    -
    -
    - {renderField()} -
    -
    -
    - -
    -
    - ); -}; - -ActiveLanguagesFields.propTypes = { - activeLanguages: PropTypes.arrayOf(PropTypes.shape({ - code: PropTypes.string, - name: PropTypes.string, - isActive: PropTypes.bool, - isDefault: PropTypes.bool, - })), - defaultLanguage: PropTypes.string, - onChangeDefaultTitle: PropTypes.func, -}; - -ActiveLanguagesFields.defaultProps = { - activeLanguages: [], - defaultLanguage: '', - onChangeDefaultTitle: null, -}; - -export default ActiveLanguagesFields; diff --git a/src/ui/common/form/AddContentTypeAttributeForm.js b/src/ui/common/form/AddContentTypeAttributeForm.js deleted file mode 100644 index 1492fd008..000000000 --- a/src/ui/common/form/AddContentTypeAttributeForm.js +++ /dev/null @@ -1,266 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { reduxForm, FormSection } from 'redux-form'; -import { FormattedMessage, intlShape } from 'react-intl'; -import { Button, Row, Col } from 'patternfly-react'; -import AttributeInfo from 'ui/common/contenttype-attributes/AttributeInfo'; -import AttributeInfoComposite from 'ui/common/contenttype-attributes/AttributeInfoComposite'; -import AttributeRole from 'ui/common/contenttype-attributes/AttributeRole'; -import AttributeOgnlValidation from 'ui/common/contenttype-attributes/AttributeOgnlValidation'; -import AttributeHypeLongMonoTextSettings from 'ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings'; -import AttributeEnumSettings from 'ui/common/contenttype-attributes/AttributeEnumSettings'; -import AttributeEnumMapSettings from 'ui/common/contenttype-attributes/AttributeEnumMapSettings'; -import AttributeMonoListMonoSettings from 'ui/common/contenttype-attributes/AttributeMonoListMonoSettings'; -import AttributesNumber from 'ui/common/contenttype-attributes/AttributesNumber'; -import AttributesDateSettings from 'ui/common/contenttype-attributes/AttributesDateSettings'; -import AttributeListTableComposite from 'ui/common/contenttype-attributes/AttributeListTableComposite'; -import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer'; - -import { - MODE_ADD_COMPOSITE, - MODE_EDIT_COMPOSITE, - MODE_ADD_ATTRIBUTE_COMPOSITE, - TYPE_COMPOSITE, - TYPE_BOOLEAN, - TYPE_CHECKBOX, - TYPE_DATE, - TYPE_ENUMERATOR, - TYPE_ENUMERATOR_MAP, - TYPE_MONOLIST, - TYPE_LIST, - TYPE_NUMBER, - TYPE_THREESTATE, - TYPE_TIMESTAMP, -} from 'state/content-type/const'; - -export class AttributeFormBody extends Component { - componentDidMount() { - const { onDidMount } = this.props; - onDidMount(); - } - - render() { - const { - selectedAttributeType, - contentTypeAttributeCode, - mode, - attributesList, - handleSubmit, - onCancel, - onSubmit, - allowedRoles, - invalid, - submitting, - intl, - onDiscard, - onSave, - dirty, - languages, - } = this.props; - const isComposite = mode === MODE_ADD_COMPOSITE; - const isEditComposite = mode === MODE_EDIT_COMPOSITE; - const isAddAttributeComposite = mode === MODE_ADD_ATTRIBUTE_COMPOSITE; - const labelsubmit = isEditComposite || isAddAttributeComposite ? 'cms.label.save' : 'cms.label.continue'; - - const renderAttributeInfo = () => (isComposite ? ( - - ) : ( - - )); - - const handleCancelClick = () => { - if (dirty) { - onCancel(); - } else { - onDiscard(mode); - } - }; - - const renderAttributeRole = () => (!isComposite ? : null); - - const renderSelectedAttribute = () => { - switch (selectedAttributeType.code) { - case TYPE_BOOLEAN: - return null; - case TYPE_CHECKBOX: - return null; - case TYPE_THREESTATE: - return null; - case TYPE_TIMESTAMP: - return null; - case TYPE_MONOLIST: - return ( - - ); - case TYPE_LIST: - return ( - - ); - case TYPE_NUMBER: - return ( - - - - ); - case TYPE_DATE: - return ( - - - - ); - case TYPE_ENUMERATOR: - return ( - - ); - case TYPE_ENUMERATOR_MAP: - return ( - - ); - case TYPE_COMPOSITE: { - return isComposite ? ( - - ) : null; - } - default: - return ( - - - - ); - } - }; - - const renderOgnlValidation = () => (!isComposite ? ( - - - - ) : null); - - return ( -
    onSubmit(values, allowedRoles, mode))} - className="form-horizontal" - > - - -
    - {renderAttributeInfo()} - {renderAttributeRole()} - {renderSelectedAttribute()} - {renderOgnlValidation()} -
    - -
    -
    - - - - - onDiscard(mode)} - /> - - -
    - ); - } -} - -AttributeFormBody.propTypes = { - intl: intlShape.isRequired, - onDidMount: PropTypes.func, - handleSubmit: PropTypes.func.isRequired, - onCancel: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - contentTypeAttributeCode: PropTypes.string, - invalid: PropTypes.bool, - submitting: PropTypes.bool, - initialValues: PropTypes.shape({ - type: PropTypes.string.isRequired, - }), - selectedAttributeType: PropTypes.shape({ - simple: PropTypes.bool, - searchableOptionSupported: PropTypes.bool, - indexableOptionSupported: PropTypes.bool, - textFilterSupported: PropTypes.bool, - dateFilterSupported: PropTypes.bool, - numberFilterSupported: PropTypes.bool, - enumeratorOptionsSupported: PropTypes.bool, - enumeratorMapOptionsSupported: PropTypes.bool, - listAttribute: PropTypes.bool, - enumeratorExtractorBeans: PropTypes.arrayOf(PropTypes.string), - enumeratorMapExtractorBeans: PropTypes.arrayOf(PropTypes.shape({})), - code: PropTypes.string, - }).isRequired, - validation: PropTypes.shape({ - minLength: PropTypes.string, - maxLength: PropTypes.string, - regex: PropTypes.string, - }), - allowedRoles: PropTypes.arrayOf(PropTypes.shape({ - code: PropTypes.string, - descr: PropTypes.string, - })), - mode: PropTypes.string.isRequired, - compositeAttributes: PropTypes.arrayOf(PropTypes.shape({})), - attributesList: PropTypes.arrayOf(PropTypes.string).isRequired, - onDiscard: PropTypes.func.isRequired, - onSave: PropTypes.func.isRequired, - dirty: PropTypes.bool, - languages: PropTypes.arrayOf(PropTypes.shape({})), -}; - -AttributeFormBody.defaultProps = { - onDidMount: () => {}, - invalid: false, - submitting: false, - contentTypeAttributeCode: '', - initialValues: {}, - validation: { - minLength: '', - maxLength: '', - regex: '', - }, - allowedRoles: [], - compositeAttributes: [], - dirty: false, - languages: [], -}; - -const AttributeForm = reduxForm({ - form: 'addAttribute', -})(AttributeFormBody); - -export default AttributeForm; diff --git a/src/ui/common/form/ContentTypeMonolistAttributeForm.js b/src/ui/common/form/ContentTypeMonolistAttributeForm.js deleted file mode 100644 index 8a650bbba..000000000 --- a/src/ui/common/form/ContentTypeMonolistAttributeForm.js +++ /dev/null @@ -1,250 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { reduxForm, FormSection, Field } from 'redux-form'; -import { FormattedMessage } from 'react-intl'; -import { Button, Row, Col, FormGroup, Alert } from 'patternfly-react'; -import AttributeOgnlValidation from 'ui/common/contenttype-attributes/AttributeOgnlValidation'; -import AttributeHypeLongMonoTextSettings from 'ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings'; -import AttributeEnumMapSettings from 'ui/common/contenttype-attributes/AttributeEnumMapSettings'; -import AttributesNumber from 'ui/common/contenttype-attributes/AttributesNumber'; -import AttributesDateSettings from 'ui/common/contenttype-attributes/AttributesDateSettings'; -import AttributeEnumSettings from 'ui/common/contenttype-attributes/AttributeEnumSettings'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import SwitchRenderer from 'ui/common/form/SwitchRenderer'; -import FormLabel from 'ui/common/form/FormLabel'; -import AttributeListTableComposite from 'ui/common/contenttype-attributes/AttributeListTableComposite'; -import AttributeInfoComposite from 'ui/common/contenttype-attributes/AttributeInfoComposite'; - -import { - TYPE_BOOLEAN, - TYPE_CHECKBOX, - TYPE_THREESTATE, - TYPE_NUMBER, - TYPE_DATE, - TYPE_ENUMERATOR, - TYPE_ENUMERATOR_MAP, - TYPE_TEXT, - TYPE_COMPOSITE, - TYPE_MONOLIST, - MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE, - TYPE_MONOTEXT, -} from 'state/content-type/const'; - -const NO_INFO_ATTRIBUTE = [TYPE_BOOLEAN, TYPE_CHECKBOX, TYPE_THREESTATE]; - -export class MonolistAttributeFormBody extends Component { - componentDidMount() { - const { onDidMount, ...allprops } = this.props; - onDidMount(allprops); - } - - componentDidUpdate(prevProps) { - const { type, onFetchNestedAttribute } = this.props; - if (type && type !== prevProps.type) { - onFetchNestedAttribute(this.props); - } - } - - render() { - const { - attributeCode, - selectedAttribute, - selectedAttributeType, - isIndexable, - type, - invalid, - submitting, - onSubmit, - mode, - attributesList, - onAddAttribute, - onClickDelete, - onMove, - compositeAttributes, - handleSubmit, - } = this.props; - const isMonoListComposite = mode === MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE; - const attributeType = isMonoListComposite ? TYPE_COMPOSITE : type; - - const renderIndexable = () => { - if (isIndexable) { - return ( - - - - - - - ); - } - return ''; - }; - - const renderAttributeInfo = () => { - if (isMonoListComposite) { - return ; - } - - return !NO_INFO_ATTRIBUTE.includes(type) ? ( -
    - - -
    - * -
    -
    - } - disabled - /> - {renderIndexable()} -
    - ) : null; - }; - - const renderSelectedAttribute = () => { - switch (attributeType) { - case TYPE_TEXT: - case TYPE_MONOTEXT: - return ( - - - - ); - case TYPE_NUMBER: - return ( - - - - ); - case TYPE_DATE: - return ( - - - - ); - case TYPE_ENUMERATOR: - return ( - - ); - case TYPE_ENUMERATOR_MAP: - return ( - - ); - case TYPE_COMPOSITE: { - return isMonoListComposite ? ( - - ) : null; - } - default: - return null; - } - }; - - const renderOgnlValidation = () => (!isMonoListComposite ? ( - - - - ) : null); - - return ( -
    - - - {type},  - -   - {attributeCode}  ({isMonoListComposite ? TYPE_MONOLIST : selectedAttributeType}). - -
    onSubmit(values, mode, selectedAttribute))} - className="form-horizontal" - > - - -
    - - {renderAttributeInfo()} - {renderSelectedAttribute()} - {renderOgnlValidation()} - -
    - -
    -
    - - - - - -
    -
    - ); - } -} - -MonolistAttributeFormBody.propTypes = { - onDidMount: PropTypes.func.isRequired, - handleSubmit: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - onAddAttribute: PropTypes.func, - onClickDelete: PropTypes.func, - onMove: PropTypes.func, - type: PropTypes.string, - attributeCode: PropTypes.string, - selectedAttribute: PropTypes.shape({}), - selectedAttributeType: PropTypes.string, - mode: PropTypes.string, - attributesList: PropTypes.arrayOf(PropTypes.string), - isIndexable: PropTypes.bool, - invalid: PropTypes.bool, - submitting: PropTypes.bool, - compositeAttributes: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - onFetchNestedAttribute: PropTypes.func, -}; - -MonolistAttributeFormBody.defaultProps = { - onAddAttribute: null, - onClickDelete: null, - onMove: null, - invalid: false, - submitting: false, - isIndexable: false, - type: '', - attributeCode: '', - selectedAttribute: {}, - selectedAttributeType: TYPE_MONOLIST, - mode: '', - attributesList: [], - onFetchNestedAttribute: () => {}, -}; - -const MonolistAttributeForm = reduxForm({ - form: 'monoListAttribute', -})(MonolistAttributeFormBody); - -export default MonolistAttributeForm; diff --git a/src/ui/common/form/DebouncedInput.js b/src/ui/common/form/DebouncedInput.js deleted file mode 100644 index b9c709247..000000000 --- a/src/ui/common/form/DebouncedInput.js +++ /dev/null @@ -1,45 +0,0 @@ -import React, { useState, useEffect, useCallback } from 'react'; -import PropTypes from 'prop-types'; -import { debounce } from 'lodash'; - -const DebouncedInput = ({ inputComponent: InputComponent, input, ...props }) => { - const { value: inputValue, onChange } = input; - - const [currValue, setCurrValue] = useState(inputValue); - - useEffect(() => { - setCurrValue(inputValue); - }, [inputValue]); - - const debouncedOnChange = useCallback(debounce((value) => { - onChange(value); - }, 500), []); - - const debouncedInput = { - ...input, - value: currValue, - onChange: (data) => { - let value = data; - if (data.target) { - data.persist(); - ({ value } = data.target); - } - setCurrValue(value); - debouncedOnChange(data); - }, - }; - - return ( - - ); -}; - -DebouncedInput.propTypes = { - inputComponent: PropTypes.elementType.isRequired, - input: PropTypes.shape({ - value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]), - onChange: PropTypes.func.isRequired, - }).isRequired, -}; - -export default DebouncedInput; diff --git a/src/ui/common/form/EditContentTypeAttributeForm.js b/src/ui/common/form/EditContentTypeAttributeForm.js deleted file mode 100644 index f10974578..000000000 --- a/src/ui/common/form/EditContentTypeAttributeForm.js +++ /dev/null @@ -1,282 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { reduxForm, FormSection } from 'redux-form'; -import { FormattedMessage, intlShape } from 'react-intl'; -import { Button, Row, Col, Alert } from 'patternfly-react'; -import AttributeInfo from 'ui/common/contenttype-attributes/AttributeInfo'; -import AttributeInfoComposite from 'ui/common/contenttype-attributes/AttributeInfoComposite'; -import AttributeRole from 'ui/common/contenttype-attributes/AttributeRole'; -import AttributeOgnlValidation from 'ui/common/contenttype-attributes/AttributeOgnlValidation'; -import AttributeHypeLongMonoTextSettings from 'ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings'; -import AttributeEnumSettings from 'ui/common/contenttype-attributes/AttributeEnumSettings'; -import AttributeEnumMapSettings from 'ui/common/contenttype-attributes/AttributeEnumMapSettings'; -import AttributeMonoListMonoSettings from 'ui/common/contenttype-attributes/AttributeMonoListMonoSettings'; -import AttributesNumber from 'ui/common/contenttype-attributes/AttributesNumber'; -import AttributesDateSettings from 'ui/common/contenttype-attributes/AttributesDateSettings'; -import AttributeListTableComposite from 'ui/common/contenttype-attributes/AttributeListTableComposite'; -import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer'; - -import { - MODE_ADD_COMPOSITE, - MODE_EDIT_COMPOSITE, - MODE_ADD_ATTRIBUTE_COMPOSITE, - MODE_EDIT, - TYPE_COMPOSITE, - TYPE_BOOLEAN, - TYPE_CHECKBOX, - TYPE_DATE, - TYPE_ENUMERATOR, - TYPE_ENUMERATOR_MAP, - TYPE_MONOLIST, - TYPE_LIST, - TYPE_NUMBER, - TYPE_THREESTATE, - TYPE_TIMESTAMP, -} from 'state/content-type/const'; - -export class EditContentTypeAttributeFormBody extends Component { - componentDidMount() { - const { onDidMount } = this.props; - onDidMount(this.props); - } - - render() { - const { - selectedAttributeType, - selectedAttributeTypeForAddComposite, - attributeCode, - mode, - nestedAttributeComposite, - isSearchable, - isIndexable, - attributesList, - onSubmit, - onCancel, - allowedRoles, - handleSubmit, - invalid, - submitting, - intl, - onDiscard, - onSave, - dirty, - languages, - } = this.props; - - const isComposite = mode === MODE_EDIT_COMPOSITE || mode === MODE_ADD_COMPOSITE; - const isModeAddAttributeComposite = mode === MODE_ADD_ATTRIBUTE_COMPOSITE; - const attributeType = isModeAddAttributeComposite - ? selectedAttributeTypeForAddComposite.code - : selectedAttributeType; - - const labelsubmit = !isComposite ? 'cms.label.continue' : 'cms.label.save'; - - const renderAttributeInfo = () => (isComposite ? ( - - ) : ( - - )); - - const handleCancelClick = () => { - if (dirty) { - onCancel(); - } else { - onDiscard(mode); - } - }; - - const renderSelectedAttribute = () => { - switch (attributeType) { - case TYPE_BOOLEAN: - return null; - case TYPE_CHECKBOX: - return null; - case TYPE_THREESTATE: - return null; - case TYPE_TIMESTAMP: - return null; - case TYPE_MONOLIST: - return isComposite ? ( - - ) : ( - - ); - case TYPE_LIST: - return ( - - ); - case TYPE_NUMBER: - return ( - - - - ); - case TYPE_DATE: - return ( - - - - ); - case TYPE_ENUMERATOR: - return ; - case TYPE_ENUMERATOR_MAP: - return ; - case TYPE_COMPOSITE: - return isComposite ? : null; - - default: - return ( - - - - ); - } - }; - - const renderAttributeRole = () => (!isComposite ? : null); - - const renderOgnlValidation = () => (!isComposite ? ( - - - - ) : null); - - const header = () => { - switch (selectedAttributeType) { - case TYPE_COMPOSITE: - return ( - - {attributeCode} - - ); - case TYPE_MONOLIST: - return mode === MODE_EDIT_COMPOSITE ? ( - - - {TYPE_COMPOSITE},  - -   - {isComposite ? attributeCode : nestedAttributeComposite}  ({TYPE_MONOLIST}) - - ) : null; - default: - return null; - } - }; - - return ( -
    onSubmit(values, allowedRoles, mode))} - className="EditContentTypeAttributeForm form-horizontal" - > - - {header()} - - - -
    - {renderAttributeInfo()} - {renderAttributeRole()} - {renderSelectedAttribute()} - {renderOgnlValidation()} -
    - -
    -
    - - - - - onDiscard(mode)} - /> - - -
    - ); - } -} - -EditContentTypeAttributeFormBody.propTypes = { - intl: intlShape.isRequired, - onDidMount: PropTypes.func, - handleSubmit: PropTypes.func.isRequired, - onCancel: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - contentTypeAttributeCode: PropTypes.string, - invalid: PropTypes.bool, - submitting: PropTypes.bool, - selectedAttributeType: PropTypes.string, - selectedAttributeTypeForAddComposite: PropTypes.PropTypes.shape({ - code: PropTypes.string, - }), - attributeCode: PropTypes.string.isRequired, - allowedRoles: PropTypes.arrayOf(PropTypes.shape({ - code: PropTypes.string, - descr: PropTypes.string, - })), - indexable: PropTypes.bool, - listFilter: PropTypes.bool, - mode: PropTypes.string.isRequired, - attributesList: PropTypes.arrayOf(PropTypes.string).isRequired, - nestedAttributeComposite: PropTypes.string.isRequired, - isSearchable: PropTypes.bool, - isIndexable: PropTypes.bool, - onDiscard: PropTypes.func.isRequired, - onSave: PropTypes.func.isRequired, - dirty: PropTypes.bool, - languages: PropTypes.arrayOf(PropTypes.shape({})), -}; - -EditContentTypeAttributeFormBody.defaultProps = { - onDidMount: () => {}, - invalid: false, - submitting: false, - contentTypeAttributeCode: '', - selectedAttributeType: '', - selectedAttributeTypeForAddComposite: '', - indexable: false, - listFilter: false, - allowedRoles: [], - isSearchable: false, - isIndexable: false, - dirty: false, - languages: [], -}; - -const EditContentTypeAttributeForm = reduxForm({ - form: 'attribute', -})(EditContentTypeAttributeFormBody); - -export default EditContentTypeAttributeForm; diff --git a/src/ui/common/form/HtmlCodeEditorRenderer.js b/src/ui/common/form/HtmlCodeEditorRenderer.js deleted file mode 100644 index 727b4bd0b..000000000 --- a/src/ui/common/form/HtmlCodeEditorRenderer.js +++ /dev/null @@ -1,57 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Col } from 'patternfly-react'; - -import LoadableCodeMirror from 'ui/common/form/LoadableCodeMirror'; - - -const HtmlCodeEditorRenderer = ({ - input, name, label, meta: { touched, error }, help, -}) => ( - -
    - - - input.onChange(value)} - onBlur={instance => input.onBlur(instance.doc.getValue())} - onFocus={instance => input.onFocus(instance.doc.getValue())} - options={{ - lineNumbers: true, - mode: 'htmlembedded', - styleActiveLine: true, - }} - /> - {touched && error &&
    {error}
    } - -
    - -); - -HtmlCodeEditorRenderer.propTypes = { - name: PropTypes.string, - label: PropTypes.node, - meta: PropTypes.shape({ - touched: PropTypes.bool, - error: PropTypes.string, - }), - help: PropTypes.node, - input: PropTypes.shape({ - onChange: PropTypes.func.isRequired, - onBlur: PropTypes.func.isRequired, - onFocus: PropTypes.func.isRequired, - value: PropTypes.string, - }).isRequired, -}; - -HtmlCodeEditorRenderer.defaultProps = { - name: '', - label: '', - meta: {}, - help: null, -}; -export default HtmlCodeEditorRenderer; diff --git a/src/ui/common/form/MultiSelectRenderer.js b/src/ui/common/form/MultiSelectRenderer.js deleted file mode 100644 index 6b2c2e6ed..000000000 --- a/src/ui/common/form/MultiSelectRenderer.js +++ /dev/null @@ -1,118 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { defineMessages, intlShape } from 'react-intl'; -import { InputGroup, Button, Label } from 'patternfly-react'; - -class MultiSelectRenderer extends Component { - constructor(props) { - super(props); - this.pushField = this.pushField.bind(this); - this.select = null; - } - - pushField() { - if (!this.select || !this.select.value) { - return; - } - const { selectedValues, fields } = this.props; - - if (this.select.value && !selectedValues.includes(this.select.value)) { - fields.push(this.select.value); - } - } - - render() { - const { - options, - selectedValues, - labelKey, - valueKey, - emptyOptionTextId, - intl, - fields, - } = this.props; - const filteredOptions = options - .filter(opt => !selectedValues.includes(opt[valueKey])) - .map(item => ( - - )); - const messages = defineMessages({ - emptyOption: { - id: 'cms.chooseAnOption', - defaultMessage: 'Choose Option', - }, - }); - - if (emptyOptionTextId) { - filteredOptions.unshift(( - - )); - } - - const renderedTags = selectedValues.map((value, i) => ( - - )); - - return ( -
    - - - - - - -
    - {renderedTags} -
    - ); - } -} - -MultiSelectRenderer.propTypes = { - fields: PropTypes.shape({ - push: PropTypes.func, - remove: PropTypes.func, - }).isRequired, - options: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - selectedValues: PropTypes.arrayOf(PropTypes.string), - valueKey: PropTypes.string, - labelKey: PropTypes.string, - emptyOptionTextId: PropTypes.string, - intl: intlShape, -}; - -MultiSelectRenderer.defaultProps = { - selectedValues: [], - valueKey: 'value', - labelKey: 'label', - emptyOptionTextId: '', - intl: {}, -}; - -export default MultiSelectRenderer; diff --git a/src/ui/common/form/RenderButton.js b/src/ui/common/form/RenderButton.js deleted file mode 100644 index ff96dbf43..000000000 --- a/src/ui/common/form/RenderButton.js +++ /dev/null @@ -1,69 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Col, ControlLabel, Button } from 'patternfly-react'; - -const RenderButton = ({ - meta: { touched, error }, - labelSize, - alignClass, - label, - help, - inputSize, - buttonContent, - onClick, - hasLabel, -}) => { - const containerClasses = touched && error ? 'form-group has-error' : 'form-group'; - - const errorBox = touched && error ? {error} : null; - - return ( -
    - {hasLabel && ( - - - {label} {help} - - - )} - - - {errorBox} - -
    - ); -}; - -RenderButton.propTypes = { - meta: PropTypes.shape({ - touched: PropTypes.bool, - error: PropTypes.shape({}), - }), - label: PropTypes.node, - labelSize: PropTypes.number, - alignClass: PropTypes.string, - help: PropTypes.node, - inputSize: PropTypes.number, - buttonContent: PropTypes.node.isRequired, - onClick: PropTypes.func.isRequired, - hasLabel: PropTypes.bool, -}; - -RenderButton.defaultProps = { - meta: { - touched: false, - error: {}, - }, - label: null, - labelSize: 2, - alignClass: 'text-right', - help: null, - inputSize: null, - hasLabel: true, -}; -export default RenderButton; diff --git a/src/ui/common/form/RenderCMSDateTimePickerInput.js b/src/ui/common/form/RenderCMSDateTimePickerInput.js deleted file mode 100644 index 836667a07..000000000 --- a/src/ui/common/form/RenderCMSDateTimePickerInput.js +++ /dev/null @@ -1,145 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { Row, Col } from 'patternfly-react'; -import { Field } from 'redux-form'; -import { FormattedMessage } from 'react-intl'; -import DatePicker from 'react-datepicker'; -import 'react-datepicker/dist/react-datepicker.css'; -import moment from 'moment'; -import { isNull, padStart } from 'lodash'; - -class RenderCMSDateTimePickerInput extends Component { - constructor(props) { - super(props); - this.handleChange = this.handleChange.bind(this); - } - - handleChange(date) { - const { dateFormat, input: { onChange: inputOnChange } } = this.props; - const value = !isNull(date) ? date.format(dateFormat) : ''; - inputOnChange(value); - } - - render() { - const { - input, name, label, help, locale, dateFormat, placeholder, - meta: { touched, error }, hoursList, minutesList, secondsList, - isClearable, hasLabel, - } = this.props; - const optionsHours = hoursList.map(item => padStart(item, 2, '0')); - const optionsMinutes = minutesList.map(item => padStart(item, 2, '0')); - const optionsSeconds = secondsList.map(item => padStart(item, 2, '0')); - - return ( -
    - {hasLabel && ( - - )} - - - - - - - - { optionsHours.map(value => ()) } - - - - - - - - { optionsMinutes.map(value => ()) } - - - - - - - - { optionsSeconds.map(value => ()) } - - - - - - - -
    - {touched ? error : ''} -
    - - -
    - ); - } -} - -RenderCMSDateTimePickerInput.propTypes = { - input: PropTypes.shape({ - onChange: PropTypes.func.isRequired, - value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.shape({ - date: PropTypes.string, - })]), - name: PropTypes.string, - }).isRequired, - meta: PropTypes.shape({ - touched: PropTypes.bool, - error: PropTypes.shape({}), - }), - name: PropTypes.string, - placeholder: PropTypes.string, - label: PropTypes.node, - help: PropTypes.node, - language: PropTypes.string, - dateFormat: PropTypes.string, - locale: PropTypes.string, - hoursList: PropTypes.arrayOf(PropTypes.number), - minutesList: PropTypes.arrayOf(PropTypes.number), - secondsList: PropTypes.arrayOf(PropTypes.number), - isClearable: PropTypes.bool, - hasLabel: PropTypes.bool, -}; - -RenderCMSDateTimePickerInput.defaultProps = { - name: '', - placeholder: '', - label: '', - help: null, - language: 'en', - dateFormat: 'DD/MM/YYYY', - locale: 'en', - meta: {}, - hoursList: Array.from(Array(24).keys()), - minutesList: Array.from(Array(60).keys()), - secondsList: Array.from(Array(60).keys()), - isClearable: true, - hasLabel: true, -}; -export default RenderCMSDateTimePickerInput; diff --git a/src/ui/common/form/RenderContentTemplateInput.js b/src/ui/common/form/RenderContentTemplateInput.js deleted file mode 100644 index d8b051047..000000000 --- a/src/ui/common/form/RenderContentTemplateInput.js +++ /dev/null @@ -1,293 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import AceEditor from 'react-ace'; -import ace from 'brace'; -import { Col, ControlLabel } from 'patternfly-react'; - -import 'brace/mode/html'; -import 'brace/theme/tomorrow'; -import 'brace/snippets/html'; -import 'brace/ext/language_tools'; - -const langTools = ace.acequire('ace/ext/language_tools'); -const tokenUtils = ace.acequire('ace/autocomplete/util'); -const { textCompleter, keyWordCompleter, snippetCompleter } = langTools; -const defaultCompleters = [textCompleter, keyWordCompleter, snippetCompleter]; - -const escChars = term => term.replace('$', '\\$').replace('#', '\\#'); -const isAttribFunction = term => /[a-zA-Z]+\([^)]*\)(\.[^)]*\))?/g.test(term); - -const createSuggestionItem = (key, namespace, lvl = 0, meta = '') => ({ - caption: key, - value: key, - score: 10000 + lvl, - meta: meta || `${namespace} Object ${isAttribFunction(key) ? 'Method' : 'Property'}`, -}); - -const aceOnBlur = onBlur => (_event, editor) => { - if (editor) { - const value = editor.getValue(); - onBlur(value); - } -}; - -class RenderContentTemplateInput extends Component { - constructor(props) { - super(props); - this.state = { - editor: null, - dictionaryLoaded: false, - dictionary: [], - dictList: [], - dictMapped: {}, - contentTemplateCompleter: null, - }; - this.onEditorLoaded = this.onEditorLoaded.bind(this); - } - - componentDidUpdate(prevProps) { - const { dictionary } = this.props; - if (dictionary !== prevProps.dictionary) { - this.condenseRootDict(); - } - } - - onEditorLoaded(editor) { - this.setState({ editor }); - - this.initCompleter(); - - editor.commands.addCommand({ - name: 'dotCommandSubMethods', - bindKey: { win: '.', mac: '.' }, - exec: () => { - editor.insert('.'); - const { selection } = editor; - const cursor = selection.getCursor(); - const extracted = this.extractCodeFromCursor(cursor); - const { namespace } = extracted; - if (!namespace) { - this.enableRootSuggestions(); - return; - } - - const [rootSpace, ...subSpace] = namespace.split('.'); - - if (subSpace.length > 1) { - this.enableRootSuggestions(); - return; - } - - const verified = subSpace.length - ? this.findTokenInDictMap(subSpace[0], rootSpace) - : this.findTokenInDictMap(rootSpace); - if (verified) { - this.disableRootSuggestions(); - } else { - this.enableRootSuggestions(); - } - editor.execCommand('startAutocomplete'); - }, - }); - } - - disableRootSuggestions() { - const { contentTemplateCompleter } = this.state; - langTools.setCompleters([contentTemplateCompleter]); - } - - enableRootSuggestions() { - const { dictionary, contentTemplateCompleter } = this.state; - langTools.setCompleters([...defaultCompleters, contentTemplateCompleter]); - this.setState({ - dictList: [...dictionary], - }); - } - - initCompleter() { - const contentTemplateCompleter = { - getCompletions: ( - _editor, - session, - cursor, - prefix, - callback, - ) => { - const extracted = this.extractCodeFromCursor(cursor, prefix); - const { namespace } = extracted; - if (!namespace) { - this.enableRootSuggestions(); - } else { - const [rootSpace, ...subSpace] = namespace.split('.'); - - const verified = subSpace.length - ? this.findTokenInDictMap(subSpace[0], rootSpace) - : this.findTokenInDictMap(rootSpace); - if (verified) { - this.disableRootSuggestions(); - const { dictMapped } = this.state; - if (verified.namespace) { - const mappedToken = dictMapped[verified.namespace]; - const dictList = mappedToken[verified.term] - .map(entry => createSuggestionItem(entry, verified.namespace, 2)); - this.setState({ dictList }); - } else { - const mappedToken = dictMapped[verified.term]; - const dictList = Object.entries(mappedToken) - .map(([entry]) => createSuggestionItem(entry, verified.term, 1)); - this.setState({ dictList }); - } - } else { - this.disableRootSuggestions(); - } - } - const { dictList } = this.state; - callback(null, dictList); - }, - }; - langTools.setCompleters([...defaultCompleters, contentTemplateCompleter]); - this.setState({ contentTemplateCompleter }); - } - - condenseRootDict() { - const { dictionary: _dict } = this.props; - const dictMapped = _dict.reduce((acc, curr) => { - acc[curr.code] = curr.methods; - return acc; - }, {}); - - const dictionary = _dict.map(({ code }) => ( - createSuggestionItem(code, code, 0, `${code} Object`) - )); - - this.setState({ - dictionary, - dictMapped, - dictList: [...dictionary], - dictionaryLoaded: true, - }); - } - - extractCodeFromCursor({ row, column }, prefixToken) { - const { editor: { session } } = this.state; - const codeline = (session.getDocument().getLine(row)).trim(); - const token = prefixToken || tokenUtils.retrievePrecedingIdentifier(codeline, column); - const wholeToken = tokenUtils.retrievePrecedingIdentifier( - codeline, - column, - /[.a-zA-Z_0-9$\-\u00A2-\uFFFF]/, - ); - if (token === wholeToken) { - return { token, namespace: '' }; - } - const namespace = wholeToken.replace(/\.$/g, ''); - return { token, namespace }; - } - - findTokenInDictMap(token, parentToken) { - const { dictMapped } = this.state; - const findInDict = (term, dict) => ( - Object.keys(dict).find((key) => { - const keyRegEx = new RegExp(`${escChars(key)}$`, 'g'); - return keyRegEx.test(term); - }) - ); - if (!parentToken) { - const term = findInDict(token, dictMapped); - return term && { term }; - } - const namespace = findInDict(parentToken, dictMapped); - if (!namespace) { - return false; - } - const term = findInDict(token, dictMapped[parentToken]); - if (!term) return false; - return { term, namespace }; - } - - render() { - const { - input, meta: { touched, error }, label, help, - labelSize, inputSize, append, prepend, alignClass, - } = this.props; - const { dictionaryLoaded } = this.state; - return ( -
    - { - labelSize > 0 ? ( - - - {label} {help} - - - ) : '' - } - - {prepend} - {dictionaryLoaded && ( - - )} - {append && {append}} - {touched && ((error && {error}))} - -
    - ); - } -} - -RenderContentTemplateInput.propTypes = { - input: PropTypes.shape({ - name: PropTypes.string, - value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]), - onBlur: PropTypes.func, - onChange: PropTypes.func, - onFocus: PropTypes.func, - }), - label: PropTypes.node, - meta: PropTypes.shape({ - touched: PropTypes.bool, - error: PropTypes.shape({}), - }), - dictionary: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - help: PropTypes.node, - labelSize: PropTypes.number, - inputSize: PropTypes.number, - prepend: PropTypes.node, - append: PropTypes.string, - alignClass: PropTypes.string, -}; - -RenderContentTemplateInput.defaultProps = { - input: {}, - label: , - meta: {}, - help: null, - labelSize: 2, - inputSize: null, - append: '', - prepend: '', - alignClass: 'text-right', -}; - -export default RenderContentTemplateInput; diff --git a/src/ui/common/form/RenderListFieldItem.js b/src/ui/common/form/RenderListFieldItem.js deleted file mode 100644 index 92490afe9..000000000 --- a/src/ui/common/form/RenderListFieldItem.js +++ /dev/null @@ -1,96 +0,0 @@ -import React, { useState } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { Button, ButtonGroup } from 'patternfly-react'; -import { Collapse } from 'react-collapse'; -import Panel from 'react-bootstrap/lib/Panel'; - -import SectionTitle from 'ui/common/SectionTitle'; - -const RenderListFieldItem = ({ - children, - onSwapItem, - onRemoveItem, - order, - arraySize, -}) => { - const [opened, setOpened] = useState(true); - - const handleCollapse = () => setOpened(!opened); - - const buttonMoveUp = (index) => { - if ((index) > 0) { - return ( - - ); - } - return null; - }; - - const buttonMoveDown = (index) => { - if ((index) < arraySize - 1) { - return ( - - ); - } - return null; - }; - - return ( -
    - - - } - onClick={handleCollapse} - collapsable - noRequired - isOpened={opened} - className="RenderListField__heading" - > - - {buttonMoveUp(order)} - {buttonMoveDown(order, arraySize)} - - - - - - - {children} - - - -
    - ); -}; - -RenderListFieldItem.propTypes = { - children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired, - onSwapItem: PropTypes.func.isRequired, - onRemoveItem: PropTypes.func.isRequired, - order: PropTypes.number.isRequired, - arraySize: PropTypes.number.isRequired, -}; - -export default RenderListFieldItem; diff --git a/src/ui/common/form/RenderVersionText.js b/src/ui/common/form/RenderVersionText.js deleted file mode 100644 index ea8692da7..000000000 --- a/src/ui/common/form/RenderVersionText.js +++ /dev/null @@ -1,73 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Col, ControlLabel } from 'patternfly-react'; - -const RenderVersionText = ({ - input, - label, - labelSize, - inputSize, - alignClass, - version, - modifierText, - creatorText, - sameAuthorText, - currentUserName, - creatorUserName, - modifierUserName, -}) => ( -
    - {labelSize > 0 ? ( - - {label} - - ) : ( - '' - )} - - - {version} - {creatorText} {/* @TODO Update href value */} - - {creatorUserName}{' '} - {creatorUserName === currentUserName ? ( - {sameAuthorText} - ) : null} - {' '} - {modifierText}{' '} - - {modifierUserName} - {modifierUserName === currentUserName ? ( - ({sameAuthorText}) - ) : null} - - - -
    -); - -RenderVersionText.propTypes = { - version: PropTypes.string.isRequired, - creatorText: PropTypes.string.isRequired, - modifierText: PropTypes.string.isRequired, - sameAuthorText: PropTypes.string.isRequired, - currentUserName: PropTypes.string.isRequired, - creatorUserName: PropTypes.string.isRequired, - modifierUserName: PropTypes.string.isRequired, - input: PropTypes.shape({ - name: PropTypes.string, - }), - label: PropTypes.node, - labelSize: PropTypes.number, - inputSize: PropTypes.number, - alignClass: PropTypes.string, -}; - -RenderVersionText.defaultProps = { - input: {}, - label: '', - labelSize: 2, - inputSize: null, - alignClass: 'text-right', -}; -export default RenderVersionText; diff --git a/src/ui/common/form/ToggleButtonGroupField.js b/src/ui/common/form/ToggleButtonGroupField.js deleted file mode 100644 index 9436ea8fb..000000000 --- a/src/ui/common/form/ToggleButtonGroupField.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { ToggleButtonGroup } from 'react-bootstrap'; - -const ToggleButtonGroupField = ({ input, children }) => ( - - {children} - -); - -ToggleButtonGroupField.propTypes = { - input: PropTypes.shape({ - value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]), - }).isRequired, - children: PropTypes.node.isRequired, -}; - -export default ToggleButtonGroupField; diff --git a/src/ui/common/link-config/LinkConfigAttributes.js b/src/ui/common/link-config/LinkConfigAttributes.js deleted file mode 100644 index 61674229f..000000000 --- a/src/ui/common/link-config/LinkConfigAttributes.js +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react'; -import { FormattedMessage } from 'react-intl'; -import { Field } from 'redux-form'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; - -const LinkConfigAttributes = () => ( -
    -

    - -

    - - - -
    -); - -export default LinkConfigAttributes; diff --git a/src/ui/common/link-config/LinkConfigContentForm.js b/src/ui/common/link-config/LinkConfigContentForm.js deleted file mode 100644 index 04b5f14bd..000000000 --- a/src/ui/common/link-config/LinkConfigContentForm.js +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { reduxForm, Field, FormSection, fieldInputPropTypes } from 'redux-form'; -import { FormattedMessage } from 'react-intl'; -import { Button } from 'patternfly-react'; - -import LinkConfigAttributes from 'ui/common/link-config/LinkConfigAttributes'; -import ContentsContainer from 'ui/common/content/ContentsContainer'; - -const ContentsField = ({ input, mainGroup, joinGroups }) => ( - -); - -ContentsField.propTypes = { - input: PropTypes.shape(fieldInputPropTypes).isRequired, - mainGroup: PropTypes.string.isRequired, - joinGroups: PropTypes.arrayOf(PropTypes.string).isRequired, -}; - -const LinkConfigContentForm = ({ - onCancel, handleClick, content, mainGroup, joinGroups, attributes, -}) => ( -
    - - - - -
    - - -
    -
    -); - -LinkConfigContentForm.propTypes = { - onCancel: PropTypes.func.isRequired, - content: PropTypes.string, - mainGroup: PropTypes.string.isRequired, - handleClick: PropTypes.func.isRequired, - joinGroups: PropTypes.arrayOf(PropTypes.string).isRequired, - attributes: PropTypes.shape({}), -}; - -LinkConfigContentForm.defaultProps = { - content: '', - attributes: {}, -}; - -export default reduxForm({ - form: 'LinkConfigContent', -})(LinkConfigContentForm); diff --git a/src/ui/common/link-config/LinkConfigContentFormContainer.js b/src/ui/common/link-config/LinkConfigContentFormContainer.js deleted file mode 100644 index 3b0a4f7f0..000000000 --- a/src/ui/common/link-config/LinkConfigContentFormContainer.js +++ /dev/null @@ -1,33 +0,0 @@ -import { omit } from 'lodash'; -import { connect } from 'react-redux'; -import { formValueSelector, submit } from 'redux-form'; -import LinkConfigContentForm from 'ui/common/link-config/LinkConfigContentForm'; - -const selector = formValueSelector('LinkConfigContent'); - -export const mapStateToProps = (state, { parameters }) => ({ - initialValues: { - content: parameters.contentDest, - attributes: { ...omit(parameters, 'pageDest') }, - }, - content: selector(state, 'content'), - attributes: selector(state, 'attributes'), -}); - -export const mapDispatchToProps = (dispatch, { onSubmit }) => ({ - handleClick: (content) => { - submit('LinkConfigContent'); - onSubmit(content); - }, -}); - -const LinkConfigContentFormContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(LinkConfigContentForm); - -export default LinkConfigContentFormContainer; diff --git a/src/ui/common/link-config/LinkConfigPageForm.js b/src/ui/common/link-config/LinkConfigPageForm.js deleted file mode 100644 index 7b05d3a7c..000000000 --- a/src/ui/common/link-config/LinkConfigPageForm.js +++ /dev/null @@ -1,86 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { - reduxForm, - Field, - FormSection, - fieldInputPropTypes, -} from 'redux-form'; -import { Col, Button } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; - -import PageTreeContainer from 'ui/common/page/PageTreeSelectContainer'; -import FormLabel from 'ui/common/form/FormLabel'; -import LinkConfigAttributes from 'ui/common/link-config/LinkConfigAttributes'; - -const PageTreeField = ({ - input, mainGroup, joinGroups, pageCode, -}) => ( - -); - -PageTreeField.propTypes = { - input: PropTypes.shape(fieldInputPropTypes).isRequired, - mainGroup: PropTypes.string.isRequired, - joinGroups: PropTypes.arrayOf(PropTypes.string).isRequired, - pageCode: PropTypes.string.isRequired, -}; - -const label = ; - -const LinkConfigPageForm = ({ - onCancel, handleSubmit, mainGroup, joinGroups, page, attributes, -}) => ( -
    - - - - - - - - - -
    - - -
    - -); - -LinkConfigPageForm.propTypes = { - onCancel: PropTypes.func.isRequired, - handleSubmit: PropTypes.func.isRequired, - mainGroup: PropTypes.string.isRequired, - joinGroups: PropTypes.arrayOf(PropTypes.string).isRequired, - page: PropTypes.string, - attributes: PropTypes.shape({}), -}; - -LinkConfigPageForm.defaultProps = { - page: '', - attributes: {}, -}; - -export default reduxForm({ - form: 'LinkConfigPage', -})(LinkConfigPageForm); diff --git a/src/ui/common/link-config/LinkConfigPageFormContainer.js b/src/ui/common/link-config/LinkConfigPageFormContainer.js deleted file mode 100644 index 98b687b50..000000000 --- a/src/ui/common/link-config/LinkConfigPageFormContainer.js +++ /dev/null @@ -1,35 +0,0 @@ -import { connect } from 'react-redux'; -import { formValueSelector, submit } from 'redux-form'; -import { omit } from 'lodash'; -import LinkConfigPageForm from './LinkConfigPageForm'; - -const selector = formValueSelector('LinkConfigPage'); - -export const mapStateToProps = (state, { parameters, joinGroups, mainGroup }) => ({ - initialValues: { - page: parameters.pageDest || '', - attributes: { ...omit(parameters, 'pageDest') }, - }, - page: selector(state, 'page') || '', - attributes: selector(state, 'attributes'), - joinGroups, - mainGroup, -}); - -export const mapDispatchToProps = (dispatch, { onSubmit, onCancel }) => ({ - handleSubmit: (data) => { - submit('LinkConfigPage'); - onSubmit(data); - }, - onCancel, -}); - -const LinkConfigPageFormContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(LinkConfigPageForm); -export default LinkConfigPageFormContainer; diff --git a/src/ui/common/link-config/LinkConfigUrlForm.js b/src/ui/common/link-config/LinkConfigUrlForm.js deleted file mode 100644 index f0cef37aa..000000000 --- a/src/ui/common/link-config/LinkConfigUrlForm.js +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { - reduxForm, - Field, - FormSection, -} from 'redux-form'; -import { Button } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; - -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; -import LinkConfigAttributes from 'ui/common/link-config/LinkConfigAttributes'; - -const label = ; - -const LinkConfigUrlForm = ({ - onCancel, handleSubmit, url, attributes, -}) => ( -
    - - - - -
    - - -
    - -); - -LinkConfigUrlForm.propTypes = { - onCancel: PropTypes.func.isRequired, - handleSubmit: PropTypes.func.isRequired, - url: PropTypes.string, - attributes: PropTypes.shape({}), -}; - -LinkConfigUrlForm.defaultProps = { - url: '', - attributes: {}, -}; - -export default reduxForm({ - form: 'LinkConfigUrl', -})(LinkConfigUrlForm); diff --git a/src/ui/common/link-config/LinkConfigUrlFormContainer.js b/src/ui/common/link-config/LinkConfigUrlFormContainer.js deleted file mode 100644 index 7e51171ba..000000000 --- a/src/ui/common/link-config/LinkConfigUrlFormContainer.js +++ /dev/null @@ -1,34 +0,0 @@ -import { connect } from 'react-redux'; -import { formValueSelector, submit } from 'redux-form'; -import LinkConfigUrlForm from 'ui/common/link-config/LinkConfigUrlForm'; -import { omit } from 'lodash'; - -const selector = formValueSelector('LinkConfigUrl'); - -export const mapStateToProps = (state, { parameters }) => ({ - initialValues: { - url: parameters.dest, - attributes: { ...omit(parameters, 'dest') }, - }, - url: selector(state, 'url'), - attributes: selector(state, 'attributes'), -}); - -export const mapDispatchToProps = (dispatch, { onSubmit, onCancel }) => ({ - handleSubmit: (data) => { - submit('LinkConfigUrl'); - onSubmit(data); - }, - onCancel, -}); - -const LinkConfigUrlFormContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(LinkConfigUrlForm); - -export default LinkConfigUrlFormContainer; diff --git a/src/ui/common/page/PageTreeSelectContainer.js b/src/ui/common/page/PageTreeSelectContainer.js deleted file mode 100644 index 033c4a67e..000000000 --- a/src/ui/common/page/PageTreeSelectContainer.js +++ /dev/null @@ -1,30 +0,0 @@ -import { connect } from 'react-redux'; - -import { PageTreeSelector } from '@entando/pagetreeselector'; -import { handleExpandPage, fetchPageTreeAll, collapseAll, clearTree } from 'state/pages/actions'; -import { HOMEPAGE_CODE } from 'state/pages/const'; -import { getPageTreePages } from 'state/pages/selectors'; -import { getLoading } from 'state/loading/selectors'; - - -export const mapStateToProps = (state, { input }) => ({ - pages: getPageTreePages(state), - loading: getLoading(state).pageTree, - input, -}); - -export const mapDispatchToProps = (dispatch, { status, ownerGroup, joinGroups }) => ({ - onDidMount: () => { - dispatch(clearTree()); - dispatch(handleExpandPage(HOMEPAGE_CODE, status, ownerGroup, joinGroups)); - }, - onExpandPage: pageCode => dispatch(handleExpandPage(pageCode, status, ownerGroup, joinGroups)), - onExpandAll: () => dispatch(fetchPageTreeAll()), - onCollapseAll: () => dispatch(collapseAll()), -}); - - -const PageTreeSelectContainer = connect(mapStateToProps, mapDispatchToProps)(PageTreeSelector); - - -export default PageTreeSelectContainer; diff --git a/src/ui/common/references/GenericRefsTable.js b/src/ui/common/references/GenericRefsTable.js deleted file mode 100644 index ad397c1fb..000000000 --- a/src/ui/common/references/GenericRefsTable.js +++ /dev/null @@ -1,139 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage, injectIntl, intlShape } from 'react-intl'; -import { Spinner, Alert, Paginator } from 'patternfly-react'; -import { Table } from 'react-bootstrap'; -import paginatorMessages from 'ui/paginatorMessages'; - -class GenericRefsTable extends Component { - constructor(props) { - super(props); - this.changePage = this.changePage.bind(this); - this.changePageSize = this.changePageSize.bind(this); - } - - componentDidMount() { - const { componentDidMount } = this.props; - componentDidMount(); - } - - changePage(page) { - const { onPageChange, pagination: { pageSize }, referenceKey } = this.props; - onPageChange(referenceKey, { page, pageSize }); - } - - changePageSize(pageSize) { - const { onPageChange, referenceKey } = this.props; - onPageChange(referenceKey, { page: 1, pageSize }); - } - - render() { - const { - referenceKey, references, loading, columns, pagination, - } = this.props; - - const { page, pageSize: perPage, totalItems } = pagination; - const paginationObj = { - page, - perPage, - perPageOptions: [5, 10, 15, 25, 50], - }; - - const renderRows = () => references.map((reference, index) => ( - - {Object.keys(columns) - .filter(refKey => (Object.keys(reference)).includes(refKey)) - .map((objKey) => { - const { tdClass, render } = columns[objKey] || {}; - return ( - - {render(reference[objKey], reference.id)} - - ); - })} - - )); - - const renderTable = () => { - if (references.length > 0) { - const messages = Object.keys(paginatorMessages).reduce((acc, curr) => ( - { ...acc, [curr]: this.props.intl.formatMessage(paginatorMessages[curr]) } - ), {}); - - return ( -
    - - - - { - Object.keys(columns) - .filter(refKey => (Object.keys(references[0])).includes(refKey)) - .map(objKey => ( - - ))} - - - - {renderRows()} - -
    - -
    - -
    - ); - } - return ( - - - - ); - }; - - return ( -
    - - {renderTable()} - -
    - ); - } -} - -GenericRefsTable.propTypes = { - intl: intlShape.isRequired, - componentDidMount: PropTypes.func, - onPageChange: PropTypes.func.isRequired, - loading: PropTypes.bool, - references: PropTypes.arrayOf(PropTypes.shape({})), - referenceKey: PropTypes.string, - columns: PropTypes.shape({}), - pagination: PropTypes.shape({ - page: PropTypes.number, - totalItems: PropTypes.number, - pageSize: PropTypes.number, - }).isRequired, -}; - -GenericRefsTable.defaultProps = { - componentDidMount: () => {}, - loading: false, - references: [], - referenceKey: '', - columns: {}, -}; - -export default injectIntl(GenericRefsTable); diff --git a/src/ui/common/rich-text-editor/EditorToolbar.js b/src/ui/common/rich-text-editor/EditorToolbar.js deleted file mode 100644 index 48a58373a..000000000 --- a/src/ui/common/rich-text-editor/EditorToolbar.js +++ /dev/null @@ -1,256 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { injectIntl, intlShape } from 'react-intl'; -import { compact } from 'lodash'; - -const enlinkIcon = ( - - - -); - -const enunlinkIcon = ( - - - -); - -const undoIcon = ( - - - - -); - -const redoIcon = ( - - - - -); - -const tableIcon = ( - - - - - -); - -const tableInsertRowIcon = ( - - - - - - - - - -); - -const tableInsertColumnIcon = ( - - - - - - - - -); - -const tableDeleteRowIcon = ( - - - - - - - - - -); - -const tableDeleteColumnIcon = ( - - - - - - - - -); - -const tableDeleteIcon = ( - - - - - - - - - - - - - -); - -const hrIcon = ( - - - - -); - -const maximizeIcon = ( - -); - -const ToolbarGroup = ({ children, className }) => ( - - {children} - -); - -ToolbarGroup.propTypes = { - children: PropTypes.node.isRequired, - className: PropTypes.string, -}; - -ToolbarGroup.defaultProps = { - className: '', -}; - -const renderToolbarButton = (format, value, icon, tooltipText) => ( - -); - -const EditorToolbar = ({ intl, name, extraOptions }) => ( -
    - - {renderToolbarButton('history', 'undo', undoIcon, intl.formatMessage({ id: 'rte.undoWithExample' }))} - {renderToolbarButton('history', 'redo', redoIcon, intl.formatMessage({ id: 'rte.redoWithExample' }))} - - - {renderToolbarButton('entable', 'table', tableIcon, intl.formatMessage({ id: 'rte.insertTable' }))} - {renderToolbarButton('entable', 'table-insert-row', tableInsertRowIcon, intl.formatMessage({ id: 'rte.insertTableRow' }))} - {renderToolbarButton('entable', 'table-insert-column', tableInsertColumnIcon, intl.formatMessage({ id: 'rte.insertTableColumn' }))} - {renderToolbarButton('entable', 'table-delete-row', tableDeleteRowIcon, intl.formatMessage({ id: 'rte.deleteTableRow' }))} - {renderToolbarButton('entable', 'table-delete-column', tableDeleteColumnIcon, intl.formatMessage({ id: 'rte.deleteTableColumn' }))} - {renderToolbarButton('entable', 'table-delete', tableDeleteIcon, intl.formatMessage({ id: 'rte.deleteTable' }))} - {renderToolbarButton('divider', undefined, hrIcon, intl.formatMessage({ id: 'rte.insertHorizontalLine' }))} - {renderToolbarButton('specialChar', undefined, 'Ω', intl.formatMessage({ id: 'rte.insertSpecialChar' }))} - - - {renderToolbarButton('maximize', undefined, maximizeIcon, intl.formatMessage({ id: 'rte.maximize' }))} - - - {renderToolbarButton('bold', undefined, undefined, intl.formatMessage({ id: 'rte.boldWithExample' }))} - {renderToolbarButton('italic', undefined, undefined, intl.formatMessage({ id: 'rte.italicWithExample' }))} - {renderToolbarButton('strike', undefined, undefined, intl.formatMessage({ id: 'rte.strikethrough' }))} - - - {renderToolbarButton('clean', undefined, undefined, intl.formatMessage({ id: 'rte.removeFormat' }))} - - - {renderToolbarButton('list', 'ordered', undefined, intl.formatMessage({ id: 'rte.toggleNumberList' }))} - {renderToolbarButton('list', 'bullet', undefined, intl.formatMessage({ id: 'rte.toggleBulletedList' }))} - - - {renderToolbarButton('indent', '-1', undefined, intl.formatMessage({ id: 'rte.decreaseIndent' }))} - {renderToolbarButton('indent', '+1', undefined, intl.formatMessage({ id: 'rte.increaseIndent' }))} - - - {renderToolbarButton('blockquote', undefined, undefined, intl.formatMessage({ id: 'rte.blockQuote' }))} - - - {renderToolbarButton('enlink', 'link', enlinkIcon, intl.formatMessage({ id: 'rte.link' }))} - {renderToolbarButton('enlink', 'unlink', enunlinkIcon, intl.formatMessage({ id: 'rte.unlink' }))} - - - {renderToolbarButton('viewSource', undefined, undefined, intl.formatMessage({ id: 'rte.source' }))} - - {extraOptions && ( - {extraOptions} - )} -
    -); - -EditorToolbar.propTypes = { - intl: intlShape.isRequired, - name: PropTypes.string, - extraOptions: PropTypes.oneOfType([ - PropTypes.arrayOf(PropTypes.node), - PropTypes.node, - ]), -}; - -EditorToolbar.defaultProps = { - name: 'editor-toolbar', - extraOptions: null, -}; - -export default injectIntl(EditorToolbar); diff --git a/src/ui/common/rich-text-editor/SpecialCharSelectorModal.js b/src/ui/common/rich-text-editor/SpecialCharSelectorModal.js deleted file mode 100644 index 6073777ea..000000000 --- a/src/ui/common/rich-text-editor/SpecialCharSelectorModal.js +++ /dev/null @@ -1,191 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Modal, Button } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; - -import GenericModal from 'ui/common/modal/GenericModal'; - -const SPECIAL_CHARS_LABELS = { - Ŵ: 'Latin capital letter W with circumflex', - ŵ: 'Latin small letter w with circumflex', - Ŷ: 'Latin capital letter Y with circumflex', - ŷ: 'Latin small letter y with circumflex', - '‛': 'Single high-reversed-9 quotation mark', - '►': 'Black right-pointing pointer', - '€': 'Euro sign', - '‘': 'Left single quotation mark', - '’': 'Right single quotation mark', - '“': 'Left double quotation mark', - '”': 'Right double quotation mark', - '–': 'En dash', - '—': 'Em dash', - '¡': 'Inverted exclamation mark', - '¢': 'Cent sign', - '£': 'Pound sign', - '¤': 'Currency sign', - '¥': 'Yen sign', - '¦': 'Broken bar', - '§': 'Section sign', - '¨': 'Diaeresis', - '©': 'Copyright sign', - ª: 'Feminine ordinal indicator', - '«': 'Left-pointing double angle quotation mark', - '¬': 'Not sign', - '®': 'Registered sign', - '¯': 'Macron', - '°': 'Degree sign', - '²': 'Superscript two', - '³': 'Superscript three', - '´': 'Acute accent', - µ: 'Micro sign', - '¶': 'Pilcrow sign', - '·': 'Middle dot', - '¸': 'Cedilla', - '¹': 'Superscript one', - º: 'Masculine ordinal indicator', - '»': 'Right-pointing double angle quotation mark', - '¼': 'Vulgar fraction one quarter', - '½': 'Vulgar fraction one half', - '¾': 'Vulgar fraction three quarters', - '¿': 'Inverted question mark', - À: 'Latin capital letter A with grave accent', - Á: 'Latin capital letter A with acute accent', - Â: 'Latin capital letter A with circumflex', - Ã: 'Latin capital letter A with tilde', - Ä: 'Latin capital letter A with diaeresis', - Å: 'Latin capital letter A with ring above', - Æ: 'Latin capital letter Æ', - Ç: 'Latin capital letter C with cedilla', - È: 'Latin capital letter E with grave accent', - É: 'Latin capital letter E with acute accent', - Ê: 'Latin capital letter E with circumflex', - Ë: 'Latin capital letter E with diaeresis', - Ì: 'Latin capital letter I with grave accent', - Í: 'Latin capital letter I with acute accent', - Î: 'Latin capital letter I with circumflex', - Ï: 'Latin capital letter I with diaeresis', - Ð: 'Latin capital letter Eth', - Ñ: 'Latin capital letter N with tilde', - Ò: 'Latin capital letter O with grave accent', - Ó: 'Latin capital letter O with acute accent', - Ô: 'Latin capital letter O with circumflex', - Õ: 'Latin capital letter O with tilde', - Ö: 'Latin capital letter O with diaeresis', - '×': 'Multiplication sign', - Ø: 'Latin capital letter O with stroke', - Ù: 'Latin capital letter U with grave accent', - Ú: 'Latin capital letter U with acute accent', - Û: 'Latin capital letter U with circumflex', - Ü: 'Latin capital letter U with diaeresis', - Ý: 'Latin capital letter Y with acute accent', - Þ: 'Latin capital letter Thorn', - ß: 'Latin small letter sharp s', - à: 'Latin small letter a with grave accent', - á: 'Latin small letter a with acute accent', - â: 'Latin small letter a with circumflex', - ã: 'Latin small letter a with tilde', - ä: 'Latin small letter a with diaeresis', - å: 'Latin small letter a with ring above', - æ: 'Latin small letter æ', - ç: 'Latin small letter c with cedilla', - è: 'Latin small letter e with grave accent', - é: 'Latin small letter e with acute accent', - ê: 'Latin small letter e with circumflex', - ë: 'Latin small letter e with diaeresis', - ì: 'Latin small letter i with grave accent', - í: 'Latin small letter i with acute accent', - î: 'Latin small letter i with circumflex', - ï: 'Latin small letter i with diaeresis', - ð: 'Latin small letter eth', - ñ: 'Latin small letter n with tilde', - ò: 'Latin small letter o with grave accent', - ó: 'Latin small letter o with acute accent', - ô: 'Latin small letter o with circumflex', - õ: 'Latin small letter o with tilde', - ö: 'Latin small letter o with diaeresis', - '÷': 'Division sign', - ø: 'Latin small letter o with stroke', - ù: 'Latin small letter u with grave accent', - ú: 'Latin small letter u with acute accent', - û: 'Latin small letter u with circumflex', - ü: 'Latin small letter u with diaeresis', - ý: 'Latin small letter y with acute accent', - þ: 'Latin small letter thorn', - ÿ: 'Latin small letter y with diaeresis', - Œ: 'Latin capital ligature OE', - œ: 'Latin small ligature oe', - '‚': 'Single low-9 quotation mark', - '„': 'Double low-9 quotation mark', - '…': 'Horizontal ellipsis', - '™': 'Trade mark sign', - '•': 'Bullet', - '→': 'Rightwards arrow', - '⇒': 'Rightwards double arrow', - '⇔': 'Left right double arrow', - '♦': 'Black diamond suit', - '≈': 'Almost equal to', -}; - -const SPECIAL_CHARS = [ - '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', '-', '.', '/', - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', - '<', '=', '>', '?', '@', - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', - 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', - '[', ']', '^', '_', '`', - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', - 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - '{', '|', '}', '~', - '€', '‘', '’', '“', '”', '–', '—', '¡', '¢', '£', - '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', '®', '¯', - '°', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»', - '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', - 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', - 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', - 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', - 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', - 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', - 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', 'Œ', 'œ', - 'Ŵ', 'Ŷ', 'ŵ', 'ŷ', '‚', '‛', '„', '…', '™', '►', '•', - '→', '⇒', '⇔', '♦', '≈', -]; - -const ID = 'SpecialCharSelectorModal'; - -const SpecialCharSelectorModal = ({ isVisible, onSelect, onClose }) => { - const renderedModalTitle = ( - - - - ); - - return ( - } - onCloseModal={onClose} - > - {SPECIAL_CHARS.map(char => ( - - ))} - - ); -}; - -SpecialCharSelectorModal.propTypes = { - isVisible: PropTypes.bool.isRequired, - onSelect: PropTypes.func.isRequired, - onClose: PropTypes.func.isRequired, -}; - -export default SpecialCharSelectorModal; diff --git a/src/ui/component-repository/CategoryTabs.js b/src/ui/component-repository/CategoryTabs.js deleted file mode 100644 index b1b0c653f..000000000 --- a/src/ui/component-repository/CategoryTabs.js +++ /dev/null @@ -1,62 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { injectIntl, intlShape } from 'react-intl'; -import { Tabs, Tab } from 'patternfly-react'; - -class CategoryTabs extends Component { - componentWillMount() { - this.props.onWillMount(); - } - - render() { - const { - componentRepositoryCategories, - selectedECRCategory, - onSelect, - intl, - } = this.props; - const formatText = id => intl.formatMessage({ id }); - - const categories = componentRepositoryCategories.map(category => ( - { label: formatText(`componentRepository.categories.${category}`, category), value: category } - )); - - const handleSelect = (key) => { - onSelect(categories[key].value); - }; - - const tabs = categories.map((category, index) => ( - - )); - - const index = categories.indexOf(selectedECRCategory); - const selectedECRCategoryIndex = index !== -1 ? index : 0; - - return ( -
    - handleSelect(key)} - > - { tabs } - -
    - ); - } -} - -CategoryTabs.propTypes = { - intl: intlShape.isRequired, - componentRepositoryCategories: PropTypes.arrayOf(PropTypes.string).isRequired, - selectedECRCategory: PropTypes.string.isRequired, - onWillMount: PropTypes.func.isRequired, - onSelect: PropTypes.func.isRequired, -}; - -export default injectIntl(CategoryTabs); diff --git a/src/ui/component-repository/ComponentRepositoryFilter.js b/src/ui/component-repository/ComponentRepositoryFilter.js deleted file mode 100644 index bd984aafd..000000000 --- a/src/ui/component-repository/ComponentRepositoryFilter.js +++ /dev/null @@ -1,55 +0,0 @@ -import React, { Component } from 'react'; -import { injectIntl, intlShape, FormattedMessage } from 'react-intl'; -import PropTypes from 'prop-types'; -import { reduxForm } from 'redux-form'; -import { Alert } from 'patternfly-react'; -import CheckboxGroup from 'ui/component-repository/common/CheckboxGroup'; -import SidebarFilter from 'ui/component-repository/common/SidebarFilter'; - -class ComponentRepositoryFilterBody extends Component { - componentDidMount() { - this.props.onDidMount(); - } - - render() { - const { intl, componentRepositories, onChange } = this.props; - const formatText = id => intl.formatMessage({ id }); - - const options = componentRepositories.map(componentRepository => ({ - label: componentRepository.name, - value: componentRepository.id, - })); - - const renderECRCheckBox = (!componentRepositories || componentRepositories.length === 0) - ? - ( - - - ) : (); - - return ( - - {renderECRCheckBox} - - ); - } -} - -ComponentRepositoryFilterBody.propTypes = { - intl: intlShape.isRequired, - componentRepositories: PropTypes.arrayOf(PropTypes.object).isRequired, - onDidMount: PropTypes.func.isRequired, - onChange: PropTypes.func.isRequired, -}; - -export default reduxForm({ - form: 'componentRepositoryFilter', - enableReinitialize: true, - keepDirtyOnReinitialize: true, -})(injectIntl(ComponentRepositoryFilterBody)); diff --git a/src/ui/component-repository/ComponentRepositoryFilterContainer.js b/src/ui/component-repository/ComponentRepositoryFilterContainer.js deleted file mode 100644 index 8cbaee289..000000000 --- a/src/ui/component-repository/ComponentRepositoryFilterContainer.js +++ /dev/null @@ -1,25 +0,0 @@ -import { connect } from 'react-redux'; -import { getComponentRepositoryFilters } from 'state/component-repository/components/selectors'; -import { getComponentRepositoryList } from 'state/component-repository/component-repositories/selectors'; -import { filterByComponentRepositories } from 'state/component-repository/actions'; -import { fetchComponentRepositories } from 'state/component-repository/component-repositories/actions'; -import ComponentRepositoryFilter from 'ui/component-repository/ComponentRepositoryFilter'; - -export const mapDispatchToProps = dispatch => ({ - onDidMount: () => dispatch(fetchComponentRepositories()), - onChange: (eventOrValue) => { - const { componentRepositories } = eventOrValue; - if (componentRepositories) { - dispatch(filterByComponentRepositories(componentRepositories)); - } - }, -}); - -export const mapStateToProps = state => ({ - componentRepositories: getComponentRepositoryList(state), - initialValues: { componentRepositories: getComponentRepositoryFilters(state) }, -}); - -export default connect(mapStateToProps, mapDispatchToProps, null, { - pure: false, -})(ComponentRepositoryFilter); diff --git a/src/ui/component-repository/RatingFilter.js b/src/ui/component-repository/RatingFilter.js deleted file mode 100644 index 87ed13c6c..000000000 --- a/src/ui/component-repository/RatingFilter.js +++ /dev/null @@ -1,67 +0,0 @@ -import { rangeRight } from 'lodash'; -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { defineMessages, injectIntl, intlShape } from 'react-intl'; -import SidebarFilter from 'ui/component-repository/common/SidebarFilter'; -import RatingFilterItem from 'ui/component-repository/RatingFilterItem'; - -const msgs = defineMessages({ - ratingFilterTitle: { - id: 'componentRepository.sidebar.ratingFilter.title', - defaultMessage: 'Rating Filter Title', - }, -}); - -class RatingFilter extends Component { - toggleRatingFilter(selectedRating) { - const { rating, onSelect } = this.props; - const selectedRatingOrNull = rating === selectedRating ? null : selectedRating; - onSelect(selectedRatingOrNull); - } - - render() { - const { - minRating, - maxRating, - rating, - intl, - } = this.props; - - const ratingFilterItems = rangeRight(minRating, maxRating + 1).map(itemRating => ( -
  • - this.toggleRatingFilter(itemRating)} - selected={itemRating === rating} - rating={itemRating} - maxRating={maxRating} - /> -
  • - )); - - return ( - -
    -
      - { ratingFilterItems } -
    -
    -
    - ); - } -} - -RatingFilter.propTypes = { - onSelect: PropTypes.func.isRequired, - rating: PropTypes.number, - minRating: PropTypes.number, - maxRating: PropTypes.number, - intl: intlShape.isRequired, -}; - -RatingFilter.defaultProps = { - rating: null, - minRating: 1, - maxRating: 5, -}; - -export default injectIntl(RatingFilter); diff --git a/src/ui/component-repository/RatingFilterContainer.js b/src/ui/component-repository/RatingFilterContainer.js deleted file mode 100644 index 5c1069a86..000000000 --- a/src/ui/component-repository/RatingFilterContainer.js +++ /dev/null @@ -1,25 +0,0 @@ -import { connect } from 'react-redux'; -import RatingFilter from 'ui/component-repository/RatingFilter'; -import { filterByRating } from 'state/component-repository/actions'; -import { getECRRatingFilter } from 'state/component-repository/components/selectors'; - -export const mapDispatchToProps = dispatch => ({ - onSelect: (rating) => { - dispatch(filterByRating(rating)); - }, -}); - -export const mapStateToProps = state => ({ - rating: getECRRatingFilter(state), -}); - -const RatingFilterContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(RatingFilter); - -export default RatingFilterContainer; diff --git a/src/ui/component-repository/RatingFilterItem.js b/src/ui/component-repository/RatingFilterItem.js deleted file mode 100644 index 3fd178fd8..000000000 --- a/src/ui/component-repository/RatingFilterItem.js +++ /dev/null @@ -1,60 +0,0 @@ -import { range } from 'lodash'; -import React from 'react'; -import PropTypes from 'prop-types'; -import { defineMessages, injectIntl, intlShape } from 'react-intl'; -import StarIcon from 'ui/component-repository/common/StarIcon'; - -const msgs = defineMessages({ - itemLabel: { - id: 'componentRepository.sidebar.ratingFilter.itemLabel', - defaultMessage: 'Item Label', - }, -}); - -const RatingFilterItem = ({ - intl, - selected, - rating, - maxRating, - onSelect, -}) => { - const selectedClass = selected ? ' RatingFilterItem--selected' : ''; - const className = `RatingFilterItem${selectedClass}`; - const enterKey = 'Enter'; - const itemLabel = intl.formatMessage(msgs.itemLabel); - return ( -
    onSelect(rating)} - onKeyDown={e => e.key === enterKey && onSelect(rating)} - aria-label={`${rating} ${itemLabel}`} - > - { - range(maxRating).map(currentRating => ( -
    - ); -}; - -RatingFilterItem.propTypes = { - intl: intlShape.isRequired, - selected: PropTypes.bool, - rating: PropTypes.number.isRequired, - maxRating: PropTypes.number.isRequired, - onSelect: PropTypes.func.isRequired, -}; - -RatingFilterItem.defaultProps = { - selected: false, -}; - -export default injectIntl(RatingFilterItem); diff --git a/src/ui/component-repository/common/StarIcon.js b/src/ui/component-repository/common/StarIcon.js deleted file mode 100644 index 686d26bbc..000000000 --- a/src/ui/component-repository/common/StarIcon.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; - -const StarIcon = ({ filled, filledHalf }) => { - const filledClass = filled ? ' StarIcon--filled' : ''; - const icon = filledHalf ? 'fa-star-half' : 'fa-star'; - const className = `fa ${icon} StarIcon${filledClass}`; - return ; -}; - -StarIcon.propTypes = { - filled: PropTypes.bool, - filledHalf: PropTypes.bool, -}; - -StarIcon.defaultProps = { - filled: false, - filledHalf: false, -}; - -export default StarIcon; diff --git a/src/ui/component-repository/common/StarRating.js b/src/ui/component-repository/common/StarRating.js deleted file mode 100644 index ebd6363cc..000000000 --- a/src/ui/component-repository/common/StarRating.js +++ /dev/null @@ -1,28 +0,0 @@ -import { range } from 'lodash'; -import React from 'react'; -import PropTypes from 'prop-types'; -import StarIcon from 'ui/component-repository/common/StarIcon'; - -const StarRating = ({ rating }) => { - const roundedRating = Math.round(rating); - return ( -
    - { - range(rating).map(currentRating => ( -
    - ); -}; - -StarRating.propTypes = { - rating: PropTypes.number.isRequired, -}; - -export default StarRating; diff --git a/src/ui/content-settings/ContentSettingsCropRatioInput.js b/src/ui/content-settings/ContentSettingsCropRatioInput.js deleted file mode 100644 index 42ce3a272..000000000 --- a/src/ui/content-settings/ContentSettingsCropRatioInput.js +++ /dev/null @@ -1,138 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { Form, FormGroup, FormControl, Button, Icon } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; - -const propTypes = { - value: PropTypes.string, - isNew: PropTypes.bool, - onAdd: PropTypes.func, - onDelete: PropTypes.func, - onSave: PropTypes.func, - onError: PropTypes.func, -}; - -const defaultProps = { - value: '', - isNew: false, - onAdd: () => {}, - onDelete: () => {}, - onSave: () => {}, - onError: () => {}, -}; - -class ContentSettingsCropRatioInput extends Component { - constructor(props) { - super(props); - this.state = { - value: props.value, - }; - - this.handleInputChange = this.handleInputChange.bind(this); - this.handleInputBlur = this.handleInputBlur.bind(this); - this.handleAddClick = this.handleAddClick.bind(this); - this.handleDeleteClick = this.handleDeleteClick.bind(this); - this.handleSubmit = this.handleSubmit.bind(this); - } - - getValidationState() { - const { value: initialValue } = this.props; - const { value } = this.state; - if ((value.length > 0 || initialValue.length > 0) && value !== initialValue) { - const isRatio = /^\d+[:]\d+$/.test(value); - if (isRatio) return 'success'; - return 'error'; - } - - return null; - } - - handleInputChange(e) { - this.setState({ - value: e.target.value, - }); - } - - handleInputBlur() { - const { isNew, onError } = this.props; - if (this.getValidationState() === 'success') { - const { onSave } = this.props; - const { value } = this.state; - onSave(value); - } else if (!isNew) { - onError('cropvalueerror'); - } - } - - handleAddClick() { - this.handleSubmit(); - } - - handleDeleteClick() { - const { onDelete } = this.props; - onDelete(); - } - - handleSubmit(e) { - if (e) e.preventDefault(); - - const { isNew, onError } = this.props; - if (isNew && this.getValidationState() === 'success') { - const { onAdd } = this.props; - const { value } = this.state; - onAdd(value); - - this.setState({ - value: '', - }); - } else { - onError('cropvalueerror'); - } - } - - render() { - const { isNew } = this.props; - const { value } = this.state; - - const renderedBtn = isNew ? ( - - ) : ( - - ); - - return ( -
    - - - - {renderedBtn} -
    - ); - } -} - -ContentSettingsCropRatioInput.propTypes = propTypes; -ContentSettingsCropRatioInput.defaultProps = defaultProps; - -export default ContentSettingsCropRatioInput; diff --git a/src/ui/content-settings/ContentSettingsCropRatios.js b/src/ui/content-settings/ContentSettingsCropRatios.js deleted file mode 100644 index efef1d92b..000000000 --- a/src/ui/content-settings/ContentSettingsCropRatios.js +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Row, Col } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; - -import RatioInput from 'ui/content-settings/ContentSettingsCropRatioInput'; - -const propTypes = { - cropRatios: PropTypes.arrayOf(PropTypes.string).isRequired, - onAdd: PropTypes.func.isRequired, - onDelete: PropTypes.func.isRequired, - onUpdate: PropTypes.func.isRequired, - onError: PropTypes.func.isRequired, -}; - -const ContentSettingsCropRatios = ({ - cropRatios, onAdd, onDelete, onUpdate, onError, -}) => ( -
    -

    - -

    -
    - - -
    - -
    - -
    - {cropRatios.map(cropRatio => ( - - - onDelete(cropRatio)} - onSave={newValue => onUpdate(cropRatio, newValue)} - onError={onError} - /> - - - ))} - - - - - -
    -); - -ContentSettingsCropRatios.propTypes = propTypes; - -export default ContentSettingsCropRatios; diff --git a/src/ui/content-settings/ContentSettingsCropRatiosContainer.js b/src/ui/content-settings/ContentSettingsCropRatiosContainer.js deleted file mode 100644 index 1f4387ef1..000000000 --- a/src/ui/content-settings/ContentSettingsCropRatiosContainer.js +++ /dev/null @@ -1,66 +0,0 @@ -import { connect } from 'react-redux'; -import { addToast, TOAST_SUCCESS, TOAST_ERROR } from '@entando/messages'; -import { defineMessages, injectIntl } from 'react-intl'; - -import { getCropRatios } from 'state/content-settings/selectors'; -import { addCropRatio, removeCropRatio, updateCropRatio } from 'state/content-settings/actions'; -import ContentSettingsCropRatios from 'ui/content-settings/ContentSettingsCropRatios'; - -const cropRatioSuccessMsgs = defineMessages({ - added: { - id: 'cms.contentsettings.ratio.added.success', - defaultMessage: 'Crop ratio added successfully', - }, - deleted: { - id: 'cms.contentsettings.ratio.deleted.success', - defaultMessage: 'Crop ratio deleted successfully', - }, - updated: { - id: 'cms.contentsettings.ratio.updated.success', - defaultMessage: 'Crop ratio updated successfully', - }, -}); - -const mapStateToProps = state => ({ - cropRatios: getCropRatios(state), -}); - -const mapDispatchToProps = (dispatch, { intl }) => ({ - onAdd: (cropRatio) => { - dispatch(addCropRatio(cropRatio)).then((res) => { - if (res) { - dispatch(addToast(intl.formatMessage(cropRatioSuccessMsgs.added), TOAST_SUCCESS)); - } - }); - }, - onDelete: (cropRatio) => { - dispatch(removeCropRatio(cropRatio)).then((res) => { - if (res) { - dispatch(addToast(intl.formatMessage(cropRatioSuccessMsgs.deleted), TOAST_SUCCESS)); - } - }); - }, - onUpdate: (cropRatio, newValue) => { - dispatch(updateCropRatio(cropRatio, newValue)).then((res) => { - if (res) { - dispatch(addToast(intl.formatMessage(cropRatioSuccessMsgs.updated), TOAST_SUCCESS)); - } - }); - }, - onError: (msg) => { - const errorMsg = defineMessages({ - crop: { - id: `cms.contentsettings.${msg}`, - defaultMessage: 'Crop Error', - }, - }); - dispatch(addToast(intl.formatMessage(errorMsg.crop), TOAST_ERROR)); - }, -}); - -const ContentSettingsCropRatiosContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(ContentSettingsCropRatios); - -export default injectIntl(ContentSettingsCropRatiosContainer); diff --git a/src/ui/content-settings/ContentSettingsGeneral.js b/src/ui/content-settings/ContentSettingsGeneral.js deleted file mode 100644 index 1a69f9e79..000000000 --- a/src/ui/content-settings/ContentSettingsGeneral.js +++ /dev/null @@ -1,218 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage, injectIntl, intlShape, defineMessages } from 'react-intl'; -import { Row, Col, Button, Icon, Spinner } from 'patternfly-react'; - -import RadioInput from 'ui/common/form/RenderRadioInput'; - -const messages = defineMessages({ - none: { - id: 'cms.label.none', - defaultMessage: 'None', - }, - texteditor: { - id: 'cms.label.textEditor', - defaultMessage: 'Text Editor', - }, - saving: { - id: 'cms.label.saving', - defaultMessage: 'Waiting', - }, - reloading: { - id: 'cms.label.reloading', - defaultMessage: 'Refreshing', - }, -}); - -class ContentSettingsGeneral extends Component { - componentDidMount() { - const { onDidMount } = this.props; - onDidMount(); - } - - render() { - const { - intl, - referenceStatus, - indexesStatus, - indexesLastReloadDate, - indexesLastReloadResult, - editorSettings, - onEditorChange, - onReloadReferences, - onReloadIndexes, - isReloadingReferences, - isReloadingIndexes, - isEditorChanging, - loading, - } = this.props; - - const editorInput = { - value: editorSettings.key, - name: 'editor', - onChange: onEditorChange, - }; - - const EDITOR_OPTIONS = [ - { - id: 'none', - label: intl.formatMessage(messages.none), - }, - { - id: 'fckeditor', - label: intl.formatMessage(messages.texteditor), - }, - ]; - - const saving = intl.formatMessage(messages.saving); - const reloading = intl.formatMessage(messages.reloading); - - const reloadStatusId = 'cms.contentsettings.label.reloadstatus'; - - let lastReloadRemarkId = ''; - if (indexesLastReloadDate) { - lastReloadRemarkId = `${reloadStatusId}.remark.${ - indexesLastReloadResult ? 'success' : 'failed' - }`; - } - - const statuses = defineMessages({ - reference: { - id: `${reloadStatusId}.${referenceStatus}`, - }, - indexes: { - id: `${reloadStatusId}.${indexesStatus}`, - }, - }); - - const generateEditorSwitch = () => ( - - - - - -
    - -
    {' '} - {isEditorChanging ? ( - - ({saving}... ) - - ) : ( - '' - )} - -
    - ); - - return ( - -
    - - - - - - {' '} - {isReloadingReferences ? ( - - ({reloading}... ) - - ) : ( - ({intl.formatMessage(statuses.reference)}) - )} - - -
    - - - - - - {' '} - {isReloadingIndexes ? ( - - ({reloading}... ) - - ) : ( - ({intl.formatMessage(statuses.indexes)}) - )} - - - {lastReloadRemarkId ? ( - - - -
    - -
    - -
    - ) : ( - '' - )} -
    - {generateEditorSwitch()} -
    -
    - ); - } -} - -ContentSettingsGeneral.propTypes = { - intl: intlShape.isRequired, - onDidMount: PropTypes.func.isRequired, - editorSettings: PropTypes.shape({ - label: PropTypes.string, - key: PropTypes.string, - }), - indexesStatus: PropTypes.number, - indexesLastReloadDate: PropTypes.string, - indexesLastReloadResult: PropTypes.bool, - referenceStatus: PropTypes.number, - onReloadReferences: PropTypes.func.isRequired, - onReloadIndexes: PropTypes.func.isRequired, - onEditorChange: PropTypes.func.isRequired, - isReloadingReferences: PropTypes.bool, - isReloadingIndexes: PropTypes.bool, - isEditorChanging: PropTypes.bool, - loading: PropTypes.bool, -}; - -ContentSettingsGeneral.defaultProps = { - indexesStatus: 1, - referenceStatus: 1, - editorSettings: { label: '', key: '' }, - indexesLastReloadDate: '', - indexesLastReloadResult: PropTypes.bool, - isReloadingReferences: false, - isReloadingIndexes: false, - isEditorChanging: false, - loading: false, -}; - -export default injectIntl(ContentSettingsGeneral); diff --git a/src/ui/content-settings/ContentSettingsGeneralContainer.js b/src/ui/content-settings/ContentSettingsGeneralContainer.js deleted file mode 100644 index d705c4ddc..000000000 --- a/src/ui/content-settings/ContentSettingsGeneralContainer.js +++ /dev/null @@ -1,58 +0,0 @@ -import { connect } from 'react-redux'; -import moment from 'moment'; -import { - getIndexesStatus, - getReferencesStatus, - getIndexesLastReload, - getEditorSettings, -} from 'state/content-settings/selectors'; -import { getLoading } from 'state/loading/selectors'; -import { - fetchContentSettings, - sendPostReloadReferences, - sendPostReloadIndexes, - sendPutEditorSettings, -} from 'state/content-settings/actions'; -import ContentSettingsGeneral from 'ui/content-settings/ContentSettingsGeneral'; - -export const mapStateToProps = (state) => { - const loads = getLoading(state); - - const indexesLastReload = getIndexesLastReload(state); - let indexesLastReloadProps = { - indexesLastReloadDate: null, - indexesLastReloadResult: false, - }; - if (indexesLastReload) { - const mstamp = moment.unix(indexesLastReload.date / 1000); - indexesLastReloadProps = { - indexesLastReloadDate: mstamp.format('DD/MM/YYYY kk:mm'), - indexesLastReloadResult: indexesLastReload.result === 1, - }; - } - - return { - ...indexesLastReloadProps, - indexesStatus: getIndexesStatus(state), - referenceStatus: getReferencesStatus(state), - editorSettings: getEditorSettings(state), - isReloadingReferences: loads.reloadReferences, - isReloadingIndexes: loads.reloadIndexes, - isEditorChanging: loads.putEditorSettings, - loading: loads.getSettings, - }; -}; - -export const mapDispatchToProps = dispatch => ({ - onDidMount: () => dispatch(fetchContentSettings()), - onReloadReferences: () => dispatch(sendPostReloadReferences()), - onReloadIndexes: () => dispatch(sendPostReloadIndexes()), - onEditorChange: key => dispatch(sendPutEditorSettings({ key })), -}); - -const ContentSettingsGeneralContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(ContentSettingsGeneral); - -export default ContentSettingsGeneralContainer; diff --git a/src/ui/content-settings/ContentSettingsPage.js b/src/ui/content-settings/ContentSettingsPage.js deleted file mode 100644 index 343604e1a..000000000 --- a/src/ui/content-settings/ContentSettingsPage.js +++ /dev/null @@ -1,55 +0,0 @@ -import React from 'react'; -import { Row, Col, CardGrid, Grid, Breadcrumb } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import ContentSettingsGeneralContainer from 'ui/content-settings/ContentSettingsGeneralContainer'; -import ContentSettingsCropRatiosContainer from 'ui/content-settings/ContentSettingsCropRatiosContainer'; -import ContentSettingsMetadataListContainer from 'ui/content-settings/metadata/ContentSettingsMetadataListContainer'; -import AddContentSettingsMetadataContainer from 'ui/content-settings/metadata/AddContentSettingsMetadataContainer'; - -const ContentSettingsPage = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default ContentSettingsPage; diff --git a/src/ui/content-settings/metadata/AddContentSettingsMetadata.js b/src/ui/content-settings/metadata/AddContentSettingsMetadata.js deleted file mode 100644 index 69668ab87..000000000 --- a/src/ui/content-settings/metadata/AddContentSettingsMetadata.js +++ /dev/null @@ -1,70 +0,0 @@ -import React, { Fragment } from 'react'; -import PropTypes from 'prop-types'; -import { reduxForm, Field } from 'redux-form'; -import { Row, Col, Button } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; - -import ErrorsAlertContainer from 'ui/common/form/ErrorsAlertContainer'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; - -const AddContentSettingsMetadataBody = ({ invalid, submitting, handleSubmit }) => ( - -

    - -

    - -
    - - - - - - } - /> - - - } - /> - - - - - -
    -
    -); - -AddContentSettingsMetadataBody.propTypes = { - invalid: PropTypes.bool, - submitting: PropTypes.bool, - handleSubmit: PropTypes.func.isRequired, -}; - -AddContentSettingsMetadataBody.defaultProps = { - invalid: false, - submitting: false, -}; - -const AddContentSettingsMetadata = reduxForm({ - form: 'addsettingsmetadata', - enableReinitialize: true, -})(AddContentSettingsMetadataBody); - -export default AddContentSettingsMetadata; diff --git a/src/ui/content-settings/metadata/AddContentSettingsMetadataContainer.js b/src/ui/content-settings/metadata/AddContentSettingsMetadataContainer.js deleted file mode 100644 index 051112a10..000000000 --- a/src/ui/content-settings/metadata/AddContentSettingsMetadataContainer.js +++ /dev/null @@ -1,42 +0,0 @@ -import { connect } from 'react-redux'; -import { addToast, TOAST_SUCCESS } from '@entando/messages'; -import { defineMessages, injectIntl } from 'react-intl'; -import { getLoading } from 'state/loading/selectors'; -import { reset } from 'redux-form'; -import { sendPostMetadataMap } from 'state/content-settings/actions'; - -import AddContentSettingsMetadata from 'ui/content-settings/metadata/AddContentSettingsMetadata'; - -const metadataMsgs = defineMessages({ - saved: { - id: 'cms.contentsettings.form.saved', - defaultMessage: '{name} saved.', - }, -}); - -export const mapStateToProps = state => ({ - loading: getLoading(state).contentSettings, -}); - -export const mapDispatchToProps = (dispatch, { intl }) => ({ - onSubmit: (values) => { - const { key, mapping } = values; - dispatch(sendPostMetadataMap(key, mapping)).then((res) => { - if (res) { - dispatch(reset('addsettingsmetadata')); - dispatch(addToast(intl.formatMessage(metadataMsgs.saved, { name: key }), TOAST_SUCCESS)); - } - }); - }, -}); - -const AddContentSettingsMetadataContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(AddContentSettingsMetadata); - -export default injectIntl(AddContentSettingsMetadataContainer); diff --git a/src/ui/content-settings/metadata/ContentSettingsMetadataList.js b/src/ui/content-settings/metadata/ContentSettingsMetadataList.js deleted file mode 100644 index 757741c82..000000000 --- a/src/ui/content-settings/metadata/ContentSettingsMetadataList.js +++ /dev/null @@ -1,103 +0,0 @@ -import React, { Component, Fragment } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { Row, Col, Button, Icon } from 'patternfly-react'; -import DeleteContentMetadataModalContainer from 'ui/content-settings/metadata/DeleteContentMetadataModalContainer'; -import { reduxForm, Field } from 'redux-form'; - -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; - -class ContentSettingsMetadataListBody extends Component { - constructor(props) { - super(props); - this.onClickDelete = this.onClickDelete.bind(this); - this.onFieldKeyUp = this.onFieldKeyUp.bind(this); - } - - onFieldKeyUp(ev) { - if (ev.keyCode !== 13) return; - const { submit } = this.props; - submit(); - } - - onClickDelete(ev) { - const { onPromptDelete } = this.props; - const { key, metadata } = ev.currentTarget.dataset; - onPromptDelete({ key, metadata }); - } - - render() { - const { handleSubmit, metadata, loadings } = this.props; - return ( - -
    - {metadata.map(meta => ( - - - {`'${meta.key}' Metadata`} - - - - )} - /> - - - - - - - - - ))} -
    - -
    - ); - } -} - -ContentSettingsMetadataListBody.propTypes = { - metadata: PropTypes.arrayOf(PropTypes.shape({})), - handleSubmit: PropTypes.func.isRequired, - submit: PropTypes.func.isRequired, - loadings: PropTypes.shape({}), - onPromptDelete: PropTypes.func.isRequired, -}; - -ContentSettingsMetadataListBody.defaultProps = { - metadata: [], - loadings: {}, -}; - -const ContentSettingsMetadataList = reduxForm({ - form: 'settingsmetadata', - enableReinitialize: true, -})(ContentSettingsMetadataListBody); - -export default ContentSettingsMetadataList; diff --git a/src/ui/content-settings/metadata/ContentSettingsMetadataListContainer.js b/src/ui/content-settings/metadata/ContentSettingsMetadataListContainer.js deleted file mode 100644 index 9ff530e8b..000000000 --- a/src/ui/content-settings/metadata/ContentSettingsMetadataListContainer.js +++ /dev/null @@ -1,47 +0,0 @@ -import { connect } from 'react-redux'; -import { - getMetadataMappingList, - getMetadataMappingFormData, -} from 'state/content-settings/selectors'; -import { checkAndPutMetadataMap } from 'state/content-settings/actions'; -import { setVisibleModal, setInfo } from 'state/modal/actions'; -import { getLoading } from 'state/loading/selectors'; -import { MODAL_ID } from 'ui/content-settings/metadata/DeleteContentMetadataModal'; - -import ContentSettingsMetadataList from 'ui/content-settings/metadata/ContentSettingsMetadataList'; - -export const mapStateToProps = (state) => { - const metadata = getMetadataMappingList(state); - const loadings = metadata.reduce((acc, { key }) => { - acc[key] = getLoading(state)[key]; - return acc; - }, {}); - return { - metadata, - loadings, - initialValues: { - ...getMetadataMappingFormData(state), - }, - }; -}; - -export const mapDispatchToProps = dispatch => ({ - onSubmit: (values) => { - dispatch(checkAndPutMetadataMap(values)); - }, - onPromptDelete: (item) => { - dispatch(setVisibleModal(MODAL_ID)); - dispatch(setInfo(item)); - }, -}); - -const ContentSettingsMetadataListContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(ContentSettingsMetadataList); - -export default ContentSettingsMetadataListContainer; diff --git a/src/ui/content-settings/metadata/DeleteContentMetadataModal.js b/src/ui/content-settings/metadata/DeleteContentMetadataModal.js deleted file mode 100644 index b2f76f102..000000000 --- a/src/ui/content-settings/metadata/DeleteContentMetadataModal.js +++ /dev/null @@ -1,70 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import GenericModalContainer from 'ui/common/modal/GenericModalContainer'; -import { - Button, - EmptyState, - Modal, - EmptyStateIcon, - EmptyStateTitle, - EmptyStateInfo, -} from 'patternfly-react'; - -export const MODAL_ID = 'DeleteContentMetadataModal'; - -const DeleteContentMetadataModal = ({ onConfirmDelete, info }) => { - const buttons = [ - , - ]; - - const modalTitle = ( - - - - ); - - return ( - - - - - -  {`"${info.key}"`} - - - - - - - ); -}; - -DeleteContentMetadataModal.propTypes = { - onConfirmDelete: PropTypes.func.isRequired, - info: PropTypes.shape({ - id: PropTypes.number, - descr: PropTypes.string, - key: PropTypes.string, - }), -}; - -DeleteContentMetadataModal.defaultProps = { - info: { - id: '', - descr: '', - }, -}; - -export default DeleteContentMetadataModal; diff --git a/src/ui/content-settings/metadata/DeleteContentMetadataModalContainer.js b/src/ui/content-settings/metadata/DeleteContentMetadataModalContainer.js deleted file mode 100644 index 8213d06ae..000000000 --- a/src/ui/content-settings/metadata/DeleteContentMetadataModalContainer.js +++ /dev/null @@ -1,40 +0,0 @@ -import { connect } from 'react-redux'; -import { setVisibleModal } from 'state/modal/actions'; -import { getInfo } from 'state/modal/selectors'; -import { sendDeleteMetadataMap } from 'state/content-settings/actions'; -import { addToast, TOAST_SUCCESS } from '@entando/messages'; -import { defineMessages, injectIntl } from 'react-intl'; - -import DeleteContentMetadataModal from 'ui/content-settings/metadata/DeleteContentMetadataModal'; - -const contentTemplateMsgs = defineMessages({ - removed: { - id: 'cms.contentsettings.metadata.infoDeleted', - defaultMessage: '{name} deleted.', - }, -}); - -export const mapStateToProps = state => ({ - info: getInfo(state), -}); - -export const mapDispatchToProps = (dispatch, { intl }) => ({ - onConfirmDelete: (contMeta) => { - dispatch(sendDeleteMetadataMap(contMeta.key)).then((res) => { - if (res) { - dispatch(addToast( - intl.formatMessage(contentTemplateMsgs.removed, { name: contMeta.key }), - TOAST_SUCCESS, - )); - } - }); - dispatch(setVisibleModal('')); - }, -}); - -const DeleteContentMetadataModalContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(DeleteContentMetadataModal); - -export default injectIntl(DeleteContentMetadataModalContainer); diff --git a/src/ui/content-template/AddContentTemplateForm.js b/src/ui/content-template/AddContentTemplateForm.js deleted file mode 100644 index bd60a63a4..000000000 --- a/src/ui/content-template/AddContentTemplateForm.js +++ /dev/null @@ -1,270 +0,0 @@ -import React, { Component, Fragment } from 'react'; -import PropTypes from 'prop-types'; -import { Field, reduxForm } from 'redux-form'; -import { Row, Col, Button, Modal } from 'patternfly-react'; -import { FormattedMessage, FormattedHTMLMessage, intlShape, defineMessages } from 'react-intl'; -import { required, maxLength } from '@entando/utils'; - -import RenderDropdownTypeaheadInput from 'ui/common/form/RenderDropdownTypeaheadInput'; -import RenderContentTemplateInput from 'ui/common/form/RenderContentTemplateInput'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; -import DraggableDialog from 'ui/common/DraggableDialog'; - -import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer'; - -const EDIT_MODE = 'edit'; -const NEW_MODE = 'new'; - -const max10Digits = value => ( - value && /^[0-9]{1,10}$/.test(value) - ? undefined - : ( - - ) -); -const maxLength50 = maxLength(50); - -const messages = defineMessages({ - chooseContentType: { - id: 'cms.label.select', - defaultMessage: 'Please select', - }, - htmlModelAppend: { - id: 'cms.contenttemplate.form.presscontext', - defaultMessage: 'CTRL + Space', - }, -}); - -class AddContentTemplateFormBody extends Component { - constructor(props) { - super(props); - this.state = { - modalOpened: false, - }; - this.handleModalOpen = this.handleModalOpen.bind(this); - this.handleModalClose = this.handleModalClose.bind(this); - } - - componentDidMount() { - const { onDidMount } = this.props; - onDidMount(); - } - - componentWillUnmount() { - const { onDidUnmount } = this.props; - onDidUnmount(); - } - - handleModalOpen() { - this.setState({ modalOpened: true }); - } - - handleModalClose() { - this.setState({ modalOpened: false }); - } - - render() { - const { - handleSubmit, invalid, submitting, intl, mode, contentTypes, - dirty, - onCancel, - onDiscard, - onSave, - dictionary, - onChangeContentType, - } = this.props; - const { modalOpened } = this.state; - - const handleCancelClick = () => { - if (dirty) { - onCancel(); - } else { - onDiscard(); - } - }; - - return ( -
    - - - - - - - - - - - - - - - -
    - -
    - * -
    -
    - - } - validate={[required, max10Digits]} - disabled={mode === EDIT_MODE} - /> - } - validate={[required, maxLength50]} - /> - - )} - options={contentTypes} - labelKey="name" - valueKey="code" - onChange={onChangeContentType} - placeholder={intl.formatMessage(messages.chooseContentType)} - validate={[required]} - /> -
    - - - - )} - prepend={( - - -

    - -
    - -
    - -

    -
    - )} - component={RenderContentTemplateInput} - cols="50" - rows="8" - dictionary={dictionary} - className="form-control" - append={intl.formatMessage(messages.htmlModelAppend)} - validate={[required]} - /> - - - - )} - /> - -
    -
    - - - - - - - -
    - ); - } -} - -AddContentTemplateFormBody.propTypes = { - intl: intlShape.isRequired, - dictionary: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - handleSubmit: PropTypes.func.isRequired, - onChangeContentType: PropTypes.func.isRequired, - contentTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - invalid: PropTypes.bool, - onDidMount: PropTypes.func.isRequired, - onDidUnmount: PropTypes.func.isRequired, - submitting: PropTypes.bool, - mode: PropTypes.string, - dirty: PropTypes.bool, - onDiscard: PropTypes.func.isRequired, - onCancel: PropTypes.func.isRequired, - onSave: PropTypes.func.isRequired, -}; - -AddContentTemplateFormBody.defaultProps = { - invalid: false, - submitting: false, - mode: NEW_MODE, - dirty: false, -}; - -const AddContentTemplateForm = reduxForm({ - form: 'contenttemplateform', -})(AddContentTemplateFormBody); - -export default AddContentTemplateForm; diff --git a/src/ui/content-template/AddContentTemplateFormContainer.js b/src/ui/content-template/AddContentTemplateFormContainer.js deleted file mode 100644 index 6739bec1c..000000000 --- a/src/ui/content-template/AddContentTemplateFormContainer.js +++ /dev/null @@ -1,73 +0,0 @@ -import { connect } from 'react-redux'; -import { addToast, TOAST_SUCCESS } from '@entando/messages'; -import { injectIntl, defineMessages } from 'react-intl'; -import { withRouter } from 'react-router-dom'; -import { submit } from 'redux-form'; -import { routeConverter } from '@entando/utils'; - -import { getContentTemplateDictionaryList } from 'state/content-template/selectors'; -import { - fetchContentTemplateDictionary, - sendPostContentTemplate, - clearContentTemplate, - clearContentTemplateDictionary, -} from 'state/content-template/actions'; -import { fetchContentTypeListPaged, fetchContentType, clearSelectedContentType } from 'state/content-type/actions'; -import { getContentTypeList } from 'state/content-type/selectors'; -import { ROUTE_CMS_CONTENTTEMPLATE_LIST } from 'app-init/router'; - -import { setVisibleModal } from 'state/modal/actions'; -import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal'; - -import AddContentTemplateForm from 'ui/content-template/AddContentTemplateForm'; - -const contentTemplateMsgs = defineMessages({ - saved: { - id: 'cms.contenttemplate.form.saved', - defaultMessage: '{name} saved.', - }, -}); - -export const mapStateToProps = state => ({ - dictionary: getContentTemplateDictionaryList(state), - contentTypes: getContentTypeList(state), -}); - -export const mapDispatchToProps = (dispatch, { intl, history }) => ({ - onDidMount: () => { - dispatch(fetchContentTemplateDictionary()); - dispatch(fetchContentTypeListPaged({ pageSize: 0 })); - }, - onDidUnmount: () => { - dispatch(clearContentTemplate()); - dispatch(clearContentTemplateDictionary()); - dispatch(clearSelectedContentType()); - }, - onChangeContentType: (code) => { - dispatch(fetchContentType(code, false)); - }, - onSubmit: values => ( - dispatch(sendPostContentTemplate(values)).then((res) => { - if (res) { - dispatch(addToast( - intl.formatMessage(contentTemplateMsgs.saved, { modelname: values.descr }), - TOAST_SUCCESS, - )); - history.push(ROUTE_CMS_CONTENTTEMPLATE_LIST); - } - })), - onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('contenttemplateform')); }, - onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)), - onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTTEMPLATE_LIST)); }, -}); - -const AddContentTemplateFormContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(AddContentTemplateForm); - -export default withRouter(injectIntl(AddContentTemplateFormContainer)); diff --git a/src/ui/content-template/AddContentTemplatePage.js b/src/ui/content-template/AddContentTemplatePage.js deleted file mode 100644 index a42b5933e..000000000 --- a/src/ui/content-template/AddContentTemplatePage.js +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import { Row, Col, Grid, Breadcrumb } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import AddContentTemplateFormContainer from 'ui/content-template/AddContentTemplateFormContainer'; - -const AddContentTemplatePage = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default AddContentTemplatePage; diff --git a/src/ui/content-template/ContentTemplateList.js b/src/ui/content-template/ContentTemplateList.js deleted file mode 100644 index fbed050d2..000000000 --- a/src/ui/content-template/ContentTemplateList.js +++ /dev/null @@ -1,184 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage, injectIntl, intlShape } from 'react-intl'; -import { - Spinner, - DropdownKebab, - MenuItem, - PaginationRow, -} from 'patternfly-react'; -import { DataTable } from '@entando/datatable'; -import { LinkMenuItem } from '@entando/menu'; -import { routeConverter } from '@entando/utils'; -import { ROUTE_CMS_CONTENTTEMPLATE_EDIT } from 'app-init/router'; - -import DeleteContentTemplateModalContainer from 'ui/content-template/DeleteContentTemplateModalContainer'; -import paginatorMessages from 'ui/common/paginatorMessages'; - -const perPageOptions = [5, 10, 15, 25, 50]; - -class ContentTemplateList extends Component { - constructor(props) { - super(props); - - this.changePage = this.changePage.bind(this); - this.changePageSize = this.changePageSize.bind(this); - } - - componentDidMount() { - const { onDidMount, columnOrder, onSetColumnOrder } = this.props; - if (!columnOrder.length) { - onSetColumnOrder(['id', 'contentType', 'descr']); - } - onDidMount(); - } - - getColumnDefs() { - const { columnOrder } = this.props; - - const columnDefs = { - id: { - Header: , - attributes: { - style: { width: '10%' }, - }, - }, - contentType: { - Header: , - attributes: { - style: { width: '20%' }, - }, - }, - descr: { - Header: , - attributes: { - style: { width: '60%' }, - }, - }, - }; - - return columnOrder.map(column => ({ - ...columnDefs[column], - accessor: column, - })); - } - - changePage(page) { - const { fetchList, pageSize } = this.props; - fetchList({ page, pageSize }); - } - - changePageSize(pageSize) { - const { fetchList } = this.props; - fetchList({ page: 1, pageSize }); - } - - render() { - const { - intl, - contentTemplates, - loading, - onClickDelete, - onSetColumnOrder, - page, - pageSize, - totalItems, - lastPage, - } = this.props; - - const pagination = { - page, - perPage: pageSize, - perPageOptions, - }; - - const columns = this.getColumnDefs() || []; - - const itemsStart = totalItems === 0 ? 0 : ((page - 1) * pageSize) + 1; - const itemsEnd = Math.min(page * pageSize, totalItems); - - const rowAction = { - Header: , - cellAttributes: { - className: 'text-center', - }, - Cell: ({ values: item }) => ( - - } - className="ContentTemplateList__menu-item-edit" - /> - onClickDelete(item)}> - - - - ), - }; - - const messages = Object.keys(paginatorMessages).reduce((acc, curr) => ( - { ...acc, [curr]: intl.formatMessage(paginatorMessages[curr]) } - ), {}); - - return ( -
    - - - this.changePage(1)} - onPreviousPage={() => this.changePage(page - 1)} - onPageInput={this.onPageInput} - onNextPage={() => this.changePage(page + 1)} - onLastPage={() => this.changePage(lastPage)} - messages={messages} - /> - - -
    - ); - } -} - -ContentTemplateList.propTypes = { - intl: intlShape.isRequired, - contentTemplates: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - loading: PropTypes.bool, - onDidMount: PropTypes.func.isRequired, - fetchList: PropTypes.func.isRequired, - onClickDelete: PropTypes.func.isRequired, - page: PropTypes.number.isRequired, - pageSize: PropTypes.number.isRequired, - totalItems: PropTypes.number.isRequired, - lastPage: PropTypes.number.isRequired, - columnOrder: PropTypes.arrayOf(PropTypes.string), - onSetColumnOrder: PropTypes.func, -}; - -ContentTemplateList.defaultProps = { - loading: false, - onSetColumnOrder: () => {}, - columnOrder: [], -}; - -export default injectIntl(ContentTemplateList); diff --git a/src/ui/content-template/ContentTemplateListContainer.js b/src/ui/content-template/ContentTemplateListContainer.js deleted file mode 100644 index e0849b03b..000000000 --- a/src/ui/content-template/ContentTemplateListContainer.js +++ /dev/null @@ -1,54 +0,0 @@ -import { connect } from 'react-redux'; -import { getContentTemplateList, getContentTemplateFilters } from 'state/content-template/selectors'; -import { - pageDefault, - setListFilterProps, - fetchContentTemplateListPaged, -} from 'state/content-template/actions'; -import { getLoading } from 'state/loading/selectors'; -import { setVisibleModal, setInfo } from 'state/modal/actions'; -import { getPagination } from 'state/pagination/selectors'; -import { setColumnOrder } from 'state/table-column-order/actions'; -import { getColumnOrder } from 'state/table-column-order/selectors'; -import { NAMESPACE_CONTENT_TEMPLATES } from 'state/pagination/const'; - -import ContentTemplateList from 'ui/content-template/ContentTemplateList'; -import { MODAL_ID } from 'ui/content-template/DeleteContentTemplateModal'; - -export const mapStateToProps = (state) => { - const { - page, totalItems, pageSize, lastPage, - } = getPagination(state, NAMESPACE_CONTENT_TEMPLATES); - return { - contentTemplates: getContentTemplateList(state), - loading: getLoading(state).contentTemplateList, - page, - totalItems, - pageSize, - lastPage, - filters: getContentTemplateFilters(state), - columnOrder: getColumnOrder(state, 'contentTemplates'), - }; -}; - -export const mapDispatchToProps = dispatch => ({ - onDidMount: () => { - dispatch(setListFilterProps({})); - dispatch(fetchContentTemplateListPaged(pageDefault)); - }, - onSetColumnOrder: columnOrder => dispatch(setColumnOrder(columnOrder, 'contentTemplates')), - fetchList: (page = pageDefault) => ( - dispatch(fetchContentTemplateListPaged(page)) - ), - onClickDelete: (item) => { - dispatch(setVisibleModal(MODAL_ID)); - dispatch(setInfo(item)); - }, -}); - -const ContentTemplateListContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(ContentTemplateList); - -export default ContentTemplateListContainer; diff --git a/src/ui/content-template/ContentTemplateListPage.js b/src/ui/content-template/ContentTemplateListPage.js deleted file mode 100644 index 15b665ca8..000000000 --- a/src/ui/content-template/ContentTemplateListPage.js +++ /dev/null @@ -1,62 +0,0 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; -import { Row, Col, Grid, Breadcrumb, Button } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import ContentTemplateSearchFormContainer from 'ui/content-template/ContentTemplateSearchFormContainer'; -import ContentTemplateListContainer from 'ui/content-template/ContentTemplateListContainer'; -import { ROUTE_CMS_CONTENTTEMPLATE_ADD } from 'app-init/router'; - -const ContentTemplateListPage = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default ContentTemplateListPage; diff --git a/src/ui/content-template/ContentTemplateSearchForm.js b/src/ui/content-template/ContentTemplateSearchForm.js deleted file mode 100644 index 9b5954578..000000000 --- a/src/ui/content-template/ContentTemplateSearchForm.js +++ /dev/null @@ -1,110 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { Row, Col, Grid, Button, DropdownButton, MenuItem, Label, Icon } from 'patternfly-react'; -import { Field, reduxForm } from 'redux-form'; -import { defineMessages, injectIntl, intlShape, FormattedMessage } from 'react-intl'; -import RenderSearchFormInput from 'ui/common/form/RenderSearchFormInput'; - -class ContentTemplateSearchFormBody extends Component { - constructor(props) { - super(props); - this.clearSearch = this.clearSearch.bind(this); - this.messages = defineMessages({ - searchPlaceholder: { - id: 'cms.contenttemplate.searchPlaceholder', - defaultMessage: 'Search Content Template', - }, - valueName: { - id: 'cms.contenttemplate.searchFilter.valueName', - defaultMessage: 'Name', - }, - }); - } - - componentDidMount() { - const { onDidMount } = this.props; - onDidMount(); - } - - clearSearch() { - const { reset, submit, searchTerm } = this.props; - reset(); - if (searchTerm !== '') setTimeout(submit, 10); - } - - render() { - const { - intl, - handleSubmit, - selectOptions, - onChangeSearchType, - selectedAttribute, - } = this.props; - - return ( -
    - - - - - - {selectOptions.map((option, idx) => ( - {option.label} - ))} - - - - - - - - - - -
    - ); - } -} - -ContentTemplateSearchFormBody.propTypes = { - intl: intlShape.isRequired, - onDidMount: PropTypes.func.isRequired, - handleSubmit: PropTypes.func.isRequired, - reset: PropTypes.func.isRequired, - searchTerm: PropTypes.string, - selectOptions: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - onChangeSearchType: PropTypes.func.isRequired, - submit: PropTypes.func.isRequired, - selectedAttribute: PropTypes.shape({ - label: PropTypes.string, - value: PropTypes.string, - }).isRequired, -}; - -ContentTemplateSearchFormBody.defaultProps = { - searchTerm: '', -}; - -const ContentTemplateSearchForm = reduxForm({ - form: 'contentTemplateSearchForm', -})(ContentTemplateSearchFormBody); - -export default injectIntl(ContentTemplateSearchForm); diff --git a/src/ui/content-template/ContentTemplateSearchFormContainer.js b/src/ui/content-template/ContentTemplateSearchFormContainer.js deleted file mode 100644 index 83e8afc60..000000000 --- a/src/ui/content-template/ContentTemplateSearchFormContainer.js +++ /dev/null @@ -1,70 +0,0 @@ -import { connect } from 'react-redux'; -import { get } from 'lodash'; -import { injectIntl, defineMessages } from 'react-intl'; -import { setSearchAttribute, filterContentTemplateBySearch, setSearchKeyword } from 'state/content-template/actions'; -import { - getContentTemplateSearchAttribute, - getContentTemplateSearchKeyword, -} from 'state/content-template/selectors'; - -import ContentTemplateSearchForm from 'ui/content-template/ContentTemplateSearchForm'; - -const optionMap = [ - { - label: 'cms.contenttemplate.searchFilter.valueName', - value: 'descr', - }, - { - label: 'cms.contenttemplate.form.code', - value: 'id', - }, -]; - -const msgMap = optionMap.reduce((acc, { label, value }) => ({ - ...acc, - [value]: { id: label }, -}), {}); - -export const mapStateToProps = (state, { intl }) => { - const msgs = defineMessages(msgMap); - const selectOptions = optionMap.map((option) => { - msgMap[option.value].label = intl.formatMessage(msgs[option.value]); - return { - ...option, - label: msgMap[option.value].label, - }; - }); - const value = getContentTemplateSearchAttribute(state); - return { - searchTerm: getContentTemplateSearchKeyword(state), - selectOptions, - selectedAttribute: { - value, - label: get(msgMap, `${value}.label`, ''), - }, - }; -}; - -export const mapDispatchToProps = dispatch => ({ - onDidMount: () => { - dispatch(setSearchKeyword('')); - dispatch(setSearchAttribute('descr')); - }, - onChangeSearchType: evkey => ( - dispatch(setSearchAttribute(optionMap[evkey - 1].value)) - ), - onSubmit: ({ keyword }) => { - dispatch(filterContentTemplateBySearch(keyword)); - }, -}); - -const ContentTemplateSearchFormContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(ContentTemplateSearchForm); - -export default injectIntl(ContentTemplateSearchFormContainer); diff --git a/src/ui/content-template/DeleteContentTemplateModal.js b/src/ui/content-template/DeleteContentTemplateModal.js deleted file mode 100644 index f0914e278..000000000 --- a/src/ui/content-template/DeleteContentTemplateModal.js +++ /dev/null @@ -1,69 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import GenericModalContainer from 'ui/common/modal/GenericModalContainer'; -import { - Button, - EmptyState, - Modal, - EmptyStateIcon, - EmptyStateTitle, - EmptyStateInfo, -} from 'patternfly-react'; - -export const MODAL_ID = 'DeleteContentTemplateModal'; - -const DeleteContentTemplateModal = ({ onConfirmDelete, info }) => { - const buttons = [ - , - ]; - - const modalTitle = ( - - - - ); - - return ( - - - - - -  {info.descr} - - - - - - - ); -}; - -DeleteContentTemplateModal.propTypes = { - onConfirmDelete: PropTypes.func.isRequired, - info: PropTypes.shape({ - id: PropTypes.number, - descr: PropTypes.string, - }), -}; - -DeleteContentTemplateModal.defaultProps = { - info: { - id: '', - descr: '', - }, -}; - -export default DeleteContentTemplateModal; diff --git a/src/ui/content-template/DeleteContentTemplateModalContainer.js b/src/ui/content-template/DeleteContentTemplateModalContainer.js deleted file mode 100644 index 27d4f1a47..000000000 --- a/src/ui/content-template/DeleteContentTemplateModalContainer.js +++ /dev/null @@ -1,40 +0,0 @@ -import { connect } from 'react-redux'; -import { setVisibleModal } from 'state/modal/actions'; -import { getInfo } from 'state/modal/selectors'; -import { sendDeleteContentTemplate } from 'state/content-template/actions'; -import { addToast, TOAST_SUCCESS } from '@entando/messages'; -import { defineMessages, injectIntl } from 'react-intl'; - -import DeleteContentTemplateModal from 'ui/content-template/DeleteContentTemplateModal'; - -const contentTemplateMsgs = defineMessages({ - removed: { - id: 'cms.contenttemplate.list.infoDeleted', - defaultMessage: '{name} deleted.', - }, -}); - -export const mapStateToProps = state => ({ - info: getInfo(state), -}); - -export const mapDispatchToProps = (dispatch, { intl }) => ({ - onConfirmDelete: (contModel) => { - dispatch(sendDeleteContentTemplate(contModel.id)).then((res) => { - if (res) { - dispatch(addToast( - intl.formatMessage(contentTemplateMsgs.removed, { modelname: contModel.descr }), - TOAST_SUCCESS, - )); - } - }); - dispatch(setVisibleModal('')); - }, -}); - -const DeleteContentTemplateModalContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(DeleteContentTemplateModal); - -export default injectIntl(DeleteContentTemplateModalContainer); diff --git a/src/ui/content-template/EditContentTemplateFormContainer.js b/src/ui/content-template/EditContentTemplateFormContainer.js deleted file mode 100644 index 71105d2c6..000000000 --- a/src/ui/content-template/EditContentTemplateFormContainer.js +++ /dev/null @@ -1,79 +0,0 @@ -import { connect } from 'react-redux'; -import { addToast, TOAST_SUCCESS } from '@entando/messages'; -import { injectIntl, defineMessages } from 'react-intl'; -import { withRouter } from 'react-router-dom'; -import { submit } from 'redux-form'; -import { routeConverter } from '@entando/utils'; - -import { setVisibleModal } from 'state/modal/actions'; -import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal'; - -import { fetchContentTypeListPaged, fetchContentType, clearSelectedContentType } from 'state/content-type/actions'; -import { - fetchContentTemplateDictionary, - sendPutContentTemplate, - fetchContentTemplate, - clearContentTemplate, - clearContentTemplateDictionary, -} from 'state/content-template/actions'; -import { getContentTypeList } from 'state/content-type/selectors'; -import { getContentTemplateDictionaryList } from 'state/content-template/selectors'; -import { ROUTE_CMS_CONTENTTEMPLATE_LIST } from 'app-init/router'; - -import AddContentTemplateForm from 'ui/content-template/AddContentTemplateForm'; - -const contentTemplateMsgs = defineMessages({ - saved: { - id: 'cms.contenttemplate.form.saved', - defaultMessage: '{name} saved.', - }, -}); - -export const mapStateToProps = (state) => { - const contentTypes = getContentTypeList(state); - return { - contentTypes, - mode: 'edit', - dictionary: getContentTemplateDictionaryList(state), - }; -}; - -export const mapDispatchToProps = (dispatch, { intl, history, match: { params } }) => ({ - onDidMount: () => { - dispatch(fetchContentTypeListPaged({ pageSize: 0 })) - .then(() => dispatch(fetchContentTemplate(params.id))) - .then(({ contentType }) => dispatch(fetchContentType(contentType, false))) - .then(() => dispatch(fetchContentTemplateDictionary())); - }, - onDidUnmount: () => { - dispatch(clearContentTemplate()); - dispatch(clearContentTemplateDictionary()); - dispatch(clearSelectedContentType()); - }, - onChangeContentType: (code) => { - dispatch(fetchContentType(code)); - }, - onSubmit: values => dispatch(sendPutContentTemplate(values)).then((res) => { - if (res) { - dispatch(addToast( - intl.formatMessage(contentTemplateMsgs.saved, { modelname: values.descr }), - TOAST_SUCCESS, - )); - history.push(ROUTE_CMS_CONTENTTEMPLATE_LIST); - } - }), - onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('contenttemplateform')); }, - onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)), - onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTTEMPLATE_LIST)); }, -}); - -const EditContentTemplateFormContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(AddContentTemplateForm); - -export default withRouter(injectIntl(EditContentTemplateFormContainer)); diff --git a/src/ui/content-template/EditContentTemplatePage.js b/src/ui/content-template/EditContentTemplatePage.js deleted file mode 100644 index 25d25e9dc..000000000 --- a/src/ui/content-template/EditContentTemplatePage.js +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import { Row, Col, Grid, Breadcrumb } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import EditContentTemplateFormContainer from 'ui/content-template/EditContentTemplateFormContainer'; - -const EditContentTemplatePage = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default EditContentTemplatePage; diff --git a/src/ui/content-type/AddContentTypeForm.js b/src/ui/content-type/AddContentTypeForm.js deleted file mode 100644 index 1a0456e64..000000000 --- a/src/ui/content-type/AddContentTypeForm.js +++ /dev/null @@ -1,266 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { Field, reduxForm } from 'redux-form'; -import { FormattedMessage, intlShape } from 'react-intl'; -import { InputGroup, Button, Row, Col } from 'patternfly-react'; - -import { required, maxLength } from '@entando/utils'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import RenderSelectInput from 'ui/common/form/RenderSelectInput'; -import FormLabel from 'ui/common/form/FormLabel'; -import AttributeListTable from 'ui/common/contenttype-attributes/AttributeListTable'; -import DeleteAttributeModalContainer from 'ui/content-type/attributes/DeleteAttributeModalContainer'; -import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer'; - -const uppercaseThreeLetters = value => (value && !/[A-Z]$/g.test(value) ? : undefined); - -const maxLength3 = maxLength(3); - -const maxLength50 = maxLength(50); - -export class AddContentTypeFormBody extends Component { - componentDidMount() { - const { onDidMount } = this.props; - onDidMount(this.props); - } - - render() { - const { - attributesType, - mode, - handleSubmit, - onAddAttribute, - invalid, - submitting, - contentTypeCode, - viewPages, - contentTemplates, - dirty, - intl, - onCancel, - onDiscard, - onSave, - locale, - } = this.props; - const handleCancelClick = () => { - if (dirty) { - onCancel(); - } else { - onDiscard(); - } - }; - - const isEdit = mode === 'edit'; - - const selectOptions = attributesType.map(item => ({ - value: item, - text: item, - })); - - const renderAttributeTable = () => { - if (isEdit) { - return ( - - - - - ); - } - return ''; - }; - - const renderSelectOption = () => { - if (isEdit) { - return ( -
    - - - - - } - name="type" - /> - - - - -
    - ); - } - return ''; - }; - - const renderMetadataSection = () => { - if (isEdit) { - const selectViewPageOptions = [{ value: '', text: 'None' }] - .concat(viewPages.map(({ code }) => ({ - value: code, - text: code, - }))); - - const selectContentTemplateOptions = [{ value: '', text: 'No template' }] - .concat(contentTemplates.map(({ id, descr }) => ({ - value: id, - text: descr, - }))); - - return ( -
    - - - - - } - name="viewPage" - /> - - } - name="defaultContentModel" - /> - - } - name="defaultContentModelList" - /> -
    - ); - } - return ''; - }; - - return ( -
    - - -
    - - -
    - * -
    -
    - -)} - validate={[required, uppercaseThreeLetters, maxLength3]} - disabled={isEdit} - /> - -)} - validate={[required, maxLength50]} - /> - {renderMetadataSection()} - {renderSelectOption()} - {renderAttributeTable()} -
    - -
    -
    - - - - - - - -
    - ); - } -} - -AddContentTypeFormBody.propTypes = { - onDidMount: PropTypes.func, - onSubmit: PropTypes.func.isRequired, - handleSubmit: PropTypes.func.isRequired, - onAddAttribute: PropTypes.func, - attributesType: PropTypes.arrayOf(PropTypes.string).isRequired, - invalid: PropTypes.bool, - submitting: PropTypes.bool, - mode: PropTypes.string, - contentTypeCode: PropTypes.string, - viewPages: PropTypes.arrayOf(PropTypes.object), - contentTemplates: PropTypes.arrayOf(PropTypes.object), - intl: intlShape.isRequired, - dirty: PropTypes.bool, - onDiscard: PropTypes.func.isRequired, - onCancel: PropTypes.func.isRequired, - onSave: PropTypes.func.isRequired, - locale: PropTypes.string, -}; - -AddContentTypeFormBody.defaultProps = { - onDidMount: () => {}, - onAddAttribute: () => {}, - invalid: false, - submitting: false, - mode: 'add', - contentTypeCode: '', - viewPages: [], - contentTemplates: [], - dirty: false, - locale: '', -}; - -const AddContentTypeForm = reduxForm({ - form: 'ContentType', -})(AddContentTypeFormBody); - -export default AddContentTypeForm; diff --git a/src/ui/content-type/AddContentTypeFormContainer.js b/src/ui/content-type/AddContentTypeFormContainer.js deleted file mode 100644 index 854910398..000000000 --- a/src/ui/content-type/AddContentTypeFormContainer.js +++ /dev/null @@ -1,60 +0,0 @@ -import { connect } from 'react-redux'; -import { withRouter } from 'react-router-dom'; -import { injectIntl, defineMessages } from 'react-intl'; -import { addToast, TOAST_SUCCESS } from '@entando/messages'; -import { submit } from 'redux-form'; -import { routeConverter } from '@entando/utils'; -import { - fetchContentTypeAttributeRefs, - sendPostContentType, - setSelectedAttributeRef, - setSelectedContentTypeAttribute, -} from 'state/content-type/actions'; -import { getContentTypeAttributesIdList } from 'state/content-type/selectors'; -import AddContentTypeForm from 'ui/content-type/AddContentTypeForm'; -import { ROUTE_CMS_CONTENTTYPE_EDIT, ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router'; -import { setVisibleModal } from 'state/modal/actions'; -import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal'; -import { getLocale } from 'state/locale/selectors'; - -export const mapStateToProps = state => ({ - attributesType: getContentTypeAttributesIdList(state), - locale: getLocale(state), -}); - -const msgs = defineMessages({ - contTypeCreated: { - id: 'cms.contenttype.alert.created', - defaultMessage: 'Created.', - }, -}); - -export const mapDispatchToProps = (dispatch, { history, intl }) => ({ - onDidMount: () => { - dispatch(setSelectedAttributeRef({})); - dispatch(setSelectedContentTypeAttribute()); - dispatch(fetchContentTypeAttributeRefs()); - }, - onSubmit: (values) => { - dispatch(sendPostContentType(values)).then((res) => { - if (res && res.code) { - dispatch(addToast(intl.formatMessage(msgs.contTypeCreated), TOAST_SUCCESS)); - history.push(routeConverter(ROUTE_CMS_CONTENTTYPE_EDIT, { code: res.code })); - } - }); - }, - onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('ContentType')); }, - onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)), - onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTTYPE_LIST)); }, -}); - -const AddContentTypeFormContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(AddContentTypeForm); - -export default withRouter(injectIntl(AddContentTypeFormContainer)); diff --git a/src/ui/content-type/AddContentTypePage.js b/src/ui/content-type/AddContentTypePage.js deleted file mode 100644 index 94d904ae5..000000000 --- a/src/ui/content-type/AddContentTypePage.js +++ /dev/null @@ -1,49 +0,0 @@ -import React from 'react'; -import { FormattedMessage } from 'react-intl'; -import { Grid, Row, Col, Breadcrumb } from 'patternfly-react'; - -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import AddContentTypeFormContainer from 'ui/content-type/AddContentTypeFormContainer'; -import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router'; - - -const AddContentTypePage = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default AddContentTypePage; diff --git a/src/ui/content-type/ContentTypeList.js b/src/ui/content-type/ContentTypeList.js deleted file mode 100644 index 64324bae6..000000000 --- a/src/ui/content-type/ContentTypeList.js +++ /dev/null @@ -1,185 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage, injectIntl, intlShape } from 'react-intl'; -import { - Spinner, - Paginator, - DropdownKebab, - MenuItem, -} from 'patternfly-react'; -import { DataTable } from '@entando/datatable'; -import { LinkMenuItem } from '@entando/menu'; -import { routeConverter } from '@entando/utils'; -import { ROUTE_CMS_CONTENTTYPE_EDIT } from 'app-init/router'; -import ContentTypeStatusIcon from 'ui/content-type/ContentTypeStatusIcon'; -import ContentTypeReferenceStatusContainer from 'ui/content-type/ContentTypeReferenceStatusContainer'; -import DeleteContentTypeModalContainer from 'ui/content-type/DeleteContentTypeModalContainer'; -import paginatorMessages from 'ui/common/paginatorMessages'; - -const perPageOptions = [5, 10, 15, 25, 50]; - -class ContentTypeList extends Component { - constructor(props) { - super(props); - - this.changePage = this.changePage.bind(this); - this.changePageSize = this.changePageSize.bind(this); - } - - componentDidMount() { - const { onDidMount, columnOrder, onSetColumnOrder } = this.props; - if (!columnOrder.length) { - onSetColumnOrder(['name', 'code', 'status']); - } - onDidMount(); - } - - getColumnDefs() { - const { columnOrder, intl } = this.props; - - const columnDefs = { - name: { - Header: , - }, - code: { - Header: , - attributes: { - style: { width: '10%' }, - }, - }, - status: { - Header: , - attributes: { - style: { width: '10%' }, - }, - Cell: ({ row: { original: { status } } }) => ( - - ), - }, - }; - - return columnOrder.map(column => ({ - ...columnDefs[column], - accessor: column, - })); - } - - changePage(page) { - const { onDidMount, pageSize } = this.props; - onDidMount({ page, pageSize }); - } - - changePageSize(pageSize) { - const { onDidMount } = this.props; - onDidMount({ page: 1, pageSize }); - } - - render() { - const { - intl, - contentTypes, - loading, - onClickDelete, - onSetColumnOrder, - onClickReload, - page, - pageSize, - totalItems, - } = this.props; - - const pagination = { - page, - perPage: pageSize, - perPageOptions, - }; - - const columns = this.getColumnDefs() || []; - - const rowAction = { - Header: , - cellAttributes: { - className: 'text-center', - }, - Cell: ({ values: { code, name } }) => { - const onDelete = () => onClickDelete({ name, code }); - const onReload = () => onClickReload(code); - return ( -
    - - } - className="ContentTypeList__menu-item-edit" - /> - - - - - - - -
    - ); - }, - }; - - const messages = Object.keys(paginatorMessages).reduce((acc, curr) => ( - { ...acc, [curr]: intl.formatMessage(paginatorMessages[curr]) } - ), {}); - - return ( -
    - - - - - - -
    - ); - } -} - -ContentTypeList.propTypes = { - intl: intlShape.isRequired, - contentTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - loading: PropTypes.bool, - onDidMount: PropTypes.func.isRequired, - onClickDelete: PropTypes.func.isRequired, - onClickReload: PropTypes.func.isRequired, - page: PropTypes.number.isRequired, - pageSize: PropTypes.number.isRequired, - totalItems: PropTypes.number.isRequired, - columnOrder: PropTypes.arrayOf(PropTypes.string), - onSetColumnOrder: PropTypes.func, -}; - -ContentTypeList.defaultProps = { - loading: false, - onSetColumnOrder: () => {}, - columnOrder: [], -}; - -export default injectIntl(ContentTypeList); diff --git a/src/ui/content-type/ContentTypeListContainer.js b/src/ui/content-type/ContentTypeListContainer.js deleted file mode 100644 index d0d6fa541..000000000 --- a/src/ui/content-type/ContentTypeListContainer.js +++ /dev/null @@ -1,45 +0,0 @@ -import { connect } from 'react-redux'; -import { getContentTypeList } from 'state/content-type/selectors'; -import { fetchContentTypeListPaged, sendPostRefreshContentType } from 'state/content-type/actions'; -import { getLoading } from 'state/loading/selectors'; -import { setVisibleModal, setInfo } from 'state/modal/actions'; -import { getPagination } from 'state/pagination/selectors'; -import { setColumnOrder } from 'state/table-column-order/actions'; -import { getColumnOrder } from 'state/table-column-order/selectors'; -import { NAMESPACE_CONTENT_TYPES } from 'state/pagination/const'; - -import ContentTypeList from 'ui/content-type/ContentTypeList'; -import { MODAL_ID } from 'ui/content-type/DeleteContentTypeModal'; - -export const mapStateToProps = (state) => { - const { - page, totalItems, pageSize, - } = getPagination(state, NAMESPACE_CONTENT_TYPES); - return { - contentTypes: getContentTypeList(state), - loading: getLoading(state).contentTypeList, - page, - totalItems, - pageSize, - columnOrder: getColumnOrder(state, 'contentTypes'), - }; -}; - -export const mapDispatchToProps = dispatch => ({ - onDidMount: (page = { page: 1, pageSize: 10 }) => dispatch(fetchContentTypeListPaged(page)), - onSetColumnOrder: columnOrder => dispatch(setColumnOrder(columnOrder, 'contentTypes')), - onClickDelete: (item) => { - dispatch(setVisibleModal(MODAL_ID)); - dispatch(setInfo(item)); - }, - onClickReload: (code) => { - dispatch(sendPostRefreshContentType(code)); - }, -}); - -const ContentTypeListContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(ContentTypeList); - -export default ContentTypeListContainer; diff --git a/src/ui/content-type/ContentTypeListPage.js b/src/ui/content-type/ContentTypeListPage.js deleted file mode 100644 index 2f7481fad..000000000 --- a/src/ui/content-type/ContentTypeListPage.js +++ /dev/null @@ -1,55 +0,0 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; -import { Row, Col, Grid, Breadcrumb, Button } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import ContentTypeListContainer from 'ui/content-type/ContentTypeListContainer'; -import { ROUTE_CMS_CONTENTTYPE_ADD } from 'app-init/router'; - -const ContentTypeListPage = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default ContentTypeListPage; diff --git a/src/ui/content-type/ContentTypeReferenceStatus.js b/src/ui/content-type/ContentTypeReferenceStatus.js deleted file mode 100644 index ac971004d..000000000 --- a/src/ui/content-type/ContentTypeReferenceStatus.js +++ /dev/null @@ -1,60 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { Alert } from 'patternfly-react'; - -class ContentTypeReferenceStatus extends Component { - constructor(props) { - super(props); - this.onClickReload = this.onClickReload.bind(this); - } - - componentDidMount() { - const { onDidMount } = this.props; - onDidMount(); - } - - onClickReload() { - const { onReload, status } = this.props; - onReload(status.contentTypeCodes); - } - - render() { - const { status } = this.props; - if (status.type === 'success') { - return null; - } - return ( - - - - - - ), - }} - /> - - ); - } -} - -ContentTypeReferenceStatus.propTypes = { - onDidMount: PropTypes.func.isRequired, - onReload: PropTypes.func.isRequired, - status: PropTypes.shape({ - status: PropTypes.string, - type: PropTypes.string, - contentTypeCodes: PropTypes.arrayOf(PropTypes.string), - count: PropTypes.number, - }).isRequired, -}; - -export default ContentTypeReferenceStatus; diff --git a/src/ui/content-type/ContentTypeReferenceStatusContainer.js b/src/ui/content-type/ContentTypeReferenceStatusContainer.js deleted file mode 100644 index d35c7c4ee..000000000 --- a/src/ui/content-type/ContentTypeReferenceStatusContainer.js +++ /dev/null @@ -1,35 +0,0 @@ -import { connect } from 'react-redux'; -import { withRouter } from 'react-router-dom'; - -import ContentTypeReferenceStatus from 'ui/content-type/ContentTypeReferenceStatus'; -import { - fetchContentTypeReferenceStatus, - sendPostContentTypeReferenceStatus, - fetchContentTypeListPaged, -} from 'state/content-type/actions'; -import { getContentTypeReferencesStatus } from 'state/content-type/selectors'; -import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router'; - -export const mapStateToProps = state => ({ - status: getContentTypeReferencesStatus(state), -}); - -export const mapDispatchToProps = (dispatch, { history }) => ({ - onDidMount: () => dispatch(fetchContentTypeReferenceStatus()), - onReload: contentTypesCodes => ( - dispatch(sendPostContentTypeReferenceStatus(contentTypesCodes)).then((res) => { - if (res) { - history.push(ROUTE_CMS_CONTENTTYPE_LIST); - dispatch(fetchContentTypeReferenceStatus()); - dispatch(fetchContentTypeListPaged()); - } - }) - ), -}); - -const ContentTypeReferenceStatusContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(ContentTypeReferenceStatus); - -export default withRouter(ContentTypeReferenceStatusContainer); diff --git a/src/ui/content-type/ContentTypeStatusIcon.js b/src/ui/content-type/ContentTypeStatusIcon.js deleted file mode 100644 index d498aaf15..000000000 --- a/src/ui/content-type/ContentTypeStatusIcon.js +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Icon } from 'patternfly-react'; - -const ContentTypeStatusIcon = ({ status, title }) => { - let icon; - switch (parseFloat(status)) { - case 1: - icon = 'spinner'; - break; - case 2: - icon = 'exclamation'; - break; - default: - icon = 'check'; - } - return ( - - ); -}; - -ContentTypeStatusIcon.propTypes = { - status: PropTypes.oneOf(['0', '1', '2']).isRequired, - title: PropTypes.string, -}; - -ContentTypeStatusIcon.defaultProps = { - title: '', -}; - -export default ContentTypeStatusIcon; diff --git a/src/ui/content-type/DeleteContentTypeModal.js b/src/ui/content-type/DeleteContentTypeModal.js deleted file mode 100644 index 225913a75..000000000 --- a/src/ui/content-type/DeleteContentTypeModal.js +++ /dev/null @@ -1,69 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import GenericModalContainer from 'ui/common/modal/GenericModalContainer'; -import { - Button, - EmptyState, - Modal, - EmptyStateIcon, - EmptyStateTitle, - EmptyStateInfo, -} from 'patternfly-react'; - -export const MODAL_ID = 'DeleteContentTypeModal'; - -const DeleteContentTypeModal = ({ onConfirmDelete, info }) => { - const buttons = [ - , - ]; - - const modalTitle = ( - - - - ); - - return ( - - - - - -  {info.name} - - - - - - - ); -}; - -DeleteContentTypeModal.propTypes = { - onConfirmDelete: PropTypes.func.isRequired, - info: PropTypes.shape({ - code: PropTypes.string, - name: PropTypes.string, - }), -}; - -DeleteContentTypeModal.defaultProps = { - info: { - code: '', - name: '', - }, -}; - -export default DeleteContentTypeModal; diff --git a/src/ui/content-type/DeleteContentTypeModalContainer.js b/src/ui/content-type/DeleteContentTypeModalContainer.js deleted file mode 100644 index 8f2c484f2..000000000 --- a/src/ui/content-type/DeleteContentTypeModalContainer.js +++ /dev/null @@ -1,31 +0,0 @@ -import { connect } from 'react-redux'; -import { withRouter } from 'react-router-dom'; -import { setVisibleModal } from 'state/modal/actions'; -import { getInfo } from 'state/modal/selectors'; -import { sendDeleteContentType, fetchContentTypeListPaged } from 'state/content-type/actions'; -import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router'; - -import DeleteContentTypeModal from 'ui/content-type/DeleteContentTypeModal'; - -export const mapStateToProps = state => ({ - info: getInfo(state), -}); - -export const mapDispatchToProps = (dispatch, { history }) => ({ - onConfirmDelete: (contentTypeCode) => { - dispatch(setVisibleModal('')); - dispatch(sendDeleteContentType(contentTypeCode)).then((result) => { - if (result) { - dispatch(fetchContentTypeListPaged({ page: 1, pageSize: 10 })); - history.push(ROUTE_CMS_CONTENTTYPE_LIST); - } - }); - }, -}); - -const DeleteContentTypeModalContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(DeleteContentTypeModal); - -export default withRouter(DeleteContentTypeModalContainer); diff --git a/src/ui/content-type/EditContentTypeFormContainer.js b/src/ui/content-type/EditContentTypeFormContainer.js deleted file mode 100644 index 60df0455e..000000000 --- a/src/ui/content-type/EditContentTypeFormContainer.js +++ /dev/null @@ -1,97 +0,0 @@ -import { connect } from 'react-redux'; -import { formValueSelector, submit } from 'redux-form'; -import { withRouter } from 'react-router-dom'; -import { injectIntl } from 'react-intl'; -import { routeConverter } from '@entando/utils'; -import { - fetchContentTypeAttributeRefs, - fetchContentType, - fetchContentTypeAttributeRef, - sendPutContentType, - setSelectedAttributeRef, - setSelectedContentTypeAttribute, - sendMoveAttributeUp, - sendMoveAttributeDown, -} from 'state/content-type/actions'; -import { - getSelectedContentTypeAttributes, - getContentTypeAttributesIdList, -} from 'state/content-type/selectors'; -import AddContentTypeForm from 'ui/content-type/AddContentTypeForm'; - -import { setVisibleModal, setInfo } from 'state/modal/actions'; -import { MODAL_ID } from 'ui/content-type/attributes/DeleteAttributeModal'; -import { - ROUTE_CMS_CONTENTTYPE_LIST, - ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, - ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_EDIT, -} from 'app-init/router'; -import { fetchContentTemplatesByContentType } from 'state/content-template/actions'; -import { getViewPages } from 'state/pages/selectors'; -import { fetchViewPages } from 'state/pages/actions'; -import { getContentTemplateList } from 'state/content-template/selectors'; -import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal'; -import { getLocale } from 'state/locale/selectors'; - -export const mapStateToProps = (state, { match: { params } }) => ({ - mode: 'edit', - contentTypeCode: params.code, - attributes: getSelectedContentTypeAttributes(state), - attributesType: getContentTypeAttributesIdList(state), - attributeCode: formValueSelector('ContentType')(state, 'type'), - routeToEdit: ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_EDIT, - viewPages: getViewPages(state), - contentTemplates: getContentTemplateList(state), - locale: getLocale(state), -}); - -export const mapDispatchToProps = (dispatch, { history }) => ({ - onDidMount: ({ contentTypeCode }) => { - dispatch(setSelectedAttributeRef({})); - dispatch(setSelectedContentTypeAttribute()); - dispatch(fetchContentType(contentTypeCode)); - dispatch(fetchContentTypeAttributeRefs()); - dispatch(fetchContentTemplatesByContentType(contentTypeCode)); - dispatch(fetchViewPages()); - }, - onAddAttribute: ({ attributeCode, contentTypeCode }) => { - dispatch(fetchContentTypeAttributeRef(contentTypeCode, attributeCode, () => ( - history.push(routeConverter( - ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, - { entityCode: contentTypeCode }, - )) - ))); - }, - - onMoveUp: (entityCode, attributeCode, attributeIndex) => { - dispatch(sendMoveAttributeUp({ entityCode, attributeCode, attributeIndex })); - }, - onMoveDown: (entityCode, attributeCode, attributeIndex) => { - dispatch(sendMoveAttributeDown({ entityCode, attributeCode, attributeIndex })); - }, - onClickDelete: (code) => { - dispatch(setVisibleModal(MODAL_ID)); - dispatch(setInfo({ type: 'attribute', code })); - }, - onSubmit: (values) => { - dispatch(sendPutContentType(values)).then((res) => { - if (res) { - history.push(ROUTE_CMS_CONTENTTYPE_LIST); - } - }); - }, - onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('ContentType')); }, - onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)), - onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTTYPE_LIST)); }, -}); - -const EditContentTypeFormContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(AddContentTypeForm); - -export default withRouter(injectIntl(EditContentTypeFormContainer)); diff --git a/src/ui/content-type/EditContentTypePage.js b/src/ui/content-type/EditContentTypePage.js deleted file mode 100644 index 3ee76de57..000000000 --- a/src/ui/content-type/EditContentTypePage.js +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react'; -import { FormattedMessage } from 'react-intl'; -import { Grid, Row, Col, Breadcrumb } from 'patternfly-react'; - -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import EditContentTypeFormContainer from 'ui/content-type/EditContentTypeFormContainer'; -import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router'; - -const EditContentTypePage = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default EditContentTypePage; diff --git a/src/ui/content-type/attributes/AddContentTypeAttributeFormContainer.js b/src/ui/content-type/attributes/AddContentTypeAttributeFormContainer.js deleted file mode 100644 index e65cfa471..000000000 --- a/src/ui/content-type/attributes/AddContentTypeAttributeFormContainer.js +++ /dev/null @@ -1,107 +0,0 @@ -import { connect } from 'react-redux'; -import { formValueSelector, submit } from 'redux-form'; -import { injectIntl } from 'react-intl'; -import { withRouter } from 'react-router-dom'; -import { METHODS } from '@entando/apimanager'; -import { clearErrors } from '@entando/messages'; -import { routeConverter } from '@entando/utils'; -import AddContentTypeAttributeForm from 'ui/common/form/AddContentTypeAttributeForm'; -import { - setActionMode, - fetchContentTypeAttributeRefs, - handlerAttributeFromContentType, - fetchContentTypeAttributeRef, - removeAttributeFromComposite, - moveAttributeFromComposite, -} from 'state/content-type/actions'; -import { fetchLanguages } from 'state/languages/actions'; - -import { - getContentTypeSelectedAttribute, - getContentTypeSelectedAttributeCode, - getContentTypeAttributesIdList, - getContentTypeSelectedAttributeAllowedRoles, - getContentTypeSelectedAttributeRoleChoices, - getActionModeContentTypeSelectedAttribute, - getSelectedCompositeAttributes, -} from 'state/content-type/selectors'; - -import { getActiveLanguages } from 'state/languages/selectors'; - -import { ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, ROUTE_CMS_CONTENTTYPE_EDIT } from 'app-init/router'; -import { TYPE_COMPOSITE, MODE_ADD } from 'state/content-type/const'; -import { setVisibleModal } from 'state/modal/actions'; -import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal'; - -export const mapStateToProps = (state, { match: { params } }) => { - const joinAllowedOptions = formValueSelector('addAttribute')(state, 'joinRoles') || []; - return { - mode: getActionModeContentTypeSelectedAttribute(state) || 'add', - contentTypeAttributeCode: params.entityCode, - joinAllowedOptions, - selectedAttributeType: getContentTypeSelectedAttribute(state), - attributesList: getContentTypeAttributesIdList(state), - initialValues: { - type: getContentTypeSelectedAttributeCode(state), - compositeAttributeType: TYPE_COMPOSITE, - }, - allRoles: getContentTypeSelectedAttributeAllowedRoles(state), - allowedRoles: getContentTypeSelectedAttributeRoleChoices( - params.entityCode, - joinAllowedOptions, - )(state), - compositeAttributes: getSelectedCompositeAttributes(state), - languages: getActiveLanguages(state), - }; -}; - -const nopage = { page: 1, pageSize: 0 }; - -export const mapDispatchToProps = (dispatch, { match: { params }, history }) => ({ - onDidMount: () => { - dispatch(clearErrors()); - dispatch(fetchLanguages(nopage)); - dispatch(fetchContentTypeAttributeRefs()); - }, - onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('addAttribute')); }, - onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)), - onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTTYPE_EDIT, { code: params.entityCode })); }, - onSubmit: (values, allowedRoles, mode) => { - dispatch(handlerAttributeFromContentType( - METHODS.POST, - values, - allowedRoles, - mode, - params.entityCode, - history, - )); - }, - onAddAttribute: (props) => { - const { - attributeCode, - entityCode, - selectedAttributeType: { code }, - } = props; - dispatch(setActionMode(MODE_ADD)); - dispatch(fetchContentTypeAttributeRef( - entityCode, - attributeCode, - () => history.push(routeConverter(ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, { entityCode })), - code, - 'addAttribute', - )); - }, - onClickDelete: (attributeCode) => { - dispatch(removeAttributeFromComposite(attributeCode)); - }, - onMove: (fromIndex, toIndex) => { - dispatch(moveAttributeFromComposite(fromIndex, toIndex)); - }, -}); - -export default injectIntl(withRouter(connect( - mapStateToProps, - mapDispatchToProps, - null, - { pure: false }, -)(AddContentTypeAttributeForm))); diff --git a/src/ui/content-type/attributes/AddContentTypeAttributePage.js b/src/ui/content-type/attributes/AddContentTypeAttributePage.js deleted file mode 100644 index 7e53b6a56..000000000 --- a/src/ui/content-type/attributes/AddContentTypeAttributePage.js +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react'; -import { FormattedMessage } from 'react-intl'; -import { Grid, Row, Col, Breadcrumb } from 'patternfly-react'; - -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import ErrorsAlertContainer from 'ui/common/form/ErrorsAlertContainer'; -import AddContentTypeAttributeFormContainer from 'ui/content-type/attributes/AddContentTypeAttributeFormContainer'; -import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router'; - -const AddContentTypeAttributePage = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default AddContentTypeAttributePage; diff --git a/src/ui/content-type/attributes/DeleteAttributeModal.js b/src/ui/content-type/attributes/DeleteAttributeModal.js deleted file mode 100644 index da910d358..000000000 --- a/src/ui/content-type/attributes/DeleteAttributeModal.js +++ /dev/null @@ -1,70 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import GenericModalContainer from 'ui/common/modal/GenericModalContainer'; -import { - Button, - EmptyState, - Modal, - EmptyStateIcon, - EmptyStateTitle, - EmptyStateInfo, -} from 'patternfly-react'; - -export const MODAL_ID = 'DeleteAttributeModal'; - -const DeleteAttributeModal = ({ onConfirmDelete, info }) => { - const buttons = [ - , - ]; - - const modalTitle = ( - - - - ); - - return ( - - - - - -  {info.type} - - - - - - - ); -}; - -DeleteAttributeModal.propTypes = { - onConfirmDelete: PropTypes.func, - info: PropTypes.shape({ - code: PropTypes.string, - type: PropTypes.string, - }), -}; - -DeleteAttributeModal.defaultProps = { - onConfirmDelete: null, - info: { - code: '', - type: '', - }, -}; - -export default DeleteAttributeModal; diff --git a/src/ui/content-type/attributes/DeleteAttributeModalContainer.js b/src/ui/content-type/attributes/DeleteAttributeModalContainer.js deleted file mode 100644 index 6dbd59bef..000000000 --- a/src/ui/content-type/attributes/DeleteAttributeModalContainer.js +++ /dev/null @@ -1,23 +0,0 @@ -import { connect } from 'react-redux'; -import { setVisibleModal } from 'state/modal/actions'; -import { getInfo } from 'state/modal/selectors'; -import { sendDeleteAttributeFromContentType } from 'state/content-type/actions'; -import DeleteAttributeModal from 'ui/content-type/attributes/DeleteAttributeModal'; - -export const mapStateToProps = state => ({ - info: getInfo(state), -}); - -export const mapDispatchToProps = dispatch => ({ - onConfirmDelete: (code) => { - dispatch(sendDeleteAttributeFromContentType(code)); - dispatch(setVisibleModal('')); - }, -}); - -const DeleteAttributeModalContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(DeleteAttributeModal); - -export default DeleteAttributeModalContainer; diff --git a/src/ui/content-type/attributes/EditContentTypeAttributeFormContainer.js b/src/ui/content-type/attributes/EditContentTypeAttributeFormContainer.js deleted file mode 100644 index 72cf72f9c..000000000 --- a/src/ui/content-type/attributes/EditContentTypeAttributeFormContainer.js +++ /dev/null @@ -1,132 +0,0 @@ -import { connect } from 'react-redux'; -import { formValueSelector, submit } from 'redux-form'; -import { withRouter } from 'react-router-dom'; -import { injectIntl } from 'react-intl'; -import { METHODS } from '@entando/apimanager'; -import { clearErrors } from '@entando/messages'; -import { routeConverter } from '@entando/utils'; -import { MODE_EDIT_COMPOSITE, MODE_ADD_ATTRIBUTE_COMPOSITE } from 'state/content-type/const'; - -import EditContentTypeAttributeForm from 'ui/common/form/EditContentTypeAttributeForm'; -import { - setActionMode, - fetchAttributeFromContentType, - handlerAttributeFromContentType, - fetchContentTypeAttributeRefs, - fetchContentTypeAttributeRef, - removeAttributeFromComposite, - moveAttributeFromComposite, -} from 'state/content-type/actions'; -import { fetchLanguages } from 'state/languages/actions'; - -import { - getSelectedAttributeType, - getContentTypeAttributesIdList, - getContentTypeSelectedAttributeAllowedRoles, - getContentTypeSelectedAttributeRoleChoices, - getSelectedCompositeAttributes, - getActionModeContentTypeSelectedAttribute, - getContentTypeSelectedAttribute, - getIsMonolistCompositeAttributeType, - getContentTypeSelectedAttributeSearchable, - getContentTypeSelectedAttributeIndexable, -} from 'state/content-type/selectors'; -import { getActiveLanguages } from 'state/languages/selectors'; - -import { - ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, - ROUTE_CMS_CONTENTTYPE_EDIT, - ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_EDIT, -} from 'app-init/router'; -import { setVisibleModal } from 'state/modal/actions'; -import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal'; - -export const mapStateToProps = (state, { match: { params } }) => { - const joinAllowedOptions = formValueSelector('attribute')(state, 'joinRoles') - || formValueSelector('attribute')(state, 'joinAllowedOptions') - || []; - return { - mode: getActionModeContentTypeSelectedAttribute(state) || 'edit', - attributeCode: params.attributeCode, - contentTypeAttributeCode: params.entityCode, - joinAllowedOptions, - selectedAttributeType: getSelectedAttributeType(state), - selectedAttributeTypeForAddComposite: getContentTypeSelectedAttribute(state), - isSearchable: getContentTypeSelectedAttributeIndexable(state), - isIndexable: getContentTypeSelectedAttributeSearchable(state), - attributesList: getContentTypeAttributesIdList(state), - allRoles: getContentTypeSelectedAttributeAllowedRoles(state), - allowedRoles: getContentTypeSelectedAttributeRoleChoices( - params.attributeCode, - joinAllowedOptions, - )(state), - compositeAttributes: getSelectedCompositeAttributes(state), - isMonolistCompositeType: getIsMonolistCompositeAttributeType(state), - nestedAttributeComposite: formValueSelector('attribute')(state, 'nestedAttribute.type') || '', - languages: getActiveLanguages(state), - }; -}; - -const nopage = { page: 1, pageSize: 0 }; - -export const mapDispatchToProps = (dispatch, { match: { params }, history }) => ({ - onDidMount: ({ contentTypeAttributeCode, attributeCode }) => { - dispatch(clearErrors()); - dispatch(fetchLanguages(nopage)); - dispatch(fetchAttributeFromContentType('attribute', contentTypeAttributeCode, attributeCode)); - dispatch(fetchContentTypeAttributeRefs()); - }, - onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('attribute')); }, - onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)), - onDiscard: (mode) => { - dispatch(setVisibleModal('')); - if (mode === MODE_ADD_ATTRIBUTE_COMPOSITE) { - dispatch(setActionMode(MODE_EDIT_COMPOSITE)); - history.push(routeConverter(ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_EDIT, { - entityCode: params.entityCode, - attributeCode: params.attributeCode, - })); - } else { - history.push(routeConverter(ROUTE_CMS_CONTENTTYPE_EDIT, { code: params.entityCode })); - } - }, - onSubmit: (values, allowedRoles, mode) => { - dispatch(handlerAttributeFromContentType( - METHODS.PUT, - values, - allowedRoles, - mode, - params.entityCode, - history, - )); - }, - onAddAttribute: (props) => { - const { attributeCode, contentTypeAttributeCode, selectedAttributeType } = props; - dispatch(fetchContentTypeAttributeRef( - contentTypeAttributeCode, - attributeCode, - () => history.push(routeConverter(ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, { - entityCode: contentTypeAttributeCode, - })), - selectedAttributeType, - 'attribute', - )); - }, - onClickDelete: (attributeCode, isMonolistCompositeType) => { - dispatch(removeAttributeFromComposite(attributeCode, isMonolistCompositeType)); - }, - onMove: (fromIndex, toIndex, isMonolistCompositeType) => { - dispatch(moveAttributeFromComposite(fromIndex, toIndex, isMonolistCompositeType)); - }, -}); - -const EditContentTypeAttributeFormContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(EditContentTypeAttributeForm); - -export default injectIntl(withRouter(EditContentTypeAttributeFormContainer)); diff --git a/src/ui/content-type/attributes/EditContentTypeAttributePage.js b/src/ui/content-type/attributes/EditContentTypeAttributePage.js deleted file mode 100644 index 625f6e37a..000000000 --- a/src/ui/content-type/attributes/EditContentTypeAttributePage.js +++ /dev/null @@ -1,52 +0,0 @@ -import React from 'react'; -import { FormattedMessage } from 'react-intl'; -import { Grid, Row, Col, Breadcrumb } from 'patternfly-react'; -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import ErrorsAlertContainer from 'ui/common/form/ErrorsAlertContainer'; -import EditContentTypeAttributeFormContainer from 'ui/content-type/attributes/EditContentTypeAttributeFormContainer'; -import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router'; - -const EditContentTypeAttributePage = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default EditContentTypeAttributePage; diff --git a/src/ui/content-type/attributes/monolist/MonolistAttributeFormContainer.js b/src/ui/content-type/attributes/monolist/MonolistAttributeFormContainer.js deleted file mode 100644 index 40f251184..000000000 --- a/src/ui/content-type/attributes/monolist/MonolistAttributeFormContainer.js +++ /dev/null @@ -1,116 +0,0 @@ -import { connect } from 'react-redux'; -import { withRouter } from 'react-router-dom'; -import { clearErrors } from '@entando/messages'; -import { formValueSelector } from 'redux-form'; -import { routeConverter } from '@entando/utils'; - -import { - fetchAttributeFromContentType, - fetchContentTypeAttributeRef, - sendPostAttributeFromContentTypeMonolist, - sendPutAttributeFromContentTypeMonolist, - setActionMode, - removeAttributeFromComposite, - moveAttributeFromComposite, - fetchNestedAttribute, -} from 'state/content-type/actions'; -import { - getActionModeContentTypeSelectedAttribute, - getContentTypeAttributesIdList, - getContentTypeSelectedAttribute, - getAttributeSelectFromContentType, - getSelectedCompositeAttributes, - getContentTypeSelectedNestedAttributeIndexable, - getContentTypeSelectedNestedAttributeSearchable, -} from 'state/content-type/selectors'; -import { - TYPE_COMPOSITE, - MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE, - MODE_ADD_SUB_ATTRIBUTE_MONOLIST_COMPOSITE, -} from 'state/content-type/const'; - -import { - ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_MONOLIST_ADD, - ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, -} from 'app-init/router'; - -import ContentTypeMonolistAttributeForm from 'ui/common/form/ContentTypeMonolistAttributeForm'; - -export const mapStateToProps = (state, { match: { params } }) => ({ - mode: getActionModeContentTypeSelectedAttribute(state), - attributeCode: params.attributeCode, - contentTypeCode: params.entityCode, - isIndexable: getContentTypeSelectedNestedAttributeIndexable(state), - isSearchable: getContentTypeSelectedNestedAttributeSearchable(state), - type: formValueSelector('monoListAttribute')(state, 'nestedAttribute.type'), - selectedAttribute: getAttributeSelectFromContentType(state), - selectedAttributeTypeForAddComposite: getContentTypeSelectedAttribute(state), - selectedAttributeType: formValueSelector('monoListAttribute')(state, 'type'), - attributesList: getContentTypeAttributesIdList(state), - compositeAttributes: getSelectedCompositeAttributes(state), -}); - -export const mapDispatchToProps = (dispatch, { match: { params }, history }) => ({ - onDidMount: ({ - attributeCode, contentTypeCode, mode, - }) => { - dispatch(clearErrors()); - if (mode === MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE) { - dispatch(fetchContentTypeAttributeRef( - contentTypeCode, - TYPE_COMPOSITE, - () => ( - history.push(routeConverter(ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_MONOLIST_ADD, { - entityCode: contentTypeCode, - attributeCode, - })) - ), - '', - 'monoListAttribute', - )); - } else { - dispatch(fetchAttributeFromContentType('monoListAttribute', contentTypeCode, attributeCode)); - } - }, - onFetchNestedAttribute: ({ contentTypeCode, type, mode }) => { - if (mode !== MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE) { - dispatch(fetchNestedAttribute(contentTypeCode, type)); - } - }, - onSubmit: (values, mode, selectedAttribute) => { - if (mode === MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE) { - dispatch(sendPostAttributeFromContentTypeMonolist( - selectedAttribute, - params.entityCode, - history, - )); - } else { - dispatch(sendPutAttributeFromContentTypeMonolist(values, params.entityCode, history)); - } - }, - onAddAttribute: ({ contentTypeCode, type }) => { - dispatch(setActionMode(MODE_ADD_SUB_ATTRIBUTE_MONOLIST_COMPOSITE)); - dispatch(fetchContentTypeAttributeRef( - contentTypeCode, - type, - () => history.push(routeConverter(ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, { - entityCode: contentTypeCode, - })), - type, - 'addAttribute', - )); - }, - onClickDelete: (attributeCode) => { - dispatch(removeAttributeFromComposite(attributeCode)); - }, - onMove: (fromIndex, toIndex) => { - dispatch(moveAttributeFromComposite(fromIndex, toIndex)); - }, -}); - -export default withRouter(connect( - mapStateToProps, - mapDispatchToProps, - null, - { pure: false }, -)(ContentTypeMonolistAttributeForm)); diff --git a/src/ui/content-type/attributes/monolist/MonolistPage.js b/src/ui/content-type/attributes/monolist/MonolistPage.js deleted file mode 100644 index 500d15ab3..000000000 --- a/src/ui/content-type/attributes/monolist/MonolistPage.js +++ /dev/null @@ -1,104 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { Grid, Row, Col, Breadcrumb } from 'patternfly-react'; -import { routeConverter } from '@entando/utils'; - -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import MonolistAttributeFormContainer from 'ui/content-type/attributes/monolist/MonolistAttributeFormContainer'; -import { ROUTE_CMS_CONTENTTYPE_LIST, ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_EDIT } from 'app-init/router'; - -import { TYPE_COMPOSITE, TYPE_MONOLIST } from 'state/content-type/const'; - -class MonolistPage extends Component { - componentDidMount() { - const { onDidMount, ...otherProps } = this.props; - onDidMount(otherProps); - } - - render() { - const { - attributeCode, contentTypeCode, selectedAttribute, entityCode, type, - } = this.props; - const titleId = selectedAttribute === '' - ? 'cms.label.edit' - : `cms.contenttype.label.edit.${selectedAttribute}`; - - const nextBreadCrumbs = type === TYPE_COMPOSITE ? ( - - - {attributeCode} - - ) : ( - - - {attributeCode} - - ); - - const lastBreadcrumbLabel = type === TYPE_COMPOSITE ? TYPE_MONOLIST : selectedAttribute; - - return ( - - - - - - - - - - - - - :  {contentTypeCode} - - {nextBreadCrumbs} - {lastBreadcrumbLabel} - - - - - - - - - - - - - - - - ); - } -} - -MonolistPage.propTypes = { - onDidMount: PropTypes.func, - contentTypeCode: PropTypes.string, - attributeCode: PropTypes.string, - selectedAttribute: PropTypes.string, - entityCode: PropTypes.string, - type: PropTypes.string, -}; - -MonolistPage.defaultProps = { - onDidMount: () => {}, - contentTypeCode: '', - attributeCode: '', - selectedAttribute: '', - entityCode: '', - type: '', -}; - -export default MonolistPage; diff --git a/src/ui/content-type/attributes/monolist/MonolistPageContainer.js b/src/ui/content-type/attributes/monolist/MonolistPageContainer.js deleted file mode 100644 index a6a917cb3..000000000 --- a/src/ui/content-type/attributes/monolist/MonolistPageContainer.js +++ /dev/null @@ -1,32 +0,0 @@ -import { connect } from 'react-redux'; -import { withRouter } from 'react-router-dom'; -import { formValueSelector } from 'redux-form'; - -import { fetchAttributeFromContentType } from 'state/content-type/actions'; -import { getActionModeContentTypeSelectedAttribute } from 'state/content-type/selectors'; -import { MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE } from 'state/content-type/const'; - -import MonolistPage from 'ui/content-type/attributes/monolist/MonolistPage'; - -export const mapStateToProps = (state, { match: { params } }) => ({ - mode: getActionModeContentTypeSelectedAttribute(state) || '', - attributeCode: params.attributeCode, - entityCode: params.entityCode, - contentTypeCode: params.entityCode, - isIndexable: formValueSelector('monoListAttribute')(state, 'nestedAttribute.indexable'), - type: formValueSelector('monoListAttribute')(state, 'nestedAttribute.type'), - selectedAttribute: formValueSelector('monoListAttribute')(state, 'type'), -}); - -export const mapDispatchToProps = dispatch => ({ - onDidMount: ({ attributeCode, contentTypeCode, mode }) => { - if (mode !== MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE) { - dispatch(fetchAttributeFromContentType('monoListAttribute', contentTypeCode, attributeCode)); - } - }, -}); - -export default withRouter(connect( - mapStateToProps, - mapDispatchToProps, -)(MonolistPage)); diff --git a/src/ui/contents/Contents.js b/src/ui/contents/Contents.js deleted file mode 100644 index dd5a3caab..000000000 --- a/src/ui/contents/Contents.js +++ /dev/null @@ -1,286 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { intlShape, defineMessages, FormattedMessage } from 'react-intl'; -import { Button, Spinner } from 'patternfly-react'; -import { PermissionCheck } from '@entando/utils'; -import ContentsFilter from 'ui/contents/ContentsFilter'; -import ContentsTable from 'ui/contents/ContentsTable'; -import ContentsTabs from 'ui/contents/ContentsTabs'; -import { withPermissionValues } from 'ui/auth/withPermissions'; -import { VALIDATE_CONTENTS_PERMISSION } from 'state/permissions/const'; - -const messages = defineMessages({ - description: { - id: 'cms.contents.description', - defaultMessage: 'Name', - }, - lastModified: { - id: 'cms.contents.lastModified', - defaultMessage: 'Last Edited', - }, - typeCode: { - id: 'cms.contents.typeCode', - defaultMessage: 'Type', - }, - created: { - id: 'cms.contents.created', - defaultMessage: 'Created date', - }, - firstEditor: { - id: 'cms.contents.firstEditor', - defaultMessage: 'Created by', - }, - mainGroup: { - id: 'cms.contents.mainGroup', - defaultMessage: 'Owner Group', - }, - groups: { - id: 'cms.contents.groups', - defaultMessage: 'Join Groups', - }, - onLine: { - id: 'cms.contents.onLine', - defaultMessage: 'Status', - }, - restriction: { - id: 'cms.contents.restriction', - defaultMessage: 'Restrictions', - }, - code: { - id: 'cms.contents.code', - defaultMessage: 'Code', - }, - actions: { - id: 'cms.contents.actions', - defaultMessage: 'Actions', - }, -}); - -const AVAILABLE_COLUMN_CODES = [ - 'description', 'firstEditor', 'lastModified', - 'typeCode', 'created', 'mainGroup', 'groups', - 'onLine', 'restriction', 'code', -]; - -class Contents extends Component { - constructor(props) { - super(props); - this.messages = defineMessages({ - downloadButton: { - id: 'cms.contents.downloadAs', - defaultMessage: 'Download As', - }, - addContent: { - id: 'cms.contents.addContent', - defaultMessage: 'Add Content', - }, - columns: { - id: 'cms.contents.columns', - defaultMessage: 'Columns', - }, - selectedContents: { - id: 'cms.contents.selectedContents', - defaultMessage: 'You have selected {number} content(s), you can', - }, - }); - this.onSortChanged = this.onSortChanged.bind(this); - } - - componentDidMount() { - const { onDidMount } = this.props; - onDidMount(); - } - - componentWillUnmount() { - const { onWillUnmount } = this.props; - onWillUnmount(); - } - - onSortChanged(sortParams) { - const { currentAuthorShow, currentStatusShow, onSetSort } = this.props; - onSetSort({ ...sortParams, group: `${currentAuthorShow}_${currentStatusShow}` }); - } - - render() { - const { - page, totalItems, pageSize, contents, lastPage, loading, - currentQuickFilter, onSetQuickFilter, onFilteredSearch, intl, - contentTypes, groups, language, filteringCategories, statusChecked, - onCheckStatus, onCheckAccess, accessChecked, onCheckAuthor, authorChecked, - currentAuthorShow, currentStatusShow, currentColumnsShow, - onSetCurrentAuthorShow, onSetCurrentStatusShow, onSetCurrentColumnsShow, - onSetContentType, onSetGroup, sortingColumns, selectedRows, - onSelectRows, onSelectAllRows, onEditContent, onClickDelete, onClickPublish, - onClickAddContent, onClickJoinCategories, currentUsername, onClickClone, - onAdvancedFilterSearch, users, userPermissions, groupFilter, - } = this.props; - - const availableColumns = AVAILABLE_COLUMN_CODES.map(code => ({ - name: intl.formatMessage(messages[code]), - code, - })); - - const { selectedContents } = this.messages; - const selectedRowsData = contents.filter(c => selectedRows.includes(c.id)); - const renderSelectedRows = selectedRows.length > 0 ? ( -
    - {intl.formatMessage(selectedContents, { number: selectedRows.length })} - - - {currentStatusShow === 'published' ? ( - - ) : ( - - )} - -
    - ) : null; - - return ( -
    - -
    - - {renderSelectedRows} -
    - - - -
    -
    -
    - ); - } -} - -Contents.propTypes = { - intl: intlShape.isRequired, - page: PropTypes.number.isRequired, - lastPage: PropTypes.number.isRequired, - totalItems: PropTypes.number.isRequired, - pageSize: PropTypes.number.isRequired, - language: PropTypes.string.isRequired, - onDidMount: PropTypes.func.isRequired, - loading: PropTypes.bool, - currentQuickFilter: PropTypes.shape({}).isRequired, - onSetQuickFilter: PropTypes.func.isRequired, - onFilteredSearch: PropTypes.func.isRequired, - contents: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - contentTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - groups: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - groupFilter: PropTypes.string, - filteringCategories: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - onCheckStatus: PropTypes.func.isRequired, - statusChecked: PropTypes.string.isRequired, - accessChecked: PropTypes.string.isRequired, - onCheckAccess: PropTypes.func.isRequired, - authorChecked: PropTypes.string.isRequired, - onCheckAuthor: PropTypes.func.isRequired, - currentAuthorShow: PropTypes.string.isRequired, - currentStatusShow: PropTypes.string.isRequired, - currentColumnsShow: PropTypes.arrayOf(PropTypes.string), - onSetCurrentAuthorShow: PropTypes.func.isRequired, - onSetCurrentStatusShow: PropTypes.func.isRequired, - onSetCurrentColumnsShow: PropTypes.func.isRequired, - onSetContentType: PropTypes.func.isRequired, - onSetGroup: PropTypes.func.isRequired, - sortingColumns: PropTypes.shape({}).isRequired, - onSetSort: PropTypes.func.isRequired, - selectedRows: PropTypes.arrayOf(PropTypes.string).isRequired, - onSelectRows: PropTypes.func.isRequired, - onSelectAllRows: PropTypes.func.isRequired, - onEditContent: PropTypes.func.isRequired, - onClickDelete: PropTypes.func.isRequired, - onClickPublish: PropTypes.func.isRequired, - onClickAddContent: PropTypes.func.isRequired, - onClickJoinCategories: PropTypes.func.isRequired, - currentUsername: PropTypes.string.isRequired, - onClickClone: PropTypes.func.isRequired, - onAdvancedFilterSearch: PropTypes.func.isRequired, - users: PropTypes.arrayOf(PropTypes.shape({})), - onWillUnmount: PropTypes.func.isRequired, - userPermissions: PropTypes.arrayOf(PropTypes.string), -}; - -Contents.defaultProps = { - loading: false, - users: [], - userPermissions: [], - currentColumnsShow: ['description', 'firstEditor', 'lastModified', 'typeCode', 'created', 'onLine', 'restriction'], - groupFilter: '', -}; - -export default withPermissionValues(Contents); diff --git a/src/ui/contents/ContentsContainer.js b/src/ui/contents/ContentsContainer.js deleted file mode 100644 index 23f40a82a..000000000 --- a/src/ui/contents/ContentsContainer.js +++ /dev/null @@ -1,184 +0,0 @@ -import { connect } from 'react-redux'; -import { injectIntl } from 'react-intl'; -import { withRouter } from 'react-router-dom'; -import { routeConverter, convertToQueryString, FILTER_OPERATORS } from '@entando/utils'; -import { addToast, TOAST_SUCCESS } from '@entando/messages'; -import { adminConsoleUrl } from 'helpers/urlUtils'; -import { - setQuickFilter, checkStatus, checkAccess, checkAuthor, sendCloneContent, - setCurrentAuthorShow, setCurrentStatusShow, fetchContentsPaged, - setContentType, setGroup, setSort, selectRows, selectAllRows, resetJoinContentCategories, - setTabSearch, - resetAuthorStatus, leaveContentsPage, -} from 'state/contents/actions'; -import { fetchCategoryTree } from 'state/categories/actions'; -import { setNewContentsType, setWorkMode } from 'state/edit-content/actions'; -import { fetchContentTypeListPaged } from 'state/content-type/actions'; -import { setVisibleModal, setInfo } from 'state/modal/actions'; -import { fetchUsers } from 'state/users/actions'; -import { - getContents, getCurrentQuickFilter, getFilteringCategories, - getStatusChecked, getAccessChecked, getAuthorChecked, getCurrentAuthorShow, - getCurrentStatusShow, getSortingColumns, - getSelectedRows, getGroup, -} from 'state/contents/selectors'; -import { setColumnOrder } from 'state/table-column-order/actions'; -import { getColumnOrder } from 'state/table-column-order/selectors'; -import { ROUTE_CMS_EDIT_CONTENT } from 'app-init/router'; -import { getPagination } from 'state/pagination/selectors'; -import { NAMESPACE_CONTENTS } from 'state/pagination/const'; -import { getContentTypeList } from 'state/content-type/selectors'; -import { getLoading } from 'state/loading/selectors'; -import { getGroupsList } from 'state/groups/selectors'; -import { getLocale } from 'state/locale/selectors'; -import { getUsername } from '@entando/apimanager'; -import { DELETE_CONTENT_MODAL_ID } from 'ui/contents/DeleteContentModal'; -import { PUBLISH_CONTENT_MODAL_ID } from 'ui/contents/PublishContentModal'; -import { JOIN_CATEGORIES_MODAL_ID } from 'ui/contents/JoinCategoriesModal'; -import { WORK_MODE_EDIT, WORK_MODE_ADD } from 'state/edit-content/types'; -import Contents from 'ui/contents/Contents'; -import { getUserList } from 'state/users/selectors'; - -const noPage = { page: 1, pageSize: 0 }; - -const paramsForStatusAndAuthor = (status, author) => { - const published = status === 'published'; - const all = author === 'all'; - const eq = FILTER_OPERATORS.EQUAL; - - const formValues = { - ...((!published && status !== 'all') && { status }), - ...(!all && { author }), - }; - const operators = { - ...((!published && status !== 'all') && { status: eq }), - ...(!all && { author: eq }), - }; - const query = `${convertToQueryString({ - formValues, - operators, - })}${published ? '&status=published' : ''}`; - - return query.slice(1); -}; - -export const mapStateToProps = (state) => { - const { - page, lastPage, totalItems, pageSize, - } = getPagination(state, NAMESPACE_CONTENTS); - const currentAuthorShow = getCurrentAuthorShow(state); - const currentStatusShow = getCurrentStatusShow(state); - const sortingColumns = getSortingColumns(state, `${currentAuthorShow}_${currentStatusShow}`); - return ({ - loading: getLoading(state).contents, - language: getLocale(state), - contents: getContents(state), - currentQuickFilter: getCurrentQuickFilter(state), - groups: getGroupsList(state), - groupFilter: getGroup(state), - contentTypes: getContentTypeList(state), - filteringCategories: getFilteringCategories(state), - statusChecked: getStatusChecked(state), - accessChecked: getAccessChecked(state), - authorChecked: getAuthorChecked(state), - currentAuthorShow, - currentStatusShow, - currentColumnsShow: getColumnOrder(state, 'contentListPage'), - page, - lastPage, - totalItems, - pageSize, - sortingColumns, - selectedRows: getSelectedRows(state), - currentUsername: getUsername(state), - users: getUserList(state), - }); -}; - -export const mapDispatchToProps = (dispatch, { intl, history }) => ({ - onDidMount: () => { - dispatch(fetchContentsPaged()); - dispatch(fetchCategoryTree()); - dispatch(fetchContentTypeListPaged(noPage)); - dispatch(fetchUsers(noPage)); - }, - onSetQuickFilter: filter => dispatch(setQuickFilter(filter)), - onFilteredSearch: (params, page, sort, tabSearch) => ( - dispatch(fetchContentsPaged({ - params, page, sort, tabSearch, - })) - ), - onSetTabSearch: tabSearch => dispatch(setTabSearch(tabSearch)), - onCheckStatus: status => dispatch(checkStatus(status)), - onCheckAccess: access => dispatch(checkAccess(access)), - onCheckAuthor: author => dispatch(checkAuthor(author)), - onSetCurrentAuthorShow: (author, status) => { - dispatch(setCurrentAuthorShow(author)); - dispatch(fetchContentsPaged({ - params: paramsForStatusAndAuthor(status, author), - tabSearch: true, - })); - }, - onSetCurrentStatusShow: (status, author) => { - dispatch(setCurrentStatusShow(status)); - dispatch(fetchContentsPaged({ - params: paramsForStatusAndAuthor(status, author), - tabSearch: true, - })); - }, - onAdvancedFilterSearch: () => { - dispatch(resetAuthorStatus()); - dispatch(fetchContentsPaged()); - }, - onSetCurrentColumnsShow: columnOrder => dispatch(setColumnOrder(columnOrder, 'contentListPage')), - onSetContentType: contentType => dispatch(setContentType(contentType)), - onSetGroup: group => dispatch(setGroup(group)), - onSetSort: sort => dispatch(setSort(sort)), - onSelectRows: contentIds => dispatch(selectRows(contentIds)), - onSelectAllRows: checked => dispatch(selectAllRows(checked)), - onEditContent: (contentId) => { - dispatch(setWorkMode(WORK_MODE_EDIT)); - dispatch(setCurrentStatusShow('all')); - history.push(routeConverter(ROUTE_CMS_EDIT_CONTENT, { id: contentId })); - }, - onClickDelete: (item) => { - dispatch(setVisibleModal(DELETE_CONTENT_MODAL_ID)); - dispatch(setInfo(item)); - }, - onClickPublish: (contents, onLine) => { - dispatch(setVisibleModal(PUBLISH_CONTENT_MODAL_ID)); - dispatch(setInfo({ contents, onLine })); - }, - onClickAddContent: (contentType) => { - dispatch(setWorkMode(WORK_MODE_ADD)); - dispatch(setCurrentStatusShow('all')); - dispatch(setNewContentsType(contentType)); - const newRoute = adminConsoleUrl(`do/jacms/Content/createNew.action?contentTypeCode=${contentType.typeCode}`); - window.location.href = newRoute; - }, - onClickJoinCategories: (contents) => { - dispatch(resetJoinContentCategories()); - dispatch(setVisibleModal(JOIN_CATEGORIES_MODAL_ID)); - dispatch(setInfo({ contents })); - }, - onClickClone: (content) => { - dispatch(setWorkMode(WORK_MODE_EDIT)); - dispatch(sendCloneContent(content.id)).then((res) => { - if (res) { - dispatch(addToast( - intl.formatMessage({ id: 'cms.contents.cloned', defaultMessage: 'Cloned' }), - TOAST_SUCCESS, - )); - history.push(routeConverter(ROUTE_CMS_EDIT_CONTENT, { id: res.id })); - } - }); - }, - onWillUnmount: () => dispatch(leaveContentsPage()), -}); - -const ContentsContainer = connect( - mapStateToProps, - mapDispatchToProps, -)(Contents); - -export default withRouter(injectIntl(ContentsContainer)); diff --git a/src/ui/contents/ContentsPage.js b/src/ui/contents/ContentsPage.js deleted file mode 100644 index 411b6ee5c..000000000 --- a/src/ui/contents/ContentsPage.js +++ /dev/null @@ -1,43 +0,0 @@ -import React from 'react'; -import { Row, Col, Grid, Breadcrumb } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import ContentsContainer from 'ui/contents/ContentsContainer'; - -const ContentsPage = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default ContentsPage; diff --git a/src/ui/contents/ContentsTabs.js b/src/ui/contents/ContentsTabs.js deleted file mode 100644 index 7a8ba9d0e..000000000 --- a/src/ui/contents/ContentsTabs.js +++ /dev/null @@ -1,178 +0,0 @@ -import React from 'react'; -import { - TabContainer, Nav, NavItem, TabContent, TabPane, - DropdownButton, MenuItem, -} from 'patternfly-react'; -import { CSVLink } from 'react-csv'; -import Workbook from 'react-excel-workbook'; -import { intlShape, FormattedMessage } from 'react-intl'; -import PropTypes from 'prop-types'; -import MultiSelectMenuItem from 'ui/common/form/MultiSelectMenuItem'; - -const ContentTabs = ({ - intl, availableColumns, messages, contentTypes, currentColumnsShow, currentAuthorShow, - currentStatusShow, onSetCurrentColumnsShow, onSetCurrentStatusShow, onSetCurrentAuthorShow, - onClickAddContent, contents, currentUsername, -}) => { - const filteredAvailableColumns = availableColumns.filter(column => ( - currentColumnsShow.includes(column.code) - )); - const csvHeaders = filteredAvailableColumns.map(column => ( - Object.assign({}, { label: column.name, key: column.code }) - )); - const onClickColumnItem = (code) => { - if (code === 'name') return; - let newColumns = [...currentColumnsShow]; - if (newColumns.includes(code)) { - newColumns = newColumns.filter(c => c !== code); - } else { - newColumns = [...newColumns, code]; - } - onSetCurrentColumnsShow(newColumns); - }; - const navItems = ( -
    - -
    - - { - contentTypes.map(contentType => ( - ( - onClickAddContent({ - typeCode: contentType.code, typeDescription: contentType.name, - }) - )} - > - {contentType.name} - - )) - } - -
    -
    - -
  • - CSV -
  • - - XLS
    }> - - {filteredAvailableColumns.map(column => ( - - ))} - - - - -
    -
    - - {availableColumns.map(({ name, code }, i) => ( - - ))} - -
    -
    - ); - return ( - onSetCurrentAuthorShow(author, currentStatusShow)} - > -
    - - - - onSetCurrentStatusShow(status, currentAuthorShow)} - > - {navItems} - - - - onSetCurrentStatusShow(status, currentAuthorShow)} - > - {navItems} - - - -
    -
    - ); -}; - -ContentTabs.propTypes = { - intl: intlShape.isRequired, - availableColumns: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - messages: PropTypes.shape({ - addContent: PropTypes.shape({}), - downloadButton: PropTypes.shape({}), - columns: PropTypes.shape({}), - }).isRequired, - contentTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - contents: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - currentColumnsShow: PropTypes.arrayOf(PropTypes.string).isRequired, - currentAuthorShow: PropTypes.string.isRequired, - currentStatusShow: PropTypes.string.isRequired, - onSetCurrentAuthorShow: PropTypes.func.isRequired, - onSetCurrentStatusShow: PropTypes.func.isRequired, - onSetCurrentColumnsShow: PropTypes.func.isRequired, - onClickAddContent: PropTypes.func.isRequired, - currentUsername: PropTypes.string.isRequired, -}; - -export default ContentTabs; diff --git a/src/ui/dashboard/Integrations.js b/src/ui/dashboard/Integrations.js deleted file mode 100644 index d2fcfb304..000000000 --- a/src/ui/dashboard/Integrations.js +++ /dev/null @@ -1,50 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { - Card, - CardTitle, - CardBody, - AggregateStatusCount, - Icon, -} from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; - -class Integrations extends Component { - componentWillMount() { - this.props.onWillMount(); - } - - render() { - return ( - - - - - - - - {this.props.plugins} - - - - {this.props.apis} - - - - ); - } -} - -Integrations.propTypes = { - onWillMount: PropTypes.func.isRequired, - plugins: PropTypes.oneOfType([ - PropTypes.number, - PropTypes.string, - ]).isRequired, - apis: PropTypes.oneOfType([ - PropTypes.number, - PropTypes.string, - ]).isRequired, -}; - -export default Integrations; diff --git a/src/ui/dashboard/IntegrationsContainer.js b/src/ui/dashboard/IntegrationsContainer.js deleted file mode 100644 index 8a26209a4..000000000 --- a/src/ui/dashboard/IntegrationsContainer.js +++ /dev/null @@ -1,22 +0,0 @@ -import { connect } from 'react-redux'; - -import { getApis, getPlugins } from 'state/dashboard/selectors'; -import { fetchIntegration } from 'state/dashboard/actions'; - -import Integrations from 'ui/dashboard/Integrations'; - -export const mapDispatchToProps = dispatch => ({ - onWillMount: () => dispatch(fetchIntegration()), -}); - -export const mapStateToProps = state => ( - { - apis: getApis(state), - plugins: getPlugins(state), - } -); - -export default connect( - mapStateToProps, - mapDispatchToProps, -)(Integrations); diff --git a/src/ui/data-types/attributes/AddDataTypeAttributePage.js b/src/ui/data-types/attributes/AddDataTypeAttributePage.js deleted file mode 100644 index 1a6c491f3..000000000 --- a/src/ui/data-types/attributes/AddDataTypeAttributePage.js +++ /dev/null @@ -1,62 +0,0 @@ -import React from 'react'; -import { FormattedMessage, defineMessages, injectIntl, intlShape } from 'react-intl'; -import { Grid, Row, Col, Breadcrumb } from 'patternfly-react'; - -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import PageTitle from 'ui/internal-page/PageTitle'; -import ErrorsAlertContainer from 'ui/common/form/ErrorsAlertContainer'; -import AddFormContainer from 'ui/data-types/attributes/AddFormContainer'; -import { ROUTE_DATA_TYPE_LIST } from 'app-init/router'; -import withPermissions from 'ui/auth/withPermissions'; -import { SUPERUSER_PERMISSION } from 'state/permissions/const'; - -const msgs = defineMessages({ - add: { - id: 'app.add', - defaultMessage: 'Add', - }, -}); - -const AddDataTypeAttributePage = ({ intl }) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -AddDataTypeAttributePage.propTypes = { - intl: intlShape.isRequired, -}; - -export default withPermissions(SUPERUSER_PERMISSION)(injectIntl(AddDataTypeAttributePage)); diff --git a/src/ui/data-types/attributes/AddFormContainer.js b/src/ui/data-types/attributes/AddFormContainer.js deleted file mode 100644 index 054a51017..000000000 --- a/src/ui/data-types/attributes/AddFormContainer.js +++ /dev/null @@ -1,80 +0,0 @@ -import { connect } from 'react-redux'; -import { formValueSelector } from 'redux-form'; -import { withRouter } from 'react-router-dom'; -import { METHODS } from '@entando/apimanager'; -import { clearErrors } from '@entando/messages'; -import AttributeForm from 'ui/common/form/AttributeForm'; -import { - setActionMode, - fetchDataTypeAttributes, - handlerAttributeFromDataType, - fetchDataTypeAttribute, - removeAttributeFromComposite, - moveAttributeFromComposite, -} from 'state/data-types/actions'; - -import { - getDataTypeSelectedAttribute, - getDataTypeSelectedAttributeCode, - getDataTypeAttributesIdList, - getDataTypeSelectedAttributeAllowedRoles, - getActionModeDataTypeSelectedAttribute, - getSelectedCompositeAttributes, -} from 'state/data-types/selectors'; - -import { ROUTE_DATA_TYPE_ATTRIBUTE_ADD } from 'app-init/router'; -import { TYPE_COMPOSITE, MODE_ADD } from 'state/data-types/const'; - -export const mapStateToProps = (state, { match: { params } }) => ({ - mode: getActionModeDataTypeSelectedAttribute(state) || 'add', - dataTypeAttributeCode: params.entityCode, - joinAllowedOptions: formValueSelector('addAttribute')(state, 'joinRoles') || [], - selectedAttributeType: getDataTypeSelectedAttribute(state), - attributesList: getDataTypeAttributesIdList(state), - initialValues: { - type: getDataTypeSelectedAttributeCode(state), - compositeAttributeType: TYPE_COMPOSITE, - }, - allowedRoles: getDataTypeSelectedAttributeAllowedRoles(state), - compositeAttributes: getSelectedCompositeAttributes(state), -}); - -export const mapDispatchToProps = (dispatch, { match: { params } }) => ({ - onWillMount: () => { - dispatch(clearErrors()); - dispatch(fetchDataTypeAttributes()); - }, - onSubmit: (values, allowedRoles, mode) => { - dispatch(handlerAttributeFromDataType( - METHODS.POST, - values, - allowedRoles, - mode, - params.entityCode, - )); - }, - onAddAttribute: (props) => { - const { attributeCode, entityCode, selectedAttributeType: { code } } = props; - dispatch(setActionMode(MODE_ADD)); - dispatch(fetchDataTypeAttribute( - attributeCode, - { - route: ROUTE_DATA_TYPE_ATTRIBUTE_ADD, - params: { entityCode }, - }, - code, - 'addAttribute', - )); - }, - onClickDelete: (attributeCode) => { - dispatch(removeAttributeFromComposite(attributeCode)); - }, - onMove: (fromIndex, toIndex) => { - dispatch(moveAttributeFromComposite(fromIndex, toIndex)); - }, - -}); - -export default withRouter(connect(mapStateToProps, mapDispatchToProps, null, { - pure: false, -})(AttributeForm)); diff --git a/src/ui/data-types/attributes/EditDataTypeAttributePage.js b/src/ui/data-types/attributes/EditDataTypeAttributePage.js deleted file mode 100644 index f13b2c421..000000000 --- a/src/ui/data-types/attributes/EditDataTypeAttributePage.js +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react'; -import { FormattedMessage, defineMessages, injectIntl, intlShape } from 'react-intl'; -import { Grid, Row, Col, Breadcrumb } from 'patternfly-react'; - -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import PageTitle from 'ui/internal-page/PageTitle'; -import ErrorsAlertContainer from 'ui/common/form/ErrorsAlertContainer'; -import EditFormContainer from 'ui/data-types/attributes/EditFormContainer'; -import { ROUTE_DATA_TYPE_LIST } from 'app-init/router'; -import withPermissions from 'ui/auth/withPermissions'; -import { SUPERUSER_PERMISSION } from 'state/permissions/const'; - -const msgs = defineMessages({ - edit: { - id: 'app.edit', - defaultMessage: 'Edit', - }, -}); - -const EditDataTypeAttributePage = ({ intl }) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); - -EditDataTypeAttributePage.propTypes = { - intl: intlShape.isRequired, -}; - -export default withPermissions(SUPERUSER_PERMISSION)(injectIntl(EditDataTypeAttributePage)); diff --git a/src/ui/data-types/attributes/EditFormContainer.js b/src/ui/data-types/attributes/EditFormContainer.js deleted file mode 100644 index 3030de05a..000000000 --- a/src/ui/data-types/attributes/EditFormContainer.js +++ /dev/null @@ -1,82 +0,0 @@ -import { connect } from 'react-redux'; -import { formValueSelector } from 'redux-form'; -import { withRouter } from 'react-router-dom'; -import { METHODS } from '@entando/apimanager'; -import { clearErrors } from '@entando/messages'; - -import EditAttributeForm from 'ui/common/form/EditAttributeForm'; -import { - fetchAttributeFromDataType, - handlerAttributeFromDataType, - fetchDataTypeAttributes, - fetchDataTypeAttribute, - removeAttributeFromComposite, - moveAttributeFromComposite, -} from 'state/data-types/actions'; - -import { - getSelectedAttributeType, - getDataTypeAttributesIdList, - getDataTypeSelectedAttributeAllowedRoles, - getSelectedCompositeAttributes, - getActionModeDataTypeSelectedAttribute, - getDataTypeSelectedAttribute, - getIsMonolistComposteAttributeType, -} from 'state/data-types/selectors'; - -import { ROUTE_DATA_TYPE_ATTRIBUTE_ADD } from 'app-init/router'; - -export const mapStateToProps = (state, { match: { params } }) => ({ - mode: getActionModeDataTypeSelectedAttribute(state) || 'edit', - attributeCode: params.attributeCode, - dataTypeAttributeCode: params.entityCode, - joinAllowedOptions: - formValueSelector('attribute')(state, 'joinRoles') || - formValueSelector('attribute')(state, 'joinAllowedOptions') || [], - selectedAttributeType: getSelectedAttributeType(state), - selectedAttributeTypeForAddComposite: getDataTypeSelectedAttribute(state), - attributesList: getDataTypeAttributesIdList(state), - allowedRoles: getDataTypeSelectedAttributeAllowedRoles(state), - compositeAttributes: getSelectedCompositeAttributes(state), - isMonolistCompositeType: getIsMonolistComposteAttributeType(state), - nestedAttributeComposite: formValueSelector('attribute')(state, 'nestedAttribute.type') || '', -}); - -export const mapDispatchToProps = (dispatch, { match: { params } }) => ({ - onDidMount: ({ dataTypeAttributeCode, attributeCode }) => { - dispatch(clearErrors()); - dispatch(fetchAttributeFromDataType('attribute', dataTypeAttributeCode, attributeCode)); - dispatch(fetchDataTypeAttributes()); - }, - onSubmit: (values, allowedRoles, mode) => { - dispatch(handlerAttributeFromDataType( - METHODS.PUT, - values, - allowedRoles, - mode, - params.entityCode, - )); - }, - onAddAttribute: (props) => { - const { attributeCode, dataTypeAttributeCode, selectedAttributeType } = props; - dispatch(fetchDataTypeAttribute( - attributeCode, - { - route: ROUTE_DATA_TYPE_ATTRIBUTE_ADD, - params: { entityCode: dataTypeAttributeCode }, - }, - selectedAttributeType, - 'attribute', - )); - }, - onClickDelete: (attributeCode, isMonolistCompositeType) => { - dispatch(removeAttributeFromComposite(attributeCode, isMonolistCompositeType)); - }, - onMove: (fromIndex, toIndex, isMonolistCompositeType) => { - dispatch(moveAttributeFromComposite(fromIndex, toIndex, isMonolistCompositeType)); - }, -}); - -export default withRouter(connect(mapStateToProps, mapDispatchToProps, null, { - pure: false, -})(EditAttributeForm)); diff --git a/src/ui/edit-content/EditContentForm.js b/src/ui/edit-content/EditContentForm.js deleted file mode 100644 index 15d3dd57d..000000000 --- a/src/ui/edit-content/EditContentForm.js +++ /dev/null @@ -1,496 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { intlShape, defineMessages, FormattedMessage } from 'react-intl'; -import { Row, Col, FormGroup, Spinner, Button } from 'patternfly-react'; -import { Field, reduxForm } from 'redux-form'; -import Panel from 'react-bootstrap/lib/Panel'; -import { required, maxLength } from '@entando/utils'; -import { Collapse } from 'react-collapse'; - -import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer'; -import StickySave from 'ui/common/StickySave'; -import SectionTitle from 'ui/common/SectionTitle'; -import FormLabel from 'ui/common/form/FormLabel'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import RenderVersionText from 'ui/common/form/RenderVersionText'; -import RenderDropdownTypeaheadInput from 'ui/common/form/RenderDropdownTypeaheadInput'; - -import { WORK_MODE_ADD, WORK_MODE_EDIT } from 'state/edit-content/types'; - -const maxLength255 = maxLength(255); - -const messages = defineMessages({ - contentDesctiption: { - id: 'cms.contents.edit.contentDescription.placeholder', - defaultMessage: 'Descriptions help you archive, sort, and find contents', - }, - creator: { - id: 'cms.contents.edit.version.creator', - defaultMessage: 'created - by', - }, - modifier: { - id: 'cms.contents.edit.version.modifier', - defaultMessage: 'modified by', - }, - sameAuthor: { - id: 'cms.contents.edit.version.you', - defaultMessage: 'you', - }, -}); - -const fieldFocus = (el, addDelay) => { - const focusEl = el.current; - if (!focusEl) { - return; - } - const runFocus = () => focusEl.getRenderedComponent().focus(); - if (addDelay) { - setTimeout(runFocus, addDelay); - } else { - runFocus(); - } -}; - -export class EditContentFormBody extends React.Component { - constructor(props) { - super(props); - const { workMode } = props; - this.ownerGroupInput = React.createRef(); - this.descriptionInput = React.createRef(); - this.state = { - infoOpen: true, - groupsOpen: workMode === WORK_MODE_ADD, - categoriesOpen: false, - attributesOpen: false, - }; - - this.handleOwnerGroupChange = this.handleOwnerGroupChange.bind(this); - } - - componentDidMount() { - const { - onDidMount, match: { params = {} }, - onIncompleteData, - } = this.props; - const { id: contentId, contentType } = params; - const fetchContentParams = `/${contentId}`; - if (contentType == null && contentId == null) return onIncompleteData(); - // if contentId from params is null, it means we are creating a new content - if (contentId == null) { - fieldFocus(this.ownerGroupInput); - } - return onDidMount(fetchContentParams); - } - - componentDidUpdate(prevProps) { - const { - dirty, changeStatus, content, status, - } = this.props; - if (dirty !== prevProps.dirty) { - if (dirty) { - if (status === prevProps.status) { - changeStatus('draft'); - } - } else { - changeStatus((content || {}).status); - } - } - if (content !== prevProps.content) { - fieldFocus(this.descriptionInput); - } - } - - componentWillUnmount() { - const { onWillUnmount } = this.props; - onWillUnmount(); - } - - setSection(sectionName, value) { - this.setState({ - [sectionName]: value, - }); - } - - collapseSection(sectionName) { - this.setState(({ [sectionName]: currentVisibility }) => ({ - [sectionName]: !currentVisibility, - })); - } - - handleOwnerGroupChange(code) { - const { - workMode, - onSetOwnerGroupDisable, - resetSection, - } = this.props; - if (code && workMode === WORK_MODE_EDIT) { - onSetOwnerGroupDisable(true); - } - if (workMode === WORK_MODE_ADD) { - this.setSection('infoOpen', true); - this.setSection('categoriesOpen', true); - // reset attributes sections - resetSection('attributes'); - fieldFocus(this.descriptionInput, 10); - } - } - - render() { - const { - infoOpen, groupsOpen, categoriesOpen, attributesOpen, - } = this.state; - const { - intl, - groups, - allGroups, - content, - workMode, - handleSubmit, - onSubmit, - invalid, - submitting, - onUnpublish, - contentType: cType, - currentUser: currentUserName, - dirty, - onCancel, - onDiscard, - onSave, - loading, - match: { params = {} }, - closeModal, - missingTranslations, - saveType, - } = this.props; - const { id } = params; - const { - version, lastModified, firstEditor: creatorUserName, lastEditor: modifierUserName, - onLine, - } = content || {}; - const newContentsType = { - typeDescription: cType.name, - typeCode: cType.code, - }; - const contentType = content.typeDescription || newContentsType.typeDescription || ''; - const groupsWithEmptyOption = [...groups]; - const handleCollapseInfo = val => this.collapseSection('infoOpen', val); - const handleCollapseGroups = val => this.collapseSection('groupsOpen', val); - const handleCollapseCategories = val => this.collapseSection('categoriesOpen', val); - const handleCollapseAttributes = val => this.collapseSection('attributesOpen', val); - const renderContentVersioningHistory = workMode === WORK_MODE_EDIT && id && ( - - - - - - - - - - ); - - const handleUpdateTranslations = () => { - if (missingTranslations.length) { - const { lang, attributePath } = missingTranslations[0]; - // open language tab - const tabId = `content-attributes-tabs-tab-${lang}`; - document.getElementById(tabId).click(); - // wait for tab to change - - setTimeout(() => { - // set focus to element - const inputId = `${attributePath}.values.${lang}`; - const element = document.getElementById(inputId) - || document.getElementsByName(inputId)[0]; - - if (element) { - const fieldCollapse = element.closest('.ContentFormFieldCollapse'); - if (fieldCollapse && fieldCollapse.classList.contains('closed')) { - fieldCollapse.querySelector('[role=button]').click(); - setTimeout(() => element.focus(), 100); - } else { - element.focus(); - } - } - }, 500); - } - }; - - const modalButtons = [ - , - , - ]; - - const classContentArea = ['EditContentForm__content', ...( - workMode === WORK_MODE_EDIT ? ['EditContentForm__content--editmode'] : [] - )]; - - return ( - -
    -
    - -
    - - - - -
    - - - } - version={version || '0.0'} - labelSize={2} - currentUserName={currentUserName} - creatorUserName={creatorUserName || currentUserName} - modifierUserName={modifierUserName || currentUserName} - modifierText={intl.formatMessage(messages.modifier)} - creatorText={intl.formatMessage(messages.creator)} - sameAuthorText={intl.formatMessage(messages.sameAuthor)} - disabled - /> - - - - - } - disabled - input={{ value: contentType }} - /> - - -
    - - - - )} - placeholder={intl.formatMessage(messages.contentDesctiption)} - /> - - -
    -
    -
    -
    - - - -
    - - - - )} - options={groupsWithEmptyOption} - labelSize={2} - labelKey="name" - valueKey="code" - onChange={this.handleOwnerGroupChange} - disabled={workMode === WORK_MODE_EDIT} - placeholder={intl.formatMessage({ id: 'cms.label.chooseoption' })} - validate={[required]} - /> - -
    - - - )} - options={allGroups} - labelSize={2} - labelKey="name" - valueKey="code" - placeholder={intl.formatMessage({ id: 'cms.label.chooseoption' })} - /> - -
    - -
    -
    -
    - - - - - -
    - - - -
    - - {renderContentVersioningHistory} - -
    - -
    - ); - } -} -EditContentFormBody.propTypes = { - intl: intlShape.isRequired, - workMode: PropTypes.string.isRequired, - language: PropTypes.string.isRequired, - content: PropTypes.shape({ - typeDescription: PropTypes.string, - typeCode: PropTypes.string, - mainGroup: PropTypes.string, - attributes: PropTypes.arrayOf(PropTypes.shape({})), - }), - currentUser: PropTypes.string.isRequired, - location: PropTypes.shape({}).isRequired, - groups: PropTypes.arrayOf(PropTypes.shape({ - code: PropTypes.string.isRequired, - name: PropTypes.string.isRequired, - })), - allGroups: PropTypes.arrayOf(PropTypes.shape({ - code: PropTypes.string.isRequired, - name: PropTypes.string.isRequired, - })), - selectedJoinGroups: PropTypes.arrayOf(PropTypes.string), - handleSubmit: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - initialize: PropTypes.func.isRequired, - onDidMount: PropTypes.func.isRequired, - onSetOwnerGroupDisable: PropTypes.func.isRequired, - match: PropTypes.shape({ params: PropTypes.shape({}) }).isRequired, - onIncompleteData: PropTypes.func.isRequired, - onWillUnmount: PropTypes.func.isRequired, - onUnpublish: PropTypes.func.isRequired, - invalid: PropTypes.bool, - submitting: PropTypes.bool, - contentType: PropTypes.shape({ - name: PropTypes.string, - code: PropTypes.string, - }), - dirty: PropTypes.bool, - onDiscard: PropTypes.func.isRequired, - onCancel: PropTypes.func.isRequired, - onSave: PropTypes.func.isRequired, - loading: PropTypes.bool, - selectedOwnerGroup: PropTypes.string, - changeStatus: PropTypes.func.isRequired, - status: PropTypes.string, - resetSection: PropTypes.func.isRequired, - missingTranslations: PropTypes.arrayOf(PropTypes.shape({ - lang: PropTypes.string, - attributePath: PropTypes.string, - })).isRequired, - saveType: PropTypes.string.isRequired, - closeModal: PropTypes.func.isRequired, -}; - -EditContentFormBody.defaultProps = { - selectedJoinGroups: [], - content: {}, - invalid: false, - submitting: false, - contentType: {}, - dirty: false, - loading: false, - groups: [], - allGroups: [], - selectedOwnerGroup: '', - status: '', -}; - -const EditContentForm = reduxForm({ - form: 'editcontentform', - enableReinitialize: true, - keepDirtyOnReinitialize: true, -})(EditContentFormBody); - -export default EditContentForm; diff --git a/src/ui/edit-content/EditContentFormContainer.js b/src/ui/edit-content/EditContentFormContainer.js deleted file mode 100644 index f8e603402..000000000 --- a/src/ui/edit-content/EditContentFormContainer.js +++ /dev/null @@ -1,136 +0,0 @@ -import { connect } from 'react-redux'; -import { injectIntl, defineMessages } from 'react-intl'; -import { withRouter } from 'react-router-dom'; -import { change, formValueSelector, submit, destroy } from 'redux-form'; -import { routeConverter } from '@entando/utils'; -import { addToast, TOAST_SUCCESS } from '@entando/messages'; -import { - fetchContent, - clearEditContentForm, - setOwnerGroupDisable, - saveContent, - setWorkMode, - setMissingTranslations, - setSaveType, -} from 'state/edit-content/actions'; -import { fetchCategoryTreeAll } from 'state/categories/actions'; -import { sendPublishContent } from 'state/contents/actions'; -import { setVisibleModal } from 'state/modal/actions'; -import EditContentForm from 'ui/edit-content/EditContentForm'; -import { getUsername } from '@entando/apimanager'; -import { getLocale } from 'state/locale/selectors'; -import { - getOwnerGroupDisabled, - getContent, - getJoinedCategories, - getSaveType, - getMissingTranslations, -} from 'state/edit-content/selectors'; -import { fetchAllGroupEntries } from 'state/groups/actions'; -import { getGroupsList, getGroupEntries } from 'state/groups/selectors'; -import { getLoading } from 'state/loading/selectors'; -import { ROUTE_CMS_CONTENTS } from 'app-init/router'; -import { CONTINUE_SAVE_TYPE, APPROVE_SAVE_TYPE, WORK_MODE_EDIT } from 'state/edit-content/types'; -import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal'; -import { getTranslationWarning } from 'state/user-preferences/selectors'; - -export const TranslationWarningModalID = 'TranslationWarningModal'; - -const publishContentMsgs = defineMessages({ - published: { - id: 'cms.contents.published', - defaultMessage: 'Published.', - }, - unpublished: { - id: 'cms.contents.unpublished', - defaultMessage: 'Unpublished.', - }, - saved: { - id: 'cms.contents.saved', - defaultMessage: 'Saved.', - }, -}); - -export const mapStateToProps = (state, { match: { params } }) => ({ - workMode: WORK_MODE_EDIT, - language: getLocale(state), - content: getContent(state), - groups: getGroupsList(state), - allGroups: getGroupEntries(state), - currentUser: getUsername(state), - contentId: params.id, - ownerGroupDisabled: getOwnerGroupDisabled(state), - selectedJoinGroups: formValueSelector('editcontentform')(state, 'groups'), - selectedOwnerGroup: formValueSelector('editcontentform')(state, 'mainGroup'), - status: formValueSelector('editcontentform')(state, 'status'), - selectedCategories: getJoinedCategories(state), - saveType: getSaveType(state), - loading: getLoading(state).editContent, - missingTranslations: getMissingTranslations(state), - enableTranslationWarning: getTranslationWarning(state), -}); - -export const mapDispatchToProps = (dispatch, { history, intl }) => ({ - onDidMount: (fetchContentParams) => { - dispatch(setWorkMode(WORK_MODE_EDIT)); - dispatch(fetchContent(fetchContentParams)) - .catch(() => history.push(routeConverter(ROUTE_CMS_CONTENTS))); - dispatch(fetchAllGroupEntries()); - dispatch(fetchCategoryTreeAll()); - }, - onWillUnmount: () => { dispatch(clearEditContentForm()); dispatch(destroy('ContentType')); }, - onSetOwnerGroupDisable: disabled => dispatch(setOwnerGroupDisable(disabled)), - onIncompleteData: () => history.push(routeConverter(ROUTE_CMS_CONTENTS)), - onSubmit: (values, categories, ignoreWarnings, oldAttributes) => { - const { saveType, id } = values; - return dispatch(saveContent(values, ignoreWarnings, oldAttributes)).then((res) => { - if (res) { - dispatch(setVisibleModal('')); - dispatch(addToast( - intl.formatMessage(publishContentMsgs.saved), - TOAST_SUCCESS, - )); - if (saveType === APPROVE_SAVE_TYPE) { - dispatch(sendPublishContent(id, 'published')); - history.push(routeConverter(ROUTE_CMS_CONTENTS)); - } else if (saveType !== CONTINUE_SAVE_TYPE) { - history.push(routeConverter(ROUTE_CMS_CONTENTS)); - } else { - dispatch(fetchContent(`/${res.id}`)); - } - } - }).catch((missingTranslation) => { - dispatch(setMissingTranslations(missingTranslation)); - dispatch(setVisibleModal(TranslationWarningModalID)); - dispatch(setSaveType(saveType)); - }); - }, - onUnpublish: content => dispatch(sendPublishContent(content.id, 'draft')).then((res) => { - if (res) { - dispatch(addToast( - intl.formatMessage(publishContentMsgs.unpublished), - TOAST_SUCCESS, - )); - history.push(routeConverter(ROUTE_CMS_CONTENTS)); - } - }), - onSave: () => { - dispatch(setVisibleModal('')); - dispatch(submit('editcontentform')); - }, - onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)), - onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTS)); }, - changeStatus: value => dispatch(change('editcontentform', 'status', value)), - closeModal: () => dispatch(setVisibleModal('')), -}); - -const EditContentContainer = connect( - mapStateToProps, - mapDispatchToProps, - null, - { - pure: false, - }, -)(EditContentForm); - -export default withRouter(injectIntl(EditContentContainer)); diff --git a/src/ui/edit-content/EditContentPage.js b/src/ui/edit-content/EditContentPage.js deleted file mode 100644 index fd62dcce7..000000000 --- a/src/ui/edit-content/EditContentPage.js +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react'; -import { Row, Col, Grid, Breadcrumb } from 'patternfly-react'; -import { FormattedMessage } from 'react-intl'; -import CMSPageTitle from 'ui/common/CMSPageTitle'; -import BreadcrumbItem from 'ui/common/BreadcrumbItem'; -import InternalPage from 'ui/internal-page/InternalPage'; -import EditContentFormContainer from 'ui/edit-content/EditContentFormContainer'; - -const EditContentPage = () => ( - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - -); - -export default EditContentPage; diff --git a/src/ui/pages/add/PagesAddFormContainer.js b/src/ui/pages/add/PagesAddFormContainer.js index c0617bf9e..44e23202b 100644 --- a/src/ui/pages/add/PagesAddFormContainer.js +++ b/src/ui/pages/add/PagesAddFormContainer.js @@ -24,23 +24,6 @@ import { fetchMyGroupPermissions } from 'state/permissions/actions'; import { fetchAllGroupEntries, fetchMyGroups } from 'state/groups/actions'; import { getGroupEntries, getGroupsList } from 'state/groups/selectors'; -export const getDefaultLanguage = (languages) => { - const defaultLang = { code: 'en' }; - if (!languages || languages.length === 0) return defaultLang; - const defaultFiltered = languages.filter(lang => lang.isDefault); - if (defaultFiltered && defaultFiltered.length > 0) return defaultFiltered[0]; - return defaultLang; -}; - -export const complementTitlesForActiveLanguages = (existingTitles, languages) => { - const defaultLang = getDefaultLanguage(languages); - const defaultLangTitle = existingTitles && existingTitles[defaultLang.code]; - return languages.reduce((acc, curr) => ({ - ...acc, - [curr.code]: existingTitles[curr.code] || defaultLangTitle, - }), {}); -}; - const getNextPageProperty = ({ pages, property, diff --git a/src/ui/pages/common/PageForm.js b/src/ui/pages/common/PageForm.js index 4fe3038f9..aae615913 100644 --- a/src/ui/pages/common/PageForm.js +++ b/src/ui/pages/common/PageForm.js @@ -18,12 +18,27 @@ import { ACTION_SAVE, ACTION_SAVE_AND_CONFIGURE } from 'state/pages/const'; import SeoInfo from 'ui/pages/common/SeoInfo'; import FindTemplateModalContainer from 'ui/pages/common/FindTemplateModalContainer'; import { APP_TOUR_STARTED } from 'state/app-tour/const'; -import { complementTitlesForActiveLanguages } from 'ui/pages/add/PagesAddFormContainer'; import { codeWithDash } from 'helpers/attrValidation'; const maxLength30 = maxLength(30); const maxLength70 = maxLength(70); +const getDefaultLanguage = (languages) => { + const defaultLang = { code: 'en' }; + if (!languages || languages.length === 0) return defaultLang; + const defaultFiltered = languages.filter(lang => lang.isDefault); + if (defaultFiltered && defaultFiltered.length > 0) return defaultFiltered[0]; + return defaultLang; +}; + +const complementTitlesForActiveLanguages = (existingTitles, languages) => { + const defaultLang = getDefaultLanguage(languages); + const defaultLangTitle = existingTitles && existingTitles[defaultLang.code]; + return languages.reduce((acc, curr) => ({ + ...acc, + [curr.code]: existingTitles[curr.code] || defaultLangTitle, + }), {}); +}; const msgs = defineMessages({ chooseAnOption: { diff --git a/src/ui/pages/config/PageConfigPageContainer.js b/src/ui/pages/config/PageConfigPageContainer.js index d4ceebfb2..10ab84bcd 100644 --- a/src/ui/pages/config/PageConfigPageContainer.js +++ b/src/ui/pages/config/PageConfigPageContainer.js @@ -14,8 +14,6 @@ import { getSelectedPage, getSelectedPageIsPublished, getSelectedPageLocaleTitle, getSelectedPagePreviewURI, getSelectedPublishedPageURI, } from 'state/pages/selectors'; -import { setVisibleModal } from 'state/modal/actions'; -import { MODAL_ID } from 'ui/pages/config/SinglePageSettingsModal'; import { getLoading } from 'state/loading/selectors'; import withPermissions from 'ui/auth/withPermissions'; import { MANAGE_PAGES_PERMISSION } from 'state/permissions/const'; @@ -44,7 +42,6 @@ export const mapDispatchToProps = (dispatch, { match: { params } }) => ({ }, unpublishPage: () => dispatch(unpublishSelectedPage()), applyDefaultConfig: () => dispatch(applyDefaultConfig(params.pageCode)), - showPageSettings: () => dispatch(setVisibleModal(MODAL_ID)), onSettingsCancel: () => { dispatch(reset(FORM_ID)); dispatch(reset('SeoMetadataForm')); diff --git a/src/ui/pages/config/SinglePageSettingsForm.js b/src/ui/pages/config/SinglePageSettingsForm.js deleted file mode 100644 index a2bf1123c..000000000 --- a/src/ui/pages/config/SinglePageSettingsForm.js +++ /dev/null @@ -1,282 +0,0 @@ -import { get } from 'lodash'; -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage, injectIntl, intlShape } from 'react-intl'; -import { Field, FieldArray, FormSection, reduxForm } from 'redux-form'; -import { Button, Col, Form, FormGroup, Nav, NavItem, Row, TabContainer, TabContent, TabPane } from 'patternfly-react'; -import { maxLength, required } from '@entando/utils'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import FormLabel from 'ui/common/form/FormLabel'; -import SwitchRenderer from 'ui/common/form/SwitchRenderer'; -import RenderSelectInput from 'ui/common/form/RenderSelectInput'; -import MultiSelectRenderer from 'ui/pages/common/MultiSelectRenderer'; - -export const FORM_ID = 'single-page-settings'; -export const maxLength70 = maxLength(70); - -const toSelectInputOptions = arrayOfStrings => ( - arrayOfStrings.map(str => ({ code: str, name: str })) -); - -export class SinglePageSettingsFormBody extends Component { - constructor(props) { - super(props); - this.state = { visibleTitleTranslationCode: null }; - } - - componentWillMount() { - this.props.onWillMount(); - } - - selectVisibleTitleTranslation(code) { - this.setState({ - visibleTitleTranslationCode: code, - }); - } - - render() { - const { - handleSubmit, invalid, submitting, onReset, - activeNonDefaultLanguages, defaultLanguage, - groups, charsets, contentTypes, selectedJoinGroupCodes, - intl, - } = this.props; - - const formatText = id => intl.formatMessage({ id }); - - const charsetOptions = toSelectInputOptions(charsets); - const contentTypeOptions = toSelectInputOptions(contentTypes); - - const titleTranslationSelect = ( - - ); - - const visibleTitleTranslationCode = this.state.visibleTitleTranslationCode - || get(activeNonDefaultLanguages, '[0].code', ''); - - const activeNonDefaultLanguagesInputs = ( - - { - activeNonDefaultLanguages.map(lang => lang.code).map(languageCode => ( - - - - )) - } - - ); - - const defaultLanguageLabel = `${defaultLanguage.toUpperCase()} (default)`; - - const groupsWithEmptyOption = [ - { code: '', name: formatText('app.chooseAnOption') }, - ...groups, - ]; - - return ( -
    - -
    - - - -
    - - - - * - - - - } - labelSize={2} - inputSize={8} - component={RenderTextInput} - name={defaultLanguage} - validate={[required, maxLength70]} - alignClass="text-left" - /> -
    -
    - {titleTranslationSelect} -
    -
    - {activeNonDefaultLanguagesInputs} -
    -
    -
    - - - - - - - - } - labelSize={4} - alignClass="" - disabled - validate={required} - options={groupsWithEmptyOption} - optionValue="code" - optionDisplayName="name" - /> - - - - - - - - - - - - - - - - - - - - } - labelSize={4} - inputSize={5} - alignClass="" - options={charsetOptions} - optionValue="code" - optionDisplayName="name" - /> - - - } - labelSize={4} - inputSize={5} - alignClass="" - validate={required} - options={contentTypeOptions} - optionValue="code" - optionDisplayName="name" - /> - - - -
    -
    -
    -
    -
    -
    - - -
    -
    - ); - } -} - -SinglePageSettingsFormBody.propTypes = { - intl: intlShape.isRequired, - activeNonDefaultLanguages: PropTypes.arrayOf(PropTypes.shape({ - code: PropTypes.string, - name: PropTypes.string, - isActive: PropTypes.bool, - isDefault: PropTypes.bool, - })).isRequired, - defaultLanguage: PropTypes.string.isRequired, - charsets: PropTypes.arrayOf(PropTypes.string).isRequired, - contentTypes: PropTypes.arrayOf(PropTypes.string).isRequired, - groups: PropTypes.arrayOf(PropTypes.shape({ - code: PropTypes.string, - name: PropTypes.string, - })).isRequired, - selectedJoinGroupCodes: PropTypes.arrayOf(PropTypes.string), - handleSubmit: PropTypes.func.isRequired, - invalid: PropTypes.bool, - submitting: PropTypes.bool, - onReset: PropTypes.func.isRequired, - onWillMount: PropTypes.func.isRequired, -}; - -SinglePageSettingsFormBody.defaultProps = { - invalid: false, - submitting: false, - selectedJoinGroupCodes: [], -}; - -export default reduxForm({ - form: FORM_ID, -})(injectIntl(SinglePageSettingsFormBody)); diff --git a/src/ui/pages/config/SinglePageSettingsFormContainer.js b/src/ui/pages/config/SinglePageSettingsFormContainer.js deleted file mode 100644 index c0a9bc741..000000000 --- a/src/ui/pages/config/SinglePageSettingsFormContainer.js +++ /dev/null @@ -1,41 +0,0 @@ -import { connect } from 'react-redux'; -import { formValueSelector } from 'redux-form'; -import { sendPatchPage } from 'state/pages/actions'; -import { getSelectedPage, getCharsets, getContentTypes } from 'state/pages/selectors'; -import SinglePageSettingsForm, { FORM_ID } from 'ui/pages/config/SinglePageSettingsForm'; -import { fetchLanguages } from 'state/languages/actions'; -import { activeLangQueryString, noPagination } from 'ui/categories/common/formUtils'; -import { getDefaultLanguage, getActiveNonDefaultLanguages } from 'state/languages/selectors'; -import { getGroupsList } from 'state/groups/selectors'; -import { fetchMyGroups } from 'state/groups/actions'; - -export const mapStateToProps = state => ({ - initialValues: getSelectedPage(state), - activeNonDefaultLanguages: getActiveNonDefaultLanguages(state), - defaultLanguage: getDefaultLanguage(state), - groups: getGroupsList(state), - charsets: getCharsets(state), - contentTypes: getContentTypes(state), - selectedJoinGroupCodes: formValueSelector(FORM_ID)(state, 'joinGroups'), -}); - -export const mapDispatchToProps = (dispatch, ownProps) => ({ - onWillMount: () => { - dispatch(fetchLanguages(noPagination, activeLangQueryString)); - dispatch(fetchMyGroups()); - }, - onSubmit: (updatedValues) => { - dispatch(sendPatchPage(updatedValues)); - ownProps.onSubmit(); - }, - onReset: () => { - ownProps.onReset(); - }, -}); - -export default connect( - mapStateToProps, - mapDispatchToProps, - null, - { pure: false }, -)(SinglePageSettingsForm); diff --git a/src/ui/pages/config/SinglePageSettingsModal.js b/src/ui/pages/config/SinglePageSettingsModal.js deleted file mode 100644 index cbe43fa10..000000000 --- a/src/ui/pages/config/SinglePageSettingsModal.js +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import { Modal } from 'patternfly-react'; -import GenericModalContainer from 'ui/common/modal/GenericModalContainer'; -import SinglePageSettingsFormContainer from 'ui/pages/config/SinglePageSettingsFormContainer'; - -export const MODAL_ID = 'SinglePageSettingsModal'; - -const SinglePageSettingsModal = ({ onCancel, onSave }) => { - const modalTitle = ( - - ); - - const modalFooter = ; - - return ( - - - - ); -}; - -SinglePageSettingsModal.propTypes = { - onCancel: PropTypes.func.isRequired, - onSave: PropTypes.func.isRequired, -}; - -export default SinglePageSettingsModal; diff --git a/src/ui/pages/config/SinglePageSettingsModalContainer.js b/src/ui/pages/config/SinglePageSettingsModalContainer.js deleted file mode 100644 index 9371dc8b0..000000000 --- a/src/ui/pages/config/SinglePageSettingsModalContainer.js +++ /dev/null @@ -1,19 +0,0 @@ -import { connect } from 'react-redux'; -import { setVisibleModal } from 'state/modal/actions'; -import SinglePageSettingsModal from 'ui/pages/config/SinglePageSettingsModal'; - -const mapStateToProps = null; - -export const mapDispatchToProps = dispatch => ({ - onSave: () => { - dispatch(setVisibleModal('')); - }, - onCancel: () => { - dispatch(setVisibleModal('')); - }, -}); - -export default connect( - mapStateToProps, - mapDispatchToProps, -)(SinglePageSettingsModal); diff --git a/src/ui/pages/config/ToolbarContentIcon.js b/src/ui/pages/config/ToolbarContentIcon.js deleted file mode 100644 index 922b0fb00..000000000 --- a/src/ui/pages/config/ToolbarContentIcon.js +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { WIDGET_LIST } from 'state/page-config/const'; - - -const ToolbarContentIcon = ({ - content, position, toggleExpanded, handleClick, -}) => { - const iconClass = ['ToolbarContentIcon', `ToolbarContentIcon--${content}-${position}`]; - let target = content; - - if (content === 'pages') { - if (position === 'left') { - iconClass.push('drawer-pf-toogle-expand'); - } else if (position === 'right') { - target = WIDGET_LIST; - } - if (toggleExpanded) { - iconClass[1] = `ToolbarContentIcon--${content}-${position}-expanded`; - } - } - - return ( - {}} - onClick={() => { handleClick(target); }} - /> - ); -}; - -ToolbarContentIcon.propTypes = { - handleClick: PropTypes.func, - position: PropTypes.oneOf(['left', 'right']).isRequired, - content: PropTypes.oneOf(['widgets', 'pages']).isRequired, - toggleExpanded: PropTypes.bool, -}; - -ToolbarContentIcon.defaultProps = { - handleClick: () => {}, - toggleExpanded: false, -}; - -export default ToolbarContentIcon; diff --git a/src/ui/roles/common/DeleteRoleModal.js b/src/ui/roles/common/DeleteRoleModal.js deleted file mode 100644 index 4371d125c..000000000 --- a/src/ui/roles/common/DeleteRoleModal.js +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import GenericModalContainer from 'ui/common/modal/GenericModalContainer'; -import { - Button, EmptyState, Modal, - EmptyStateIcon, EmptyStateTitle, EmptyStateInfo, -} from 'patternfly-react'; - -export const MODAL_ID = 'DeleteRoleModal'; - -const DeleteRoleModal = ({ - onConfirmDelete, info, -}) => { - const buttons = [ - , - ]; - - const modalTitle = ( - - ); - - return ( - - - - -  {info.type} - - - - - - - ); -}; - -DeleteRoleModal.propTypes = { - onConfirmDelete: PropTypes.func, - info: PropTypes.shape({ - code: PropTypes.string, - type: PropTypes.string, - }), -}; - -DeleteRoleModal.defaultProps = { - onConfirmDelete: null, - info: { - code: '', - type: '', - }, -}; - -export default DeleteRoleModal; diff --git a/src/ui/roles/common/DeleteRoleModalContainer.js b/src/ui/roles/common/DeleteRoleModalContainer.js deleted file mode 100644 index 9c9ac7ae5..000000000 --- a/src/ui/roles/common/DeleteRoleModalContainer.js +++ /dev/null @@ -1,20 +0,0 @@ -import { connect } from 'react-redux'; -import { setVisibleModal } from 'state/modal/actions'; -import { getInfo } from 'state/modal/selectors'; -import { sendDeleteRole } from 'state/roles/actions'; -import DeleteRoleModal from 'ui/roles/common/DeleteRoleModal'; - -export const mapStateToProps = state => ({ - info: getInfo(state), -}); - -export const mapDispatchToProps = dispatch => ({ - onConfirmDelete: (roleCode) => { - dispatch(sendDeleteRole(roleCode)); - dispatch(setVisibleModal('')); - }, -}); - -const DeleteRoleModalContainer = connect(mapStateToProps, mapDispatchToProps)(DeleteRoleModal); - -export default DeleteRoleModalContainer; diff --git a/src/ui/test-const/admin-test-const.js b/src/ui/test-const/admin-test-const.js deleted file mode 100644 index 1444ab2d1..000000000 --- a/src/ui/test-const/admin-test-const.js +++ /dev/null @@ -1,11 +0,0 @@ -const TEST_ID_FOLDER_FILE_BROWSER = 'list_FilesListTable_a'; -const TEST_ID_BUTTON_FILE_BROWSER = 'common_FileButtonsGroup_Button'; -const TEST_ID_UPLOAD_FIELD_FILE_BROWSER = 'form_RenderFileInput_input'; -const TEST_ID_ACTION_BUTTON_FILE_BROWSER = 'upload_UploadFileBrowserForm_Button'; - -export { - TEST_ID_FOLDER_FILE_BROWSER, - TEST_ID_BUTTON_FILE_BROWSER, - TEST_ID_UPLOAD_FIELD_FILE_BROWSER, - TEST_ID_ACTION_BUTTON_FILE_BROWSER, -}; diff --git a/src/ui/test-const/components-test-const.js b/src/ui/test-const/components-test-const.js deleted file mode 100644 index 94c3ec958..000000000 --- a/src/ui/test-const/components-test-const.js +++ /dev/null @@ -1,31 +0,0 @@ -const TEST_ID_COMPONENT_LIST_BUTTON = 'list_ListWidgetPage_Button'; -const TEST_ID_ICON_UPLOADER_INPUT = 'common_IconUploader_input'; -const FIELD_NAME_TITLE_EN = 'titles.en'; -const FIELD_NAME_TITLE_IT = 'titles.it'; -const FIELD_NAME_CODE = 'code'; -const FIELD_NAME_CUSTOM_UI = 'customUi'; -const TEST_ID_GROUP_TYPEAHEAD = 'group-typeahead'; -const WIDGET_FORM_HEADER_CLASSNAME = 'WidgetPage__header'; -const TEST_ID_CONFIG_UI = 'form_JsonCodeEditorRenderer_Col'; -const TAB_NAME_CUSTOM_UI = 'Custom UI *'; -const TAB_NAME_CONFIG_UI = 'Config UI'; -const TEST_ID_WIDGETFORM_SAVE_DROPDOWNBTN = 'common_WidgetForm_DropdownButton'; -const EDIT_ACTION_CLASSNAME = 'WidgetListRow__menu-item-edit'; -const DELETE_ACTION_CLASSNAME = 'WidgetListRow__menu-item-delete'; - -export { - TEST_ID_COMPONENT_LIST_BUTTON, - TEST_ID_ICON_UPLOADER_INPUT, - FIELD_NAME_TITLE_EN, - FIELD_NAME_TITLE_IT, - FIELD_NAME_CODE, - TEST_ID_GROUP_TYPEAHEAD, - WIDGET_FORM_HEADER_CLASSNAME, - FIELD_NAME_CUSTOM_UI, - TEST_ID_CONFIG_UI, - TAB_NAME_CUSTOM_UI, - TAB_NAME_CONFIG_UI, - TEST_ID_WIDGETFORM_SAVE_DROPDOWNBTN, - EDIT_ACTION_CLASSNAME, - DELETE_ACTION_CLASSNAME, -}; diff --git a/src/ui/test-const/content-types-const.js b/src/ui/test-const/content-types-const.js deleted file mode 100644 index 07accf4c0..000000000 --- a/src/ui/test-const/content-types-const.js +++ /dev/null @@ -1,12 +0,0 @@ -export const TEST_ID_PAGE_CONTAINER = 'internal-page_InternalPage_div'; - -export const TEST_ID_CONTENTTYPES_LIST_TABLE = { - ACTION_EDIT: 'ContentTypeList__menu-item-edit', -}; - -export const TEST_ID_CONTENTTYPE_FORM = { - NAME_TYPE_DROPDOWN: 'type', - ACTION_EDIT: 'ContTypeAttributeListMenuAction__menu-item-edit', - ACTION_DELETE: 'ContTypeAttributeListMenuAction__menu-item-delete', - ATTRIBUTE_TYPE_DROPDOWN: 'nestedAttribute.type', -}; diff --git a/src/ui/test-const/group-test-const.js b/src/ui/test-const/group-test-const.js deleted file mode 100644 index 0c22c1544..000000000 --- a/src/ui/test-const/group-test-const.js +++ /dev/null @@ -1,2 +0,0 @@ -export const TEST_ID_GROUPS_TABLE = 'groups-table'; -export const TEST_ID_GROUP_DELETE_ACTION = 'group-delete-action'; diff --git a/src/ui/test-const/page-designer-test-const.js b/src/ui/test-const/page-designer-test-const.js deleted file mode 100644 index d4efe2416..000000000 --- a/src/ui/test-const/page-designer-test-const.js +++ /dev/null @@ -1,16 +0,0 @@ -export const TEST_ID_PAGE_DESIGNER = { - STATUS: 'common_PageStatusIcon_i', - CONFIG_TABS: 'config_ToolbarPageConfig_Tabs', - PAGE_TREE: 'common_PageTreeCompact_span', - WIDGET_LIST_ITEM: 'config_WidgetGroupingItem_div', - BUTTON: 'config_PageConfigPage_Button', - WIDGET_CONFIG: 'config_WidgetConfigPage_Panel', -}; - -export const TEST_ID_WIDGET_FRAME = { - CONTENT: 'config_WidgetFrame_div', - EMPTY_FRAME: 'config_EmptyFrame_span', - ACTIONS: 'config_WidgetFrame_MenuItem', - ACTION_LINKS: 'config_WidgetFrame_Link', -}; - diff --git a/src/ui/test-const/page-management-test-const.js b/src/ui/test-const/page-management-test-const.js deleted file mode 100644 index 755bc69a2..000000000 --- a/src/ui/test-const/page-management-test-const.js +++ /dev/null @@ -1,45 +0,0 @@ -export const TEST_ID_PAGE_TREE = { - PAGE_NAME: 'common_PageTree_span', -}; - -export const TEST_ID_PAGE_TREE_SEARCH_FORM = { - DROPDOWN_BUTTON: 'list_PageSearchForm_DropdownButton', - DROPDOWN_MENU_ITEM: 'list_PageSearchForm_MenuItem', - SEARCH_FIELD: 'list_PageSearchForm_Field', - SEARCH_BUTTON: 'list_PageSearchForm_Button', -}; - -export const TEST_ID_LIST_PAGE_TREE = { - SEARCH_TABLE: 'list_PageListSearchTable_div', - BUTTON: 'list_PageTreePage_Button', - STATUS: 'common_PageStatusIcon_i', - ACTION_MENU: 'common_PageTreeActionMenu_MenuItem', -}; - -export const TEST_ID_PAGE_FORM = { - TABS: 'common_SeoInfo_Tabs', - CODE_FIELD: 'code', - TITLE_FIELD: 'titles.LANG-CODE', - SEO_DESCRIPTION_FIELD: 'seoData.seoDataByLang.LANG-CODE.description', - SEO_KEYWORDS_FIELD: 'seoData.seoDataByLang.LANG-CODE.keywords', - SEO_FRIENDLY_CODE_FIELD: 'seoData.seoDataByLang.LANG-CODE.friendlyCode', - SEO_INHERIT_DESCRIPTION_SWITCH_FIELD: 'seoData.seoDataByLang.LANG-CODE.inheritDescriptionFromDefaultLang-switchField', - SEO_INHERIT_KEYWORDS_SWITCH_FIELD: 'seoData.seoDataByLang.LANG-CODE.inheritKeywordsFromDefaultLang-switchField', - SEO_INHERIT_FRIENDLY_CODE_SWITCH_FIELD: 'seoData.seoDataByLang.LANG-CODE.inheritFriendlyCodeFromDefaultLang-switchField', - PAGE_TREE_SELECTOR_FIELD: 'PageForm__PageTreeSelector', - PAGE_TEMPLATE_FIELD: 'pageModel', - OWNER_GROUP_TYPEAHEAD: 'ownerGroup-typeahead', - OWNER_GROUP_OPTIONS: 'ownerGroup', - BUTTON: 'common_PageForm_Button', - SAVE_BUTTON: 'save-page', -}; - -export const TEST_ID_PAGE_FORM_META_TAG = { - DEFAULT_LANG_KEY_FIELD: 'metakey', - DEFAULT_LANG_TYPE_FIELD: 'metatype', - DEFAULT_LANG_VALUE_FIELD: 'metavalue', - TYPE_FIELD: 'seoData.seoDataByLang.LANG-CODE.metaTags[META_TAG_ID].type', - VALUE_FIELD: 'seoData.seoDataByLang.LANG-CODE.metaTags[META_TAG_ID].value', - INHERIT_SWITCH_FIELD: 'seoData.seoDataByLang.LANG-CODE.metaTags[META_TAG_ID].useDefaultLang-switchField', - BUTTON: 'common_SeoMetadataForm_Button', -}; diff --git a/src/ui/test-const/test-const.js b/src/ui/test-const/test-const.js deleted file mode 100644 index 9f1bc18d3..000000000 --- a/src/ui/test-const/test-const.js +++ /dev/null @@ -1,5 +0,0 @@ -const TEST_ID_GENERIC_MODAL = { - BUTTON: 'modal_GenericModal_Button', -}; - -export default TEST_ID_GENERIC_MODAL; diff --git a/src/ui/widget-forms/AsyncTypeAheadSelect.js b/src/ui/widget-forms/AsyncTypeAheadSelect.js deleted file mode 100644 index 105165623..000000000 --- a/src/ui/widget-forms/AsyncTypeAheadSelect.js +++ /dev/null @@ -1,69 +0,0 @@ -// got from https://github.com/patternfly/patternfly-react/blob/master/packages/patternfly-3/patternfly-react/src/components/TypeAheadSelect/AsyncTypeAheadSelect.js -// TODO remove it after upgrading to v2.x of patternfly-react -/* eslint-disable react/forbid-prop-types */ -import React from 'react'; -import { AsyncTypeahead } from 'react-bootstrap-typeahead'; -import PropTypes from 'prop-types'; - -class AsyncTypeAheadSelect extends React.Component { - constructor(props) { - super(props); - const { options, isLoading } = this.props; - this.state = { - options, - isLoading, - }; - this.onSearchStart = this.onSearchStart.bind(this); - this.onSearchEnd = this.onSearchEnd.bind(this); - this.handleSearch = this.handleSearch.bind(this); - } - - onSearchStart() { - this.setState({ isLoading: true }); - } - - onSearchEnd(options) { - this.setState({ options, isLoading: false }); - } - - // query is the text string entered by the user. - handleSearch(query) { - const { onSearch } = this.props; - this.onSearchStart(); - Promise.resolve(onSearch(query)).then(options => this.onSearchEnd(options)); - } - - render() { - const { innerRef, ...props } = this.props; - const { options, isLoading } = this.state; - return ( - - ); - } -} - -AsyncTypeAheadSelect.propTypes = { - /** Callback function for search */ - onSearch: PropTypes.func.isRequired, - /** Array of selectable options */ - options: PropTypes.array, - /** Flag to indicate if typeahead is loading */ - isLoading: PropTypes.bool, - /** Internal property to access the react bootstrap typeahead component via outer ref property */ - innerRef: PropTypes.any, -}; - -AsyncTypeAheadSelect.defaultProps = { - options: [], - isLoading: false, - innerRef: null, -}; - -// eslint-disable-next-line react/no-multi-comp -export default React.forwardRef((props, ref) => ); diff --git a/src/ui/widget-forms/ContentPicker.js b/src/ui/widget-forms/ContentPicker.js deleted file mode 100644 index d5d7f0be1..000000000 --- a/src/ui/widget-forms/ContentPicker.js +++ /dev/null @@ -1,137 +0,0 @@ -import React, { Component, Fragment } from 'react'; -import AsyncTypeAheadSelect from 'ui/widget-forms/AsyncTypeAheadSelect'; -import { intlShape } from 'react-intl'; -import PropTypes from 'prop-types'; -import { Button, Row, Col, FormGroup } from 'patternfly-react'; - -import { Field, reduxForm } from 'redux-form'; - -import RenderSelectInput from 'ui/common/form/RenderSelectInput'; -import FormLabel from 'ui/common/form/FormLabel'; - -class ContentPickerBody extends Component { - constructor(props) { - super(props); - this.handlePickContent = this.handlePickContent.bind(this); - this.handleContentChange = this.handleContentChange.bind(this); - this.typeaheadRef = React.createRef(); - this.state = { - selectedContent: null, - }; - } - - componentDidMount() { - const { onDidMount } = this.props; - onDidMount(); - } - - handleContentChange(contentArray) { - const selectedContent = contentArray[0]; - this.setState({ selectedContent }); - } - - handlePickContent() { - const { selectedContent } = this.state; - const { onPickContent } = this.props; - if (selectedContent == null) return; - onPickContent(selectedContent); - this.typeaheadRef.current.getInstance().clear(); - this.setState({ selectedContent: null }); - } - - render() { - const { - contentTypeList, - contentStatusList, - fetchContents, - intl, - multipleContentsMode, - contentsNumber, - } = this.props; - const { selectedContent } = this.state; - const searchPlaceholderMsg = intl.formatMessage({ id: 'contentPicker.searchPlaceholder' }); - let addButtonDisabled = false; - if (multipleContentsMode) { - addButtonDisabled = selectedContent == null; - } else { - addButtonDisabled = (contentsNumber === 0 && selectedContent == null) - || contentsNumber > 0; - } - const renderAddButton = ( - - ); - return ( - - - - } - options={contentTypeList} - optionValue="code" - optionDisplayName="name" - defaultOptionId="contentPicker.allTypes" - /> - - - } - options={contentStatusList} - optionValue="code" - optionDisplayName="name" - defaultOptionId="contentPicker.allStatuses" - /> - - - - - } - placeholder={searchPlaceholderMsg} - ref={this.typeaheadRef} - onSearch={fetchContents} - onChange={this.handleContentChange} - labelKey={option => `${option.id} - ${option.description}`} - useCache={false} - /> - - - - {renderAddButton} - - - - - ); - } -} - -const ContentPicker = reduxForm()(ContentPickerBody); - -ContentPickerBody.propTypes = { - intl: intlShape.isRequired, - onPickContent: PropTypes.func.isRequired, - multipleContentsMode: PropTypes.bool, - contentsNumber: PropTypes.number, - onDidMount: PropTypes.func.isRequired, - fetchContents: PropTypes.func.isRequired, - contentTypeList: PropTypes.arrayOf(PropTypes.shape({})).isRequired, - contentStatusList: PropTypes.arrayOf(PropTypes.shape({})).isRequired, -}; - -ContentPickerBody.defaultProps = { - multipleContentsMode: true, - contentsNumber: 0, -}; - -export default ContentPicker; diff --git a/src/ui/widget-forms/ContentPickerContainer.js b/src/ui/widget-forms/ContentPickerContainer.js deleted file mode 100644 index 49ad8cf44..000000000 --- a/src/ui/widget-forms/ContentPickerContainer.js +++ /dev/null @@ -1,57 +0,0 @@ -import { connect } from 'react-redux'; -import { injectIntl } from 'react-intl'; -import { formValueSelector } from 'redux-form'; -import { convertToQueryString, FILTER_OPERATORS } from '@entando/utils'; -import { fetchContentTypeListPaged } from 'state/content-type/actions'; -import { getContentTypeList } from 'state/content-type/selectors'; -import ContentPicker from 'ui/widget-forms/ContentPicker'; -import { getContents } from 'api/contents'; -import { parseJoinGroups } from 'helpers/joinGroups'; - -const noPaging = { page: 1, pageSize: 0 }; - -const toFilter = formState => Object.keys(formState).reduce((acc, key) => ({ - formValues: { - ...acc.formValues, - [key]: formState[key], - }, - operators: { - ...acc.operators, - [key]: FILTER_OPERATORS.EQUAL, - }, -}), { - formValues: {}, - operators: {}, -}); - -const getFilteredContents = (formState, ownerGroup, joinGroupsToParse) => { - const filter = toFilter(formState); - const filterParams = convertToQueryString(filter); - const ownerGroupQuery = ownerGroup ? `&forLinkingWithOwnerGroup=${ownerGroup}` : ''; - const joinGroups = parseJoinGroups(joinGroupsToParse); - const joinGroupsQuery = (joinGroups && joinGroups.length > 0) - ? joinGroups.reduce((acc, curr, index) => `${acc}&forLinkingWithExtraGroups[${index}]=${curr}`, '') : ''; - const contentParams = `${filterParams || '?'}&status=published${ownerGroupQuery}${joinGroupsQuery}`; - return getContents(noPaging, contentParams) - .then(res => res.json()) - .then(json => json.payload); -}; - -export const mapStateToProps = (state, ownProps) => ({ - contentTypeList: getContentTypeList(state), - contentStatusList: [{ code: 'draft', name: 'Draft' }, { code: 'ready', name: 'Ready' }], - fetchContents: () => getFilteredContents( - formValueSelector(ownProps.form)(state, 'typeCode', 'status'), - ownProps.ownerGroup, ownProps.joinGroups, - ), -}); - -export const mapDispatchToProps = dispatch => ({ - onDidMount: () => { - dispatch(fetchContentTypeListPaged(noPaging)); - }, -}); - -export default connect(mapStateToProps, mapDispatchToProps, null, { - pure: false, -})(injectIntl(ContentPicker)); diff --git a/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTour.js b/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTour.js deleted file mode 100644 index bb2ec93b1..000000000 --- a/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTour.js +++ /dev/null @@ -1,299 +0,0 @@ -import React from 'react'; -import Tour from 'reactour'; -import PropTypes from 'prop-types'; -import { Button } from 'patternfly-react'; -import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock'; -import { FormattedMessage } from 'react-intl'; -import { APP_TOUR_CANCELLED, APP_TOUR_STARTED } from 'state/app-tour/const'; - -const mouseClickEvents = ['mouseover', 'hover', 'mousedown', 'click', 'mouseup']; -const simulateMouseClick = (element) => { - mouseClickEvents.forEach(mouseEventType => element.dispatchEvent(new MouseEvent(mouseEventType, { - view: window, - bubbles: true, - cancelable: true, - buttons: 1, - }))); -}; - -const TOTAL_STEPS = 23; -const STEP_OFFSET = -2; - -const disableBody = target => disableBodyScroll(target); -const enableBody = target => enableBodyScroll(target); - -class SingleContentConfigTour extends React.Component { - constructor(props) { - super(props); - this.state = { - isTourOpen: true, - }; - this.onNextStep = this.onNextStep.bind(this); - this.setIsTourOpen = this.setIsTourOpen.bind(this); - this.generateSteps = this.generateSteps.bind(this); - } - - componentDidUpdate(prevProps) { - const { isTourOpen } = this.state; - const { wizardEnabled, appTourProgress, onAppTourCancel } = this.props; - const tourInProgress = isTourOpen && wizardEnabled && appTourProgress === APP_TOUR_STARTED; - if (prevProps.appTourProgress !== appTourProgress) { - if (appTourProgress === APP_TOUR_CANCELLED) { - window.onbeforeunload = null; - window.onunload = null; - } - if (tourInProgress) { - window.onbeforeunload = (e) => { - e.preventDefault(); - e.returnValue = ''; - return e; - }; - window.onunload = () => { - onAppTourCancel(); - }; - } - } - } - - onNextStep(step, goTo) { - const { setNextStep } = this.props; - setNextStep(step); - goTo(step); - } - - setIsTourOpen(value) { - const { tourCreatedPageCode, publishStatus } = this.props; - if (value === false) { - const { onAppTourCancel } = this.props; - onAppTourCancel(tourCreatedPageCode, publishStatus); - document.body.style.overflow = 'auto'; - } - this.setState({ isTourOpen: value }); - } - - generateSteps() { - const { - appTourLastStep, onNextSelectContent, contents, - } = this.props; - - const step18Element = document.querySelector('.app-tour-step-18'); - const step19Cancel = document.querySelector('.GenericModal__cancel'); - const step20Element = document.querySelector('.app-tour-step-20'); - const step21Element = document.querySelector('.app-tour-step-21'); - const step21Cancel = document.querySelector('.AddContentTypeFormBody__cancel--btn'); - - const steps = [ - { - step: 0, - content: ({ goTo }) => ( -
    -
    -
    -

    - -

    -
    -
    - - -
    -
    - ), - }, - { step: 1 }, - { step: 2 }, - { step: 3 }, - { step: 4 }, - { step: 5 }, - { step: 6 }, - { step: 7 }, - { step: 8 }, - { step: 9 }, - { step: 10 }, - { step: 11 }, - { step: 12 }, - { step: 13 }, - { step: 14 }, - { step: 15 }, - { step: 16 }, - { step: 17 }, - { - step: 18, - onNext: ({ goTo }) => { - simulateMouseClick(step18Element); - this.onNextStep(19, goTo); - }, - nextButtonDisabled: !step18Element, - onBack: ({ goTo }) => { - simulateMouseClick(step21Cancel); - this.onNextStep(17, goTo); - }, - stepInteraction: true, - }, - { - step: 19, - onNext: () => onNextSelectContent(contents[0]), - onBack: ({ goTo }) => { - simulateMouseClick(step19Cancel); - this.onNextStep(18, goTo); - }, - stepInteraction: true, - }, - { - step: 20, - onNext: () => simulateMouseClick(step20Element), - nextButtonDisabled: !step20Element, - onBack: ({ goTo }) => { - this.onNextStep(19, goTo); - }, - stepInteraction: true, - }, - { - step: 21, - onNext: () => simulateMouseClick(step21Element), - nextButtonDisabled: !step21Element, - onBack: ({ goTo }) => { - simulateMouseClick(step18Element); - this.onNextStep(19, goTo); - }, - stepInteraction: true, - }, - ]; - return steps.map(step => ({ - selector: `.app-tour-step-${step.step}`, - content: step.content || ( - args => ( -
    -
    - -
    -
    -

    - -

    - - - -
    -
    -
    - - -
    - {`${args.step + STEP_OFFSET}/${TOTAL_STEPS}`} -
    - -
    -
    - ) - ), - stepInteraction: step.stepInteraction || false, - action: step.focusAction && ( - (node) => { - if (node) { - node.focus(); - } - } - ), - position: 'top', - style: { - backgroundColor: '#fff', - height: 'auto', - width: '446px', - maxWidth: '446px', - borderRadius: '1px', - padding: 0, - }, - })); - } - - render() { - const { isTourOpen } = this.state; - const { - wizardEnabled, appTourLastStep, appTourProgress, lockBodyScroll, contents, - } = this.props; - if (!wizardEnabled || appTourProgress === APP_TOUR_CANCELLED) return null; - return ( - {}} - startAt={appTourLastStep} - goToStep={appTourLastStep} - disableFocusLock - highlightedMaskClassName="AppTourHighlight" - onAfterOpen={lockBodyScroll ? disableBody : null} - onBeforeClose={enableBody} - className="helper" - disableInteraction={false} - inViewThreshold={3000} - scrollDuration={50} - update={contents} - updateDelay={1000} - /> - ); - } -} - -SingleContentConfigTour.propTypes = { - wizardEnabled: PropTypes.bool, - onAppTourCancel: PropTypes.func.isRequired, - onNextSelectContent: PropTypes.func.isRequired, - appTourProgress: PropTypes.string, - appTourLastStep: PropTypes.number, - setNextStep: PropTypes.func.isRequired, - tourCreatedPageCode: PropTypes.string, - lockBodyScroll: PropTypes.bool, - publishStatus: PropTypes.bool, - contents: PropTypes.arrayOf(PropTypes.shape({})), -}; - -SingleContentConfigTour.defaultProps = { - wizardEnabled: false, - appTourProgress: '', - appTourLastStep: 1, - tourCreatedPageCode: '', - lockBodyScroll: true, - publishStatus: false, - contents: [], -}; - -export default SingleContentConfigTour; diff --git a/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTourContainer.js b/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTourContainer.js deleted file mode 100644 index d3d23750a..000000000 --- a/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTourContainer.js +++ /dev/null @@ -1,45 +0,0 @@ -import { connect } from 'react-redux'; -import { withRouter } from 'react-router-dom'; -import { getUsername } from '@entando/apimanager'; - -import SingleContentConfigTour from 'ui/widget-forms/publish-single-content-config/SingleContentConfigTour'; -import { selectSingleRow } from 'state/contents/actions'; -import { getAppTourlastStep, getAppTourProgress, getPublishStatus, getTourCreatedPage, getWizardEnabled } from 'state/app-tour/selectors'; -import { getContents } from 'state/contents/selectors'; -import { setAppTourLastStep, setAppTourProgress } from 'state/app-tour/actions'; - -import { APP_TOUR_CANCELLED } from 'state/app-tour/const'; -import { sendDeletePage } from 'state/pages/actions'; - -export const mapStateToProps = (state, { lockBodyScroll = true }) => { - const pageCode = (getTourCreatedPage(state) || {}).code || ''; - return { - username: getUsername(state), - wizardEnabled: getWizardEnabled(state), - appTourProgress: getAppTourProgress(state), - appTourLastStep: getAppTourlastStep(state), - lockBodyScroll, - tourCreatedPageCode: pageCode, - publishStatus: getPublishStatus(state), - contents: getContents(state), - }; -}; -export const mapDispatchToProps = dispatch => ({ - onAppTourCancel: (code, publishStatus) => { - if (code && !publishStatus) { - dispatch(sendDeletePage({ code, tourProgress: APP_TOUR_CANCELLED })); - } - dispatch(setAppTourProgress(APP_TOUR_CANCELLED)); - dispatch(setAppTourLastStep(1)); - }, - setNextStep: step => dispatch(setAppTourLastStep(step)), - onNextSelectContent: (content) => { - dispatch(selectSingleRow(content)); - dispatch(setAppTourLastStep(20)); - }, -}); - -export default withRouter(connect( - mapStateToProps, - mapDispatchToProps, -)(SingleContentConfigTour)); diff --git a/src/ui/widgets/config/forms/InternalServletConfigForm.js b/src/ui/widgets/config/forms/InternalServletConfigForm.js deleted file mode 100644 index 33d661833..000000000 --- a/src/ui/widgets/config/forms/InternalServletConfigForm.js +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Field, reduxForm } from 'redux-form'; -import { FormattedMessage, defineMessages, injectIntl, intlShape } from 'react-intl'; -import { Row, Col, FormGroup, Button } from 'patternfly-react'; -import FormLabel from 'ui/common/form/FormLabel'; - -const msgs = defineMessages({ - actionPath: { - id: 'widgetConfig.internalServlet.actionPath', - defaultMessage: 'Action Path', - }, -}); - -export const InternalServletConfigFormBody = ({ intl, handleSubmit }) => ( -
    { ev.preventDefault(); handleSubmit(); }} - > -
    - -   - -
    - - - - - - - - - - - - - - - - - -); - - -InternalServletConfigFormBody.propTypes = { - intl: intlShape.isRequired, - handleSubmit: PropTypes.func.isRequired, -}; - -const InternalServletConfigForm = reduxForm({ - form: 'widgetConfigForm', -})(InternalServletConfigFormBody); - -export default injectIntl(InternalServletConfigForm); diff --git a/test/api/contentSettings.test.js b/test/api/contentSettings.test.js deleted file mode 100644 index 15d86b423..000000000 --- a/test/api/contentSettings.test.js +++ /dev/null @@ -1,148 +0,0 @@ -import { configEnzymeAdapter } from 'test/legacyTestUtils'; - -import { - getContentSettings, - postReloadIndexes, - postReloadReferences, - putEditorSettings, - postCropRatio, - deleteCropRatio, - postMetadataMap, - putMetadataMap, - deleteMetadataMap, -} from 'api/contentSettings'; -import { makeRequest } from '@entando/apimanager'; -import { - CONTENT_SETTINGS_OK, - CONTENT_SETTINGS_REFRESH_OK, - CONTENT_SETTINGS_EDITOR_OK, - CONTENT_SETTINGS_CROP_RATIOS_OK, - CONTENT_SETTINGS_METADATA_OK, -} from 'test/mocks/contentSettings'; - -configEnzymeAdapter(); - -jest.unmock('api/contentSettings'); -jest.mock('@entando/apimanager', () => ({ - makeRequest: jest.fn(() => new Promise(resolve => resolve({}))), - METHODS: { - GET: 'GET', - POST: 'POST', - PUT: 'PUT', - DELETE: 'DELETE', - }, -})); - -describe('api/contentSettings', () => { - it('getContentSettings returns a promise with correct params', () => { - const response = getContentSettings(); - expect(makeRequest).toHaveBeenCalledWith({ - uri: '/api/plugins/cms/contentSettings', - method: 'GET', - mockResponse: CONTENT_SETTINGS_OK, - useAuthentication: true, - }); - expect(response).toBeInstanceOf(Promise); - }); - - it('postReloadIndexes returns a promise with correct params', () => { - const response = postReloadIndexes(); - expect(makeRequest).toHaveBeenCalledWith({ - uri: '/api/plugins/cms/contentSettings/reloadIndexes', - method: 'POST', - body: {}, - mockResponse: CONTENT_SETTINGS_REFRESH_OK, - useAuthentication: true, - }); - expect(response).toBeInstanceOf(Promise); - }); - - it('postReloadReferences returns a promise with correct params', () => { - const response = postReloadReferences(); - expect(makeRequest).toHaveBeenCalledWith({ - uri: '/api/plugins/cms/contentSettings/reloadReferences', - method: 'POST', - body: {}, - mockResponse: CONTENT_SETTINGS_REFRESH_OK, - useAuthentication: true, - }); - expect(response).toBeInstanceOf(Promise); - }); - - it('putEditorSettings returns a promise with correct params', () => { - const param = { key: 1 }; - const response = putEditorSettings(param); - expect(makeRequest).toHaveBeenCalledWith({ - uri: '/api/plugins/cms/contentSettings/editor', - method: 'PUT', - body: param, - mockResponse: CONTENT_SETTINGS_EDITOR_OK, - useAuthentication: true, - }); - expect(response).toBeInstanceOf(Promise); - }); - - it('postCropRatio returns a promise with correct params', () => { - const cropRatio = '4:9'; - const response = postCropRatio(cropRatio); - expect(makeRequest).toHaveBeenCalledWith({ - uri: '/api/plugins/cms/contentSettings/cropRatios', - method: 'POST', - body: { ratio: cropRatio }, - mockResponse: CONTENT_SETTINGS_CROP_RATIOS_OK, - useAuthentication: true, - }); - expect(response).toBeInstanceOf(Promise); - }); - - it('postMetadataMap returns a promise with correct params', () => { - const param = 1; - const response = postMetadataMap(param); - expect(makeRequest).toHaveBeenCalledWith({ - uri: '/api/plugins/cms/contentSettings/metadata', - method: 'POST', - body: param, - mockResponse: CONTENT_SETTINGS_METADATA_OK, - useAuthentication: true, - }); - expect(response).toBeInstanceOf(Promise); - }); - - it('deleteCropRatio returns a promise with correct params', () => { - const cropRatio = '4:9'; - const response = deleteCropRatio(cropRatio); - expect(makeRequest).toHaveBeenCalledWith({ - uri: `/api/plugins/cms/contentSettings/cropRatios/${cropRatio}`, - method: 'DELETE', - mockResponse: CONTENT_SETTINGS_CROP_RATIOS_OK, - useAuthentication: true, - }); - expect(response).toBeInstanceOf(Promise); - }); - - it('putMetadataMap returns a promise with correct params', () => { - const key = 'wa'; - const mapping = 'kanda'; - const response = putMetadataMap(key, mapping); - expect(makeRequest).toHaveBeenCalledWith({ - uri: `/api/plugins/cms/contentSettings/metadata/${key}`, - method: 'PUT', - body: { mapping }, - mockResponse: CONTENT_SETTINGS_METADATA_OK, - useAuthentication: true, - }); - expect(response).toBeInstanceOf(Promise); - }); - - it('deleteMetadataMap returns a promise with correct params', () => { - const mapping = 1; - const response = deleteMetadataMap(mapping); - expect(makeRequest).toHaveBeenCalledWith({ - uri: `/api/plugins/cms/contentSettings/metadata/${mapping}`, - method: 'DELETE', - mockResponse: CONTENT_SETTINGS_METADATA_OK, - useAuthentication: true, - }); - expect(response).toBeInstanceOf(Promise); - }); -}); diff --git a/test/api/notification.test.js b/test/api/notification.test.js deleted file mode 100644 index 5ee98b11f..000000000 --- a/test/api/notification.test.js +++ /dev/null @@ -1,18 +0,0 @@ -import 'test/enzyme-init'; -import { getApiNotifications } from 'api/notification'; -import { NOTIFICATIONS } from 'test/mocks/notification'; - -jest.unmock('api/groups'); - - -it('returns a promise', () => { - const filledInput = getApiNotifications(); - expect(typeof filledInput.then === 'function').toBeDefined(); -}); - - -it('verify success groups', () => { - getApiNotifications().then((response) => { - expect(response).toEqual(NOTIFICATIONS); - }); -}); diff --git a/test/state/content-settings/actions.test.js b/test/state/content-settings/actions.test.js deleted file mode 100644 index e194a391b..000000000 --- a/test/state/content-settings/actions.test.js +++ /dev/null @@ -1,523 +0,0 @@ -import { createMockStore, mockApi } from 'test/testUtils'; -import { - setContentSettings, - setEditorSettings, - setMetadataMapping, - fetchContentSettings, - sendPostReloadReferences, - sendPostReloadIndexes, - sendPutEditorSettings, - addCropRatio, - removeCropRatio, - updateCropRatio, - sendPostMetadataMap, - sendPutMetadataMap, - checkAndPutMetadataMap, - sendDeleteMetadataMap, - wait, -} from 'state/content-settings/actions'; -import { - SET_CONTENT_SETTINGS, - SET_EDITOR_SETTINGS, - SET_CROP_RATIOS, - SET_METADATA_MAPPING, -} from 'state/content-settings/types'; -import * as selectors from 'state/content-settings/selectors'; -import { TOGGLE_LOADING } from 'state/loading/types'; -import { CONTENT_SETTINGS_OK } from 'test/mocks/contentSettings'; - -import { - getContentSettings, - postReloadReferences, - postReloadIndexes, - putEditorSettings, - postCropRatio, - deleteCropRatio, - putCropRatio, - postMetadataMap, - putMetadataMap, - deleteMetadataMap, -} from 'api/contentSettings'; - -const contSettings = CONTENT_SETTINGS_OK; - -const CONTMODEL_SET_PARAMS = { - type: SET_CONTENT_SETTINGS, - payload: contSettings, -}; - -jest.mock('api/contentSettings', () => ({ - getContentSettings: jest.fn(mockApi({ - payload: { - indexesLastReload: { - date: 1569393692905, - result: 1, - }, - indexesStatus: 0, - referencesStatus: 0, - metadata: { - legend: [], - alt: [], - description: [], - title: [], - }, - cropRatios: ['4:9'], - editor: { - label: 'CKEditor', - key: 'fckeditor', - }, - }, - })), - postReloadReferences: jest.fn(mockApi({ payload: '' })), - postReloadIndexes: jest.fn(mockApi({ payload: '' })), - putEditorSettings: jest.fn(key => mockApi({ payload: key })()), - postCropRatio: jest.fn(mockApi({})), - deleteCropRatio: jest.fn(mockApi({})), - putCropRatio: jest.fn(mockApi({})), - postMetadataMap: jest.fn(({ key, mapping }) => mockApi({ - payload: { - [key]: mapping, - legend: [], - alt: [], - description: [], - title: [], - }, - })()), - putMetadataMap: jest.fn((key, mapping) => mockApi({ - payload: { - [key]: mapping, - alt: [], - description: [], - title: [], - }, - })()), - deleteMetadataMap: jest.fn(() => mockApi({ - payload: { - legend: [], - alt: [], - description: [], - title: [], - }, - })()), -})); - -// eslint-disable-next-line no-import-assign -selectors.getCropRatios = jest.fn(); - -it('test setContentSettings action', () => { - expect(setContentSettings(contSettings)).toEqual(CONTMODEL_SET_PARAMS); -}); - -it('test setEditorSettings action', () => { - const payload = { key: 'ao' }; - expect(setEditorSettings(payload)).toEqual({ - type: SET_EDITOR_SETTINGS, - payload, - }); -}); - -it('test setMetadataMapping action', () => { - const payload = { key: 'oa' }; - expect(setMetadataMapping(payload)).toEqual({ - type: SET_METADATA_MAPPING, - payload, - }); -}); - -it('test wait function', () => { - expect(wait(2000)).toBeInstanceOf(Promise); -}); - -describe('contentSettings thunks', () => { - let store; - beforeEach(() => { - store = createMockStore({ - loading: { legend: '' }, - contentSettings: { - metadata: {}, - }, - }); - }); - it('fetchContentSettings', (done) => { - store - .dispatch(fetchContentSettings()) - .then(() => { - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[0].payload.id).toEqual('getSettings'); - expect(actions[1]).toHaveProperty('type', SET_CONTENT_SETTINGS); - expect(actions[1]).toHaveProperty('payload'); - expect(actions[1].payload).toEqual(contSettings); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[2].payload.id).toEqual('getSettings'); - done(); - }) - .catch(done.fail); - }); - - it('fetchContentSettings error', (done) => { - getContentSettings.mockImplementationOnce(mockApi({ errors: true })); - store - .dispatch(fetchContentSettings()) - .then(() => { - expect(getContentSettings).toHaveBeenCalled(); - const actions = store.getActions(); - expect(actions).toHaveLength(5); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', 'errors/add-errors'); - expect(actions[2]).toHaveProperty('type', 'errors/clear-errors'); - expect(actions[3]).toHaveProperty('type', 'toasts/add-toast'); - expect(actions[4]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('sendPostReloadReferences', (done) => { - store - .dispatch(sendPostReloadReferences()) - .then(() => { - expect(postReloadReferences).toHaveBeenCalled(); - const actions = store.getActions(); - expect(actions).toHaveLength(2); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('sendPostReloadReferences error', (done) => { - postReloadReferences.mockImplementationOnce(mockApi({ errors: true })); - store - .dispatch(sendPostReloadReferences()) - .then(() => { - expect(postReloadReferences).toHaveBeenCalled(); - const actions = store.getActions(); - expect(actions).toHaveLength(5); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', 'errors/add-errors'); - expect(actions[2]).toHaveProperty('type', 'errors/clear-errors'); - expect(actions[3]).toHaveProperty('type', 'toasts/add-toast'); - expect(actions[4]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('sendPostReloadIndexes', (done) => { - store - .dispatch(sendPostReloadIndexes()) - .then(() => { - expect(postReloadIndexes).toHaveBeenCalled(); - const actions = store.getActions(); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1].payload.id).toEqual('reloadIndexes'); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[2].payload.id).toEqual('getSettingsPoll'); - done(); - }) - .catch(done.fail); - }); - - it('sendPostReloadIndexes with un-finished status', (done) => { - getContentSettings.mockImplementationOnce(mockApi({ payload: { indexesStatus: 1 } })); - store - .dispatch(sendPostReloadIndexes()) - .then(() => { - expect(postReloadIndexes).toHaveBeenCalled(); - const actions = store.getActions(); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1].payload.id).toEqual('reloadIndexes'); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[2].payload.id).toEqual('getSettingsPoll'); - done(); - }) - .catch(done.fail); - }); - - it('sendPostReloadIndexes error', (done) => { - postReloadIndexes.mockImplementationOnce(mockApi({ errors: true })); - store - .dispatch(sendPostReloadIndexes()) - .then(() => { - expect(postReloadIndexes).toHaveBeenCalled(); - const actions = store.getActions(); - expect(actions).toHaveLength(5); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[2]).toHaveProperty('type', 'errors/add-errors'); - expect(actions[3]).toHaveProperty('type', 'errors/clear-errors'); - expect(actions[4]).toHaveProperty('type', 'toasts/add-toast'); - done(); - }) - .catch(done.fail); - }); - - it('sendPutEditorSettings', (done) => { - const tosend = { key: 'yatch' }; - store - .dispatch(sendPutEditorSettings(tosend)) - .then((res) => { - expect(putEditorSettings).toHaveBeenCalledWith(tosend); - expect(res).toHaveProperty('payload', tosend); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', SET_EDITOR_SETTINGS); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('sendPutEditorSettings error', (done) => { - putEditorSettings.mockImplementationOnce(mockApi({ errors: true })); - const tosend = { key: 'yatch' }; - store - .dispatch(sendPutEditorSettings(tosend)) - .then((res) => { - expect(putEditorSettings).toHaveBeenCalledWith(tosend); - expect(res).toEqual(undefined); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', 'errors/add-errors'); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('addCropRatio', (done) => { - const cropRatio = '4:9'; - store - .dispatch(addCropRatio(cropRatio)) - .then(() => { - expect(postCropRatio).toHaveBeenCalledWith(cropRatio); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', SET_CROP_RATIOS); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('sendPostMetadataMap', (done) => { - store - .dispatch(sendPostMetadataMap('key', 1)) - .then(() => { - expect(postMetadataMap).toHaveBeenCalledWith({ key: 'key', mapping: 1 }); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', SET_METADATA_MAPPING); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[2].payload.id).toEqual('postMetadataMap'); - done(); - }) - .catch(done.fail); - }); - - it('addCropRatio error', (done) => { - postCropRatio.mockImplementationOnce(mockApi({ errors: true })); - store - .dispatch(addCropRatio()) - .then(() => { - const actions = store.getActions(); - expect(actions).toHaveLength(4); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', 'errors/add-errors'); - expect(actions[2]).toHaveProperty('type', 'toasts/add-toast'); - expect(actions[3]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('sendPostMetadataMap error', (done) => { - postMetadataMap.mockImplementationOnce(mockApi({ errors: true })); - store - .dispatch(sendPostMetadataMap('key', 2)) - .then(() => { - expect(postMetadataMap).toHaveBeenCalledWith({ key: 'key', mapping: 2 }); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[0].payload.id).toEqual('postMetadataMap'); - expect(actions[1]).toHaveProperty('type', 'errors/add-errors'); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('sendPutMetadataMap', (done) => { - const key = 'key'; - const mapping = 1; - store - .dispatch(sendPutMetadataMap(key, mapping)) - .then(() => { - expect(putMetadataMap).toHaveBeenCalledWith(key, mapping); - const actions = store.getActions(); - expect(actions).toHaveLength(1); - expect(actions[0]).toHaveProperty('type', SET_METADATA_MAPPING); - done(); - }) - .catch(done.fail); - }); - - it('sendPutMetadataMap error', (done) => { - const key = 'key'; - const mapping = 2; - putMetadataMap.mockImplementationOnce(mockApi({ errors: true })); - store - .dispatch(sendPutMetadataMap(key, mapping)) - .then(() => { - expect(putMetadataMap).toHaveBeenCalledWith(key, mapping); - const actions = store.getActions(); - expect(actions).toHaveLength(1); - expect(actions[0]).toHaveProperty('type', 'errors/add-errors'); - done(); - }) - .catch(done.fail); - }); - - it('removeCropRatio', (done) => { - selectors.getCropRatios.mockImplementation(() => ['4:9', '16:9']); - const cropRatio = '4:9'; - store - .dispatch(removeCropRatio(cropRatio)) - .then(() => { - expect(deleteCropRatio).toHaveBeenCalledWith(cropRatio); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', SET_CROP_RATIOS); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('checkAndPutMetadataMap', (done) => { - const values = { legend: 'awt, two' }; - store - .dispatch(checkAndPutMetadataMap(values)) - .then(() => { - expect(putMetadataMap).toHaveBeenCalledWith('legend', 'awt, two'); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', SET_METADATA_MAPPING); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[2].payload.id).toEqual('legend'); - done(); - }) - .catch(done.fail); - }); - - it('removeCropRatio error', (done) => { - deleteCropRatio.mockImplementationOnce(mockApi({ errors: true })); - store - .dispatch(removeCropRatio()) - .then(() => { - const actions = store.getActions(); - expect(actions).toHaveLength(4); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', 'errors/add-errors'); - expect(actions[2]).toHaveProperty('type', 'toasts/add-toast'); - expect(actions[3]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('checkAndPutMetadataMap error', (done) => { - const values = { legend: 'awt, three' }; - putMetadataMap.mockImplementationOnce(mockApi({ errors: true })); - store - .dispatch(checkAndPutMetadataMap(values)) - .then(() => { - expect(putMetadataMap).toHaveBeenCalledWith('legend', 'awt, three'); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', 'errors/add-errors'); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('updateCropRatio', (done) => { - const cropRatio = '4:9'; - const newValue = '5:3'; - store - .dispatch(updateCropRatio(cropRatio, newValue)) - .then(() => { - expect(putCropRatio).toHaveBeenCalledWith(cropRatio, newValue); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', SET_CROP_RATIOS); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('sendDeleteMetadataMap', (done) => { - store - .dispatch(sendDeleteMetadataMap('key')) - .then(() => { - expect(deleteMetadataMap).toHaveBeenCalledWith('key'); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', SET_METADATA_MAPPING); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[2].payload.id).toEqual('deleteMetadataMap'); - done(); - }) - .catch(done.fail); - }); - - it('updateCropRatio error', (done) => { - putCropRatio.mockImplementationOnce(mockApi({ errors: true })); - store - .dispatch(updateCropRatio()) - .then(() => { - const actions = store.getActions(); - expect(actions).toHaveLength(4); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[1]).toHaveProperty('type', 'errors/add-errors'); - expect(actions[2]).toHaveProperty('type', 'toasts/add-toast'); - expect(actions[3]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); - - it('sendDeleteMetadataMap error', (done) => { - deleteMetadataMap.mockImplementationOnce(mockApi({ errors: true })); - store - .dispatch(sendDeleteMetadataMap('key')) - .then(() => { - expect(deleteMetadataMap).toHaveBeenCalledWith('key'); - const actions = store.getActions(); - expect(actions).toHaveLength(3); - expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING); - expect(actions[0].payload.id).toEqual('deleteMetadataMap'); - expect(actions[1]).toHaveProperty('type', 'errors/add-errors'); - expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING); - done(); - }) - .catch(done.fail); - }); -}); diff --git a/test/state/content-settings/reducer.test.js b/test/state/content-settings/reducer.test.js deleted file mode 100644 index 8615744d0..000000000 --- a/test/state/content-settings/reducer.test.js +++ /dev/null @@ -1,33 +0,0 @@ -import reducer from 'state/content-settings/reducer'; -import { - setContentSettings, - setEditorSettings, - setCropRatios, -} from 'state/content-settings/actions'; - -describe('state/content-settings/reducer', () => { - it('should return an object', () => { - const state = reducer(); - expect(typeof state).toBe('object'); - }); - - it('after action SET_CONTENT_SETTINGS', () => { - const settings = { hello: 1, editor: 2 }; - const state = reducer({}, setContentSettings(settings)); - expect(state).toHaveProperty('hello', 1); - expect(state).toHaveProperty('editor', 2); - expect(Object.keys(state)).toHaveLength(2); - }); - - it('after action SET_EDITOR_SETTINGS', () => { - const editor = { key: 'buloy' }; - const state = reducer({}, setEditorSettings(editor)); - expect(state).toHaveProperty('editor', editor); - }); - - it('after action SET_CROP_RATIOS', () => { - const cropRatios = ['4:9', '16:9']; - const state = reducer({}, setCropRatios(cropRatios)); - expect(state).toHaveProperty('cropRatios', cropRatios); - }); -}); diff --git a/test/state/content-settings/selectors.test.js b/test/state/content-settings/selectors.test.js deleted file mode 100644 index 7b872eec7..000000000 --- a/test/state/content-settings/selectors.test.js +++ /dev/null @@ -1,49 +0,0 @@ -import { - getSettingsState, - getIndexesStatus, - getReferencesStatus, - getIndexesLastReload, - getEditorSettings, - getCropRatios, -} from 'state/content-settings/selectors'; -import { CONTENT_SETTINGS_OK } from 'test/mocks/contentSettings'; - -const TEST_STATE = { - contentSettings: CONTENT_SETTINGS_OK, -}; - -it('verify getSettingsState selector', () => { - const state = getSettingsState(TEST_STATE); - expect(state).toBeDefined(); - expect(state).toEqual(CONTENT_SETTINGS_OK); -}); - -it('verify getIndexes selector', () => { - const state = getIndexesStatus(TEST_STATE); - expect(state).toBeDefined(); - expect(state).toEqual(CONTENT_SETTINGS_OK.indexesStatus); -}); - -it('verify getReferencesStatus selector', () => { - const state = getReferencesStatus(TEST_STATE); - expect(state).toBeDefined(); - expect(state).toEqual(CONTENT_SETTINGS_OK.referencesStatus); -}); - -it('verify getIndexesLastReload selector', () => { - const state = getIndexesLastReload(TEST_STATE); - expect(state).toBeDefined(); - expect(state).toEqual(CONTENT_SETTINGS_OK.indexesLastReload); -}); - -it('verify getEditorSettings selector', () => { - const state = getEditorSettings(TEST_STATE); - expect(state).toBeDefined(); - expect(state).toEqual(CONTENT_SETTINGS_OK.editor); -}); - -it('verify getCropRatios selector', () => { - const state = getCropRatios(TEST_STATE); - expect(state).toBeDefined(); - expect(state).toEqual(CONTENT_SETTINGS_OK.cropRatios); -}); diff --git a/test/state/table-columns/actions.test.js b/test/state/table-columns/actions.test.js deleted file mode 100644 index b3d06793a..000000000 --- a/test/state/table-columns/actions.test.js +++ /dev/null @@ -1,10 +0,0 @@ -import { setCurrentColumnsShow } from 'state/table-columns/actions'; -import { SET_CURRENT_COLUMNS_SHOW } from 'state/table-columns/types'; - -describe('state/table-columns/actions', () => { - it('setCurrentColumnsShow() should return a well formed action', () => { - const action = setCurrentColumnsShow(['created', 'status']); - expect(action).toHaveProperty('type', SET_CURRENT_COLUMNS_SHOW); - expect(action.payload).toEqual(['created', 'status']); - }); -}); diff --git a/test/state/table-columns/reducer.test.js b/test/state/table-columns/reducer.test.js deleted file mode 100644 index de898bc17..000000000 --- a/test/state/table-columns/reducer.test.js +++ /dev/null @@ -1,19 +0,0 @@ -import reducer from 'state/table-columns/reducer'; -import { setCurrentColumnsShow } from 'state/table-columns/actions'; - -describe('state/table-columns/reducer', () => { - it('should return an object', () => { - const state = reducer(); - expect(typeof state).toBe('object'); - }); - - describe('after action setCurrentColumnsShow', () => { - let newState = reducer(); - it('should correctly update currentColumnsShow state field', () => { - newState = reducer(newState, setCurrentColumnsShow(['column1'])); - expect(newState.currentColumnsShow).toEqual(['column1']); - newState = reducer(newState, setCurrentColumnsShow([])); - expect(newState.currentColumnsShow).toEqual([]); - }); - }); -}); diff --git a/test/state/table-columns/selectors.test.js b/test/state/table-columns/selectors.test.js deleted file mode 100644 index b33b66977..000000000 --- a/test/state/table-columns/selectors.test.js +++ /dev/null @@ -1,10 +0,0 @@ -import { getCurrentColumnsShow } from 'state/table-columns/selectors'; - -const TEST_STATE = { - tableColumns: { currentColumnsShow: ['col1', 'col2'] }, -}; - -it('verify getCurrentColumnsShow selector', () => { - const currentColumns = getCurrentColumnsShow(TEST_STATE); - expect(currentColumns).toEqual(['col1', 'col2']); -}); diff --git a/test/state/user-settings/selectors.test.js b/test/state/user-settings/selectors.test.js deleted file mode 100644 index db900e2d7..000000000 --- a/test/state/user-settings/selectors.test.js +++ /dev/null @@ -1,17 +0,0 @@ -import { getUserSettings } from 'state/user-settings/selectors'; - -const STATE = { - userSettings: { - restrictionsActive: false, - enableGravatarIntegration: true, - lastAccessPasswordExpirationMonths: 1, - maxMonthsPasswordValid: 2, - passwordAlwaysActive: null, - }, -}; - -describe('state/user-settings/selectors', () => { - it('getUserSettings returns the full state', () => { - expect(getUserSettings(STATE)).toEqual(STATE.userSettings); - }); -}); diff --git a/test/ui/activity-stream/ActivityStreamMenuContainer.test.js b/test/ui/activity-stream/ActivityStreamMenuContainer.test.js deleted file mode 100644 index 2a5ee1dcc..000000000 --- a/test/ui/activity-stream/ActivityStreamMenuContainer.test.js +++ /dev/null @@ -1,20 +0,0 @@ -import 'test/enzyme-init'; - -import { mapDispatchToProps } from 'ui/activity-stream/ActivityStreamMenuContainer'; - -jest.unmock('ui/activity-stream/ActivityStreamMenuContainer'); - -describe('ActivityStreamMenuContainer', () => { - it('verifies that onClickToggle is defined by mapDispatchToProps', () => { - const dispatchMock = jest.fn(); - const result = mapDispatchToProps(dispatchMock); - expect(result.onClickToggle).toBeDefined(); - }); - - it('verify that onClickToggle call dispatch', () => { - const dispatchMock = jest.fn(); - const result = mapDispatchToProps(dispatchMock); - result.onClickToggle(); - expect(dispatchMock).toHaveBeenCalled(); - }); -}); diff --git a/test/ui/add-content/AddContentFormContainer.test.js b/test/ui/add-content/AddContentFormContainer.test.js deleted file mode 100644 index 0a7c7c9d2..000000000 --- a/test/ui/add-content/AddContentFormContainer.test.js +++ /dev/null @@ -1,63 +0,0 @@ -import { configEnzymeAdapter } from 'test/legacyTestUtils'; - -import { mapStateToProps, mapDispatchToProps } from 'ui/add-content/AddContentFormContainer'; -import { ADD_CONTENT_OPENED_OK } from 'test/mocks/editContent'; - -jest.mock('state/user-preferences/selectors', () => ({ - getUserPreferences: jest.fn(() => ({})), - getTranslationWarning: jest.fn(() => true), -})); - -jest.mock('state/permissions/selectors', () => ({ - getMyGroupPermissions: jest.fn(() => ([{ group: 'free', permissions: [] }])), -})); - -const TEST_STATE = { - editContent: { - ownerGroupDisabled: { - disabled: false, - }, - workMode: 'work-mode-add', - content: { - contentType: 'NEWS', - version: '0.0', - }, - selectedCategories: undefined, - selectedJoinGroups: undefined, - }, - contentType: { - selected: 'ART', - }, - groups: { - list: ['adminstrators', 'freeAccess'], - map: { - adminstrators: { code: 'adminstrators', name: 'Administrators' }, - freeAccess: { code: 'freeAccess', name: 'Free Access' }, - }, - }, - currentUser: { username: 'admin' }, - userPreferences: { - wizard: true, - translationWarning: true, - loadOnPageSelect: true, - }, -}; - -configEnzymeAdapter(); - -describe('AddContentFormContainer connection to redux', () => { - it('maps editContent properties from state to AddContentForm', () => { - expect(mapStateToProps(TEST_STATE, { match: {} })).toEqual(ADD_CONTENT_OPENED_OK); - }); - - it('verify that onDidMount and onSetOwnerGroupDisable are defined and called in mapDispatchToProps', () => { - const dispatchMock = jest.fn(() => ({ catch: jest.fn() })); - const result = mapDispatchToProps(dispatchMock, { intl: {}, history: {}, match: { params: 'test' } }); - expect(result.onSetOwnerGroupDisable).toBeDefined(); - result.onSetOwnerGroupDisable(); - expect(dispatchMock).toHaveBeenCalled(); - expect(result.onDidMount).toBeDefined(); - result.onDidMount(); - expect(dispatchMock).toHaveBeenCalled(); - }); -}); diff --git a/test/ui/add-content/AddContentPage.test.js b/test/ui/add-content/AddContentPage.test.js deleted file mode 100644 index e990b670b..000000000 --- a/test/ui/add-content/AddContentPage.test.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; - -import { configEnzymeAdapter } from 'test/legacyTestUtils'; -import { shallow } from 'enzyme'; -import AddContentPage from 'ui/add-content/AddContentPage'; - -configEnzymeAdapter(); - -describe('AddContentPage', () => { - let component; - beforeEach(() => { - component = shallow(); - }); - it('renders without crashing', () => { - expect(component.exists()).toEqual(true); - }); -}); diff --git a/test/ui/app/App.test.js b/test/ui/app/App.test.js index 19633763a..fab52594c 100644 --- a/test/ui/app/App.test.js +++ b/test/ui/app/App.test.js @@ -4,6 +4,7 @@ import 'test/enzyme-init'; import { shallow } from 'enzyme'; import { MemoryRouter } from 'react-router-dom'; import { useSelector } from 'react-redux'; +import { waitFor } from '@testing-library/react'; import App from 'ui/app/App'; import ToastsContainer from 'ui/app/ToastsContainer'; @@ -21,9 +22,6 @@ import PagesAddPageContainer from 'ui/pages/add/PagesAddPageContainer'; import PagesEditPage from 'ui/pages/edit/PagesEditPage'; import PageSettingsPage from 'ui/pages/settings/PageSettings'; import PageConfigPageContainer from 'ui/pages/config/PageConfigPageContainer'; -import AddDataModelPage from 'ui/data-models/add/AddDataModelPage'; -import EditDataModelPage from 'ui/data-models/edit/EditDataModelPage'; -import ListDataTypePage from 'ui/data-types/list/ListDataTypePage'; import UserListPage from 'ui/users/list/UserListPage'; import UserAuthorityPageContainer from 'ui/users/authority/UserAuthorityPageContainer'; import UserRestrictionsPage from 'ui/users/restrictions/UserRestrictionsPage'; @@ -34,7 +32,6 @@ import DetailUserPage from 'ui/users/detail/DetailUserPage'; import ListGroupPage from 'ui/groups/list/ListGroupPage'; import AddGroupPage from 'ui/groups/add/AddGroupPage'; import EditGroupPage from 'ui/groups/edit/EditGroupPage'; -import DataModelListPage from 'ui/data-models/list/DataModelListPage'; import LabelsAndLanguagesPageContainer from 'ui/labels/list/LabelsAndLanguagesPageContainer'; import PageTemplateAddPage from 'ui/page-templates/add/PageTemplateAddPage'; import PageTemplateEditPage from 'ui/page-templates/edit/PageTemplateEditPage'; @@ -43,6 +40,10 @@ import FileBrowserPageContainer from 'ui/file-browser/list/ListFilesPage'; import CreateFolderFormContainer from 'ui/file-browser/add/CreateFolderPage'; import PluginsPageContainer from 'ui/plugins/PluginsPageContainer'; import PluginConfigPageContainer from 'ui/plugins/PluginConfigPageContainer'; +import PagesClonePage from 'ui/pages/clone/PagesClonePage'; +import PagesDetailPageContainer from 'ui/pages/detail/PagesDetailPageContainer'; +import PageTemplateListPage from 'ui/page-templates/list/PageTemplateListPage'; +import PageTemplateClonePage from 'ui/page-templates/clone/PageTemplateClonePage'; // component repository import ComponentListPage from 'ui/component-repository/components/list/ComponentListPage'; import ComponentListPageDisabled from 'ui/component-repository/components/list/ComponentListPageDisabled'; @@ -50,6 +51,19 @@ import SettingsListPage from 'ui/component-repository/settings/list/SettingsList import SettingsEditPage from 'ui/component-repository/settings/edit/SettingsEditPage'; import SettingsAddPage from 'ui/component-repository/settings/add/SettingsAddPage'; import PageNotFoundContainer from 'ui/app/PageNotFoundContainer'; +import ListDatabasePage from 'ui/database/list/ListDatabasePage'; +import AddDatabasePageContainer from 'ui/database/add/AddDatabasePageContainer'; +import ReportDatabasePageContainer from 'ui/database/report/ReportDatabasePageContainer'; +import AddProfileTypeAttributePage from 'ui/profile-types/attributes/AddProfileTypeAttributePage'; +import EditProfileTypeAttributePage from 'ui/profile-types/attributes/EditProfileTypeAttributePage'; +import ReloadConfigPage from 'ui/reload-configuration/ReloadConfigPage'; +import ReloadConfirmPage from 'ui/reload-configuration/ReloadConfirmPage'; +import MonolistProfilePageContainer from 'ui/profile-types/attributes/monolist/MonolistProfilePageContainer'; +import MonolistPageContainer from 'ui/data-types/attributes/monolist/MonolistPageContainer'; +import DetailWidgetPageContainer from 'ui/widgets/detail/DetailWidgetPageContainer'; +import CloneWidgetPage from 'ui/widgets/clone/CloneWidgetPage'; +import CloneFragmentPageContainer from 'ui/fragments/clone/CloneFragmentPageContainer'; +import NewUserWidgetPage from 'ui/widgets/newUserWidget/NewUserWidgetPage'; import { ROUTE_HOME, @@ -67,10 +81,6 @@ import { ROUTE_PAGE_EDIT, ROUTE_PAGE_SETTINGS, ROUTE_PAGE_CONFIG, - ROUTE_DATA_MODEL_ADD, - ROUTE_DATA_MODEL_EDIT, - ROUTE_DATA_MODEL_LIST, - ROUTE_DATA_TYPE_LIST, ROUTE_USER_LIST, ROUTE_USER_AUTHORITY, ROUTE_USER_ADD, @@ -89,11 +99,28 @@ import { ROUTE_FILE_BROWSER_CREATE_FOLDER, ROUTE_PLUGINS, ROUTE_PLUGIN_CONFIG_PAGE, + ROUTE_PAGE_CLONE, + ROUTE_PAGE_DETAIL, + ROUTE_PAGE_TEMPLATE_LIST, + ROUTE_PAGE_TEMPLATE_CLONE, // component repository ROUTE_ECR_COMPONENT_LIST, ROUTE_ECR_CONFIG_LIST, ROUTE_ECR_CONFIG_EDIT, ROUTE_ECR_CONFIG_ADD, + ROUTE_DATABASE_LIST, + ROUTE_DATABASE_ADD, + ROUTE_DATABASE_REPORT, + ROUTE_PROFILE_TYPE_ATTRIBUTE_ADD, + ROUTE_PROFILE_TYPE_ATTRIBUTE_EDIT, + ROUTE_RELOAD_CONFIG, + ROUTE_RELOAD_CONFIRM, + ROUTE_ATTRIBUTE_MONOLIST_PROFILE_ADD, + ROUTE_ATTRIBUTE_MONOLIST_ADD, + ROUTE_WIDGET_DETAIL, + ROUTE_CLONE_WIDGET, + ROUTE_FRAGMENT_CLONE, + ROUTE_WIDGET_NEW_USERWIDGET, } from 'app-init/router'; import { mountWithIntl } from 'test/legacyTestUtils'; @@ -138,9 +165,11 @@ describe('App', () => { expect(component.contains()).toBe(false); }); - it('falls back to default route if wrong route', () => { - const component = mountWithRoute('wrongRoute'); - expect(component.find(PageNotFoundContainer).exists()).toBe(true); + it('falls back to default route if wrong route', async () => { + await waitFor(async () => { + const component = mountWithRoute('wrongRoute'); + expect(component.find(PageNotFoundContainer).exists()).toBe(true); + }); }); it('route to dashboard', () => { @@ -148,124 +177,164 @@ describe('App', () => { expect(component.find(DashboardPage).exists()).toBe(true); }); - it('route to page tree page', () => { - const component = mountWithRoute(ROUTE_PAGE_TREE); - expect(component.find(PageTreePageContainer).exists()).toBe(true); - }); - - it('route to widget list page', () => { - const component = mountWithRoute(ROUTE_WIDGET_LIST); - expect(component.find(ListWidgetPageContainer).exists()).toBe(true); + it('route to page tree page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_TREE); + expect(component.find(PageTreePageContainer).exists()).toBe(true); + }); }); - it('route to widget entry page', () => { - const component = mountWithRoute(ROUTE_WIDGET_ADD); - expect(component.find(AddWidgetPage).exists()).toBe(true); + it('route to widget list page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_WIDGET_LIST); + expect(component.find(ListWidgetPageContainer).exists()).toBe(true); + }); }); - it('route to widget edit page', () => { - const component = mountWithRoute(ROUTE_WIDGET_EDIT); - expect(component.find(EditWidgetPageContainer).exists()).toBe(true); + it('route to widget entry page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_WIDGET_ADD); + expect(component.find(AddWidgetPage).exists()).toBe(true); + }); }); - it('route to widget edit page', () => { - const component = mountWithRoute(ROUTE_WIDGET_CONFIG); - expect(component.find(WidgetConfigPageContainer).exists()).toBe(true); + it('route to widget edit page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_WIDGET_EDIT); + expect(component.find(EditWidgetPageContainer).exists()).toBe(true); + }); }); - it('route to add fragment page', () => { - const component = mountWithRoute(ROUTE_FRAGMENT_ADD); - expect(component.find(AddFragmentPage).exists()).toBe(true); + it('route to widget edit page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_WIDGET_CONFIG); + expect(component.find(WidgetConfigPageContainer).exists()).toBe(true); + }); }); - it('route to edit fragment page', () => { - const component = mountWithRoute(ROUTE_FRAGMENT_EDIT); - expect(component.find(EditFragmentPageContainer).exists()).toBe(true); + it('route to add fragment page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_FRAGMENT_ADD); + expect(component.find(AddFragmentPage).exists()).toBe(true); + }); }); - it('route to detail fragment page', () => { - const component = mountWithRoute(ROUTE_FRAGMENT_DETAIL); - expect(component.find(DetailFragmentPageContainer).exists()).toBe(true); + it('route to edit fragment page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_FRAGMENT_EDIT); + expect(component.find(EditFragmentPageContainer).exists()).toBe(true); + }); }); - it('route to add page page', () => { - const component = mountWithRoute(ROUTE_PAGE_ADD); - expect(component.find(PagesAddPageContainer).exists()).toBe(true); + it('route to detail fragment page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_FRAGMENT_DETAIL); + expect(component.find(DetailFragmentPageContainer).exists()).toBe(true); + }); }); - it('route to edit page page', () => { - const component = mountWithRoute(ROUTE_PAGE_EDIT); - expect(component.find(PagesEditPage).exists()).toBe(true); + it('route to add page page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_ADD); + expect(component.find(PagesAddPageContainer).exists()).toBe(true); + }); }); - it('route to page settings page', () => { - const component = mountWithRoute(ROUTE_PAGE_SETTINGS); - expect(component.find(PageSettingsPage).exists()).toBe(true); + it('route to edit page page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_EDIT); + expect(component.find(PagesEditPage).exists()).toBe(true); + }); }); - it('route to list fragment page', () => { - const component = mountWithRoute(ROUTE_FRAGMENT_LIST); - expect(component.find(ListFragmentPage).exists()).toBe(true); + it('route to page clone', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_CLONE); + expect(component.find(PagesClonePage).exists()).toBe(true); + }); }); - - it('route to page config page', () => { - const component = mountWithRoute(ROUTE_PAGE_CONFIG); - expect(component.find(PageConfigPageContainer).exists()).toBe(true); + it('route to page detail', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_DETAIL); + expect(component.find(PagesDetailPageContainer).exists()).toBe(true); + }); }); - it('route to add data model page', () => { - const component = mountWithRoute(ROUTE_DATA_MODEL_ADD); - expect(component.find(AddDataModelPage).exists()).toBe(true); + it('route to page settings page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_SETTINGS); + expect(component.find(PageSettingsPage).exists()).toBe(true); + }); }); - it('route to edit data model page', () => { - const component = mountWithRoute(ROUTE_DATA_MODEL_EDIT); - expect(component.find(EditDataModelPage).exists()).toBe(true); + it('route to list fragment page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_FRAGMENT_LIST); + expect(component.find(ListFragmentPage).exists()).toBe(true); + }); }); - it('route to data model list page', () => { - const component = mountWithRoute(ROUTE_DATA_MODEL_LIST); - expect(component.find(DataModelListPage).exists()).toBe(true); + it('route to page config page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_CONFIG); + expect(component.find(PageConfigPageContainer).exists()).toBe(true); + }); }); - it('route to data type list page', () => { - const component = mountWithRoute(ROUTE_DATA_TYPE_LIST); - expect(component.find(ListDataTypePage).exists()).toBe(true); + it('route to page template list', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_LIST); + expect(component.find(PageTemplateListPage).exists()).toBe(true); + }); }); - it('route to user list page', () => { - const component = mountWithRoute(ROUTE_USER_LIST); - expect(component.find(UserListPage).exists()).toBe(true); + it('route to user list page', async () => { + await waitFor(async () => { + const component = await mountWithRoute(ROUTE_USER_LIST); + expect(component.find(UserListPage).exists()).toBe(true); + }); }); - it('route to user authority page', () => { - const component = mountWithRoute(ROUTE_USER_AUTHORITY); - expect(component.find(UserAuthorityPageContainer).exists()).toBe(true); + it('route to user authority page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_USER_AUTHORITY); + expect(component.find(UserAuthorityPageContainer).exists()).toBe(true); + }); }); - it('route to user add page', () => { - const component = mountWithRoute(ROUTE_USER_ADD); - expect(component.find(AddUserPage).exists()).toBe(true); + it('route to user add page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_USER_ADD); + expect(component.find(AddUserPage).exists()).toBe(true); + }); }); - it('route to user edit page', () => { - const component = mountWithRoute(ROUTE_USER_EDIT); - expect(component.find(EditUserPage).exists()).toBe(true); + it('route to user edit page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_USER_EDIT); + expect(component.find(EditUserPage).exists()).toBe(true); + }); }); - it('route to user detail page', () => { - const component = mountWithRoute(ROUTE_USER_DETAIL); - expect(component.find(DetailUserPage).exists()).toBe(true); + it('route to user detail page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_USER_DETAIL); + expect(component.find(DetailUserPage).exists()).toBe(true); + }); }); - it('route to user restrictions page', () => { - const component = mountWithRoute(ROUTE_USER_RESTRICTIONS); - expect(component.find(UserRestrictionsPage).exists()).toBe(true); + it('route to user restrictions page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_USER_RESTRICTIONS); + expect(component.find(UserRestrictionsPage).exists()).toBe(true); + }); }); - it('route to user restrictions page', () => { - const component = mountWithRoute(ROUTE_USER_MY_PROFILE); - expect(component.find(MyProfilePageContainer).exists()).toBe(true); + it('route to user restrictions page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_USER_MY_PROFILE); + expect(component.find(MyProfilePageContainer).exists()).toBe(true); + }); }); it('route to group list page', () => { @@ -283,71 +352,216 @@ describe('App', () => { expect(component.find(EditGroupPage).exists()).toBe(true); }); - it('route to labels and languages page', () => { - const component = mountWithRoute(ROUTE_LABELS_AND_LANGUAGES); - expect(component.find(LabelsAndLanguagesPageContainer).exists()).toBe(true); + it('route to labels and languages page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_LABELS_AND_LANGUAGES); + expect(component.find(LabelsAndLanguagesPageContainer).exists()).toBe(true); + }); + }); + + it('route to add page template page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_ADD); + expect(component.find(PageTemplateAddPage).exists()).toBe(true); + }); + }); + + it('route to edit page template page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_EDIT); + expect(component.find(PageTemplateEditPage).exists()).toBe(true); + }); }); - it('route to add page template page', () => { - const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_ADD); - expect(component.find(PageTemplateAddPage).exists()).toBe(true); + it('route to page template clone page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_CLONE); + expect(component.find(PageTemplateClonePage).exists()).toBe(true); + }); }); - it('route to edit page template page', () => { - const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_EDIT); - expect(component.find(PageTemplateEditPage).exists()).toBe(true); + it('route to page template detail page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_DETAIL); + expect(component.find(PageTemplateDetailPageContainer).exists()).toBe(true); + }); }); - it('route to page template detail page', () => { - const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_DETAIL); - expect(component.find(PageTemplateDetailPageContainer).exists()).toBe(true); + it('route to page file browser page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_FILE_BROWSER); + expect(component.find(FileBrowserPageContainer).exists()).toBe(true); + }); }); - it('route to page file browser page', () => { - const component = mountWithRoute(ROUTE_FILE_BROWSER); - expect(component.find(FileBrowserPageContainer).exists()).toBe(true); + it('route to page file browser page create folder', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_FILE_BROWSER_CREATE_FOLDER); + expect(component.find(CreateFolderFormContainer).exists()).toBe(true); + }); }); - it('route to page file browser page create folder', () => { - const component = mountWithRoute(ROUTE_FILE_BROWSER_CREATE_FOLDER); - expect(component.find(CreateFolderFormContainer).exists()).toBe(true); + it('route to database list', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_DATABASE_LIST); + expect(component.find(ListDatabasePage).exists()).toBe(true); + }); }); - it('route to plugins page', () => { - const component = mountWithRoute(ROUTE_PLUGINS); - expect(component.find(PluginsPageContainer).exists()).toBe(true); + it('route to database add page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_DATABASE_ADD); + expect(component.find(AddDatabasePageContainer).exists()).toBe(true); + }); }); - it('route to plugin config page', () => { - const component = mountWithRoute(ROUTE_PLUGIN_CONFIG_PAGE); - expect(component.find(PluginConfigPageContainer).exists()).toBe(true); + it('route to database report', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_DATABASE_REPORT); + expect(component.find(ReportDatabasePageContainer).exists()).toBe(true); + }); }); - describe('component repository', () => { - beforeAll(() => { - jest.resetModules(); - delete process.env.COMPONENT_REPOSITORY_UI_ENABLED; + it('route to database list', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_DATABASE_LIST); + expect(component.find(ListDatabasePage).exists()).toBe(true); }); + }); + it('route to database add page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_DATABASE_ADD); + expect(component.find(AddDatabasePageContainer).exists()).toBe(true); + }); + }); + + it('route to database report', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_DATABASE_REPORT); + expect(component.find(ReportDatabasePageContainer).exists()).toBe(true); + }); + }); + + it('route to plugins page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PLUGINS); + expect(component.find(PluginsPageContainer).exists()).toBe(true); + }); + }); + + it('route to plugins page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PLUGINS); + expect(component.find(PluginsPageContainer).exists()).toBe(true); + }); + }); + + it('route to plugin config page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PLUGIN_CONFIG_PAGE); + expect(component.find(PluginConfigPageContainer).exists()).toBe(true); + }); + }); + + it('route to add profile type attribute page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PROFILE_TYPE_ATTRIBUTE_ADD); + expect(component.find(AddProfileTypeAttributePage).exists()).toBe(true); + }); + }); + + it('route to reload config page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_RELOAD_CONFIG); + expect(component.find(ReloadConfigPage).exists()).toBe(true); + }); + }); + + it('route to reload config page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_RELOAD_CONFIRM); + expect(component.find(ReloadConfirmPage).exists()).toBe(true); + }); + }); + + it('route to profile add monolist attribute page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_ATTRIBUTE_MONOLIST_PROFILE_ADD); + expect(component.find(MonolistProfilePageContainer).exists()).toBe(true); + }); + }); + + it('route to profile monolist container page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_ATTRIBUTE_MONOLIST_ADD); + expect(component.find(MonolistPageContainer).exists()).toBe(true); + }); + }); + + it('route to edit profile type attribute page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_PROFILE_TYPE_ATTRIBUTE_EDIT); + expect(component.find(EditProfileTypeAttributePage).exists()).toBe(true); + }); + }); + + it('route to new user widget page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_WIDGET_NEW_USERWIDGET); + expect(component.find(NewUserWidgetPage).exists()).toBe(true); + }); + }); + + it('route to widget detail page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_WIDGET_DETAIL); + expect(component.find(DetailWidgetPageContainer).exists()).toBe(true); + }); + }); + + it('route to clone widget page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_CLONE_WIDGET); + expect(component.find(CloneWidgetPage).exists()).toBe(true); + }); + }); + + it('route to fragment page', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_FRAGMENT_CLONE); + expect(component.find(CloneFragmentPageContainer).exists()).toBe(true); + }); + }); + + describe('component repository', () => { describe('component repository disabled', () => { - it('routes to the disable page on ROUTE_ECR_COMPONENT_LIST', () => { - const component = mountWithRoute(ROUTE_ECR_COMPONENT_LIST); - expect(component.find(ComponentListPageDisabled).exists()).toBe(true); + it('routes to the disable page on ROUTE_ECR_COMPONENT_LIST', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_ECR_COMPONENT_LIST); + expect(component.find(ComponentListPageDisabled).exists()).toBe(true); + }); }); - it('routes to the disable page on ROUTE_ECR_CONFIG_LIST', () => { - const component = mountWithRoute(ROUTE_ECR_CONFIG_LIST); - expect(component.find(ComponentListPageDisabled).exists()).toBe(true); + it('routes to the disable page on ROUTE_ECR_CONFIG_LIST', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_ECR_CONFIG_LIST); + expect(component.find(ComponentListPageDisabled).exists()).toBe(true); + }); }); - it('routes to the disable page on ROUTE_ECR_CONFIG_EDIT', () => { - const component = mountWithRoute(ROUTE_ECR_CONFIG_EDIT); - expect(component.find(ComponentListPageDisabled).exists()).toBe(true); + it('routes to the disable page on ROUTE_ECR_CONFIG_EDIT', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_ECR_CONFIG_EDIT); + expect(component.find(ComponentListPageDisabled).exists()).toBe(true); + }); }); - it('routes to the disable page on ROUTE_ECR_CONFIG_ADD', () => { - const component = mountWithRoute(ROUTE_ECR_CONFIG_ADD); - expect(component.find(ComponentListPageDisabled).exists()).toBe(true); + it('routes to the disable page on ROUTE_ECR_CONFIG_ADD', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_ECR_CONFIG_ADD); + expect(component.find(ComponentListPageDisabled).exists()).toBe(true); + }); }); }); @@ -356,24 +570,32 @@ describe('App', () => { process.env.COMPONENT_REPOSITORY_UI_ENABLED = true; }); - it('routes to the component list page page on ROUTE_ECR_COMPONENT_LIST', () => { - const component = mountWithRoute(ROUTE_ECR_COMPONENT_LIST); - expect(component.find(ComponentListPage).exists()).toBe(true); + it('routes to the component list page page on ROUTE_ECR_COMPONENT_LIST', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_ECR_COMPONENT_LIST); + expect(component.find(ComponentListPage).exists()).toBe(true); + }); }); - it('routes to the component list page page on ROUTE_ECR_CONFIG_LIST', () => { - const component = mountWithRoute(ROUTE_ECR_CONFIG_LIST); - expect(component.find(SettingsListPage).exists()).toBe(true); + it('routes to the component list page page on ROUTE_ECR_CONFIG_LIST', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_ECR_CONFIG_LIST); + expect(component.find(SettingsListPage).exists()).toBe(true); + }); }); - it('routes to the component list page page on ROUTE_ECR_CONFIG_EDIT', () => { - const component = mountWithRoute(ROUTE_ECR_CONFIG_EDIT); - expect(component.find(SettingsEditPage).exists()).toBe(true); + it('routes to the component list page page on ROUTE_ECR_CONFIG_EDIT', async () => { + await waitFor(async () => { + const component = mountWithRoute(ROUTE_ECR_CONFIG_EDIT); + expect(component.find(SettingsEditPage).exists()).toBe(true); + }); }); - it('routes to the component list page page on ROUTE_ECR_CONFIG_ADD', () => { - const component = mountWithRoute(ROUTE_ECR_CONFIG_ADD); - expect(component.find(SettingsAddPage).exists()).toBe(true); + it('routes to the component list page page on ROUTE_ECR_CONFIG_ADD', async () => { + await waitFor(() => { + const component = mountWithRoute(ROUTE_ECR_CONFIG_ADD); + expect(component.find(SettingsAddPage).exists()).toBe(true); + }); }); }); }); diff --git a/test/ui/common/CMSShell.test.js b/test/ui/common/CMSShell.test.js deleted file mode 100644 index d0a6a84cc..000000000 --- a/test/ui/common/CMSShell.test.js +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; -import { shallow } from 'enzyme'; - -import { configEnzymeAdapter } from 'test/legacyTestUtils'; - -import CMSShell from 'ui/common/CMSShell'; - -configEnzymeAdapter(); - -describe('ui/common/CMSShell', () => { - const component = shallow(); - - it('renders without crashing', () => { - expect(component.exists()).toBe(true); - }); - - it('has class CMSShell', () => { - expect(component.hasClass('CMSShell')).toBe(true); - }); -}); diff --git a/test/ui/common/DraggableDialog.test.js b/test/ui/common/DraggableDialog.test.js deleted file mode 100644 index a063cfee1..000000000 --- a/test/ui/common/DraggableDialog.test.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react'; -import { shallow } from 'enzyme'; - -import { configEnzymeAdapter } from 'test/legacyTestUtils'; - -import DraggableDialog from 'ui/common/DraggableDialog'; - -configEnzymeAdapter(); - -describe('ui/common/DraggableDialog', () => { - const component = shallow(); - it('renders without crashing', () => { - expect(component.exists()).toBe(true); - }); - - it('find ModalDialog and check className and bsClass prop', () => { - const childDialog = component.find('ModalDialog'); - expect(childDialog.exists()).toBe(true); - expect(childDialog.hasClass('classy')).toBe(true); - const props = childDialog.props(); - expect(props).toHaveProperty('bsClass', 'modal'); - }); -}); diff --git a/test/ui/common/PageTitle.test.js b/test/ui/common/PageTitle.test.js deleted file mode 100644 index bc9638d46..000000000 --- a/test/ui/common/PageTitle.test.js +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; -import { shallow } from 'enzyme'; - -import { configEnzymeAdapter } from 'test/legacyTestUtils'; - -import CMSPageTitle from 'ui/common/CMSPageTitle'; - -configEnzymeAdapter(); - -describe('ui/common/PageTitle', () => { - it('renders without crashing', () => { - const component = shallow(); - expect(component.exists()).toBe(true); - }); - - it('renders the help icon if helpId is provided', () => { - const component = shallow( - , - ); - expect(component.find('OverlayTrigger').exists()).toBe(true); - }); - - it('does not render the help icon if helpId is not provided', () => { - const component = shallow(); - expect(component.find('OverlayTrigger').exists()).toBe(false); - }); -}); diff --git a/test/ui/common/attributes/AttributeListMenuActionsProfile.test.js b/test/ui/common/attributes/AttributeListMenuActionsProfile.test.js deleted file mode 100644 index 9659765b4..000000000 --- a/test/ui/common/attributes/AttributeListMenuActionsProfile.test.js +++ /dev/null @@ -1,60 +0,0 @@ -import React from 'react'; -import 'test/enzyme-init'; -import { shallow } from 'enzyme'; - -import AttributeListMenuActionsProfile from 'ui/common/attributes/AttributeListMenuActionsProfile'; - -const onMoveUp = jest.fn(); -const onMoveDown = jest.fn(); -const onClickDelete = jest.fn(); -const PROFILE_TYPE_CODE = 'PFL'; - - -describe('AttributeListMenuActionsProfile', () => { - let component; - beforeEach(() => { - component = shallow(); - }); - - it('errors without a code', () => { - const consoleError = jest.spyOn(console, 'error').mockImplementation(() => {}); - shallow(); - expect(consoleError).toHaveBeenCalled(); - consoleError.mockReset(); - consoleError.mockRestore(); - }); - - it('renders without crashing', () => { - expect(component.exists()).toEqual(true); - }); - - it('has a drop down with kebab button', () => { - expect(component.find('DropdownKebab')).toHaveLength(1); - }); - - it('on item-move-up clicked should call onMoveUp', () => { - component.find('.AttributeListMenuAction__menu-item-move-up') - .simulate('click'); - expect(onMoveUp).toHaveBeenCalled(); - }); - - it('on item-move-up clicked should call onMoveDown', () => { - component.find('.AttributeListMenuAction__menu-item-move-down') - .simulate('click'); - expect(onMoveDown).toHaveBeenCalled(); - }); - - it('on item-delete clicked should call onClickDelete', () => { - component.find('.AttributeListMenuAction__menu-item-delete') - .simulate('click'); - expect(onClickDelete).toHaveBeenCalled(); - }); -}); diff --git a/test/ui/common/attributes/AttributeListTableProfile.test.js b/test/ui/common/attributes/AttributeListTableProfile.test.js deleted file mode 100644 index f4e5535b0..000000000 --- a/test/ui/common/attributes/AttributeListTableProfile.test.js +++ /dev/null @@ -1,51 +0,0 @@ -import React from 'react'; -import 'test/enzyme-init'; -import { shallow } from 'enzyme'; -import AttributeListTableProfile from 'ui/common/attributes/AttributeListTableProfile'; -import { PROFILE_TYPES } from 'test/mocks/profileTypes'; - -const { attributes } = PROFILE_TYPES; -const props = { - routeToEdit: '', - code: 'code', - profiletypeCode: '', -}; - -jest.mock('state/users/selectors', () => ({ - getAttributeList: jest.fn(), -})); - -describe('AttributeListTableProfile', () => { - let component; - beforeEach(() => { - component = shallow(); - }); - - it('renders without crashing', () => { - expect(component.exists()).toBe(true); - }); - - describe('test table component', () => { - it('has an table header', () => { - expect(component.find('thead th')).toHaveLength(6); - }); - - describe('with attributes', () => { - beforeEach(() => { - component.setProps({ attributes }); - }); - - it('has four rows if there are two users', () => { - const tbody = component.find('tbody'); - expect(tbody).toHaveLength(1); - expect(tbody.find('tr')).toHaveLength(attributes.length); - }); - - it('has a menu in the action column of each row', () => { - component.find('tbody tr').forEach((tr) => { - expect(tr.find('AttributeListMenuActionsProfile')).toHaveLength(1); - }); - }); - }); - }); -}); diff --git a/test/ui/common/contenttype-attributes/AttributeCheckIcon.test.js b/test/ui/common/contenttype-attributes/AttributeCheckIcon.test.js deleted file mode 100644 index abec288a5..000000000 --- a/test/ui/common/contenttype-attributes/AttributeCheckIcon.test.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react'; -import { configEnzymeAdapter } from 'test/legacyTestUtils'; -import { shallow } from 'enzyme'; -import AttributeCheckIcon from 'ui/common/contenttype-attributes/AttributeCheckIcon'; - -configEnzymeAdapter(); - -describe('AttributeCheckIcon', () => { - it('renders without crashing', () => { - const component = shallow(); - expect(component.exists()).toEqual(true); - }); - - it('if isChecked = true, has class ContTypeAttributeCheckIcon--checked', () => { - const component = shallow(); - expect(component.hasClass('ContTypeAttributeCheckIcon--checked')).toBe(true); - }); - - it('if isChecked = false, has class ContTypeAttributeCheckIcon--unchecked', () => { - const component = shallow(); - expect(component.hasClass('ContTypeAttributeCheckIcon--unchecked')).toBe(true); - }); -}); diff --git a/test/ui/common/contenttype-attributes/AttributeEnumMapSettings.test.js b/test/ui/common/contenttype-attributes/AttributeEnumMapSettings.test.js deleted file mode 100644 index be4d39767..000000000 --- a/test/ui/common/contenttype-attributes/AttributeEnumMapSettings.test.js +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import { configEnzymeAdapter, addReduxForm, mockRenderWithIntlAndStore } from 'test/legacyTestUtils'; -import { mount } from 'enzyme'; -import AttributeEnumMapSettings, { - elements as elementValidation, -} from 'ui/common/contenttype-attributes/AttributeEnumMapSettings'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import { required } from '@entando/utils'; - -const DATA = { code: 'code', descr: 'descr' }; - -configEnzymeAdapter(); -jest.unmock('react-redux'); - -describe('AttributeEnumMapSettings', () => { - let component; - beforeEach(() => { - component = mount( - mockRenderWithIntlAndStore(), - ); - }); - - it('renders without crashing', () => { - expect(component.exists()).toBe(true); - }); - - it('has one Row', () => { - expect(component.find('Row').exists()).toBe(true); - expect(component.find('Row')).toHaveLength(1); - }); - - it('has a enumeratorStaticItems text field', () => { - const element = component.find('Field[name="enumeratorStaticItems"]'); - expect(element.exists()).toBe(true); - const props = element.props(); - expect(props).toHaveProperty('component', RenderTextInput); - expect(props).toHaveProperty('validate', [required, elementValidation]); - }); - - it('has a enumeratorStaticItemsSeparator text field', () => { - const element = component.find('Field[name="enumeratorStaticItemsSeparator"]'); - expect(element.exists()).toBe(true); - const props = element.props(); - expect(props).toHaveProperty('component', RenderTextInput); - }); -}); diff --git a/test/ui/common/contenttype-attributes/AttributeEnumSettings.test.js b/test/ui/common/contenttype-attributes/AttributeEnumSettings.test.js deleted file mode 100644 index d0ecb74d6..000000000 --- a/test/ui/common/contenttype-attributes/AttributeEnumSettings.test.js +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react'; -import { configEnzymeAdapter, mockRenderWithIntlAndStore } from 'test/legacyTestUtils'; -import { mount } from 'enzyme'; -import AttributeEnumSettings, { element as elementValidation } from 'ui/common/contenttype-attributes/AttributeEnumSettings'; -import RenderTextInput from 'ui/common/form/RenderTextInput'; -import { required } from '@entando/utils'; - -configEnzymeAdapter(); -jest.unmock('react-redux'); - -describe('AttributeEnumSettings', () => { - let component; - beforeEach(() => { - component = mount(mockRenderWithIntlAndStore()); - }); - - it('renders without crashing', () => { - expect(component.exists()).toBe(true); - }); - - it('has one Row', () => { - expect(component.find('Row').exists()).toBe(true); - expect(component.find('Row')).toHaveLength(1); - }); - - it('has a enumeratorStaticItems text field', () => { - const element = component.find('Field[name="enumeratorStaticItems"]'); - expect(element.exists()).toBe(true); - const props = element.props(); - expect(props).toHaveProperty('component', RenderTextInput); - expect(props).toHaveProperty('validate', [required, elementValidation]); - }); - - it('has a enumeratorStaticItemsSeparator text field', () => { - const element = component.find('Field[name="enumeratorStaticItemsSeparator"]'); - expect(element.exists()).toBe(true); - const props = element.props(); - expect(props).toHaveProperty('component', RenderTextInput); - }); -}); diff --git a/test/ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings.test.js b/test/ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings.test.js deleted file mode 100644 index fc1083638..000000000 --- a/test/ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings.test.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; - -import { configEnzymeAdapter } from 'test/legacyTestUtils'; -import { shallow } from 'enzyme'; -import AttributeHypeLongMonoTextSettings from 'ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings'; - -configEnzymeAdapter(); - -describe('AttributeInfo', () => { - it('renders without crashing', () => { - const component = shallow(); - expect(component.exists()).toEqual(true); - }); -}); diff --git a/test/ui/common/contenttype-attributes/AttributeInfo.test.js b/test/ui/common/contenttype-attributes/AttributeInfo.test.js deleted file mode 100644 index 089d9eaf4..000000000 --- a/test/ui/common/contenttype-attributes/AttributeInfo.test.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; - -import { configEnzymeAdapter } from 'test/legacyTestUtils'; -import { shallow } from 'enzyme'; -import AttributeInfo from 'ui/common/contenttype-attributes/AttributeInfo'; - -configEnzymeAdapter(); - -describe('AttributeInfo', () => { - it('renders without crashing', () => { - const component = shallow(); - expect(component.exists()).toEqual(true); - }); -}); diff --git a/test/ui/common/contenttype-attributes/AttributeInfoComposite.test.js b/test/ui/common/contenttype-attributes/AttributeInfoComposite.test.js deleted file mode 100644 index b2db99e3c..000000000 --- a/test/ui/common/contenttype-attributes/AttributeInfoComposite.test.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; - -import { configEnzymeAdapter } from 'test/legacyTestUtils'; -import { shallow } from 'enzyme'; -import AttributeInfoComposite from 'ui/common/contenttype-attributes/AttributeInfoComposite'; - -configEnzymeAdapter(); - -describe('AttributeInfoComposite', () => { - it('renders without crashing', () => { - const component = shallow(); - expect(component.exists()).toEqual(true); - }); -}); diff --git a/test/ui/common/contenttype-attributes/AttributeListTable.test.js b/test/ui/common/contenttype-attributes/AttributeListTable.test.js deleted file mode 100644 index 428ecb5d9..000000000 --- a/test/ui/common/contenttype-attributes/AttributeListTable.test.js +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react'; -import { configEnzymeAdapter } from 'test/legacyTestUtils'; -import { shallow } from 'enzyme'; -import AttributeListTable from 'ui/common/contenttype-attributes/AttributeListTable'; - -configEnzymeAdapter(); - -const FIELDS = { - remove: jest.fn(), - move: jest.fn(), -}; - -const DELETE = jest.fn(); -const MVUP = jest.fn(); -const MVDWN = jest.fn(); - -const props = { - onClickDelete: DELETE, - attributes: [], - routeToEdit: '', - entityCode: '', - onMoveUp: MVUP, - onMoveDown: MVDWN, - code: 'code', - contentTypeCode: 'THX', - fields: FIELDS, -}; - -describe('AttributeListTable', () => { - let component; - beforeEach(() => { - component = shallow(); - }); - - it('renders without crashing', () => { - expect(component.exists()).toBe(true); - }); - - describe('test table component', () => { - it('has an table header', () => { - expect(component.find('thead th')).toHaveLength(0); - }); - - describe('with attributes', () => { - beforeEach(() => { - component = shallow(); - }); - - it('has a menu in the action column of each row', () => { - component.find('tbody tr').forEach((tr) => { - expect(tr.find('AttributeListTableActions')).toHaveLength(1); - }); - }); - }); - }); -}); diff --git a/test/ui/common/contenttype-attributes/AttributeListTableActions.test.js b/test/ui/common/contenttype-attributes/AttributeListTableActions.test.js deleted file mode 100644 index aa22ed750..000000000 --- a/test/ui/common/contenttype-attributes/AttributeListTableActions.test.js +++ /dev/null @@ -1,105 +0,0 @@ -import React from 'react'; -import { - configEnzymeAdapter, - createMockHistory, - mockRenderWithIntlAndStore, - mockRenderWithRouter, -} from 'test/legacyTestUtils'; -import { mount } from 'enzyme'; -import AttributeListTableActions from 'ui/common/contenttype-attributes/AttributeListTableActions'; - -configEnzymeAdapter(); -jest.unmock('react-redux'); - -const FIELDS = { - remove: jest.fn(), - move: jest.fn(), -}; - -const onMoveUp = jest.fn(); -const onMoveDown = jest.fn(); -const onClickDelete = jest.fn(); - -const ATTRIBUTESLIST = [ - { - code: 'aaa', - type: 'Boolean', - name: 'test1', - roles: [], - mandatory: true, - listFilter: false, - }, - { - code: 'bbb', - type: 'Boolean', - name: 'test2', - roles: [], - mandatory: false, - listFilter: true, - }, -]; - -const props = { - attributes: ATTRIBUTESLIST, - routeToEdit: '', - entityCode: '', - onClickDelete, - onMoveUp, - onMoveDown, - code: 'code', - contentTypeCode: 'THX', - fields: FIELDS, -}; - -describe('AttributeListTableActions', () => { - let history; - let component; - beforeEach(() => { - history = createMockHistory(); - component = mount( - mockRenderWithRouter(mockRenderWithIntlAndStore(), history), - ); - }); - - it('renders without crashing', () => { - expect(component.exists()).toEqual(true); - }); - - it('has a drop down with kebab button', () => { - expect(component.find('DropdownKebab')).toHaveLength(2); - }); - - describe('test moveUp/moveDown', () => { - it('on item-move-up clicked should call onMoveUp', () => { - component - .find('.ContTypeAttributeListMenuAction__menu-item-move-up') - .at(1) - .simulate('click'); - expect(component.exists()).toBe(true); - }); - - it('on item-move-up clicked should call onMoveDown', () => { - component - .find('.ContTypeAttributeListMenuAction__menu-item-move-down') - .at(1) - .simulate('click'); - expect(component.exists()).toBe(true); - }); - - it('on item-delete clicked should call onClickDelete', () => { - component - .find('.ContTypeAttributeListMenuAction__menu-item-delete') - .at(1) - .simulate('click'); - expect(component.exists()).toBe(true); - }); - - it('on item-delete clicked should call on edit', () => { - component - .find('.ContTypeAttributeListMenuAction__menu-item-edit') - .at(1) - .simulate('click'); - expect(component.exists()).toBe(true); - }); - }); -}); diff --git a/test/ui/common/contenttype-attributes/AttributeListTableComposite.test.js b/test/ui/common/contenttype-attributes/AttributeListTableComposite.test.js deleted file mode 100644 index 34fc8e7dc..000000000 --- a/test/ui/common/contenttype-attributes/AttributeListTableComposite.test.js +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; - -import { configEnzymeAdapter } from 'test/legacyTestUtils'; -import { shallow } from 'enzyme'; -import AttributeListTableComposite from 'ui/common/contenttype-attributes/AttributeListTableComposite'; - -configEnzymeAdapter(); - -const props = { - onAddAttribute: () => {}, - onClickDelete: () => {}, - onMove: () => {}, - attributesList: ['a', 'b', 'c'], - compositeAttributes: [ - { - code: 'Via', - type: 'Text', - name: 'Via', - mandatory: false, - }, - { - code: 'Civico', - type: 'Text', - name: 'Civico', - mandatory: true, - }, - ], -}; - -describe('AttributeListTableComposite', () => { - it('renders without crashing', () => { - const component = shallow(); - expect(component.exists()).toEqual(true); - }); -}); diff --git a/test/ui/common/contenttype-attributes/AttributesNumber.test.js b/test/ui/common/contenttype-attributes/AttributesNumber.test.js deleted file mode 100644 index b3882bc9f..000000000 --- a/test/ui/common/contenttype-attributes/AttributesNumber.test.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; - -import { configEnzymeAdapter } from 'test/legacyTestUtils'; -import { shallow } from 'enzyme'; -import AttributesNumber from 'ui/common/contenttype-attributes/AttributesNumber'; - -configEnzymeAdapter(); - -describe('AttributesNumber', () => { - it('renders without crashing', () => { - const component = shallow(); - expect(component.exists()).toEqual(true); - }); -}); diff --git a/test/ui/common/form/ActiveLanguagesFields.test.js b/test/ui/common/form/ActiveLanguagesFields.test.js deleted file mode 100644 index 9288fbfde..000000000 --- a/test/ui/common/form/ActiveLanguagesFields.test.js +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react'; - -import 'test/enzyme-init'; -import { shallow } from 'enzyme'; -import ActiveLanguagesFields from 'ui/common/form/ActiveLanguagesFields'; -import { LANGUAGES_LIST } from 'test/mocks/languages'; - -const activeLanguages = LANGUAGES_LIST.filter(language => (language.isActive)); -const defaultLanguage = LANGUAGES_LIST.filter(language => (language.isDefault))[0].code; -const onChangeDefaultTitle = jest.fn(); - -describe('ActiveLanguagesFields', () => { - let component; - beforeEach(() => { - component = shallow(); - }); - it('renders without crashing', () => { - expect(component).toExist(); - }); - - it('verify if has class ActiveLanguagesFields', () => { - expect(component.hasClass('ActiveLanguagesFields')).toBe(true); - }); -}); diff --git a/test/ui/common/form/HtmlCodeEditorRenderer.test.js b/test/ui/common/form/HtmlCodeEditorRenderer.test.js deleted file mode 100644 index b3f00da33..000000000 --- a/test/ui/common/form/HtmlCodeEditorRenderer.test.js +++ /dev/null @@ -1,156 +0,0 @@ - -import React from 'react'; - -import 'test/enzyme-init'; -import { shallow } from 'enzyme'; -import HtmlCodeEditorRenderer from 'ui/common/form/HtmlCodeEditorRenderer'; - -const LABEL = 'Html code'; -const HELP = 'Html help'; -const ERROR_TEXT = 'There is an error!'; -const VALUE = ''; -const onChange = jest.fn(); -const onBlur = jest.fn(); -const onFocus = jest.fn(); - -const INPUT = { - value: VALUE, - onChange, - onBlur, - onFocus, -}; - -const codeMirrorInstance = { - doc: { - getValue: jest.fn(() => VALUE), - }, -}; - -describe('HtmlCodeEditorRenderer', () => { - beforeEach(jest.clearAllMocks); - - let component; - let editor; - - describe('basic rendering', () => { - beforeEach(() => { - component = shallow(( - - )); - editor = component.find('LoadableComponent'); - }); - - it('renders the label component', () => { - expect(component.contains(LABEL)).toBe(true); - }); - - it('renders the help component', () => { - expect(component.contains(HELP)).toBe(true); - }); - - it('renders a LoadableComponent', () => { - expect(editor.exists()).toBe(true); - }); - - describe('editor', () => { - it('shows line numbers', () => { - expect(editor.prop('options')).toHaveProperty('lineNumbers', true); - }); - - it('highlights active line', () => { - expect(editor.prop('options')).toHaveProperty('styleActiveLine', true); - }); - - it('highlights HTML syntax', () => { - expect(editor.prop('options')).toHaveProperty('mode', 'htmlembedded'); - }); - - it('keeps cursor position when value changes', () => { - expect(editor.prop('autoCursor')).toBe(false); - }); - - it('shows the input.value', () => { - expect(editor.prop('value')).toEqual(INPUT.value); - }); - - it('on change, updates redux-form', () => { - const editorOnChange = editor.prop('onChange'); - editorOnChange({}, {}, INPUT.value); - expect(onChange).toHaveBeenCalledWith(INPUT.value); - }); - - it('on blur, updates redux-form', () => { - const editorOnBlur = editor.prop('onBlur'); - editorOnBlur(codeMirrorInstance); - expect(onBlur).toHaveBeenCalledWith(VALUE); - }); - - it('on focus, updates redux-form', () => { - const editorOnFocus = editor.prop('onFocus'); - editorOnFocus(codeMirrorInstance); - expect(onFocus).toHaveBeenCalledWith(VALUE); - }); - }); - }); - - describe('if there is an error and the field is untouched', () => { - beforeEach(() => { - component = shallow(( - - )); - editor = component.find('UnControlled'); - }); - - it('does not render the error', () => { - expect(component.contains(ERROR_TEXT)).toBe(false); - }); - }); - - describe('if there is no error and the field is touched', () => { - beforeEach(() => { - component = shallow(( - - )); - editor = component.find('UnControlled'); - }); - - it('does not render the error', () => { - expect(component.contains(ERROR_TEXT)).toBe(false); - }); - }); - - describe('if there is an error and the field is touched', () => { - beforeEach(() => { - component = shallow(( - - )); - editor = component.find('UnControlled'); - }); - - it('does render the error', () => { - expect(component.contains(ERROR_TEXT)).toBe(true); - }); - }); -}); diff --git a/test/ui/common/form/MultiSelectRenderer.test.js b/test/ui/common/form/MultiSelectRenderer.test.js deleted file mode 100644 index ba9e2a3c2..000000000 --- a/test/ui/common/form/MultiSelectRenderer.test.js +++ /dev/null @@ -1,129 +0,0 @@ -import React from 'react'; -import { configEnzymeAdapter, mockRenderWithIntlAndStore } from 'test/legacyTestUtils'; -import { shallow, mount } from 'enzyme'; -import MultiSelectRenderer from 'ui/common/form/MultiSelectRenderer'; - -import { IntlProvider } from 'react-intl'; - -configEnzymeAdapter(); - -const FIELDS = { - push: jest.fn(), - remove: jest.fn(), -}; -const OPTIONS = [ - { code: 'opt1', description: 'Option 1' }, - { code: 'opt2', description: 'Option 2' }, - { code: 'opt3', description: 'Option 3' }, -]; - -const SELECTED_VALUES = ['opt2', 'opt3']; -const EMPTY_TEXT_LABEL_ID = 'empty.text.id'; - -const messages = require('../../../../src/locales/en'); - -jest.unmock('react-redux'); - -function shallowWithIntl(node) { - return shallow(node, { - wrappingComponent: IntlProvider, - wrappingComponentProps: { - locale: 'en', - defaultLocale: 'en', - messages, - }, - }); -} - -describe('MultiSelectRenderer', () => { - let component; - - describe('when nothing is selected', () => { - beforeEach(() => { - component = shallowWithIntl( - , - ); - }); - it('renders without crashing', () => { - expect(component.exists()).toEqual(true); - }); - it('renders as many