diff --git a/package-lock.json b/package-lock.json index 5d044a235..058f414fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,12 +4,152 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@apollographql/apollo-tools": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.3.5.tgz", + "integrity": "sha512-5ySiiNT2EIwxGKWyoAOnibCPUXvbxKOVxiPMK4uIXmvF+qbGNleQWP+vekciiAmCCESPmGd5szscRwDm4G/NNg==", + "requires": { + "apollo-env": "0.4.0" + } + }, + "@apollographql/graphql-playground-html": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.6.tgz", + "integrity": "sha512-lqK94b+caNtmKFs5oUVXlSpN3sm5IXZ+KfhMxOtr0LR2SqErzkoJilitjDvJ1WbjHlxLI7WtCjRmOLdOGJqtMQ==" + }, + "@arranger/admin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@arranger/admin/-/admin-1.1.7.tgz", + "integrity": "sha512-gTRIHyMUPGctWKYrVWC7Fs36znLBqam92F37O72juOq6NmnovkHZs3RToty2tplnAVrTS0/K0/QKhnu+dpRCfw==", + "requires": { + "@arranger/mapping-utils": "^1.1.7", + "@arranger/schema": "^1.1.7", + "@types/elasticsearch": "^5.0.26", + "apollo-link-http": "^1.5.5", + "apollo-server": "^2.1.0", + "apollo-server-express": "^2.1.0", + "convert-units": "^2.3.4", + "date-fns": "^1.29.0", + "elasticsearch": "^15.1.1", + "express": "^4.16.3", + "graphql": "^14.0.2", + "graphql-tools": "^4.0.0", + "graphql-type-json": "^0.2.1", + "jwt-decode": "^2.2.0", + "node-fetch": "^2.2.0", + "qew": "^0.9.13", + "ramda": "^0.26.1", + "tslib": "~1.9.3", + "typegql": "^0.6.0" + }, + "dependencies": { + "elasticsearch": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/elasticsearch/-/elasticsearch-15.4.1.tgz", + "integrity": "sha512-IL46Sv9krCKtpvlI37/vQVQrWx6QeT1OJhfWW6L3fIXzR1Vv5utO+DHYz8AosUI6vlkxShoq+y6sUIBhTF1OIg==", + "requires": { + "agentkeepalive": "^3.4.1", + "chalk": "^1.0.0", + "lodash": "^4.17.10" + } + }, + "ramda": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" + } + } + }, + "@arranger/admin-ui": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@arranger/admin-ui/-/admin-ui-1.1.7.tgz", + "integrity": "sha512-ZM9KvQBN8UYVq0ikM9ynoGknzFnco/elA/CnvJe7IIUd4D9TCdinCrG6bBIGBjNmsfmDb8P3ITGRH1R4VnMloA==", + "requires": { + "@arranger/admin": "^1.1.7", + "@types/react-redux": "^6.0.9", + "@types/react-router-dom": "^4.3.1", + "@types/react-table": "^6.7.14", + "@types/recompose": "^0.27.0", + "@types/redux-devtools": "^3.0.44", + "apollo-boost": "^0.1.19", + "apollo-client": "^2.5.1", + "apollo-link-http": "^1.5.14", + "bulma": "^0.7.2", + "connected-react-router": "^5.0.1", + "convert-units": "^2.3.4", + "emotion": "^9.2.12", + "emotion-theming": "^9.2.9", + "file-saver": "^2.0.1", + "graphql": "^14.0.2", + "jszip": "^3.1.5", + "lodash": "^4.17.11", + "mineral-ui": "^0.49.0", + "mineral-ui-icons": "^0.5.0", + "node-sass-chokidar": "^1.3.4", + "ramda": "^0.26.1", + "react": "^v16.7.0-alpha", + "react-apollo": "^2.2.4", + "react-bulma-components": "^2.2.0", + "react-component-component": "^1.2.1", + "react-dom": "^v16.7.0-alpha", + "react-emotion": "^9.2.12", + "react-portal": "^4.1.5", + "react-redux": "^5.1.0", + "react-router-dom": "^4.3.1", + "react-scripts-ts": "3.1.0", + "react-sortable-hoc": "^0.8.3", + "react-table": "^6.8.6", + "recompose": "^0.30.0", + "redux": "^4.0.1", + "runtypes": "^2.1.6", + "utility-types": "^2.1.0", + "webpack": "^3.0.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz", + "integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "file-saver": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.1.tgz", + "integrity": "sha512-dCB3K7/BvAcUmtmh1DzFdv0eXSVJ9IAFt1mw3XZfAexodNRoE29l3xB2EX4wH2q8m/UTzwzEPq/ArYk98kUkBQ==" + }, + "ramda": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" + }, + "recompose": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz", + "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==", + "requires": { + "@babel/runtime": "^7.0.0", + "change-emitter": "^0.1.2", + "fbjs": "^0.8.1", + "hoist-non-react-statics": "^2.3.1", + "react-lifecycles-compat": "^3.0.2", + "symbol-observable": "^1.0.4" + } + }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + } + } + }, "@arranger/components": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/@arranger/components/-/components-1.0.34.tgz", - "integrity": "sha512-RS2PG/eI3dOO7YxtDNeBQ5VaqRwnCZzVJ3n8Pf9yQ0TCQARRjjMMcmVNDZ1lDg2xN4aYibXhLh5kZv/tR7EmZg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@arranger/components/-/components-1.1.7.tgz", + "integrity": "sha512-HXCnwJjhZGlXZ2w/2mSggJQR+QDFuzkMsOWYWbuB1dONK6IMWxDeFVGBx2GCUWeKTZWgujo0ef027i/+nKc3uQ==", "requires": { - "@arranger/mapping-utils": "^1.0.34", + "@arranger/mapping-utils": "^1.1.7", "ajv": "^6.1.1", "babel-polyfill": "^6.26.0", "classnames": "^2.2.5", @@ -33,6 +173,7 @@ "react-scrollbar-size": "^2.1.0", "react-spinkit": "^3.0.0", "react-table": "6.8.6", + "react-tippy": "^1.2.3", "react-toastify": "^3.3.2", "react-treeview": "^0.4.7", "recompose": "^0.26.0", @@ -96,23 +237,23 @@ } }, "@arranger/mapping-utils": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/@arranger/mapping-utils/-/mapping-utils-1.0.34.tgz", - "integrity": "sha512-3BYxw7n9/9Lu9wjeJRPzpYDmKwhBw+RucY2KC8dJMS4YqpiN9Anw+iqbMhlcqTbHramVBo4jKeiJFQpfga36SA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@arranger/mapping-utils/-/mapping-utils-1.1.7.tgz", + "integrity": "sha512-ig5PqdpRARmB13yo+5a4pxg/d2naeGxuqquLE2FsmOCby3ZtzNfnBJHThw8iEOx6iu0b28MkguaD7LRAro59gw==", "requires": { - "@arranger/middleware": "^1.0.34", + "@arranger/middleware": "^1.1.7", "babel-polyfill": "^6.26.0", "elasticsearch": "^14.0.0", "graphql-fields": "^1.0.2", - "lodash": "^4.17.4", + "lodash": "^4.17.11", "node-fetch": "^2.0.0", "uuid": "^3.2.1" } }, "@arranger/middleware": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/@arranger/middleware/-/middleware-1.0.34.tgz", - "integrity": "sha512-qF7vsAIvF6g+mie8PDo5b2BAMFaJqtOBv56KV75dsqbzhzw91c8mF0H7se3ZT8ezKpt1gw3g8cIEudASKJh3Eg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@arranger/middleware/-/middleware-1.1.7.tgz", + "integrity": "sha512-ypCuSiWtTrX2JtXXlUfFslewRDI8wS0Jaf4ttnpE6Yjq1bwkNwROKoexAYK1xBm8wdworV1BNrgTxy2eMVfetA==", "requires": { "body-parser": "^1.18.2", "cors": "^2.8.4", @@ -124,11 +265,28 @@ "winston": "^2.4.0" } }, + "@arranger/schema": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@arranger/schema/-/schema-1.1.7.tgz", + "integrity": "sha512-iUwsfjThGHe14bYHLh5oIvNzMgcKWu9zYzNNExk2BZKXp+RjZK/iFR3hl7G9JrmBz1aH8w/GI//jVvHkEvMVIQ==", + "requires": { + "@arranger/mapping-utils": "^1.1.7", + "@arranger/middleware": "^1.1.7", + "babel-polyfill": "^6.26.0", + "elasticsearch": "^14.0.0", + "graphql-middleware": "1.3.1", + "graphql-scalars": "^0.1.5", + "graphql-tools": "^4.0.0", + "graphql-type-json": "^0.2.1", + "lodash": "^4.17.4", + "paralleljs": "^0.2.1", + "uuid": "^3.2.1" + } + }, "@babel/code-frame": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "dev": true, "requires": { "@babel/highlight": "^7.0.0" } @@ -601,7 +759,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -612,7 +769,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -621,7 +777,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -632,7 +787,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -1717,6 +1871,60 @@ "lodash.uniqueid": "^4.0.1" } }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, "@storybook/addon-actions": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-4.0.4.tgz", @@ -1820,7 +2028,7 @@ }, "@storybook/podda": { "version": "1.2.3", - "resolved": "http://registry.npmjs.org/@storybook/podda/-/podda-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/@storybook/podda/-/podda-1.2.3.tgz", "integrity": "sha512-g7dsdsn50AhlGZ8iIDKdF8bi7Am++iFOq+QN+hNKz3FvgLuf8Dz+mpC/BFl90eE9bEYxXqXKeMf87399Ec5Qhw==", "dev": true, "requires": { @@ -2925,7 +3133,7 @@ "dependencies": { "hoist-non-react-statics": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=", "dev": true } @@ -2945,7 +3153,7 @@ "dependencies": { "hoist-non-react-statics": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=", "dev": true } @@ -3020,11 +3228,206 @@ } } }, + "@types/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/body-parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", + "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "requires": { + "@types/node": "*" + } + }, + "@types/cors": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.4.tgz", + "integrity": "sha512-ipZjBVsm2tF/n8qFGOuGBkUij9X9ZswVi9G3bx/6dz7POpVa6gVHcj1wsX/LVEn9MMF41fxK/PnZPPoTD1UFPw==", + "requires": { + "@types/express": "*" + } + }, + "@types/elasticsearch": { + "version": "5.0.32", + "resolved": "https://registry.npmjs.org/@types/elasticsearch/-/elasticsearch-5.0.32.tgz", + "integrity": "sha512-BlX/ji/JAaJ5ogIbHOHNN/8JQbBsVchDOzLh5T6ti3vYvceLY5IJRgppXRBG0NWf9YVCtzmS8WrXxV7ADF8cWg==" + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + }, + "@types/express": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.1.tgz", + "integrity": "sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.2.tgz", + "integrity": "sha512-qgc8tjnDrc789rAQed8NoiFLV5VGcItA4yWNFphqGU0RcuuQngD00g3LHhWIK3HQ2XeDgVCmlNPDlqi3fWBHnQ==", + "requires": { + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/history": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.2.tgz", + "integrity": "sha512-ui3WwXmjTaY73fOQ3/m3nnajU/Orhi6cEu5rzX+BrAAJxa3eITXZ5ch9suPqtM03OWhAHhPSyBGCN4UKoxO20Q==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + }, + "@types/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", + "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" + }, + "@types/mime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", + "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==" + }, + "@types/node": { + "version": "11.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.4.tgz", + "integrity": "sha512-+rabAZZ3Yn7tF/XPGHupKIL5EcAbrLxnTr/hgQICxbeuAfWtT0UZSfULE+ndusckBItcv4o6ZeOJplQikVcLvQ==" + }, + "@types/prop-types": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.0.tgz", + "integrity": "sha512-eItQyV43bj4rR3JPV0Skpl1SncRCdziTEK9/v8VwXmV6d/qOUO8/EuWeHBbCZcsfSHfzI5UyMJLCSXtxxznyZg==" + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + }, + "@types/react": { + "version": "16.8.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.13.tgz", + "integrity": "sha512-otJ4ntMuHGrvm67CdDJMAls4WqotmAmW0g3HmWi9LCjSWXrxoXY/nHXrtmMfvPEEmGFNm6NdgMsJmnfH820Qaw==", + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-redux": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-6.0.14.tgz", + "integrity": "sha512-bvpWqBOvz2V+EfZ9Qu1d3gFKYCIn/BYoGWAVt1c526tbiI9rtfaBbjutbbapmtEZaEfLuHj3Ljg9qho0SBSwUg==", + "requires": { + "@types/react": "*", + "redux": "^4.0.0" + } + }, + "@types/react-router": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-4.4.5.tgz", + "integrity": "sha512-12+VOu1+xiC8RPc9yrgHCyLI79VswjtuqeS2gPrMcywH6tkc8rGIUhs4LaL3AJPqo5d+RPnfRpNKiJ7MK2Qhcg==", + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react-router-dom": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-4.3.2.tgz", + "integrity": "sha512-biesHodFxPgDxku2m08XwPeAfUYBcxAnrQG7pwFikuA3L2e3u2OKAb+Sb16bJuU3L5CTHd+Ivap+ke4mmGsHqQ==", + "requires": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "@types/react-table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@types/react-table/-/react-table-6.8.1.tgz", + "integrity": "sha512-56wi1s7+H4eGbtXsppNz/OeBeUiPQZnJYLxia0ZpwcD47VfYFE1EkbVadEoJshJIjR4nbSQSF/AgJHvC/ZwHaQ==", + "requires": { + "@types/react": "*" + } + }, + "@types/recompose": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@types/recompose/-/recompose-0.27.1.tgz", + "integrity": "sha512-5bT3OMz9HHHwvRSMQaDGN8tWbpCxQfsZXlcy5HLexEEqkSJ9PBZfVMA6HANDbshOvn4kNS75SjQSJLJv5LJHxw==", + "requires": { + "@types/react": "*" + } + }, + "@types/redux-devtools": { + "version": "3.0.46", + "resolved": "https://registry.npmjs.org/@types/redux-devtools/-/redux-devtools-3.0.46.tgz", + "integrity": "sha512-64aS3RUEECeOTQ/XsQNG+8QKYesK6gJZN5+IRVT6Vocrm42Osq+LEolf7u8F0/CFIZEgRPLXIwGWctiCZTarhw==", + "requires": { + "@types/react": "*", + "redux": "^3.6.0" + }, + "dependencies": { + "redux": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "requires": { + "lodash": "^4.2.1", + "lodash-es": "^4.2.1", + "loose-envify": "^1.1.0", + "symbol-observable": "^1.0.3" + } + } + } + }, + "@types/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, "@types/tinycolor2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.1.tgz", "integrity": "sha512-25L/RL5tqZkquKXVHM1fM2bd23qjfbcPpAZ2N/H05Y45g3UEi+Hw8CbDV28shKY8gH1SHiLpZSxPI1lacqdpGg==" }, + "@types/ws": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-6.0.1.tgz", + "integrity": "sha512-EzH8k1gyZ4xih/MaZTXwT2xOkPiIMSrhQ9b8wrlX88L0T02eYsddatQlwVFlEPyEqV0ChpdpNnE51QPH6NVT4Q==", + "requires": { + "@types/events": "*", + "@types/node": "*" + } + }, + "@types/zen-observable": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.0.tgz", + "integrity": "sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg==" + }, "@webassemblyjs/ast": { "version": "1.7.11", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", @@ -3270,7 +3673,7 @@ }, "acorn-jsx": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "requires": { "acorn": "^3.0.4" @@ -3278,7 +3681,7 @@ "dependencies": { "acorn": { "version": "3.3.0", - "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" } } @@ -3309,6 +3712,11 @@ } } }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" + }, "address": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", @@ -3381,6 +3789,19 @@ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, + "amator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amator/-/amator-1.0.1.tgz", + "integrity": "sha1-D9NmP+9fMzTQiM9opwunQ5iqDiY=", + "requires": { + "bezier-easing": "^2.0.3" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -3429,81 +3850,436 @@ "normalize-path": "^2.0.0" } }, - "app-root-dir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", - "integrity": "sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg=", - "dev": true + "apollo-boost": { + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.1.28.tgz", + "integrity": "sha512-WnOeFKyI+1FxWtIsIjqj5TC+xMxJyY1pw8e0Gyd99vKaGNNulx1+MBEy2qL3u7NiaGWj93vxu/y4r8tKNnNqyA==", + "requires": { + "apollo-cache": "^1.1.26", + "apollo-cache-inmemory": "^1.4.3", + "apollo-client": "^2.4.13", + "apollo-link": "^1.0.6", + "apollo-link-error": "^1.0.3", + "apollo-link-http": "^1.3.1", + "apollo-link-state": "^0.4.0", + "graphql-tag": "^2.4.2", + "tslib": "^1.9.3" + } }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dev": true, + "apollo-cache": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.2.1.tgz", + "integrity": "sha512-nzFmep/oKlbzUuDyz6fS6aYhRmfpcHWqNkkA9Bbxwk18RD6LXC4eZkuE0gXRX0IibVBHNjYVK+Szi0Yied4SpQ==", "requires": { - "buffer-equal": "^1.0.0" + "apollo-utilities": "^1.2.1", + "tslib": "^1.9.3" } }, - "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "apollo-cache-control": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.5.2.tgz", + "integrity": "sha512-uehXDUrd3Qim+nzxqqN7XT1YTbNSyumW3/FY5BxbKZTI8d4oPG4eyVQKqaggooSjswKQnOoIQVes3+qg9tGAkw==", "requires": { - "default-require-extensions": "^1.0.0" + "apollo-server-env": "2.2.0", + "graphql-extensions": "0.5.4" + }, + "dependencies": { + "graphql-extensions": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.5.4.tgz", + "integrity": "sha512-qLThJGVMqcItE7GDf/xX/E40m/aeqFheEKiR5bfra4q5eHxQKGjnIc20P9CVqjOn9I0FkEiU9ypOobfmIf7t6g==", + "requires": { + "@apollographql/apollo-tools": "^0.3.3" + } + } } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true + "apollo-cache-inmemory": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.5.1.tgz", + "integrity": "sha512-D3bdpPmWfaKQkWy8lfwUg+K8OBITo3sx0BHLs1B/9vIdOIZ7JNCKq3EUcAgAfInomJUdN0QG1yOfi8M8hxkN1g==", + "requires": { + "apollo-cache": "^1.2.1", + "apollo-utilities": "^1.2.1", + "optimism": "^0.6.9", + "ts-invariant": "^0.2.1", + "tslib": "^1.9.3" + }, + "dependencies": { + "ts-invariant": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.2.1.tgz", + "integrity": "sha512-Z/JSxzVmhTo50I+LKagEISFJW3pvPCqsMWLamCTX8Kr3N5aMrnGOqcflbe5hLUzwjvgPfnLzQtHZv0yWQ+FIHg==", + "requires": { + "tslib": "^1.9.3" + } + } + } }, - "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==", - "dev": true, + "apollo-client": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.5.1.tgz", + "integrity": "sha512-MNcQKiqLHdGmNJ0rZ0NXaHrToXapJgS/5kPk0FygXt+/FmDCdzqcujI7OPxEC6e9Yw5S/8dIvOXcRNuOMElHkA==", + "requires": { + "@types/zen-observable": "^0.8.0", + "apollo-cache": "1.2.1", + "apollo-link": "^1.0.0", + "apollo-link-dedup": "^1.0.0", + "apollo-utilities": "1.2.1", + "symbol-observable": "^1.0.2", + "ts-invariant": "^0.2.1", + "tslib": "^1.9.3", + "zen-observable": "^0.8.0" + }, + "dependencies": { + "ts-invariant": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.2.1.tgz", + "integrity": "sha512-Z/JSxzVmhTo50I+LKagEISFJW3pvPCqsMWLamCTX8Kr3N5aMrnGOqcflbe5hLUzwjvgPfnLzQtHZv0yWQ+FIHg==", + "requires": { + "tslib": "^1.9.3" + } + } + } + }, + "apollo-datasource": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.3.1.tgz", + "integrity": "sha512-qdEUeonc9pPZvYwXK36h2NZoT7Pddmy0HYOzdV0ON5pcG1YtNmUyyYi83Q60V5wTWjuaCjyJ9hOY6wr0BMvQuA==", "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "apollo-server-caching": "0.3.1", + "apollo-server-env": "2.2.0" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "apollo-engine-reporting": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-1.0.7.tgz", + "integrity": "sha512-mFsXvd+1/o5jSa9tI2RoXYGcvCLcwwcfLwchjSTxqUd4ViB8RbqYKynzEZ+Omji7PBRM0azioBm43f7PSsQPqA==", "requires": { - "sprintf-js": "~1.0.2" + "apollo-engine-reporting-protobuf": "0.2.1", + "apollo-graphql": "^0.1.0", + "apollo-server-core": "2.4.8", + "apollo-server-env": "2.2.0", + "async-retry": "^1.2.1", + "graphql-extensions": "0.5.7" } }, - "aria-query": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-0.7.1.tgz", - "integrity": "sha1-Jsu1r/ZBRLCoJb4YRuCxbPoAsR4=", + "apollo-engine-reporting-protobuf": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.2.1.tgz", + "integrity": "sha512-5pYR84uWeylRS2OJowtkTczT3bWTwOErWtfnkRKccUi/wZ/AZJBP+D5HKNzM7xoFcz9XvrJyS+wBTz1oBi0Jiw==", "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" + "protobufjs": "^6.8.6" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "apollo-env": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.4.0.tgz", + "integrity": "sha512-TZpk59RTbXd8cEqwmI0KHFoRrgBRplvPAP4bbRrX4uDSxXvoiY0Y6tQYUlJ35zi398Hob45mXfrZxeRDzoFMkQ==", "requires": { - "arr-flatten": "^1.0.1" + "core-js": "3.0.0-beta.13", + "node-fetch": "^2.2.0", + "sha.js": "^2.4.11" + }, + "dependencies": { + "core-js": { + "version": "3.0.0-beta.13", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.0-beta.13.tgz", + "integrity": "sha512-16Q43c/3LT9NyePUJKL8nRIQgYWjcBhjJSMWg96PVSxoS0PeE0NHitPI3opBrs9MGGHjte1KoEVr9W63YKlTXQ==" + } } }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "apollo-graphql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.1.3.tgz", + "integrity": "sha512-bYgDh71jFfHKO9ioGlxnnoSYgpNp6LRl+/QHTx6tktQEN0Z+AdpkOKFNCHO/pRU/4vSqV5wuIhxhnCecxJQrMA==", + "requires": { + "apollo-env": "0.4.0", + "lodash.sortby": "^4.7.0" + } }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + "apollo-link": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.11.tgz", + "integrity": "sha512-PQvRCg13VduLy3X/0L79M6uOpTh5iHdxnxYuo8yL7sJlWybKRJwsv4IcRBJpMFbChOOaHY7Og9wgPo6DLKDKDA==", + "requires": { + "apollo-utilities": "^1.2.1", + "ts-invariant": "^0.3.2", + "tslib": "^1.9.3", + "zen-observable-ts": "^0.8.18" + } }, - "array-equal": { + "apollo-link-dedup": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/apollo-link-dedup/-/apollo-link-dedup-1.0.18.tgz", + "integrity": "sha512-1rr54wyMTuqUmbWvcXbwduIcaCDcuIgU6MqQ599nAMuTrbSOXthGfoAD8BDTxBGQ9roVlM7ABP0VZVEWRoHWSg==", + "requires": { + "apollo-link": "^1.2.11", + "tslib": "^1.9.3" + } + }, + "apollo-link-error": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.10.tgz", + "integrity": "sha512-itG5UV7mQqaalmRkuRsF0cUS4zW2ja8XCbxkMZnIEeN24X3yoJi5hpJeAaEkXf0KgYNsR0+rmtCQNruWyxDnZQ==", + "requires": { + "apollo-link": "^1.2.11", + "apollo-link-http-common": "^0.2.13", + "tslib": "^1.9.3" + } + }, + "apollo-link-http": { + "version": "1.5.14", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.14.tgz", + "integrity": "sha512-XEoPXmGpxFG3wioovgAlPXIarWaW4oWzt8YzjTYZ87R4R7d1A3wKR/KcvkdMV1m5G7YSAHcNkDLe/8hF2nH6cg==", + "requires": { + "apollo-link": "^1.2.11", + "apollo-link-http-common": "^0.2.13", + "tslib": "^1.9.3" + } + }, + "apollo-link-http-common": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.13.tgz", + "integrity": "sha512-Uyg1ECQpTTA691Fwx5e6Rc/6CPSu4TB4pQRTGIpwZ4l5JDOQ+812Wvi/e3IInmzOZpwx5YrrOfXrtN8BrsDXoA==", + "requires": { + "apollo-link": "^1.2.11", + "ts-invariant": "^0.3.2", + "tslib": "^1.9.3" + } + }, + "apollo-link-state": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/apollo-link-state/-/apollo-link-state-0.4.2.tgz", + "integrity": "sha512-xMPcAfuiPVYXaLwC6oJFIZrKgV3GmdO31Ag2eufRoXpvT0AfJZjdaPB4450Nu9TslHRePN9A3quxNueILlQxlw==", + "requires": { + "apollo-utilities": "^1.0.8", + "graphql-anywhere": "^4.1.0-alpha.0" + } + }, + "apollo-server": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.4.8.tgz", + "integrity": "sha512-IU6RekO2dqrDdC+5hU6aeVvGg/2t/f01inBMjDhAn1a7hoITUXEh8Sa57TgmYEZ5uAtDuWW7cdiZN2j0cMI3/w==", + "requires": { + "apollo-server-core": "2.4.8", + "apollo-server-express": "2.4.8", + "express": "^4.0.0", + "graphql-subscriptions": "^1.0.0", + "graphql-tools": "^4.0.0" + } + }, + "apollo-server-caching": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.3.1.tgz", + "integrity": "sha512-mfxzikYXbB/OoEms77AGYwRh7FF3Oim5v5XWAL+VL49FrkbZt5lopVa4bABi7Mz8Nt3Htl9EBJN8765s/yh8IA==", + "requires": { + "lru-cache": "^5.0.0" + }, + "dependencies": { + "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==", + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + } + } + }, + "apollo-server-core": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.4.8.tgz", + "integrity": "sha512-N+5UOzHhMOnHizEiArJtNvEe/cGhSHQyTn5tlU4RJ36FDBJ/WlYZfPbGDMLISSUCJ6t+aP8GLL4Mnudt9d2PDQ==", + "requires": { + "@apollographql/apollo-tools": "^0.3.3", + "@apollographql/graphql-playground-html": "^1.6.6", + "@types/ws": "^6.0.0", + "apollo-cache-control": "0.5.2", + "apollo-datasource": "0.3.1", + "apollo-engine-reporting": "1.0.7", + "apollo-server-caching": "0.3.1", + "apollo-server-env": "2.2.0", + "apollo-server-errors": "2.2.1", + "apollo-server-plugin-base": "0.3.7", + "apollo-tracing": "0.5.2", + "fast-json-stable-stringify": "^2.0.0", + "graphql-extensions": "0.5.7", + "graphql-subscriptions": "^1.0.0", + "graphql-tag": "^2.9.2", + "graphql-tools": "^4.0.0", + "graphql-upload": "^8.0.2", + "sha.js": "^2.4.11", + "subscriptions-transport-ws": "^0.9.11", + "ws": "^6.0.0" + } + }, + "apollo-server-env": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.2.0.tgz", + "integrity": "sha512-wjJiI5nQWPBpNmpiLP389Ezpstp71szS6DHAeTgYLb/ulCw3CTuuA+0/E1bsThVWiQaDeHZE0sE3yI8q2zrYiA==", + "requires": { + "node-fetch": "^2.1.2", + "util.promisify": "^1.0.0" + } + }, + "apollo-server-errors": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.2.1.tgz", + "integrity": "sha512-wY/YE3iJVMYC+WYIf8QODBjIP4jhI+oc7kiYo9mrz7LdYPKAgxr/he+NteGcqn/0Ea9K5/ZFTGJDbEstSMeP8g==" + }, + "apollo-server-express": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.4.8.tgz", + "integrity": "sha512-i60l32mfVe33jnKDPNYgUKUKu4Al0xEm2HLOSMgtJ9Wbpe/MbOx5X8M5F27fnHYdM+G5XfAErsakAyRGnQJ48Q==", + "requires": { + "@apollographql/graphql-playground-html": "^1.6.6", + "@types/accepts": "^1.3.5", + "@types/body-parser": "1.17.0", + "@types/cors": "^2.8.4", + "@types/express": "4.16.1", + "accepts": "^1.3.5", + "apollo-server-core": "2.4.8", + "body-parser": "^1.18.3", + "cors": "^2.8.4", + "graphql-subscriptions": "^1.0.0", + "graphql-tools": "^4.0.0", + "type-is": "^1.6.16" + }, + "dependencies": { + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + } + } + }, + "apollo-server-plugin-base": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.3.7.tgz", + "integrity": "sha512-hW1jaLKf9qNOxMTwRq2CSqz3eqXsZuEiCc8/mmEtOciiVBq1GMtxFf19oIYM9HQuPvQU2RWpns1VrYN59L3vbg==" + }, + "apollo-tracing": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.5.2.tgz", + "integrity": "sha512-2FdwRvPIq9uuF6OzONroXep6VBGqzHOkP6LlcFQe7SdwxfRP+SD/ycHNSC1acVg2b8d+am9Kzqg2vV54UpOIKA==", + "requires": { + "apollo-server-env": "2.2.0", + "graphql-extensions": "0.5.4" + }, + "dependencies": { + "graphql-extensions": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.5.4.tgz", + "integrity": "sha512-qLThJGVMqcItE7GDf/xX/E40m/aeqFheEKiR5bfra4q5eHxQKGjnIc20P9CVqjOn9I0FkEiU9ypOobfmIf7t6g==", + "requires": { + "@apollographql/apollo-tools": "^0.3.3" + } + } + } + }, + "apollo-utilities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.2.1.tgz", + "integrity": "sha512-Zv8Udp9XTSFiN8oyXOjf6PMHepD4yxxReLsl6dPUy5Ths7jti3nmlBzZUOxuTWRwZn0MoclqL7RQ5UEJN8MAxg==", + "requires": { + "fast-json-stable-stringify": "^2.0.0", + "ts-invariant": "^0.2.1", + "tslib": "^1.9.3" + }, + "dependencies": { + "ts-invariant": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.2.1.tgz", + "integrity": "sha512-Z/JSxzVmhTo50I+LKagEISFJW3pvPCqsMWLamCTX8Kr3N5aMrnGOqcflbe5hLUzwjvgPfnLzQtHZv0yWQ+FIHg==", + "requires": { + "tslib": "^1.9.3" + } + } + } + }, + "app-root-dir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", + "integrity": "sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg=", + "dev": true + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "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==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-0.7.1.tgz", + "integrity": "sha1-Jsu1r/ZBRLCoJb4YRuCxbPoAsR4=", + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" @@ -3656,7 +4432,7 @@ }, "async": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/async/-/async-1.0.0.tgz", "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" }, "async-each": { @@ -3664,6 +4440,24 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + }, + "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==" + }, + "async-retry": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.2.3.tgz", + "integrity": "sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==", + "requires": { + "retry": "0.12.0" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -3899,7 +4693,7 @@ }, "babel-helper-is-nodes-equiv": { "version": "0.0.1", - "resolved": "http://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", "dev": true }, @@ -4083,7 +4877,7 @@ }, "babel-plugin-istanbul": { "version": "4.1.6", - "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "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==", "requires": { "babel-plugin-syntax-object-rest-spread": "^6.13.0", @@ -4231,37 +5025,37 @@ }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" }, "babel-plugin-syntax-class-properties": { "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" }, "babel-plugin-syntax-dynamic-import": { "version": "6.18.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" }, "babel-plugin-syntax-flow": { "version": "6.18.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" }, "babel-plugin-syntax-jsx": { "version": "6.18.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "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=" }, "babel-plugin-syntax-trailing-function-commas": { @@ -4889,6 +5683,11 @@ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -4980,6 +5779,11 @@ "tweetnacl": "^0.14.3" } }, + "bezier-easing": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bezier-easing/-/bezier-easing-2.1.0.tgz", + "integrity": "sha1-wE3+i5JtbsrKGBPWn/F5t8ICXYY=" + }, "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", @@ -4990,6 +5794,14 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "~2.0.0" + } + }, "bluebird": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", @@ -5128,6 +5940,11 @@ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, "browser-resolve": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", @@ -5179,7 +5996,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { "bn.js": "^4.1.0", @@ -5227,7 +6044,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "requires": { "base64-js": "^1.0.2", @@ -5273,11 +6090,51 @@ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, + "bulma": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.7.4.tgz", + "integrity": "sha512-krG2rP6eAX1WE0sf6O0SC/FUVSOBX4m1PBC2+GKLpb2pX0qanaDqcv9U2nu75egFrsHkI0zdWYuk/oGwoszVWg==" + }, + "busboy": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", + "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", + "requires": { + "dicer": "0.3.0" + } + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + }, + "dependencies": { + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + } + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -5329,7 +6186,7 @@ }, "camelcase-keys": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "requires": { "camelcase": "^2.0.0", @@ -5399,9 +6256,14 @@ "lazy-cache": "^1.0.3" } }, + "chain-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.1.tgz", + "integrity": "sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==" + }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { "ansi-styles": "^2.2.1", @@ -5743,8 +6605,7 @@ "chownr": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" }, "chrome-trace-event": { "version": "1.0.0", @@ -5980,7 +6841,7 @@ }, "color": { "version": "0.11.4", - "resolved": "http://registry.npmjs.org/color/-/color-0.11.4.tgz", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "requires": { "clone": "^1.0.2", @@ -6128,6 +6989,15 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=" }, + "connected-react-router": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/connected-react-router/-/connected-react-router-5.0.1.tgz", + "integrity": "sha512-0QwWYPRGZQ7f284lmqc5kwC4T3iW3zrAH3zzi6uUMzTOxbA+mn38tAgMOoVo9m3pbskvONFtXiajgVkCElE9EQ==", + "requires": { + "immutable": "^3.8.1", + "seamless-immutable": "^7.1.3" + } + }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", @@ -6139,8 +7009,7 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "constants-browserify": { "version": "1.0.0", @@ -6203,7 +7072,6 @@ "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", @@ -6261,6 +7129,42 @@ "require-from-string": "^2.0.1" } }, + "cpx": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", + "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=", + "requires": { + "babel-runtime": "^6.9.2", + "chokidar": "^1.6.0", + "duplexer": "^0.1.1", + "glob": "^7.0.5", + "glob2base": "^0.0.12", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "resolve": "^1.1.7", + "safe-buffer": "^5.0.1", + "shell-quote": "^1.6.1", + "subarg": "^1.0.0" + }, + "dependencies": { + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + } + } + }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -6367,7 +7271,7 @@ "dependencies": { "node-fetch": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "resolved": "http://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" } } @@ -6412,12 +7316,12 @@ }, "css-color-names": { "version": "0.0.4", - "resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" }, "css-in-js-utils": { "version": "2.0.1", - "resolved": "http://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", "requires": { "hyphenate-style-name": "^1.0.2", @@ -6473,7 +7377,7 @@ }, "css-select": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { "boolbase": "~1.0.0", @@ -6516,7 +7420,7 @@ }, "cssnano": { "version": "3.10.0", - "resolved": "http://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", "requires": { "autoprefixer": "^6.3.1", @@ -6623,6 +7527,11 @@ "cssom": "0.3.x" } }, + "csstype": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.3.tgz", + "integrity": "sha512-rINUZXOkcBmoHWEyu7JdHu5JMzkGRoMX4ov9830WNgxf5UYxcBUO0QTKAqeJ5EZfSdlrcJYkC8WwfVW7JYi4yg==" + }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -6639,12 +7548,11 @@ "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" }, "d": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "requires": { "es5-ext": "^0.10.9" @@ -6759,6 +7667,41 @@ "assert-plus": "^1.0.0" } }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, "date-fns": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", @@ -6812,8 +7755,7 @@ "deepmerge": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" }, "default-require-extensions": { "version": "1.0.0", @@ -6906,14 +7848,18 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, + "deprecated-decorator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", + "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=" + }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -6960,6 +7906,14 @@ } } }, + "dicer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", + "requires": { + "streamsearch": "0.1.2" + } + }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -7079,7 +8033,7 @@ "dependencies": { "domelementtype": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" } } @@ -7107,6 +8061,14 @@ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz", "integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA==" }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, "domhandler": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", @@ -7134,7 +8096,7 @@ }, "dotenv": { "version": "4.0.0", - "resolved": "http://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" }, "dotenv-expand": { @@ -7153,7 +8115,7 @@ "dependencies": { "dotenv": { "version": "5.0.1", - "resolved": "http://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", "dev": true } @@ -7166,7 +8128,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, "duplexer3": { @@ -7178,7 +8140,6 @@ "version": "3.6.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", - "dev": true, "requires": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -7232,7 +8193,7 @@ "dependencies": { "lodash": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "http://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=" } } @@ -7313,7 +8274,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, "requires": { "once": "^1.4.0" } @@ -7756,7 +8716,7 @@ }, "load-json-file": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { "graceful-fs": "^4.1.2", @@ -7860,7 +8820,7 @@ }, "espree": { "version": "3.5.4", - "resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "requires": { "acorn": "^5.5.0", @@ -7940,7 +8900,7 @@ }, "events": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" }, "eventsource": { @@ -8011,28 +8971,121 @@ "homedir-polyfill": "^1.0.1" } }, - "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "expect": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.3.tgz", + "integrity": "sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA==", "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", + "ansi-styles": "^3.2.0", + "jest-diff": "^22.4.3", + "jest-get-type": "^22.4.3", + "jest-matcher-utils": "^22.4.3", + "jest-message-util": "^22.4.3", + "jest-regex-util": "^22.4.3" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "jest-diff": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz", + "integrity": "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" + } + }, + "jest-matcher-utils": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", + "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" + } + }, + "jest-message-util": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", + "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-regex-util": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz", + "integrity": "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==" + }, + "pretty-format": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", + "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.4", @@ -8489,6 +9542,11 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, + "fast-memoize": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.3.2.tgz", + "integrity": "sha512-h2avnhux4p3tXTA9xR7ntnQSFQdY4hAkyNj8wDXlVT2Die38JxVCInnrieuktdxzRevRWa3dBjN+SbQe1os0GQ==" + }, "fastparse": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", @@ -8722,6 +9780,11 @@ "pkg-dir": "^2.0.0" } }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=" + }, "find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", @@ -8760,7 +9823,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "dev": true, "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.4" @@ -8771,6 +9833,22 @@ "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=" }, + "focus-trap": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-2.4.6.tgz", + "integrity": "sha512-vWZTPtBU6pBoyWZDRZJHkXsyP2ZCZBHE3DRVXnSVdQKH/mcDtu9S5Kz8CUDyIqpfZfLEyI9rjKJLnc4Y40BRBg==", + "requires": { + "tabbable": "^1.0.3" + } + }, + "focus-trap-react": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-3.1.2.tgz", + "integrity": "sha512-MoQmONoy9gRPyrC5DGezkcOMGgx7MtIOAQDHe098UtL2sA2vmucJwEmQisb+8LRXNYFHxuw5zJ1oLFeKu4Mteg==", + "requires": { + "focus-trap": "^2.0.1" + } + }, "follow-redirects": { "version": "1.5.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz", @@ -8789,6 +9867,11 @@ } } }, + "fontfaceobserver": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.0.13.tgz", + "integrity": "sha1-R627NDJh7amMtE2yFSGW/xJNMiE=" + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -8807,6 +9890,44 @@ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, + "fork-ts-checker-webpack-plugin": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.2.10.tgz", + "integrity": "sha1-0KQIDnfp9dbjtDzc59JmWPnSUMY=", + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^1.1.3", + "chokidar": "^1.7.0", + "lodash.endswith": "^4.2.1", + "lodash.isfunction": "^3.0.8", + "lodash.isstring": "^4.0.1", + "lodash.startswith": "^4.2.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + } + } + }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -8869,12 +9990,16 @@ "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" } }, + "fs-capacitor": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.1.tgz", + "integrity": "sha512-kyV2oaG1/pu9NPosfGACmBym6okgzyg6hEtA5LSUq0dGpGLe278MVfMwVnSHDA/OBcTCHkPNqWL9eIwbPN6dDg==" + }, "fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", @@ -8899,7 +10024,6 @@ "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", @@ -9374,6 +10498,17 @@ } } }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -9405,7 +10540,6 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -9421,7 +10555,6 @@ "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" } @@ -9430,7 +10563,6 @@ "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", @@ -9439,6 +10571,14 @@ } } }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "requires": { + "globule": "^1.0.0" + } + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -9456,7 +10596,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, "get-value": { @@ -9582,6 +10722,14 @@ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", "dev": true }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "requires": { + "find-index": "^0.1.1" + } + }, "global": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", @@ -9638,9 +10786,19 @@ "pinkie-promise": "^2.0.0" } }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, "got": { "version": "6.7.1", - "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "requires": { "create-error-class": "^3.0.0", @@ -9679,9 +10837,18 @@ "iterall": "^1.2.2" } }, + "graphql-anywhere": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/graphql-anywhere/-/graphql-anywhere-4.2.1.tgz", + "integrity": "sha512-4zlzTFzixGXtIYjX7BiXQOGhQ5yQVohj/EKNxUHUTAR7lHnCmrXU17gGtZ+108l9TkoHNfc33ieJ9U8trnHE1w==", + "requires": { + "apollo-utilities": "^1.2.1", + "tslib": "^1.9.3" + } + }, "graphql-config": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.0.1.tgz", + "resolved": "http://registry.npmjs.org/graphql-config/-/graphql-config-2.0.1.tgz", "integrity": "sha512-eb4FzlODifHE/Q+91QptAmkGw39wL5ToinJ2556UUsGt2drPc4tzifL+HSnHSaxiIbH8EUhc/Fa6+neinF04qA==", "requires": { "graphql-import": "^0.4.4", @@ -9691,6 +10858,14 @@ "minimatch": "^3.0.4" } }, + "graphql-extensions": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.5.7.tgz", + "integrity": "sha512-HrU6APE1PiehZ46scMB3S5DezSeCATd8v+e4mmg2bqszMyCFkmAnmK6hR1b5VjHxhzt5/FX21x1WsXfqF4FwdQ==", + "requires": { + "@apollographql/apollo-tools": "^0.3.3" + } + }, "graphql-fields": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/graphql-fields/-/graphql-fields-1.3.0.tgz", @@ -9698,7 +10873,7 @@ }, "graphql-import": { "version": "0.4.5", - "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz", + "resolved": "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz", "integrity": "sha512-G/+I08Qp6/QGTb9qapknCm3yPHV0ZL7wbaalWFpxsfR8ZhZoTBe//LsbsCKlbALQpcMegchpJhpTSKiJjhaVqQ==", "requires": { "lodash": "^4.17.4" @@ -9758,6 +10933,28 @@ "graphql-language-service-types": "^1.2.2" } }, + "graphql-middleware": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/graphql-middleware/-/graphql-middleware-1.3.1.tgz", + "integrity": "sha512-KwcS+PY74NJ87XD9vvPrfXdgbkGDw8ii10dg4mUCKvPzNEgcp/revP7l4bmfzrFaa3ZioJcJXioo3luH8/7rSQ==", + "requires": { + "graphql-tools": "^3.0.2" + }, + "dependencies": { + "graphql-tools": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.1.1.tgz", + "integrity": "sha512-yHvPkweUB0+Q/GWH5wIG60bpt8CTwBklCSzQdEHmRUgAdEQKxw+9B7zB3dG7wB3Ym7M7lfrS4Ej+jtDZfA2UXg==", + "requires": { + "apollo-link": "^1.2.2", + "apollo-utilities": "^1.0.1", + "deprecated-decorator": "^0.1.6", + "iterall": "^1.1.3", + "uuid": "^3.1.0" + } + } + } + }, "graphql-request": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.8.2.tgz", @@ -9766,11 +10963,71 @@ "cross-fetch": "2.2.2" } }, + "graphql-scalars": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-0.1.5.tgz", + "integrity": "sha1-+jHLas8XjB7TNfKthlOFvgNx5NY=" + }, + "graphql-subscriptions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.1.0.tgz", + "integrity": "sha512-6WzlBFC0lWmXJbIVE8OgFgXIP4RJi3OQgTPa0DVMsDXdpRDjTsM1K9wfl5HSYX7R87QAGlvcv2Y4BIZa/ItonA==", + "requires": { + "iterall": "^1.2.1" + } + }, "graphql-tag": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.10.1.tgz", "integrity": "sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg==" }, + "graphql-tools": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.4.tgz", + "integrity": "sha512-chF12etTIGVVGy3fCTJ1ivJX2KB7OSG4c6UOJQuqOHCmBQwTyNgCDuejZKvpYxNZiEx7bwIjrodDgDe9RIkjlw==", + "requires": { + "apollo-link": "^1.2.3", + "apollo-utilities": "^1.0.1", + "deprecated-decorator": "^0.1.6", + "iterall": "^1.1.3", + "uuid": "^3.1.0" + } + }, + "graphql-type-json": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.2.4.tgz", + "integrity": "sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w==" + }, + "graphql-upload": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-8.0.5.tgz", + "integrity": "sha512-iv8R/E1b0GJ203Z2sdPgnCnU8tl9hQY+jkebiTNAjsWBT3j/I5VLBnPJdDhJSKIreWJ4/1LZjgOt60qjnH4/EQ==", + "requires": { + "busboy": "^0.3.0", + "fs-capacitor": "^2.0.1", + "http-errors": "^1.7.2", + "object-path": "^0.11.4" + }, + "dependencies": { + "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==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + } + } + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -9872,8 +11129,7 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, "has-value": { "version": "1.0.0", @@ -10010,6 +11266,11 @@ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" }, + "html-element-attributes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-element-attributes/-/html-element-attributes-1.3.1.tgz", + "integrity": "sha512-UrRKgp5sQmRnDy4TEwAUsu14XBUlzKB8U3hjIYDjcZ3Hbp86Jtftzxfgrv6E/ii/h78tsaZwAnAE8HwnHr0dPA==" + }, "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", @@ -10080,7 +11341,7 @@ }, "htmlparser2": { "version": "3.3.0", - "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", "requires": { "domelementtype": "1", @@ -10099,7 +11360,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "requires": { "core-util-is": "~1.0.0", @@ -10202,7 +11463,7 @@ }, "i18next": { "version": "10.6.0", - "resolved": "http://registry.npmjs.org/i18next/-/i18next-10.6.0.tgz", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-10.6.0.tgz", "integrity": "sha1-kP/Z+bxhfzS5oS4DcmD1JERfdoQ=" }, "i18next-scanner": { @@ -10309,14 +11570,18 @@ "iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" }, "ignore": { "version": "3.3.10", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, "immer": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/immer/-/immer-1.7.2.tgz", @@ -10326,8 +11591,12 @@ "immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", - "dev": true + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=" + }, + "immutable-tuple": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/immutable-tuple/-/immutable-tuple-0.4.10.tgz", + "integrity": "sha512-45jheDbc3Kr5Cw8EtDD+4woGRUV0utIrJBZT8XH0TPZRfm8tzT0/sLGGzyyCCFqFMG5Pv5Igf3WY/arn6+8V9Q==" }, "import": { "version": "0.0.6", @@ -10397,6 +11666,11 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" + }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -10584,7 +11858,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { "builtin-modules": "^1.0.0" @@ -10680,6 +11954,11 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, + "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=" + }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", @@ -10718,7 +11997,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-path-cwd": { @@ -11027,7 +12306,7 @@ "dependencies": { "ansi-escapes": { "version": "1.4.0", - "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" }, "callsites": { @@ -11131,6 +12410,11 @@ "jest-util": "^20.0.3" } }, + "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==" + }, "jest-haste-map": { "version": "20.0.5", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.5.tgz", @@ -11317,9 +12601,9 @@ } }, "jquery": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", - "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.0.tgz", + "integrity": "sha512-ggRCXln9zEqv6OqAGXFEcshF5dSBvCkzj6Gm2gzuR5fWawaX8t7cxKVkkygKODrDAzKdoYw3l/e3pm3vlT4IbQ==" }, "js-base64": { "version": "2.4.9", @@ -11470,7 +12754,7 @@ }, "json5": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" }, "jsonfile": { @@ -11538,6 +12822,17 @@ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=" }, + "jszip": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", + "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, "jwt-decode": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz", @@ -11645,6 +12940,11 @@ "flush-write-stream": "^1.0.2" } }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" + }, "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", @@ -11664,6 +12964,14 @@ "resolved": "https://registry.npmjs.org/lex-parser/-/lex-parser-0.1.4.tgz", "integrity": "sha1-ZMTwJfF/1Tv7RXY/rrFvAVp0dVA=" }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, "linkify-it": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.1.0.tgz", @@ -11674,7 +12982,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "requires": { "graceful-fs": "^4.1.2", @@ -11774,6 +13082,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, + "lodash-es": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.11.tgz", + "integrity": "sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q==" + }, "lodash._basebind": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/lodash._basebind/-/lodash._basebind-2.3.0.tgz", @@ -11863,6 +13176,11 @@ "resolved": "https://registry.npmjs.org/lodash._slice/-/lodash._slice-2.3.0.tgz", "integrity": "sha1-FHGYEyhZly5GgMoppZkshVZpqlw=" }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, "lodash.bind": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-2.3.0.tgz", @@ -11903,6 +13221,11 @@ "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.0.tgz", "integrity": "sha1-vsECT4WxvZbL6kBbI8FK1kQ6b4E=" }, + "lodash.endswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", + "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=" + }, "lodash.foreach": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.3.0.tgz", @@ -11944,7 +13267,7 @@ }, "lodash.isempty": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "resolved": "http://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" }, "lodash.isequal": { @@ -11971,6 +13294,11 @@ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", "dev": true }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, "lodash.keys": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.3.0.tgz", @@ -11986,6 +13314,11 @@ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" + }, "lodash.noop": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-2.3.0.tgz", @@ -11997,6 +13330,16 @@ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.startswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", + "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=" + }, "lodash.support": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/lodash.support/-/lodash.support-2.3.0.tgz", @@ -12057,6 +13400,11 @@ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -12194,7 +13542,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mem": { @@ -12221,7 +13569,7 @@ }, "meow": { "version": "3.7.0", - "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "requires": { "camelcase-keys": "^2.0.0", @@ -12238,7 +13586,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } @@ -12324,6 +13672,85 @@ "dom-walk": "^0.1.0" } }, + "mineral-ui": { + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/mineral-ui/-/mineral-ui-0.49.0.tgz", + "integrity": "sha512-9y10FNUI1uUxE6wTOg5xKKYlGlUtm+b8nUy+6XCz7I8TIx5cxqepKXDZkw9QKq4XYBJFjcM+a0pujiTFVaaBUw==", + "requires": { + "create-react-context": "0.2.2", + "exenv": "1.2.2", + "fast-memoize": "2.3.2", + "focus-trap-react": "3.1.2", + "fontfaceobserver": "2.0.13", + "lodash.debounce": "4.0.8", + "memoize-one": "4.0.0", + "mineral-ui-tokens": "0.4.0", + "no-scroll": "2.1.0", + "prop-types": "^15.5.7", + "react-fast-compare": "2.0.1", + "react-html-attributes": "1.4.2", + "react-popper": "0.10.1", + "react-transition-group": "2.3.0", + "recompose": "0.27.0", + "scroll-into-view-if-needed": "1.5.0" + }, + "dependencies": { + "memoize-one": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.0.tgz", + "integrity": "sha512-wdpOJ4XBejprGn/xhd1i2XR8Dv1A25FJeIvR7syQhQlz9eXsv+06llcvcmBxlWVGv4C73QBsWA8kxvZozzNwiQ==" + }, + "react-fast-compare": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.1.tgz", + "integrity": "sha512-hfYjgGUulrMp5G9vQAlERmDKJhxyVtcmV23BSu9xDwcQMGcozZRe8+lMTPd5sfFEzYzHW62A7hKMRF0xVoQlGw==" + }, + "react-popper": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-0.10.1.tgz", + "integrity": "sha1-ah8llfr/2ncQW+1OiezyJgekxFI=", + "requires": { + "popper.js": "^1.14.1", + "prop-types": "^15.6.1" + } + }, + "react-transition-group": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.3.0.tgz", + "integrity": "sha512-OU3/swEL8y233u5ajTn3FIcQQ/b3XWjLXB6e2LnM1OK5JATtsyfJvPTZ8c/dawHNqjUltcdHRSpgMtPe7v07pw==", + "requires": { + "chain-function": "^1.0.0", + "dom-helpers": "^3.2.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.5.8", + "warning": "^3.0.0" + } + }, + "recompose": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.27.0.tgz", + "integrity": "sha512-hivr1EopLhzjchhv2Y7VcLA2H5NGztwV/qfYqmIAhTkNowNQ9PyXdfq9Q8QCa0TMrPM1NtStlUyi5I/p8XfUNQ==", + "requires": { + "babel-runtime": "^6.26.0", + "change-emitter": "^0.1.2", + "fbjs": "^0.8.1", + "hoist-non-react-statics": "^2.3.1", + "react-lifecycles-compat": "^3.0.2", + "symbol-observable": "^1.0.4" + } + } + } + }, + "mineral-ui-icons": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mineral-ui-icons/-/mineral-ui-icons-0.5.0.tgz", + "integrity": "sha512-zu4DwPmKcADsp8VgTzzKxda/mxjeqCI1h4cQiraVUR4mHpi0b0tFNpBxuNF5aIpI8mJCuchxcDX5p5Pu8F1HGQ==" + }, + "mineral-ui-tokens": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mineral-ui-tokens/-/mineral-ui-tokens-0.4.0.tgz", + "integrity": "sha512-twLhMdRxzITfyD9Qkn9fUN8GUkrDw4bucEi3s2f8+zKfOmZN9piuCBMBaPFYmhaNtPS6050s7oRJMIlAuMVGBA==" + }, "mini-css-extract-plugin": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.4.tgz", @@ -12368,9 +13795,26 @@ }, "minimist": { "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", @@ -12392,7 +13836,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -12429,7 +13873,6 @@ "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", @@ -12466,8 +13909,7 @@ "nan": { "version": "2.11.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", - "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", - "optional": true + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==" }, "nanomatch": { "version": "1.2.13", @@ -12538,6 +13980,11 @@ "lower-case": "^1.1.1" } }, + "no-scroll": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/no-scroll/-/no-scroll-2.1.0.tgz", + "integrity": "sha1-+GQ7PdtqO/lEMOX/MdJvIdCCppU=" + }, "node-dir": { "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", @@ -12557,6 +14004,40 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + } + } + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -12624,18 +14105,70 @@ "semver": "^5.3.0" } }, - "nomnom": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.5.2.tgz", - "integrity": "sha1-9DRUSKhTz71cDSYyDyR3qwUm/i8=", + "node-sass": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", + "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", "requires": { - "colors": "0.5.x", - "underscore": "1.1.x" + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" }, "dependencies": { - "colors": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + } + } + }, + "node-sass-chokidar": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/node-sass-chokidar/-/node-sass-chokidar-1.3.4.tgz", + "integrity": "sha512-AEKBr58QFzU37Ubud90K1n+ljEpTDekJm5UCS8ZyoWgHoz2qx8f2vAaN8rECbqF1vYPid64NZBh98AKzHh9D9A==", + "requires": { + "async-foreach": "^0.1.3", + "chokidar": "^2.0.4", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "meow": "^3.7.0", + "node-sass": "^4.9.3", + "sass-graph": "^2.1.1", + "stdout-stream": "^1.4.0" + } + }, + "nomnom": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.5.2.tgz", + "integrity": "sha1-9DRUSKhTz71cDSYyDyR3qwUm/i8=", + "requires": { + "colors": "0.5.x", + "underscore": "1.1.x" + }, + "dependencies": { + "colors": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=" }, "underscore": { @@ -12720,7 +14253,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -12751,6 +14283,11 @@ "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==" }, + "nwsapi": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.3.tgz", + "integrity": "sha512-RowAaJGEgYXEZfQ7tvvdtAQUKPyTR6T6wNu0fwlNsGQYr/h3yQc6oI8WnVZh3Y/Sylwc+dtAlvPqfFZjhTyk3A==" + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -12791,6 +14328,11 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -12839,7 +14381,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, "requires": { "define-properties": "^1.1.2", "es-abstract": "^1.5.1" @@ -12916,6 +14457,14 @@ "is-wsl": "^1.1.0" } }, + "optimism": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.6.9.tgz", + "integrity": "sha512-xoQm2lvXbCA9Kd7SCx6y713Y7sZ6fUc5R6VYpoL5M6svKJbTuvtNopexK8sO8K4s0EOUYHuPN2+yAEsNyRggkQ==", + "requires": { + "immutable-tuple": "^0.4.9" + } + }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -12974,7 +14523,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "requires": { "lcid": "^1.0.0" @@ -12985,6 +14534,15 @@ "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" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -13036,13 +14594,17 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, "requires": { "cyclist": "~0.2.2", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } }, + "paralleljs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/paralleljs/-/paralleljs-0.2.1.tgz", + "integrity": "sha1-68p0XT4JwB4r68wUhYiR/0UQ6SY=" + }, "param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", @@ -13191,7 +14753,7 @@ }, "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, "pinkie": { @@ -13229,6 +14791,11 @@ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, "popback": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/popback/-/popback-0.0.3.tgz", @@ -13251,7 +14818,7 @@ "dependencies": { "async": { "version": "1.5.2", - "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, "debug": { @@ -13314,7 +14881,7 @@ }, "postcss-calc": { "version": "5.3.1", - "resolved": "http://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "requires": { "postcss": "^5.0.2", @@ -13421,7 +14988,7 @@ }, "postcss-discard-comments": { "version": "2.0.4", - "resolved": "http://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "requires": { "postcss": "^5.0.14" @@ -13489,7 +15056,7 @@ }, "postcss-discard-empty": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "requires": { "postcss": "^5.0.14" @@ -13523,7 +15090,7 @@ }, "postcss-discard-overridden": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "requires": { "postcss": "^5.0.16" @@ -13557,7 +15124,7 @@ }, "postcss-discard-unused": { "version": "2.2.3", - "resolved": "http://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "requires": { "postcss": "^5.0.14", @@ -13776,7 +15343,7 @@ }, "postcss-merge-idents": { "version": "2.1.7", - "resolved": "http://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", "requires": { "has": "^1.0.1", @@ -13898,7 +15465,7 @@ }, "postcss-minify-font-values": { "version": "1.0.5", - "resolved": "http://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", "requires": { "object-assign": "^4.0.1", @@ -13934,7 +15501,7 @@ }, "postcss-minify-gradients": { "version": "1.0.5", - "resolved": "http://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", "requires": { "postcss": "^5.0.12", @@ -13969,7 +15536,7 @@ }, "postcss-minify-params": { "version": "1.2.2", - "resolved": "http://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", "requires": { "alphanum-sort": "^1.0.1", @@ -14006,7 +15573,7 @@ }, "postcss-minify-selectors": { "version": "2.1.1", - "resolved": "http://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", "requires": { "alphanum-sort": "^1.0.2", @@ -14078,7 +15645,7 @@ }, "postcss-normalize-charset": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "requires": { "postcss": "^5.0.5" @@ -14112,7 +15679,7 @@ }, "postcss-normalize-url": { "version": "3.0.8", - "resolved": "http://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", "requires": { "is-absolute-url": "^2.0.0", @@ -14184,7 +15751,7 @@ }, "postcss-reduce-idents": { "version": "2.4.0", - "resolved": "http://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "requires": { "postcss": "^5.0.4", @@ -14219,7 +15786,7 @@ }, "postcss-reduce-initial": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", "requires": { "postcss": "^5.0.4" @@ -14253,7 +15820,7 @@ }, "postcss-reduce-transforms": { "version": "1.0.4", - "resolved": "http://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", "requires": { "has": "^1.0.1", @@ -14299,7 +15866,7 @@ }, "postcss-svgo": { "version": "2.1.6", - "resolved": "http://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", "requires": { "is-svg": "^2.0.0", @@ -14336,7 +15903,7 @@ }, "postcss-unique-selectors": { "version": "2.0.2", - "resolved": "http://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", "requires": { "alphanum-sort": "^1.0.1", @@ -14377,7 +15944,7 @@ }, "postcss-zindex": { "version": "2.2.0", - "resolved": "http://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", "requires": { "has": "^1.0.1", @@ -14495,8 +16062,7 @@ "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, "promise.prototype.finally": { "version": "3.1.0", @@ -14524,6 +16090,33 @@ "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" }, + "protobufjs": { + "version": "6.8.8", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", + "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "10.14.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.4.tgz", + "integrity": "sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg==" + } + } + }, "protocols": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.6.tgz", @@ -14570,7 +16163,6 @@ "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" @@ -14580,7 +16172,6 @@ "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", @@ -14597,6 +16188,14 @@ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, + "qew": { + "version": "0.9.13", + "resolved": "https://registry.npmjs.org/qew/-/qew-0.9.13.tgz", + "integrity": "sha1-PXWvVjBthgPoVSlJSi2zeXiDaYE=", + "requires": { + "typescript": "^2.4.2" + } + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -14722,20 +16321,54 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, "react": { - "version": "16.8.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.8.0.tgz", - "integrity": "sha512-g+nikW2D48kqgWSPwNo0NH9tIGG3DsQFlrtrQ1kj6W77z5ahyIHG0w8kPpz4Sdj6gyLnz0lEd/xsjOoGge2MYQ==", + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", + "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.13.0" + "scheduler": "^0.13.6" + }, + "dependencies": { + "scheduler": { + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "react-apollo": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-2.5.4.tgz", + "integrity": "sha512-olH9zYijOXVfj14hD7bQlZ0POBJchxg2e+mfnxEiEdqZra4+58SfIY0KPhmM9jqbeeusc6J/P4zzWIHt5DdNDg==", + "requires": { + "apollo-utilities": "^1.2.1", + "hoist-non-react-statics": "^3.3.0", + "lodash.isequal": "^4.5.0", + "prop-types": "^15.7.2", + "ts-invariant": "^0.3.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", + "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "requires": { + "react-is": "^16.7.0" + } + } } }, "react-app-rewire-emotion": { @@ -14768,6 +16401,22 @@ "prop-types": "^15.5.10" } }, + "react-bulma-components": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-bulma-components/-/react-bulma-components-2.3.0.tgz", + "integrity": "sha512-gt1SeJmknPTET9HOcn+Z3kweYSkxswRgMYgMYOkUUKCtqc70fJfz5+FPZmczUzxej0sTXzwXIVWUqm1ftVu31g==", + "requires": { + "bulma": "0.7.1", + "classnames": "2.2.6" + }, + "dependencies": { + "bulma": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.7.1.tgz", + "integrity": "sha512-wRSO2LXB+qI9Pyz2id+uZr4quz5aftSN7Ay1ysr1+krzVp3utD+Ci4CeKuZdrYGc800t65b7heXBL6qw2Wo/lQ==" + } + } + }, "react-component-component": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/react-component-component/-/react-component-component-1.2.1.tgz", @@ -14867,14 +16516,14 @@ } }, "react-dom": { - "version": "16.8.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.0.tgz", - "integrity": "sha512-dBzoAGYZpW9Yggp+CzBPC7q1HmWSeRc93DWrwbskmG1eHJWznZB/p0l/Sm+69leIGUS91AXPB/qB3WcPnKx8Sw==", + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", + "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.13.0" + "scheduler": "^0.13.6" } }, "react-draggable": { @@ -14982,6 +16631,14 @@ "shallowequal": "^1.0.2" } }, + "react-html-attributes": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/react-html-attributes/-/react-html-attributes-1.4.2.tgz", + "integrity": "sha1-DSzPE0/Hmy01Q4N9wVkdMre5A/k=", + "requires": { + "html-element-attributes": "^1.0.0" + } + }, "react-i18next": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-7.13.0.tgz", @@ -15137,9 +16794,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.2.tgz", - "integrity": "sha512-7Bl2rALb7HpvXFL7TETNzKSAeBVCPHELzc0C//9FCxN8nsiueWSJBqaF+2oIJScyILStASR/Cx5WMkXGYTiJFA==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz", + "integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==", "requires": { "regenerator-runtime": "^0.13.2" } @@ -15159,11 +16816,56 @@ } } }, + "react-portal": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.0.tgz", + "integrity": "sha512-Zf+vGQ/VEAb5XAy+muKEn48yhdCNYPZaB1BWg1xc8sAZWD8pXTgPtQT4ihBdmWzsfCq8p8/kqf0GWydSBqc+Eg==", + "requires": { + "prop-types": "^15.5.8" + } + }, "react-portal-tooltip": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/react-portal-tooltip/-/react-portal-tooltip-2.4.0.tgz", "integrity": "sha512-m0dxmsgX6Xv+fJDSt/tSsbu4NaFqOxchf9gTIZeZ5ZQzffqBCWarMuuUu4O/v4Yd2/1ERsY436sPze/4/04ddQ==" }, + "react-redux": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.1.1.tgz", + "integrity": "sha512-LE7Ned+cv5qe7tMV5BPYkGQ5Lpg8gzgItK07c67yHvJ8t0iaD9kPFPAli/mYkiyJYrs2pJgExR2ZgsGqlrOApg==", + "requires": { + "@babel/runtime": "^7.1.2", + "hoist-non-react-statics": "^3.1.0", + "invariant": "^2.2.4", + "loose-envify": "^1.1.0", + "prop-types": "^15.6.1", + "react-is": "^16.6.0", + "react-lifecycles-compat": "^3.0.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz", + "integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "hoist-non-react-statics": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", + "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "requires": { + "react-is": "^16.7.0" + } + }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + } + } + }, "react-resizable": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/react-resizable/-/react-resizable-1.7.5.tgz", @@ -15319,6 +17021,141 @@ } } }, + "react-scripts-ts": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/react-scripts-ts/-/react-scripts-ts-3.1.0.tgz", + "integrity": "sha512-D5MobGSGswNH3e8RVa8M50jIsazNIqizO5qwWYqfo/tMYSvG0ENotzD3SYMUWYb1E5fIcM+D9a0XEJgo3VgtCQ==", + "requires": { + "autoprefixer": "7.1.6", + "babel-jest": "20.0.3", + "babel-loader": "7.1.2", + "babel-preset-react-app": "^3.1.2", + "case-sensitive-paths-webpack-plugin": "2.1.1", + "chalk": "1.1.3", + "css-loader": "0.28.7", + "dotenv": "4.0.0", + "dotenv-expand": "4.2.0", + "extract-text-webpack-plugin": "3.0.2", + "file-loader": "1.1.5", + "fork-ts-checker-webpack-plugin": "^0.2.8", + "fs-extra": "3.0.1", + "fsevents": "^1.1.3", + "html-webpack-plugin": "2.29.0", + "jest": "20.0.4", + "object-assign": "4.1.1", + "postcss-flexbugs-fixes": "3.2.0", + "postcss-loader": "2.0.8", + "promise": "8.0.1", + "raf": "3.4.0", + "react-dev-utils": "^5.0.2", + "resolve": "1.6.0", + "source-map-loader": "^0.2.1", + "style-loader": "0.19.0", + "sw-precache-webpack-plugin": "0.11.4", + "ts-jest": "22.0.1", + "ts-loader": "^2.3.7", + "tsconfig-paths-webpack-plugin": "^2.0.0", + "tslint": "^5.7.0", + "tslint-config-prettier": "^1.10.0", + "tslint-react": "^3.2.0", + "uglifyjs-webpack-plugin": "1.2.5", + "url-loader": "0.6.2", + "webpack": "3.8.1", + "webpack-dev-server": "2.11.3", + "webpack-manifest-plugin": "1.3.2", + "whatwg-fetch": "2.0.3" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + }, + "file-loader": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz", + "integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==", + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.3.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "promise": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz", + "integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=", + "requires": { + "asap": "~2.0.3" + } + }, + "raf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", + "requires": { + "performance-now": "^2.1.0" + } + }, + "resolve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", + "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", + "requires": { + "path-parse": "^1.0.5" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", + "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + } + } + }, "react-scrollbar-size": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/react-scrollbar-size/-/react-scrollbar-size-2.1.0.tgz", @@ -15384,6 +17221,16 @@ "classnames": "^2.2.5" } }, + "react-sortable-hoc": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-0.8.4.tgz", + "integrity": "sha512-J9AFEQAJ7u2YWdVzkU5E3ewrG82xQ4xF1ZPrZYKliDwlVBDkmjri+iKFAEt6NCDIRiBZ4hiN5vzI8pwy/dGPHw==", + "requires": { + "babel-runtime": "^6.11.6", + "invariant": "^2.2.1", + "prop-types": "^15.5.7" + } + }, "react-spinkit": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/react-spinkit/-/react-spinkit-3.0.0.tgz", @@ -15451,7 +17298,7 @@ }, "react-toastify": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-3.4.3.tgz", + "resolved": "http://registry.npmjs.org/react-toastify/-/react-toastify-3.4.3.tgz", "integrity": "sha512-9teTL5In66vsv7O1LnbMQVKmT3CUcTL95sdy8GW5XX5J5uRFY3xSXRqRIcJtD4HSCrjTU2e72pwOiy73VgvJ1Q==", "requires": { "glamor": "^2.20.40", @@ -15460,11 +17307,11 @@ } }, "react-transition-group": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.7.1.tgz", - "integrity": "sha512-b0VJTzNRnXxRpCuxng6QJbAzmmrhBn1BZJfPPnHbH2PIo8msdkajqwtfdyGm/OypPXZNfAHKEqeN15wjMXrRJQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", "requires": { - "dom-helpers": "^3.3.1", + "dom-helpers": "^3.4.0", "loose-envify": "^1.4.0", "prop-types": "^15.6.2", "react-lifecycles-compat": "^3.0.4" @@ -15900,7 +17747,7 @@ }, "reduce-css-calc": { "version": "1.3.0", - "resolved": "http://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", "requires": { "balanced-match": "^0.4.2", @@ -15934,12 +17781,16 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.1.tgz", "integrity": "sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg==", - "dev": true, "requires": { "loose-envify": "^1.4.0", "symbol-observable": "^1.2.0" } }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -16024,7 +17875,7 @@ }, "regjsgen": { "version": "0.2.0", - "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" }, "regjsparser": { @@ -16149,6 +18000,24 @@ } } }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -16253,6 +18122,11 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -16290,11 +18164,18 @@ "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" } }, + "runtypes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/runtypes/-/runtypes-2.2.0.tgz", + "integrity": "sha512-pjEAAu0badevgm5kjCIvqgb4RKDuu4J6IdAmWt0yX/0xe1PghRInfO5I4iTKs29CJTtYACvnzmNsMu5saI39Gg==", + "requires": { + "reflect-metadata": "^0.1.12" + } + }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", @@ -16330,7 +18211,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { "ret": "~0.1.10" @@ -16373,20 +18254,31 @@ }, "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "scheduler": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.0.tgz", - "integrity": "sha512-w7aJnV30jc7OsiZQNPVmBc+HooZuvQZIZIShKutC3tnMFMkcwVN9CZRRSSNw03OnSCKmEkK8usmwcw6dqBaLzw==", + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -16428,10 +18320,42 @@ "resolved": "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz", "integrity": "sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==" }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + "scroll-into-view-if-needed": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-1.5.0.tgz", + "integrity": "sha512-6vTXm++xyIDkQ+O+gcmu9rp3NW61SWUdtIRhKh4uYuhcGZgClc1NJSz2C6HRNVIcL4VXIKAaOYq06cwK7Nx9Ag==", + "requires": { + "amator": "1.0.1" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "seamless-immutable": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/seamless-immutable/-/seamless-immutable-7.1.4.tgz", + "integrity": "sha512-XiUO1QP4ki4E2PHegiGAlu6r82o5A+6tRh7IkGGTVg/h+UoeX4nFBeCGPOhb4CYjvkqsfm/TUtvOMYC1xmV30A==" + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { "version": "1.10.4", @@ -16512,8 +18436,7 @@ "serialize-javascript": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", - "dev": true + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==" }, "serve-favicon": { "version": "2.5.0", @@ -16587,6 +18510,11 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", @@ -16875,6 +18803,25 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + } + } + }, "source-map-resolve": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", @@ -17004,11 +18951,24 @@ "tweetnacl": "~0.14.0" } }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "requires": { + "safe-buffer": "^5.1.1" + } + }, "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" + }, "static-eval": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", @@ -17071,6 +19031,19 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, "stifle": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stifle/-/stifle-1.1.0.tgz", @@ -17098,7 +19071,6 @@ "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" @@ -17119,8 +19091,12 @@ "stream-shift": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, "strict-uri-encode": { "version": "1.1.0", @@ -17209,7 +19185,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" @@ -17225,7 +19201,7 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-indent": { @@ -17268,6 +19244,43 @@ "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.5.tgz", "integrity": "sha512-d1i8CktqcZI8oR239dRh/tZmWRxje/WR8rTAiXcN+oJehNhSD8OIYObP34qPdlOn37iu1ysBEm186WIRKpUU2w==" }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "requires": { + "minimist": "^1.1.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "subscriptions-transport-ws": { + "version": "0.9.16", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.16.tgz", + "integrity": "sha512-pQdoU7nC+EpStXnCfh/+ho0zE0Z+ma+i7xvj7bkXKb1dvYHSZxgRPaU6spRP+Bjzow67c/rRDoix5RT0uU9omw==", + "requires": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0" + }, + "dependencies": { + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -17439,9 +19452,14 @@ "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-1.0.18.tgz", "integrity": "sha512-UqMAK6BBBXu8qaDI5omlyV9iDpM9nQfgthaBOK0nlfXnMgiuOBv+meWG73CGeCCFRhOOOa2e4rvqYzfynzy5zg==" }, + "tabbable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-1.1.3.tgz", + "integrity": "sha512-nOWwx35/JuDI4ONuF0ZTo6lYvI0fY0tZCH1ErzY2EXfu4az50ZyiUX8X073FLiZtmWUVlkRnuXsehjJgCw9tYg==" + }, "table": { "version": "4.0.3", - "resolved": "http://registry.npmjs.org/table/-/table-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", "requires": { "ajv": "^6.0.1", @@ -17485,6 +19503,16 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=" }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", @@ -17715,14 +19743,13 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { "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" @@ -17860,6 +19887,11 @@ "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==" + }, "toposort": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", @@ -17904,11 +19936,658 @@ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "requires": { + "glob": "^7.1.2" + } + }, + "ts-invariant": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.3.3.tgz", + "integrity": "sha512-UReOKsrJFGC9tUblgSRWo+BsVNbEd77Cl6WiV/XpMlkifXwNIJbknViCucHvVZkXSC/mcWeRnIGdY7uprcwvdQ==", + "requires": { + "tslib": "^1.9.3" + } + }, + "ts-jest": { + "version": "22.0.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-22.0.1.tgz", + "integrity": "sha512-bc781gViU95lRZF0kzkHiincwmVu96jbC8MFk2SXUCrSj3Zx8sMC6c6gJnIluVQkm8yYaBl5ucqLnwHNRl5l0Q==", + "requires": { + "babel-core": "^6.24.1", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-preset-jest": "^22.0.1", + "cpx": "^1.5.0", + "fs-extra": "4.0.3", + "jest-config": "^22.0.1", + "pkg-dir": "^2.0.0", + "source-map-support": "^0.5.0", + "yargs": "^10.0.3" + }, + "dependencies": { + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + }, + "acorn-globals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.1.tgz", + "integrity": "sha512-gJSiKY8dBIjV/0jagZIFBdVMtfQyA5QHCvAT48H2q8REQoW8Fs5AOjqBql1LgSXgrMWdevcE+8cdZ33NtVbIBA==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" + } + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz", + "integrity": "sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ==" + }, + "babel-preset-jest": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz", + "integrity": "sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA==", + "requires": { + "babel-plugin-jest-hoist": "^22.4.4", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "cssstyle": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", + "requires": { + "cssom": "0.3.x" + } + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jest-config": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.4.4.tgz", + "integrity": "sha512-9CKfo1GC4zrXSoMLcNeDvQBfgtqGTB1uP8iDIZ97oB26RCUb886KkKWhVcpyxVDOUxbhN+uzcBCeFe7w+Iem4A==", + "requires": { + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^22.4.1", + "jest-environment-node": "^22.4.1", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^22.4.4", + "jest-regex-util": "^22.1.0", + "jest-resolve": "^22.4.2", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.4", + "pretty-format": "^22.4.0" + } + }, + "jest-diff": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz", + "integrity": "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" + } + }, + "jest-environment-jsdom": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz", + "integrity": "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==", + "requires": { + "jest-mock": "^22.4.3", + "jest-util": "^22.4.3", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.4.3.tgz", + "integrity": "sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA==", + "requires": { + "jest-mock": "^22.4.3", + "jest-util": "^22.4.3" + } + }, + "jest-jasmine2": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.4.tgz", + "integrity": "sha512-nK3vdUl50MuH7vj/8at7EQVjPGWCi3d5+6aCi7Gxy/XMWdOdbH1qtO/LjKbqD8+8dUAEH+BVVh7HkjpCWC1CSw==", + "requires": { + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^22.4.0", + "graceful-fs": "^4.1.11", + "is-generator-fn": "^1.0.0", + "jest-diff": "^22.4.0", + "jest-matcher-utils": "^22.4.0", + "jest-message-util": "^22.4.0", + "jest-snapshot": "^22.4.0", + "jest-util": "^22.4.1", + "source-map-support": "^0.5.0" + } + }, + "jest-matcher-utils": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", + "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" + } + }, + "jest-message-util": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", + "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz", + "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==" + }, + "jest-regex-util": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz", + "integrity": "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==" + }, + "jest-resolve": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.3.tgz", + "integrity": "sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==", + "requires": { + "browser-resolve": "^1.11.2", + "chalk": "^2.0.1" + } + }, + "jest-snapshot": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.4.3.tgz", + "integrity": "sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ==", + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^22.4.3", + "jest-matcher-utils": "^22.4.3", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^22.4.3" + } + }, + "jest-util": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz", + "integrity": "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==", + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^22.4.3", + "mkdirp": "^0.5.1", + "source-map": "^0.6.0" + } + }, + "jest-validate": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.4.4.tgz", + "integrity": "sha512-dmlf4CIZRGvkaVg3fa0uetepcua44DHtktHm6rcoNVtYlpwe6fEJRkMFsaUVcFHLzbuBJ2cPw9Gl9TKfnzMVwg==", + "requires": { + "chalk": "^2.0.1", + "jest-config": "^22.4.4", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^22.4.0" + } + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" + }, + "pretty-format": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", + "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "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==" + }, + "yargs": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.1.0" + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "ts-loader": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.7.tgz", + "integrity": "sha512-8t3bu2FcEkXb+D4L+Cn8qiK2E2C6Ms4/GQChvz6IMbVurcFHLXrhW4EMtfaol1a1ASQACZGDUGit4NHnX9g7hQ==", + "requires": { + "chalk": "^2.0.1", + "enhanced-resolve": "^3.0.0", + "loader-utils": "^1.0.2", + "semver": "^5.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "tsconfig-paths": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.8.0.tgz", + "integrity": "sha512-zZEYFo4sjORK8W58ENkRn9s+HmQFkkwydDG7My5s/fnfr2YYCaiyXe/HBUcIgU8epEKOXwiahOO+KZYjiXlWyQ==", + "requires": { + "@types/json5": "^0.0.29", + "deepmerge": "^2.0.1", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-reAnVEGP7mNwOcXXYxQpsH7uY8blNJM/xgN2KYttVX+qkwfqA+nhRPpA7Fnomnlhm5Jz0EoSVwk4rtQu8hC54g==", + "requires": { + "chalk": "^2.3.0", + "tsconfig-paths": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "tslint": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.15.0.tgz", + "integrity": "sha512-6bIEujKR21/3nyeoX2uBnE8s+tMXCQXhqMmaIPJpHmXJoBJPTLcI7/VHRtUwMhnLVdwLqqY3zmd8Dxqa5CVdJA==", + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.13.0", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==" + }, + "tslint-react": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/tslint-react/-/tslint-react-3.6.0.tgz", + "integrity": "sha512-AIv1QcsSnj7e9pFir6cJ6vIncTqxfqeFF3Lzh8SuuBljueYzEAtByuB6zMaD27BL0xhMEqsZ9s5eHuCONydjBw==", + "requires": { + "tsutils": "^2.13.1" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "requires": { + "tslib": "^1.8.1" + } }, "tty-browserify": { "version": "0.0.0", @@ -17955,6 +20634,31 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typegql": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/typegql/-/typegql-0.6.1.tgz", + "integrity": "sha512-+3/mwawZ0ohr9VZZ9ddmIv6CTME/iPg+g+NOCeTgfS5HnWEWHBt9IZxm+GaTWrhyUnT5oNPu72fPVQBiZPpLIg==", + "requires": { + "graphql": "^0.13.2", + "object-path": "^0.11.4", + "reflect-metadata": "^0.1.12" + }, + "dependencies": { + "graphql": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz", + "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==", + "requires": { + "iterall": "^1.2.1" + } + } + } + }, + "typescript": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==" + }, "ua-parser-js": { "version": "0.7.19", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", @@ -18034,7 +20738,7 @@ }, "yargs": { "version": "3.10.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "requires": { "camelcase": "^1.0.2", @@ -18130,7 +20834,6 @@ "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" } @@ -18139,7 +20842,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", - "dev": true, "requires": { "imurmurhash": "^0.1.4" } @@ -18366,7 +21068,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, "requires": { "define-properties": "^1.1.2", "object.getownpropertydescriptors": "^2.0.3" @@ -18377,6 +21078,11 @@ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" }, + "utility-types": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-2.1.0.tgz", + "integrity": "sha512-/nP2gqavggo6l38rtQI/CdeV+2fmBGXVvHgj9kV2MAnms3TIi77Mz9BtapPFI0+GZQCqqom0vACQ+VlTTaCovw==" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -18491,7 +21197,7 @@ }, "victory-pie": { "version": "14.0.2", - "resolved": "http://registry.npmjs.org/victory-pie/-/victory-pie-14.0.2.tgz", + "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-14.0.2.tgz", "integrity": "sha512-VOJtJR++GPcN9mg5TNrz8wml1hHVsl74ZT4hsH6E+i1hmsacGBlqz8YQ82VEhwBxxh5z7e8he2/qcVvZcKfHZg==", "requires": { "d3-shape": "^1.0.0", @@ -18574,6 +21280,14 @@ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" }, + "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=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", @@ -18693,7 +21407,7 @@ }, "load-json-file": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { "graceful-fs": "^4.1.2", @@ -18876,7 +21590,7 @@ }, "yargs": { "version": "6.6.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", "requires": { "camelcase": "^3.0.0", @@ -18896,7 +21610,7 @@ }, "yargs-parser": { "version": "4.2.1", - "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "requires": { "camelcase": "^3.0.0" @@ -18937,7 +21651,7 @@ "dependencies": { "fs-extra": { "version": "0.30.0", - "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "requires": { "graceful-fs": "^4.1.2", @@ -18949,7 +21663,7 @@ }, "jsonfile": { "version": "2.4.0", - "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { "graceful-fs": "^4.1.6" @@ -19010,6 +21724,11 @@ "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, "whatwg-url": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", @@ -19048,7 +21767,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, "requires": { "string-width": "^1.0.2 || 2" } @@ -19094,7 +21812,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { "string-width": "^1.0.1", @@ -19144,6 +21862,14 @@ "signal-exit": "^3.0.2" } }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, "xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", @@ -19249,6 +21975,20 @@ "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" } } + }, + "zen-observable": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.14.tgz", + "integrity": "sha512-kQz39uonEjEESwh+qCi83kcC3rZJGh4mrZW7xjkSQYXkq//JZHTtKo+6yuVloTgMtzsIWOJrjIrKvk/dqm0L5g==" + }, + "zen-observable-ts": { + "version": "0.8.18", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.18.tgz", + "integrity": "sha512-q7d05s75Rn1j39U5Oapg3HI2wzriVwERVo4N7uFGpIYuHB9ff02P/E92P9B8T7QVC93jCMHpbXH7X0eVR5LA7A==", + "requires": { + "tslib": "^1.9.3", + "zen-observable": "^0.8.0" + } } } } diff --git a/package.json b/package.json index bdb788987..e2895a2f1 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "private": true, "dependencies": { - "@arranger/components": "1.0.34", + "@arranger/admin-ui": "1.1.7", + "@arranger/components": "1.1.7", "@nivo/bar": "^0.51.0", "@nivo/core": "^0.51.0", "@nivo/pie": "^0.51.0", diff --git a/src/App.js b/src/App.js index 5e5eef7e2..f25be1399 100644 --- a/src/App.js +++ b/src/App.js @@ -4,10 +4,10 @@ import { compose } from 'recompose'; import { injectState } from 'freactal'; import { Route, Switch, Redirect } from 'react-router-dom'; import styled from 'react-emotion'; -import { Dashboard as ArrangerDashboard } from '@arranger/components'; import { translate } from 'react-i18next'; import Toast from 'uikit/Toast'; import { withTheme } from 'emotion-theming'; +import { Dashboard as ArrangerDashboardLegacy } from '@arranger/components'; import Modal from 'components/Modal'; import UserProfile from 'components/UserProfile'; @@ -35,6 +35,7 @@ import { requireLogin } from './common/injectGlobals'; import { withApi } from 'services/api'; import { initializeApi, ApiContext } from 'services/api'; import { DCF, GEN3, COHORT_BUILDER_PATH } from 'common/constants'; +import ArrangerAdmin from 'components/ArrangerAdmin' const forceSelectRole = ({ loggedInUser, isLoadingUser, WrapperPage = Page, ...props }) => { if (!loggedInUser && requireLogin) { @@ -60,6 +61,7 @@ const AppContainer = styled('div')` } `; + const App = compose( injectState, withApi, @@ -70,19 +72,43 @@ const App = compose( forceSelectRole({ api, isLoadingUser, + WrapperPage: FixedFooterPage, + Component: ({ match, ...props }) => { + return !isAdminToken({ + validatedPayload: validateJWT({ jwt: state.loggedInUserToken }), + }) ? ( + + ) : ( + + ); + }, + loggedInUser, + index: props.match.params.index, + graphqlField: props.match.params.index, + ...props, + }) + } + /> + + forceSelectRole({ + api, + isLoadingUser, + WrapperPage: FixedFooterPage, Component: ({ match, ...props }) => { return !isAdminToken({ validatedPayload: validateJWT({ jwt: state.loggedInUserToken }), }) ? ( ) : ( - + ); }, loggedInUser, diff --git a/src/common/injectGlobals.js b/src/common/injectGlobals.js index 59d013aec..1a1c325a4 100644 --- a/src/common/injectGlobals.js +++ b/src/common/injectGlobals.js @@ -44,9 +44,6 @@ export const facebookAppId = getApplicationEnvVar('FACEBOOK_APP_ID'); export const egoAppId = getApplicationEnvVar('EGO_APP_ID'); export const googleMapsKey = getApplicationEnvVar('GOOGLE_MAPS_KEY'); -export const usersnapHost = getApplicationEnvVar('USERSNAP_HOST'); -export const usersnapId = getApplicationEnvVar('USERSNAP_ID'); - export const hotjarHost = getApplicationEnvVar('HOTJAR_HOST'); export const hotjarId = getApplicationEnvVar('HOTJAR_ID'); @@ -91,3 +88,5 @@ export const reactApiDataVersionFallback: string = // Public Stats export const publicStatsApiRoot = getApplicationEnvVar('PUBLIC_STATS_ROOT') || ''; + +export const arrangerAdminApiRoot = getApplicationEnvVar('ARRANGER_ADMIN_ROOT') || null; \ No newline at end of file diff --git a/src/components/ArrangerAdmin.js b/src/components/ArrangerAdmin.js new file mode 100644 index 000000000..e8a624aae --- /dev/null +++ b/src/components/ArrangerAdmin.js @@ -0,0 +1,30 @@ +import React, {Suspense} from 'react'; +import { arrangerAdminApiRoot } from 'common/injectGlobals'; +import { EGO_JWT_KEY } from 'common/constants'; +import { withRouter } from 'react-router-dom'; + +const LazyArrangerAdminUi = React.lazy(() => import('@arranger/admin-ui/dist')) + +export default withRouter(({ + baseRoute, + history, + failRedirect="/" +}) => ( +
+ Loading...
}> + + fetch(url, { + ...config, + headers: { + ...config.headers, + authorization: `Bearer ${localStorage.getItem(EGO_JWT_KEY)}` + } + }) + .catch(() => history.replace(failRedirect)) + }/> + + +)) diff --git a/src/components/CohortBuilder/Categories/Category.js b/src/components/CohortBuilder/Categories/Category.js index b16e62fcc..2db3649ed 100644 --- a/src/components/CohortBuilder/Categories/Category.js +++ b/src/components/CohortBuilder/Categories/Category.js @@ -6,7 +6,7 @@ import { withApi } from 'services/api'; import Column from 'uikit/Column'; import Dropdown from 'uikit/Dropdown'; import { compose, lifecycle, withState, withProps } from 'recompose'; -import { withDropdownMultiPane } from 'uikit/Dropdown'; +import { withDropdownState } from 'uikit/Dropdown'; import Filter from './Filter'; import CategoryRowDisplay from './CategoryRowDisplay'; import { arrangerProjectId } from 'common/injectGlobals'; @@ -101,8 +101,8 @@ const CategoryButton = styled(Column)` background-color: ${({ theme }) => theme.backgroundGrey}; } - ${({ isDropdownVisible, theme }) => - isDropdownVisible + ${({ isOpen, theme }) => + isOpen ? css` background-color: ${theme.backgroundGrey}; box-shadow: 0 0 5.9px 0.1px ${theme.lighterShadow}; @@ -130,15 +130,11 @@ const CategoryRow = compose(withApi)(({ api, field, active }) => ( const noop = () => {}; const Category = compose( - withDropdownMultiPane, - withProps(({ fields, currentSearchField = '' }) => { + withDropdownState, + withProps(({ fields, currentSearchField = '', category, currentCategory }) => { const index = fields.indexOf(currentSearchField); - return index > -1 - ? { - showExpanded: true, - activeIndex: index, - isDropdownVisible: true, - } + return index > -1 && category === currentCategory + ? { showExpanded: true, activeIndex: index } : {}; }), )( @@ -149,34 +145,36 @@ const Category = compose( toggleDropdown, isDropdownVisible, setDropdownVisibility, - toggleExpanded, - toggleExpandedDropdown, - setActiveIndex, activeIndex, - setExpanded, + setExpanded = noop, showExpanded, fields, + setActiveCategory, sqon = { op: 'and', content: [], }, onSqonUpdate = noop, onClose = noop, + category = '', }) => { const isFieldInSqon = fieldId => sqon.content.some(({ content: { field } }) => field === fieldId); + + const isOpen = isDropdownVisible || !!activeIndex; + return ( { - setExpanded(false); + setActiveCategory({ category, fieldName: '' }); setDropdownVisibility(false); onClose(); }, - isOpen: isDropdownVisible, + isOpen, onToggle: toggleDropdown, - setActiveIndex, + setActiveIndex: index => setActiveCategory({ fieldName: fields[index], category }), activeIndex, setExpanded, showExpanded, @@ -189,16 +187,14 @@ const Category = compose( initialSqon={sqon} onSubmit={sqon => { onSqonUpdate(sqon); - toggleExpanded(); setDropdownVisibility(false); onClose(); }} onBack={() => { - toggleExpanded(); onClose(); }} onCancel={() => { - toggleExpandedDropdown(); + setDropdownVisibility(false); onClose(); }} field={field} @@ -215,7 +211,7 @@ const Category = compose( OptionsContainerComponent: OptionsWrapper, }} > - + {' '} {children} diff --git a/src/components/CohortBuilder/Categories/index.js b/src/components/CohortBuilder/Categories/index.js index 4fc0fb4b0..309c39109 100644 --- a/src/components/CohortBuilder/Categories/index.js +++ b/src/components/CohortBuilder/Categories/index.js @@ -105,7 +105,6 @@ const CATEGORY_FIELDS = { 'biospecimens.source_text_tissue_type', 'biospecimens.ncit_id_tissue_type', 'biospecimens.source_text_tumor_descriptor', - ], availableData: [ 'available_data_types', @@ -114,11 +113,23 @@ const CATEGORY_FIELDS = { ], }; +const CATEGORY_NAMES = { + quickSearch: 'quickSearch', + study: 'study', + clinical: 'clinical', + biospecimen: 'biospecimen', + demographic: 'demographic', + availableData: 'availableData', +}; + +const excludedCategories = ['searchAll', 'quickSearch']; + class Categories extends React.Component { constructor(props) { super(props); this.state = { currentSearchField: '', + currentCategory: null, }; autobind(this); } @@ -128,17 +139,28 @@ class Categories extends React.Component { this.props.onSqonUpdate(...args); } + // searching should not open quick filters handleSearchField(fieldName) { - this.setState({ currentSearchField: fieldName }); + const currentCategoryKey = Object.keys(CATEGORY_FIELDS) + .filter(key => !excludedCategories.includes(key)) + .find(key => CATEGORY_FIELDS[key].includes(fieldName)); + const currentCategory = CATEGORY_NAMES[currentCategoryKey]; + this.setState({ currentSearchField: fieldName, currentCategory }); } handleCategoryClose() { - this.setState({ currentSearchField: '' }); + this.setActiveCategory({ fieldName: '', category: null }); } + setActiveCategory = ({ category, fieldName }) => + this.setState({ + currentCategory: category, + currentSearchField: fieldName, + }); + render() { const { theme, sqon } = this.props; - const { currentSearchField } = this.state; + const { currentSearchField, currentCategory } = this.state; return ( @@ -154,8 +176,13 @@ class Categories extends React.Component { title="Quick Filters" sqon={sqon} onSqonUpdate={this.handleSqonUpdate} + onClose={this.handleCategoryClose} fields={CATEGORY_FIELDS.quickSearch} + currentSearchField={currentSearchField} color={theme.filterPurple} + setActiveCategory={this.setActiveCategory} + category={CATEGORY_NAMES.quickSearch} + currentCategory={currentCategory} > @@ -167,6 +194,9 @@ class Categories extends React.Component { fields={CATEGORY_FIELDS.study} currentSearchField={currentSearchField} color={theme.studyRed} + setActiveCategory={this.setActiveCategory} + category={CATEGORY_NAMES.study} + currentCategory={currentCategory} > @@ -178,6 +208,9 @@ class Categories extends React.Component { fields={CATEGORY_FIELDS.demographic} currentSearchField={currentSearchField} color={theme.demographicPurple} + setActiveCategory={this.setActiveCategory} + category={CATEGORY_NAMES.demographic} + currentCategory={currentCategory} > @@ -189,6 +222,9 @@ class Categories extends React.Component { fields={CATEGORY_FIELDS.clinical} currentSearchField={currentSearchField} color={theme.clinicalBlue} + setActiveCategory={this.setActiveCategory} + category={CATEGORY_NAMES.clinical} + currentCategory={currentCategory} > @@ -200,6 +236,9 @@ class Categories extends React.Component { fields={CATEGORY_FIELDS.biospecimen} currentSearchField={currentSearchField} color={theme.biospecimenOrange} + setActiveCategory={this.setActiveCategory} + category={CATEGORY_NAMES.biospecimen} + currentCategory={currentCategory} > @@ -211,6 +250,9 @@ class Categories extends React.Component { fields={CATEGORY_FIELDS.availableData} currentSearchField={currentSearchField} color={theme.dataBlue} + setActiveCategory={this.setActiveCategory} + category={CATEGORY_NAMES.availableData} + currentCategory={currentCategory} > diff --git a/src/components/CohortBuilder/DeleteVirtualStudiesModalContent.js b/src/components/CohortBuilder/DeleteVirtualStudiesModalContent.js new file mode 100644 index 000000000..0e687571c --- /dev/null +++ b/src/components/CohortBuilder/DeleteVirtualStudiesModalContent.js @@ -0,0 +1,36 @@ +import React from 'react'; +import Component from 'react-component-component'; +import { ModalFooter } from 'components/Modal/index.js'; +import { ModalContentSection } from './common'; +import PromptMessage from 'uikit/PromptMessage'; + +export default ({ onSubmit, submitDisabled, name }) => { + const initialState = { errorMessage: null }; + const submitHandler = s => () => { + s.setState({ errorMessage: null }); + return onSubmit().catch(err => { + s.setState({ errorMessage: err.message }); + }); + }; + return ( + + {s => ( + + {s.state.errorMessage && ( + + )} + + Are you sure you want to delete "{name}"? +

+ This action cannot be undone. +
+ +
+ )} +
+ ); +}; diff --git a/src/components/CohortBuilder/ParticipantsTableView/ParticipantsTable.js b/src/components/CohortBuilder/ParticipantsTableView/ParticipantsTable.js index 26918c535..faa2f5674 100644 --- a/src/components/CohortBuilder/ParticipantsTableView/ParticipantsTable.js +++ b/src/components/CohortBuilder/ParticipantsTableView/ParticipantsTable.js @@ -17,11 +17,12 @@ import ColumnFilter from 'uikit/DataTable/ToolbarButtons/ColumnFilter'; import Export from 'uikit/DataTable/ToolbarButtons/Export'; import { trackUserInteraction } from 'services/analyticsTracking'; import { configureCols } from 'uikit/DataTable/utils/columns'; -import RemoveFromCohortButton from './RemoveFromCohortButton'; +// import RemoveFromCohortButton from './RemoveFromCohortButton'; import DownloadButton from 'components/FileRepo/DownloadButton'; import { arrangerProjectId } from 'common/injectGlobals'; import { SORTABLE_FIELDS_MAPPING } from './queries'; +import { union, compact } from 'lodash'; const SelectionCell = ({ value: checked, onCellSelected, row }) => { if (row === undefined) { @@ -41,33 +42,53 @@ const SelectionCell = ({ value: checked, onCellSelected, row }) => { ); }; +const rowCss = css({ + display: 'flex', + flexWrap: 'nowrap', + alignItems: 'flex-start', + alignContent: 'stretch', +}); + const enhance = compose(withState('collapsed', 'setCollapsed', true)); const CollapsibleMultiLineCell = enhance(({ value: data, collapsed, setCollapsed }) => { - // Display a fourth row when there is exactly 4 rows. + // Display one row when there is exactly more than one row. // Collapsing a single don't save any space. - const displayedRowCount = collapsed ? (data.length === 4 ? 4 : 3) : data.length; - const displayMoreButton = data.length > 4; + const sortedData = union(data); + const cleanedData = compact(data); + const displayedRowCount = collapsed ? 1 : cleanedData.length; + const displayMoreButton = compact(sortedData).length > 1; return ( - - {data.slice(0, displayedRowCount).map((datum, index) => ( -
- {datum === null - ? '\u00A0' /* unbreakable space to avoid empty rows from collapsing in height */ - : datum} -
- ))} +
+
+ {compact(sortedData).length <= 1 + ? compact(sortedData) + .slice(0, displayedRowCount) + .map((datum, index) => ( +
+ {datum === null + ? '\u00A0' /* unbreakable space to avoid empty rows from collapsing in height */ + : datum} +
+ )) + : cleanedData + .slice(0, displayedRowCount) + .map((datum, index) => ( +
• {datum === null ? '\u00A0' : datum}
+ ))} +
{displayMoreButton ? (
{ setCollapsed(!collapsed); }} >
- {collapsed ? `${data.length - displayedRowCount} more` : 'Less'} + {collapsed ? `${cleanedData.length - displayedRowCount} ` : ''}
) : null} - +
); }); @@ -128,40 +149,50 @@ const participantsTableViewColumns = (onRowSelected, onAllRowsSelected, dirtyHac minWidth: 33, }, { Header: 'Participant ID', accessor: 'participantId' }, - { Header: 'Study Name', accessor: 'studyName' }, - { Header: 'Proband', accessor: 'isProband' }, - { Header: 'Vital Status', accessor: 'vitalStatus' }, + { + Header: 'Study Name', + accessor: 'studyName', + minWidth: 140, + }, + { Header: 'Proband', accessor: 'isProband', minWidth: 65 }, + { Header: 'Vital Status', accessor: 'vitalStatus', minWidth: 70 }, { Header: 'Diagnosis Category', accessor: 'diagnosisCategories', Cell: props => , field: 'diagnoses.diagnosis_category', + sortable: false, }, { Header: 'Diagnosis', accessor: 'diagnosis', Cell: props => , field: 'diagnoses.diagnosis', + minWidth: 175, + sortable: false, }, { Header: 'Age at Diagnosis (days)', accessor: 'ageAtDiagnosis', Cell: props => , field: 'diagnoses.age_at_event_days', + sortable: false, }, - { Header: 'Gender', accessor: 'gender', field: 'gender' }, + { Header: 'Gender', accessor: 'gender', field: 'gender', minWidth: 70 }, { Header: 'Family ID', accessor: 'familyId', field: 'family_id' }, { Header: 'Family Composition', accessor: 'familyCompositions', Cell: props => , field: 'family.family_compositions', + sortable: false, }, { Header: 'Files', accessor: 'filesCount', Cell: props => , field: 'files', + sortable: false, }, ]; @@ -201,10 +232,11 @@ class ParticipantsTable extends Component { const { loading, data, + dataExport, dataTotalCount, onFetchData, onClearSelected, - onRemoveFromCohort, + // onRemoveFromCohort, analyticsTracking = null, downloadName = 'data', selectedRows, @@ -217,9 +249,11 @@ class ParticipantsTable extends Component { const selectedRowsCount = allRowsSelected ? dataTotalCount : selectedRows.length; const projectId = arrangerProjectId; + /* const handleRemoveFromCohort = () => { onRemoveFromCohort(); }; + */ return ( @@ -229,10 +263,11 @@ class ParticipantsTable extends Component { {/* Analyze in Cavatica */} {/* Download */} + {/* handleRemoveFromCohort()} disabled={allRowsSelected || selectedRows.length === 0} - /> + />*/} {selectedRowsCount > 0 ? ( @@ -277,7 +312,7 @@ class ParticipantsTable extends Component { this.setState({ columns: cols }); }} /> - export + export diff --git a/src/components/CohortBuilder/ParticipantsTableView/index.js b/src/components/CohortBuilder/ParticipantsTableView/index.js index de2d4812e..600a179f8 100644 --- a/src/components/CohortBuilder/ParticipantsTableView/index.js +++ b/src/components/CohortBuilder/ParticipantsTableView/index.js @@ -45,7 +45,7 @@ const ParticipantsTableView = ({ api={api} queries={[participantsQuery(sqon, sort, pageSize, pageIndex)]} > - {({ isLoading, data, error }) => { + {({ data, error }) => { if (error) { return ( @@ -54,6 +54,7 @@ const ParticipantsTableView = ({ ); } + const dataTotalCount = data[0] ? data[0].total : 0; const isRowSelected = node => allRowsSelected || selectedRows.some(row => row === node.participantId); @@ -61,61 +62,83 @@ const ParticipantsTableView = ({ ? data[0].nodes.map(node => ({ ...node, selected: isRowSelected(node) })) : []; - const selectionSQON = selectedRows.length - ? { - op: 'and', - content: [{ op: 'in', content: { field: 'kf_id', value: selectedRows } }], - } - : sqon; - return ( - - { - const sorting = sorted - .filter(s => SORTABLE_FIELDS_MAPPING.has(s.id)) - .map(s => ({ - field: SORTABLE_FIELDS_MAPPING.get(s.id), - order: s.desc ? 'desc' : 'asc', - })); - setPageIndex(page); - setPageSize(pageSize); - setSort(sorting); - }} - onRowSelected={(checked, row) => { - const rowId = row.participantId; - if (checked) { - setSelectedRows(s => s.concat(rowId)); - return; - } - setSelectedRows(s => s.filter(row => row !== rowId)); - }} - onAllRowsSelected={checked => { - // don't keep individual rows selected when "select all" is checked - // to avoid having them selected after "unselect all" - setAllRowsSelected(s => checked); - setSelectedRows(s => []); - }} - onClearSelected={() => { - setAllRowsSelected(s => false); - setSelectedRows(s => []); - }} - onRemoveFromCohort={() => { - // remove the selected participants from the cohort - onRemoveFromCohort(selectedRows); - // clear selection - setAllRowsSelected(s => false); - setSelectedRows(s => []); - }} - selectedRows={selectedRows} - allRowsSelected={allRowsSelected} - /> - + + {({ isLoading, data, error }) => { + if (error) { + return ( + + + + ); + } + + const dataExport = data[0] ? data[0].nodes.map(node => ({ ...node })) : []; + + const selectionSQON = selectedRows.length + ? { + op: 'and', + content: [{ op: 'in', content: { field: 'kf_id', value: selectedRows } }], + } + : sqon; + + return ( + + { + const sorting = sorted + .filter(s => SORTABLE_FIELDS_MAPPING.has(s.id)) + .map(s => ({ + field: SORTABLE_FIELDS_MAPPING.get(s.id), + order: s.desc ? 'desc' : 'asc', + })); + setPageIndex(page); + setPageSize(pageSize); + setSort(sorting); + }} + onRowSelected={(checked, row) => { + const rowId = row.participantId; + if (checked) { + setSelectedRows(s => s.concat(rowId)); + return; + } + setSelectedRows(s => s.filter(row => row !== rowId)); + }} + onAllRowsSelected={checked => { + // don't keep individual rows selected when "select all" is checked + // to avoid having them selected after "unselect all" + setAllRowsSelected(s => checked); + setSelectedRows(s => []); + }} + onClearSelected={() => { + setAllRowsSelected(s => false); + setSelectedRows(s => []); + }} + onRemoveFromCohort={() => { + // remove the selected participants from the cohort + onRemoveFromCohort(selectedRows); + // clear selection + setAllRowsSelected(s => false); + setSelectedRows(s => []); + }} + // onClickExport={() => onClickExportButton()} + selectedRows={selectedRows} + allRowsSelected={allRowsSelected} + /> + + ); + }} + ); }} diff --git a/src/components/CohortBuilder/SQONProvider.js b/src/components/CohortBuilder/SQONProvider.js index afcf1b938..f51db0aa3 100644 --- a/src/components/CohortBuilder/SQONProvider.js +++ b/src/components/CohortBuilder/SQONProvider.js @@ -27,6 +27,7 @@ const SQONProvider = compose( }, ], activeIndex: 0, + lastAction: null, uid: null, }; const didMount = s => { @@ -70,7 +71,12 @@ const SQONProvider = compose( /** * utilities for children **/ - const setActiveSqonIndex = s => index => s.setState({ activeIndex: index }); + const setActiveSqonIndex = s => index => { + + console.log('+ setActiveSqonIndex state ' + JSON.stringify(s)) + + s.setState({ activeIndex: index }); + } const setSqons = s => (sqons = s.state.sqons) => s.setState({ sqons }); // takes care of putting a new sqon into place while preserving references diff --git a/src/components/CohortBuilder/SaveVirtualStudiesModalContent.js b/src/components/CohortBuilder/SaveVirtualStudiesModalContent.js index 6e3d9afa5..69bff8d63 100644 --- a/src/components/CohortBuilder/SaveVirtualStudiesModalContent.js +++ b/src/components/CohortBuilder/SaveVirtualStudiesModalContent.js @@ -33,7 +33,7 @@ export default ({ onSubmit, submitDisabled }) => {
)} diff --git a/src/components/CohortBuilder/SearchAll/QueryResults.js b/src/components/CohortBuilder/SearchAll/QueryResults.js index 2a1685ce4..a2fb4f587 100644 --- a/src/components/CohortBuilder/SearchAll/QueryResults.js +++ b/src/components/CohortBuilder/SearchAll/QueryResults.js @@ -11,7 +11,7 @@ const ResultsContainer = styled('div')` display: none; top: 100%; - width: 270px; + width: 290px; left: 0px; border: 1px solid ${({ theme }) => theme.greyScale5}; diff --git a/src/components/CohortBuilder/SqonBuilder/index.js b/src/components/CohortBuilder/SqonBuilder/index.js index 800ff4324..991b38cea 100644 --- a/src/components/CohortBuilder/SqonBuilder/index.js +++ b/src/components/CohortBuilder/SqonBuilder/index.js @@ -14,7 +14,14 @@ import { ModalContentSection, ARRANGER_API_PARTICIPANT_INDEX_NAME, } from '../common'; +import {SQONdiff} from '../../Utils' import { ModalFooter } from 'components/Modal'; +import { trackUserInteraction, TRACKING_EVENTS } from 'services/analyticsTracking'; + + +const trackSQONaction = ({category, action, label}) => { + trackUserInteraction({category, action, label: JSON.stringify(label)}) +} const extendedMappingToDisplayNameMap = memoize(extendedMapping => extendedMapping.reduce((acc, { field, displayName }) => { @@ -61,8 +68,23 @@ const SqonBuilder = compose( withApi, injectState, )(({ api, onChange, state, effects, ...rest }) => { + const handleAction = async action => { + + // track the existing and operated on sqon actions + trackSQONaction({ + category: TRACKING_EVENTS.categories.cohortBuilder.sqonBuilder, + action: `${action.eventKey} - ${Object.keys(action.eventDetails)[0]}`, + label: { + [action.eventKey.toLowerCase()]: SQONdiff(rest.syntheticSqons, action.newSyntheticSqons), + sqon_result: { + sqon: action.newSyntheticSqons, + eventDetails: action.eventDetails + } + }}) + if (action.eventKey === 'CLEAR_ALL') { + delete rest['activeSqonIndex']; effects.setModal({ title: 'Clear All Queries', classNames: { @@ -83,6 +105,7 @@ const SqonBuilder = compose( onChange(action); } }; + return ( ( + FieldOpModifierContainer={props => { + return ( - )} + )}} fieldDisplayNameMap={extendedMappingToDisplayNameMap(extendedMapping)} onChange={handleAction} {...rest} + // activeSqonIndex={1} /> ) } diff --git a/src/components/CohortBuilder/Summary/SurvivalChart.js b/src/components/CohortBuilder/Summary/SurvivalChart.js index bb0629732..f7069a746 100644 --- a/src/components/CohortBuilder/Summary/SurvivalChart.js +++ b/src/components/CohortBuilder/Summary/SurvivalChart.js @@ -1,16 +1,15 @@ import React from 'react'; import PropTypes from 'prop-types'; import styled from 'react-emotion'; -import { compose } from 'recompose'; import { isEqual, defaults, get, has } from 'lodash'; import { renderPlot } from '@oncojs/survivalplot/index.dist'; import { CohortCard } from './ui'; -import { withApi } from 'services/api'; import { fetchSurvivalData } from 'services/arranger'; import md5 from 'md5'; import CardContent from 'uikit/Card/CardContent'; import { SizeProvider } from 'components/Utils'; -import PromptMessage from 'uikit/PromptMessage'; +import { compose } from 'recompose'; +import { withApi } from 'services/api'; const SurvivalChartWrapper = styled('div')` margin-top: 10px; @@ -185,7 +184,7 @@ const StyledSurvivalPlot = styled(SurvivalPlot)` } `; -class SurvivalChart extends React.Component { +export class SurvivalChart extends React.Component { constructor(props) { super(props); @@ -324,10 +323,4 @@ class SurvivalChart extends React.Component { } } -// export default compose(withApi)(SurvivalChart); - -export default () => ( - - Visualization coming soon} /> - -); +export default compose(withApi)(SurvivalChart); diff --git a/src/components/CohortBuilder/Summary/index.js b/src/components/CohortBuilder/Summary/index.js index 1b964fdd9..cedc6c229 100644 --- a/src/components/CohortBuilder/Summary/index.js +++ b/src/components/CohortBuilder/Summary/index.js @@ -72,12 +72,12 @@ const Summary = ({ - - - {' '} + + + {/* diff --git a/src/components/CohortBuilder/common.js b/src/components/CohortBuilder/common.js index b0ff429eb..400eb59b8 100644 --- a/src/components/CohortBuilder/common.js +++ b/src/components/CohortBuilder/common.js @@ -1,5 +1,6 @@ import React from 'react'; import styled from 'react-emotion'; +import { compose, withState } from 'recompose'; import Row from 'uikit/Row'; import { Div } from 'uikit/Core'; @@ -54,7 +55,9 @@ const Footer = styled(Row)` padding: 5px; `; -export const FieldFilterContainer = ({ +export const FieldFilterContainer = compose( + withState('isDisabled', 'setDisabled', true), +)(({ children, onSubmit: onSqonSubmit, onCancel, @@ -62,7 +65,23 @@ export const FieldFilterContainer = ({ applyEnabled = true, showHeader = true, className = '', -}) => ( + isDisabled, + setDisabled, +}) => { + const hasSelectedElements = (handler) => { + const checkboxes = handler.parentElement.parentElement.querySelectorAll('input[type="checkbox"]:checked'); + const toggles = handler.parentElement.parentElement.querySelectorAll('div.toggle-button-option.active'); + let ranges = 0; + const rangeNodes = handler.parentElement.parentElement.parentElement.querySelectorAll('div.rangeInputContainer input.rangeFilterInput:not([disabled])'); + rangeNodes.forEach((input, key) => { + const node = rangeNodes.item(key); + if (node.value.length > 0 && node.value > -1) { + ranges++; + } + }) + return setDisabled( (checkboxes.length < 1 && toggles.length < 1 && (ranges < rangeNodes.length || rangeNodes.length === 0) ) ); + } + return ( {showHeader && (
@@ -72,14 +91,27 @@ export const FieldFilterContainer = ({
)} - {children} + { + const eventTarget = e.target; + setTimeout(() => { + hasSelectedElements(eventTarget) + }, 100) + }} + onKeyUp={(e) => { + const eventTarget = e.target; + setTimeout(() => { + hasSelectedElements(eventTarget) + }, 100) + }} + >{children}
Cancel - + Apply
-); +)}); export const ARRANGER_API_PARTICIPANT_INDEX_NAME = 'participant'; diff --git a/src/components/CohortBuilder/index.js b/src/components/CohortBuilder/index.js index f85068fc7..0fa8e0e40 100644 --- a/src/components/CohortBuilder/index.js +++ b/src/components/CohortBuilder/index.js @@ -9,11 +9,11 @@ import urlJoin from 'url-join'; import saveSet from '@arranger/components/dist/utils/saveSet'; import graphql from 'services/arranger'; import { withApi } from 'services/api'; -import { createNewVirtualStudy } from 'services/virtualStudies'; +import { createNewVirtualStudy, deleteVirtualStudy } from 'services/virtualStudies'; import { H1 } from 'uikit/Headings'; import Tooltip from 'uikit/Tooltip'; -import { TealActionButton } from 'uikit/Button.js'; +import { WhiteButton } from 'uikit/Button.js'; import Row from 'uikit/Row'; import Categories from './Categories'; import ContentBar from './ContentBar'; @@ -22,26 +22,21 @@ import SqonBuilder from './SqonBuilder'; import SQONProvider from './SQONProvider'; import VirtualStudyListProvider from './VirtualStudyListProvider'; import SaveVirtualStudiesModalContent from './SaveVirtualStudiesModalContent'; -import SaveIcon from 'icons/SaveIcon'; -import ShareQuery from 'components/ShareSaveQuery/ShareQuery'; +import DeleteVirtualStudiesModalContent from './DeleteVirtualStudiesModalContent'; +import ShareQuery from 'components/LoadShareSaveDeleteQuery/ShareQuery'; +import DeleteQuery from 'components/LoadShareSaveDeleteQuery/DeleteQuery'; +import LoadQuery from 'components/LoadShareSaveDeleteQuery/LoadQuery'; import PromptMessage from 'uikit/PromptMessage'; +import OpenMenuIcon from 'react-icons/lib/fa/folder'; +import SaveIcon from 'react-icons/lib/fa/file'; const Container = styled('div')` width: 100%; background-color: ${({ theme }) => theme.backgroundGrey}; `; -const Heading = styled(H1)` +const HeadingWithStudy = styled(H1)` color: #2b388f; - margin-right: 20px; - - &:after { - content: 'beta'; - vertical-align: super; - font-size: 13px; - text-transform: uppercase; - font-weight: 500; - } `; const FullWidthWhite = styled('div')` @@ -72,6 +67,10 @@ const SaveButtonText = styled('span')` margin-left: 5px; `; +let AlignedSaveIcon = styled(SaveIcon)` + margin-top: -2px; +`; + const CohortBuilder = compose( withApi, injectState, @@ -100,15 +99,12 @@ const CohortBuilder = compose( const sqonBuilderSqonsChange = ({ newSyntheticSqons }) => { setSqons(newSyntheticSqons); }; - const sqonBuilderActiveSqonSelect = ({ index }) => { - setActiveSqonIndex(index); + const sqonBuilderActiveSqonSelect = (props) => { + setActiveSqonIndex(props.index); }; const categoriesSqonUpdate = newSqon => { mergeSqonToActiveIndex(newSqon); }; - const onVirtualStudySelectChange = e => { - onVirtualStudySelect(e.target.value); - }; const saveStudy = async studyName => { if (!(studyName || '').length) { throw new Error('Study name cannot be empty'); @@ -127,7 +123,7 @@ const CohortBuilder = compose( setVirtualStudy(newStudyId); }; - const onSaveClick = () => { + const onSaveAsClick = () => { effects.setModal({ title: 'Save as Virtual Study', classNames: { @@ -143,6 +139,45 @@ const CohortBuilder = compose( }); }; + const deleteStudy = async (deleteStudyCallback) => { + if (!(selectedVirtualStudy || '').length) { + throw new Error('Study name cannot be empty'); + } + await deleteVirtualStudy({ + loggedInUser, + api, + name: selectedVirtualStudy, + }); + await deleteStudyCallback(selectedVirtualStudy); + await refetchVirtualStudies(); + setSqons([{"op":"and","content":[]}]); + setVirtualStudy(''); + }; + + const findSelectedStudy = () => { + return virtualStudies.filter((study) => { + return study.id === selectedVirtualStudy; + }).shift(); + }; + + const onDeleteClick = (deleteStudyCallback) => { + const study = findSelectedStudy(); + effects.setModal({ + title: `Delete Virtual Study`, + classNames: { + modal: css` + max-width: 800px; + `, + }, + component: ( + deleteStudy(deleteStudyCallback)} + /> + ), + }); + }; + const createNewSqonExcludingParticipants = participantIds => { saveSet({ type: 'participant', @@ -191,7 +226,8 @@ const CohortBuilder = compose( window.location.origin, history.createHref({ ...history.location, search: `id=${id}` }), ); - + const selectedStudy = findSelectedStudy(); + const syntheticSqonIsEmpty = JSON.stringify(syntheticSqons) === '[{"op":"and","content":[]}]' return ( - Explore Data - + { selectedStudy ? `Virtual Study: ${selectedStudy.name}` : 'Explore Data' } - Create a new virtual study}> + { setSqons([{"op":"and","content":[]}]); onVirtualStudySelect(''); }} > - + - Save virtual study - - {sharingEnabled ? ( + New + + + + + Open a saved virtual study}> + + + + + + { selectedVirtualStudy ? 'Save as a new virtual study' : 'Save a virtual study' }}> + + + + + { selectedVirtualStudy ? 'Save As' : 'Save' } + + + + + + Delete this virtual study}> + + + + + Share this virtual study}> Promise.resolve({ id: selectedVirtualStudy })} /> - ) : ( - Please save this study to enable sharing}> - - - )} + diff --git a/src/components/EntityPage/File/Download.js b/src/components/EntityPage/File/Download.js index b67ccc733..50f0c77d5 100644 --- a/src/components/EntityPage/File/Download.js +++ b/src/components/EntityPage/File/Download.js @@ -30,7 +30,7 @@ const ControlledDownload = styled('div')` `; const StyledDownloadButton = styled(DownloadButton)` - height: 27px; + height: 30px; padding: 0 13px; align-items: center; margin-right: 10px; diff --git a/src/components/EntityPage/File/participantBiospecimenTable.js b/src/components/EntityPage/File/participantBiospecimenTable.js index f02269099..c2237c863 100644 --- a/src/components/EntityPage/File/participantBiospecimenTable.js +++ b/src/components/EntityPage/File/participantBiospecimenTable.js @@ -2,13 +2,13 @@ import _ from 'lodash'; import { pickData } from './utils'; export const particpantBiospecimenColumns = [ - { Header: 'Participant ID', accessor: 'participant_id' }, + { Header: 'Participant ID', accessor: 'participant_id', minWidth: 80 }, { Header: 'External ID', accessor: 'external_id' }, - { Header: 'Study Name', accessor: 'study_name' }, - { Header: 'Proband', accessor: 'proband' }, + { Header: 'Study Name', accessor: 'study_name', minWidth: 150 }, + { Header: 'Proband', accessor: 'proband', minWidth: 50 }, { Header: 'Biospecimen ID', accessor: 'biospecimen_id' }, { Header: 'Analyte Type', accessor: 'analyte_type' }, - { Header: 'Tissue Type', accessor: 'tissue_type' }, + { Header: 'Tissue Type', accessor: 'tissue_type', minWidth: 180 }, { Header: 'Age at Sample Acquisition', accessor: 'age_at_sample_acquisition' }, ]; diff --git a/src/components/FileRepo/CustomColumns/ActionsColumn.js b/src/components/FileRepo/CustomColumns/ActionsColumn.js index a97e048e9..6a9b3fe2c 100644 --- a/src/components/FileRepo/CustomColumns/ActionsColumn.js +++ b/src/components/FileRepo/CustomColumns/ActionsColumn.js @@ -1,5 +1,6 @@ import * as React from 'react'; import Component from 'react-component-component'; +import styled from 'react-emotion'; import { get, intersection } from 'lodash'; import { compose } from 'recompose'; import { withTheme } from 'emotion-theming'; @@ -15,12 +16,19 @@ import Tooltip from 'uikit/Tooltip'; import { arrangerProjectId } from 'common/injectGlobals'; import { trackUserInteraction, TRACKING_EVENTS } from 'services/analyticsTracking'; import { DCF } from 'common/constants'; +import CavaticaLogo from 'icons/CavaticaLogo'; +import CavaticaOpenModalWrapper from 'components/cavatica/CavaticaOpenModalWrapper'; const enhance = compose( withApi, withTheme, ); +const ButtonWrapper = styled(Column)` + flex: 1; + align-items: center; +`; + const FenceDownloadButton = ({ fence, kfId, theme }) => // DCF files currently aren't available to download, so we show tooltip and grey out button fence === DCF ? ( @@ -56,7 +64,7 @@ const FenceDownloadButton = ({ fence, kfId, theme }) => const ActionItems = ({ value, fence, hasAccess, theme }) => { return ( - + {hasAccess ? ( ) : ( @@ -68,7 +76,14 @@ const ActionItems = ({ value, fence, hasAccess, theme }) => { )} - + + + {hasAccess && ( + + + + )} + ); }; diff --git a/src/components/FileRepo/FileRepo.js b/src/components/FileRepo/FileRepo.js index ecf159b12..d3a576735 100644 --- a/src/components/FileRepo/FileRepo.js +++ b/src/components/FileRepo/FileRepo.js @@ -14,8 +14,8 @@ import { Arranger, CurrentSQON, Table } from '@arranger/components/dist/Arranger import { replaceSQON } from '@arranger/components/dist/SQONView/utils'; import SQONURL from 'components/SQONURL'; -import SaveQuery from 'components/ShareSaveQuery/SaveQuery'; -import ShareQuery from 'components/ShareSaveQuery/ShareQuery'; +import SaveQuery from 'components/LoadShareSaveDeleteQuery/SaveQuery'; +import ShareQuery from 'components/LoadShareSaveDeleteQuery/ShareQuery'; import { FileRepoStats, FileRepoStatsQuery } from 'components/Stats'; import ArrangerConnectionGuard from 'components/ArrangerConnectionGuard'; import AggregationSidebar from 'components/FileRepo/AggregationSidebar'; @@ -55,7 +55,7 @@ const customTableTypes = { ), }; -const TableHeaderContent = ({ sqon, disabled, ...props }) => { +const TableHeaderContent = ({ sqon, disabled, selectedTableRows, ...props }) => { return ( { } > {disabled ? ( diff --git a/src/components/FileRepo/customTableColumns.js b/src/components/FileRepo/customTableColumns.js index 785d0b07b..e1d07a4fa 100644 --- a/src/components/FileRepo/customTableColumns.js +++ b/src/components/FileRepo/customTableColumns.js @@ -1,6 +1,5 @@ import * as React from 'react'; import { ActionsColumn, FileIdColumn } from './CustomColumns'; -import DownloadIcon from 'icons/DownloadIcon'; export default ({ theme, fenceAcls }) => [ { @@ -15,9 +14,9 @@ export default ({ theme, fenceAcls }) => [ index: 13, content: { accessor: 'kf_id', - Header: () => , + Header: () => Actions, Cell: props => , - width: 40, + width: 80, sortable: false, resizable: false, }, diff --git a/src/components/FileRepo/ui.js b/src/components/FileRepo/ui.js index 8544004bb..54b89ade9 100644 --- a/src/components/FileRepo/ui.js +++ b/src/components/FileRepo/ui.js @@ -112,6 +112,9 @@ export const ArrangerContainer = styled(Row)` ${arrangerValueText}; color: ${({ theme }) => theme.greyScale1}; } + & .rt-td { + white-space: normal; + } } `; diff --git a/src/components/LoadShareSaveDeleteQuery/DeleteQuery.js b/src/components/LoadShareSaveDeleteQuery/DeleteQuery.js new file mode 100644 index 000000000..19250ae8b --- /dev/null +++ b/src/components/LoadShareSaveDeleteQuery/DeleteQuery.js @@ -0,0 +1,53 @@ +import React from 'react'; +import { injectState } from 'freactal'; +import DeleteIcon from 'react-icons/lib/fa/trash'; +import { Trans } from 'react-i18next'; +import { trackUserInteraction, TRACKING_EVENTS } from '../../services/analyticsTracking'; +import { WhiteButton } from 'uikit/Button'; +import styled from 'react-emotion'; + + +const trackQueryDelete = channel => { + trackUserInteraction({ + category: TRACKING_EVENTS.categories.fileRepo.dataTable, + action: TRACKING_EVENTS.actions.query.delete, + label: channel, + }); +}; + +let AlignedDeleteIcon = styled(DeleteIcon)` + margin-top: -2px; +`; + +export default injectState( + class extends React.Component { + state = { error: null }; + + delete = async (selectedVirtualStudy) => { + try { + trackQueryDelete(selectedVirtualStudy) + } catch (error) { + console.log(error) + this.setState({ error: true }); + } + }; + + render() { + console.log(this.props); + const { disabled } = this.props; + return ( + {} + : () => { this.props.handleDelete(this.delete); } + } + > + +  delete + + ); + } + }, +); diff --git a/src/components/LoadShareSaveDeleteQuery/LoadQuery.js b/src/components/LoadShareSaveDeleteQuery/LoadQuery.js new file mode 100644 index 000000000..5f507bc3a --- /dev/null +++ b/src/components/LoadShareSaveDeleteQuery/LoadQuery.js @@ -0,0 +1,89 @@ +import React from 'react'; +import { injectState } from 'freactal'; +import OpenIcon from 'react-icons/lib/fa/folder-open'; +import Tooltip from 'uikit/Tooltip'; +import { Trans } from 'react-i18next'; +import { WhiteButton } from 'uikit/Button'; +import styled from 'react-emotion'; + +const ItemRow = styled('div')` + padding: 2px 10px; + display: flex; + align-items: center; + cursor: pointer; + &:hover { + background-color: ${({ theme }) => theme.greyScale6}; + } +`; + +const AlignedLoadIcon = styled(OpenIcon)` + margin-top: -2px; +`; + +export default injectState( + class extends React.Component { + state = { loaded: false, error: null, open: false, studies: [] }; + + open = async id => { + let { handleOpen } = this.props; + try { + this.setState({ open: false }); + handleOpen(id); + } catch (error) { + this.setState({ error: true }); + } + }; + + render() { + const { disabled, studies, selection } = this.props; + return ( + {} + : () => { + this.setState({ open: true }); + } + } + > + { + this.setState({ open: false }); + }} + interactive + html={ +
+ + {studies.map(({ id, name }) => { + if (!selection || selection.id !== id) { + return ( + { + return this.open(id); + }} + > + {name} + + ); + } + return null; + })} + +
+ } + > + +  open +
+
+ ); + } + }, +); diff --git a/src/components/ShareSaveQuery/SaveQuery.js b/src/components/LoadShareSaveDeleteQuery/SaveQuery.js similarity index 100% rename from src/components/ShareSaveQuery/SaveQuery.js rename to src/components/LoadShareSaveDeleteQuery/SaveQuery.js diff --git a/src/components/ShareSaveQuery/ShareQuery.js b/src/components/LoadShareSaveDeleteQuery/ShareQuery.js similarity index 98% rename from src/components/ShareSaveQuery/ShareQuery.js rename to src/components/LoadShareSaveDeleteQuery/ShareQuery.js index 4a781a3ec..99145314f 100644 --- a/src/components/ShareSaveQuery/ShareQuery.js +++ b/src/components/LoadShareSaveDeleteQuery/ShareQuery.js @@ -25,6 +25,11 @@ const trackQueryShare = channel => { }); }; + +let AlignedShareIcon = styled(ShareIcon)` + margin-top: -2px; +`; + let Bubble = styled(`span`)` background-color: ${({ theme }) => theme.primary}; color: white; @@ -173,7 +178,7 @@ export default injectState( } > - +  share diff --git a/src/components/ShareSaveQuery/shortenApi.js b/src/components/LoadShareSaveDeleteQuery/shortenApi.js similarity index 80% rename from src/components/ShareSaveQuery/shortenApi.js rename to src/components/LoadShareSaveDeleteQuery/shortenApi.js index 8766f8439..cbc1572c7 100644 --- a/src/components/ShareSaveQuery/shortenApi.js +++ b/src/components/LoadShareSaveDeleteQuery/shortenApi.js @@ -2,6 +2,16 @@ import urlJoin from 'url-join'; import sqonToName from 'common/sqonToName'; import { shortUrlApi } from 'common/injectGlobals'; +export const shortenApiDelete = ({ loggedInUser, api, id }) => { + return api({ + url: urlJoin(shortUrlApi, id), + method: 'DELETE', + body: JSON.stringify({ + userid: (loggedInUser || {}).egoId || 'anonymous', + }), + }); +}; + export default ({ stats, queryName, sqon, loggedInUser, api, sharedPublicly = false }) => { let { Files, Participants, Families, Size } = stats; let alias = queryName || sqonToName({ filters: sqon }); diff --git a/src/components/ShareSaveQuery/ui.js b/src/components/LoadShareSaveDeleteQuery/ui.js similarity index 100% rename from src/components/ShareSaveQuery/ui.js rename to src/components/LoadShareSaveDeleteQuery/ui.js diff --git a/src/components/SQONURL.js b/src/components/SQONURL.js index 6392fa65c..38ab38212 100644 --- a/src/components/SQONURL.js +++ b/src/components/SQONURL.js @@ -1,7 +1,7 @@ import React from 'react'; import { Route } from 'react-router-dom'; import { parse, stringify } from 'query-string'; -import { addSqonHistory } from 'services/usersnap'; + export default props => ( @@ -11,7 +11,6 @@ export default props => ( return props.render({ sqon: search.sqon, setSQON: sqon => { - addSqonHistory(sqon); p.history.push({ ...p.location, search: stringify({ ...search, sqon: JSON.stringify(sqon) }), diff --git a/src/components/UserProfile/Account.js b/src/components/UserProfile/Account.js index 2635cb71a..89b25f87b 100644 --- a/src/components/UserProfile/Account.js +++ b/src/components/UserProfile/Account.js @@ -16,6 +16,15 @@ import { Box } from 'uikit/Core'; import Row from 'uikit/Row'; import Column from 'uikit/Column'; import Input from 'uikit/Input'; +import styled from 'react-emotion'; +import ExternalLink from 'uikit/ExternalLink'; +import { gen3WebRoot } from 'common/injectGlobals'; + +const CardBody = styled('div')` + margin: -15px 0 15px 0; + font-family: Montserrat, sans-serif, sans-serif; + font-size: 13px; +`; const SettingsSection = x => ; @@ -45,6 +54,14 @@ export default compose( Data Repository Integrations + + The Kids First DRC provides the ability to integrate across different data repositories for + pediatric research. By connecting to each integration (powered by{' '} + Gen3), you will immediately have the ability + to analyze the data available from these repositories in Cavatica through this portal. + Please remember that it is your responsibility to follow any data use limitations with + controlled access data. + diff --git a/src/components/UserProfile/UserIntegrations/FenceIntegrationItem.js b/src/components/UserProfile/UserIntegrations/FenceIntegrationItem.js index 36be10a3c..a8edb5c70 100644 --- a/src/components/UserProfile/UserIntegrations/FenceIntegrationItem.js +++ b/src/components/UserProfile/UserIntegrations/FenceIntegrationItem.js @@ -27,9 +27,37 @@ import LoadingSpinner from 'uikit/LoadingSpinner'; import { trackUserInteraction, analyticsTrigger, + setUserDimension, TRACKING_EVENTS, } from 'services/analyticsTracking'; +const trackFenceAction = ({ fence, fenceDetails, category, action, label }) => { + if (fence) { + let gaDimension = null; + + switch (fence) { + case 'gen3': + // authorizedStudies + gaDimension = '5'; + break; + case 'cavatica': + // userCavaticaProjects + gaDimension = '6'; + break; + case 'dcf': + // userDCFdetails + gaDimension = '7'; + break; + default: + break; + } + + setUserDimension(`dimension${gaDimension}`, fenceDetails); + } + + trackUserInteraction({ category, action, label }); +}; + const enhanceActions = compose( withApi, injectState, @@ -79,6 +107,13 @@ const disconnect = async ({ fence, api, setConnecting, effects }) => { await deleteFenceTokens(api, fence); await effects.setIntegrationToken(fence, null); await effects.removeFenceConnection(fence); + trackFenceAction({ + fence, + fenceDetails: '', + category: TRACKING_EVENTS.categories.user.profile, + action: TRACKING_EVENTS.actions.integration.disconnected, + label: TRACKING_EVENTS.labels[fence] ? TRACKING_EVENTS.labels[fence] : fence, + }); setConnecting(false); }; @@ -88,7 +123,7 @@ const connect = ({ fence, api, setConnecting, effects }) => { type: 'recording', uiArea: TRACKING_EVENTS.categories.user.profile, action: TRACKING_EVENTS.actions.integration.init, - label: TRACKING_EVENTS.labels.gen3, + label: TRACKING_EVENTS.labels[fence] ? TRACKING_EVENTS.labels[fence] : fence, }); setConnecting(true); fenceConnect(api, fence) @@ -108,19 +143,21 @@ const connect = ({ fence, api, setConnecting, effects }) => {
), }); - trackUserInteraction({ + trackFenceAction({ + fence, + fenceDetails: JSON.stringify(details), category: TRACKING_EVENTS.categories.user.profile, action: TRACKING_EVENTS.actions.integration.connected, - label: TRACKING_EVENTS.labels.gen3, + label: TRACKING_EVENTS.labels[fence] ? TRACKING_EVENTS.labels[fence] : fence, }); }) .catch(err => { console.log('err: ', err); setConnecting(false); - trackUserInteraction({ + trackFenceAction({ category: TRACKING_EVENTS.categories.user.profile, action: TRACKING_EVENTS.actions.integration.failed, - label: TRACKING_EVENTS.labels.gen3, + label: TRACKING_EVENTS.labels[fence] ? TRACKING_EVENTS.labels[fence] : fence, }); }); }; diff --git a/src/components/UserProfile/UserIntegrations/Items/DcfIntegration.js b/src/components/UserProfile/UserIntegrations/Items/DcfIntegration.js index 4a3737dca..12c748144 100644 --- a/src/components/UserProfile/UserIntegrations/Items/DcfIntegration.js +++ b/src/components/UserProfile/UserIntegrations/Items/DcfIntegration.js @@ -2,26 +2,35 @@ import React from 'react'; import { Trans } from 'react-i18next'; import FenceIntegrationItem from 'components/UserProfile/UserIntegrations/FenceIntegrationItem'; -import ExternalLink from 'uikit/ExternalLink'; +import { css } from 'emotion'; import { DCF } from 'common/constants'; import dcfLogo from 'assets/logo-dcf.png'; import { dcfWebRoot } from 'common/injectGlobals'; +const linkCss = css({ + width: '140px', + textAlign: 'center', + display: 'flex', +}); + const description = () => { return ( - Access controlled data by connecting your account to the{' '} - - Data Commons Framework (DCF) - {' '} - using your NIH login credentials. + + Access select NCI controlled access data by connecting your account using your NIH login + credentials. + ); }; const logo = () => { - return Data Commons Framework Logo; + return ( + + Data Commons Framework Logo + + ); }; export default ({ ...props }) => { diff --git a/src/components/UserProfile/UserIntegrations/Items/Gen3Integration.js b/src/components/UserProfile/UserIntegrations/Items/Gen3Integration.js index d0bd81fa0..121930937 100644 --- a/src/components/UserProfile/UserIntegrations/Items/Gen3Integration.js +++ b/src/components/UserProfile/UserIntegrations/Items/Gen3Integration.js @@ -1,28 +1,36 @@ import React from 'react'; import { Trans } from 'react-i18next'; -import ExternalLink from 'uikit/ExternalLink'; - import FenceIntegrationItem from 'components/UserProfile/UserIntegrations/FenceIntegrationItem'; import { GEN3 } from 'common/constants'; import gen3Logo from 'assets/logo-gen3.svg'; import { gen3WebRoot } from 'common/injectGlobals'; +import { css } from 'emotion'; + +const linkCss = css({ + width: '140px', + textAlign: 'center', + marginTop: '15px', +}); const description = () => { return ( - Access controlled data by connecting your account to{' '} - - GEN3 Data Commons - {' '} - using your NIH login credentials. + + Access all released Kids First controlled access data by connecting your account using your + NIH login credentials. + ); }; const logo = () => { - return Gen3 Logo; + return ( + + Gen3 Logo + + ); }; export default ({ ...props }) => { diff --git a/src/components/Utils/index.js b/src/components/Utils/index.js index 50b8a20bc..c634240a4 100644 --- a/src/components/Utils/index.js +++ b/src/components/Utils/index.js @@ -1,7 +1,26 @@ import React from 'react'; import { SizeMe } from 'react-sizeme'; +import { isObject, transform, isEqual } from 'lodash'; export const SizeProvider = props => ; export const withSize = Wrapped => props => ( {({ size }) => } ); + + +/** + * Deep diff between two object, using lodash + * @param {Object} object Object compared + * @param {Object} base Object to compare with + * @return {Object} Return a new object who represent the diff + */ +export const SQONdiff = (object, base) => { + function changes(object, base) { + return transform(object, function(result, value, key) { + if (!isEqual(value, base[key])) { + result[key] = (isObject(value) && isObject(base[key])) ? changes(value, base[key]) : value; + } + }); + } + return changes(object, base); +} diff --git a/src/components/cavatica/CavaticaConnectModal.js b/src/components/cavatica/CavaticaConnectModal.js index 54633b141..ae419ff9d 100644 --- a/src/components/cavatica/CavaticaConnectModal.js +++ b/src/components/cavatica/CavaticaConnectModal.js @@ -37,7 +37,6 @@ const submitCavaticaToken = async ({ }) => { await setSecret({ service: CAVATICA, secret: token }); const userData = await getCavaticaUser(token); - if (userData) { setIntegrationToken(CAVATICA, JSON.stringify(userData)); trackUserInteraction({ @@ -132,9 +131,10 @@ const CavaticaConnectModal = withTheme( onChange={e => { setCavaticaKey(e.target.value); setInvalidToken(false); + trackUserInteraction({ category: TRACKING_EVENTS.categories.user.profile, - action: TRACKING_EVENTS.actions.integration.udpatedCreds, + action: 'Integration Credentials Updated ', label: TRACKING_EVENTS.labels.cavatica, }); }} diff --git a/src/components/cavatica/CavaticaCopyButton.js b/src/components/cavatica/CavaticaCopyButton.js index d6ff7c3bf..9bc0464ce 100644 --- a/src/components/cavatica/CavaticaCopyButton.js +++ b/src/components/cavatica/CavaticaCopyButton.js @@ -1,16 +1,22 @@ import * as React from 'react'; import { compose } from 'recompose'; -import { injectState } from 'freactal'; import { withTheme } from 'emotion-theming'; import styled from 'react-emotion'; import Row from 'uikit/Row'; -import { CAVATICA } from 'common/constants'; -import CavaticaConnectModal from './CavaticaConnectModal'; -import CavaticaCopyModal from './CavaticaCopyModal'; +import CavaticaOpenModalWrapper from './CavaticaOpenModalWrapper'; import { BigWhiteButton, disabledButtonStyles } from 'uikit/Button'; import CavaticaLogo from 'icons/CavaticaLogo'; +const ButtonContent = styled(Row)` + ${({ theme }) => theme.center}; + + padding: 0 5px; + & img { + width: 20px; + } +`; + const CavaticaButton = styled(BigWhiteButton)` background: ${({ theme, disabled }) => (disabled ? theme.greyScale8 : theme.primary)}; width: 100%; @@ -19,10 +25,10 @@ const CavaticaButton = styled(BigWhiteButton)` disabled ? theme.greyScale8 : theme.primaryLight}; } text-transform: uppercase; - font-weight: bold; + font-weight: 600; color: ${({ theme }) => theme.white}; text-align: center; - font-size: 13px; + font-size: 12px; letter-spacing: 0.2px; ${({ buttonStyle }) => (buttonStyle ? buttonStyle : null)} @@ -30,69 +36,17 @@ const CavaticaButton = styled(BigWhiteButton)` disabled ? disabledButtonStyles : null} `; -const ButtonContent = styled(Row)` - ${({ theme }) => theme.center}; - padding: 0 5px; - & img { - width: 20px; - } -`; - -const showConnectModal = ({ effects, props }) => { - effects.setModal({ - title: 'How to Connect to Cavatica', - component: ( - showCopyModal({ effects, props })} - onCancel={effects.unsetModal} - /> - ), - }); -}; - -const showCopyModal = ({ effects, props }) => { - effects.setModal({ - title: 'Copy Files to Cavatica Project', - component: ( - - ), - }); -}; - -const CavaticaCopyButton = compose( - injectState, - withTheme, -)( - ({ - state, - theme, - effects, - disabled, - buttonStyle, - buttonContentStyle, - text = 'Analyze in Cavatica', - ...props - }) => { - const connected = state.integrationTokens[CAVATICA]; - const clickAction = connected ? showCopyModal : showConnectModal; - return ( - clickAction({ effects, props })} - buttonStyle={buttonStyle} - disabled={disabled} - > - - - {text} - - - ); - }, -); - -export default CavaticaCopyButton; +export default compose(withTheme)(({ disabled, theme, text, buttonStyle, fileIds, ...props }) => ( + + + + + {text} + + + +)); diff --git a/src/components/cavatica/CavaticaCopyModal.js b/src/components/cavatica/CavaticaCopyModal.js index e97bbe361..58cdd772e 100644 --- a/src/components/cavatica/CavaticaCopyModal.js +++ b/src/components/cavatica/CavaticaCopyModal.js @@ -22,44 +22,6 @@ import { trackUserInteraction, TRACKING_EVENTS } from 'services/analyticsTrackin import { Paragraph } from 'uikit/Core'; -const enhance = compose( - provideCavaticaFileAuthorizations, - injectState, - withTheme, - withRouter, - withApi, - withState('addingProject', 'setAddingProject', false), - withState('selectedProjectData', 'setSelectedProjectData', null), - withState('filesSelected', 'setFilesSelected', []), - lifecycle({ - async componentDidMount() { - const { selectedTableRows, setFilesSelected, sqon, api } = this.props; - let ids = selectedTableRows; - if (!ids || ids.length === 0) { - ids = await graphql(api)({ - query: `query ($sqon: JSON){ - file { - aggregations(filters: $sqon) { - kf_id { - buckets { - key - } - } - } - } - }`, - variables: { - sqon, - }, - }).then(({ data: { file: { aggregations: { kf_id: { buckets } } } } }) => - buckets.map(({ key }) => key), - ); - } - setFilesSelected(ids); - }, - }), -); - const copyToProject = async ({ selectedFiles, selectedProject }) => { const promises = []; @@ -154,15 +116,52 @@ div.content { } `; +const enhance = compose( + provideCavaticaFileAuthorizations, + injectState, + withTheme, + withRouter, + withApi, + withState('addingProject', 'setAddingProject', false), + withState('selectedProjectData', 'setSelectedProjectData', null), + withState('filesSelected', 'setFilesSelected', []), + lifecycle({ + async componentDidMount() { + const { fileIds, setFilesSelected, sqon, api } = this.props; + let ids = fileIds; + if (!ids || ids.length === 0) { + ids = await graphql(api)({ + query: `query ($sqon: JSON){ + file { + aggregations(filters: $sqon) { + kf_id { + buckets { + key + } + } + } + } + }`, + variables: { + sqon, + }, + }).then(({ data: { file: { aggregations: { kf_id: { buckets } } } } }) => + buckets.map(({ key }) => key), + ); + } + setFilesSelected(ids); + }, + }), +); const CavaticaCopyModal = ({ state, effects: { unsetModal, setToast, closeToast }, theme, addingProject, + fileIds, filesSelected, setAddingProject, selectedProjectData, - selectedTableRows, setSelectedProjectData, ...props }) => { @@ -192,7 +191,7 @@ const CavaticaCopyModal = ({ Please{' '} - connect to GEN3 + connect to data repositories {' '} to lookup which files you are authorized to copy. diff --git a/src/components/cavatica/CavaticaOpenModalWrapper.js b/src/components/cavatica/CavaticaOpenModalWrapper.js new file mode 100644 index 000000000..9b7313841 --- /dev/null +++ b/src/components/cavatica/CavaticaOpenModalWrapper.js @@ -0,0 +1,60 @@ +import * as React from 'react'; +import { compose } from 'recompose'; +import { injectState } from 'freactal'; + +import { CAVATICA } from 'common/constants'; +import CavaticaConnectModal from './CavaticaConnectModal'; +import CavaticaCopyModal from './CavaticaCopyModal'; + +const showConnectModal = ({ effects, props }) => { + effects.setModal({ + title: 'How to Connect to Cavatica', + component: ( + showCopyModal({ effects, props })} + onCancel={effects.unsetModal} + /> + ), + }); +}; + +const showCopyModal = ({ effects, fileIds, sqon, props }) => { + effects.setModal({ + title: 'Copy Files to Cavatica Project', + component: ( + + ), + }); +}; + +export default compose(injectState)(({ state, effects, children, fileIds, ...props }) => { + const connected = state.integrationTokens[CAVATICA]; + const clickAction = connected ? showCopyModal : showConnectModal; + const sqon = + fileIds && fileIds.length > 0 + ? { + op: 'and', + content: [ + { + op: 'in', + content: { field: 'kf_id', value: fileIds }, + }, + ], + } + : props.sqon; + return ( +
clickAction({ effects, fileIds, sqon, props })} + style={{ cursor: 'pointer' }} + > + {children} +
+ ); +}); diff --git a/src/index.js b/src/index.js index 82f90e25e..03cb609d7 100644 --- a/src/index.js +++ b/src/index.js @@ -7,7 +7,6 @@ import { getAppElement } from './services/globalDomNodes.js'; import googleSDK from 'services/googleSDK'; import facebookSDK from 'services/facebookSDK'; import { initAnalyticsTracking } from 'services/analyticsTracking'; -import { init as initUsersnap } from 'services/usersnap'; import { maintenanceMode } from 'common/injectGlobals'; import MaintenancePage from './MaintenancePage'; import './i18n'; @@ -15,7 +14,7 @@ import './i18n'; initAnalyticsTracking(); googleSDK(); facebookSDK(); -initUsersnap(); + const render = Component => { ReactDOM.render(, getAppElement()); diff --git a/src/services/analyticsTracking/googleAnalytics.js b/src/services/analyticsTracking/googleAnalytics.js index ee9c96094..9f5ab1e8e 100644 --- a/src/services/analyticsTracking/googleAnalytics.js +++ b/src/services/analyticsTracking/googleAnalytics.js @@ -1,6 +1,5 @@ import ReactGA from 'react-ga'; import { gaTrackingID, devDebug } from 'common/injectGlobals'; -import { addInfo as addUserSnapInfo } from '../usersnap'; import history from '../history'; import { merge, isObject } from 'lodash'; import { TRACKING_EVENTS } from './trackingEventConstants'; @@ -26,7 +25,6 @@ export const initGATracking = () => { ReactGA.ga(function(tracker) { var clientId = tracker.get('clientId'); addStateInfo({ clientId }); - addUserSnapInfo({ gaClientId: clientId }); // GA Custom Dimension:index 3: clientId // ReactGA.set({ clientId: GAState.clientId }); diff --git a/src/services/analyticsTracking/trackingEventConstants.js b/src/services/analyticsTracking/trackingEventConstants.js index c2a0fcb19..6cdde086a 100644 --- a/src/services/analyticsTracking/trackingEventConstants.js +++ b/src/services/analyticsTracking/trackingEventConstants.js @@ -29,13 +29,19 @@ export const TRACKING_EVENTS = { file: 'Entity Page: File', participant: 'Entity Page: Participant', }, + virtualStudies: "Virtual Studies", fileRepo: { filters: 'File Repo: Filters', dataTable: 'File Repo: Data Table', actionsSidebar: 'File Repo: Actions Sidebar', }, + cohortBuilder:{ + 'sqonBuilder':"Cohort Builder: SQON Builder" + }, integration: { cavatica: 'Integration: Cavatica', + gen3: 'Integration: Gen3', + dcf: 'Integration: DCF', }, }, actions: { @@ -67,12 +73,14 @@ export const TRACKING_EVENTS = { integration: { init: 'Integration Connection INIT', connected: 'Integration Connection SUCCESS', + disconnected: 'Integration Connection DISCONNECTED', failed: 'Integration Connection FAILED', }, }, labels: { joinProcess: 'Join Process', gen3: 'Gen3', + dcf: 'DCF', cavatica: 'Cavatica', }, timings: { diff --git a/src/services/fence.js b/src/services/fence.js index 0a430224d..95d2a5f2c 100644 --- a/src/services/fence.js +++ b/src/services/fence.js @@ -9,7 +9,6 @@ import { gen3ApiRoot, dcfApiRoot, } from 'common/injectGlobals'; -import { setUserDimension } from 'services/analyticsTracking'; const RESPONSE_TYPE = 'code'; @@ -117,9 +116,6 @@ export const convertTokenToUser = accessToken => { export const getFenceUser = async (api, fence) => { let accessToken = await getAccessToken(api, fence); const user = convertTokenToUser(accessToken); - // track how many projects a use has access to - // dimensionr in GA is "authorizedStudies" - setUserDimension('dimension5', user.projects); return user; }; @@ -127,8 +123,6 @@ export const getFenceUser = async (api, fence) => { * Delete Tokens (Disconnect) */ export const deleteFenceTokens = async (api, fence) => { - // reset authorized studies tracking - setUserDimension('dimension5', 'none'); await api({ method: 'DELETE', url: `${fenceTokensUri}?fence=${fence}`, diff --git a/src/services/usersnap.js b/src/services/usersnap.js deleted file mode 100644 index 43801cb6a..000000000 --- a/src/services/usersnap.js +++ /dev/null @@ -1,61 +0,0 @@ -import scriptjs from 'scriptjs'; -import urlJoin from 'url-join'; -import { merge, pick } from 'lodash'; -import { UI_VERSION } from 'common/constants'; -import { getAppElement } from './globalDomNodes.js'; - -import { usersnapHost, usersnapId, arrangerProjectId } from 'common/injectGlobals'; - -let additionalUsersnapState = { - email: null, -}; - -let sqonHistory = []; -export const addSqonHistory = sqon => - sqonHistory.push({ - time: new Date(), - sqon, - }); - -let usersnapInfo = { - arrangerProjectId, - sqonHistory, - dataVersion: 'unreleased', // TODO add version when versioning is implemented - portalVersion: UI_VERSION, -}; -export const addInfo = obj => merge(usersnapInfo, obj); - -export const addStateInfo = obj => addInfo({ state: obj }); - -export const addLoggedInUser = loggedInUser => { - additionalUsersnapState.email = loggedInUser.email; - addStateInfo({ - loggedInUser: pick(loggedInUser, ['acceptedTerms', 'egoId', 'roles', '_id', 'googleScholarId']), - }); -}; - -window._usersnapconfig = { - lang: 'en', - tools: ['pen', 'blackout', 'note', 'highlight', 'arrow', 'comment'], - consoleRecorder: true, - label: false, - labelRequired: false, - labelPlaceholder: 'UserFeedback', - labelAllowCreate: false, - labelMultiSelect: false, - valign: 'bottom', - halign: 'right', - loadHandler: () => { - window.UserSnap.on( - 'beforeSend', - obj => (obj.addInfo = { ...usersnapInfo, reactAppRenderedDOM: getAppElement().innerHTML }), - ); - window.UserSnap.on('beforeOpen', () => { - if (additionalUsersnapState.email) { - window.UserSnap.setEmailBox(additionalUsersnapState.email); - } - }); - }, -}; - -export const init = () => scriptjs(urlJoin(usersnapHost, `${usersnapId}.js`)); diff --git a/src/services/virtualStudies.js b/src/services/virtualStudies.js index bd1e3bcac..8e303ed1d 100644 --- a/src/services/virtualStudies.js +++ b/src/services/virtualStudies.js @@ -2,6 +2,7 @@ import urlJoin from 'url-join'; import gql from 'graphql-tag'; import { print } from 'graphql/language/printer'; import { personaApiRoot, shortUrlApi } from 'common/injectGlobals'; +import { trackUserInteraction, TRACKING_EVENTS } from 'services/analyticsTracking'; export const getSavedVirtualStudyNames = async api => api({ @@ -37,6 +38,7 @@ export const createNewVirtualStudy = async ({ }, } = await getSavedVirtualStudyNames(api); const { egoId } = loggedInUser; + const newVirtualStudy = await api({ url: urlJoin(shortUrlApi, 'shorten'), body: JSON.stringify({ @@ -81,6 +83,11 @@ export const createNewVirtualStudy = async ({ `), }, }); + trackUserInteraction({ + category: TRACKING_EVENTS.categories.virtualStudies, + action: TRACKING_EVENTS.actions.save, + label: JSON.stringify(newVirtualStudy) + }); return newVirtualStudy; }; @@ -95,7 +102,7 @@ export const getVirtualStudy = api => async id => { export const updateVirtualStudy = async ({ id, sqonsState, api, name, description }) => { const { sqons, activeIndex } = sqonsState; const existingVirtualStudy = await getVirtualStudy(api)(id); - return await api({ + const updatedStudy = await api({ method: 'PUT', url: urlJoin(shortUrlApi, id), body: JSON.stringify({ @@ -108,4 +115,59 @@ export const updateVirtualStudy = async ({ id, sqonsState, api, name, descriptio }, }), }); + trackUserInteraction({ + category: TRACKING_EVENTS.categories.virtualStudies, + action: TRACKING_EVENTS.actions.edit, + label: JSON.stringify(updatedStudy) + }); + + return updatedStudy; +}; + +export const deleteVirtualStudy = async ({ loggedInUser, api, name }) => { + if (!name.length) { + throw new Error('Study must have name'); + } + const { egoId } = loggedInUser; + const personaData = await getSavedVirtualStudyNames(api); + await api({ + url: urlJoin(shortUrlApi, name), + method: 'DELETE', + body: JSON.stringify({ + userid: egoId, + }), + }); + const newVirtualStudies = personaData.data.self.virtualStudies.filter(function(obj) { + return obj.id !== name; + }); + return await api({ + url: urlJoin(personaApiRoot, 'graphql', 'PERSONA_UPDATE_VIRTUAL_STUDIES'), + body: { + variables: { + egoId, + virtualStudies: newVirtualStudies, + personaRecordId: loggedInUser._id, + }, + query: print(gql` + mutation( + $virtualStudies: [UserModelUserModelVirtualStudiesInput] + $egoId: String + $personaRecordId: MongoID! + ) { + userUpdate( + record: { egoId: $egoId, virtualStudies: $virtualStudies, _id: $personaRecordId } + ) { + record { + firstName + email + virtualStudies { + name + id + } + } + } + } + `), + }, + }); }; diff --git a/src/stateProviders/provideLoggedInUser.js b/src/stateProviders/provideLoggedInUser.js index 72cc337ea..dc20d6afe 100644 --- a/src/stateProviders/provideLoggedInUser.js +++ b/src/stateProviders/provideLoggedInUser.js @@ -7,10 +7,7 @@ import { updateProfile, getAllFieldNamesPromise } from 'services/profiles'; import { SERVICES, EGO_JWT_KEY } from 'common/constants'; import { handleJWT, validateJWT } from 'components/Login'; import { setCookie, removeCookie } from 'services/cookie'; -import { - addStateInfo as addUsersnapInfo, - addLoggedInUser as setUsersnapUser, -} from 'services/usersnap'; + import { TRACKING_EVENTS, trackUserSession, @@ -95,8 +92,6 @@ export default provideState({ label: user.roles[0], }); } - addUsersnapInfo({ percentageFilled }); - setUsersnapUser(user); trackUserSession({ ...user, egoGroups }); return { ...state, @@ -129,7 +124,7 @@ export default provideState({ removeCookie(EGO_JWT_KEY, token); addHeaders({ authorization: '' }); } - addUsersnapInfo({ loggedInUserToken_exist: !!token }); + return { ...state, loggedInUserToken: token, loginProvider: provider }; }, setIntegrationToken: (effects, service, token) => state => { diff --git a/src/stateProviders/provideModalState.js b/src/stateProviders/provideModalState.js index 1722dfc92..176732928 100644 --- a/src/stateProviders/provideModalState.js +++ b/src/stateProviders/provideModalState.js @@ -1,6 +1,5 @@ import { provideState } from 'freactal'; -import { addStateInfo as addUsersnapInfo } from 'services/usersnap'; import { trackUserInteraction, TRACKING_EVENTS } from 'services/analyticsTracking'; import history from 'services/history'; @@ -27,7 +26,6 @@ export default provideState({ action: TRACKING_EVENTS.actions.open, label: title, }); - addUsersnapInfo({ modalState }); return { ...state, modalState }; }, unsetModal: effects => state => { @@ -40,7 +38,6 @@ export default provideState({ action: TRACKING_EVENTS.actions.close, label: state.modalState.title, }); - addUsersnapInfo({ modalState: initialState }); return { ...state, modalState: initialState }; }, }, diff --git a/src/stateProviders/provideToast.js b/src/stateProviders/provideToast.js index a2ff543c3..35b5ae0f8 100644 --- a/src/stateProviders/provideToast.js +++ b/src/stateProviders/provideToast.js @@ -1,7 +1,5 @@ import { provideState } from 'freactal'; -import { addStateInfo as addUsersnapInfo } from 'services/usersnap'; - export default provideState({ initialState: props => ({ toast: { action: null, id: null, component: null, closed: false }, @@ -9,12 +7,10 @@ export default provideState({ effects: { setToast: (effects, { action, id, component }) => state => { const toast = { action, id, component, closed: false }; - addUsersnapInfo({ toast }); return { ...state, toast }; }, closeToast: effects => state => { const toast = { ...state.toast, closed: true }; - addUsersnapInfo({ toast }); return { ...state, toast }; }, }, diff --git a/src/uikit/DataTable/ControlledDataTable.js b/src/uikit/DataTable/ControlledDataTable.js index fbed7641e..63e3b7bb3 100644 --- a/src/uikit/DataTable/ControlledDataTable.js +++ b/src/uikit/DataTable/ControlledDataTable.js @@ -49,6 +49,17 @@ class ControlledDataTable extends Component { PaginationComponent={CustomPagination} className={`${className} ${striped ? '-striped' : ''}`} minRows={1} // hide empty rows + getTrProps={(state, rowInfo) => { + if (rowInfo && rowInfo.row) { + return { + style: { + background: rowInfo.row.selected ? '#edf9fe' : '', + }, + }; + } else { + return {}; + } + }} /> ); diff --git a/src/uikit/DataTable/Table/StyleWrapper.js b/src/uikit/DataTable/Table/StyleWrapper.js index 0b33e39b2..bb8a2c84c 100644 --- a/src/uikit/DataTable/Table/StyleWrapper.js +++ b/src/uikit/DataTable/Table/StyleWrapper.js @@ -195,7 +195,7 @@ export default styled('div')` -webkit-box-flex: 1; -ms-flex: 1 0 0px; flex: 1 0 0; - white-space: nowrap; + white-space: normal; text-overflow: ellipsis; padding: 7px 5px; overflow: hidden; @@ -355,6 +355,11 @@ export default styled('div')` text-align: left; } + .ReactTable .rt-td div { + font-family: ${({ theme }) => theme.fonts.details}; + } + + , .ReactTable .rt-tbody .rt-td { font-family: ${({ theme }) => theme.fonts.details}; color: ${({ theme }) => theme.greyScale1}; diff --git a/src/uikit/Dropdown/index.js b/src/uikit/Dropdown/index.js index dcc30c5b6..7bca1ee28 100644 --- a/src/uikit/Dropdown/index.js +++ b/src/uikit/Dropdown/index.js @@ -97,20 +97,17 @@ export const withDropdownState = compose( ); export const withDropdownMultiPane = compose( - withDropdownState, - compose( - withState('showExpanded', 'setExpanded', false), - withState('activeIndex', 'setActiveIndex', null), - withHandlers({ - toggleExpanded: ({ showExpanded, setExpanded }) => e => { - setExpanded(!showExpanded); - }, - toggleExpandedDropdown: ({ showExpanded, setExpanded, toggleDropdown }) => e => { - setExpanded(!showExpanded); - toggleDropdown(); - }, - }), - ), + withState('showExpanded', 'setExpanded', false), + withState('activeIndex', 'setActiveIndex', null), + withHandlers({ + toggleExpanded: ({ showExpanded, setExpanded }) => e => { + setExpanded(!showExpanded); + }, + toggleExpandedDropdown: ({ showExpanded, setExpanded, toggleDropdown }) => e => { + setExpanded(!showExpanded); + toggleDropdown(); + }, + }), ); export default Dropdown;